stdinclude("root.edf"); castinfo Terrorist { name = "Terrorist" type = Sergeant sound { frame = S_SPOS_ATK2; sfx = shotgn } } castinfo Strake { name = "Strake" type = Demon sound { frame = S_SARG_ATK2; sfx = sgtatk } } castinfo ShotgunThief { name = "Shotgun Thief" type = Mancubus sound { frame = S_FATT_ATK2; sfx = firsht } sound { frame = S_FATT_ATK5; sfx = firsht } sound { frame = S_FATT_ATK8; sfx = firsht } } castinfo Cheung { name = "Cheung" type = AmmoRocket sound { frame = S_TROO_ATK3; sfx = claw } } // // Castcall Object for Slum Lord // // The Slum Lord seems to do something odd; whatever it is, I'm not sure, but // it makes the cast call skip forward. So, as for Bane, here is a cast-call- // only version of him. // thingtype SlumLordCast { spawnstate = S_SLCASTSPAWN seestate = S_SLCASTWALK1 meleestate = S_SLCASTMELEE1 deathstate = S_SLCASTDEATH1 seesound = bspsit deathsound = bspdth } frame S_SLCASTSPAWN { cmp = "BSPI|A|*|1|*|@this" } frame S_SLCASTWALK1 { cmp = "BSPI|A|*|6|*|@next" } frame S_SLCASTWALK2 { cmp = "BSPI|B|*|6|*|@next" } frame S_SLCASTWALK3 { cmp = "BSPI|C|*|6|*|@next" } frame S_SLCASTWALK4 { cmp = "BSPI|D|*|6|*|S_SLCASTWALK1" } frame S_SLCASTMELEE1 { cmp = "BSPI|E|*|8|*|@next" } frame S_SLCASTMELEE2 { cmp = "BSPI|F|*|8|*|S_SLCASTWALK1" } frame S_SLCASTDEATH1 { cmp = "BSPI|J|*|6|*|@next" } frame S_SLCASTDEATH2 { cmp = "BSPI|K|*|6|*|@next" } frame S_SLCASTDEATH3 { cmp = "BSPI|L|*|6|*|@next" } frame S_SLCASTDEATH4 { cmp = "BSPI|M|*|6|*|@next" } frame S_SLCASTDEATH5 { cmp = "BSPI|N|*|6|*|@next" } frame S_SLCASTDEATH6 { cmp = "BSPI|O|*|-1" } castinfo SlumLord { name = "Slum Lord" type = SlumLordCast sound { frame = S_SLCASTWALK2; sfx = bspwlk } sound { frame = S_SLCASTMELEE1; sfx = claw } } castinfo Hawk { name = "Hawk" type = BlackCandle } castinfo Sniper { name = "Sniper" type = Spectre } castinfo PenguinBomb { name = "Penguin Bomb" type = ShortLamp } castinfo Zeke { name = "Zeke" type = ColumnGreenHeart } castinfo Clown { name = "Clown" type = TorchRedShort } castinfo FlameThrowerDude { name = "Flame Thrower Dude" type = Archvile sound { frame = S_VILE_ATK2; sfx = vilatk } } castinfo FireFly { name = "FireFly" type = BossSpawnSpot } castinfo KillerCroc { name = "Killer Croc" type = PainElemental sound { frame = S_PAIN_ATK3; sfx = sklatk } } castinfo TallyMan { name = "Tally Man" type = Spiderdemon sound { frame = S_SPID_ATK2; sfx = shotgn } sound { frame = S_SPID_ATK3; sfx = shotgn } } castinfo PenguinLight { name = "Penguin" type = HangingCorpseTopLookUp } castinfo ScareCrow { name = "Scarecrow" type = Revenant sound { frame = S_SKEL_FIST2; sfx = skeswg } sound { frame = S_SKEL_FIST4; sfx = skepch } sound { frame = S_SKEL_MISS2; sfx = skeatk } } castinfo TwoFace { name = "Two Face" type = Cyberdemon sound { frame = S_CYBER_ATK2; sfx = rlaunc } sound { frame = S_CYBER_ATK4; sfx = rlaunc } sound { frame = S_CYBER_ATK6; sfx = rlaunc } } castinfo Joker { name = "The Joker" type = AmmoClip } // // Castcall Object for Bane // // Bane's normal frames lock up the cast call, so we need this fake // Bane that's only used here. He does his taunts regularly after each // attack, alternating the sounds used. // thingtype BaneCast { spawnstate = S_BANECAST seestate = S_BANECASTWALK1 meleestate = S_BANECASTPUNCH1 missilestate = S_BANEDASH1 deathstate = S_BANECASTDEATH1 } frame S_BANECAST { cmp = "SKEL|A|*|1|*|@this" } frame S_BANECASTWALK1 { cmp = "SKEL|A|*|6|*|@next" } frame S_BANECASTWALK2 { cmp = "SKEL|B|*|6|*|@next" } frame S_BANECASTWALK3 { cmp = "SKEL|C|*|6|*|S_BANECASTWALK1" } frame S_BANECASTPUNCH1 { cmp = "HEAD|B|*|6|*|@next" } frame S_BANECASTPUNCH2 { cmp = "HEAD|C|*|6|*|@next" } frame S_BANECASTPUNCH3 { cmp = "TROO|G|*|6|*|@next" } frame S_BANECASTPUNCH4 { cmp = "HEAD|D|*|6|*|@next" } frame S_BANECASTPOINT1 { cmp = "CPOS|R|*|6|*|@next" } frame S_BANECASTPOINT2 { cmp = "CPOS|S|*|6|*|@next" } frame S_BANECASTPOINT3 { cmp = "CPOS|T|*|50|*|S_BANECASTWALK1" } frame S_BANEDASH1 { cmp = "TROO|E|*|6|*|@next" } frame S_BANEDASH2 { cmp = "TROO|F|*|35|*|@next" } frame S_BANECASTPOINT4 { cmp = "CPOS|R|*|10|*|@next" } frame S_BANECASTPOINT5 { cmp = "CPOS|S|*|10|*|@next" } frame S_BANECASTPOINT6 { cmp = "CPOS|T|*|50|*|S_BANECASTWALK1" } frame S_BANECASTDEATH1 { cmp = "BOSS|I|*|6|*|@next" } frame S_BANECASTDEATH2 { cmp = "BOSS|J|*|6|*|@next" } frame S_BANECASTDEATH3 { cmp = "BOSS|K|*|6|*|@next" } frame S_BANECASTDEATH4 { cmp = "BOSS|L|*|6|*|@next" } frame S_BANECASTDEATH5 { cmp = "BOSS|M|*|6|*|@next" } frame S_BANECASTDEATH6 { cmp = "BOSS|N|*|6|*|@next" } frame S_BANECASTDEATH7 { cmp = "BOSS|O|*|-1" } castinfo Bane { name = "Bane" type = BaneCast sound { frame = S_BANECASTPUNCH4; sfx = skepch } sound { frame = S_BANECASTPOINT3; sfx = bgdth1 } sound { frame = S_BANECASTPOINT6; sfx = bgdth2 } } castinfo BizarroEye { name = "Bizarro Eye" type = HangingBodyTorso } castinfo Batman { name = "Batman" type = DoomPlayer stopattack = true sound { frame = S_PLAY_ATK1; sfx = dshtgn } } castorder = { Terrorist, Strake, ShotgunThief, Cheung, SlumLord, Hawk, Sniper, PenguinBomb, Zeke, Clown, FlameThrowerDude, FireFly, KillerCroc, TallyMan, PenguinLight, ScareCrow, TwoFace, Joker, Bane, BizarroEye, Batman }