hexen2/H2MP/hcode/ph_eido.hc
2000-11-10 00:00:00 +00:00

179 lines
6 KiB
C++

/*
* $Header: /H2 Mission Pack/HCode/ph_eido.hc 10 3/11/98 6:20p Mgummelt $
*/
/*
==============================================================================
Q:\art\models\Eidolon\ph_eido.hc
==============================================================================
*/
// For building the model
$cd Q:\art\models\Eidolon
$origin 0 0 0
$base BASE SKIN
$skin SKIN
$flags 0
//
$frame death1 death2 death3 death4 death5
$frame death6 death7 death8 death9 death10
$frame death11 death12 death13 death14 death15
$frame death16 death17 death18 death19 death20
$frame death21 death22 death23 death24 death25
$frame death26 death27 death28 death29 death30
$frame death31 death32 death33 death34 death35
$frame death36 death37 death38 death39 death40
$frame death41 death42 death43 death44 death45
$frame death46 death47 death48 death49 death50
$frame death51 death52 death53 death54 death55
$frame death56 death57 death58 death59 death60
$frame death61 death62 death63 death64 death65
$frame death66 death67 death68 death69 death70
$frame death71 death72 death73 death74 death75
$frame death76 death77 death78 death79 death80
$frame death81 death82 death83 death84 death85
$frame death86 death87 death88 death89 death90
$frame death91 death92 death93 death94 death95
$frame death96 death97 death98 death99 death100
$frame death101 death102 death103 death104 death105
//
$frame howl1 howl2 howl3 howl4 howl5
$frame howl6 howl7 howl8 howl9 howl10
$frame howl11 howl12 howl13 howl14 howl15
$frame howl16 howl17 howl18 howl19 howl20
$frame howl21 howl22 howl23 howl24 howl25
$frame howl26 howl27 howl28 howl29 howl30
$frame howl31 howl32 howl33 howl34 howl35
$frame howl36 howl37 howl38 howl39 howl40
$frame howl41 howl42 howl43 howl44 howl45
$frame howl46 howl47 howl48 howl49 howl50
$frame howl51 howl52 howl53 howl54 howl55
$frame howl56 howl57 howl58 howl59 howl60
//
$frame painA1 painA2 painA3 painA4 painA5
$frame painA6 painA7 painA8 painA9
//
$frame wait1 wait2 wait3 wait4 wait5
$frame wait6 wait7 wait8 wait9 wait10
$frame wait11 wait12 wait13 wait14 wait15
$frame wait16
//==================================================================
void()ph_eidolon_pain;
void ph_eidolon_wait () [++ $wait1 .. $wait16]
{
}
void ph_eidolon_roar () [++ $howl1 .. $howl60]
{
if(self.frame==$howl60)
{
self.th_pain = ph_eidolon_pain;
self.think=self.th_stand;
self.use=self.th_die;
}
thinktime self : 0.1;
}
void ph_eidolon_ready_roar()
{
self.th_pain=SUB_Null;
sound(self,CHAN_VOICE,"eidolon/roar.wav",1,ATTN_NONE);
self.frame=$howl1;
self.think=ph_eidolon_roar;
thinktime self : 0;
}
void ph_eidolon_pain () [++ $painA1 .. $painA9]
{
if(random()<0.95)
return;
self.health = self.max_health=100000000;
if(self.frame==$painA1)
sound(self,CHAN_VOICE,"eidolon/pain.wav",1,ATTN_NONE);
else if(self.frame==$painA9)
self.think=self.th_stand;
}
void ph_eidolon_die () [++ $death1 .. $death105]
{//FIXME: death frames, thud when hit ground
if(self.frame>=$death1)
self.th_pain=SUB_Null;
if(self.frame==$death85)
setsize(self,'-24 -24 0','24 24 64');
if(self.frame==$death8)
sound(self,CHAN_AUTO,"eidolon/death.wav",1,ATTN_NONE);
else if(self.frame==$death19
||self.frame==$death26
||self.frame==$death40
||self.frame==$death50
||self.frame==$death61
||self.frame==$death78
||self.frame==$death90
||self.frame==$death100
||self.frame==$death105)
sound(self,CHAN_BODY,"eidolon/stomp.wav",1,ATTN_NONE);
else if(self.frame==$death95)
MonsterQuake(500);
if(self.frame==$death105)
self.nextthink=-1;
else
thinktime self : 0.1;
}
/*QUAKED monster_eidolon_weakling (1 0 0) (-100 -100 0) (100 100 666)
Not quite the big bad ugly boss guy
1st use- howl
2nd use - long dramatic death!
-------------------------FIELDS-------------------------
--------------------------------------------------------
*/
void monster_eidolon_weakling(void)
{
precache_model4 ("models/ph_eido.mdl");
precache_sound4 ("eidolon/roar.wav");
precache_sound4 ("eidolon/death.wav"); //Dies- long and agonizing
precache_sound4 ("eidolon/stomp.wav"); //Hot-steppin'
precache_sound4 ("eidolon/pain.wav"); //Hurt
self.solid = SOLID_SLIDEBOX;
self.movetype = MOVETYPE_STEP;
self.takedamage=DAMAGE_YES;
self.monsterclass=CLASS_FINAL_BOSS;
self.flags(+)FL_MONSTER;
self.flags2(+)FL_ALIVE;
self.thingtype=THINGTYPE_FLESH;
setmodel (self, "models/ph_eido.mdl");
self.scale=2.5;
self.skin = 0;
setsize (self, '-16 -16 0'*1.3333333*self.scale, '16 16 384'*1.3333333*self.scale);
self.mass=2000*1.34*self.scale;
self.hull=HULL_POINT;
self.proj_ofs=self.view_ofs='0 0 200';
self.frame=$howl1;
self.use=ph_eidolon_ready_roar;
self.hull=HULL_GOLEM;
self.health = self.max_health=100000000;
self.yaw_speed = 10;
self.th_stand = ph_eidolon_wait;
self.th_die = ph_eidolon_die;
self.th_pain = ph_eidolon_pain;
self.drawflags (+) SCALE_ORIGIN_BOTTOM;
self.touch=SUB_Null;
}