Infinite Ammo Powerup should work as expected now
[k8zan.git] / decorate / Weapons / PotionLauncher_Acid.txt
blob1ad77633b4b5d28e652e5675e0a84a3485dfb022
1 ACTOR PotionBoxAcid : Ammo /*replaces CellPack*/ /*6005*/ {
2   Radius 25
3   Height 16
4   XScale 0.60
5   YScale 0.55
6   Inventory.Amount 8
7   Inventory.MaxAmount 48
8   Ammo.BackpackAmount 16
9   Ammo.BackpackMaxAmount 64
10   Inventory.Icon "APOXA0"
11   Inventory.PickupMessage "Picked up a Box of Acid Potions."
12   Inventory.PickupSound "Ammo/PotionBoxPick"
14   States {
15   Spawn:
16     APOX A -1
17     Stop
18   }
22 ACTOR PotionLauncherAcidLoaded : Ammo {
23   Inventory.Amount 0
24   Inventory.MaxAmount 8
25   Ammo.BackpackAmount 0
26   Ammo.BackpackMaxAmount 8
27   +INVENTORY.IGNORESKILL
31 ACTOR PotionLauncherAcid : Weapon /*6000*/ {
32   Xscale 0.50
33   Yscale 0.47
34   Radius 28
35   Height 18
36   +INVENTORY.UNDROPPABLE
37   +WEAPON.NOALERT
38   //+WEAPON.NO_AUTO_SWITCH
39   +WEAPON.AMMO_OPTIONAL
40   //+WEAPON.ALT_USES_BOTH
41   //Inventory.Icon "WPOXA0"
42   Inventory.PickupMessage "Got a Potion Launcher loaded with few Acid Potions."
43   Inventory.PickupSound "Weapons/PoxCycle"
44   Weapon.SelectionOrder 7
45   //Weapon.MinSelectionAmmo1 0
46   //Weapon.MinSelectionAmmo2 1
47   Weapon.AmmoType1 "PotionLauncherAcidLoaded"
48   Weapon.AmmoGive1 0
49   Weapon.AmmoUse1 1
50   Weapon.AmmoType2 "PotionBoxAcid"
51   Weapon.AmmoGive2 4
52   Weapon.AmmoUse2 0
53   Weapon.SlotNumber 6
54   Tag "Acid Poition Launcher"
55   +Weapon.k8AllowPickupState  // so 'PickupWeapon:' magic would work
57   States {
58   Spawn:
59     WPOX B -1
60     Stop
62   PickupWeapon:
63     // always has some loaded ammo on first pickup
64     TNT1 A 0 A_GiveInventory("PotionLauncherAcidLoaded", random(3, 6))
65     Stop
67   Select:
68     stateinclude "QuickKick/QuickKickOnSelectDeselect.txt"
69     TNT1 A 0 A_GiveInventory("HoldingPotionLauncher", 1)
70     TNT1 A 0 { if (GetCVarB('k8ZanMod_CustomCrosshairs')) A_SetCrosshair(6); }
71     TNT1 A 0 A_Raise(666)
72     Goto Ready
74   Deselect:
75     stateinclude "QuickKick/QuickKickOnSelectDeselect.txt"
76     WPOR A 1 Offset(-15, 40)
77     WPOR A 1 Offset(-30, 50)
78     WPOR A 1 Offset(-50, 65)
79     WPOR A 1 Offset(-70, 80)
80     Goto DeselectLoop
82   DeselectLoop:
83     TNT1 A 0 A_TakeInventory("HoldingPotionLauncher", 1)
84     TNT1 A 1 A_Lower(666)  // was zero duration
85     Loop
87   Ready:
88     TNT1 A 8
89     TNT1 A 0 A_PlaySound("Weapons/PoxCycle", CHAN_WEAPON, 0.6)
90     WPOR A 1 Offset(-70, 80)
91     WPOR A 1 Offset(-50, 65)
92     WPOR A 1 Offset(-30, 50)
93     WPOR A 1 Offset(-15, 40)
94     TNT1 A 0 A_TakeInventory("QuickKickDisabled")
95     Goto ReadyIdle
97   ReadyIdle:
98     //TNT1 A 0 A_JumpIfNotInventory("PotionLauncherAcidLoaded", "ReadyEmptyGun")
99     WPOR A 4 A_WeaponReady(WRF_ALLOWRELOAD)
100     WPOR AAAAA 4 A_WeaponReady(WRF_ALLOWRELOAD | WRF_NOFIRE)
101     Loop
103   Fire:
104     TNT1 A 0 A_JumpIfNoAmmo("Reload")
105     TNT1 A 0 A_JumpIf(waterlevel==3, "UnderwaterDryFire")
106     //k8: do not horizontally ofsset spike shots, i want them to go through the crosshair
107     WSPI A 0 A_FireProjectile("PotionAcid", 0, 1, /*4*/random(-2, 2), 0, FPF_NOAUTOAIM, 0)
108     TNT1 A 0 A_PlaySound("Weapons/PoxFire", CHAN_WEAPON)
109     TNT1 A 0 A_GunFlash
110     WPOR A 2 A_SetPitch(0.50+pitch)
111     WPOR A 1 A_SetPitch(-0.50+pitch)
112     WPOF A 2 A_SetPitch(0.50+pitch)
113     WPOF A 1 A_SetPitch(-0.50+pitch)
114     WPOF B 2 A_SetPitch(0.50+pitch)
115     WPOF B 1 A_SetPitch(-0.50+pitch)
116     WPOF C 3
117     TNT1 A 0 A_PlaySound("Weapons/PoxCycle", CHAN_WEAPON)
118     WPOF D 3
119     WPOR A 0 A_AlertMonsters
120     WPOR A 12 A_WeaponReady(WRF_NOFIRE | WRF_ALLOWRELOAD)
121     Goto ReadyIdle
123   AltFire:
124     TNT1 A 0 A_JumpIfNotInventory("PotionLauncherAcidLoaded", "Reload")
125     TNT1 A 0 A_JumpIf(waterlevel==3, "UnderwaterDryFire")
126     TNT1 A 0 { if (!HasSpecialPowerup(PWRT_INFAMMO)) A_TakeInventory("PotionLauncherAcidLoaded", 1); }
127     WSPI A 0 A_FireProjectile("PotionBounceAcid", 0, 1, /*4*/random(-2, 2), 0, FPF_NOAUTOAIM, 0)
128     TNT1 A 0 A_PlaySound("Weapons/PoxFire", CHAN_WEAPON)
129     TNT1 A 0 A_GunFlash
130     WPOR A 2 A_SetPitch(0.50+pitch)
131     WPOR A 1 A_SetPitch(-0.50+pitch)
132     WPOF A 2 A_SetPitch(0.50+pitch)
133     WPOF A 1 A_SetPitch(-0.50+pitch)
134     WPOF B 2 A_SetPitch(0.50+pitch)
135     WPOF B 1 A_SetPitch(-0.50+pitch)
136     WPOF C 3
137     TNT1 A 0 A_PlaySound("Weapons/PoxCycle", CHAN_WEAPON)
138     WPOF D 3
139     WPOR A 0 A_AlertMonsters
140     WPOR A 12 A_WeaponReady(WRF_NOFIRE | WRF_ALLOWRELOAD)
141     Goto ReadyIdle
143   Flash:
144     WPOH A 1 A_Light1
145     WPOH B 1 A_Light1
146     WPOH C 1 A_Light1
147     WPOH D 3 A_Light0
148     WPOH E 3 A_Light0
149     TNT1 A 0 A_Light0
150     Goto LightDone
152   DryFire:
153     WPOR A 16 A_PlaySound("Ammo/SpikeGunPick", CHAN_WEAPON, 0.2)
154     Goto ReadyIdle
156   UnderwaterDryFire:
157     TNT1 A 0 A_PlaySound("Ammo/SpikeGunPick", CHAN_WEAPON, 0.4)
158     WPOR A 24
159     Goto ReadyIdle
161   Reload:
162     WFRR A 0 A_JumpIfInventory("PotionLauncherAcidLoaded", 8, "ReadyIdle")
163     WFRR A 0 A_JumpIfInventory("PotionBoxAcid", 1, "ReloadWork")
164     WFRR A 0 A_JumpIfNoAmmo("Dryfire")
165     WPOR A 1 A_JumpIfNotInventory("PotionBoxAcid", "ReadyIdle")
166     Goto ReadyIdle
168   ReloadWork:
169     WPOL A 3 A_PlaySound("Weapons/PoxReloadA", CHAN_WEAPON)
170     WPOL B 3
171     WPOL C 3
172     WPOL D 3
173     WPOL E 2
174     Goto ReloadLoop
176   ReloadLoop:
177     TNT1 A 0 A_JumpIfNotInventory("PotionLauncherAcidLoaded", 2)
178     WPOL E 1 A_WeaponReady
179     TNT1 A 0 { if (!HasSpecialPowerup(PWRT_INFAMMO)) A_TakeInventory("PotionBoxAcid", 1); }
180     TNT1 A 0 A_GiveInventory("PotionLauncherAcidLoaded", 1)
181     WPOL E 3 A_PlaySound("Weapons/PoxReloadB", CHAN_WEAPON)
182     WPOL D 4 Offset(0, 40)
183     TNT1 A 0 A_JumpIfInventory("PotionLauncherAcidLoaded", 8, "ReloadFinish")
184     TNT1 A 0 A_JumpIfInventory("PotionBoxAcid", 1, "ReloadLoop")
185     Goto ReloadFinish
187   ReloadFinish:
188     WPOL D 3
189     WPOL C 3
190     WPOL B 3 A_PlaySound("Weapons/PoxReloadC", CHAN_WEAPON)
191     WPOL A 2
192     Goto ReadyIdle
194     stateinclude "QuickKick/QuickKickInclude.txt"
195   }
199 ACTOR PotionAcid {
200   Scale 0.7
201   Radius 5
202   Height 4
203   Mass 25
204   Speed 50
205   Gravity 0.6
206   Projectile
207   ProjectileKickBack 100
208   //Damage(1*random(50, 70))
209   //DamageType "PoxAcid"
210   +FOILINVUL
211   +DONTREFLECT
212   -NOGRAVITY
213   +THRUGHOST
214   +NOBLOCKMAP
215   //+NOEXTREMEDEATH
216   +NODAMAGETHRUST
217   SeeSound "Weapons/BoltSee"
218   DeathSound "Weapons/PotionDie"
219   Obituary "%o was dissolved by %k's Acid Potion."
220   Decal "AcidDecal"
222   States {
223   Spawn:
224     PPOT Y 1
225     TNT1 A 0 A_JumpIf(WaterLevel>0, "Death")
226     Loop
228   Death:
229     TNT1 A 0 A_Scream
230     TNT1 A 0 A_Explode(random(140, 170), 128, XF_EXPLICITDAMAGETYPE|(GetCVarB('k8ZanMod_DamageSelfPotion') ? XF_HURTSOURCE : 0), True, 32, 0, 0, "", "PoxAcid")
231     TNT1 A 0 A_SpawnItemEx("AcidSplash", 0, 0, 1, 0, 0, 3, 0, SXF_NOCHECKPOSITION, 0)
232     TNT1 AAAAAAA 0 A_SpawnItemEx("AcidSplashSmallA", random(-16, 16), random(-16, 16), random(0, 16), random(-5, 5), random(-5, 5), random(4, 8), 0, SXF_NOCHECKPOSITION, 0)
233     TNT1 AAAAAAA 0 A_SpawnItemEx("AcidSplashSmallB", random(-16, 16), random(-16, 16), random(0, 16), random(-5, 5), random(-5, 5), random(4, 8), 0, SXF_NOCHECKPOSITION, 0)
234     TNT1 AAAAAAA 0 A_SpawnItemEx("AcidSplashSmallC", random(-16, 16), random(-16, 16), random(0, 16), random(-5, 5), random(-5, 5), random(4, 8), 0, SXF_NOCHECKPOSITION, 0)
235     TNT1 A 0 A_SpawnItemEx("JunkTempShrapnelA", 0, 0, 0, random(-5, 5), random(-5, 5), random(0, 4), 0, SXF_NOCHECKPOSITION, 150)
236     TNT1 A 0 A_SpawnItemEx("JunkTempShrapnelB", 0, 0, 0, random(-5, 5), random(-5, 5), random(0, 4), 0, SXF_NOCHECKPOSITION, 0)
237     TNT1 A 0 A_SpawnItemEx("JunkTempGlassShardA", 0, 0, 0, random(0, 5), random(0, 5), random(0, 8), 0, SXF_NOCHECKPOSITION, 0)
238     TNT1 A 0 A_SpawnItemEx("JunkTempGlassShardA", 0, 0, 0, random(-5, 0), random(-5, 0), random(0, 8), 0, SXF_NOCHECKPOSITION, 50)
239     TNT1 A 0 A_SpawnItemEx("JunkTempGlassShardB", 0, 0, 0, random(0, 5), random(0, 5), random(0, 6), 0, SXF_NOCHECKPOSITION, 0)
240     TNT1 A 0 A_SpawnItemEx("JunkTempGlassShardB", 0, 0, 0, random(-5, 0), random(-5, 0), random(0, 6), 0, SXF_NOCHECKPOSITION, 150)
241     TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MagicSparkGreen", random(-5, 5), random(-5, 5), random(0, 5), random(-15, 15), random(-15, 15), random(0, 15), 0, SXF_NOCHECKPOSITION, 0)
242     TNT1 A 30 A_Quake(1, 30, 0, 512)
243     Stop
244   }
248 ACTOR PotionBounceAcid {
249   Scale 0.7
250   Radius 5
251   Height 4
252   Mass 25
253   Speed 50
254   Gravity 0.6
255   Projectile
256   ProjectileKickBack 100
257   Damage (1*random(50, 70))
258   DamageType "PoxBlunt"
259   +THRUGHOST
260   //+NOEXTREMEDEATH
261   -NOGRAVITY
262   +NOBLOCKMAP
263   +BOUNCEONFLOORS
264   +BOUNCEONWALLS
265   +BOUNCEONCEILINGS
266   +ALLOWBOUNCEONACTORS
267   +BOUNCEONACTORS
268   BounceType Hexen
269   BounceFactor 0.30
270   WallBounceFactor 0.30
271   BounceCount 6
272   BounceSound "Ammo/DepletedShardBounce"
273   SeeSound "Weapons/BoltSee"
274   DeathSound "Weapons/PotionDie"
275   Obituary "%o was knocked out cold by %k's Acid Potion."
277   States {
278   Spawn:
279     PPOT Y 1
280     TNT1 A 0 A_JumpIf(WaterLevel>0, "Death")
281     Loop
283   Death:
284     TNT1 A 0 A_Scream
285     TNT1 A 0 A_Changeflag("FOILINVUL", 1)
286     TNT1 A 0 A_Explode(random(140, 170), 128, XF_EXPLICITDAMAGETYPE|(GetCVarB('k8ZanMod_DamageSelfPotion') ? XF_HURTSOURCE : 0), True, 32, 0, 0, "", "PoxAcid")
287     TNT1 A 0 A_SpawnItemEx("AcidSplash", 0, 0, 1, 0, 0, 3, 0, SXF_NOCHECKPOSITION, 0)
288     TNT1 AAAAAAA 0 A_SpawnItemEx("AcidSplashSmallA", random(-16, 16), random(-16, 16), random(0, 16), random(-5, 5), random(-5, 5), random(4, 8), 0, SXF_NOCHECKPOSITION, 0)
289     TNT1 AAAAAAA 0 A_SpawnItemEx("AcidSplashSmallB", random(-16, 16), random(-16, 16), random(0, 16), random(-5, 5), random(-5, 5), random(4, 8), 0, SXF_NOCHECKPOSITION, 0)
290     TNT1 AAAAAAA 0 A_SpawnItemEx("AcidSplashSmallC", random(-16, 16), random(-16, 16), random(0, 16), random(-5, 5), random(-5, 5), random(4, 8), 0, SXF_NOCHECKPOSITION, 0)
291     TNT1 A 0 A_SpawnItemEx("JunkTempShrapnelA", 0, 0, 0, random(-5, 5), random(-5, 5), random(0, 4), 0, SXF_NOCHECKPOSITION, 150)
292     TNT1 A 0 A_SpawnItemEx("JunkTempShrapnelB", 0, 0, 0, random(-5, 5), random(-5, 5), random(0, 4), 0, SXF_NOCHECKPOSITION, 0)
293     TNT1 A 0 A_SpawnItemEx("JunkTempGlassShardA", 0, 0, 0, random(0, 5), random(0, 5), random(0, 8), 0, SXF_NOCHECKPOSITION, 0)
294     TNT1 A 0 A_SpawnItemEx("JunkTempGlassShardA", 0, 0, 0, random(-5, 0), random(-5, 0), random(0, 8), 0, SXF_NOCHECKPOSITION, 50)
295     TNT1 A 0 A_SpawnItemEx("JunkTempGlassShardB", 0, 0, 0, random(0, 5), random(0, 5), random(0, 6), 0, SXF_NOCHECKPOSITION, 0)
296     TNT1 A 0 A_SpawnItemEx("JunkTempGlassShardB", 0, 0, 0, random(-5, 0), random(-5, 0), random(0, 6), 0, SXF_NOCHECKPOSITION, 150)
297     TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MagicSparkGreen", random(-5, 5), random(-5, 5), random(0, 5), random(-15, 15), random(-15, 15), random(0, 15), 0, SXF_NOCHECKPOSITION, 0)
298     TNT1 A 30 A_Quake(1, 30, 0, 512)
299     Stop
300   }
304 ACTOR AcidSplash {
305   Radius 5
306   Height 5
307   Scale 1.0
308   Gravity 0.7
309   +MISSILE
310   +NOBLOCKMAP
311   +FRIGHTENED
312   +NOTELEPORT
313   +THRUGHOST
314   +FLOORCLIP
315   +NoTeleport
316   +k8AllowSimpleTick
317   //Decal "AcidDecal"
319   States {
320   Spawn:
321     TNT1 A 0
322     TNT1 A 0 A_JumpIf(!IsFlatDecalsAllowed(), "NoFlatDecals")
323     TNT1 A 0 A_SetFlatDecal("AcidDecal");
324     Goto DieNow
325   NoFlatDecals:
326     PPOT BCD 4 bright
327     PPOT E 1000 bright
328     Stop
330   Death:
331     TNT1 A 0 A_SpawnItemEx("AcidSplashFloor", 0, 0, 0, random(0, 0), random(0, 0), random(0, 0), 0, SXF_NOCHECKPOSITION, 0)
332   DieNow:
333     TNT1 A 0 A_Playsound("Weapons/AcidSizzle", CHAN_AUTO)
334     TNT1 A 0
335     Stop
336   }
340 ACTOR AcidSplashSmallA {
341   Radius 5
342   Height 5
343   Scale 0.4
344   Gravity 0.7
345   //Damage 10
346   //DamageType "PoxAcid"
347   //+FOILINVUL
348   +MISSILE
349   +NOBLOCKMAP
350   +FRIGHTENED
351   +NOTELEPORT
352   +THRUGHOST
353   +FLOORCLIP
354   +NoTeleport
355   +k8AllowSimpleTick
356   Decal "AcidSplashSmall"
358   States {
359   Spawn:
360     PPOT F 1 Bright
361     Loop
363   Death:
364     TNT1 A 0 A_Playsound("Weapons/AcidSizzle", CHAN_AUTO)
365     //TNT1 A 0 A_SpawnItemEx("AcidSplashFloorSmall", 0, 0, 0, random(0, 0), random(0, 0), random(0, 0), 0, SXF_NOCHECKPOSITION, 0)
366     Stop
367   }
371 ACTOR AcidSplashSmallB {
372   Radius 5
373   Height 5
374   Scale 0.5
375   Gravity 0.7
376   //Damage 10
377   //DamageType "PoxAcid"
378   //+FOILINVUL
379   +MISSILE
380   +NOBLOCKMAP
381   +FRIGHTENED
382   +NOTELEPORT
383   +THRUGHOST
384   +FLOORCLIP
385   +NoTeleport
386   +k8AllowSimpleTick
387   Decal "AcidSplashSmall"
389   States {
390   Spawn:
391     PPOT G 1 Bright
392     Loop
394   Death:
395     TNT1 A 0 A_Playsound("Weapons/AcidSizzle", CHAN_AUTO)
396     //TNT1 A 0 A_SpawnItemEx("AcidSplashFloorSmall", 0, 0, 0, random(0, 0), random(0, 0), random(0, 0), 0, SXF_NOCHECKPOSITION, 0)
397     Stop
398   }
402 ACTOR AcidSplashSmallC {
403   Radius 5
404   Height 5
405   Scale 0.6
406   Gravity 0.7
407   //Damage 10
408   //DamageType "PoxAcid"
409   //+FOILINVUL
410   +MISSILE
411   +NOBLOCKMAP
412   +FRIGHTENED
413   +NOTELEPORT
414   +THRUGHOST
415   +FLOORCLIP
416   +NoTeleport
417   +k8AllowSimpleTick
418   Decal "AcidSplashSmall"
420   States {
421   Spawn:
422     PPOT H 1 Bright
423     Loop
425   Death:
426     TNT1 A 0 A_Playsound("Weapons/AcidSizzle", CHAN_AUTO)
427     //TNT1 A 0 A_SpawnItemEx("AcidSplashFloorSmall", 0, 0, 0, random(0, 0), random(0, 0), random(0, 0), 0, SXF_NOCHECKPOSITION, 0)
428     Stop
429   }
433 ACTOR AcidSplashFloor {
434   Radius 5
435   Height 5
436   Scale 1.3
437   +MOVEWITHSECTOR
438   +DROPOFF
439   +NOBLOCKMAP
440   +NOTELEPORT
441   +FLATSPRITE
442   +FLOORCLIP
443   +NoTeleport
444   +k8AllowSimpleTick
446   States {
447   Spawn:
448     //PPOT A 2100 bright
449     //PPOT A random(1100, 2100) bright
450     PPOT A random(15, 35) bright
451     PPOT A 0 A_FadeOut(0.01)
452     Loop
453   }
458 ACTOR AcidSplashFloorSmall {
459   Radius 5
460   Height 5
461   Scale 0.4
462   +MOVEWITHSECTOR
463   +DROPOFF
464   +NOBLOCKMAP
465   +NOTELEPORT
466   +FLATSPRITE
467   +FLOORCLIP
468   +NoTeleport
469   +k8AllowSimpleTick
471   States {
472   Spawn:
473     PPOT A 2100 bright
474     Stop
475   }