diff --git a/client.qc b/client.qc index 4f2d714..01181d0 100644 --- a/client.qc +++ b/client.qc @@ -28,6 +28,7 @@ Use mangle instead of angle, so you can set pitch or roll as well as yaw. 'pitc */ void() info_intermission = { + self.angles = self.mangle; // so C can get at it }; @@ -302,8 +303,14 @@ Returns the entity to spawn at */ entity() SelectSpawnPoint = { - local entity spot, thing; - local float pcount; + local entity spot, newspot, thing; + local float numspots, totalspots; + local float rnum, pcount; + local float rs; + local entity spots; + + numspots = 0; + totalspots = 0; // testinfo_player_start is only found in regioned levels spot = find (world, classname, "testplayerstart"); @@ -311,37 +318,61 @@ entity() SelectSpawnPoint = return spot; // choose a info_player_deathmatch point - spot = lastspawn; - while (1) - { - spot = find(spot, classname, "info_player_deathmatch"); - if (spot != world) - { - if (spot == lastspawn) - return lastspawn; - pcount = 0; - thing = findradius(spot.origin, 50); - while(thing) - { - if (thing.classname == "player") - pcount = pcount + 1; - thing = thing.chain; - } - if (pcount == 0) - { - lastspawn = spot; - return spot; - } - } - } - - spot = find (world, classname, "info_player_start"); - if (!spot) - error ("PutClientInServer: no info_player_start on level"); - - return spot; -}; +// ok, find all spots that don't have players nearby + + spots = world; + spot = find (world, classname, "info_player_deathmatch"); + while (spot) + { + totalspots = totalspots + 1; + + thing=findradius(spot.origin, 256); + pcount=0; + while (thing) + { + if (thing.classname == "player") + pcount=pcount + 1; + thing=thing.chain; + } + if (pcount == 0) { + spot.goalentity = spots; + spots = spot; + numspots = numspots + 1; + } + + // Get the next spot in the chain + spot = find (spot, classname, "info_player_deathmatch"); + } + totalspots=totalspots - 1; + if (!numspots) { + // ack, they are all full, just pick one at random +// bprint (PRINT_HIGH, "Ackk! All spots are full. Selecting random spawn spot\n"); + totalspots = rint((random() * totalspots)); + spot = find (world, classname, "info_player_deathmatch"); + while (totalspots > 0) { + totalspots = totalspots - 1; + spot = find (spot, classname, "info_player_deathmatch"); + } + return spot; + } + +// We now have the number of spots available on the map in numspots + + // Generate a random number between 1 and numspots + + numspots = numspots - 1; + + numspots = rint((random() * numspots ) ); + + spot = spots; + while (numspots > 0) { + spot = spot.goalentity; + numspots = numspots - 1; + } + return spot; + +}; void() DecodeLevelParms; void() PlayerDie; @@ -459,6 +490,11 @@ void() PutClientInServer = self.view_ofs = '0 0 22'; +// Mod - Xian (May.20.97) +// Bug where player would have velocity from their last kill + + self.velocity = '0 0 0'; + player_stand1 (); makevectors(self.angles); @@ -1113,6 +1149,19 @@ void(entity targ, entity attacker) ClientObituary = return; } + if (targ.deathtype == "squish") + { + targ.deathtype = ""; + if (attacker != world) + { + bprint (PRINT_MEDIUM, attacker.netname); + bprint (PRINT_MEDIUM," squishes "); + bprint (PRINT_MEDIUM,targ.netname); + bprint (PRINT_MEDIUM,"\n"); + attacker.frags = attacker.frags + 1; + return; + } + } if (attacker.classname == "player") { //ZOID 12-13-96: self.team doesn't work in QW. Use keys @@ -1200,13 +1249,36 @@ void(entity targ, entity attacker) ClientObituary = } if (rnum == IT_ROCKET_LAUNCHER) { - deathstring = " rides "; - deathstring2 = "'s rocket\n"; - if (targ.health < -40) + + if (attacker.super_damage_finished > 0) { - deathstring = " was gibbed by "; - deathstring2 = "'s rocket\n" ; + rnum = random(); + if (rnum < 0.3) + deathstring = " was brutalized by "; + else if (rnum < 0.6) + deathstring = " was smeared by "; + else + { + bprint (PRINT_MEDIUM, attacker.netname); + bprint (PRINT_MEDIUM, " rips "); + bprint (PRINT_MEDIUM, targ.netname); + bprint (PRINT_MEDIUM, " a new one\n"); + return; + } + deathstring2 = "'s quad rocket\n"; } + else + { + deathstring = " rides "; + deathstring2 = "'s rocket\n"; + if (targ.health < -40) + { + deathstring = " was gibbed by "; + deathstring2 = "'s rocket\n" ; + } + } + + } if (rnum == IT_LIGHTNING) { diff --git a/defs.qc b/defs.qc index ea9f874..ed4d69b 100644 --- a/defs.qc +++ b/defs.qc @@ -486,6 +486,7 @@ float AS_MISSILE = 4; // // player only fields // +.float voided; .float walkframe; .float attack_finished; diff --git a/doors.qc b/doors.qc index b7a06ce..088e2ee 100644 --- a/doors.qc +++ b/doors.qc @@ -31,8 +31,9 @@ void() door_go_up; void() door_blocked = { - T_Damage (other, self, self, self.dmg); - + other.deathtype = "squish"; + T_Damage (other, self, self.goalentity, self.dmg); + other.deathtype = ""; // if a door has a negative wait, it would never come back if blocked, // so let it just squash the object to death real fast if (self.wait >= 0) @@ -50,7 +51,7 @@ void() door_hit_top = sound (self, CHAN_NO_PHS_ADD+CHAN_VOICE, self.noise1, 1, ATTN_NORM); self.state = STATE_TOP; if (self.spawnflags & DOOR_TOGGLE) - return; // don't come down automatically + return; // don't come down automatically self.think = door_go_down; self.nextthink = self.ltime + self.wait; }; @@ -77,10 +78,10 @@ void() door_go_down = void() door_go_up = { if (self.state == STATE_UP) - return; // allready going up + return; // allready going up if (self.state == STATE_TOP) - { // reset top wait time + { // reset top wait time self.nextthink = self.ltime + self.wait; return; } @@ -103,8 +104,8 @@ ACTIVATION FUNCTIONS void() door_fire = { - local entity oself; - local entity starte; + local entity oself; + local entity starte; if (self.owner != self) objerror ("door_fire: self.owner != self"); @@ -114,7 +115,7 @@ void() door_fire = if (self.items) sound (self, CHAN_VOICE, self.noise4, 1, ATTN_NORM); - self.message = string_null; // no more message + self.message = string_null; // no more message oself = self; if (self.spawnflags & DOOR_TOGGLE) @@ -134,8 +135,10 @@ void() door_fire = // trigger all paired doors starte = self; + do { + self.goalentity = activator; // Who fired us door_go_up (); self = self.enemy; } while ( (self != starte) && (self != world) ); @@ -147,9 +150,10 @@ void() door_use = { local entity oself; - self.message = ""; // door message are for touch only - self.owner.message = ""; + self.message = ""; // door message are for touch only + self.owner.message = ""; self.enemy.message = ""; + oself = self; self = self.owner; door_fire (); @@ -180,7 +184,7 @@ void() door_killed = oself = self; self = self.owner; self.health = self.max_health; - self.takedamage = DAMAGE_NO; // wil be reset upon return + self.takedamage = DAMAGE_NO; // wil be reset upon return door_use (); self = oself; }; @@ -243,7 +247,7 @@ void() door_touch = else if (world.worldtype == 1) { centerprint (other, "You need the gold runekey"); - sound (self, CHAN_VOICE, self.noise3, 1, ATTN_NORM); + sound (self, CHAN_VOICE, self.noise3, 1, ATTN_NORM); } else if (world.worldtype == 0) { @@ -257,7 +261,7 @@ void() door_touch = other.items = other.items - self.items; self.touch = SUB_Null; if (self.enemy) - self.enemy.touch = SUB_Null; // get paired door + self.enemy.touch = SUB_Null; // get paired door door_use (); }; @@ -272,8 +276,8 @@ SPAWNING FUNCTIONS entity(vector fmins, vector fmaxs) spawn_field = { - local entity trigger; - local vector t1, t2; + local entity trigger; + local vector t1, t2; trigger = spawn(); trigger.movetype = MOVETYPE_NONE; @@ -315,15 +319,15 @@ LinkDoors */ void() LinkDoors = { - local entity t, starte; - local vector cmins, cmaxs; + local entity t, starte; + local vector cmins, cmaxs; if (self.enemy) - return; // already linked by another door + return; // already linked by another door if (self.spawnflags & 4) { self.owner = self.enemy = self; - return; // don't want to link this door + return; // don't want to link this door } cmins = self.mins; @@ -334,7 +338,7 @@ void() LinkDoors = do { - self.owner = starte; // master door + self.owner = starte; // master door if (self.health) starte.health = self.health; @@ -343,10 +347,10 @@ void() LinkDoors = if (self.message != "") starte.message = self.message; - t = find (t, classname, self.classname); + t = find (t, classname, self.classname); if (!t) { - self.enemy = starte; // make the chain a loop + self.enemy = starte; // make the chain a loop // shootable, fired, or key doors just needed the owner/enemy links, // they don't spawn a field @@ -400,20 +404,20 @@ START_OPEN causes the door to move to its destination when spawned, and operate Key doors are allways wait -1. -"message" is printed when the door is touched if it is a trigger door and it hasn't been fired yet -"angle" determines the opening direction +"message" is printed when the door is touched if it is a trigger door and it hasn't been fired yet +"angle" determines the opening direction "targetname" if set, no touch field will be spawned and a remote button or trigger field activates the door. -"health" if set, door must be shot open -"speed" movement speed (100 default) -"wait" wait before returning (3 default, -1 = never return) -"lip" lip remaining at end of move (8 default) -"dmg" damage to inflict when blocked (2 default) +"health" if set, door must be shot open +"speed" movement speed (100 default) +"wait" wait before returning (3 default, -1 = never return) +"lip" lip remaining at end of move (8 default) +"dmg" damage to inflict when blocked (2 default) "sounds" -0) no sound -1) stone -2) base -3) stone chain -4) screechy metal +0) no sound +1) stone +2) base +3) stone chain +4) screechy metal */ void() func_door = @@ -487,7 +491,7 @@ void() func_door = self.max_health = self.health; self.solid = SOLID_BSP; self.movetype = MOVETYPE_PUSH; - setorigin (self, self.origin); + setorigin (self, self.origin); setmodel (self, self.model); self.classname = "door"; @@ -555,11 +559,11 @@ void() fd_secret_move5; void() fd_secret_move6; void() fd_secret_done; -float SECRET_OPEN_ONCE = 1; // stays open -float SECRET_1ST_LEFT = 2; // 1st move is left of arrow -float SECRET_1ST_DOWN = 4; // 1st move is down from arrow -float SECRET_NO_SHOOT = 8; // only opened by trigger -float SECRET_YES_SHOOT = 16; // shootable even if targeted +float SECRET_OPEN_ONCE = 1; // stays open +float SECRET_1ST_LEFT = 2; // 1st move is left of arrow +float SECRET_1ST_DOWN = 4; // 1st move is down from arrow +float SECRET_NO_SHOOT = 8; // only opened by trigger +float SECRET_YES_SHOOT = 16; // shootable even if targeted void () fd_secret_use = @@ -572,9 +576,9 @@ void () fd_secret_use = if (self.origin != self.oldorigin) return; - self.message = string_null; // no more message + self.message = string_null; // no more message - SUB_UseTargets(); // fire all targets / killtargets + SUB_UseTargets(); // fire all targets / killtargets if (!(self.spawnflags & SECRET_NO_SHOOT)) { @@ -588,7 +592,7 @@ void () fd_secret_use = sound(self, CHAN_VOICE, self.noise1, 1, ATTN_NORM); self.nextthink = self.ltime + 0.1; - temp = 1 - (self.spawnflags & SECRET_1ST_LEFT); // 1 or -1 + temp = 1 - (self.spawnflags & SECRET_1ST_LEFT); // 1 or -1 makevectors(self.mangle); if (!self.t_width) @@ -642,7 +646,7 @@ void () fd_secret_move3 = void () fd_secret_move4 = { sound(self, CHAN_VOICE, self.noise2, 1, ATTN_NORM); - SUB_CalcMove(self.dest1, self.speed, fd_secret_move5); + SUB_CalcMove(self.dest1, self.speed, fd_secret_move5); }; // Wait 1 second... @@ -665,7 +669,7 @@ void () fd_secret_done = { self.health = 10000; self.takedamage = DAMAGE_YES; - self.th_pain = fd_secret_use; + self.th_pain = fd_secret_use; self.th_die = fd_secret_use; } sound(self, CHAN_NO_PHS_ADD+CHAN_VOICE, self.noise3, 1, ATTN_NORM); @@ -711,7 +715,7 @@ wait = # of seconds before coming back always_shoot = even if targeted, keep shootable t_width = override WIDTH to move back (or height if going down) t_length = override LENGTH to move sideways -"dmg" damage to inflict when blocked (2 default) +"dmg" damage to inflict when blocked (2 default) If a secret door has a targetname, it will only be opened by it's botton or trigger, not by damage. "sounds" @@ -760,7 +764,7 @@ void () func_door_secret = self.movetype = MOVETYPE_PUSH; self.classname = "door"; setmodel (self, self.model); - setorigin (self, self.origin); + setorigin (self, self.origin); self.touch = secret_touch; self.blocked = secret_blocked; @@ -774,5 +778,5 @@ void () func_door_secret = } self.oldorigin = self.origin; if (!self.wait) - self.wait = 5; // 5 seconds before closing + self.wait = 5; // 5 seconds before closing }; diff --git a/items.qc b/items.qc index 840a38e..ee874eb 100644 --- a/items.qc +++ b/items.qc @@ -24,6 +24,129 @@ void() noclass = remove (self); }; +void() q_touch; + +void() q_touch = +{ +local entity stemp; +local float best; +local string s; + + if (other.classname != "player") + return; + if (other.health <= 0) + return; + + self.mdl = self.model; + + sound (other, CHAN_VOICE, self.noise, 1, ATTN_NORM); + stuffcmd (other, "bf\n"); + self.solid = SOLID_NOT; + other.items = other.items | IT_QUAD; + self.model = string_null; + +// do the apropriate action + other.super_time = 1; + other.super_damage_finished = self.cnt; + + s=ftos(rint(other.super_damage_finished - time)); + + bprint (PRINT_LOW, other.netname); + bprint (PRINT_LOW, " recovered a Quad with "); + bprint (PRINT_LOW, s); + bprint (PRINT_LOW, " seconds remaining!\n"); + + + + activator = other; + SUB_UseTargets(); // fire all targets / killtargets +}; + + +void(float timeleft) DropQuad = +{ + local entity item; + + item = spawn(); + item.origin = self.origin - '0 0 24'; + + item.velocity_z = 300; + item.velocity_x = -100 + (random() * 200); + item.velocity_y = -100 + (random() * 200); + + item.flags = FL_ITEM; + item.solid = SOLID_TRIGGER; + item.movetype = MOVETYPE_TOSS; + item.noise = "items/damage.wav"; + setmodel (item, "progs/quaddama.mdl"); + setsize (item, '-16 -16 -24', '16 16 32'); + item.cnt = time + timeleft; + item.touch = q_touch; + item.nextthink = time + timeleft; // remove it with the time left on it + item.think = SUB_Remove; +}; + + +void() r_touch; + +void() r_touch = +{ +local entity stemp; +local float best; +local string s; + + if (other.classname != "player") + return; + if (other.health <= 0) + return; + + self.mdl = self.model; + + sound (other, CHAN_VOICE, self.noise, 1, ATTN_NORM); + stuffcmd (other, "bf\n"); + self.solid = SOLID_NOT; + other.items = other.items | IT_INVISIBILITY; + self.model = string_null; + +// do the apropriate action + other.invisible_time = 1; + other.invisible_finished = self.cnt; + s=ftos(rint(other.invisible_finished - time)); + bprint (PRINT_LOW, other.netname); + bprint (PRINT_LOW, " recovered a Ring with "); + bprint (PRINT_LOW, s); + bprint (PRINT_LOW, " seconds remaining!\n"); + + + activator = other; + SUB_UseTargets(); // fire all targets / killtargets +}; + + +void(float timeleft) DropRing = +{ + local entity item; + + item = spawn(); + item.origin = self.origin - '0 0 24'; + + item.velocity_z = 300; + item.velocity_x = -100 + (random() * 200); + item.velocity_y = -100 + (random() * 200); + + item.flags = FL_ITEM; + item.solid = SOLID_TRIGGER; + item.movetype = MOVETYPE_TOSS; + item.noise = "items/inv1.wav"; + setmodel (item, "progs/invisibl.mdl"); + setsize (item, '-16 -16 -24', '16 16 32'); + item.cnt = time + timeleft; + item.touch = r_touch; + item.nextthink = time + timeleft; // remove after 30 seconds + item.think = SUB_Remove; +}; + + /* @@ -1438,3 +1561,5 @@ void() DropBackpack = item.nextthink = time + 120; // remove after 2 minutes item.think = SUB_Remove; }; + + diff --git a/player.qc b/player.qc index 4e41ddf..ac33985 100644 --- a/player.qc +++ b/player.qc @@ -409,7 +409,7 @@ local float rs; // water death sounds if (self.waterlevel == 3) { - DeathBubbles(20); + DeathBubbles(5); sound (self, CHAN_VOICE, "player/h2odeath.wav", 1, ATTN_NONE); return; } @@ -546,8 +546,35 @@ void() GibPlayer = void() PlayerDie = { local float i; - + local string s; self.items = self.items - (self.items & IT_INVISIBILITY); + + if ((stof(infokey(world,"dq"))) != 0) + { + if (self.super_damage_finished > 0) + { + DropQuad (self.super_damage_finished - time); + bprint (PRINT_LOW, self.netname); + bprint (PRINT_LOW, " lost a quad with "); + s = ftos(rint(self.super_damage_finished - time)); + bprint (PRINT_LOW, s); + bprint (PRINT_LOW, " seconds remaining\n"); + } + } + + if ((stof(infokey(world,"dr"))) != 0) + { + if (self.invisible_finished > 0) + { + bprint (PRINT_LOW, self.netname); + bprint (PRINT_LOW, " lost a ring with "); + s = ftos(rint(self.invisible_finished - time)); + bprint (PRINT_LOW, s); + bprint (PRINT_LOW, " seconds remaining\n"); + DropRing (self.invisible_finished - time); + } + } + self.invisible_finished = 0; // don't die as eyes self.invincible_finished = 0; self.super_damage_finished = 0; diff --git a/progs.src b/progs.src index 0902071..5b934a1 100644 --- a/progs.src +++ b/progs.src @@ -1,4 +1,4 @@ -../progs.dat +./qwprogs.dat defs.qc subs.qc diff --git a/weapons.qc b/weapons.qc index 68c33c3..e3e5f85 100644 --- a/weapons.qc +++ b/weapons.qc @@ -352,6 +352,11 @@ void() T_MissileTouch = if (other == self.owner) return; // don't explode on owner + if (self.voided) { + return; + } + self.voided = 1; + if (pointcontents(self.origin) == CONTENT_SKY) { remove(self); @@ -413,6 +418,7 @@ void() W_FireRocket = newmis.angles = vectoangles(newmis.velocity); newmis.touch = T_MissileTouch; + newmis.voided = 0; // set newmis duration newmis.nextthink = time + 5; @@ -545,6 +551,12 @@ void() W_FireLightning = void() GrenadeExplode = { + if (self.voided) { + return; + } + self.voided = 1; + + T_RadiusDamage (self, self.owner, 120, world); WriteByte (MSG_MULTICAST, SVC_TEMPENTITY); @@ -586,6 +598,7 @@ void() W_FireGrenade = WriteByte (MSG_ONE, SVC_SMALLKICK); newmis = spawn (); + newmis.voided=0; newmis.owner = self; newmis.movetype = MOVETYPE_BOUNCE; newmis.solid = SOLID_BBOX; @@ -636,6 +649,7 @@ Used for both the player and the ogre void(vector org, vector dir) launch_spike = { newmis = spawn (); + newmis.voided=0; newmis.owner = self; newmis.movetype = MOVETYPE_FLYMISSILE; newmis.solid = SOLID_BBOX; @@ -709,6 +723,11 @@ local float rand; if (other == self.owner) return; + if (self.voided) { + return; + } + self.voided = 1; + if (other.solid == SOLID_TRIGGER) return; // trigger field, do nothing @@ -749,6 +768,12 @@ local float rand; if (other == self.owner) return; + if (self.voided) { + return; + } + self.voided = 1; + + if (other.solid == SOLID_TRIGGER) return; // trigger field, do nothing diff --git a/world.qc b/world.qc index 363f436..4b71ee8 100644 --- a/world.qc +++ b/world.qc @@ -155,7 +155,7 @@ void() main = }; -entity lastspawn; +entity lastspawn; //======================= /*QUAKED worldspawn (0 0 0) ? @@ -186,44 +186,44 @@ void() worldspawn = // the area based ambient sounds MUST be the first precache_sounds -// player precaches - W_Precache (); // get weapon precaches +// player precaches + W_Precache (); // get weapon precaches // sounds used from C physics code - precache_sound ("demon/dland2.wav"); // landing thud - precache_sound ("misc/h2ohit1.wav"); // landing splash + precache_sound ("demon/dland2.wav"); // landing thud + precache_sound ("misc/h2ohit1.wav"); // landing splash // setup precaches allways needed - precache_sound ("items/itembk2.wav"); // item respawn sound - precache_sound ("player/plyrjmp8.wav"); // player jump - precache_sound ("player/land.wav"); // player landing - precache_sound ("player/land2.wav"); // player hurt landing - precache_sound ("player/drown1.wav"); // drowning pain - precache_sound ("player/drown2.wav"); // drowning pain - precache_sound ("player/gasp1.wav"); // gasping for air - precache_sound ("player/gasp2.wav"); // taking breath - precache_sound ("player/h2odeath.wav"); // drowning death + precache_sound ("items/itembk2.wav"); // item respawn sound + precache_sound ("player/plyrjmp8.wav"); // player jump + precache_sound ("player/land.wav"); // player landing + precache_sound ("player/land2.wav"); // player hurt landing + precache_sound ("player/drown1.wav"); // drowning pain + precache_sound ("player/drown2.wav"); // drowning pain + precache_sound ("player/gasp1.wav"); // gasping for air + precache_sound ("player/gasp2.wav"); // taking breath + precache_sound ("player/h2odeath.wav"); // drowning death - precache_sound ("misc/talk.wav"); // talk - precache_sound ("player/teledth1.wav"); // telefrag - precache_sound ("misc/r_tele1.wav"); // teleport sounds + precache_sound ("misc/talk.wav"); // talk + precache_sound ("player/teledth1.wav"); // telefrag + precache_sound ("misc/r_tele1.wav"); // teleport sounds precache_sound ("misc/r_tele2.wav"); precache_sound ("misc/r_tele3.wav"); precache_sound ("misc/r_tele4.wav"); precache_sound ("misc/r_tele5.wav"); - precache_sound ("weapons/lock4.wav"); // ammo pick up - precache_sound ("weapons/pkup.wav"); // weapon up - precache_sound ("items/armor1.wav"); // armor up - precache_sound ("weapons/lhit.wav"); //lightning - precache_sound ("weapons/lstart.wav"); //lightning start + precache_sound ("weapons/lock4.wav"); // ammo pick up + precache_sound ("weapons/pkup.wav"); // weapon up + precache_sound ("items/armor1.wav"); // armor up + precache_sound ("weapons/lhit.wav"); //lightning + precache_sound ("weapons/lstart.wav"); //lightning start precache_sound ("items/damage3.wav"); - precache_sound ("misc/power.wav"); //lightning for boss + precache_sound ("misc/power.wav"); //lightning for boss // player gib sounds - precache_sound ("player/gib.wav"); // player gib sound - precache_sound ("player/udeath.wav"); // player gib sound - precache_sound ("player/tornoff2.wav"); // gib sound + precache_sound ("player/gib.wav"); // player gib sound + precache_sound ("player/udeath.wav"); // player gib sound + precache_sound ("player/tornoff2.wav"); // gib sound // player pain sounds @@ -241,22 +241,22 @@ void() worldspawn = precache_sound ("player/death4.wav"); precache_sound ("player/death5.wav"); -// ax sounds - precache_sound ("weapons/ax1.wav"); // ax swoosh - precache_sound ("player/axhit1.wav"); // ax hit meat - precache_sound ("player/axhit2.wav"); // ax hit world +// ax sounds + precache_sound ("weapons/ax1.wav"); // ax swoosh + precache_sound ("player/axhit1.wav"); // ax hit meat + precache_sound ("player/axhit2.wav"); // ax hit world - precache_sound ("player/h2ojump.wav"); // player jumping into water - precache_sound ("player/slimbrn2.wav"); // player enter slime - precache_sound ("player/inh2o.wav"); // player enter water - precache_sound ("player/inlava.wav"); // player enter lava - precache_sound ("misc/outwater.wav"); // leaving water sound + precache_sound ("player/h2ojump.wav"); // player jumping into water + precache_sound ("player/slimbrn2.wav"); // player enter slime + precache_sound ("player/inh2o.wav"); // player enter water + precache_sound ("player/inlava.wav"); // player enter lava + precache_sound ("misc/outwater.wav"); // leaving water sound - precache_sound ("player/lburn1.wav"); // lava burn - precache_sound ("player/lburn2.wav"); // lava burn + precache_sound ("player/lburn1.wav"); // lava burn + precache_sound ("player/lburn2.wav"); // lava burn - precache_sound ("misc/water1.wav"); // swimming - precache_sound ("misc/water2.wav"); // swimming + precache_sound ("misc/water1.wav"); // swimming + precache_sound ("misc/water2.wav"); // swimming precache_model ("progs/player.mdl"); precache_model ("progs/eyes.mdl"); @@ -265,8 +265,8 @@ void() worldspawn = precache_model ("progs/gib2.mdl"); precache_model ("progs/gib3.mdl"); - precache_model ("progs/s_bubble.spr"); // drowning bubbles - precache_model ("progs/s_explod.spr"); // sprite explosion + precache_model ("progs/s_bubble.spr"); // drowning bubbles + precache_model ("progs/s_explod.spr"); // sprite explosion precache_model ("progs/v_axe.mdl"); precache_model ("progs/v_shot.mdl"); @@ -276,10 +276,10 @@ void() worldspawn = precache_model ("progs/v_nail2.mdl"); precache_model ("progs/v_rock2.mdl"); - precache_model ("progs/bolt.mdl"); // for lightning gun - precache_model ("progs/bolt2.mdl"); // for lightning gun - precache_model ("progs/bolt3.mdl"); // for boss shock - precache_model ("progs/lavaball.mdl"); // for testing + precache_model ("progs/bolt.mdl"); // for lightning gun + precache_model ("progs/bolt2.mdl"); // for lightning gun + precache_model ("progs/bolt3.mdl"); // for boss shock + precache_model ("progs/lavaball.mdl"); // for testing precache_model ("progs/missile.mdl"); precache_model ("progs/grenade.mdl"); @@ -357,16 +357,16 @@ BODY QUE ============================================================================== */ -entity bodyque_head; +entity bodyque_head; void() bodyque = -{ // just here so spawn functions don't complain after the world +{ // just here so spawn functions don't complain after the world // creates bodyques }; void() InitBodyQue = { - local entity e; + local entity e; bodyque_head = spawn(); bodyque_head.classname = "bodyque";