Lance MDR Rocket
Mini-Member

Posts: 97
Registered: 03-06 |
Only the S_POSS_ATK* frames are important (right down the bottom there), but I copied the whole thing to make it easy for peeps to copy, paste, and test:
code: // include the usual definitions too
stdinclude("root.edf")
// ZOMBIEMEN!
// Changes: more aggro (attacks more often, shoots more bullets) - mean as a vanilla sergeant. More health.
thingtype Zombieman
{
doomednum = 3004
spawnstate = S_POSS_STND
spawnhealth = 30
seestate = S_POSS_RUN0
seesound = posit1
attacksound = pistol
painstate = S_POSS_PAIN
painchance = 160
painsound = popain
missilestate = S_POSS_ATK0
deathstate = S_POSS_DIE1
xdeathstate = S_POSS_XDIE1
deathsound = podth1
speed = 8
height = 56.0
activesound = posact
cflags = SOLID|SHOOTABLE|COUNTKILL|FOOTCLIP|SPACMONSTER|PASSMOBJ|RANGEHALF
raisestate = S_POSS_RAISE1
droptype = AmmoClip
obituary_normal = "was surprised by the zombie's firepower"
acs_spawndata { num = 4; modes = doom }
dehackednum = 2
}
// altered Zombieman routines
frame S_POSS_RUN0 { cmp = "POSS| *|*| 0|SetCounter(0,0,0)|S_POSS_RUN1"; }
frame S_POSS_RUN1 { cmp = "POSS| *|*| 4|Chase |@next"; dehackednum = 176 }
frame S_POSS_RUN2 { cmp = "POSS| *|*| 4|Chase |@next"; dehackednum = 177 }
frame S_POSS_RUN3 { cmp = "POSS| 1|*| 4|Chase |@next"; dehackednum = 178 }
frame S_POSS_RUN4 { cmp = "POSS| 1|*| 4|Chase |@next"; dehackednum = 179 }
frame S_POSS_RUN5 { cmp = "POSS| 2|*| 4|Chase |@next"; dehackednum = 180 }
frame S_POSS_RUN6 { cmp = "POSS| 2|*| 4|Chase |@next"; dehackednum = 181 }
frame S_POSS_RUN7 { cmp = "POSS| 3|*| 4|Chase |@next"; dehackednum = 182 }
frame S_POSS_RUN8 { cmp = "POSS| 3|*| 4|Chase |S_POSS_RUN0"; dehackednum = 183 }
frame S_POSS_ATK0 { cmp = "POSS| 4|*| 3|FaceTarget |S_POSS_ATK1"; }
frame S_POSS_ATK1 { cmp = "POSS| 4|*| 4|FaceTarget |@next"; dehackednum = 184 }
frame S_POSS_ATK2 { cmp = "POSS| 5|*| 6|PosAttack |@next"; dehackednum = 185 }
frame S_POSS_ATK3 { cmp = "POSS| 4|*| 0|SetCounter(0,1,1)|S_POSS_ATK4"; dehackednum = 186 }
frame S_POSS_ATK4 { cmp = "POSS| 4|*| 1|CounterJump(S_POSS_ATK5,2,2,0)|S_POSS_ATK1"; }
frame S_POSS_ATK5 { cmp = "SPOS| 4|*| 35|Jump(128,SPOS_RUN0)|S_POSS_ATK1"; }
What should happen is the Zombieman should attack three times, then turn into a Sergeant (this is so I can be sure the S_POSS_ATK5 frame is actually being entered) and either attack again OR reenter his movement states, half and half chance. What happens is he attacks until pained. The Jump codepointer simply does not work (in 3.40.20 & SVN r2094 from DRDTeam); RandomJump, fortunately, is just fine.
Compare the following code for further proof (if it works, the zombieman's idle frames will flicker between Imp & zombie frames):
code: stdinclude("root.edf")
//zombieman
frame S_POSS_STND { cmp = "POSS| *|*|10|RandomJump|@this|*|175|128"; dehackednum = 174 }
frame S_POSS_STND2 { cmp = "TROO| 1|*|10|RandomJump|@this|*|174|128"; dehackednum = 175 }
&
code: stdinclude("root.edf")
//zombieman
frame S_POSS_STND { cmp = "POSS| *|*|10|Jump(S_POSS_STND2,128)|@this|*|175|128"; dehackednum = 174 }
frame S_POSS_STND2 { cmp = "TROO| 1|*|10|Jump(S_POSS_STND,128)|@this"; dehackednum = 175 }
And, as long as I'm complaining, can we have user definable accuracy for custom bullet attacks please? I want the Sergeants to be more accurate & fire more (but less damaging) pellets, but setting their attacks to use the 'never accurate' setting makes them too lethal and they're even more useless than usual with SSG accuracy set.
|