1 ACTOR FragfireCan : Ammo {
6 Inventory.MaxAmount 240
7 Ammo.BackpackAmount 160
8 Ammo.BackpackMaxAmount 400
9 Inventory.Icon "AFRAA0"
10 Inventory.PickupMessage "Picked up a Fragfire Can."
11 Inventory.PickupSound "Ammo/FragfireCanPick"
15 ACTOR FragfireCanBox : FragfireCan replaces ShellBox {
17 Inventory.PickupMessage "Picked up a Fragfire Can."
18 Inventory.PickupSound "Ammo/FragfireCanPick"
28 Actor FragfireCanHalf : FragfireCan replaces Shell {
30 Inventory.PickupMessage "Picked up a half full Fragfire Can."
40 ACTOR FragfireCanDropped {
58 BounceSound "Ammo/FragfireCanBounce"
73 ACTOR FragfireGunLoaded : Ammo {
75 Inventory.MaxAmount 80
77 Ammo.BackpackMaxAmount 80
78 +INVENTORY.IGNORESKILL
82 ACTOR FragfireGun : Weapon replaces Shotgun {
87 +INVENTORY.UNDROPPABLE
89 //+WEAPON.NO_AUTO_SWITCH
91 //+WEAPON.ALT_USES_BOTH
92 Inventory.PickupMessage "Got a Fragfire Gun."
93 Inventory.PickupSound "Ammo/FragfireGunPick"
94 //Inventory.Icon "WFRAA0"
96 Weapon.SelectionOrder 1
97 //Weapon.MinSelectionAmmo1 0
98 //Weapon.MinSelectionAmmo2 1
99 Weapon.AmmoType1 "FragfireGunLoaded"
102 Weapon.AmmoType2 "FragfireCan"
107 var int user_lowPauseCount;
115 // always has some loaded ammo on first pickup
116 TNT1 A 0 A_GiveInventory("FragfireGunLoaded", random(1, 6)*10)
120 stateinclude "QuickKick/QuickKickOnSelectDeselect.txt"
123 A_GiveInventory("HoldingFragfireGun", 1);
124 if (GetCVarB('k8ZanMod_CustomCrosshairs')) A_SetCrosshair(4);
126 TNT1 A 0 A_Raise(666)
130 stateinclude "QuickKick/QuickKickOnSelectDeselect.txt"
131 WFRR A 1 Offset(-15, 40)
132 WFRR A 1 Offset(-30, 50)
133 WFRR A 1 Offset(-50, 65)
134 WFRR A 1 Offset(-70, 80)
138 TNT1 A 0 A_TakeInventory("HoldingFragfireGun", 1)
139 TNT1 A 1 A_Lower(666) // was zero duration
144 TNT1 A 0 A_PlaySound("Ammo/FragfireGunPick", CHAN_WEAPON, 0.6)
145 WFRR A 1 Offset(-70, 80)
146 WFRR A 1 Offset(-50, 65)
147 WFRR A 1 Offset(-30, 50)
148 WFRR A 1 Offset(-15, 40)
149 TNT1 A 0 A_TakeInventory("QuickKickDisabled")
156 if (CountInv("FragfireGunLoaded") <= 3*8) {
157 user_lowPauseCount -= 1;
158 if (user_lowPauseCount < 1) {
159 if (user_lowPauseCount > -666 && GetCVarB("k8ZanMod_WarnLowAmmo")) {
160 A_PlaySound("weapons/zanweapon/lowammo", CHAN_VOICE, 1.0);
162 local ammoCount = CountInv("FragfireGunLoaded");
163 if (ammoCount > 2*8) user_lowPauseCount = 40/8;
164 else if (ammoCount > 1*8) user_lowPauseCount = 30/8;
165 else if (ammoCount > 0*8) user_lowPauseCount = 20/8;
166 else user_lowPauseCount = 10; // one frame
170 TNT1 A 0 Offset(-15, 40) A_JumpIf(CountInv("FragfireGunLoaded")==0, "ReadyEmptyGun")
171 WFRR AA 4 A_WeaponReady(WRF_ALLOWRELOAD)
175 WFRR B 1 Offset(-15, 40) A_WeaponReady(WRF_ALLOWRELOAD)
177 Goto ReadyIdle // for sound
180 TNT1 A 0 A_JumpIfNoAmmo("Reload")
181 TNT1 A 0 A_JumpIf(waterlevel==3, "UnderwaterDryFire")
184 user_lowPauseCount = -666;
186 A_PlaySound("Weapons/FragfireGunFire", CHAN_WEAPON);
187 A_SetPitch(-1.0+pitch);
188 A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(-1, 3));
190 TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
193 A_SetPitch(-1.0+pitch);
194 A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(0, 4));
196 TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
199 A_SetPitch(-1.0+pitch);
200 A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(1, 5));
202 TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
205 A_SetPitch(-1.0+pitch);
206 A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(2, 6));
208 TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
211 A_SetPitch(-1.0+pitch);
212 A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(3, 7));
214 TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
217 A_SetPitch(-1.0+pitch);
218 A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(4, 8));
220 TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
223 A_SetPitch(-1.0+pitch);
224 A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(5, 9));
226 TNT1 A 0 A_JumpIfNoAmmo("OutOfPellets")
229 A_SetPitch(-1.0+pitch);
230 A_FireProjectile("FragShot", frandom(-2.5, 2.5), 1, /*3*/0, 0, FPF_NOAUTOAIM, frandom(6, 10));
232 WFRR A 8 //Offset(0, 33)
233 WFRR A 2 A_SetPitch(1.50+pitch)
234 WFRF A 1 //A_PlaySound("Weapons/FragfireGunPump", CHAN_WEAPON)
235 WFRF A 1 A_SetPitch(1.50+pitch)
236 WFRF B 2 A_SetPitch(1.50+pitch)
237 WFRF C 2 A_SetPitch(1.50+pitch)
238 WFRF D 2 A_PlaySound("Weapons/FragfireGunPump", CHAN_WEAPON)
239 WFRF C 2 A_SetPitch(1.00+pitch)
240 WFRF B 2 A_SetPitch(1.00+pitch)
241 WFRF A 2 A_AlertMonsters
245 WFRR B 1 A_SetPitch(1.00+pitch)
246 WFRR B 1 A_SetPitch(1.00+pitch)
247 WFRR B 1 A_SetPitch(1.00+pitch)
251 //TNT1 A 0 A_JumpIfNoAmmo("Reload")
252 TNT1 A 0 A_JumpIf(CountInv("FragfireGunLoaded")==0, "Reload")
253 TNT1 A 0 A_JumpIf(waterlevel==3, "UnderwaterDryFire")
256 user_lowPauseCount = -666;
257 A_TakeInventory("FragfireGunLoaded", 1);
259 A_SetPitch(-0.3+pitch);
260 A_FireCustomMissile("FlameShot", frandom(-3, 3), 0, 4, -3, FPF_NOAUTOAIM, frandom(-3, 3));
262 WFRR A 2 //Offset(0, 33)
265 A_SetPitch(0.15+pitch);
268 WFRR A 1 A_SetPitch(0.15+pitch)
273 TNT1 A 0 A_PlaySound("Ammo/SpikeGunPick", CHAN_WEAPON, 0.4)
278 TNT1 A 0 A_PlaySound("Ammo/SpikeGunPick", CHAN_WEAPON, 0.2)
290 WFRR A 0 A_JumpIfInventory("FragfireGunLoaded", 80, "ReloadFinish")
291 WFRR A 0 A_JumpIfInventory("FragfireCan", 1, "ReloadWork")
292 TNT1 A 0 A_JumpIfNoAmmo("DryFire")
293 //WFRR B 1 A_JumpIf(CountInv("FragfireCan")==0, "ReadyIdle")
297 WFRF B 2 A_PlaySound("Weapons/FragReloadA", CHAN_WEAPON);
302 WFRL C 3 A_SpawnItem("FragfireCanDropped", -1, 16, 0)
304 WFRL D 3 A_PlaySound("Weapons/FragReloadB", CHAN_WEAPON)
309 WFRF B 2 A_PlaySound("Weapons/FragfireGunPump", CHAN_WEAPON)
319 // if reload in not cheating, drop unused ammo
320 if (!GetCVar("k8ZanMod_CheatReload")) {
321 A_TakeInventory("FragfireGunLoaded", 666);
323 local clipCount = CountInv("FragfireCan");
324 local loadCount = 80-CountInv("FragfireGunLoaded");
326 if (loadCount > clipCount) loadCount = clipCount;
327 A_TakeInventory("FragfireCan", loadCount);
328 A_GiveInventory("FragfireGunLoaded", loadCount);
330 user_lowPauseCount = 0;
337 stateinclude "QuickKick/QuickKickInclude.txt"
342 ACTOR FragShot : FastProjectile {
350 ProjectileKickBack 280
351 Damage(12*random(1, 1))
352 DamageType "FragfireGun"
354 +k8MissileHitscan // block by "block hitscan" line flag, not by "block projectile" flag
359 DeathSound "Weapons/SpikeShotDeath"
360 //SeeSound "Weapons/FragfireGunFire"
361 Obituary "%o was turned into a charred pile of gore by %k's frag shot."
366 PFRA A 1 Bright A_SpawnItemEx("ProjectileFragShotTrail", Random(-24, -8), 0, 0, random(1, 4), 0, 0, 0, SXF_TRANSFERPITCH, 0)
370 TNT1 A 0 A_SpawnItemEx("SparkDie", 0, 0, 0, Random(-4, 4), Random(-4, 4), Random(-3, 5), 0, 0, 100)
371 TNT1 A 0 A_SpawnItemEx("SparkDie", 0, 0, 0, Random(-5, 5), Random(-5, 5), Random(-2, 6), 0, 0, 200)
377 ACTOR FlameShot /*: FastProjectile*/ {
383 Damage (1*random(2, 6))
400 SeeSound "Weapons/FlameShot"
401 DeathSound "Weapons/FlameDeath"
402 Obituary "%o got roasted by %k."
408 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
410 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
412 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
414 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
416 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
418 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
420 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
422 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
424 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
426 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
428 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
430 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
432 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
434 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
436 TNT1 A 0 A_JumpIf(waterlevel>=1, "WaterDeath")
441 TNT1 A 0 A_SpawnItemEx("FireTinyDie1", 0, 0, 1, 0, 0, 0, 0, 0, 190)
442 TNT1 A 0 A_SpawnItemEx("FireTinyDie2", 0, 0, 1, 0, 0, 0, 0, 0, 180)
443 TNT1 A 0 A_SpawnItemEx("FireTinyDie3", 0, 0, 1, 0, 0, 0, 0, 0, 170)
444 TNT1 A 0 A_SpawnItemEx("SteamPuffMedium", 0, 0, -25)
445 TNT1 A 0 A_PlaySound("Weapons/FlameDeath", CHAN_WEAPON)
446 PFRA M 2 bright A_Explode(random(8, 12), 160, 0, false, 80)
451 PFRA Q 2 bright A_PlaySound("Weapons/SteamHiss", CHAN_WEAPON)
452 TNT1 A 0 A_SpawnItemEx("SteamPuffSmall")
453 TNT1 A 0 A_SpawnItemEx("SteamPuffMedium")
454 //TNT1 A 0 A_PlaySound("Weapons/SteamHiss", CHAN_WEAPON)
460 ACTOR ProjectileFragShotTrail {
471 TNT1 A 0 A_JumpIf(waterlevel>1, "WaterDeath")
483 actor (optional) ZanSSGReplacer : RandomSpawner replaces SuperShotgun {
484 DropItem "FragfireGun"
490 Actor (optional) Zan_CrossbowFragfireCan : FragfireCanBox Replaces CrossbowAmmo {}
491 Actor (optional) Zan_CrossbowFragfireCanBox : FragfireCanBox Replaces CrossbowHefty {}
493 Actor (optional) Zan_CrossbowFragfireGun : FragfireGun Replaces Crossbow {}
494 Actor (optional) Zan_CrossbowPoweredFragfireGun : FragfireGun Replaces CrossbowPowered {}
498 Actor (optional) Zan_Mana2FragfireCan : FragfireCanBox Replaces Mana2 {}
500 Actor (optional) Zan_TPH_AmmoShotgun : FragfireCanBox Replaces AmmoShotgun {}
501 //Actor (optional) Zan_TPH_TPHShotgun : FragfireGun Replaces TPHShotgun {} //SSG
502 Actor (optional) Zan_TPH_TPHRifle : FragfireGun Replaces TPHRifle {}