action AHGSTAND 0 1 5 1 1 action AHGDODGE 10 17 1 1 3 action AHGRELOAD 40 7 1 1 10 action AHGJUMP 10 4 1 1 10 action AHGRUN 10 17 1 1 4 action AHGSHOOT 27 11 1 1 4 action AHGDYING 50 8 1 1 11 action AHGTGREN 60 12 1 1 7 action AHGDEAD 57 1 1 1 1 move UPVELS 180 -200 move DOWNVELS 180 100 move HGRUN 195 move HGRUNBACK -250 move HGDODGE 275 move HGSTOP ai AIHGJUMPUP AHGJUMP UPVELS randomangle getv geth ai AIHGJUMPDOWN AHGJUMP DOWNVELS randomangle getv geth ai AIHGSEEK AHGRUN HGRUN faceplayer seekplayer ai AIHGFLEE AHGDODGE HGRUNBACK faceplayer ai AIHGDODGE AHGDODGE HGDODGE dodgebullet ai AIHGSHOOT AHGSHOOT HGSTOP faceplayer ai AIHGRELOAD AHGRELOAD HGSTOP faceplayer ai AIHGTGREN AHGTGREN HGSTOP faceplayer ai AIHGDYING AHGDYING HGSTOP faceplayer state hgreload ifactioncount 7 { resetactioncount ai AIHGSHOOT break } ends state hgseek ifactioncount 7 { ifonwater { } else { resetactioncount sound PAVESTEP } } ifvare PLAYERGRENADEISOUT 1 { state hgfleesnds ai AIHGFLEE break } ifp palive ifcansee { ifrnd 10 { move HGRUN randomangle geth } ifvare PLAYERGRENADEISOUT 1 { state hgfleesnds ai AIHGFLEE break } ifpdistl 3024 ifrnd 40 { // soundonce HGSHOOTSND // ai AIHGSHOOT ai AIHGTGREN break } ifbulletnear { ai AIHGDODGE break } ifrnd 8 { ifcanshoottarget { // sound HGSHOOTSND ai AIHGSHOOT break } /* else { ai AIHGTGREN break } */ } } ends state hgdodge ifactioncount 15 { resetactioncount // sound HGSHOOTSND ai AIHGSHOOT break } ends state hgjump ifbulletnear { ai AIHGDODGE break } ifai AIHGJUMPUP { ifcount 5 { ai AIHGJUMPDOWN } ifrnd 30 operate } ifai AIHGJUMPDOWN { iffloordistl 26 { sound DUKE_LAND ai AIHGFLEE break } } ends state hgshoot ifrnd 1 { ifrnd 100 { soundonce TOMAESTO } } ifrnd 1 { ifrnd 128 { stopsound HGSHOOTSND soundonce INSERT_CLIP ai AIHGRELOAD break } } // ifactioncount 11 resetactioncount // else ifactioncount 3 { resetactioncount shoot SHOTSPARK1 shoot CHAINGUN shoot SHOTSPARK1 shoot SHOTSPARK1 shoot CHAINGUN soundonce HGSHOOTSND } ifcount 32 { ifpdistg 1023 { ifvare GRENADEISOUT 0 { stopsound HGSHOOTSND ai AIHGSEEK break } else { ai AIHGSHOOT } } } ends state hgflee ifbulletnear { ai AIHGDODGE break } ifrnd 10 iffloordistl 10 { ai AIHGJUMPUP break } ifvare PLAYERGRENADEISOUT 1 { ifnotmoving { iffloordistl 10 { ifrnd 10 { ai AIHGJUMPUP break } } } ifactioncount 80 { setvar PLAYERGRENADEISOUT 0 resetactioncount // sound HGSHOOTSND } } else { ifactioncount 55 { ifvare PLAYERGRENADEISOUT 0 { ai AIHGSHOOT } else { ifpdistl 9600 { ai AIHGFLEE } else { ai AIHGSHOOT } } setvar PLAYERGRENADEISOUT 0 resetactioncount // sound HGSHOOTSND break } } ends state hgtgren ifactioncount 12 { resetactioncount setvar GRENADEISOUT 1 soundonce PIPEBOMB_BOUNCE state hgfleesnds spawn GRENADEOFHG /* ifcanshoottarget { sound HGSHOOTSND ai AIHGSHOOT break } else { ai AIHGSEEK break } */ ai AIHGFLEE break } ends state hgdying stopsound HGSHOOTSND ifactioncount 8 { resetactioncount spawn HUMANDEAD killit break } ends gamevar GOTAUTHORIZATION 0 GAMEVAR_FLAG_GLOBAL state hghit // ife THISACTOR sprite[].htowner seta[].htextra -1 ifvare GOTUNIFORM 1 { ifspritepal 5 { ai AIHGSEEK } else { quote 249 setvar GOTUNIFORM 0 } } ifdead { // ifspritepal 3 spawn FREEZESPRITE sound BULLET_HITBODY1 soundonce TRIPASDEHGRUNT spawn FLYINGJIB3 spawn FLYINGJIB3 guts JIBS6 4 ifwasweapon RPG { state standard_jibs sound SQUISHED killit } else ifwasweapon RADIUSEXPLOSION { ifvare EXPSPAWNEDBY 3 { spawn FLAMEDENEMYRUN killit } else { state standard_jibs sound SQUISHED killit } } else { cstat 0 move 0 ai AIHGDYING break } } else { setvar PLAYERGRENADEISOUT 0 sound BULLET_HITBODY1 state random_wall_jibs guts JIBS6 2 } ends state hgcode fall ifrnd 4 { ifaction AHGDEAD { } else { operate } } ifrnd 1 { ifaction AHGDEAD { } else { ifrnd 64 { ifaction AHGSTAND { } else { ifphealthl 35 { ifp palive { soundonce VASACAER } } else { ifrnd 128 { soundonce VAMOS } else { soundonce OSVAMOSADAR } } } } } } ifaction AHGSTAND { ifvare GOTUNIFORM 0 { state hgrecogsnds sizeat 19 16 ai AIHGSEEK } else { ifspritepal 13 { ifvare DIALOGPART 0 { ifpdistl 1024 ifhitspace { quote 253 count 0 setvar DIALOGPART 1 } } ifvare DIALOGPART 1 { ifcount 90 { ifpdistl 1024 ifhitspace { quote 213 count 0 setvar DIALOGPART 2 } } } ifvare DIALOGPART 2 { ifcount 90 { ifvare GOTAUTHORIZATION 0 { quote 254 setvar DIALOGPART 0 } else { quote 214 setvar DIALOGPART 4 setsector[ACTIVATESECTOR].lotag DOORSECTOR } } } } else ifspritepal 5 { ifvare GOTAUTHORIZATION 0 { count 0 } ifvare GOTAUTHORIZATION 1 { quote 250 ifcount 50 { resetcount spritepal 9 } } } else ifspritepal 9 { ifvare GOTAUTHORIZATION 1 { quote 251 setvar GOTUNIFORM 0 ai AIHGSEEK } } else ifspritepal 0 { ifpdistl 1024 ifhitspace { quote 248 } } else ifspritepal 3 { ifpdistl 1024 ifhitspace { quote 248 } } } } else ifaction AHGDEAD { sizeat 21 18 cstat 0 fall ifmove 0 { ifrnd 128 cstat 4 else cstat 0 move HGSTOP } ifsquished { sound SQUISHED state random_ooz killit } else ifcount 1024 ifpdistg 4096 killit else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs killit } } } else ifai AIHGSEEK { sizeat 23 20 state hgseek } else ifai AIHGFLEE { sizeat 23 20 state hgflee } else ifai AIHGRELOAD { sizeat 19 16 state hgreload } else ifai AIHGSHOOT { sizeat 19 16 state hgshoot } else ifai AIHGDODGE { sizeat 23 20 state hgdodge } else ifai AIHGJUMPUP { sizeat 23 20 state hgjump } else ifai AIHGJUMPDOWN { sizeat 23 20 state hgjump } else ifai AIHGTGREN { sizeat 19 16 state hgtgren } else ifai AIHGDYING { stopsound HGSHOOTSND sizeat 21 18 state hgdying } ifhitweapon state hghit ends useractor enemy HUMANGRUNT 100 AHGSTAND state hgcode enda