I have a huge problem. First shots works fine, and the code runs nice and tidy, but when I have a full clip after i've reloaded the first time, zdoom hoards up 8GBytes of memory and freezes. Heres the code. I think there is something wrong with my reload section, but i don't know what. Any help?
Edit* those reaload lines I've commented made the weapon as a shotgun, it loaded one rocket at a time, like a typical fps pump action shotgun, it actually worked fine that way. Since this is a rocket launcher then i don't want it to work like a pump action shotgun.
Code: Select all
//////////////////autorocketlauncher/////////
ACTOR AutoRocket : Doomweapon
{
Weapon.BobRangeX 0.3
Weapon.BobRangeY 0.5
Weapon.BobStyle InverseSmooth
Weapon.BobSpeed 2.0
Game Doom
SpawnID 29
Speed 20
Damage 20
//Weapon.SelectionOrder 2500
Weapon.AmmoUse1 0
Weapon.AmmoUse2 0
Weapon.AmmoGive2 0
Weapon.AmmoGive1 12
Weapon.AmmoType1 "RocketAmmo"
Weapon.AmmoType2 "RocketRounds1"
Inventory.PickupSound "misc/rockboxa"
+WEAPON.NOAUTOAIM
+WEAPON.EXPLOSIVE
+WEAPON.NOALERT
Inventory.PickupMessage "You got the UAC Automatic Rocket Launcher! (Slot 5)"
Tag "A-Rocket Launcher"
States
{
Steady:
AISS D 1
Goto Ready
Ready:
TNT1 A 0 A_PlaySound("RLANDRAW")
TNT1 A 0 A_PlaySound("RLANDRAW")
TNT1 A 0 A_PlaySound("RLANDRAW")
AISR D 1 A_JumpIfInventory("GoFatality", 1, "Steady")
AISS D 1
TNT1 AAAAA 0
TNT1 A 0 //A_JumpIfInventory("RocketRounds1",1,2)
TNT1 AAAA 0
TNT1 A 0 A_JumpIfInventory("Reloading",1,"Reload")
AISS D 1 A_WeaponReady
Goto Ready+7
Deselect:
AISR DDD 1
TNT1 A 1 A_Lower
Wait
Select:
AISS D 0 A_Raise
Wait
Fire:
TNT1 A 0 A_JumpIfInventory("RocketRounds1",1,2)
Goto Reload
TNT1 AAA 0
TNT1 A 0 A_AlertMonsters
TNT1 A 0 A_FireCustomMissile("RedFlareSpawn",-5,0,0,0)
TNT1 A 0 A_PlaySound ("0SRFIRE", 7)
TNT1 A 0 BRIGHT A_FireCustomMissile("Alerter")
TNT1 A 0 A_ZoomFactor(0.985)
AISF A 1 BRIGHT A_FireCustomMissile("Rocket", 0, 1, 0, -5)
TNT1 A 0 A_SetPitch(-3.0 + pitch)
TNT1 A 0 A_ZoomFactor(0.980)
TNT1 A 0 A_Takeinventory("RocketRounds1",1)
TNT1 A 0 A_FireCustomMissile("ShakeYourAssDouble", 0, 0, 0, 0)
AISF A 1 BRIGHT A_SetPitch(1.0 + pitch)
TNT1 A 0 A_ZoomFactor(0.99)
MISF E 1 A_ZoomFactor(1.0)
AISS D 1
TNT1 A 0 A_PlaySound("RLCYC", 5)
MISG A 1
TNT1 A 0 A_ReFire
Goto Ready+7
AltFire:
TNT1 A 0 A_JumpIfInventory("RocketRounds1",1,2)
Goto Reload
TNT1 AAA 0
TNT1 A 0 A_AlertMonsters
TNT1 A 0 A_FireCustomMissile("RedFlareSpawn",-5,0,0,0)
TNT1 A 0 A_PlaySound ("0SRFIRE", 7)
TNT1 A 0 BRIGHT A_FireCustomMissile("Alerter")
TNT1 A 0 A_ZoomFactor(0.985)
AISF A 1 BRIGHT A_FireCustomMissile("Rocket", 0, 1, 0, -5)
TNT1 A 0 A_SetPitch(-3.0 + pitch)
TNT1 A 0 A_ZoomFactor(0.980)
TNT1 A 0 A_Takeinventory("RocketRounds1",3)
TNT1 A 0 A_FireCustomMissile("ShakeYourAssDouble", 0, 0, 0, 0)
TNT1 A 0 A_FireCustomMissile("RedFlareSpawn",-5,0,0,0)
TNT1 A 0 A_PlaySound ("0SRFIRE", 7)
TNT1 A 0 BRIGHT A_FireCustomMissile("Alerter")
TNT1 A 0 A_ZoomFactor(0.985)
AISF A 1 BRIGHT A_FireCustomMissile("Rocket", 0, 1, 0, -5)
TNT1 A 0 A_SetPitch(-3.0 + pitch)
TNT1 A 0 A_ZoomFactor(0.980)
TNT1 A 0 A_FireCustomMissile("ShakeYourAssDouble", 0, 0, 0, 0)
TNT1 A 0 A_FireCustomMissile("RedFlareSpawn",-5,0,0,0)
TNT1 A 0 A_PlaySound ("0SRFIRE", 7)
TNT1 A 0 BRIGHT A_FireCustomMissile("Alerter")
TNT1 A 0 A_ZoomFactor(0.985)
AISF A 1 BRIGHT A_FireCustomMissile("Rocket", 0, 1, 0, -5)
TNT1 A 0 A_SetPitch(-3.0 + pitch)
TNT1 A 0 A_ZoomFactor(0.980)
TNT1 A 0 A_FireCustomMissile("ShakeYourAssDouble", 0, 0, 0, 0)
AISF AA 1 BRIGHT A_SetPitch(1.0 + pitch)
AISS DD 2
TNT1 A 0 A_ZoomFactor(0.99)
MISF E 1 A_ZoomFactor(1.0)
AISS DD 1
TNT1 A 0 A_PlaySound("RLCYC", 5)
AISS DD 1
Goto Ready+7
Reload:
AISS DD 1 A_WeaponReady
TNT1 A 0 A_Takeinventory("Reloading",1)
TNT1 A 0 A_JumpIfInventory("RocketRounds1",12,3)
TNT1 A 0 A_JumpIfInventory("RocketAmmo",1,3)
Goto Ready+10
TNT1 AAAA 0
TNT1 A 0 A_PlaySound("ReloadRL")
AISS DD 2
AISR D 22
AISS DD 2
TNT1 A 0 A_FireCustomMissile("RocketCaseSpawn",-30,0,-4,-4)
AISS DD 2
AISR D 22
AISS DD 2
TNT1 A 0 A_FireCustomMissile("RocketCaseSpawn",-30,0,-4,-4)
TNT1 AAAAA 0
AISS DDD 2
AISS D 1
AISR D 2 A_PlaySound("RLCYC")
AISS D 2
TNT1 AAAAAA 0
TNT1 A 0 A_JumpIfInventory("RocketRounds1",12,8)
TNT1 A 0 A_JumpIfInventory("RocketAmmo",1,3)
Goto Ready+10
TNT1 AAAAAA 0
Goto Reload2
//TNT1 A 0 A_Giveinventory("RocketRounds1",1)
//TNT1 A 0 A_Takeinventory("RocketAmmo",1)
//TNT1 A 0 A_JumpIfInventory("RocketRounds1",12,2)
//Goto Reload+21
//Goto Reload+24
TNT1 AAAAAAAAAA 0
AISS D 1 A_Refire
Goto Ready+10
TNT1 AAAAA 0
Spawn:
LAUM A -1
Stop
Reload2:
TNT1 AAAAAA 0
TNT1 A 0 A_Giveinventory("RocketRounds1",1)
TNT1 A 0 A_Takeinventory("RocketAmmo",1)
TNT1 A 0 A_JumpIfInventory("RocketRounds1",1,"Reload2")
TNT1 A 0 A_JumpIfInventory("RocketRounds1",12,"Ready")
}
}
ACTOR RocketRounds1 : Ammo
{
Inventory.Amount 0
Inventory.MaxAmount 12
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 12
}