optimised weapon code a little
[k8zan.git] / decorate / Weapons / Axe.txt
blob31f2f2f1be86dbc73c7c6d7947e7bd81b9c7f3ab
1 ACTOR Axe : Weapon replaces Chainsaw {
2   +INVENTORY.IGNORESKILL
3   +WEAPON.NOALERT
4   +IGNORESKILL
5   +THRUGHOST
6   +MOVEWITHSECTOR
7   XScale 0.8
8   Yscale 0.9
9   Radius 36
10   Height 25
11   Inventory.PickupMessage "Got a hefty Axe."
12   Inventory.PickupSound "none"
13   Weapon.SelectionOrder 12
14   Weapon.SlotNumber 1
15   Weapon.SlotPriority 1
16   Weapon.Kickback 220
17   Tag "Axe"
18   //AttackSound "Weapons/AxeSwing"
19   //Inventory.Icon "AXEIA0"
20   Obituary "%o was split by %k's Axe."
22   States {
23   Spawn:
24     AXES A -1
25     Stop
27   Select:
28     stateinclude "decorate/Weapons/QuickKick/QuickKickOnSelectDeselect.txt"
29     TNT1 A 0
30       {
31         A_PlaySound("Weapons/AxePickup", CHAN_WEAPON);
32         A_GiveInventory("HoldingAxe", 1);
33         if (GetCVarB('k8ZanMod_CustomCrosshairs')) A_SetCrosshair(2);
34       }
35     TNT1 A 0 A_Raise(666)
36     Goto Ready
38   Deselect:
39     stateinclude "decorate/Weapons/QuickKick/QuickKickOnSelectDeselect.txt"
40     TNT1 A 1
41     Goto DeselectLoop
43   DeselectLoop:
44     TNT1 A 0 A_TakeInventory("HoldingAxe", 1)
45     TNT1 A 1 A_Lower(666)  // was zero duration
46     Loop
48   Ready:
49     TNT1 A 0 A_TakeInventory("QuickKickDisabled")
51   ReadyLoop:
52     TNT1 A 1 A_WeaponReady
53     Wait
55   Fire:
56     TNT1 A 2
57     TNT1 A 0 A_JumpIfInventory("AxeSwinging", 2, "Swing1")
58     TNT1 A 0 A_JumpIfInventory("AxeSwinging", 1, "Swing2")
59     TNT1 A 0
60       {
61         A_SetPitch(-0.6+pitch);
62         A_SetAngle(0.4+angle);
63       }
64     AXEF A 1 A_PlaySound("Weapons/AxeSwing", CHAN_WEAPON)
65     AXEF A 1 A_AlertMonsters(640)
66     TNT1 A 0 A_SetPitch(-0.6+pitch)
67     AXEF B 1 A_GiveInventory("AxeSwinging", 1)
68     TNT1 A 0 A_SetAngle(0.4+angle)
69     AXEF B 1 A_CustomPunch(5*random(6, 8), 1, 0, "AxeSlashPuff", 128, 0, 0, "ArmorBonus", "Weapons/AxeMelee")
70     TNT1 A 0
71       {
72         A_FireProjectile("AxeCleave", 0, 0, 0, 0, FPF_NOAUTOAIM, 0);
73         A_FireProjectile("AxeCleave", 30, 0, 0, 0, FPF_NOAUTOAIM, 0);
74         A_FireProjectile("AxeCleave", 60, 0, 0, 0, FPF_NOAUTOAIM, 0);
75         A_FireProjectile("AxeCleave", 90, 0, 0, 0, FPF_NOAUTOAIM, 0);
76         A_FireProjectile("AxeCleave", 120, 0, 0, 0, FPF_NOAUTOAIM, 0);
77         A_FireProjectile("AxeCleave", 150, 0, 0, 0, FPF_NOAUTOAIM, 0);
78         A_FireProjectile("AxeCleave", -30, 0, 0, 0, FPF_NOAUTOAIM, 0);
79         A_FireProjectile("AxeCleave", -60, 0, 0, 0, FPF_NOAUTOAIM, 0);
80         A_FireProjectile("AxeCleave", -90, 0, 0, 0, FPF_NOAUTOAIM, 0);
81         A_FireProjectile("AxeCleave", -120, 0, 0, 0, FPF_NOAUTOAIM, 0);
82         A_FireProjectile("AxeCleave", -150, 0, 0, 0, FPF_NOAUTOAIM, 0);
83         A_SetPitch(0.6+pitch);
84       }
85     AXEF C 1
86     AXEF D 1
87     AXEF E 1
88     TNT1 A 0 A_SetPitch(0.6+pitch)
89     TNT1 A 8 A_WeaponReady
90     TNT1 A 1 A_TakeInventory("AxeSwinging", 2)
91     //TNT1 A 1 A_Refire
92     Goto ready
94   Swing2:
95     TNT1 A 4
96     TNT1 A 0 A_Jump(80, "Rage")
97   Swing2NoRage:
98     TNT1 A 0 A_SetPitch(-0.4+pitch)
99     TNT1 A 0 A_SetAngle(-0.4+angle)
100     AXEF F 1 A_PlaySound("Weapons/AxeSwing", CHAN_WEAPON)
101     AXEF H 2 A_GiveInventory("AxeSwinging", 1)
102     TNT1 A 0
103       {
104         A_SetPitch(-0.4+pitch);
105         A_SetAngle(-0.4+angle);
106       }
107     AXEF I 1 A_CustomPunch(5*random(5, 8), 1, 0, "AxeSlashPuff", 128, 0, 0, "ArmorBonus", "Weapons/AxeMelee")
108     TNT1 A 0
109       {
110         A_FireProjectile("AxeCleave", 0, 0, 0, 0, FPF_NOAUTOAIM, 0);
111         A_FireProjectile("AxeCleave", 30, 0, 0, 0, FPF_NOAUTOAIM, 0);
112         A_FireProjectile("AxeCleave", 60, 0, 0, 0, FPF_NOAUTOAIM, 0);
113         A_FireProjectile("AxeCleave", 90, 0, 0, 0, FPF_NOAUTOAIM, 0);
114         A_FireProjectile("AxeCleave", 120, 0, 0, 0, FPF_NOAUTOAIM, 0);
115         A_FireProjectile("AxeCleave", 150, 0, 0, 0, FPF_NOAUTOAIM, 0);
116         A_FireProjectile("AxeCleave", -30, 0, 0, 0, FPF_NOAUTOAIM, 0);
117         A_FireProjectile("AxeCleave", -60, 0, 0, 0, FPF_NOAUTOAIM, 0);
118         A_FireProjectile("AxeCleave", -90, 0, 0, 0, FPF_NOAUTOAIM, 0);
119         A_FireProjectile("AxeCleave", -120, 0, 0, 0, FPF_NOAUTOAIM, 0);
120         A_FireProjectile("AxeCleave", -150, 0, 0, 0, FPF_NOAUTOAIM, 0);
121         A_SetPitch(0.4+pitch);
122       }
123     AXEF J 1 A_AlertMonsters(640)
124     AXEF K 1
125     TNT1 A 0 A_SetPitch(0.4+pitch)
126     TNT1 A 8 A_WeaponReady
127     TNT1 A 1 A_TakeInventory("AxeSwinging", 2)
128     //TNT1 A 1 A_Refire
129     Goto Ready
131   Swing1:
132     TNT1 A 8
133     TNT1 A 0 A_SetPitch(-0.6+pitch)
134     TNT1 A 0 A_SetAngle(0.4+angle)
135     AXEF A 1 A_PlaySound("Weapons/AxeSwing", CHAN_WEAPON)
136     AXEF A 1 A_AlertMonsters(640)
137     AXEF B 1 A_TakeInventory("AxeSwinging", 1)
138     TNT1 A 0
139       {
140         A_SetPitch(-0.6+pitch);
141         A_SetAngle(0.4+angle);
142       }
143     AXEF B 1 A_CustomPunch(5*random(6, 9), 1, 0, "AxeSlashPuff", 128, 0, 0, "ArmorBonus", "Weapons/AxeMelee")
144     TNT1 A 0
145       {
146         A_FireProjectile("AxeCleave", 0, 0, 0, 0, FPF_NOAUTOAIM, 0);
147         A_FireProjectile("AxeCleave", 30, 0, 0, 0, FPF_NOAUTOAIM, 0);
148         A_FireProjectile("AxeCleave", 60, 0, 0, 0, FPF_NOAUTOAIM, 0);
149         A_FireProjectile("AxeCleave", 90, 0, 0, 0, FPF_NOAUTOAIM, 0);
150         A_FireProjectile("AxeCleave", 120, 0, 0, 0, FPF_NOAUTOAIM, 0);
151         A_FireProjectile("AxeCleave", 150, 0, 0, 0, FPF_NOAUTOAIM, 0);
152         A_FireProjectile("AxeCleave", -30, 0, 0, 0, FPF_NOAUTOAIM, 0);
153         A_FireProjectile("AxeCleave", -60, 0, 0, 0, FPF_NOAUTOAIM, 0);
154         A_FireProjectile("AxeCleave", -90, 0, 0, 0, FPF_NOAUTOAIM, 0);
155         A_FireProjectile("AxeCleave", -120, 0, 0, 0, FPF_NOAUTOAIM, 0);
156         A_FireProjectile("AxeCleave", -150, 0, 0, 0, FPF_NOAUTOAIM, 0);
157         A_SetPitch(0.6+pitch);
158       }
159     AXEF C 1
160     AXEF D 1
161     AXEF E 1
162     TNT1 A 0 A_SetPitch(0.6+pitch)
163     TNT1 A 8 A_WeaponReady
164     TNT1 A 1 A_TakeInventory("AxeSwinging", 2)
165     //TNT1 A 1 A_Refire
166     Goto Ready
168   Rage:
169     TNT1 A 0 A_PlaySound("Character/ZanRage", CHAN_VOICE)
170     Goto Swing2NoRage
172   AltFire:
173     TNT1 A 0 A_Jump(200, "AltRage")
174   AltFireNoRage:
175     TNT1 A 0 A_TakeInventory("HoldingAxe", 1)
176     TNT1 A 2
177     TNT1 A 0 A_SetPitch(-1.0+pitch)
178     AXEA A 1 A_PlaySound("Weapons/AxeSwing", CHAN_WEAPON)
179     TNT1 A 0 A_SetPitch(-1.0+pitch)
180     AXEA A 1 A_Recoil(-7)
181     TNT1 A 0 A_SetPitch(1.0+pitch)
182     AXEA B 2 A_FireCustomMissile("Axehurl", 0, 1, 0, 0, FPF_NOAUTOAIM)
183     TNT1 A 0 A_SetAngle(0.4+angle)
184     AXEA C 3 A_TakeInventory("Axe", 1)
185     TNT1 A 0 A_SetPitch(1.0+pitch)
186     AXEA D 2
187     Goto Deselect
189   AltRage:
190     TNT1 A 0 A_PlaySound("Character/ZanRage", CHAN_VOICE)
191     Goto AltFireNoRage
193     stateinclude "decorate/Weapons/QuickKick/QuickKickInclude.txt"
194   }
198 ACTOR AxeSwinging : Ammo {
199   +INVENTORY.IGNORESKILL
200   Inventory.MaxAmount 2
201   Ammo.BackpackAmount 0
202   Ammo.BackpackMaxAmount 0
206 ACTOR Axehurl {
207   Radius 9
208   Height 10
209   Speed 45
210   Gravity 0.4
211   Damage (1*random(65, 75))
212   Projectile
213   ProjectileKickBack 240
214   //RipperLevel 3
215   DamageType "AxeHurl"
216   Decal "AxeHurlSmash"
217   SeeSound "Weapons/AxeHurling"
218   DeathSound "Weapons/AxeCrush"
219   Obituary "%o was split by %k's Axe."
220   +k8MissileHeadshots
221   //+DONTREFLECT
222   +THRUGHOST
223   //+RIPPER
224   //+LOWGRAVITY
225   -NOGRAVITY
226   -NOBLOCKMAP
228   States {
229   Spawn:
230     AXEP A 3
231     AXEP J 3
232     AXEP I 3
233     AXEP G 3
234     AXEP F 4
235     AXEP D 4
236     AXEP C 4
237     Loop
239   Death:
240     TNT1 A 0 A_AlertMonsters
241     AXES D 4
242     AXES C 4
243     AXES B 4
244     TNT1 A 0 A_SpawnItem("Axe")
245     Stop
246   }
250 ACTOR AxeSlashPuff {
251   AttackSound "Weapons/AxeMelee4"
252   DamageType "Axe"
253   +THRUGHOST
254   +NoTeleport
255   +k8AllowSimpleTick
257   States {
258   Spawn:
259     TNT1 A 1 A_SpawnItem("AxeSlashWall")
260     Stop
261   }
265 ACTOR AxeSlashWall {
266   +NoTeleport
267   +k8AllowSimpleTick
268   States {
269   Spawn:
270     TNT1 A 0
271     Stop
272   }
276 ACTOR AxeCleave : FastProjectile {
277   Radius 5
278   Height 5
279   Speed 46
280   Projectile
281   DamageType "AxeCleave"
282   // no need to, it does no damage anyway
283   +k8MissileHeadshots
284   +THRUGHOST
285   +NoTeleport
286   +k8AllowSimpleTick
288   States {
289     Spawn:
290       TNT1 A 2
291       Stop
293   Death:
294     TNT1 A 0 A_Explode(5*random(5, 7), 24, 0, 24, 0, 0, 0, " ", "AxeCleave")
295     Stop
296   }
300 // heretic
301 Actor (optional) Zan_MaceFragfireGun : Axe Replaces Mace {}
302 Actor (optional) Zan_MacePoweredFragfireGun : Axe Replaces MacePowered {}