383 lines
16 KiB
C++
383 lines
16 KiB
C++
|
|
//**************************************************************************
|
|
//**
|
|
//** golem_b.hc
|
|
//**
|
|
//** $Header: /HexenWorld/Siege/golem_b.hc 3 5/25/98 1:38p Mgummelt $
|
|
//**
|
|
//** Bronze golem.
|
|
//**
|
|
//**************************************************************************
|
|
|
|
// FRAMES ------------------------------------------------------------------
|
|
|
|
// Transition from still to attack stance
|
|
$frame gbirth1 gbirth2 gbirth3 gbirth4 gbirth5
|
|
$frame gbirth6 gbirth7 gbirth8 gbirth9 gbirth10
|
|
$frame gbirth11 gbirth12
|
|
|
|
// Death
|
|
$frame gdeath1 gdeath2 gdeath3 gdeath4 gdeath5
|
|
$frame gdeath6 gdeath7 gdeath8 gdeath9 gdeath10
|
|
$frame gdeath11 gdeath12 gdeath13 gdeath14 gdeath15
|
|
$frame gdeath16 gdeath17 gdeath18 gdeath19 gdeath20
|
|
$frame gdeath21 gdeath22 gdeath23 gdeath24 gdeath25
|
|
$frame gdeath26 gdeath27 gdeath28 gdeath29 gdeath30
|
|
$frame gdeath31 gdeath32 gdeath33 gdeath34 gdeath35
|
|
$frame gdeath36 gdeath37 gdeath38 gdeath39 gdeath40
|
|
$frame gdeath41 gdeath42 gdeath43 gdeath44 gdeath45
|
|
$frame gdeath46 gdeath47 gdeath48 gdeath49 gdeath50
|
|
$frame gdeath51
|
|
|
|
// Walking
|
|
$frame gwalk1 gwalk2 gwalk3 gwalk4 gwalk5
|
|
$frame gwalk6 gwalk7 gwalk8 gwalk9 gwalk10
|
|
$frame gwalk11 gwalk12 gwalk13 gwalk14 gwalk15
|
|
$frame gwalk16 gwalk17 gwalk18 gwalk19 gwalk20
|
|
$frame gwalk21 gwalk22 gwalk23 gwalk24 gwalk25
|
|
$frame gwalk26 gwalk27 gwalk28 gwalk29 gwalk30
|
|
$frame gwalk31 gwalk32 gwalk33 gwalk34 gwalk35
|
|
$frame gwalk36 gwalk37 gwalk38 gwalk39 gwalk40
|
|
$frame gwalk41 gwalk42 gwalk43 gwalk44 gwalk45
|
|
$frame gwalk46 gwalk47 gwalk48 gwalk49 gwalk50
|
|
$frame gwalk51 gwalk52 gwalk53 gwalk54 gwalk55
|
|
$frame gwalk56 gwalk57 gwalk58 gwalk59 gwalk60
|
|
|
|
// Transition from attack stance to walking
|
|
$frame gtran1 gtran2 gtran3 gtran4 gtran5
|
|
$frame gtran6 gtran7 gtran8 gtran9 gtran10
|
|
$frame gtran11 gtran12 gtran13 gtran14 gtran15
|
|
$frame gtran16 gtran17 gtran18 gtran19 gtran20
|
|
$frame gtran21 gtran22 gtran23 gtran24 gtran25
|
|
$frame gtran26
|
|
|
|
|
|
|
|
// Gem attack
|
|
$frame ggem1 ggem2 ggem3 ggem4 ggem5
|
|
$frame ggem6 ggem7 ggem8 ggem9 ggem10
|
|
$frame ggem11 ggem12 ggem13 ggem14 ggem15
|
|
$frame ggem16 ggem17 ggem18 ggem19 ggem20
|
|
$frame ggem21 ggem22 ggem23 ggem24 ggem25
|
|
|
|
// Left hand punch attack
|
|
$frame gLpnch1 gLpnch2 gLpnch3 gLpnch4 gLpnch5
|
|
$frame gLpnch6 gLpnch7 gLpnch8 gLpnch9 gLpnch10
|
|
$frame gLpnch11 gLpnch12 gLpnch13 gLpnch14 gLpnch15
|
|
$frame gLpnch16 gLpnch17 gLpnch18 gLpnch19 gLpnch20
|
|
$frame gLpnch21 gLpnch22
|
|
|
|
// Right hand pound attack
|
|
$frame gRpnd1 gRpnd2 gRpnd3 gRpnd4 gRpnd5
|
|
$frame gRpnd6 gRpnd7 gRpnd8 gRpnd9 gRpnd10
|
|
$frame gRpnd11 gRpnd12 gRpnd13 gRpnd14 gRpnd15
|
|
$frame gRpnd16 gRpnd17 gRpnd18 gRpnd19 gRpnd20
|
|
|
|
// Stomp attack
|
|
$frame gstomp1 gstomp2 gstomp3 gstomp4 gstomp5
|
|
$frame gstomp6 gstomp7 gstomp8 gstomp9 gstomp10
|
|
$frame gstomp11 gstomp12 gstomp13 gstomp14 gstomp15
|
|
$frame gstomp16 gstomp17 gstomp18 gstomp19 gstomp20
|
|
$frame gstomp21 gstomp22 gstomp23 gstomp24 gstomp25
|
|
$frame gstomp26 gstomp27 gstomp28 gstomp29 gstomp30
|
|
|
|
void GolemBMeleeDecide(void);
|
|
void GolemBPunchLeft(void);
|
|
void GolemBPoundRight(void);
|
|
|
|
// CODE --------------------------------------------------------------------
|
|
|
|
void() golemb_gbirth1 = [ $gbirth1 , golemb_gbirth2 ] { };
|
|
void() golemb_gbirth2 = [ $gbirth2 , golemb_gbirth3 ] { };
|
|
void() golemb_gbirth3 = [ $gbirth3 , golemb_gbirth4 ] { };
|
|
void() golemb_gbirth4 = [ $gbirth4 , golemb_gbirth5 ] { };
|
|
void() golemb_gbirth5 = [ $gbirth5 , golemb_gbirth6 ] { };
|
|
void() golemb_gbirth6 = [ $gbirth6 , golemb_gbirth7 ] { };
|
|
void() golemb_gbirth7 = [ $gbirth7 , golemb_gbirth8 ] { };
|
|
void() golemb_gbirth8 = [ $gbirth8 , golemb_gbirth9 ] { };
|
|
void() golemb_gbirth9 = [ $gbirth9 , golemb_gbirth10 ] { };
|
|
void() golemb_gbirth10 = [ $gbirth10 , golemb_gbirth11 ] { };
|
|
void() golemb_gbirth11 = [ $gbirth11 , golemb_gbirth12 ] { };
|
|
void() golemb_gbirth12 = [ $gbirth12 , golemb_gbirth1 ] { };
|
|
|
|
/*
|
|
void() golemb_ggem1 = [ $ggem1 , golemb_ggem2 ] { };
|
|
void() golemb_ggem2 = [ $ggem2 , golemb_ggem3 ] { };
|
|
void() golemb_ggem3 = [ $ggem3 , golemb_ggem4 ] { };
|
|
void() golemb_ggem4 = [ $ggem4 , golemb_ggem5 ] { };
|
|
void() golemb_ggem5 = [ $ggem5 , golemb_ggem6 ] { };
|
|
void() golemb_ggem6 = [ $ggem6 , golemb_ggem7 ] { };
|
|
void() golemb_ggem7 = [ $ggem7 , golemb_ggem8 ] { };
|
|
void() golemb_ggem8 = [ $ggem8 , golemb_ggem9 ] { };
|
|
void() golemb_ggem9 = [ $ggem9 , golemb_ggem10 ] { };
|
|
void() golemb_ggem10 = [ $ggem10 , golemb_ggem11 ] { };
|
|
void() golemb_ggem11 = [ $ggem11 , golemb_ggem12 ] { };
|
|
void() golemb_ggem12 = [ $ggem12 , golemb_ggem13 ] { };
|
|
void() golemb_ggem13 = [ $ggem13 , golemb_ggem14 ] { };
|
|
void() golemb_ggem14 = [ $ggem14 , golemb_ggem15 ] { };
|
|
void() golemb_ggem15 = [ $ggem15 , golemb_ggem16 ] { };
|
|
void() golemb_ggem16 = [ $ggem16 , golemb_ggem17 ] { };
|
|
void() golemb_ggem17 = [ $ggem17 , golemb_ggem18 ] { };
|
|
void() golemb_ggem18 = [ $ggem18 , golemb_ggem19 ] { };
|
|
void() golemb_ggem19 = [ $ggem19 , golemb_ggem20 ] { };
|
|
void() golemb_ggem20 = [ $ggem20 , golemb_ggem21 ] { };
|
|
void() golemb_ggem21 = [ $ggem21 , golemb_ggem22 ] { };
|
|
void() golemb_ggem22 = [ $ggem22 , golemb_ggem23 ] { };
|
|
void() golemb_ggem23 = [ $ggem23 , golemb_ggem24 ] { };
|
|
void() golemb_ggem24 = [ $ggem24 , golemb_ggem25 ] { };
|
|
void() golemb_ggem25 = [ $ggem25 , golemb_ggem1 ] { };
|
|
*/
|
|
|
|
/*
|
|
void() golemb_gLpnch1 = [ $gLpnch1 , golemb_gLpnch2 ] { };
|
|
void() golemb_gLpnch2 = [ $gLpnch2 , golemb_gLpnch3 ] { };
|
|
void() golemb_gLpnch3 = [ $gLpnch3 , golemb_gLpnch4 ] { };
|
|
void() golemb_gLpnch4 = [ $gLpnch4 , golemb_gLpnch5 ] { };
|
|
void() golemb_gLpnch5 = [ $gLpnch5 , golemb_gLpnch6 ] { };
|
|
void() golemb_gLpnch6 = [ $gLpnch6 , golemb_gLpnch7 ] { };
|
|
void() golemb_gLpnch7 = [ $gLpnch7 , golemb_gLpnch8 ] { };
|
|
void() golemb_gLpnch8 = [ $gLpnch8 , golemb_gLpnch9 ] { };
|
|
void() golemb_gLpnch9 = [ $gLpnch9 , golemb_gLpnch10 ] { };
|
|
void() golemb_gLpnch10 = [ $gLpnch10 , golemb_gLpnch11 ] { };
|
|
void() golemb_gLpnch11 = [ $gLpnch11 , golemb_gLpnch12 ] { };
|
|
void() golemb_gLpnch12 = [ $gLpnch12 , golemb_gLpnch13 ] { };
|
|
void() golemb_gLpnch13 = [ $gLpnch13 , golemb_gLpnch14 ] { };
|
|
void() golemb_gLpnch14 = [ $gLpnch14 , golemb_gLpnch15 ] { };
|
|
void() golemb_gLpnch15 = [ $gLpnch15 , golemb_gLpnch16 ] { };
|
|
void() golemb_gLpnch16 = [ $gLpnch16 , golemb_gLpnch17 ] { };
|
|
void() golemb_gLpnch17 = [ $gLpnch17 , golemb_gLpnch18 ] { };
|
|
void() golemb_gLpnch18 = [ $gLpnch18 , golemb_gLpnch19 ] { };
|
|
void() golemb_gLpnch19 = [ $gLpnch19 , golemb_gLpnch20 ] { };
|
|
void() golemb_gLpnch20 = [ $gLpnch20 , golemb_gLpnch21 ] { };
|
|
void() golemb_gLpnch21 = [ $gLpnch21 , golemb_gLpnch22 ] { };
|
|
void() golemb_gLpnch22 = [ $gLpnch22 , golem_run_init ] { };
|
|
*/
|
|
|
|
/*
|
|
void() golemb_gRpnd1 = [ $gRpnd1 , golemb_gRpnd2 ] { };
|
|
void() golemb_gRpnd2 = [ $gRpnd2 , golemb_gRpnd3 ] { };
|
|
void() golemb_gRpnd3 = [ $gRpnd3 , golemb_gRpnd4 ] { };
|
|
void() golemb_gRpnd4 = [ $gRpnd4 , golemb_gRpnd5 ] { };
|
|
void() golemb_gRpnd5 = [ $gRpnd5 , golemb_gRpnd6 ] { };
|
|
void() golemb_gRpnd6 = [ $gRpnd6 , golemb_gRpnd7 ] { };
|
|
void() golemb_gRpnd7 = [ $gRpnd7 , golemb_gRpnd8 ] { };
|
|
void() golemb_gRpnd8 = [ $gRpnd8 , golemb_gRpnd9 ] { };
|
|
void() golemb_gRpnd9 = [ $gRpnd9 , golemb_gRpnd10 ] { };
|
|
void() golemb_gRpnd10 = [ $gRpnd10 , golemb_gRpnd11 ] { };
|
|
void() golemb_gRpnd11 = [ $gRpnd11 , golemb_gRpnd12 ] { };
|
|
void() golemb_gRpnd12 = [ $gRpnd12 , golemb_gRpnd13 ] { };
|
|
void() golemb_gRpnd13 = [ $gRpnd13 , golemb_gRpnd14 ] { };
|
|
void() golemb_gRpnd14 = [ $gRpnd14 , golemb_gRpnd15 ] { };
|
|
void() golemb_gRpnd15 = [ $gRpnd15 , golemb_gRpnd16 ] { };
|
|
void() golemb_gRpnd16 = [ $gRpnd16 , golemb_gRpnd17 ] { };
|
|
void() golemb_gRpnd17 = [ $gRpnd17 , golemb_gRpnd18 ] { };
|
|
void() golemb_gRpnd18 = [ $gRpnd18 , golemb_gRpnd19 ] { };
|
|
void() golemb_gRpnd19 = [ $gRpnd19 , golemb_gRpnd20 ] { };
|
|
void() golemb_gRpnd20 = [ $gRpnd20 , golem_run_init ] { };
|
|
*/
|
|
|
|
/*
|
|
void() golemb_gstomp1 = [ $gstomp1 , golemb_gstomp2 ] { };
|
|
void() golemb_gstomp2 = [ $gstomp2 , golemb_gstomp3 ] { };
|
|
void() golemb_gstomp3 = [ $gstomp3 , golemb_gstomp4 ] { };
|
|
void() golemb_gstomp4 = [ $gstomp4 , golemb_gstomp5 ] { };
|
|
void() golemb_gstomp5 = [ $gstomp5 , golemb_gstomp6 ] { };
|
|
void() golemb_gstomp6 = [ $gstomp6 , golemb_gstomp7 ] { };
|
|
void() golemb_gstomp7 = [ $gstomp7 , golemb_gstomp8 ] { };
|
|
void() golemb_gstomp8 = [ $gstomp8 , golemb_gstomp9 ] { };
|
|
void() golemb_gstomp9 = [ $gstomp9 , golemb_gstomp10 ] { };
|
|
void() golemb_gstomp10 = [ $gstomp10 , golemb_gstomp11 ] { };
|
|
void() golemb_gstomp11 = [ $gstomp11 , golemb_gstomp12 ] { };
|
|
void() golemb_gstomp12 = [ $gstomp12 , golemb_gstomp13 ] { };
|
|
void() golemb_gstomp13 = [ $gstomp13 , golemb_gstomp14 ] { };
|
|
void() golemb_gstomp14 = [ $gstomp14 , golemb_gstomp15 ] { };
|
|
void() golemb_gstomp15 = [ $gstomp15 , golemb_gstomp16 ] { };
|
|
void() golemb_gstomp16 = [ $gstomp16 , golemb_gstomp17 ] { };
|
|
void() golemb_gstomp17 = [ $gstomp17 , golemb_gstomp18 ] { };
|
|
void() golemb_gstomp18 = [ $gstomp18 , golemb_gstomp19 ] { };
|
|
void() golemb_gstomp19 = [ $gstomp19 , golemb_gstomp20 ] { };
|
|
void() golemb_gstomp20 = [ $gstomp20 , golemb_gstomp21 ] { };
|
|
void() golemb_gstomp21 = [ $gstomp21 , golemb_gstomp22 ] { };
|
|
void() golemb_gstomp22 = [ $gstomp22 , golemb_gstomp23 ] { };
|
|
void() golemb_gstomp23 = [ $gstomp23 , golemb_gstomp24 ] { };
|
|
void() golemb_gstomp24 = [ $gstomp24 , golemb_gstomp25 ] { };
|
|
void() golemb_gstomp25 = [ $gstomp25 , golemb_gstomp26 ] { };
|
|
void() golemb_gstomp26 = [ $gstomp26 , golemb_gstomp27 ] { };
|
|
void() golemb_gstomp27 = [ $gstomp27 , golemb_gstomp28 ] { };
|
|
void() golemb_gstomp28 = [ $gstomp28 , golemb_gstomp29 ] { };
|
|
void() golemb_gstomp29 = [ $gstomp29 , golemb_gstomp30 ] { };
|
|
void() golemb_gstomp30 = [ $gstomp30 , golemb_gstomp1 ] { };
|
|
*/
|
|
|
|
/*
|
|
void() golemb_gtran1 = [ $gtran1 , golemb_gtran2 ] { };
|
|
void() golemb_gtran2 = [ $gtran2 , golemb_gtran3 ] { };
|
|
void() golemb_gtran3 = [ $gtran3 , golemb_gtran4 ] { };
|
|
void() golemb_gtran4 = [ $gtran4 , golemb_gtran5 ] { };
|
|
void() golemb_gtran5 = [ $gtran5 , golemb_gtran6 ] { };
|
|
void() golemb_gtran6 = [ $gtran6 , golemb_gtran7 ] { };
|
|
void() golemb_gtran7 = [ $gtran7 , golemb_gtran8 ] { };
|
|
void() golemb_gtran8 = [ $gtran8 , golemb_gtran9 ] { };
|
|
void() golemb_gtran9 = [ $gtran9 , golemb_gtran10 ] { };
|
|
void() golemb_gtran10 = [ $gtran10 , golemb_gtran11 ] { };
|
|
void() golemb_gtran11 = [ $gtran11 , golemb_gtran12 ] { };
|
|
void() golemb_gtran12 = [ $gtran12 , golemb_gtran13 ] { };
|
|
void() golemb_gtran13 = [ $gtran13 , golemb_gtran14 ] { };
|
|
void() golemb_gtran14 = [ $gtran14 , golemb_gtran15 ] { };
|
|
void() golemb_gtran15 = [ $gtran15 , golemb_gtran16 ] { };
|
|
void() golemb_gtran16 = [ $gtran16 , golemb_gtran17 ] { };
|
|
void() golemb_gtran17 = [ $gtran17 , golemb_gtran18 ] { };
|
|
void() golemb_gtran18 = [ $gtran18 , golemb_gtran19 ] { };
|
|
void() golemb_gtran19 = [ $gtran19 , golemb_gtran20 ] { };
|
|
void() golemb_gtran20 = [ $gtran20 , golemb_gtran21 ] { };
|
|
void() golemb_gtran21 = [ $gtran21 , golemb_gtran22 ] { };
|
|
void() golemb_gtran22 = [ $gtran22 , golemb_gtran23 ] { };
|
|
void() golemb_gtran23 = [ $gtran23 , golemb_gtran24 ] { };
|
|
void() golemb_gtran24 = [ $gtran24 , golemb_gtran25 ] { };
|
|
void() golemb_gtran25 = [ $gtran25 , golemb_gtran26 ] { };
|
|
void() golemb_gtran26 = [ $gtran26 , golemb_gtran1 ] { };
|
|
*/
|
|
|
|
void() golemb_gstand1 = [ $gbirth1, golemb_gstand1 ] { ai_stand(); };
|
|
|
|
//==========================================================================
|
|
//
|
|
// GolemBMeleeDecide
|
|
//
|
|
//==========================================================================
|
|
|
|
void GolemBMeleeDecide(void)
|
|
{
|
|
if(random() > 0.5)
|
|
{
|
|
GolemBPunchLeft();
|
|
}
|
|
else
|
|
{
|
|
GolemBPoundRight();
|
|
}
|
|
}
|
|
|
|
//==========================================================================
|
|
//
|
|
// GolemBPunchLeft
|
|
//
|
|
//==========================================================================
|
|
|
|
void GolemBPunchLeft(void) [++ $glpnch1..$glpnch22]
|
|
{
|
|
if(cycle_wrapped)
|
|
{
|
|
golem_run_init();
|
|
return;
|
|
}
|
|
if(self.frame == $glpnch8)
|
|
{
|
|
sound(self, CHAN_BODY, "golem/swing.wav", 1, ATTN_NORM);
|
|
}
|
|
if(self.frame > $glpnch9 && self.frame < $glpnch18)
|
|
{
|
|
ai_charge(2);
|
|
ai_melee();
|
|
}
|
|
ai_face();
|
|
}
|
|
|
|
//==========================================================================
|
|
//
|
|
// GolemBPoundRight
|
|
//
|
|
//==========================================================================
|
|
|
|
void GolemBPoundRight(void) [++ $grpnd1..$grpnd20]
|
|
{
|
|
if(cycle_wrapped)
|
|
{
|
|
golem_run_init();
|
|
return;
|
|
}
|
|
if(self.frame == $grpnd8)
|
|
{
|
|
sound(self, CHAN_BODY, "golem/swing.wav", 1, ATTN_NORM);
|
|
}
|
|
if(self.frame > $grpnd11 && self.frame < $grpnd17)
|
|
{
|
|
ai_charge(2);
|
|
ai_melee();
|
|
}
|
|
ai_face();
|
|
}
|
|
|
|
//==========================================================================
|
|
//
|
|
// golemb_pain
|
|
//
|
|
//==========================================================================
|
|
|
|
void golemb_pain(void)
|
|
{
|
|
if(self.pain_finished > time)
|
|
{
|
|
return;
|
|
}
|
|
if(golem_flinch($gwalk1, $gwalk60)) return;
|
|
if(golem_flinch($ggem1, $ggem25)) return;
|
|
if(golem_flinch($gLpnch1, $gLpnch22)) return;
|
|
if(golem_flinch($gRpnd1, $gRpnd20)) return;
|
|
golem_flinch($gstomp1, $gstomp30);
|
|
}
|
|
|
|
//==========================================================================
|
|
//
|
|
// monster_golem_bronze
|
|
//
|
|
//==========================================================================
|
|
/*QUAKED monster_golem_bronze (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH
|
|
Bronze Golem.
|
|
------- key / value ----------------------------
|
|
health = 500
|
|
experience_value = 275
|
|
------- spawnflags -----------------------------
|
|
AMBUSH
|
|
*/
|
|
|
|
void monster_golem_bronze(void)
|
|
{
|
|
if(deathmatch)
|
|
{
|
|
remove(self);
|
|
return;
|
|
}
|
|
|
|
precache_model2("models/golem_b.mdl");
|
|
// precache_model2("models/h_golem.mdl"); // empty for now
|
|
|
|
precache_sound2("golem/step.wav");
|
|
precache_sound2("golem/swing.wav");
|
|
precache_sound2("golem/mtlfall.wav");
|
|
precache_sound2("golem/stomp.wav");
|
|
|
|
self.solid = SOLID_SLIDEBOX;
|
|
self.movetype = MOVETYPE_STEP;
|
|
self.thingtype = THINGTYPE_METAL;
|
|
self.yaw_speed = 10;
|
|
self.mass = 50;
|
|
self.mintel = 2;
|
|
|
|
setmodel(self, "models/golem_b.mdl");
|
|
|
|
setsize(self, '-20 -20 0', '20 20 80');
|
|
|
|
self.health = 500;
|
|
self.experience_value = 275;
|
|
|
|
self.th_stand = golemb_gstand1;
|
|
self.th_walk = golem_walk;
|
|
self.th_run = golem_run_init;
|
|
self.th_die = golem_die_init;
|
|
self.th_melee = GolemBMeleeDecide;
|
|
self.th_pain = golemb_pain;
|
|
self.view_ofs = '0 0 64';
|
|
|
|
walkmonster_start();
|
|
}
|