made fire damage (from fragfire gun) slightly stronger
[k8zan.git] / decorate / Weapons / FragfireGun.txt
blob20563a18e09adb7a1f1862a58e658e77c84225ac
1 ////////////////////////////////////////////////////////////////////////////////
2 // empty casing
3 Actor Zan_FragfireGunCasingSpawn {
4   Speed 20
5   +ClientSideOnly
6   +DontSplash
7   +DropOff
8   +Missile
9   +NoBlockmap
10   +NoClip
11   +NoExtremeDeath
12   +NoGravity
13   +NoTeleport
14   +NoTrigger
15   +ThruActors
16   +ThruGhost
17   +k8ServerSideOnly
18   +k8AllowSimpleTick
19   States {
20   Spawn:
21     TNT1 A 0
22     TNT1 A 1 A_CustomMissile("Zan_FragfireGunEmptyShell", -5, 0, random(-80, -100), CMF_AIMDIRECTION, random(45, 80))
23     Stop
24   }
28 Actor Zan_FragfireGunEmptyShell : Zan_CasingBase {
29   BounceFactor 0.3
30   Height 2
31   Mass 4
32   Radius 2
33   Scale 0.15
34   Speed 8
35   BounceSound "Ammo/ShellBounce"
37   States {
38     Spawn:
39       TNT1 A 0
40       ZFGX ABCDEFGHABCDEFGHABCDEFGHABCDEFGH 3
41         {
42           A_JumpIf(waterlevel > 1, "Splash");
43           if (!A_k8JumpIfOnFloorSky("Disappear")) {
44             A_k8JumpIfOnLiquidFloor("Death");
45           }
46         }
47       Stop
49     Disappear:
50       TNT1 A 0
51       Stop
53     Death:
54       TNT1 A 0
55         {
56           A_ChangeFlag("DoomBounce", false);
57           A_ChangeFlag("NoInteraction", true);
58         }
59       TNT1 A 0 A_Jump(256, "Rest1", "Rest2")
60       Goto Rest1
62     RestMain:
63       "####" "#" 60
64       "####" "#" 0
65         {
66           if (!A_k8JumpIfOnFloorSky("Disappear")) {
67             A_k8JumpIfOnLiquidFloor("Stopping");
68           }
69           A_SetPitch(0);
70         }
71       //"####" "#" 0 A_SetTics(GetCVar("ZanExOpt_EmptyCasingTime")*35*60+10)
72       // become non-scripted instead
73       "####" "#" -1 A_BecomeK8VavoomInternalNoTickGrav(GetCVar("ZanExOpt_EmptyCasingTime")*60+frandom(1, 4), frandom(64, 90)/35.0/10.0)
74     FadeOut:
75       "####" "#" random(10, 15) A_FadeOut(0.01)
76       Loop
78     Rest1:
79       ZFGX C 1
80       Goto RestMain
81     Rest2:
82       ZFGX G 1
83       Goto RestMain
85     Splash:
86       TNT1 A 0
87       TNT1 A 0 A_SpawnItem("Zan_UnderwaterFragfireGunEmptyShell")
88       Stop
90     Stopping:
91       "####" "#" 15
92         {
93           A_ChangeFlag("NoInteraction", true);
94           A_ChangeVelocity(0, 0, -14, CVF_REPLACE);
95         }
96       Stop
97   }
101 Actor Zan_UnderwaterFragfireGunEmptyShell : Zan_FragfireGunEmptyShell {
102   +k8AllowSimpleTick
103   Speed 0
104   Mass 1
105   -DoomBounce
106   SeeSound "none"
107   States {
108     Spawn:
109       TNT1 A 0
110       TNT1 A 0 ThrustThingZ(0, 7, 1, 0)
111       ZFGX ABCD 3
112       TNT1 A 0 ThrustThingZ(0, 7, 1, 0)
113       ZFGX EFGH 3
114       TNT1 A 0 ThrustThingZ(0, 7, 1, 0)
115       ZFGX ABCD 3
116       TNT1 A 0 ThrustThingZ(0, 7, 1, 0)
117       ZFGX EFGH 3
118       TNT1 A 0 A_SpawnItem("UnderwaterBubble")
119       //Loop
120       Stop
121   }
125 ////////////////////////////////////////////////////////////////////////////////
126 ACTOR FragfireCan : Ammo {
127   Radius 14
128   Height 14
129   Scale 0.60
130   Inventory.Amount 80
131   Inventory.MaxAmount 240
132   Ammo.BackpackAmount 160
133   Ammo.BackpackMaxAmount 400
134   Inventory.Icon "AFRAA0"
135   Inventory.PickupMessage "Picked up a Fragfire Can."
136   Inventory.PickupSound "Ammo/FragfireCanPick"
140 ACTOR FragfireCanBox : FragfireCan replaces ShellBox {
141   Inventory.Amount 80
142   Inventory.PickupMessage "Picked up a Fragfire Can."
143   Inventory.PickupSound "Ammo/FragfireCanPick"
145   States {
146   Spawn:
147     AFRA A -1
148     Stop
149   }
153 Actor FragfireCanHalf : FragfireCan replaces Shell {
154   Inventory.Amount 40
155   Inventory.PickupMessage "Picked up a half full Fragfire Can."
157   States {
158   Spawn:
159     AFRA D -1
160     Stop
161   }
165 ACTOR FragfireCanDropped {
166   Radius 1
167   Height 1
168   Scale 0.60
169   Gravity 0.85
170   +MOVEWITHSECTOR
171   +MISSILE
172   +NOBLOCKMAP
173   +BOUNCEONFLOORS
174   +BOUNCEONWALLS
175   +BOUNCEONCEILINGS
176   +ALLOWBOUNCEONACTORS
177   +BOUNCEONACTORS
178   +FORCEXYBILLBOARD
179   +NoTeleport
180   +k8AllowSimpleTick
181   BounceType Doom
182   BounceFactor 0.7
183   BounceCount 3
184   BounceSound "Ammo/FragfireCanBounce"
186   States {
187   Spawn:
188     AFRA B 16
189     AFRA C 1000
190     Stop
192   Death:
193     AFRA C -1
194     Stop
195   }
199 ACTOR FragfireGunLoaded : Ammo {
200   Inventory.Amount 0
201   Inventory.MaxAmount 80
202   Ammo.BackpackAmount 0
203   Ammo.BackpackMaxAmount 80
204   +INVENTORY.IGNORESKILL
208 ACTOR FragfireGun : Weapon replaces Shotgun {
209   Xscale 0.45
210   Yscale 0.40
211   Radius 25
212   Height 18
213   +INVENTORY.UNDROPPABLE
214   +WEAPON.NOALERT
215   //+WEAPON.NO_AUTO_SWITCH
216   +WEAPON.AMMO_OPTIONAL
217   //+WEAPON.ALT_USES_BOTH
218   Inventory.PickupMessage "Got a Fragfire Gun."
219   Inventory.PickupSound "Ammo/FragfireGunPick"
220   //Inventory.Icon "WFRAA0"
221   Tag "Fragfire Gun"
222   Weapon.SelectionOrder 1
223   //Weapon.MinSelectionAmmo1 0
224   //Weapon.MinSelectionAmmo2 1
225   Weapon.AmmoType1 "FragfireGunLoaded"
226   Weapon.AmmoGive1 0
227   Weapon.AmmoUse1 1
228   Weapon.AmmoType2 "FragfireCan"
229   Weapon.AmmoGive2 40
230   Weapon.AmmoUse2 0
231   Weapon.SlotNumber 3
232   +Weapon.k8AllowPickupState  // so 'PickupWeapon:' magic would work
234   var int user_lowPauseCount;
236   States {
237   Spawn:
238     WFRA B -1
239     Stop
241   PickupWeapon:
242     // always has some loaded ammo on first pickup
243     TNT1 A 0 A_GiveInventory("FragfireGunLoaded", random(1, 6)*10)
244     Stop
246   Select:
247     stateinclude "QuickKick/QuickKickOnSelectDeselect.txt"
248     TNT1 A 0
249       {
250         A_GiveInventory("HoldingFragfireGun", 1);
251         if (GetCVarB('k8ZanMod_CustomCrosshairs')) A_SetCrosshair(4);
252       }
253     TNT1 A 0 A_Raise(666)
254     Goto Ready
256   Deselect:
257     stateinclude "QuickKick/QuickKickOnSelectDeselect.txt"
258     WFRR A 1 Offset(-15, 40)
259     WFRR A 1 Offset(-30, 50)
260     WFRR A 1 Offset(-50, 65)
261     WFRR A 1 Offset(-70, 80)
262     Goto DeselectLoop
264   DeselectLoop:
265     TNT1 A 0 A_TakeInventory("HoldingFragfireGun", 1)
266     TNT1 A 1 A_Lower(666)  // was zero duration
267     Loop
269   Ready:
270     TNT1 A 8
271     TNT1 A 0 A_PlaySound("Ammo/FragfireGunPick", CHAN_WEAPON, 0.6)
272     WFRR A 1 Offset(-70, 80)
273     WFRR A 1 Offset(-50, 65)
274     WFRR A 1 Offset(-30, 50)
275     WFRR A 1 Offset(-15, 40)
276     TNT1 A 0 A_TakeInventory("QuickKickDisabled")
277     Goto ReadyIdle
279   ReadyIdle:
280     TNT1 A 0
281       {
282         // low ammo sound
283         if (CountInv("FragfireGunLoaded") <= 3*8) {
284           user_lowPauseCount -= 1;
285           if (user_lowPauseCount < 1) {
286             if (user_lowPauseCount > -666 && GetCVarB("k8ZanMod_WarnLowAmmo") && GetCVarB("k8ZanMod_WarnLowAmmoFragGun")) {
287               A_PlaySound("weapons/zanweapon/lowammo", CHAN_VOICE, 1.0);
288             }
289             local ammoCount = CountInv("FragfireGunLoaded");
290                  if (ammoCount > 2*8) user_lowPauseCount = 40/8;
291             else if (ammoCount > 1*8) user_lowPauseCount = 30/8;
292             else if (ammoCount > 0*8) user_lowPauseCount = 20/8;
293             else user_lowPauseCount = 10; // one frame
294           }
295         }
296       }
297     TNT1 A 0 Offset(-15, 40) A_JumpIfNotInventory("FragfireGunLoaded", "ReadyEmptyGun")
298     WFRR AA 4 A_WeaponReady(WRF_ALLOWRELOAD)
299     Loop
301   ReadyEmptyGun:
302     WFRR B 1 Offset(-15, 40) A_WeaponReady(WRF_ALLOWRELOAD)
303     //Loop
304     Goto ReadyIdle  // for sound
306   Fire:
307     TNT1 A 0 A_JumpIfNoAmmo("Reload")
308     TNT1 A 0 A_JumpIf(waterlevel==3, "UnderwaterDryFire")
309     SPGH A 0
310       {
311         user_lowPauseCount = -666;
312         A_GunFlash("Flash");
313         A_PlaySound("Weapons/FragfireGunFire", CHAN_WEAPON);
314         A_SetPitch(-1.0+pitch);
315         A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(-1, 3));
316         //if (IsActorClassExists("Zan_FragfireGunCasingSpawn"))
317         if (GetCVarB('k8ZanMod_FragCasing'))
318         {
319           A_FireCustomMissileEx("Zan_FragfireGunCasingSpawn", 5, false, 4+randompick(0, 1, 2, 3), -6, -6, FPF_NOAUTOAIM);
320         }
321       }
322     TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
323     TNT1 A 0
324       {
325         A_SetPitch(-1.0+pitch);
326         A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(0, 4));
327         //if (IsActorClassExists("Zan_FragfireGunCasingSpawn"))
328         if (GetCVarB('k8ZanMod_FragCasing'))
329         {
330           A_FireCustomMissileEx("Zan_FragfireGunCasingSpawn", 5, false, 4+randompick(0, 1, 2, 3), -6, -6, FPF_NOAUTOAIM);
331         }
332       }
333     TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
334     TNT1 A 0
335       {
336         A_SetPitch(-1.0+pitch);
337         A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(1, 5));
338         //if (IsActorClassExists("Zan_FragfireGunCasingSpawn"))
339         if (GetCVarB('k8ZanMod_FragCasing'))
340         {
341           A_FireCustomMissileEx("Zan_FragfireGunCasingSpawn", 5, false, 4+randompick(0, 1, 2, 3), -6, -6, FPF_NOAUTOAIM);
342         }
343       }
344     TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
345     TNT1 A 0
346       {
347         A_SetPitch(-1.0+pitch);
348         A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(2, 6));
349         //if (IsActorClassExists("Zan_FragfireGunCasingSpawn"))
350         if (GetCVarB('k8ZanMod_FragCasing'))
351         {
352           A_FireCustomMissileEx("Zan_FragfireGunCasingSpawn", 5, false, 4+randompick(0, 1, 2, 3), -6, -6, FPF_NOAUTOAIM);
353         }
354       }
355     TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
356     TNT1 A 0
357       {
358         A_SetPitch(-1.0+pitch);
359         A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(3, 7));
360         //if (IsActorClassExists("Zan_FragfireGunCasingSpawn"))
361         if (GetCVarB('k8ZanMod_FragCasing'))
362         {
363           A_FireCustomMissileEx("Zan_FragfireGunCasingSpawn", 5, false, 4+randompick(0, 1, 2, 3), -6, -6, FPF_NOAUTOAIM);
364         }
365       }
366     TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
367     TNT1 A 0
368       {
369         A_SetPitch(-1.0+pitch);
370         A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(4, 8));
371         //if (IsActorClassExists("Zan_FragfireGunCasingSpawn"))
372         if (GetCVarB('k8ZanMod_FragCasing'))
373         {
374           A_FireCustomMissileEx("Zan_FragfireGunCasingSpawn", 5, false, 4+randompick(0, 1, 2, 3), -6, -6, FPF_NOAUTOAIM);
375         }
376       }
377     TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
378     TNT1 A 0
379       {
380         A_SetPitch(-1.0+pitch);
381         A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(5, 9));
382         //if (IsActorClassExists("Zan_FragfireGunCasingSpawn"))
383         if (GetCVarB('k8ZanMod_FragCasing'))
384         {
385           A_FireCustomMissileEx("Zan_FragfireGunCasingSpawn", 5, false, 4+randompick(0, 1, 2, 3), -6, -6, FPF_NOAUTOAIM);
386         }
387       }
388     TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
389     TNT1 A 0
390       {
391         A_SetPitch(-1.0+pitch);
392         A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(6, 10));
393         //if (IsActorClassExists("Zan_FragfireGunCasingSpawn"))
394         if (GetCVarB('k8ZanMod_FragCasing'))
395         {
396           A_FireCustomMissileEx("Zan_FragfireGunCasingSpawn", 5, false, 4+randompick(0, 1, 2, 3), -6, -6, FPF_NOAUTOAIM);
397         }
398       }
399     WFRR A 8 //Offset(0, 33)
400     WFRR A 2 A_SetPitch(1.50+pitch)
401     WFRF A 1 //A_PlaySound("Weapons/FragfireGunPump", CHAN_WEAPON)
402     WFRF A 1 A_SetPitch(1.50+pitch)
403     WFRF B 2 A_SetPitch(1.50+pitch)
404     WFRF C 2 A_SetPitch(1.50+pitch)
405     WFRF D 2 A_PlaySound("Weapons/FragfireGunPump", CHAN_WEAPON)
406     WFRF C 2 A_SetPitch(1.00+pitch)
407     WFRF B 2 A_SetPitch(1.00+pitch)
408     WFRF A 2 A_AlertMonsters
409     Goto ReadyIdle
411   OutofPellets:
412     WFRR B 1 A_SetPitch(1.00+pitch)
413     WFRR B 1 A_SetPitch(1.00+pitch)
414     WFRR B 1 A_SetPitch(1.00+pitch)
415     Goto ReadyIdle
417   AltFire:
418     //TNT1 A 0 A_JumpIfNoAmmo("Reload")
419     TNT1 A 0 A_JumpIfNotInventory("FragfireGunLoaded", "Reload")
420     TNT1 A 0 A_JumpIf(waterlevel==3, "UnderwaterDryFire")
421     TNT1 A 0
422       {
423         user_lowPauseCount = -666;
424         A_TakeInventory("FragfireGunLoaded", 1);
425         A_GunFlash("Flash");
426         A_SetPitch(-0.3+pitch);
427         A_FireCustomMissile("FlameShot", frandom(-3, 3), 0, 4, -3, FPF_NOAUTOAIM, frandom(-3, 3));
428         //if (IsActorClassExists("Zan_FragfireGunCasingSpawn"))
429         if (GetCVarB('k8ZanMod_FragCasing'))
430         {
431           A_FireCustomMissileEx("Zan_FragfireGunCasingSpawn", 5, false, 4+randompick(0, 1, 2, 3), -6, -6, FPF_NOAUTOAIM);
432         }
433       }
434     WFRR A 2 //Offset(0, 33)
435     TNT1 A 0
436       {
437         A_SetPitch(0.15+pitch);
438         A_AlertMonsters;
439       }
440     WFRR A 1 A_SetPitch(0.15+pitch)
441     TNT1 A 0 A_ReFire
442     Goto ReadyIdle
444   UnderwaterDryFire:
445     TNT1 A 0 A_PlaySound("Ammo/SpikeGunPick", CHAN_WEAPON, 0.4)
446     WFRR A 24
447     Goto ReadyIdle
449   DryFire:
450     TNT1 A 0 A_PlaySound("Ammo/SpikeGunPick", CHAN_WEAPON, 0.2)
451     WFRR B 16
452     Goto ReadyIdle
454   Flash:
455     WFRH B 1 A_Light2
456     WFRH A 1 A_Light2
457     WFRH B 1 A_Light1
458     TNT1 A 0 A_Light0
459     Goto LightDone
461   Reload:
462     WFRR A 0 A_JumpIfInventory("FragfireGunLoaded", 80, "ReloadFinish")
463     WFRR A 0 A_JumpIfInventory("FragfireCan", 1, "ReloadWork")
464     TNT1 A 0 A_JumpIfNoAmmo("DryFire")
465     //WFRR B 1 A_JumpIfNotInventory("FragfireCan", "ReadyIdle")
466     Goto ReadyIdle
468   ReloadWork:
469     WFRF B 2 A_PlaySound("Weapons/FragReloadA", CHAN_WEAPON);
470     WFRF C 2
471     WFRF D 2
472     WFRL A 3
473     WFRL B 3
474     WFRL C 3 A_SpawnItem("FragfireCanDropped", -1, 16, 0)
475     WFRL C 7
476     WFRL D 3 A_PlaySound("Weapons/FragReloadB", CHAN_WEAPON)
477     WFRL E 2
478     WFRL F 2
479     WFRL G 3
480     WFRF A 4
481     WFRF B 2 A_PlaySound("Weapons/FragfireGunPump", CHAN_WEAPON)
482     WFRF C 2
483     WFRF D 2
484     WFRF C 2
485     WFRF B 2
486     //Goto ReloadLoop
488   ReloadLoop:
489     TNT1 A 0
490       {
491         // if reload in not cheating, drop unused ammo
492         if (!GetCVar("k8ZanMod_CheatReload")) {
493           A_TakeInventory("FragfireGunLoaded", 666);
494         }
495         local clipCount = CountInv("FragfireCan");
496         local loadCount = 80-CountInv("FragfireGunLoaded");
497         if (loadCount > 0) {
498           if (loadCount > clipCount) loadCount = clipCount;
499           A_TakeInventory("FragfireCan", loadCount);
500           A_GiveInventory("FragfireGunLoaded", loadCount);
501         }
502         user_lowPauseCount = 0;
503       }
505   ReloadFinish:
506     TNT1 A 0
507     Goto ReadyIdle
509     stateinclude "QuickKick/QuickKickInclude.txt"
510   }
514 ACTOR FragShot : FastProjectile {
515   Scale 0.7
516   Radius 5
517   //Height 10
518   //k8: i set it to 8
519   Height 8
520   Speed 120
521   Projectile
522   ProjectileKickBack 280
523   Damage (12)
524   DamageType "FragfireGun"
525   +k8MissileHeadshots
526   +k8MissileHitscan  // block by "block hitscan" line flag, not by "block projectile" flag
527   +THRUGHOST
528   +NOBLOCKMAP
529   +BLOODSPLATTER
530   //+EXTREMEDEATH
531   DeathSound "Weapons/SpikeShotDeath"
532   //SeeSound "Weapons/FragfireGunFire"
533   Obituary "%o was turned into a charred pile of gore by %k's frag shot."
534   Decal "FragDecalHot"
536   States {
537   Spawn:
538     PFRA A 1 Bright A_SpawnItemEx("ProjectileFragShotTrail", Random(-24, -8), 0, 0, random(1, 4), 0, 0, 0, SXF_TRANSFERPITCH, 0)
539     Loop
541   Death:
542     TNT1 A 0 A_SpawnItemEx("SparkDie", 0, 0, 0, Random(-4, 4), Random(-4, 4), Random(-3, 5), 0, 0, 100)
543     TNT1 A 0 A_SpawnItemEx("SparkDie", 0, 0, 0, Random(-5, 5), Random(-5, 5), Random(-2, 6), 0, 0, 200)
544     Stop
545   }
549 ACTOR FlameShot /*: FastProjectile*/ {
550   Radius 12
551   Height 8
552   Speed 25
553   Mass 5
554   Scale 0.7
555   //Damage (1*random(2, 6))
556   Damage (1*random(12, 16))
557   DamageType "Fire"
558   Projectile
559   ProjectileKickBack 0
560   //+RIPPER
561   +DONTREFLECT
562   +DONTTHRUST
563   +NOEXTREMEDEATH
564   +RANDOMIZE
565   //+PAINLESS
566   -BLOODSPLATTER
567   +BLOODLESSIMPACT
568   +NOBLOOD
569   +BLOODLESSIMPACT
570   +DONTSPLASH
571   +NOBLOCKMAP
572   -ACTIVATEIMPACT
573   SeeSound "Weapons/FlameShot"
574   DeathSound "Weapons/FlameDeath"
575   Obituary "%o got roasted by %k."
576   Decal "BurnDecalHot"
578   States {
579   Spawn:
580     PFRA B 3 bright
581     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
582     PFRA C 3 bright
583     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
584     PFRA D 3 bright
585     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
586     PFRA E 3 bright
587     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
588     PFRA F 3 bright
589     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
590     PFRA G 3 bright
591     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
592     PFRA H 3 bright
593     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
594     PFRA I 2 bright
595     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
596     PFRA J 2 bright
597     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
598     PFRA K 2 bright
599     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
600     PFRA L 2 bright
601     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
602     PFRA M 2 bright
603     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
604     PFRA N 2 bright
605     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
606     PFRA O 2 bright
607     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
608     PFRA P 2 bright
609     TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
610     PFRA Q 2 bright
611     Stop
613   Death:
614     TNT1 A 0 A_SpawnItemEx("FireTinyDie1", 0, 0, 1, 0, 0, 0, 0, 0, 190)
615     TNT1 A 0 A_SpawnItemEx("FireTinyDie2", 0, 0, 1, 0, 0, 0, 0, 0, 180)
616     TNT1 A 0 A_SpawnItemEx("FireTinyDie3", 0, 0, 1, 0, 0, 0, 0, 0, 170)
617     TNT1 A 0 A_SpawnItemEx("SteamPuffMedium", 0, 0, -25)
618     TNT1 A 0 A_PlaySound("Weapons/FlameDeath", CHAN_WEAPON)
619     //PFRA M 2 bright A_Explode(random(8, 12), 160, 0, false, 80)
620     PFRA M 2 bright A_Explode(random(18, 22), 160, 0, false, 80)
621     PFRA NOPQ 2 bright
622     Stop
624   WaterDeath:
625     PFRA Q 2 bright A_PlaySound("Weapons/SteamHiss", CHAN_WEAPON)
626     TNT1 A 0 A_SpawnItemEx("SteamPuffSmall")
627     TNT1 A 0 A_SpawnItemEx("SteamPuffMedium")
628     //TNT1 A 0 A_PlaySound("Weapons/SteamHiss", CHAN_WEAPON)
629     Stop
630   }
634 ACTOR ProjectileFragShotTrail {
635   Radius 5
636   Height 5
637   Scale 0.1
638   +DONTSPLASH
639   +NOGRAVITY
640   +NoTeleport
641   +k8AllowSimpleTick
643   States {
644   Spawn:
645     TNT1 A 0 A_JumpIf(waterlevel>1, "WaterDeath")
646     PFRA B 3 bright
647     Stop
649   WaterDeath:
650     TNT1 A -1
651     Stop
652   }
657 actor (optional) ZanSSGReplacer : RandomSpawner replaces SuperShotgun {
658   DropItem "FragfireGun"
663 // heretic
664 Actor (optional) Zan_CrossbowFragfireCan : FragfireCanBox Replaces CrossbowAmmo {}
665 Actor (optional) Zan_CrossbowFragfireCanBox : FragfireCanBox Replaces CrossbowHefty {}
667 Actor (optional) Zan_CrossbowFragfireGun : FragfireGun Replaces Crossbow {}
668 Actor (optional) Zan_CrossbowPoweredFragfireGun : FragfireGun Replaces CrossbowPowered {}
671 // hexen
672 Actor (optional) Zan_Mana2FragfireCan : FragfireCanBox Replaces Mana2 {}
674 Actor (optional) Zan_TPH_AmmoShotgun : FragfireCanBox Replaces AmmoShotgun {}
675 //Actor (optional) Zan_TPH_TPHShotgun : FragfireGun Replaces TPHShotgun {} //SSG
676 Actor (optional) Zan_TPH_TPHRifle : FragfireGun Replaces TPHRifle {}