home *** CD-ROM | disk | FTP | other *** search
- /*
- ==============================================================================
- Ludovic Texier - Nov 2, 96
-
- MANGA BABE, based on
- OGRE code....
-
- ==============================================================================
- */
-
- $cd /quake/test/progs/manga3.mdl
- $origin 0 0 -100
-
- $base base
- $skin skin10
-
- $frame base
-
- $frame st1 st2 st3 st4 st5 st6 st7 st8
-
- $frame wa1 wa2 wa3 wa4 wa5 wa6 wa7 wa8 wa9
- $frame wa10 wa11 wa12 wa13 wa14 wa15 wa16 wa17 wa18
-
- $frame ki1 ki2 ki3 ki4 ki5 ki6 ki7
- $frame ki8 ki9 ki10 ki11 ki12 ki13 ki14 ki15
-
-
- $frame at1 at2 at3 at4 at5 at6 at7 at8 at9 at10 at11
-
-
- $frame pa1 pa2 pa3 pa4 pa5 pa6
-
-
-
- $frame die1 die2 die3 die4 die5 die6
- $frame die7 die8 die9 die10 die11 die12
- $frame die13 die14 die15 die16
- $frame die17 die18 //add these to fix a frame problem but there's really only 16 frames ...???
-
-
- //=============================================================================
-
-
- void() mangaGrenadeExplode =
- {
- T_RadiusDamage (self, self.owner, 40, world);
- sound (self, CHAN_VOICE, "weapons/r_exp3.wav", 1, ATTN_NORM);
-
- WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
- WriteByte (MSG_BROADCAST, TE_EXPLOSION);
- WriteCoord (MSG_BROADCAST, self.origin_x);
- WriteCoord (MSG_BROADCAST, self.origin_y);
- WriteCoord (MSG_BROADCAST, self.origin_z);
-
- self.velocity = '0 0 0';
- self.touch = SUB_Null;
- setmodel (self, "progs/s_explod.spr");
- self.solid = SOLID_NOT;
- s_explode1 ();
- };
-
- void() mangaGrenadeTouch =
- {
- if (other == self.owner)
- return; // don't explode on owner
- if (other.takedamage == DAMAGE_AIM)
- {
- mangaGrenadeExplode();
- return;
- }
- sound (self, CHAN_VOICE, "weapons/bounce.wav", 1, ATTN_NORM); // bounce sound
- if (self.velocity == '0 0 0')
- self.avelocity = '0 0 0';
- };
-
- /*
- ================
- mangaFireGrenade
- ================
- */
- void() mangaFireGrenade =
- {
- local entity missile, mpuff;
-
- self.effects = self.effects | EF_MUZZLEFLASH;
-
- sound (self, CHAN_WEAPON, "weapons/grenade.wav", 1, ATTN_NORM);
-
- missile = spawn ();
- missile.owner = self;
- missile.movetype = MOVETYPE_BOUNCE;
- missile.solid = SOLID_BBOX;
-
- // set missile speed
-
- makevectors (self.angles);
-
- missile.velocity = normalize(self.enemy.origin - self.origin);
- missile.velocity = missile.velocity * 600;
- missile.velocity_z = 200;
-
- missile.avelocity = '300 300 300';
-
- missile.angles = vectoangles(missile.velocity);
-
- missile.touch = mangaGrenadeTouch;
-
- // set missile duration
- missile.nextthink = time + 2.5;
- missile.think = mangaGrenadeExplode;
-
- setmodel (missile, "progs/grenade.mdl");
- setsize (missile, '0 0 0', '0 0 0');
- setorigin (missile, self.origin);
- };
-
-
- //=============================================================================
-
- /*
- ================
- highkick
-
- FIXME
- ================
- */
- void(float side) highkick =
- {
- local vector delta;
- local float ldmg;
-
- if (!self.enemy)
- return;
- if (!CanDamage (self.enemy, self))
- return;
-
- ai_charge(10);
-
- delta = self.enemy.origin - self.origin;
-
- if (vlen(delta) > 100)
- return;
-
- ldmg = (random() + random() + random()) * 4;
- T_Damage (self.enemy, self, self, ldmg);
-
- 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);
- }
- };
-
-
- void() manga_stand1 =[ $st1, manga_stand2 ] {ai_stand();};
- void() manga_stand2 =[ $st2, manga_stand3 ] {ai_stand();};
- void() manga_stand3 =[ $st3, manga_stand4 ] {ai_stand();};
- void() manga_stand4 =[ $st4, manga_stand5 ] {ai_stand();};
- void() manga_stand5 =[ $st5, manga_stand6 ] {
- if (random() < 0.2)
- sound (self, CHAN_VOICE, "kungfu.wav", 1, ATTN_IDLE);
- ai_stand();
- };
- void() manga_stand6 =[ $st6, manga_stand7 ] {ai_stand();};
- void() manga_stand7 =[ $st7, manga_stand8 ] {ai_stand();};
- void() manga_stand8 =[ $st8, manga_stand1 ] {ai_stand();};
-
- void() manga_walk1 =[ $wa1, manga_walk2 ] {ai_walk(2);};
- void() manga_walk2 =[ $wa2, manga_walk3 ] {ai_walk(2);};
- void() manga_walk3 =[ $wa3, manga_walk4 ] {
- ai_walk(2);
- if (random() < 0.2)
- sound (self, CHAN_VOICE, "kungfu.wav", 1, ATTN_IDLE);
- };
- void() manga_walk4 =[ $wa4, manga_walk5 ] {ai_walk(2);};
- void() manga_walk5 =[ $wa5, manga_walk6 ] {ai_walk(2);};
- void() manga_walk6 =[ $wa6, manga_walk7 ] {
- ai_walk(5);
- if (random() < 0.1)
- sound (self, CHAN_VOICE, "hiyaa.wav", 1, ATTN_IDLE);
- };
- void() manga_walk7 =[ $wa7, manga_walk8 ] {ai_walk(2);};
- void() manga_walk8 =[ $wa8, manga_walk9 ] {ai_walk(2);};
- void() manga_walk9 =[ $wa9, manga_walk10 ] {ai_walk(2);};
- void() manga_walk10 =[ $wa10, manga_walk11 ] {ai_walk(2);};
- void() manga_walk11 =[ $wa11, manga_walk12 ] {ai_walk(2);};
- void() manga_walk12 =[ $wa12, manga_walk13 ] {ai_walk(2);};
- void() manga_walk13 =[ $wa13, manga_walk14 ] {ai_walk(2);};
- void() manga_walk14 =[ $wa14, manga_walk15 ] {ai_walk(2);};
- void() manga_walk15 =[ $wa15, manga_walk16 ] {ai_walk(2);};
- void() manga_walk16 =[ $wa16, manga_walk17 ] {ai_walk(2);};
- void() manga_walk17 =[ $wa17, manga_walk18 ] {ai_walk(2);};
- void() manga_walk18 =[ $wa18, manga_walk1 ] {ai_walk(2);};
-
-
-
- void() manga_run1 =[ $wa1, manga_run2 ] {ai_run(9);
- if (random() < 0.2)
- sound (self, CHAN_VOICE, "ohdju.wav", 1, ATTN_IDLE);
- };
- void() manga_run2 =[ $wa3, manga_run3 ] {ai_run(12);};
- void() manga_run3 =[ $wa5, manga_run4 ] {ai_run(8);};
- void() manga_run4 =[ $wa7, manga_run5 ] {ai_run(22);};
- void() manga_run5 =[ $wa9, manga_run6 ] {ai_run(16);};
- void() manga_run6 =[ $wa11, manga_run7 ] {ai_run(4);};
- void() manga_run7 =[ $wa13, manga_run8 ] {ai_run(13);};
- void() manga_run8 =[ $wa15, manga_run9 ] {ai_run(24);};
- void() manga_run9 =[ $wa17, manga_run1 ] {ai_run(24);};
-
- void() manga_swing1 =[ $ki1, manga_swing2 ] {ai_charge(11);
- sound (self, CHAN_WEAPON, "hiyaa.wav", 1, ATTN_NORM);
- };
- void() manga_swing2 =[ $ki2, manga_swing3 ] {ai_charge(1);};
- void() manga_swing3 =[ $ki3, manga_swing4 ] {ai_charge(4);};
- void() manga_swing4 =[ $ki4, manga_swing5 ] {ai_charge(13);};
- void() manga_swing5 =[ $ki5, manga_swing6 ] {ai_charge(9); highkick(0);self.angles_y = self.angles_y + random()*25;};
- void() manga_swing6 =[ $ki6, manga_swing7 ] {highkick(200);self.angles_y = self.angles_y + random()* 25;};
- void() manga_swing7 =[ $ki7, manga_swing8 ] {highkick(0);self.angles_y = self.angles_y + random()* 25;};
- void() manga_swing8 =[ $ki8, manga_swing9 ] {highkick(0);self.angles_y = self.angles_y + random()* 25;};
- void() manga_swing9 =[ $ki9, manga_swing10 ] {highkick(0);self.angles_y = self.angles_y + random()* 25;};
- void() manga_swing10 =[ $ki10, manga_swing11 ] {highkick(-200);self.angles_y = self.angles_y + random()* 25;};
- void() manga_swing11 =[ $ki11, manga_swing12 ] {highkick(0);self.angles_y = self.angles_y + random()* 25;};
- void() manga_swing12 =[ $ki12, manga_swing13 ] {ai_charge(3);};
- void() manga_swing13 =[ $ki13, manga_swing14 ] {ai_charge(8);};
- void() manga_swing14 =[ $ki14, manga_run1 ] {ai_charge(9);};
-
-
- void() manga_smash1 =[ $ki1, manga_smash2 ] {ai_charge(6);};
- void() manga_smash2 =[ $ki2, manga_smash3 ] {ai_charge(0);};
- void() manga_smash3 =[ $ki3, manga_smash4 ] {ai_charge(0);};
- void() manga_smash4 =[ $ki4, manga_smash5 ] {ai_charge(1);
- sound (self, CHAN_WEAPON, "tchak.wav", 1, ATTN_NORM);
- };
- void() manga_smash5 =[ $ki5, manga_smash6 ] {ai_charge(4);};
- void() manga_smash6 =[ $ki6, manga_smash7 ] {ai_charge(4); highkick(0);};
- void() manga_smash7 =[ $ki7, manga_smash8 ] {ai_charge(4); highkick(0);};
- void() manga_smash8 =[ $ki8, manga_smash9 ] {ai_charge(10); highkick(0);};
- void() manga_smash9 =[ $ki9, manga_smash10 ] {ai_charge(13); highkick(0);};
- void() manga_smash10 =[ $ki10, manga_smash11 ] {highkick(1);};
- void() manga_smash11 =[ $ki11, manga_smash12 ] {ai_charge(2); highkick(0);
- self.nextthink = self.nextthink + random()*0.2;}; // slight variation
- void() manga_smash12 =[ $ki12, manga_smash13 ] {ai_charge();};
- void() manga_smash13 =[ $ki13, manga_smash14 ] {ai_charge(4);};
- void() manga_smash14 =[ $ki14, manga_run1 ] {ai_charge(12);};
-
- void() manga_nail1 =[ $at1, manga_nail2 ] {ai_face();};
- void() manga_nail2 =[ $at2, manga_nail3 ] {ai_face();};
- void() manga_nail3 =[ $at3, manga_nail4 ] {ai_face();};
- void() manga_nail4 =[ $at4, manga_nail5 ] {ai_face();};
- void() manga_nail5 =[ $at5, manga_nail6 ] {ai_face();};
- void() manga_nail6 =[ $at6, manga_nail7 ] {ai_face();};
- void() manga_nail7 =[ $at7, manga_nail8 ] {ai_face();};
- void() manga_nail8 =[ $at8, manga_nail9 ] {ai_face();mangaFireGrenade();};
- void() manga_nail9 =[ $at9, manga_nail10 ] {ai_face();};
- void() manga_nail10 =[ $at10, manga_run1 ] {ai_face();};
-
-
-
- void() manga_pain1 =[ $pa1, manga_pain2 ] {};
- void() manga_pain2 =[ $pa2, manga_pain3 ] {};
- void() manga_pain3 =[ $pa3, manga_pain4 ] {};
- void() manga_pain4 =[ $pa4, manga_pain5 ] {};
- void() manga_pain5 =[ $pa5, manga_pain6 ] {};
- void() manga_pain6 =[ $pa6, manga_run1 ] {};
-
-
-
- void(entity attacker, float damage) manga_pain =
- {
- local float r;
-
- // don't make multiple pain sounds right after each other
- if (self.pain_finished > time)
- return;
-
-
- sound (self, CHAN_VOICE, "ha.wav", 1, ATTN_NORM);
-
-
-
-
- manga_pain1 ();
- self.pain_finished = time + 1;
-
-
- };
-
- void() manga_die1 =[ $die1, manga_die2 ] {};
- void() manga_die2 =[ $die2, manga_die3 ] {};
- void() manga_die3 =[ $die3, manga_die4 ]
- {self.solid = SOLID_NOT;
- self.ammo_rockets = 2;DropBackpack();};
- void() manga_die4 =[ $die4, manga_die5 ] {};
- void() manga_die5 =[ $die5, manga_die6 ] {};
- void() manga_die6 =[ $die6, manga_die7 ] {};
- void() manga_die7 =[ $die7, manga_die8 ] {};
- void() manga_die8 =[ $die8, manga_die9 ] {};
- void() manga_die9 =[ $die9, manga_die10 ] {};
- void() manga_die10 =[ $die10, manga_die11 ] {};
- void() manga_die11 =[ $die11, manga_die12 ] {};
- void() manga_die12 =[ $die12, manga_die13 ] {};
- void() manga_die13 =[ $die13, manga_die14 ] {};
- void() manga_die14 =[ $die14, manga_die15 ] {};
- void() manga_die15 =[ $die15, manga_die16 ] {};
- void() manga_die16 =[ $die16, manga_die17 ] {};
- /* I had to add those 2 lines, it works that way ....*/
- void() manga_die17 =[ $die17, manga_die18 ] {};
- void() manga_die18 =[ $die18, manga_die18 ] {};
-
-
-
-
- void() manga_die =
- {
- // check for gib
- if (self.health < -80)
- {
- sound (self, CHAN_VOICE, "player/udeath.wav", 1, ATTN_NORM);
- ThrowHead ("progs/gib3.mdl", self.health);
- ThrowGib ("progs/gib3.mdl", self.health);
- ThrowGib ("progs/gib3.mdl", self.health);
- ThrowGib ("progs/gib3.mdl", self.health);
- return;
- }
-
- sound (self, CHAN_VOICE, "died.wav", 1, ATTN_NORM);
-
-
- manga_die1 ();
- };
-
- void() manga_melee =
- {
- if (random() > 0.5)
- manga_smash1 ();
- else
- manga_swing1 ();
- };
-
-
- void() monster_manga =
- {
- if (deathmatch)
- {
- remove(self);
- return;
- }
- precache_model ("progs/manga3.mdl");
- precache_model ("progs/h_ogre.mdl");
- precache_model ("progs/grenade.mdl");
- precache_sound ("hiyaa.wav");
- precache_sound ("tchak.wav");
- precache_sound ("kungfu.wav");
- precache_sound ("ohdju.wav");
- precache_sound ("ha.wav");
- precache_sound ("died.wav");
-
-
-
-
-
-
- self.solid = SOLID_SLIDEBOX;
- self.movetype = MOVETYPE_STEP;
-
- setmodel (self, "progs/manga3.mdl");
-
-
-
- setsize (self, '-20 -20 0', '20 20 80');
-
- self.health = 250;
-
- self.th_stand = manga_stand1;
- self.th_walk = manga_walk1;
- self.th_run = manga_run1;
- self.th_die = manga_die;
- self.th_melee = manga_melee;
- self.th_missile = manga_nail1;
- self.th_pain = manga_pain;
-
- walkmonster_start();
- };
-
-
-