Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ==============================================================================
- OGRE
- This includes the four basic weapon variants - Nail, Rocket, Grenade and
- Double Chainsaw. The Elder Ogre is the XOgre and held in that qc file.
- ==============================================================================
- */
- $cd id1/models/ogre_c
- $origin 0 0 24
- $base base
- $skin base
- $frame stand1 stand2 stand3 stand4 stand5 stand6 stand7 stand8 stand9
- $frame walk1 walk2 walk3 walk4 walk5 walk6 walk7
- $frame walk8 walk9 walk10 walk11 walk12 walk13 walk14 walk15 walk16
- $frame run1 run2 run3 run4 run5 run6 run7 run8
- $frame swing1 swing2 swing3 swing4 swing5 swing6 swing7
- $frame swing8 swing9 swing10 swing11 swing12 swing13 swing14
- $frame smash1 smash2 smash3 smash4 smash5 smash6 smash7
- $frame smash8 smash9 smash10 smash11 smash12 smash13 smash14
- $frame shoot1 shoot2 shoot3 shoot4 shoot5 shoot6
- $frame pain1 pain2 pain3 pain4 pain5
- $frame painb1 painb2 painb3
- $frame painc1 painc2 painc3 painc4 painc5 painc6
- $frame paind1 paind2 paind3 paind4 paind5 paind6 paind7 paind8 paind9 paind10
- $frame paind11 paind12 paind13 paind14 paind15 paind16
- $frame paine1 paine2 paine3 paine4 paine5 paine6 paine7 paine8 paine9 paine10
- $frame paine11 paine12 paine13 paine14 paine15
- $frame death1 death2 death3 death4 death5 death6
- $frame death7 death8 death9 death10 death11 death12
- $frame death13 death14
- $frame bdeath1 bdeath2 bdeath3 bdeath4 bdeath5 bdeath6
- $frame bdeath7 bdeath8 bdeath9 bdeath10
- $frame pull1 pull2 pull3 pull4 pull5 pull6 pull7 pull8 pull9 pull10 pull11
- // CUSTENTS fire while running frames
- // (c) Carl Glave 1997
- $frame runfire1 runfire2 runfire3 runfire4
- $frame runfire5 runfire6 runfire7 runfire8
- $framevalue 0 // FTEQCC
- // ogreb DUAL CHAINSAWS
- $frame ogbstand1 ogbstand2 ogbstand3 ogbstand4 ogbstand5 ogbstand6 ogbstand7 ogbstand8 ogbstand9
- $frame ogbwalk1 ogbwalk2 ogbwalk3 ogbwalk4 ogbwalk5 ogbwalk6 ogbwalk7
- $frame ogbwalk8 ogbwalk9 ogbwalk10 ogbwalk11 ogbwalk12 ogbwalk13 ogbwalk14 ogbwalk15 ogbwalk16
- $frame ogbrun1 ogbrun2 ogbrun3 ogbrun4 ogbrun5 ogbrun6 ogbrun7 ogbrun8
- $frame ogbswing1 ogbswing2 ogbswing3 ogbswing4 ogbswing5 ogbswing6 ogbswing7
- $frame ogbswing8 ogbswing9 ogbswing10 ogbswing11 ogbswing12 ogbswing13 ogbswing14
- $frame ogbsmash1 ogbsmash2 ogbsmash3 ogbsmash4 ogbsmash5 ogbsmash6 ogbsmash7
- $frame ogbsmash8 ogbsmash9 ogbsmash10 ogbsmash11 ogbsmash12 ogbsmash13 ogbsmash14
- $frame ogbtaunt1 ogbtaunt2 ogbtaunt3
- $frame ogbpain1 ogbpain2 ogbpain3 ogbpain4 ogbpain5
- $frame ogbdeath1 ogbdeath2 ogbdeath3 ogbdeath4 ogbdeath5 ogbdeath6
- $frame ogbdeath7 ogbdeath8 ogbdeath9 ogbdeath10 ogbdeath11 ogbdeath12
- $frame ogbdeath13 ogbdeath14 ogbdeath15 ogbdeath16 ogbdeath17
- $frame ogbdeath18 ogbdeath19 ogbdeath20 ogbdeath21
- $frame ogbbdeath1 ogbbdeath2 ogbbdeath3 ogbbdeath4 ogbbdeath5 ogbbdeath6
- $frame ogbbdeath7 ogbbdeath8 ogbbdeath9 ogbbdeath10
- $frame ogbcdeath1 ogbcdeath2 ogbcdeath3 ogbcdeath4 ogbcdeath5 ogbcdeath6
- $frame ogbcdeath7 ogbcdeath8 ogbcdeath9 ogbcdeath10 ogbcdeath11 ogbcdeath12
- $frame ogbcdeath13 ogbcdeath14
- $framevalue 0
- //ogrer ROCKETS
- $frame standr1 standr2 standr3 standr4 standr5 standr6 standr7 standr8 standr9
- $frame walkr1 walkr2 walkr3 walkr4 walkr5 walkr6 walkr7
- $frame walkr8 walkr9 walkr10 walkr11 walkr12 walkr13 walkr14 walkr15 walkr16
- $frame runr1 runr2 runr3 runr4 runr5 runr6 runr7 runr8
- $frame bayonet1 bayonet2 bayonet3 bayonet4 bayonet5 bayonet6 bayonet7
- $frame shootr1 shootr2 shootr3 shootr4 shootr5 shootr6
- $frame painr1 painr2 painr3 painr4 painr5
- $frame painbr1 painbr2 painbr3
- $frame paincr1 paincr2 paincr3 paincr4 paincr5 paincr6
- $frame paindr1 paindr2 paindr3 paindr4 paindr5 paindr6 paindr7 paindr8 paindr9 paindr10
- $frame paindr11 paindr12 paindr13 paindr14 paindr15 paindr16
- $frame painer1 painer2 painer3 painer4 painer5 painer6 painer7 painer8 painer9 painer10
- $frame painer11 painer12 painer13 painer14 painer15
- $frame deathr1 deathr2 deathr3 deathr4 deathr5 deathr6
- $frame deathr7 deathr8 deathr9 deathr10 deathr11 deathr12
- $frame deathr13 deathr14
- $frame bdeathr1 bdeathr2 bdeathr3 bdeathr4 bdeathr5 bdeathr6
- $frame bdeathr7 bdeathr8 bdeathr9 bdeathr10
- //=============================================================================
- //float NAIL_OGRE = 4; ijed All gone to defs
- //float BERSERK_OGRE = 8; // if change, remember ai.qc
- //float ROCKET_OGRE = 16;
- //=============================================================================
- // footsteps, gb
- void() ogstep =
- {
- if ((self.flags & FL_ONGROUND) /*&& (self.h2olevel == 0)*/ /*&& (self.velocity != '0 0 0')*/)
- {
- if (self.h2olevel > 1) // not when submerged
- return;
- local float r;
- // wading in water?
- if (self.h2olevel > 0)
- {
- r = rint(random() * 3);
- if (r == 1)
- sound (self, CHAN_AUTO, "misc/waterstep1.wav", 0.7, ATTN_NORM);
- else if (r == 2)
- sound (self, CHAN_AUTO, "misc/waterstep2.wav", 0.7, ATTN_NORM);
- else if (r == 0)
- sound (self, CHAN_AUTO, "misc/waterstep3.wav", 0.7, ATTN_NORM);
- else
- sound (self, CHAN_AUTO, "misc/waterstep4.wav", 0.7, ATTN_NORM);
- }
- // out of water?
- else
- {
- r = rint(random() * 7);
- if (r == 1)
- sound (self, CHAN_AUTO, "ogre/ogstep1.wav", 0.7, ATTN_NORM);
- else if (r == 2)
- sound (self, CHAN_AUTO, "ogre/ogstep2.wav", 0.7, ATTN_NORM);
- else if (r == 3)
- sound (self, CHAN_AUTO, "ogre/ogstep3.wav", 0.7, ATTN_NORM);
- else if (r == 4)
- sound (self, CHAN_AUTO, "ogre/ogstep4.wav", 0.7, ATTN_NORM);
- else if (r == 5)
- sound (self, CHAN_AUTO, "ogre/ogstep5.wav", 0.7, ATTN_NORM);
- else if (r == 6)
- sound (self, CHAN_AUTO, "ogre/ogstep6.wav", 0.7, ATTN_NORM);
- else if (r == 0)
- sound (self, CHAN_AUTO, "ogre/ogstep7.wav", 0.7, ATTN_NORM);
- else
- sound (self, CHAN_AUTO, "ogre/ogstep8.wav", 0.7, ATTN_NORM);
- }
- }
- };
- /*
- ================
- OgreSpike
- ================
- */
- void() ogrespike_touch =
- {
- if (other == self.real_owner)
- {
- self.force_velocity = self.velocity; // record velocity at time of impact
- self.owner = other; // to allow it to pass through
- self.think = reset_velocity; // since the server is going to mangle our velocity after .touch is finished we need to reset it manually
- self.nextthink = time; // next frame
- return;
- }
- if (other.classname == "phys_obj") // Supa, Prevent bot collision ent test entities from colliding with projectiles
- return;
- if (other.solid == SOLID_TRIGGER)
- return; // trigger field, do nothing
- if (other.classname == "func_breakaway" )
- if (other.spawnflags & PIERCEABLE ) // can projectiles pass through this breakable?
- {
- T_Damage (other, self, self.real_owner, other.health, DTH_OGRE_NAIL, FALSE, 1); // smash the breakable
- self.force_velocity = self.velocity; // record velocity at time of impact
- self.owner = other; // to allow it to pass through
- self.think = reset_velocity; // since the server is going to mangle our velocity after .touch is finished we need to reset it manually
- self.nextthink = time; // next frame
- return;
- }
- if (pointcontents(self.origin) == CONTENT_SKY)
- {
- remove(self);
- return;
- }
- // hit something that bleeds
- if (other.takedamage)
- {
- spawn_touchblood (9, other.nobleed);
- T_Damage (other, self, self.real_owner, 9, DTH_OGRE_NAIL, FALSE, 1);
- remove(self);
- }
- else if (other == world) // oh, duh
- { // hit BSP? remove after 1s
- setorigin(self, self.origin - 4 * normalize(self.velocity));
- self.touch = SUB_Null;
- self.velocity = '0 0 0';
- self.think = SUB_Remove;
- self.nextthink = time + 1;
- }
- else remove(self);
- };
- void() OgreSpike = //ijed Fires an ogre's spikes in a spray at the player
- {
- local vector dir;
- local vector sdir;
- local vector org;
- local vector enemyorg;
- local entity old;
- local float firedelay;
- local float spikes;
- // gb, submerged?
- if (self.h2olevel >= 3)
- {
- if (random() < 0.4)
- {
- sound (self, CHAN_WEAPON, "weapons/fail.wav", 1, ATTN_NORM);
- return;
- }
- }
- self.effects = (self.effects | EF_MUZZLEFLASH);
- sound (self, CHAN_WEAPON, "ogre/flak.wav", 1, ATTN_NORM);
- firedelay = (random() + 2 - skill);
- self.attack_finished = (time + firedelay); //ijed Skill dependant delay between shots
- // dir = normalize (self.enemy.origin - self.origin);
- // Supa, take breakables into account
- if (self.enemy.solid == SOLID_BSP) enemyorg = (self.enemy.absmin + self.enemy.absmax) * 0.5;
- else enemyorg = self.enemy.origin;
- do // Supa, Launch a spread of 4 ogrespikes..
- {
- // launch_spike (self.origin + '0 0 16', dir + v_up*(crandom()*25) + v_right*(crandom()*25));
- dir = enemyorg + RandomOffset(25);
- dir = normalize (dir - self.origin);
- launch_spike (self.origin + '0 0 16', dir);
- newmis.touch = ogrespike_touch;
- setmodel (newmis, "progs/s_spike.mdl");
- setsize (newmis, VEC_ORIGIN, VEC_ORIGIN);
- spikes = spikes + 1;
- }
- while (spikes < 4);
- // Skill dependant speed
- if (skill > 2) newmis.velocity = dir * 1000;
- else if (skill > 1) newmis.velocity = dir * 900;
- else newmis.velocity = dir * 800;
- };
- /*
- ================
- Chainsaw
- ================
- */
- void(float side) chainsaw =
- {
- local vector delta, enemyorg;
- local float ldmg;
- if (!self.enemy)
- return;
- if (!CanDamage (self.enemy, self))
- return;
- ai_charge(10);
- // Supa, take breakables into account
- if (self.enemy.solid == SOLID_BSP) enemyorg = (self.enemy.absmin + self.enemy.absmax) * 0.5;
- else enemyorg = self.enemy.origin;
- delta = enemyorg - self.origin;
- // DRAGONS /- - - -
- // if (vlen(delta) > 100)
- if (!InMeleeRange (100)) // Needed for fat dragons.
- return;
- //- - - - - - - - -
- if (self.enemy.classname == "monster_zombie") // Supa, Ogre saw instagibs Zombies
- ldmg = 100;
- else
- ldmg = (random() + random() + random()) * 4; //ijed reverted to 4 damage
- //Berserks have the same base damage, but are in a hitting state for longer
- T_Damage (self.enemy, self, self, ldmg, DTH_OGRE_SAW, FALSE, 1.5);
- if (side)
- {
- makevectors (self.angles);
- if (side == 1)
- SpawnMeatSpray (self.origin + v_forward*16, crandom() * 100 * v_right);
- else
- SpawnMeatSpray (self.origin + v_forward*16, side * v_right);
- }
- };
- /*=============================================================================
- Idle Behaviours
- =============================================================================*/
- void() ogre_talk = //I Is aN OgRe I Is
- {
- local float r;
- r = random();
- if (r < 0.2)
- sound (self, CHAN_VOICE, "ogre/ogtalk1.wav", 1, ATTN_NORM);
- else if (r < 0.4)
- sound (self, CHAN_VOICE, "ogre/ogtalk2.wav", 1, ATTN_NORM);
- else if (r < 0.6)
- sound (self, CHAN_VOICE, "ogre/ogtalk3.wav", 1, ATTN_NORM);
- else if (r < 0.8)
- sound (self, CHAN_VOICE, "ogre/ogtalk4.wav", 1, ATTN_NORM);
- else
- sound (self, CHAN_VOICE, "ogre/ogpain5.wav", 1, ATTN_NORM);
- };
- void() ogre_idle_sound =
- {
- local float r;
- if (self.spawnflags & 1) // gb, it's no surprise if it goes "GRR"; FIXME: add this to other monsters
- return;
- r = random();
- if (r < 0.5)
- sound (self, CHAN_VOICE, "ogre/ogidle1.wav", 1, ATTN_NORM);
- else
- sound (self, CHAN_VOICE, "ogre/ogidle2.wav", 1, ATTN_NORM);
- };
- // Nail / Grenade stand
- void() ogre_stand1 =[ $stand1, ogre_stand2 ] {ai_stand();};
- void() ogre_stand2 =[ $stand2, ogre_stand3 ] {ai_stand();};
- void() ogre_stand3 =[ $stand3, ogre_stand4 ] {ai_stand();};
- void() ogre_stand4 =[ $stand4, ogre_stand5 ] {ai_stand();};
- void() ogre_stand5 =[ $stand5, ogre_stand6 ] {
- if (random() < 0.2)
- ogre_idle_sound();
- ai_stand();
- };
- void() ogre_stand6 =[ $stand6, ogre_stand7 ] {ai_stand();};
- void() ogre_stand7 =[ $stand7, ogre_stand8 ] {ai_stand();};
- void() ogre_stand8 =[ $stand8, ogre_stand9 ] {ai_stand();};
- void() ogre_stand9 =[ $stand9, ogre_stand1 ] {ai_stand();};
- // Berserk Stand
- void() ogreb_stand1 =[ $ogbstand1, ogreb_stand2 ] {ai_stand();};
- void() ogreb_stand2 =[ $ogbstand2, ogreb_stand3 ] {ai_stand();};
- void() ogreb_stand3 =[ $ogbstand3, ogreb_stand4 ] {ai_stand();};
- void() ogreb_stand4 =[ $ogbstand4, ogreb_stand5 ] {ai_stand();};
- void() ogreb_stand5 =[ $ogbstand5, ogreb_stand6 ] {
- if (random() < 0.2)
- ogre_idle_sound();
- ai_stand();
- };
- void() ogreb_stand6 =[ $ogbstand6, ogreb_stand7 ] {ai_stand();};
- void() ogreb_stand7 =[ $ogbstand7, ogreb_stand8 ] {ai_stand();};
- void() ogreb_stand8 =[ $ogbstand8, ogreb_stand9 ] {ai_stand();};
- void() ogreb_stand9 =[ $ogbstand9, ogreb_stand1 ] {ai_stand();};
- // Rocket stand
- void() ogrer_stand1 =[ $standr1, ogrer_stand2 ] {ai_stand();};
- void() ogrer_stand2 =[ $standr2, ogrer_stand3 ] {ai_stand();};
- void() ogrer_stand3 =[ $standr3, ogrer_stand4 ] {ai_stand();};
- void() ogrer_stand4 =[ $standr4, ogrer_stand5 ] {ai_stand();};
- void() ogrer_stand5 =[ $standr5, ogrer_stand6 ] {
- if (random() < 0.2)
- ogre_idle_sound();
- ai_stand();
- };
- void() ogrer_stand6 =[ $standr6, ogrer_stand7 ] {ai_stand();};
- void() ogrer_stand7 =[ $standr7, ogrer_stand8 ] {ai_stand();};
- void() ogrer_stand8 =[ $standr8, ogrer_stand9 ] {ai_stand();};
- void() ogrer_stand9 =[ $standr9, ogrer_stand1 ] {ai_stand();};
- // ======================== WALK ===============================
- // Grenade / Nail Walk
- void() ogre_walk1 =[ $walk1, ogre_walk2 ] {ogstep();ai_walk(3);};
- void() ogre_walk2 =[ $walk2, ogre_walk3 ] {ai_walk(2);};
- void() ogre_walk3 =[ $walk3, ogre_walk4 ] {
- ai_walk(2);
- if (random() < 0.2)
- ogre_idle_sound();
- };
- void() ogre_walk4 =[ $walk4, ogre_walk5 ] {ai_walk(2);};
- void() ogre_walk5 =[ $walk5, ogre_walk6 ] {ai_walk(2);};
- void() ogre_walk6 =[ $walk6, ogre_walk7 ] {
- ai_walk(5);
- if (random() < 0.1)
- sound (self, CHAN_VOICE, "ogre/ogdrag.wav", 1, ATTN_IDLE);
- };
- void() ogre_walk7 =[ $walk7, ogre_walk8 ] {ai_walk(3);};
- void() ogre_walk8 =[ $walk8, ogre_walk9 ] {ai_walk(2);};
- void() ogre_walk9 =[ $walk9, ogre_walk10 ] {ai_walk(3);};
- void() ogre_walk10 =[ $walk10, ogre_walk11 ] {ogstep();ai_walk(1);};
- void() ogre_walk11 =[ $walk11, ogre_walk12 ] {ai_walk(2);};
- void() ogre_walk12 =[ $walk12, ogre_walk13 ] {ai_walk(3);};
- void() ogre_walk13 =[ $walk13, ogre_walk14 ] {
- if (random() < 0.1)
- ogre_talk();
- ai_stand();
- };
- void() ogre_walk14 =[ $walk14, ogre_walk15 ] {ai_walk(3);};
- void() ogre_walk15 =[ $walk15, ogre_walk16 ] {ai_walk(3);};
- void() ogre_walk16 =[ $walk16, ogre_walk1 ] {ai_walk(4);};
- // Berserk Walk
- void() ogreb_walk1 =[ $ogbwalk1, ogreb_walk2 ] {ogstep();ai_walk(3);};
- void() ogreb_walk2 =[ $ogbwalk2, ogreb_walk3 ] {ai_walk(2);};
- void() ogreb_walk3 =[ $ogbwalk3, ogreb_walk4 ] {
- ai_walk(2);
- if (random() < 0.2)
- ogre_idle_sound();
- };
- void() ogreb_walk4 =[ $ogbwalk4, ogreb_walk5 ] {ai_walk(2);};
- void() ogreb_walk5 =[ $ogbwalk5, ogreb_walk6 ] {ai_walk(2);};
- void() ogreb_walk6 =[ $ogbwalk6, ogreb_walk7 ] {
- ai_walk(5);
- if (random() < 0.1)
- sound (self, CHAN_VOICE, "ogre/ogdrag.wav", 1, ATTN_IDLE);
- };
- void() ogreb_walk7 =[ $ogbwalk7, ogreb_walk8 ] {ai_walk(3);};
- void() ogreb_walk8 =[ $ogbwalk8, ogreb_walk9 ] {ai_walk(2);};
- void() ogreb_walk9 =[ $ogbwalk9, ogreb_walk10 ] {ogstep();ai_walk(3);};
- void() ogreb_walk10 =[ $ogbwalk10, ogreb_walk11 ] {ai_walk(1);};
- void() ogreb_walk11 =[ $ogbwalk11, ogreb_walk12 ] {ai_walk(2);};
- void() ogreb_walk12 =[ $ogbwalk12, ogreb_walk13 ] {ai_walk(3);};
- void() ogreb_walk13 =[ $ogbwalk13, ogreb_walk14 ] {
- if (random() < 0.1)
- ogre_talk();
- ai_stand();
- };
- void() ogreb_walk14 =[ $ogbwalk14, ogreb_walk15 ] {ai_walk(3);};
- void() ogreb_walk15 =[ $ogbwalk15, ogreb_walk16 ] {ai_walk(3);};
- void() ogreb_walk16 =[ $ogbwalk16, ogreb_walk1 ] {ai_walk(4);};
- //Rocket Walk
- void() ogrer_walk1 =[ $walkr1, ogrer_walk2 ] {ogstep();ai_walk(3);};
- void() ogrer_walk2 =[ $walkr2, ogrer_walk3 ] {ai_walk(2);};
- void() ogrer_walk3 =[ $walkr3, ogrer_walk4 ] {
- ai_walk(2);
- if (random() < 0.2)
- ogre_idle_sound();
- };
- void() ogrer_walk4 =[ $walkr4, ogrer_walk5 ] {ai_walk(2);};
- void() ogrer_walk5 =[ $walkr5, ogrer_walk6 ] {ai_walk(2);};
- void() ogrer_walk6 =[ $walkr6, ogrer_walk7 ] {ai_walk(5);};
- void() ogrer_walk7 =[ $walkr7, ogrer_walk8 ] {ai_walk(3);};
- void() ogrer_walk8 =[ $walkr8, ogrer_walk9 ] {ai_walk(2);};
- void() ogrer_walk9 =[ $walkr9, ogrer_walk10 ] {ogstep();ai_walk(3);};
- void() ogrer_walk10 =[ $walkr10, ogrer_walk11 ] {ai_walk(1);};
- void() ogrer_walk11 =[ $walkr11, ogrer_walk12 ] {ai_walk(2);};
- void() ogrer_walk12 =[ $walkr12, ogrer_walk13 ] {ai_walk(3);};
- void() ogrer_walk13 =[ $walkr13, ogrer_walk14 ] {
- if (random() < 0.1)
- ogre_talk();
- ai_stand();
- };
- void() ogrer_walk14 =[ $walkr14, ogrer_walk15 ] {ai_walk(3);};
- void() ogrer_walk15 =[ $walkr15, ogrer_walk16 ] {ai_walk(3);};
- void() ogrer_walk16 =[ $walkr16, ogrer_walk1 ] {ai_walk(4);};
- //Grenade / Nail Run
- void() ogre_run1 =[ $run1, ogre_run2 ] {ai_run(9);
- if (random() < 0.1)
- ogre_talk();
- };
- void() ogre_run2 =[ $run2, ogre_run3 ] {ogstep();ai_run(12);};
- void() ogre_run3 =[ $run3, ogre_run4 ] {ai_run(8);};
- void() ogre_run4 =[ $run4, ogre_run5 ] {ai_run(22);};
- void() ogre_run5 =[ $run5, ogre_run6 ] {ai_run(16);};
- void() ogre_run6 =[ $run6, ogre_run7 ] {ogstep();ai_run(4);};
- void() ogre_run7 =[ $run7, ogre_run8 ] {ai_run(13);};
- void() ogre_run8 =[ $run8, ogre_run1 ] {ai_run(24);};
- //Berserk Run
- void() ogreb_run1 =[ $ogbrun1, ogreb_run2 ] {ai_run(9);
- if (random() < 0.1)
- ogre_talk();
- };
- void() ogreb_run2 =[ $ogbrun2, ogreb_run3 ] {ogstep();ai_run(12);};
- void() ogreb_run3 =[ $ogbrun3, ogreb_run4 ] {ai_run(12);};
- void() ogreb_run4 =[ $ogbrun4, ogreb_run5 ] {ai_run(22);};
- void() ogreb_run5 =[ $ogbrun5, ogreb_run6 ] {ai_run(32);};
- void() ogreb_run6 =[ $ogbrun6, ogreb_run7 ] {ogstep();ai_run(12);};
- void() ogreb_run7 =[ $ogbrun7, ogreb_run8 ] {ai_run(13);};
- void() ogreb_run8 =[ $ogbrun8, ogreb_run1 ] {ai_run(24);};
- //Rocket Run
- void() ogrer_run1 =[ $run1, ogre_run2 ] {ai_run(9);
- if (random() < 0.1)
- ogre_talk();
- };
- void() ogrer_run2 =[ $runr2, ogrer_run3 ] {ogstep();ai_run(12);};
- void() ogrer_run3 =[ $runr3, ogrer_run4 ] {ai_run(8);};
- void() ogrer_run4 =[ $runr4, ogrer_run5 ] {ai_run(22);};
- void() ogrer_run5 =[ $runr5, ogrer_run6 ] {ai_run(16);};
- void() ogrer_run6 =[ $runr6, ogrer_run7 ] {ogstep();ai_run(4);};
- void() ogrer_run7 =[ $runr7, ogrer_run8 ] {ai_run(13);};
- void() ogrer_run8 =[ $runr8, ogrer_run1 ] {ai_run(24);};
- // Grenade / Nail Melee Swing
- void() ogre_swing1 =[ $swing1, ogre_swing2 ] {ai_charge(11);
- sound (self, CHAN_WEAPON, "ogre/ogsawatk.wav", 1, ATTN_NORM);
- sound (self, CHAN_BODY, "ogre/ogsawloop.wav", 0.5, ATTN_NORM); // gb, restart this from time to time
- ogstep();
- };
- void() ogre_swing2 =[ $swing2, ogre_swing3 ] {ai_charge(1);};
- void() ogre_swing3 =[ $swing3, ogre_swing4 ] {ai_charge(4);};
- void() ogre_swing4 =[ $swing4, ogre_swing5 ] {ai_charge(13);};
- void() ogre_swing5 =[ $swing5, ogre_swing6 ] {ogstep();ai_charge(9); chainsaw(0);self.angles_y = self.angles_y + random()*25;};
- void() ogre_swing6 =[ $swing6, ogre_swing7 ] {chainsaw(200);self.angles_y = self.angles_y + random()* 25;};
- void() ogre_swing7 =[ $swing7, ogre_swing8 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
- void() ogre_swing8 =[ $swing8, ogre_swing9 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
- void() ogre_swing9 =[ $swing9, ogre_swing10 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
- void() ogre_swing10 =[ $swing10, ogre_swing11 ] {chainsaw(-200);self.angles_y = self.angles_y + random()* 25;};
- void() ogre_swing11 =[ $swing11, ogre_swing12 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
- void() ogre_swing12 =[ $swing12, ogre_swing13 ] {ai_charge(3);};
- void() ogre_swing13 =[ $swing13, ogre_swing14 ] {ai_charge(8);};
- void() ogre_swing14 =[ $swing14, ogre_run1 ] {ai_charge(9);};
- // Berserk Melee Swing
- void() ogreb_swing1 =[ $ogbswing1, ogreb_swing2 ] {ai_charge(11);
- sound (self, CHAN_WEAPON, "ogre/ogbsawatk.wav", 1, ATTN_NORM);
- sound (self, CHAN_BODY, "ogre/ogsawloop.wav", 0.5, ATTN_NORM); // gb, restart this from time to time
- ogstep();
- };
- void() ogreb_swing2 =[ $ogbswing2, ogreb_swing3 ] {ai_charge(1); chainsaw(0);self.angles_y = self.angles_y + random()*25;};
- void() ogreb_swing3 =[ $ogbswing3, ogreb_swing4 ] {ai_charge(4); chainsaw(0);self.angles_y = self.angles_y + random()*25;};
- void() ogreb_swing4 =[ $ogbswing4, ogreb_swing5 ] {ai_charge(13); chainsaw(0);self.angles_y = self.angles_y + random()*25;};
- void() ogreb_swing5 =[ $ogbswing5, ogreb_swing6 ] {ogstep();ai_charge(9); chainsaw(0);self.angles_y = self.angles_y + random()*25;};
- void() ogreb_swing6 =[ $ogbswing6, ogreb_swing7 ] {chainsaw(200);self.angles_y = self.angles_y + random()* 25;};
- void() ogreb_swing7 =[ $ogbswing7, ogreb_swing8 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
- void() ogreb_swing8 =[ $ogbswing8, ogreb_swing9 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
- void() ogreb_swing9 =[ $ogbswing9, ogreb_swing10 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
- void() ogreb_swing10 =[ $ogbswing10, ogreb_swing11 ] {chainsaw(-200);self.angles_y = self.angles_y + random()* 25;};
- void() ogreb_swing11 =[ $ogbswing11, ogreb_swing12 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
- void() ogreb_swing12 =[ $ogbswing12, ogreb_swing13 ] {ai_charge(3);};
- void() ogreb_swing13 =[ $ogbswing13, ogreb_swing14 ] {ai_charge(8);};
- void() ogreb_swing14 =[ $ogbswing14, ogreb_run1 ] {ai_charge(9);};
- // Grenade / Nail Melee Smash
- void() ogre_smash1 =[ $smash1, ogre_smash2 ] {ai_charge(6);
- sound (self, CHAN_WEAPON, "ogre/ogsawatk.wav", 1, ATTN_NORM);
- ogstep();
- };
- void() ogre_smash2 =[ $smash2, ogre_smash3 ] {ai_charge(0);};
- void() ogre_smash3 =[ $smash3, ogre_smash4 ] {ai_charge(0);};
- void() ogre_smash4 =[ $smash4, ogre_smash5 ] {ai_charge(1);};
- void() ogre_smash5 =[ $smash5, ogre_smash6 ] {ai_charge(4);};
- void() ogre_smash6 =[ $smash6, ogre_smash7 ] {ai_charge(4); chainsaw(0);};
- void() ogre_smash7 =[ $smash7, ogre_smash8 ] {ai_charge(4); chainsaw(0);};
- void() ogre_smash8 =[ $smash8, ogre_smash9 ] {ai_charge(10); chainsaw(0);};
- void() ogre_smash9 =[ $smash9, ogre_smash10 ] {ogstep();ai_charge(13); chainsaw(0);};
- void() ogre_smash10 =[ $smash10, ogre_smash11 ] {chainsaw(1);};
- void() ogre_smash11 =[ $smash11, ogre_smash12 ] {ai_charge(2); chainsaw(0);
- self.nextthink = self.nextthink + random()*0.2;}; // slight variation
- void() ogre_smash12 =[ $smash12, ogre_smash13 ] {ai_charge(0);};
- void() ogre_smash13 =[ $smash13, ogre_smash14 ] {ai_charge(4);};
- void() ogre_smash14 =[ $smash14, ogre_run1 ] {ai_charge(12);};
- // Berserk Melee Smash
- void() ogreb_smash1 =[ $ogbsmash1, ogreb_smash2 ] {ai_charge(6);
- sound (self, CHAN_WEAPON, "ogre/ogbsawatk.wav", 1, ATTN_NORM);
- ogstep();
- };
- void() ogreb_smash2 =[ $ogbsmash2, ogreb_smash3 ] {ai_charge(0); chainsaw(0);};
- void() ogreb_smash3 =[ $ogbsmash3, ogreb_smash4 ] {ai_charge(0); chainsaw(0);};
- void() ogreb_smash4 =[ $ogbsmash4, ogreb_smash5 ] {ai_charge(1); chainsaw(0);};
- void() ogreb_smash5 =[ $ogbsmash5, ogreb_smash6 ] {ai_charge(4); chainsaw(0);};
- void() ogreb_smash6 =[ $ogbsmash6, ogreb_smash7 ] {ai_charge(4); chainsaw(0);};
- void() ogreb_smash7 =[ $ogbsmash7, ogreb_smash8 ] {ai_charge(4); chainsaw(0);};
- void() ogreb_smash8 =[ $ogbsmash8, ogreb_smash9 ] {ai_charge(10); chainsaw(0);};
- void() ogreb_smash9 =[ $ogbsmash9, ogreb_smash10 ] {ogstep();ai_charge(13); chainsaw(0);};
- void() ogreb_smash10 =[ $ogbsmash10, ogreb_smash11 ] {chainsaw(1);};
- void() ogreb_smash11 =[ $ogbsmash11, ogreb_smash12 ] {ai_charge(2); chainsaw(0);
- self.nextthink = self.nextthink + random()*0.2;}; // slight variation
- void() ogreb_smash12 =[ $ogbsmash12, ogreb_smash13 ] {ai_charge(0);};
- void() ogreb_smash13 =[ $ogbsmash13, ogreb_smash14 ] {ai_charge(4);};
- void() ogreb_smash14 =[ $ogbsmash14, ogreb_run1 ] {ai_charge(12);};
- // Bayonet Melee (Rocket Ogre)
- void() ogre_bayonet1 =[ $bayonet1, ogre_bayonet2 ] {ogstep();ai_charge(0);};
- void() ogre_bayonet2 =[ $bayonet2, ogre_bayonet3 ] {ai_charge(0);};
- void() ogre_bayonet3 =[ $bayonet3, ogre_bayonet4 ] {ai_charge(0);};
- void() ogre_bayonet4 =[ $bayonet4, ogre_bayonet5 ] {ai_charge(0);};
- void() ogre_bayonet5 =[ $bayonet5, ogre_bayonet6 ] {ogstep();ai_charge(0); chainsaw(0);};
- void() ogre_bayonet6 =[ $bayonet6, ogre_bayonet7 ] {ai_charge(0);};
- void() ogre_bayonet7 =[ $bayonet7, ogrer_run1 ] {ai_charge(0);};
- // Fire Grenade
- void() ogre_grenade1 =[ $shoot1, ogre_grenade2 ] {ogstep();ai_face();
- if (random() < 0.1)
- ogre_talk();
- };
- void() ogre_grenade2 =[ $shoot2, ogre_grenade3 ] {ai_face();};
- void() ogre_grenade3 =[ $shoot2, ogre_grenade4 ] {ai_face();};
- void() ogre_grenade4 =[ $shoot3, ogre_grenade5 ] {ai_face();M_FireGrenade('0 0 0');};
- void() ogre_grenade5 =[ $shoot4, ogre_grenade6 ] {ai_face();};
- void() ogre_grenade6 =[ $shoot5, ogre_grenade7 ] {ai_face();};
- void() ogre_grenade7 =[ $shoot6, ogre_run1 ] {ai_face();};
- // Fire Rocket
- void() ogre_rocket1 =[ $shootr1, ogre_rocket2 ] {ai_face();
- if (random() < 0.1)
- ogre_talk();
- };
- void() ogre_rocket2 =[ $shootr2, ogre_rocket3 ] {ogstep();ai_face();};
- void() ogre_rocket3 =[ $shootr3, ogre_rocket4 ] {ai_face();};
- void() ogre_rocket4 =[ $shootr4, ogre_rocket5 ] {ai_face();M_FireRocket();};
- void() ogre_rocket5 =[ $shootr5, ogre_rocket6 ] {ai_face();};
- void() ogre_rocket6 =[ $shootr6, ogrer_run1 ] {ai_face();};
- // Fire Nails
- void() ogre_nail1 =[ $runfire1, ogre_nail2 ] {ai_charge(9);
- if (random() < 0.1)
- ogre_talk();
- };
- void() ogre_nail2 =[ $runfire2, ogre_nail3 ] {ogstep();ai_charge(12);};
- void() ogre_nail3 =[ $runfire2, ogre_nail4 ] {ai_charge(8);};
- void() ogre_nail4 =[ $runfire3, ogre_nail5 ] {ai_charge(14);};
- void() ogre_nail5 =[ $runfire4, ogre_nail6 ] {ai_charge(22);OgreSpike();};
- void() ogre_nail6 =[ $runfire5, ogre_nail7 ] {ai_charge(16);};
- void() ogre_nail7 =[ $runfire6, ogre_nail8 ] {ogstep();ai_charge(4);};
- void() ogre_nail8 =[ $runfire7, ogre_nail9 ] {ai_charge(13);};
- void() ogre_nail9 =[ $runfire8, ogre_run1 ] {ai_charge(24);};
- // Nail / Grenade pain
- void() ogre_pain1 =[ $pain1, ogre_pain2 ] {};
- void() ogre_pain2 =[ $pain2, ogre_pain3 ] {};
- void() ogre_pain3 =[ $pain3, ogre_pain4 ] {};
- void() ogre_pain4 =[ $pain4, ogre_pain5 ] {};
- void() ogre_pain5 =[ $pain5, ogre_run1 ] {};
- // b
- void() ogre_painb1 =[ $painb1, ogre_painb2 ] {};
- void() ogre_painb2 =[ $painb2, ogre_painb3 ] {};
- void() ogre_painb3 =[ $painb3, ogre_run1 ] {};
- // c
- void() ogre_painc1 =[ $painc1, ogre_painc2 ] {};
- void() ogre_painc2 =[ $painc2, ogre_painc3 ] {};
- void() ogre_painc3 =[ $painc3, ogre_painc4 ] {};
- void() ogre_painc4 =[ $painc4, ogre_painc5 ] {};
- void() ogre_painc5 =[ $painc5, ogre_painc6 ] {};
- void() ogre_painc6 =[ $painc6, ogre_run1 ] {};
- // d
- void() ogre_paind1 =[ $paind1, ogre_paind2 ] {};
- void() ogre_paind2 =[ $paind2, ogre_paind3 ] {ai_pain(10);};
- void() ogre_paind3 =[ $paind3, ogre_paind4 ] {ai_pain(9);};
- void() ogre_paind4 =[ $paind4, ogre_paind5 ] {ai_pain(4);};
- void() ogre_paind5 =[ $paind5, ogre_paind6 ] {};
- void() ogre_paind6 =[ $paind6, ogre_paind7 ] {};
- void() ogre_paind7 =[ $paind7, ogre_paind8 ] {};
- void() ogre_paind8 =[ $paind8, ogre_paind9 ] {};
- void() ogre_paind9 =[ $paind9, ogre_paind10 ] {};
- void() ogre_paind10 =[ $paind10, ogre_paind11 ] {};
- void() ogre_paind11 =[ $paind11, ogre_paind12 ] {};
- void() ogre_paind12 =[ $paind12, ogre_paind13 ] {};
- void() ogre_paind13 =[ $paind13, ogre_paind14 ] {};
- void() ogre_paind14 =[ $paind14, ogre_paind15 ] {};
- void() ogre_paind15 =[ $paind15, ogre_paind16 ] {};
- void() ogre_paind16 =[ $paind16, ogre_run1 ] {};
- // e
- void() ogre_paine1 =[ $paine1, ogre_paine2 ] {};
- void() ogre_paine2 =[ $paine2, ogre_paine3 ] {ai_pain(10);};
- void() ogre_paine3 =[ $paine3, ogre_paine4 ] {ai_pain(9);};
- void() ogre_paine4 =[ $paine4, ogre_paine5 ] {ai_pain(4);};
- void() ogre_paine5 =[ $paine5, ogre_paine6 ] {};
- void() ogre_paine6 =[ $paine6, ogre_paine7 ] {};
- void() ogre_paine7 =[ $paine7, ogre_paine8 ] {};
- void() ogre_paine8 =[ $paine8, ogre_paine9 ] {};
- void() ogre_paine9 =[ $paine9, ogre_paine10 ] {};
- void() ogre_paine10 =[ $paine10, ogre_paine11 ] {};
- void() ogre_paine11 =[ $paine11, ogre_paine12 ] {};
- void() ogre_paine12 =[ $paine12, ogre_paine13 ] {};
- void() ogre_paine13 =[ $paine13, ogre_paine14 ] {};
- void() ogre_paine14 =[ $paine14, ogre_paine15 ] {};
- void() ogre_paine15 =[ $paine15, ogre_run1 ] {};
- // Berserk Pain
- void() ogreb_pain1 =[ $ogbpain1, ogreb_pain2 ] {};
- void() ogreb_pain2 =[ $ogbpain2, ogreb_pain3 ] {};
- void() ogreb_pain3 =[ $ogbpain3, ogreb_pain4 ] {};
- void() ogreb_pain4 =[ $ogbpain4, ogreb_pain5 ] {};
- void() ogreb_pain5 =[ $ogbpain5, ogreb_run1 ] {};
- // Rocket Pain
- void() ogrer_pain1 =[ $painr1, ogrer_pain2 ] {};
- void() ogrer_pain2 =[ $painr2, ogrer_pain3 ] {};
- void() ogrer_pain3 =[ $painr3, ogrer_pain4 ] {};
- void() ogrer_pain4 =[ $painr4, ogrer_pain5 ] {};
- void() ogrer_pain5 =[ $painr5, ogrer_run1 ] {};
- // Rocket Pain B
- void() ogrer_painb1 =[ $painbr1, ogrer_painb2 ] {};
- void() ogrer_painb2 =[ $painbr2, ogrer_painb3 ] {};
- void() ogrer_painb3 =[ $painbr3, ogrer_run1 ] {};
- // Rocket Pain C
- void() ogrer_painc1 =[ $paincr1, ogrer_painc2 ] {};
- void() ogrer_painc2 =[ $paincr2, ogrer_painc3 ] {};
- void() ogrer_painc3 =[ $paincr3, ogrer_painc4 ] {};
- void() ogrer_painc4 =[ $paincr4, ogrer_painc5 ] {};
- void() ogrer_painc5 =[ $paincr5, ogrer_painc6 ] {};
- void() ogrer_painc6 =[ $paincr6, ogrer_run1 ] {};
- // Rocket Pain D
- void() ogrer_paind1 =[ $paindr1, ogrer_paind2 ] {};
- void() ogrer_paind2 =[ $paindr2, ogrer_paind3 ] {ai_pain(10);};
- void() ogrer_paind3 =[ $paindr3, ogrer_paind4 ] {ai_pain(9);};
- void() ogrer_paind4 =[ $paindr4, ogrer_paind5 ] {ai_pain(4);};
- void() ogrer_paind5 =[ $paindr5, ogrer_paind6 ] {};
- void() ogrer_paind6 =[ $paindr6, ogrer_paind7 ] {};
- void() ogrer_paind7 =[ $paindr7, ogrer_paind8 ] {};
- void() ogrer_paind8 =[ $paindr8, ogrer_paind9 ] {};
- void() ogrer_paind9 =[ $paindr9, ogrer_paind10 ] {};
- void() ogrer_paind10 =[ $paindr10, ogrer_paind11 ] {};
- void() ogrer_paind11 =[ $paindr11, ogrer_paind12 ] {};
- void() ogrer_paind12 =[ $paindr12, ogrer_paind13 ] {};
- void() ogrer_paind13 =[ $paindr13, ogrer_paind14 ] {};
- void() ogrer_paind14 =[ $paindr14, ogrer_paind15 ] {};
- void() ogrer_paind15 =[ $paindr15, ogrer_paind16 ] {};
- void() ogrer_paind16 =[ $paindr16, ogrer_run1 ] {};
- // Rocket Pain E
- void() ogrer_paine1 =[ $painer1, ogrer_paine2 ] {};
- void() ogrer_paine2 =[ $painer2, ogrer_paine3 ] {ai_pain(10);};
- void() ogrer_paine3 =[ $painer3, ogrer_paine4 ] {ai_pain(9);};
- void() ogrer_paine4 =[ $painer4, ogrer_paine5 ] {ai_pain(4);};
- void() ogrer_paine5 =[ $painer5, ogrer_paine6 ] {};
- void() ogrer_paine6 =[ $painer6, ogrer_paine7 ] {};
- void() ogrer_paine7 =[ $painer7, ogrer_paine8 ] {};
- void() ogrer_paine8 =[ $painer8, ogrer_paine9 ] {};
- void() ogrer_paine9 =[ $painer9, ogrer_paine10 ] {};
- void() ogrer_paine10 =[ $painer10, ogrer_paine11 ] {};
- void() ogrer_paine11 =[ $painer11, ogrer_paine12 ] {};
- void() ogrer_paine12 =[ $painer12, ogrer_paine13 ] {};
- void() ogrer_paine13 =[ $painer13, ogrer_paine14 ] {};
- void() ogrer_paine14 =[ $painer14, ogrer_paine15 ] {};
- void() ogrer_paine15 =[ $painer15, ogrer_run1 ] {};
- // Pain, All Ogres
- void() ogre_pain_sound =
- {
- local float r;
- r = random();
- if (r < 0.25)
- {
- sound (self, CHAN_VOICE, "ogre/ogpain1.wav", 1, ATTN_NORM);
- }
- else if (r < 0.5)
- {
- sound (self, CHAN_VOICE, "ogre/ogpain2.wav", 1, ATTN_NORM);
- }
- else if (r < 0.75)
- {
- sound (self, CHAN_VOICE, "ogre/ogpain3.wav", 1, ATTN_NORM);
- }
- else if (r < 0.88)
- {
- sound (self, CHAN_VOICE, "ogre/ogpain4.wav", 1, ATTN_NORM);
- }
- else
- {
- sound (self, CHAN_VOICE, "ogre/ogpain5.wav", 1, ATTN_NORM);
- }
- };
- void(entity attacker, float damage) ogre_pain =
- {
- local float r;
- r = random();
- // Don't go into a pain loop too frequently
- if (self.pain_finished > time)
- return;
- // drowning?
- if (self.h2olevel >= 3)
- {
- DeathBubbles (1);
- sound (self, CHAN_VOICE, "player/drown1.wav", 1, ATTN_NORM); // FIXME
- // no pain anim
- return;
- }
- //play a random pain sound
- ogre_pain_sound();
- // What Type of Ogre is it?
- if (self.spawnflags & BERSERK_OGRE) // notice they're resistant and only have a single short pain loop
- {
- // sound (self, CHAN_VOICE, "ogre/ogpain1.wav", 1, ATTN_NORM);
- ogreb_pain1 ();
- self.pain_finished = time + 1;
- return;
- }
- else if (self.spawnflags & ROCKET_OGRE)
- {
- if (r < 0.25)
- {
- //sound (self, CHAN_VOICE, "ogre/ogpain1.wav", 1, ATTN_NORM);
- ogrer_pain1 ();
- self.pain_finished = time + 1;
- }
- else if (r < 0.5)
- {
- //sound (self, CHAN_VOICE, "ogre/ogpain2.wav", 1, ATTN_NORM);
- ogrer_painb1 ();
- self.pain_finished = time + 1;
- }
- else if (r < 0.75)
- {
- //sound (self, CHAN_VOICE, "ogre/ogpain3.wav", 1, ATTN_NORM);
- ogrer_painc1 ();
- self.pain_finished = time + 1;
- }
- else if (r < 0.88)
- {
- //sound (self, CHAN_VOICE, "ogre/ogpain4.wav", 1, ATTN_NORM);
- ogrer_paind1 ();
- self.pain_finished = time + 2;
- }
- else
- {
- //sound (self, CHAN_VOICE, "ogre/ogpain5.wav", 1, ATTN_NORM);
- ogrer_paine1 ();
- self.pain_finished = time + 2;
- }
- }
- else // Grenade or Nail Ogre
- {
- if (r < 0.25)
- {
- //sound (self, CHAN_VOICE, "ogre/ogpain1.wav", 1, ATTN_NORM);
- ogre_pain1 ();
- self.pain_finished = time + 1;
- }
- else if (r < 0.5)
- {
- //sound (self, CHAN_VOICE, "ogre/ogpain2.wav", 1, ATTN_NORM);
- ogre_painb1 ();
- self.pain_finished = time + 1;
- }
- else if (r < 0.75)
- {
- //sound (self, CHAN_VOICE, "ogre/ogpain3.wav", 1, ATTN_NORM);
- ogre_painc1 ();
- self.pain_finished = time + 1;
- }
- else if (r < 0.88)
- {
- //sound (self, CHAN_VOICE, "ogre/ogpain4.wav", 1, ATTN_NORM);
- ogre_paind1 ();
- self.pain_finished = time + 2;
- }
- else
- {
- //sound (self, CHAN_VOICE, "ogre/ogpain5.wav", 1, ATTN_NORM);
- ogre_paine1 ();
- self.pain_finished = time + 2;
- }
- }
- };
- // Normal Death
- void() ogre_die1 =[ $death1, ogre_die2 ] {};
- void() ogre_die2 =[ $death2, ogre_die3 ] {};
- void() ogre_die3 =[ $death3, ogre_die4 ]
- {self.solid = SOLID_NOT;DeathDrop();};
- void() ogre_die4 =[ $death4, ogre_die5 ] {};
- void() ogre_die5 =[ $death5, ogre_die6 ] {};
- void() ogre_die6 =[ $death6, ogre_die7 ] {};
- void() ogre_die7 =[ $death7, ogre_die8 ] {};
- void() ogre_die8 =[ $death8, ogre_die9 ] {};
- void() ogre_die9 =[ $death9, ogre_die10 ] {};
- void() ogre_die10 =[ $death10, ogre_die11 ] {};
- void() ogre_die11 =[ $death11, ogre_die12 ] {};
- void() ogre_die12 =[ $death12, ogre_die13 ] {};
- void() ogre_die13 =[ $death13, ogre_die14 ] {};
- void() ogre_die14 =[ $death14, ogre_die14 ] {CorpseThink();};
- // Normal Death V2
- void() ogre_bdie1 =[ $bdeath1, ogre_bdie2 ] {};
- void() ogre_bdie2 =[ $bdeath2, ogre_bdie3 ] {ai_forward(5);};
- void() ogre_bdie3 =[ $bdeath3, ogre_bdie4 ]
- {self.solid = SOLID_NOT;DeathDrop();};
- void() ogre_bdie4 =[ $bdeath4, ogre_bdie5 ] {ai_forward(1);};
- void() ogre_bdie5 =[ $bdeath5, ogre_bdie6 ] {ai_forward(3);};
- void() ogre_bdie6 =[ $bdeath6, ogre_bdie7 ] {ai_forward(7);};
- void() ogre_bdie7 =[ $bdeath7, ogre_bdie8 ] {ai_forward(25);};
- void() ogre_bdie8 =[ $bdeath8, ogre_bdie9 ] {};
- void() ogre_bdie9 =[ $bdeath9, ogre_bdie10 ] {};
- void() ogre_bdie10 =[ $bdeath10, ogre_bdie10 ] {CorpseThink();};
- // Berserk Death (Chainsaw Flip)
- void() ogreb_die1 =[ $ogbdeath1, ogreb_die2 ] {};
- void() ogreb_die2 =[ $ogbdeath2, ogreb_die3 ] {};
- void() ogreb_die3 =[ $ogbdeath3, ogreb_die4 ] {self.solid = SOLID_NOT;};
- void() ogreb_die4 =[ $ogbdeath4, ogreb_die5 ] {};
- void() ogreb_die5 =[ $ogbdeath5, ogreb_die6 ] {};
- void() ogreb_die6 =[ $ogbdeath6, ogreb_die7 ] {};
- void() ogreb_die7 =[ $ogbdeath7, ogreb_die8 ] {};
- void() ogreb_die8 =[ $ogbdeath8, ogreb_die9 ] {};
- void() ogreb_die9 =[ $ogbdeath9, ogreb_die10 ] {};
- void() ogreb_die10 =[ $ogbdeath10, ogreb_die11 ] {};
- void() ogreb_die11 =[ $ogbdeath11, ogreb_die12 ] {};
- void() ogreb_die12 =[ $ogbdeath12, ogreb_die13 ] {};
- void() ogreb_die13 =[ $ogbdeath13, ogreb_die14 ] {};
- void() ogreb_die14 =[ $ogbdeath14, ogreb_die15 ] {};
- void() ogreb_die15 =[ $ogbdeath15, ogreb_die16 ] {};
- void() ogreb_die16 =[ $ogbdeath16, ogreb_die17 ] {
- sound (self, CHAN_WEAPON, "ogre/ogsawatk.wav", 1, ATTN_NORM);
- SpawnMeatSpray (self.origin + v_forward*16, crandom() * 100 * v_right);};
- void() ogreb_die17 =[ $ogbdeath17, ogreb_die18 ] {SpawnMeatSpray (self.origin + v_forward*16, crandom() * 100 * v_right);};
- void() ogreb_die18 =[ $ogbdeath18, ogreb_die19 ] {SpawnMeatSpray (self.origin + v_forward*16, crandom() * 100 * v_right);};
- void() ogreb_die19 =[ $ogbdeath19, ogreb_die20 ] {};
- void() ogreb_die20 =[ $ogbdeath20, ogreb_die21 ] {};
- void() ogreb_die21 =[ $ogbdeath21, ogreb_die21 ] {CorpseThink();};
- // Berserk Death V2
- void() ogreb_bdie1 =[ $ogbbdeath1, ogreb_bdie2 ] {};
- void() ogreb_bdie2 =[ $ogbbdeath2, ogreb_bdie3 ] {};
- void() ogreb_bdie3 =[ $ogbbdeath3, ogreb_bdie4 ] {self.solid = SOLID_NOT;};
- void() ogreb_bdie4 =[ $ogbbdeath4, ogreb_bdie5 ] {};
- void() ogreb_bdie5 =[ $ogbbdeath5, ogreb_bdie6 ] {};
- void() ogreb_bdie6 =[ $ogbbdeath6, ogreb_bdie7 ] {};
- void() ogreb_bdie7 =[ $ogbbdeath7, ogreb_bdie8 ] {};
- void() ogreb_bdie8 =[ $ogbbdeath8, ogreb_bdie9 ] {};
- void() ogreb_bdie9 =[ $ogbbdeath9, ogreb_bdie10 ] {};
- void() ogreb_bdie10 =[ $ogbbdeath10, ogreb_bdie10 ] {CorpseThink();};
- // Berserk Death V3
- void() ogreb_cdie1 =[ $ogbcdeath1, ogreb_cdie2 ] {};
- void() ogreb_cdie2 =[ $ogbcdeath2, ogreb_cdie3 ] {};
- void() ogreb_cdie3 =[ $ogbcdeath3, ogreb_cdie4 ] {self.solid = SOLID_NOT;};
- void() ogreb_cdie4 =[ $ogbcdeath4, ogreb_cdie5 ] {};
- void() ogreb_cdie5 =[ $ogbcdeath5, ogreb_cdie6 ] {};
- void() ogreb_cdie6 =[ $ogbcdeath6, ogreb_cdie7 ] {};
- void() ogreb_cdie7 =[ $ogbcdeath7, ogreb_cdie8 ] {};
- void() ogreb_cdie8 =[ $ogbcdeath8, ogreb_cdie9 ] {};
- void() ogreb_cdie9 =[ $ogbcdeath9, ogreb_cdie10 ] {};
- void() ogreb_cdie10 =[ $ogbcdeath10, ogreb_cdie11 ] {};
- void() ogreb_cdie11 =[ $ogbcdeath11, ogreb_cdie12 ] {};
- void() ogreb_cdie12 =[ $ogbcdeath12, ogreb_cdie13 ] {};
- void() ogreb_cdie13 =[ $ogbcdeath13, ogreb_cdie14 ] {};
- void() ogreb_cdie14 =[ $ogbcdeath14, ogreb_cdie14 ] {CorpseThink();};
- // Rocket Death
- void() ogrer_die1 =[ $deathr1, ogrer_die2 ] {};
- void() ogrer_die2 =[ $deathr2, ogrer_die3 ] {};
- void() ogrer_die3 =[ $deathr3, ogrer_die4 ]
- {self.solid = SOLID_NOT;DeathDrop();};
- void() ogrer_die4 =[ $deathr4, ogrer_die5 ] {};
- void() ogrer_die5 =[ $deathr5, ogrer_die6 ] {};
- void() ogrer_die6 =[ $deathr6, ogrer_die7 ] {};
- void() ogrer_die7 =[ $deathr7, ogrer_die8 ] {};
- void() ogrer_die8 =[ $deathr8, ogrer_die9 ] {};
- void() ogrer_die9 =[ $deathr9, ogrer_die10 ] {};
- void() ogrer_die10 =[ $deathr10, ogrer_die11 ] {};
- void() ogrer_die11 =[ $deathr11, ogrer_die12 ] {};
- void() ogrer_die12 =[ $deathr12, ogrer_die13 ] {};
- void() ogrer_die13 =[ $deathr13, ogrer_die14 ] {};
- void() ogrer_die14 =[ $deathr14, ogrer_die14 ] {CorpseThink();};
- // Rocket Death V2
- void() ogrer_bdie1 =[ $bdeathr1, ogrer_bdie2 ] {};
- void() ogrer_bdie2 =[ $bdeathr2, ogrer_bdie3 ] {ai_forward(5);};
- void() ogrer_bdie3 =[ $bdeathr3, ogrer_bdie4 ] {self.solid = SOLID_NOT; DeathDrop();};
- void() ogrer_bdie4 =[ $bdeathr4, ogrer_bdie5 ] {ai_forward(1);};
- void() ogrer_bdie5 =[ $bdeathr5, ogrer_bdie6 ] {ai_forward(3);};
- void() ogrer_bdie6 =[ $bdeathr6, ogrer_bdie7 ] {ai_forward(7);};
- void() ogrer_bdie7 =[ $bdeathr7, ogrer_bdie8 ] {ai_forward(25);};
- void() ogrer_bdie8 =[ $bdeathr8, ogrer_bdie9 ] {};
- void() ogrer_bdie9 =[ $bdeathr9, ogrer_bdie10 ] {};
- void() ogrer_bdie10 =[ $bdeathr10, ogrer_bdie10 ] {CorpseThink();};
- // Ogre Die (All Versions)
- void() ogre_death_sound =
- {
- local float r;
- r = random();
- if (r < 0.5)
- {
- sound (self, CHAN_VOICE, "ogre/ogdth1.wav", 1, ATTN_NORM);
- }
- else
- {
- sound (self, CHAN_VOICE, "ogre/ogdth2.wav", 1, ATTN_NORM);
- }
- };
- void() ogre_die =
- {
- local float r;
- //local float GibCount;
- //local float LegCount;
- //local float ArmCount;
- //local float FootCount;
- //GibCount = 0;
- //LegCount = 0;
- //ArmCount = 0;
- //FootCount = 0;
- r = random();
- // gb, kill chainsaw loop
- sound (self, CHAN_BODY, "misc/null.wav", 1, ATTN_NORM);
- // Drowning?
- if (self.h2olevel >= 3)
- {
- DeathBubbles (4);
- sound (self, CHAN_VOICE, "ogre/ogdrown1.wav", 1, ATTN_NORM); //FIXME
- if (self.spawnflags & BERSERK_OGRE)
- ogreb_die1();
- else
- ogre_die1();
- return;
- }
- // Gib?
- if (self.health < -80)
- {
- sound (self, CHAN_VOICE, "player/udeath.wav", 1, ATTN_NORM);
- ThrowHead ("progs/gib_ogre1.mdl", self.health, 3);
- ThrowGib ("progs/gib_ogre2.mdl", self.health);
- ThrowGib ("progs/gib_ogre3.mdl", self.health);
- ThrowGib ("progs/gib_ogre4.mdl", self.health);
- ThrowGib ("progs/gib_ogre5.mdl", self.health);
- ThrowBlood (self.health*2); //ijed Blood vfx
- ThrowBlood (self.health*2); //ijed Blood vfx
- ThrowBlood (self.health*3); //ijed Blood vfx
- return;
- }
- /* ThrowGibs (self.health); // Supa, special cauteriser gib effect
- ThrowGib ("progs/gib_ogre2.mdl", self.health);
- ThrowGib ("progs/gib_ogre3.mdl", self.health);
- ThrowGib ("progs/gib_ogre4.mdl", self.health);
- ijed: Uh yeah, this was crap :P
- do //ijed Chucks body parts
- {
- if ((random() < 0.33) && ArmCount < 2) //count the limbs
- {
- ThrowGib ("progs/gib_ogre2.mdl", self.health); // arm
- ArmCount = ArmCount + 1;
- }
- else if ((random() > 0.66) && (LegCount < 2))
- {
- ThrowGib ("progs/gib_ogre3.mdl", self.health); // leg
- LegCount = LegCount + 1;
- }
- else if (FootCount < 2)
- {
- ThrowGib ("progs/gib_ogre4.mdl", self.health); // foot
- FootCount = FootCount + 1;
- }
- else
- {
- ThrowGib ("progs/vomitus_gib.mdl", self.health); // generic meat from vomitus
- }
- ThrowBlood (self.health*2); //ijed Blood vfx
- ThrowBlood (self.health*3); //ijed Blood vfx
- GibCount = GibCount + 1;
- } while (GibCount < 4);
- return;
- }*/
- // What type of Ogre is dying?
- if (self.spawnflags & BERSERK_OGRE)
- {
- ogre_death_sound ();
- if (r < 0.2)
- ogreb_die1 ();
- else if (r < 0.6)
- ogreb_bdie1 ();
- else
- ogreb_cdie1 ();
- return;
- }
- else if (self.spawnflags & ROCKET_OGRE)
- {
- ogre_death_sound ();
- if (r < 0.5)
- ogrer_die1 ();
- else
- ogrer_bdie1 ();
- return;
- }
- else // Grenadier / Nail (pending)
- {
- ogre_death_sound ();
- if (r < 0.5)
- ogre_die1 ();
- else
- ogre_bdie1 ();
- }
- };
- // Ogre Melee -> All Versions
- void() ogre_melee =
- {
- local float r;
- r = random();
- if (self.spawnflags & BERSERK_OGRE)
- {
- if (r > 0.5)
- ogreb_smash1 ();
- else
- ogreb_swing1 ();
- }
- else if (self.spawnflags & ROCKET_OGRE)
- {
- ogre_bayonet1 ();
- }
- else
- {
- if (r > 0.5)
- ogre_smash1 ();
- else
- ogre_swing1 ();
- }
- };
- // Supa, ijed -> Ogre taunt behavior
- void() ogre_taunt_sound =
- {
- local float r;
- r = random();
- if (r > 0.5)
- sound (self, CHAN_VOICE, "ogre/ogtaunt2.wav", 1, ATTN_NORM);
- else
- sound (self, CHAN_VOICE, "ogre/ogtaunt3.wav", 1, ATTN_NORM);
- };
- void() ogre_dance;
- void() ogre_taunt1 =[ $pain1, ogre_taunt2 ] {};
- void() ogre_taunt2 =[ $pain2, ogre_taunt3 ] {};
- void() ogre_taunt3 =[ $pain3, ogre_taunt4 ] {};
- void() ogre_taunt4 =[ $pain4, ogre_taunt5 ] {};
- void() ogre_taunt5 =[ $pain5, ogre_dance ] {};
- void() ogre_tauntb1 =[ $painb1, ogre_tauntb2 ] {};
- void() ogre_tauntb2 =[ $painb2, ogre_tauntb3 ] {};
- void() ogre_tauntb3 =[ $painb3, ogre_dance ] {};
- void() ogre_tauntc1 =[ $painc1, ogre_tauntc2 ] {};
- void() ogre_tauntc2 =[ $painc2, ogre_tauntc3 ] {};
- void() ogre_tauntc3 =[ $painc3, ogre_tauntc4 ] {};
- void() ogre_tauntc4 =[ $painc4, ogre_tauntc5 ] {};
- void() ogre_tauntc5 =[ $painc5, ogre_tauntc6 ] {};
- void() ogre_tauntc6 =[ $painc6, ogre_dance ] {};
- void() ogre_tauntd1 =[ $paind1, ogre_tauntd2 ] {};
- void() ogre_tauntd2 =[ $paind2, ogre_tauntd3 ] {};
- void() ogre_tauntd3 =[ $paind3, ogre_tauntd4 ] {};
- void() ogre_tauntd4 =[ $paind4, ogre_tauntd5 ] {};
- void() ogre_tauntd5 =[ $paind5, ogre_tauntd6 ] {};
- void() ogre_tauntd6 =[ $paind6, ogre_tauntd7 ] {};
- void() ogre_tauntd7 =[ $paind7, ogre_tauntd8 ] {};
- void() ogre_tauntd8 =[ $paind8, ogre_tauntd9 ] {};
- void() ogre_tauntd9 =[ $paind9, ogre_tauntd10 ] {};
- void() ogre_tauntd10 =[ $paind10, ogre_tauntd11 ] {};
- void() ogre_tauntd11 =[ $paind11, ogre_tauntd12 ] {};
- void() ogre_tauntd12 =[ $paind12, ogre_tauntd13 ] {};
- void() ogre_tauntd13 =[ $paind13, ogre_tauntd14 ] {};
- void() ogre_tauntd14 =[ $paind14, ogre_tauntd15 ] {};
- void() ogre_tauntd15 =[ $paind15, ogre_tauntd16 ] {};
- void() ogre_tauntd16 =[ $paind16, ogre_dance ] {};
- void() ogre_taunte1 =[ $paine1, ogre_taunte2 ] {};
- void() ogre_taunte2 =[ $paine2, ogre_taunte3 ] {};
- void() ogre_taunte3 =[ $paine3, ogre_taunte4 ] {};
- void() ogre_taunte4 =[ $paine4, ogre_taunte5 ] {};
- void() ogre_taunte5 =[ $paine5, ogre_taunte6 ] {};
- void() ogre_taunte6 =[ $paine6, ogre_taunte7 ] {};
- void() ogre_taunte7 =[ $paine7, ogre_taunte8 ] {};
- void() ogre_taunte8 =[ $paine8, ogre_taunte9 ] {};
- void() ogre_taunte9 =[ $paine9, ogre_taunte10 ] {};
- void() ogre_taunte10 =[ $paine10, ogre_taunte11 ] {};
- void() ogre_taunte11 =[ $paine11, ogre_taunte12 ] {};
- void() ogre_taunte12 =[ $paine12, ogre_taunte13 ] {};
- void() ogre_taunte13 =[ $paine13, ogre_taunte14 ] {};
- void() ogre_taunte14 =[ $paine14, ogre_taunte15 ] {};
- void() ogre_taunte15 =[ $paine15, ogre_dance ] {};
- //return to previous thinkage
- void() ogre_stoptaunt =
- {
- if (self.movetarget) self.th_walk();
- else self.th_stand();
- };
- void() ogre_dance = // dance! dance for me, puppet!
- {
- local float r;
- if (self.cnt > 3) // only dance a bit before looking for hostiles again // okay, stop dancing and get back to work
- {
- ogre_stoptaunt ();
- return;
- }
- self.cnt = self.cnt + 1;
- SightSound();
- r = random();
- if (r < 0.25 ) ogre_taunt1();
- else if (r < 0.5 ) ogre_tauntb1();
- else if (r < 0.75 ) ogre_tauntc1();
- else if (r < 0.88 ) ogre_tauntd1();
- else ogre_taunte1();
- };
- //Ogreb Taunting
- void ogreb_taunt1();
- void() ogreb_dance = // dance! dance for me, puppet!
- {
- if (self.cnt > 2) // only dance a bit before looking for hostiles again
- {
- ogre_stoptaunt (); //okay, stop dancing and get back to work
- return;
- }
- self.cnt = self.cnt + 1;
- ogreb_taunt1 ();
- };
- void() ogreb_taunt1 =[ $ogbtaunt1, ogreb_taunt2 ] {};
- void() ogreb_taunt2 =[ $ogbtaunt2, ogreb_taunt3 ] {};
- void() ogreb_taunt3 =[ $ogbtaunt3, ogreb_dance ] {};
- void(entity deadplayer) ogreb_taunt =
- {
- ogre_taunt_sound();
- if (!coop)
- {
- self.enemy = deadplayer; // needed to prevent the ogre from doing anything else
- ogreb_taunt1();
- }
- };
- void(entity deadplayer) ogre_taunt =
- {
- // FIXME: TEMPORARY PLACEHOLDER BEHAVIOR
- ogre_taunt_sound();
- if (!coop)
- {
- self.enemy = deadplayer; // needed to prevent the ogre from doing anything else
- ogre_taunt1();
- }
- };
- // Supa, Ogre taunt behavior end
- //ijed Chooses attack type depending on weapon
- void() ogre_chooseattack =
- {
- if (self.spawnflags & NAIL_OGRE) //ijed Chooses attack type
- ogre_nail1();
- else if (self.spawnflags & ROCKET_OGRE)
- ogre_rocket1();
- else
- ogre_grenade1();
- };
- void() monster_ogre_go =
- {
- self.solid = SOLID_SLIDEBOX;
- self.movetype = MOVETYPE_STEP;
- //Which mesh to use
- if (self.spawnflags & BERSERK_OGRE)
- setmodel (self, "progs/ogreb.mdl");
- else if (self.spawnflags & ROCKET_OGRE)
- setmodel (self, "progs/ogrer.mdl");
- else
- setmodel (self, "progs/ogre.mdl");
- setsize (self, VEC_HULL_MIN, VEC_HULL_MAX); // gb, idea by Lardarse
- // setsize (self, VEC_HULL2_MIN, VEC_HULL2_MAX); // FIXME - custom bbox
- self.health = MonsterHealth(200);
- //What to think
- if (self.spawnflags & BERSERK_OGRE)
- {
- self.th_stand = ogreb_stand1;
- self.th_walk = ogreb_walk1;
- self.th_run = ogreb_run1;
- self.th_taunt = ogreb_taunt;
- }
- else if (self.spawnflags & ROCKET_OGRE)
- {
- self.th_stand = ogrer_stand1;
- self.th_walk = ogrer_walk1;
- self.th_run = ogrer_run1;
- self.th_missile = ogre_chooseattack;
- self.th_taunt = ogre_taunt;
- }
- else //grenade and nails
- {
- self.th_stand = ogre_stand1;
- self.th_walk = ogre_walk1;
- self.th_run = ogre_run1;
- self.th_missile = ogre_chooseattack;
- self.th_taunt = ogre_taunt;
- }
- self.th_die = ogre_die;
- self.th_melee = ogre_melee;
- self.th_pain = ogre_pain;
- self.th_submerged = SUB_Null;
- self.always_infight = TRUE;
- if (!self.noroam)
- self.should_roam = TRUE;
- Gyro_Object_Activate (self, 90000);
- walkmonster_start();
- };
- /*QUAKED monster_ogre (1 0 0) (-32 -32 -24) (32 32 64) Ambush
- */
- void() monster_ogre =
- {
- if (deathmatch)
- {
- remove(self);
- return;
- }
- legacy_checkfortweaks(); // gb
- // Supa, precache all versions anyway in case of a savegame load, otherwise we may run into cases where the qcvm loads
- // different models in a different order than what the savegame had, which can cause nice modelindex mismatches
- //what to precache
- // if (self.spawnflags & BERSERK_OGRE)
- // {
- precache_model ("progs/ogreb.mdl");
- precache_sound ("ogre/ogbsawatk.wav");
- // }
- // else if (self.spawnflags & NAIL_OGRE)
- // {
- precache_model ("progs/ogre.mdl"); // FIXME differentiate between grenade and nail ogre
- precache_sound ("ogre/flak.wav");
- precache_sound ("ogre/ogsawatk.wav");
- // }
- // else if (self.spawnflags & ROCKET_OGRE)
- // {
- precache_model ("progs/ogrer.mdl");
- precache_model ("progs/missile.mdl");
- precache_sound ("ogre/orocket.wav");
- precache_sound ("ogre/orockex.wav");
- precache_sound ("ogre/ogsawatk.wav");
- // }
- // else //Grenadier
- // {
- precache_model ("progs/ogre.mdl");
- precache_model ("progs/grenade.mdl"); // is this even needed? No, but ask Carmack :P
- precache_sound ("ogre/ogsawatk.wav");
- // }
- //precache_model ("progs/h_ogre.mdl"); //And it's outta here
- precache_model ("progs/gib_ogre1.mdl");
- precache_model ("progs/gib_ogre2.mdl");
- precache_model ("progs/gib_ogre3.mdl");
- precache_model ("progs/gib_ogre4.mdl");
- precache_model ("progs/gib_ogre5.mdl");
- precache_sound ("ogre/ogdrag.wav");
- precache_sound ("ogre/ogdth1.wav");
- precache_sound ("ogre/ogdth2.wav");
- //Taunt Sounds
- precache_sound ("ogre/ogtaunt2.wav");
- precache_sound ("ogre/ogtaunt3.wav");
- precache_sound ("ogre/ogdrown1.wav");
- precache_sound ("ogre/ogidle1.wav");
- precache_sound ("ogre/ogidle2.wav");
- precache_sound ("ogre/ogpain1.wav");
- precache_sound ("ogre/ogpain2.wav");
- precache_sound ("ogre/ogpain3.wav");
- precache_sound ("ogre/ogpain4.wav");
- precache_sound ("ogre/ogpain5.wav");
- // footsteps, gb
- precache_sound ("ogre/ogstep1.wav");
- precache_sound ("ogre/ogstep2.wav");
- precache_sound ("ogre/ogstep3.wav");
- precache_sound ("ogre/ogstep4.wav");
- precache_sound ("ogre/ogstep5.wav");
- precache_sound ("ogre/ogstep6.wav");
- precache_sound ("ogre/ogstep7.wav");
- precache_sound ("ogre/ogstep8.wav");
- precache_sound ("ogre/ogtalk1.wav");
- precache_sound ("ogre/ogtalk2.wav");
- precache_sound ("ogre/ogtalk3.wav");
- precache_sound ("ogre/ogtalk4.wav");
- precache_sound ("ogre/ogwake.wav");
- precache_sound ("ogre/ogwake2.wav");
- precache_sound ("ogre/ogsawloop.wav");
- self.go = monster_ogre_go;
- if(!CheckGroup()) self.go();
- };
- //ijed Ok, nailgunners run but grenadiers stand and shoot, lets see how the playtest works out. As a note, the marksman is still
- //in, but his only difference is that he doesn't shout when seeing the player - he's still there to not break older maps.
- //If anyone has an idea for a use for him, lets see about implementing it.
- void() monster_ogre_marksman =
- {
- monster_ogre ();
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement