Infinite Ammo Powerup should work as expected now
[k8zan.git] / decorate / Weapons / Hellclaw.txt
blobc42bc6088336531cfd9af08ecb77799748adfca5
1 ACTOR IsDraining : Inventory {
2   Inventory.Amount 1
3   Inventory.MaxAmount 1
4   Inventory.InterHubAmount 0
6   States {
7   Spawn:
8     TNT1 A -1
9     Stop
10   }
15 ACTOR HellclawDrainKilled : Inventory {
16   Inventory.Amount 1
17   Inventory.MaxAmount 1
23 ACTOR BearzerkHellclaw {
24   Scale 0.35
26   States {
27   Spawn:
28     WHEL B -1
29     Stop
30   }
35 ACTOR HellEnergy : Ammo {
36   Inventory.Amount 30
37   Inventory.MaxAmount 150
38   Ammo.BackpackAmount 60
39   Ammo.BackpackMaxAmount 360
40   Inventory.Icon "WHELB0"
42   States {
43   Spawn:
44     TNT1 A 1
45     Stop
46   }
50 ACTOR Hellclaw : Weapon replaces SuperShotgun {
51   Scale 0.35
52   Radius 22
53   Height 15
54   +INVENTORY.UNDROPPABLE
55   +WEAPON.NOALERT
56   //+WEAPON.NO_AUTO_SWITCH
57   +WEAPON.AMMO_OPTIONAL
58   //+WEAPON.ALT_USES_BOTH
59   Inventory.PickupMessage "Got a Hellclaw."
60   Inventory.PickupSound "Weapons/HellclawPick"
61   Inventory.Icon "WHELA0"
62   Tag "Hellclaw"
63   Weapon.SelectionOrder 4
64   //Weapon.MinSelectionAmmo1 0
65   //Weapon.MinSelectionAmmo2 0
66   Weapon.AmmoType1 "HellEnergy"
67   Weapon.AmmoGive1 30
68   Weapon.AmmoUse1 1
69   Weapon.AmmoType2 "none"
70   Weapon.AmmoGive2 0
71   Weapon.AmmoUse2 0
72   Weapon.SlotNumber 1  // was 4
73   Weapon.SlotPriority 0.5
75   States {
76   Spawn:
77     WHEL B -1
78     Stop
80   Select:
81     stateinclude "QuickKick/QuickKickOnSelectDeselect.txt"
82     TNT1 A 0 A_GiveInventory("HoldingFists", 1)
83     TNT1 A 0 { if (GetCVarB('k8ZanMod_CustomCrosshairs')) A_SetCrosshair(13); }
84     TNT1 A 0 A_Raise(666)
85     Goto Ready
87   Deselect:
88     stateinclude "QuickKick/QuickKickOnSelectDeselect.txt"
89     TNT1 A 0 A_TakeInventory("IsDraining", 1)
90     WHER A 1 Offset(-15, 40)
91     WHER A 1 Offset(-30, 50)
92     WHER A 1 Offset(-50, 65)
93     WHER A 1 Offset(-70, 80)
94     Goto DeselectLoop
96   DeselectLoop:
97     TNT1 A 0 A_TakeInventory("HoldingFists", 1)
98     TNT1 A 1 A_Lower(666)
99     Loop
101   Ready:
102     TNT1 A 8
103     TNT1 A 0 A_PlaySound("Weapons/HellclawReady", CHAN_WEAPON)
104     WHER A 1 Offset(-70, 80)
105     WHER A 1 Offset(-50, 65)
106     WHER A 1 Offset(-30, 50)
107     WHER A 1 Offset(-15, 40)
108     TNT1 A 0 A_TakeInventory("QuickKickDisabled")
109     Goto ReadyIdle
111   ReadyIdle:
112     WHER AAAA 17 A_WeaponReady(WRF_ALLOWRELOAD)  // was one 70
113     WHER BCB 2 A_WeaponReady(WRF_NOFIRE)
114     WHER AA 17 A_WeaponReady(WRF_ALLOWRELOAD)
115     WHER B 4 A_WeaponReady(WRF_NOFIRE)
116     WHER AAAAAA 17 A_WeaponReady(WRF_ALLOWRELOAD)  // was one 105
117     WHER BCB 2 A_WeaponReady(WRF_NOFIRE)
118     WHER A 16 A_WeaponReady(WRF_ALLOWRELOAD)
119     WHER B 4 A_WeaponReady(WRF_NOFIRE)
120     Loop
122   Fire:
123     TNT1 A 0 A_JumpIfNoAmmo("Reload")
124     TNT1 A 0 A_JumpIfInventory("IsDraining", 1, "Reload")
125     SPGH A 0
126       {
127         A_PlaySound("Weapons/HellclawFire", CHAN_WEAPON);
128         A_SetPitch(-1.0+pitch);
129       }
130     WHEF A 2
131     WHEF B 2
132     TNT1 A 0
133       {
134         A_SetPitch(-0.15+pitch);
135         A_PlaySound("Weapons/HellclawFire", CHAN_WEAPON);
136       }
137     WHEF C 2
138     //k8: do not horizontally ofsset spike shots, i want them to go through the crosshair
139     WSPI A 0
140       {
141         A_FireProjectile("HellBall", frandom(-0.5, 0.5), 1, /*5*/random(-1, 1), 0, FPF_NOAUTOAIM, frandom(-0.5, 0.5));
142         A_GunFlash();
143         A_SetPitch(0.15+pitch);
144       }
145     WHEF D 2 A_AlertMonsters
146     TNT1 A 0 A_Refire("Firing")
147     TNT1 A 0 A_SetPitch(1.0+pitch)
148     WHEF CBA 3 A_WeaponReady
149     Goto ReadyIdle
151   Firing:
152     TNT1 A 0 A_JumpIfNoAmmo("Reload")
153     TNT1 A 0
154       {
155         A_SetPitch(-0.15+pitch);
156         A_PlaySound("Weapons/HellclawFire", CHAN_WEAPON);
157       }
158     WHEF C 2
159     //k8: do not horizontally ofsset spike shots, i want them to go through the crosshair
160     WSPI A 0
161       {
162         A_FireProjectile("HellBall", frandom(-1.1, 1.1), 1, /*5*/random(-1, 1), 0, FPF_NOAUTOAIM, frandom(-1.1, 1.1));
163         A_GunFlash();
164         A_SetPitch(0.15+pitch);
165       }
166     WHEF D 2 A_AlertMonsters
167     TNT1 A 0 A_Refire("Firing")
168     TNT1 A 0 A_SetPitch(1.0+pitch)
169     WHEF CBA 3 A_WeaponReady
170     Goto ReadyIdle
172   Altfire:
173     TNT1 A 0 A_JumpIfInventory("IsDraining", 1, "Reload")
174     TNT1 A 0 A_JumpIfInventoryLess("HellEnergy", 10, "Reload")
175     TNT1 A 0
176       {
177         //A_k8ConLog(va("PITCH: %s; crouch=%s", pitch, GetCrouchFactor()));
178         // if Zan is crouching, and looking down, just plant a mine
179         if (pitch >= 0 && pitch <= 90 && GetCrouchFactor() <= 0.5) {
180           A_Jump(256, "LayMine");
181         } else {
182           A_PlaySound("Weapons/HellclawAltFire", CHAN_WEAPON);
183           A_AlertMonsters(/*128*/random(120, 180));
184           A_SetPitch(0.6+pitch);
185         }
186       }
187     WHEF E 2
188     TNT1 A 0
189       {
190         A_SetPitch(0.6+pitch);
191         A_SetAngle(-1.0+angle);
192       }
193     WHEF F 2
194     TNT1 A 0 A_SetPitch(0.6+pitch)
195     WHEF G 2
196     TNT1 A 0
197       {
198         A_SetPitch(0.6+pitch);
199         A_SetAngle(-1.0+angle);
200       }
201     WHEF H 2
202     TNT1 A 0 A_SetPitch(0.6+pitch)
203     TNT1 A 6
204     WHEF I 2
205     TNT1 A 0
206       {
207         A_SetPitch(0.6+pitch);
208         A_SetAngle(-1.0+angle);
209       }
210     WHEF J 2
211     WHEF K 1
212     TNT1 A 0
213       {
214         A_SetPitch(-1.2+pitch);
215         A_SetAngle(1.0+angle);
216       }
217     WHEF L 1
218     TNT1 A 0
219       {
220         A_SetPitch(-1.2+pitch);
221         A_SetAngle(1.0+angle);
222         //k8: do not horizontally ofsset spike shots, i want them to go through the crosshair
223         A_FireProjectile("HellMine", 0, 1, /*5*/random(-1, 1), -5, FPF_NOAUTOAIM, -10);
224         if (!HasSpecialPowerup(PWRT_INFAMMO)) A_TakeInventory("HellEnergy", 10);
225     }
226     WHEF D 1
227     TNT1 A 0
228       {
229         A_SetPitch(-1.2+pitch);
230         A_SetAngle(1.0+angle);
231       }
232     WHEF C 1
233     WHEF B 1
234     WHER A 8 A_WeaponReady(WRF_NOSECONDARY)
235     Goto ReadyIdle
237   LayMine:
238     WHEF E 2
239     WHEF F 2
240     WHEF G 2
241     WHEF H 2
242     //TNT1 A 6
243     TNT1 A 0
244       {
245         //A_k8ConLog(va("PITCH: %s; ofs=%s", pitch, 20*cos(pitch)));
246         //A_k8ConLog(va("ANGLE: %s", angle));
247         //A_SpawnItemEx("HellMineArmed", 40*cos(pitch), 0, 0,  0, 0, 0,  0,  SXF_ORIGINATOR/*SXF_NOPOINTERS*/);
248         if (A_SpawnItemEx("HellMineLay", 0 /*-(4+2*cos(pitch))*/, 0, 0,  0, 0, 0,  0,  SXF_ORIGINATOR|SXF_TRANSFERPITCH/*SXF_NOPOINTERS*/)) {
249           if (!HasSpecialPowerup(PWRT_INFAMMO)) A_TakeInventory("HellEnergy", 10);
250         }
251       }
252     WHEF I 2
253     WHEF J 2
254     WHEF K 1
255     WHEF L 1
256     WHEF D 1
257     WHEF C 1
258     WHEF B 1
259     WHER A 8 A_WeaponReady(WRF_NOSECONDARY)
260     Goto ReadyIdle
262   Flash:
263     TNT1 A 1 A_Light2
264     TNT1 A 1 A_Light2
265     TNT1 A 1 A_Light1
266     TNT1 A 0 A_Light0
267     Goto LightDone
269   Reload:
270     TNT1 A 0
271       {
272         A_GiveInventory("IsDraining", 1);
273         A_PlaySound("Weapons/HellclawReload", CHAN_WEAPON);
274         A_SetPitch(-0.5+pitch);
275       }
276     WHEF N 4
277     TNT1 A 0
278       {
279         A_SetPitch(-0.5+pitch);
280         A_GunFlash();
281       }
282     WHEF O 3
283     TNT1 A 0
284       {
285         A_SetPitch(0.5+pitch);
286         A_AlertMonsters(/*640*/random(550, 650));
287         A_CustomPunch(Random(20, 30), 1, CPF_PULLIN|CPF_SETTRACER, "HellclawPuff", 80, berserkerMult:(IsPlayerRunning() ? 5 : 4));
288         if (IsMonster(AAPTR_TRACER) && GetHealth(AAPTR_TRACER) <= 0) {
289           //A_k8ConLog(va("%C: Clawed %C, Health=%s (%s); hgt=%s (%s)", GetSelf, GetTracer, GetHealth(AAPTR_TRACER), GetSpawnHealth(AAPTR_TRACER), GetHeight(AAPTR_TRACER), GetDefaultHeight(AAPTR_TRACER)));
290           //A_GiveInventory("HellclawDrainKilled", 1, AAPTR_TRACER);
291           A_SpawnItemEx("HellEnergyGiver", 0, 0, max(6, GetDefaultHeight(AAPTR_TRACER)-6), 0, 0, 0, 0, SXF_NOCHECKPOSITION);
292         }
293       }
294     WHEF P 4
295     TNT1 A 0 A_SetPitch(0.5+pitch)
296     WHEF O 3 A_WeaponReady(WRF_ALLOWRELOAD)
297     WHEF N 3 A_TakeInventory("IsDraining", 1)
298     WHEF M 3
299     Goto ReadyIdle
301     stateinclude "QuickKick/QuickKickInclude.txt"
302   }
306 ACTOR HellBall {
307   Scale 0.35
308   Radius 5
309   Height 8
310   Speed 47
311   Projectile
312   ProjectileKickBack 40
313   //Damage (3*8)
314   Damage (1*random(4*8, 5*8))
315   DamageType "Hellclaw"
316   +THRUGHOST
317   +NOBLOCKMAP
318   +BLOODSPLATTER
319   +THRUSPECIES
320   //+BRIGHT
321   +DONTREFLECT
322   DeathSound "Projectile/HellBallDeath"
323   Obituary "%o was torn apart by %k's hell ball."
324   Decal "HellBallDecal"
325   Species "ZanSpecie"
327   States {
328   Spawn:
329     PHEB ABCD 3 Bright
330     Loop
332   Death:
333     PHEB EFGH 3 Bright
334     Stop
335   }
339 ACTOR HellMine {
340   Radius 5
341   Height 5
342   Speed 35
343   Scale 0.35
344   Gravity 1.0
345   Damage (1*random(15, 20))
346   DamageType "PoxBlunt"
347   Projectile
348   ProjectileKickBack 120  // 150
349   -NOGRAVITY
350   +DONTREFLECT
351   +DONTTHRUST
352   +NOEXTREMEDEATH
353   +RANDOMIZE
354   -BLOODSPLATTER
355   +NOBLOCKMAP
356   +THRUSPECIES
357   +BOUNCEONFLOORS
358   +BOUNCEONWALLS
359   +BOUNCEONCEILINGS
360   +ALLOWBOUNCEONACTORS
361   +BOUNCEONACTORS
362   BounceType Hexen
363   BounceFactor 0.20
364   WallBounceFactor 0.20
365   BounceCount 3
366   BounceSound "HellMine/Bounce"
367   //SeeSound "Weapons/FlameShot"
368   DeathSound "HellMine/Arm"
369   Obituary "%o got smacked by %k."
370   Species "ZanSpecie"
372   States {
373   Spawn:
374     PHEM ABCD 4 Bright
375     TNT1 A 0 A_AlertMonsters(/*320*/random(300, 350))
376     Loop
378   Death:
379     TNT1 A 0
380       {
381         A_Scream();
382         A_AlertMonsters(/*320*/random(300, 350));
383         A_SpawnItemEx("HellMineArmed", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION, 0);
384       }
385     Stop
386   }
390 // ////////////////////////////////////////////////////////////////////////// //
391 // k8: no common class for Hell Mines to not invalidate the saves.
392 // k8: i hate it, but...
393 // the only difference is (was) that laying mine is thrusted in it's spawn state.
394 // also, layed mine will wait several seconds before exploding;
395 // this is to allow doors and such to open
397 // this mine was laid down
398 ACTOR HellMineLay {
399   //Monster
400   Radius 5
401   Height 15
402   Speed 0
403   FloatSpeed 0
404   Scale 0.35
405   Health 15
406   DamageFactor "Aggro", 0.0
407   DamageFactor "Drowning", 0.0
408   DamageFactor "Fire", 0.0
409   DamageFactor "Lava", 0.0
410   DamageFactor "Toxic", 0.0
411   DamageFactor "PoxToxic", 0.0
412   DamageFactor "ForcePull", 0.0
413   //RipLevelMin 1
414   //MeleeThreshold 128
415   //MeleeRange 112
416   MeleeRange 136
417   MinMissileChance 0
418   MeleeDamage 0
419   MaxStepHeight 4
420   FriendlyTargetChance 222  // almost never skips the target
421   // the AI code will take care of this
422   //FriendlySeeBlocks 1       // meele range will take care of this
423   //+NOGRAVITY
424   +DONTTHRUST
425   +MISSILEMORE
426   +MISSILEEVENMORE
427   +THRUGHOST
428   +LOOKALLAROUND
429   +FLOORCLIP
430   +SHOOTABLE
431   -SOLID
432   -COUNTKILL
433   +NOINFIGHTING
434   +NOTARGET
435   +NEVERTARGET
436   +ISMONSTER
437   +FRIENDLY
438   +NOBLOOD
439   DeathSound "HellMine/Burst"
440   Obituary "%o was torn apart by a Hell Mine."
442   States {
443   Spawn:
444     PHEM F 1 Bright
445     // wait a little (~4 seconds) before activating
446     PHEM F 120 Bright Light("ZanHellMineFlicker")
447       {
448         //A_k8ConLog(va("PITCH: %s; ofs=%s", pitch, 7*cos(pitch)));
449         ThrustThing(angle*256/360, 7*cos(pitch), 1, 0);
450         A_SetPitch(0);
451       }
452     Goto See
454   See:
455     TNT1 A 0 A_PlaySound("HellMine/Ping", CHAN_AUTO, 0.4, 0, 3)
456     PHEM FFFFFF 1 Bright Light("ZanHellMineFlicker") A_Chase
457     TNT1 A 0 A_ClearTarget
458     PHEM GGGGGGGGGG 1 Bright Light("ZanHellMineFlicker") A_Chase
459     TNT1 A 0 A_ClearTarget
460     PHEM GGGGGGGGGG 1 Bright Light("ZanHellMineFlicker") A_Chase
461     TNT1 A 0 A_ClearTarget
462     Loop
465   Melee:
466     // wait a little (1.4-1.8 seconds)
467     PHEM F random(49, 64) Bright Light("ZanHellMineFlicker")
468       /*
469       {
470         A_k8ConLog(va("AWAKEN: target is %C, dist is %s; waiting...", GetTarget, VecDistance3D(OriginVector, GetActorOrigin(GetTarget()))));
471       }
472       */
473     PHEM GGGGGGGGGG 1 Bright Light("ZanHellMineFlicker") A_Chase("MeleeAwoken", "", CHF_DONTIDLE|CHF_DONTMOVE|CHF_DONTTURN)
474     TNT1 A 0
475       {
476         //A_k8ConLog("deactivated...");
477         A_ClearTarget();
478       }
479     Goto See
481   MeleeAwoken:
482     PHEM F 1 Bright Light("ZanHellMineFlicker") A_Die
483     Goto See
486   Death:
487     TNT1 A 0
488       {
489         A_Scream();
490         A_AlertMonsters(1200);
491       }
492     PHEM E 1 Bright Light("ZanHellBallShot") A_ChangeVelocity(0, 0, 12, CVF_REPLACE)
493     TNT1 A 0 A_SpawnItemEx("DustPuffLarge", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION, 0)
494     PHEM E 12 Bright Light("ZanHellBallShot")
495     TNT1 A 0
496       {
497         //A_k8ConLog(va("target is %C, dist is %s", GetTarget, VecDistance3D(OriginVector, GetActorOrigin(GetTarget()))));
498         A_ChangeFlag("NOTONAUTOMAP", 1);
499         if (IsPlayer(AAPTR_TARGET)) {
500           A_Explode(150, 192, (GetCVarB('k8ZanMod_DamageSelfHellMine') ? XF_HURTSOURCE : 0), True, 160, 0, 0, " ", "Crushbow");
501           A_Explode(80, 192, (GetCVarB('k8ZanMod_DamageSelfHellMine') ? XF_HURTSOURCE : 0), True, 160, 0, 0, " ", "Hellclaw");
502         } else {
503           // here, `Target` is activator, and it's not a player
504           A_Explode(150, 192, XF_HURTSOURCE, True, 160, 0, 0, " ", "Crushbow");
505           A_Explode(80, 192, XF_HURTSOURCE, True, 160, 0, 0, " ", "Hellclaw");
506         }
507         A_JumpIf(WaterLevel>0, "WaterDeath");
508         A_SpawnItemEx("ExplosionLargeRed", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION, 0);
509         A_SpawnItemEx("HellclawBloodCloud", 0, 0, -15,  3,  3, random(-2, 2), 0, SXF_NOCHECKPOSITION, 0);
510         A_SpawnItemEx("HellclawBloodCloud", 0, 0, -15, -3, -3, random(-2, 2), 0, SXF_NOCHECKPOSITION, 0);
511         A_SpawnItemEx("HellclawBloodCloud", 0, 0, -15,  3, -3, random(-2, 2), 0, SXF_NOCHECKPOSITION, 0);
512         A_SpawnItemEx("HellclawBloodCloud", 0, 0, -15, -3,  3, random(-2, 2), 0, SXF_NOCHECKPOSITION, 0);
513       }
514     TNT1 A 30 A_Quake(3, 30, 0, 1200)
515     Stop
517   WaterDeath:
518     TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("UnderwaterBubble", 0, 0, 0, random(-5, 5), random(-5, 5), random(1, 4), 0, SXF_NOCHECKPOSITION, 0)
519     Stop
520   }
524 // this mine was thrown
525 ACTOR HellMineArmed {
526   //Monster
527   Radius 5
528   Height 15
529   Speed 0
530   FloatSpeed 0
531   Scale 0.35
532   Health 15
533   DamageFactor "Aggro", 0.0
534   DamageFactor "Drowning", 0.0
535   DamageFactor "Fire", 0.0
536   DamageFactor "Lava", 0.0
537   DamageFactor "Toxic", 0.0
538   DamageFactor "PoxToxic", 0.0
539   DamageFactor "ForcePull", 0.0
540   //RipLevelMin 1
541   //MeleeThreshold 128
542   //MeleeRange 112
543   MeleeRange 136
544   MinMissileChance 0
545   MeleeDamage 0
546   FriendlyTargetChance 222  // almost never skips the target
547   // the AI code will take care of this
548   //FriendlySeeBlocks 1       // meele range will take care of this
549   //+NOGRAVITY
550   +DONTTHRUST
551   +MISSILEMORE
552   +MISSILEEVENMORE
553   +THRUGHOST
554   +LOOKALLAROUND
555   +FLOORCLIP
556   +SHOOTABLE
557   -SOLID
558   -COUNTKILL
559   +NOINFIGHTING
560   +NOTARGET
561   +NEVERTARGET
562   +ISMONSTER
563   +FRIENDLY
564   +NOBLOOD
565   DeathSound "HellMine/Burst"
566   Obituary "%o was torn apart by a Hell Mine."
568   States {
569   Spawn:
570     PHEM F 1 Bright
571     Goto See
573   See:
574     TNT1 A 0 A_PlaySound("HellMine/Ping", CHAN_AUTO, 0.4, 0, 3)
575     PHEM FFFFFF 1 Bright Light("ZanHellMineFlicker") A_Chase
576     TNT1 A 0 A_ClearTarget
577     PHEM GGGGGGGGGG 1 Bright Light("ZanHellMineFlicker") A_Chase
578     TNT1 A 0 A_ClearTarget
579     PHEM GGGGGGGGGG 1 Bright Light("ZanHellMineFlicker") A_Chase
580     TNT1 A 0 A_ClearTarget
581     Loop
584   Melee:
585     // wait a little (0.2-0.5 seconds)
586     PHEM F random(7, 17) Bright Light("ZanHellMineFlicker")
587     PHEM GGGGGGGGGG 1 Bright Light("ZanHellMineFlicker") A_Chase("MeleeAwoken", "", CHF_DONTIDLE|CHF_DONTMOVE|CHF_DONTTURN)
588     TNT1 A 0 A_ClearTarget
589     Goto See
591   MeleeAwoken:
592     PHEM F 1 Bright Light("ZanHellMineFlicker") A_Die
593     Goto See
596   Death:
597     TNT1 A 0
598       {
599         //A_k8ConLog(va("target is %C, dist is %s", GetTarget, VecDistance3D(OriginVector, GetActorOrigin(GetTarget()))));
600         A_Scream();
601         A_AlertMonsters(1200);
602       }
603     PHEM E 1 Bright Light("ZanHellBallShot") A_ChangeVelocity(0, 0, 12, CVF_REPLACE)
604     TNT1 A 0 A_SpawnItemEx("DustPuffLarge", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION, 0)
605     PHEM E 12 Bright Light("ZanHellBallShot")
606     TNT1 A 0
607       {
608         A_ChangeFlag("NOTONAUTOMAP", 1);
609         if (IsPlayer(AAPTR_TARGET)) {
610           A_Explode(150, 192, (GetCVarB('k8ZanMod_DamageSelfHellMine') ? XF_HURTSOURCE : 0), True, 160, 0, 0, " ", "Crushbow");
611           A_Explode(80, 192, (GetCVarB('k8ZanMod_DamageSelfHellMine') ? XF_HURTSOURCE : 0), True, 160, 0, 0, " ", "Hellclaw");
612         } else {
613           // here, `Target` is activator, and it's not a player
614           A_Explode(150, 192, XF_HURTSOURCE, True, 160, 0, 0, " ", "Crushbow");
615           A_Explode(80, 192, XF_HURTSOURCE, True, 160, 0, 0, " ", "Hellclaw");
616         }
617         A_JumpIf(WaterLevel>0, "WaterDeath");
618         A_SpawnItemEx("ExplosionLargeRed", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION, 0);
619         A_SpawnItemEx("HellclawBloodCloud", 0, 0, -15,  3,  3, random(-2, 2), 0, SXF_NOCHECKPOSITION, 0);
620         A_SpawnItemEx("HellclawBloodCloud", 0, 0, -15, -3, -3, random(-2, 2), 0, SXF_NOCHECKPOSITION, 0);
621         A_SpawnItemEx("HellclawBloodCloud", 0, 0, -15,  3, -3, random(-2, 2), 0, SXF_NOCHECKPOSITION, 0);
622         A_SpawnItemEx("HellclawBloodCloud", 0, 0, -15, -3,  3, random(-2, 2), 0, SXF_NOCHECKPOSITION, 0);
623       }
624     TNT1 A 30 A_Quake(3, 30, 0, 1200)
625     Stop
627   WaterDeath:
628     TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("UnderwaterBubble", 0, 0, 0, random(-5, 5), random(-5, 5), random(1, 4), 0, SXF_NOCHECKPOSITION, 0)
629     Stop
630   }
634 ACTOR HellclawBloodCloud {
635   Radius 5
636   Height 5
637   //Gravity 0.05
638   +NOGRAVITY
639   +NOBLOCKMAP
640   +DONTSPLASH
641   +MISSILE
642   +NOBLOCKMAP
643   +FRIGHTENED
644   +NOTELEPORT
645   +FLOORCLIP
646   +NOTONAUTOMAP
648 States {
649   Spawn:
650     BCLO A 1 A_FadeOut(0.04, FTF_REMOVE)
651     TNT1 A 0 A_SetScale(scaleX+0.04, scaleY+0.04)
652     Loop
653   }
657 ACTOR HellclawPuff {
658   Scale 0.5
659   Damage 0
660   DamageType "HellclawDrain"
661   +NOGRAVITY
662   +THRUGHOST
663   +FORCEPAIN
664   +BRIGHT
665   +NOEXTREMEDEATH
666   +NoTeleport
667   +k8AllowSimpleTick
668   Species "ZanSpecie"
670   States {
671   Spawn:
672     PHED ABCD 3
673     Stop
674   }
678 ACTOR HellEnergyGiver {
679   Scale 0.35
680   Monster
681   Renderstyle "Translucent"
682   DamageFactor "Aggro", 0.0
683   Alpha 0.8
684   Health 9999
685   Radius 5
686   Height 5
687   Speed 10
688   FloatSpeed 10
689   MinMissileChance 0
690   MeleeRange 16
691   //Projectile
692   //ProjectileKickBack 0
693   FriendlyTargetChance 222  // almost never skips the target
694   Damage 0
695   +NOINFIGHTING
696   +NEVERTARGET
697   +NOTARGET
698   //+LOOKALLAROUND
699   +MISSILEMORE
700   +MISSILEEVENMORE
701   -ACTIVATEMCROSS
702   -CANUSEWALLS
703   -COUNTKILL
704   -SOLID
705   -SHOOTABLE
706   //+SEEKERMISSILE
707   +FLOAT
708   +NOGRAVITY
709   +THRUGHOST
710   +THRUACTORS
711   +NOBLOCKMAP
712   +NOBLOCKMONST
713   //-BLOODSPLATTER
714   //+BLOODLESSIMPACT
715   //+BRIGHT
716   +NOTIMEFREEZE
717   +NoTeleport
718   +k8AllowSimpleTick
719   DeathSound "Projectile/HellBallDeath"
720   //Species "ZanSpecie"
722   States {
723   Spawn:
724     PHEB AA 1
725     Goto SpawnLoop
727   SpawnLoop:
728     PHEB BBCCDDAA 1 A_LookEx(0, 0, 0, 0, 360)
729     Loop
731   See:
732     //TNT1 A 0 A_JumpIfInTargetInventory("HellclawDrainKilled", 1, "ClearTarget")
733     PHEB CCDDAABB 1 A_Chase
734     Loop
736   /*
737   ClearTarget:
738     //TNT1 A 0 A_k8ConLog(va("%C: HellGiver Ignored %C, Health=%s (%s)", GetSelf, GetTarget, GetHealth(AAPTR_TARGET), GetSpawnHealth(AAPTR_TARGET)))
739     TNT1 A 0 A_ClearTarget
740     Goto SpawnLoop
741   */
743   Melee:
744     //TNT1 A 0 A_k8ConLog(va("%C: Draining %C, Health=%s (%s); hgt=%s (%s)", GetSelf, GetTarget, GetHealth(AAPTR_TARGET), GetSpawnHealth(AAPTR_TARGET), GetHeight(AAPTR_TARGET), GetDefaultHeight(AAPTR_TARGET)))
745     TNT1 A 0 A_Scream
746     //TNT1 A 0 A_GiveInventory("HellEnergy", random(max(1, GetSpawnHealth(AAPTR_TRACER)/18), max(1, GetSpawnHealth(AAPTR_TRACER)/14+6)), AAPTR_TARGET)
747     TNT1 A 0
748       {
749         local int amnt = random(max(2, GetHealth(AAPTR_TARGET)/18), max(1, GetHealth(AAPTR_TARGET)/14+6));
750         // give some Hell Energy
751         A_RadiusGive("HellEnergy", 128.0, RGF_PLAYERS, amnt);
752         // damage target
753         A_DamageTarget(amnt, "HellclawDrain", DMSS_NOPROTECT, __default, src:AAPTR_NULL, inflict:AAPTR_NULL);
754         // heal players
755         A_RadiusGive("__rgf_heal__", 128.0, RGF_PLAYERS, amnt); // "__rgf_overheal__"?
756       }
757     PHEB EFGH 3
758     TNT1 A 0 A_Die
759     Stop
761   Death:
762     TNT1 A 0
763     Stop
764   }
768 // heretic
769 Actor (optional) Zan_GauntletsHellclaw : Hellclaw Replaces Gauntlets {}
770 Actor (optional) Zan_GauntletsPoweredHellclaw : Hellclaw Replaces GauntletsPowered {}
772 Actor (optional) Zan_TPH_TPHShotgun : Hellclaw Replaces TPHShotgun {} //SSG