home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-08-17 | 101.8 KB | 3,322 lines |
- diff -ur --new-file v101qc/cbnmods.qc progs/cbnmods.qc
- --- v101qc/cbnmods.qc Thu Jan 1 08:00:00 1970
- +++ progs/cbnmods.qc Sun Aug 18 02:16:54 1996
- @@ -0,0 +1,184 @@
- +/*-------------------------------------------------------------------
- +Filename : cbnmods.qc
- +Author : Cameron Newham
- +Version : 1.1
- +Date : 96/08/17
- +
- +Description
- +-----------
- +Provides routines specific to my patches. See the description
- +file that came with the archive for further details.
- +
- +Public Entry Points
- +-------------------
- +CN_Missile_Bubbles
- +CN_Missile_Think
- +CN_Ditch_Rockets
- +--------------------------------------------------------------------*/
- +
- +void() bubble_bob;
- +void() GrenadeExplode; //Needed for CN_Missile_Think
- +void(float num_bubbles) DeathBubbles;
- +
- +/*-------------------------------------------------------------------
- +Slightly modified version of Id's DeathBubblesSpawn
- +--------------------------------------------------------------------*/
- +void() MissileBubblesSpawn =
- +{
- +local entity bubble;
- + bubble = spawn();
- + setmodel (bubble, "progs/s_bubble.spr");
- + setorigin (bubble, self.owner.origin);
- + bubble.movetype = MOVETYPE_NOCLIP;
- + bubble.solid = SOLID_NOT;
- + bubble.velocity = '0 0 15';
- + bubble.nextthink = time + 0.5;
- + bubble.think = bubble_bob;
- + bubble.classname = "bubble";
- + bubble.frame = 0;
- + bubble.cnt = 0;
- + setsize (bubble, '-8 -8 -8', '8 8 8');
- + self.nextthink = time + 0.1;
- + self.think = MissileBubblesSpawn;
- + self.air_finished = self.air_finished + 1;
- + if (self.air_finished >= self.bubble_count)
- + remove(self);
- +};
- +
- +/*---------------------CN_Missile_Bubbles----------------------------
- +Makes an underwater entity look like a real underwater entity by
- +spraying out bubbles. This is designed for use with rockets.
- +--------------------------------------------------------------------*/
- +void(float num_bubbles) CN_Missile_Bubbles =
- +{
- + local vector rocket_origin;
- + local entity bubble_spawner;
- +
- + //rocket_origin = self.origin + ('0 -50 -50');
- + bubble_spawner = spawn();
- + setorigin (bubble_spawner, self.origin + '0 0 -60');
- + bubble_spawner.movetype = MOVETYPE_NONE;
- + bubble_spawner.solid = SOLID_NOT;
- + bubble_spawner.nextthink = time + 0.1;
- + bubble_spawner.think = MissileBubblesSpawn;
- + bubble_spawner.air_finished = 0;
- + bubble_spawner.owner = self;
- + bubble_spawner.bubble_count = num_bubbles;
- + return;
- +};
- +
- +
- +/*----------------------CN_Missile_Think-----------------------------
- +Missile Velocity Correction.
- +Correct the velocity of spikes, rockets and grenades underwater.
- +Simulates water resistance. Also calls CN_Missile_Bubbles for rockets
- +underwater. Rockets are slowed in water and speed up again in air,
- +while grenades are slowed by each passage through water.
- +--------------------------------------------------------------------*/
- +void() CN_Missile_Think =
- +{
- + local vector v1;
- + local vector v2;
- +
- + // if it's a grenade then we must make it explode after
- + // it's duration expires
- +
- + if ((self.classname == "grenade") && (time > self.duration))
- + {
- + // this is a grenade and it's past its use-by date
- + self.think = GrenadeExplode;
- + self.nextthink = time + 0.1;
- + }
- + else
- + if (self.duration < time)
- + self.think = SUB_Remove;
- + else
- + {
- + self.nextthink = time + 0.1;
- +
- + v1 = self.origin;
- + v2 = v1;
- + traceline (v1, v2, TRUE, self);
- +
- + if (trace_inwater == TRUE)
- + {
- + if ((random() > 0.72) && (self.classname == "rocket"))
- + CN_Missile_Bubbles(1);
- +
- + if (self.jump_flag == FALSE)
- + {
- + // correct velocity underwater if not underwater
- + // (jump_flag) already.
- + self.jump_flag = TRUE; // now in water
- + self.swim_flag = TRUE; // water->air transition not done
- + self.velocity = self.velocity * 0.4292;
- + self.angles = vectoangles(self.velocity);
- + }
- + }
- + else
- + {
- + // make sure we only do this for 1 water/surf transition
- + if (self.swim_flag == TRUE)
- + {
- + if (self.classname == "rocket")
- + {
- + // correct velocity out of water for rockets
- + self.velocity = self.velocity * 2.33;
- + }
- + self.jump_flag = FALSE; //out of water
- + self.swim_flag = FALSE; //water->air transition finished
- + }
- + }
- + }
- +
- +};
- +
- +/*------------------------CN_Ditch_Rockets---------------------------
- +Removes half your rockets, places them in a backpack and ejects
- +it to the world. You'll need this for when you get too many rockets
- +and get weighed down.
- +--------------------------------------------------------------------*/
- +void() CN_Ditch_Rockets =
- +{
- + local entity back_pack;
- + local float num_to_ditch;
- +
- + // if we have none or one then return!
- + if (self.ammo_rockets < 2)
- + return;
- +
- + // spawn a backpack
- + back_pack = spawn();
- +
- + // calculate number to ditch and set appropriate amounts
- + // for entity and backpack
- + num_to_ditch = self.ammo_rockets / 2;
- + num_to_ditch = floor(num_to_ditch);
- + back_pack.ammo_rockets = num_to_ditch;
- + self.ammo_rockets = self.ammo_rockets - num_to_ditch;
- +
- +
- + back_pack.owner = self;
- + makevectors(self.v_angle);
- + setorigin(back_pack, self.origin + '0 0 45');
- + back_pack.velocity = aim(self, 1000);
- + back_pack.velocity_x = back_pack.velocity_x * -340;
- + back_pack.velocity_y = back_pack.velocity_y * -340;
- + back_pack.velocity_z = back_pack.velocity_z * 380;
- + back_pack.angles = vectoangles(back_pack.velocity);
- + back_pack.flags = FL_ITEM;
- + back_pack.solid = SOLID_TRIGGER;
- + back_pack.movetype = MOVETYPE_TOSS;
- + back_pack.nextthink = time + 0.2;
- +
- + setmodel (back_pack, "progs/backpack.mdl");
- + setsize(back_pack, '-16 -16 0', '16 16 56');
- + back_pack.touch = BackpackTouch;
- + back_pack.nextthink = time + 120; // remove pack after 120 secs
- + back_pack.think = SUB_Remove;
- +
- + sprint(self, "Dumped Rockets\n");
- +
- + W_SetCurrentAmmo();
- +};
- +
- diff -ur --new-file v101qc/client.qc progs/client.qc
- --- v101qc/client.qc Sun Aug 18 02:29:36 1996
- +++ progs/client.qc Sat Aug 17 21:35:52 1996
- @@ -7,7 +7,7 @@
- void (vector org) spawn_tfog;
- void (vector org, entity death_owner) spawn_tdeath;
-
- -float modelindex_eyes, modelindex_player;
- +float modelindex_eyes, modelindex_player;
-
- /*
- =============================================================================
- @@ -17,8 +17,8 @@
- =============================================================================
- */
-
- -float intermission_running;
- -float intermission_exittime;
- +float intermission_running;
- +float intermission_exittime;
-
- /*QUAKED info_intermission (1 0.5 0.5) (-16 -16 -16) (16 16 16)
- This is the camera point for the intermission.
- @@ -73,7 +73,7 @@
- if (serverflags)
- {
- if (world.model == "maps/start.bsp")
- - SetNewParms (); // take away all stuff on starting new episode
- + SetNewParms (); // take away all stuff on starting new episode
- }
-
- self.items = parm1;
- @@ -96,13 +96,13 @@
- */
- entity() FindIntermission =
- {
- - local entity spot;
- - local float cyc;
- + local entity spot;
- + local float cyc;
-
- // look for info_intermission first
- spot = find (world, classname, "info_intermission");
- if (spot)
- - { // pick a random one
- + { // pick a random one
- cyc = random() * 4;
- while (cyc > 1)
- {
- @@ -131,7 +131,7 @@
- string nextmap;
- void() GotoNextMap =
- {
- - if (cvar("samelevel")) // if samelevel is set, stay on same level
- + if (cvar("samelevel")) // if samelevel is set, stay on same level
- changelevel (mapname);
- else
- changelevel (nextmap);
- @@ -209,7 +209,7 @@
- if (intermission_running == 3)
- {
- if (!cvar("registered"))
- - { // shareware episode has been completed, go to sell screen
- + { // shareware episode has been completed, go to sell screen
- WriteByte (MSG_ALL, SVC_SELLSCREEN);
- return;
- }
- @@ -246,7 +246,7 @@
-
- void() execute_changelevel =
- {
- - local entity pos;
- + local entity pos;
-
- intermission_running = 1;
-
- @@ -267,7 +267,7 @@
- {
- other.view_ofs = '0 0 0';
- other.angles = other.v_angle = pos.mangle;
- - other.fixangle = TRUE; // turn this way immediately
- + other.fixangle = TRUE; // turn this way immediately
- other.nextthink = time + 0.5;
- other.takedamage = DAMAGE_NO;
- other.solid = SOLID_NOT;
- @@ -275,7 +275,7 @@
- other.modelindex = 0;
- setorigin (other, pos.origin);
- other = find (other, classname, "player");
- - }
- + }
-
- WriteByte (MSG_ALL, SVC_INTERMISSION);
- };
- @@ -283,7 +283,7 @@
-
- void() changelevel_touch =
- {
- - local entity pos;
- + local entity pos;
-
- if (other.classname != "player")
- return;
- @@ -301,7 +301,7 @@
- SUB_UseTargets ();
-
- if ( (self.spawnflags & 1) && (deathmatch == 0) )
- - { // NO_INTERMISSION
- + { // NO_INTERMISSION
- GotoNextMap();
- return;
- }
- @@ -346,7 +346,7 @@
- CopyToBodyQue (self);
- // get the spawn parms as they were at level start
- setspawnparms (self);
- - // respawn
- + // respawn
- PutClientInServer ();
- }
- else if (deathmatch)
- @@ -355,11 +355,11 @@
- CopyToBodyQue (self);
- // set default spawn parms
- SetNewParms ();
- - // respawn
- + // respawn
- PutClientInServer ();
- }
- else
- - { // restart the entire server
- + { // restart the entire server
- localcmd ("restart\n");
- }
- };
- @@ -378,7 +378,7 @@
- bprint (" suicides\n");
- set_suicide_frame ();
- self.modelindex = modelindex_player;
- - self.frags = self.frags - 2; // extra penalty
- + self.frags = self.frags - 2; // extra penalty
- respawn ();
- };
-
- @@ -396,7 +396,7 @@
- */
- entity() SelectSpawnPoint =
- {
- - local entity spot;
- + local entity spot;
-
- // testinfo_player_start is only found in regioned levels
- spot = find (world, classname, "testplayerstart");
- @@ -422,7 +422,7 @@
- }
-
- if (serverflags)
- - { // return with a rune to start
- + { // return with a rune to start
- spot = find (world, classname, "info_player_start2");
- if (spot)
- return spot;
- @@ -448,7 +448,7 @@
-
- void() PutClientInServer =
- {
- - local entity spot;
- + local entity spot;
-
- self.classname = "player";
- self.health = 100;
- @@ -459,7 +459,7 @@
- self.max_health = 100;
- self.flags = FL_CLIENT;
- self.air_finished = time + 12;
- - self.dmg = 2; // initial water damage
- + self.dmg = 2; // initial water damage
- self.super_damage_finished = 0;
- self.radsuit_finished = 0;
- self.invisible_finished = 0;
- @@ -467,6 +467,26 @@
- self.effects = 0;
- self.invincible_time = 0;
-
- +// CN_PATCH - Aug 96: unreliable weapons code
- + self.use_counter_shot = 0;
- + self.use_last_shot = 0;
- + self.use_av_shot = 0;
- + self.jammed_shot = 0;
- + self.use_counter_rocket = 0;
- + self.use_last_rocket = 0;
- + self.use_av_rocket = 0;
- + self.jammed_rocket = 0;
- + self.use_counter_gl = 0;
- + self.use_last_gl = 0;
- + self.use_av_gl = 0;
- + self.jammed_gl = 0;
- + self.use_counter_ss = 0;
- + self.use_last_ss = 0;
- + self.use_av_ss = 0;
- + self.jammed_ss = 0;
- + self.jammed_death = 0;
- +//END CN_PATCH
- +
- DecodeLevelParms ();
-
- W_SetCurrentAmmo ();
- @@ -483,7 +503,7 @@
-
- self.origin = spot.origin + '0 0 1';
- self.angles = spot.angles;
- - self.fixangle = TRUE; // turn this way immediately
- + self.fixangle = TRUE; // turn this way immediately
-
- // oh, this is a hack!
- setmodel (self, "progs/eyes.mdl");
- @@ -581,7 +601,7 @@
-
- void() DumpScore =
- {
- - local entity e, sort, walk;
- + local entity e, sort, walk;
-
- if (world.chain)
- error ("DumpScore: world.chain is set");
- @@ -629,7 +649,7 @@
-
- // print the list
-
- - bprint ("\n");
- + bprint ("\n");
- while (sort)
- {
- PrintClientScore (sort);
- @@ -648,7 +668,7 @@
- // find a trigger changelevel
- o = find(world, classname, "trigger_changelevel");
- if (!o || mapname == "start")
- - { // go back to same map if no trigger_changelevel
- + { // go back to same map if no trigger_changelevel
- o = spawn();
- o.map = mapname;
- }
- @@ -671,10 +691,10 @@
- */
- void() CheckRules =
- {
- - local float timelimit;
- - local float fraglimit;
- + local float timelimit;
- + local float fraglimit;
-
- - if (gameover) // someone else quit the game already
- + if (gameover) // someone else quit the game already
- return;
-
- timelimit = cvar("timelimit") * 60;
- @@ -708,15 +728,15 @@
- localcmd ("killserver\n");
- */
- return;
- - }
- + }
- };
-
- //============================================================================
-
- void() PlayerDeathThink =
- {
- - local entity old_self;
- - local float forward;
- + local entity old_self;
- + local float forward;
-
- if ((self.flags & FL_ONGROUND))
- {
- @@ -724,7 +744,7 @@
- forward = forward - 20;
- if (forward <= 0)
- self.velocity = '0 0 0';
- - else
- + else
- self.velocity = forward * normalize(self.velocity);
- }
-
- @@ -781,11 +801,11 @@
- return;
-
- if ( !(self.flags & FL_JUMPRELEASED) )
- - return; // don't pogo stick
- + return; // don't pogo stick
-
- self.flags = self.flags - (self.flags & FL_JUMPRELEASED);
-
- - self.flags = self.flags - FL_ONGROUND; // don't stairwalk
- + self.flags = self.flags - FL_ONGROUND; // don't stairwalk
-
- self.button2 = 0;
- // player jumping sound
- @@ -800,7 +820,7 @@
-
- ============
- */
- -.float dmgtime;
- +.float dmgtime;
-
- void() WaterMove =
- {
- @@ -820,7 +840,7 @@
- self.dmg = 2;
- }
- else if (self.air_finished < time)
- - { // drown!
- + { // drown!
- if (self.pain_finished < time)
- {
- self.dmg = self.dmg + 2;
- @@ -834,7 +854,7 @@
- if (!self.waterlevel)
- {
- if (self.flags & FL_INWATER)
- - {
- + {
- // play leave water sound
- sound (self, CHAN_BODY, "misc/outwater.wav", 1, ATTN_NORM);
- self.flags = self.flags - FL_INWATER;
- @@ -843,7 +863,7 @@
- }
-
- if (self.watertype == CONTENT_LAVA)
- - { // do damage
- + { // do damage
- if (self.dmgtime < time)
- {
- if (self.radsuit_finished > time)
- @@ -855,7 +875,7 @@
- }
- }
- else if (self.watertype == CONTENT_SLIME)
- - { // do damage
- + { // do damage
- if (self.dmgtime < time && self.radsuit_finished < time)
- {
- self.dmgtime = time + 1;
- @@ -864,7 +884,7 @@
- }
-
- if ( !(self.flags & FL_INWATER) )
- - {
- + {
-
- // player enter water sound
-
- @@ -896,17 +916,17 @@
- end = start + v_forward*24;
- traceline (start, end, TRUE, self);
- if (trace_fraction < 1)
- - { // solid at waist
- + { // solid at waist
- start_z = start_z + self.maxs_z - 8;
- end = start + v_forward*24;
- self.movedir = trace_plane_normal * -50;
- traceline (start, end, TRUE, self);
- if (trace_fraction == 1)
- - { // open at eye level
- + { // open at eye level
- self.flags = self.flags | FL_WATERJUMP;
- self.velocity_z = 225;
- self.flags = self.flags - (self.flags & FL_JUMPRELEASED);
- - self.teleport_time = time + 2; // safety net
- + self.teleport_time = time + 2; // safety net
- return;
- }
- }
- @@ -922,19 +942,43 @@
- */
- void() PlayerPreThink =
- {
- - local float mspeed, aspeed;
- - local float r;
- + local float mspeed, aspeed;
- + local float r;
- + local float c_ashley; // a fat person
- + local string fs;
-
- if (intermission_running)
- {
- - IntermissionThink (); // otherwise a button could be missed between
- - return; // the think tics
- + IntermissionThink (); // otherwise a button could be missed between
- + return; // the think tics
- }
-
- if (self.view_ofs == '0 0 0')
- - return; // intermission or finale
- + return; // intermission or finale
- +
- +//CN_PATCH - Aug 96: Calculate restricted movement by weight of rockets
- +// and increased movement by health++
- +
- + c_ashley = 0.5 + ((100 - self.ammo_rockets) * 0.005);
- +
- + //Now check for health > 100 and give slight speed advantage
- + if (self.health > 100)
- + {
- + c_ashley = c_ashley + ((self.health - 100) * 0.002);
- + if (c_ashley > 1.0)
- + c_ashley = 1.0; //Normalise to 1 maximum
- + }
- +
- + self.velocity_x = self.velocity_x * c_ashley;
- + self.velocity_y = self.velocity_y * c_ashley;
-
- - makevectors (self.v_angle); // is this still used
- + // don't fall down slower than normal
- + if (self.velocity_z > 0)
- + self.velocity_z = self.velocity_z * c_ashley;
- + self.avelocity = vectoangles(self.velocity);
- +//END CN_PATCH
- +
- + makevectors (self.v_angle); // is this still used
-
- CheckRules ();
- WaterMove ();
- @@ -949,7 +993,7 @@
- }
-
- if (self.deadflag == DEAD_DYING)
- - return; // dying, so do nothing
- + return; // dying, so do nothing
-
- if (self.button2)
- {
- @@ -958,7 +1002,7 @@
- else
- self.flags = self.flags | FL_JUMPRELEASED;
-
- -// teleporters can force a non-moving pause time
- +// teleporters can force a non-moving pause time
- if (time < self.pausetime)
- self.velocity = '0 0 0';
- };
- @@ -1004,7 +1048,7 @@
- }
-
- if (self.invisible_finished < time)
- - { // just stopped
- + { // just stopped
- self.items = self.items - IT_INVISIBILITY;
- self.invisible_finished = 0;
- self.invisible_time = 0;
- @@ -1015,7 +1059,7 @@
- self.modelindex = modelindex_eyes;
- }
- else
- - self.modelindex = modelindex_player; // don't use eyes
- + self.modelindex = modelindex_player; // don't use eyes
-
- // invincibility
- if (self.invincible_finished)
- @@ -1039,7 +1083,7 @@
- }
-
- if (self.invincible_finished < time)
- - { // just stopped
- + { // just stopped
- self.items = self.items - IT_INVULNERABILITY;
- self.invincible_time = 0;
- self.invincible_finished = 0;
- @@ -1064,7 +1108,7 @@
- stuffcmd (self, "bf\n");
- sound (self, CHAN_AUTO, "items/damage2.wav", 1, ATTN_NORM);
- self.super_time = time + 1;
- - }
- + }
-
- if (self.super_time < time)
- {
- @@ -1074,7 +1118,7 @@
- }
-
- if (self.super_damage_finished < time)
- - { // just stopped
- + { // just stopped
- self.items = self.items - IT_QUAD;
- self.super_damage_finished = 0;
- self.super_time = 0;
- @@ -1083,12 +1127,12 @@
- self.effects = self.effects | EF_DIMLIGHT;
- else
- self.effects = self.effects - (self.effects & EF_DIMLIGHT);
- - }
- + }
-
- -// suit
- +// suit
- if (self.radsuit_finished)
- {
- - self.air_finished = time + 12; // don't drown
- + self.air_finished = time + 12; // don't drown
-
- // sound and screen flash when items starts to run out
- if (self.radsuit_finished < time + 3)
- @@ -1109,12 +1153,12 @@
- }
-
- if (self.radsuit_finished < time)
- - { // just stopped
- + { // just stopped
- self.items = self.items - IT_SUIT;
- self.rad_time = 0;
- self.radsuit_finished = 0;
- }
- - }
- + }
-
- };
-
- @@ -1128,11 +1172,11 @@
- */
- void() PlayerPostThink =
- {
- - local float mspeed, aspeed;
- - local float r;
- + local float mspeed, aspeed;
- + local float r;
-
- if (self.view_ofs == '0 0 0')
- - return; // intermission or finale
- + return; // intermission or finale
- if (self.deadflag)
- return;
-
- @@ -1140,7 +1184,7 @@
-
- W_WeaponFrame ();
-
- -// check to see if player landed and play landing sound
- +// check to see if player landed and play landing sound
- if ((self.jump_flag < -300) && (self.flags & FL_ONGROUND) && (self.health > 0))
- {
- if (self.watertype == CONTENT_WATER)
- @@ -1173,6 +1217,7 @@
- */
- void() ClientConnect =
- {
- +sprint (self, "Real Weapons Installed\n");
- bprint (self.netname);
- bprint (" entered the game\n");
-
- @@ -1214,8 +1259,8 @@
- */
- void(entity targ, entity attacker) ClientObituary =
- {
- - local float rnum;
- - local string deathstring, deathstring2;
- + local float rnum;
- + local string deathstring, deathstring2;
- rnum = random();
-
- if (targ.classname == "player")
- @@ -1255,9 +1300,17 @@
- return;
- }
- if (targ.weapon == 16)
- + if (targ.jammed_death == 0)
- bprint (" tries to put the pin back in\n");
- + else
- + bprint ("'s Grenade Launcher explodes!\n");
- else if (rnum)
- + {
- + if (targ.jammed_death == 0)
- bprint (" becomes bored with life\n");
- + else
- + bprint ("'s Rocket Launcher explodes!\n");
- + }
- else
- bprint (" checks if his weapon is loaded\n");
- return;
- @@ -1329,7 +1382,7 @@
- }
- else
- {
- - targ.frags = targ.frags - 1; // killed self
- + targ.frags = targ.frags - 1; // killed self
- rnum = targ.watertype;
-
- bprint (targ.netname);
- @@ -1356,10 +1409,14 @@
- bprint (" burst into flames\n");
- return;
- }
- - if (random() < 0.5)
- + if (random() < 0.2)
- + if (random() < 0.6)
- bprint (" turned into hot slag\n");
- - else
- + else
- bprint (" visits the Volcano God\n");
- + else
- + bprint (" goes for a dip in the lava!\n");
- +
- return;
- }
-
- @@ -1406,7 +1463,7 @@
- return;
- }
- if (attacker.solid == SOLID_BSP && attacker != world)
- - {
- + {
- bprint (" was squished\n");
- return;
- }
- diff -ur --new-file v101qc/defs.qc progs/defs.qc
- --- v101qc/defs.qc Sun Aug 18 02:29:36 1996
- +++ progs/defs.qc Sat Aug 17 21:54:02 1996
- @@ -10,13 +10,13 @@
- //
- // system globals
- //
- -entity self;
- -entity other;
- -entity world;
- -float time;
- -float frametime;
- +entity self;
- +entity other;
- +entity world;
- +float time;
- +float frametime;
-
- -float force_retouch; // force all entities to touch triggers
- +float force_retouch; // force all entities to touch triggers
- // next frame. this is needed because
- // non-moving things don't normally scan
- // for triggers, and when a trigger is
- @@ -24,69 +24,69 @@
- // needs to catch everything.
- // decremented each frame, so set to 2
- // to guarantee everything is touched
- -string mapname;
- +string mapname;
-
- -float deathmatch;
- -float coop;
- -float teamplay;
- +float deathmatch;
- +float coop;
- +float teamplay;
-
- -float serverflags; // propagated from level to level, used to
- +float serverflags; // propagated from level to level, used to
- // keep track of completed episodes
-
- -float total_secrets;
- -float total_monsters;
- +float total_secrets;
- +float total_monsters;
-
- -float found_secrets; // number of secrets found
- -float killed_monsters; // number of monsters killed
- +float found_secrets; // number of secrets found
- +float killed_monsters; // number of monsters killed
-
-
- // spawnparms are used to encode information about clients across server
- // level changes
- -float parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16;
- +float parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16;
-
- //
- // global variables set by built in functions
- -//
- -vector v_forward, v_up, v_right; // set by makevectors()
- +//
- +vector v_forward, v_up, v_right; // set by makevectors()
-
- // set by traceline / tracebox
- -float trace_allsolid;
- -float trace_startsolid;
- -float trace_fraction;
- -vector trace_endpos;
- -vector trace_plane_normal;
- -float trace_plane_dist;
- -entity trace_ent;
- -float trace_inopen;
- -float trace_inwater;
- +float trace_allsolid;
- +float trace_startsolid;
- +float trace_fraction;
- +vector trace_endpos;
- +vector trace_plane_normal;
- +float trace_plane_dist;
- +entity trace_ent;
- +float trace_inopen;
- +float trace_inwater;
-
- -entity msg_entity; // destination of single entity writes
- +entity msg_entity; // destination of single entity writes
-
- //
- // required prog functions
- //
- -void() main; // only for testing
- +void() main; // only for testing
-
- -void() StartFrame;
- +void() StartFrame;
-
- -void() PlayerPreThink;
- -void() PlayerPostThink;
- +void() PlayerPreThink;
- +void() PlayerPostThink;
-
- -void() ClientKill;
- -void() ClientConnect;
- -void() PutClientInServer; // call after setting the parm1... parms
- -void() ClientDisconnect;
- +void() ClientKill;
- +void() ClientConnect;
- +void() PutClientInServer; // call after setting the parm1... parms
- +void() ClientDisconnect;
-
- -void() SetNewParms; // called when a client first connects to
- +void() SetNewParms; // called when a client first connects to
- // a server. sets parms so they can be
- // saved off for restarts
-
- -void() SetChangeParms; // call to set parms for self so they can
- +void() SetChangeParms; // call to set parms for self so they can
- // be saved for a level transition
-
-
- //================================================
- -void end_sys_globals; // flag for structure dumping
- +void end_sys_globals; // flag for structure dumping
- //================================================
-
- /*
- @@ -100,115 +100,115 @@
- //
- // system fields (*** = do not set in prog code, maintained by C code)
- //
- -.float modelindex; // *** model index in the precached list
- -.vector absmin, absmax; // *** origin + mins / maxs
- +.float modelindex; // *** model index in the precached list
- +.vector absmin, absmax; // *** origin + mins / maxs
-
- -.float ltime; // local time for entity
- -.float movetype;
- -.float solid;
- -
- -.vector origin; // ***
- -.vector oldorigin; // ***
- -.vector velocity;
- -.vector angles;
- -.vector avelocity;
- -
- -.vector punchangle; // temp angle adjust from damage or recoil
- -
- -.string classname; // spawn function
- -.string model;
- -.float frame;
- -.float skin;
- -.float effects;
- -
- -.vector mins, maxs; // bounding box extents reletive to origin
- -.vector size; // maxs - mins
- -
- -.void() touch;
- -.void() use;
- -.void() think;
- -.void() blocked; // for doors or plats, called when can't push other
- +.float ltime; // local time for entity
- +.float movetype;
- +.float solid;
- +
- +.vector origin; // ***
- +.vector oldorigin; // ***
- +.vector velocity;
- +.vector angles;
- +.vector avelocity;
- +
- +.vector punchangle; // temp angle adjust from damage or recoil
- +
- +.string classname; // spawn function
- +.string model;
- +.float frame;
- +.float skin;
- +.float effects;
- +
- +.vector mins, maxs; // bounding box extents reletive to origin
- +.vector size; // maxs - mins
- +
- +.void() touch;
- +.void() use;
- +.void() think;
- +.void() blocked; // for doors or plats, called when can't push other
-
- -.float nextthink;
- -.entity groundentity;
- +.float nextthink;
- +.entity groundentity;
-
- // stats
- -.float health;
- -.float frags;
- -.float weapon; // one of the IT_SHOTGUN, etc flags
- -.string weaponmodel;
- -.float weaponframe;
- -.float currentammo;
- -.float ammo_shells, ammo_nails, ammo_rockets, ammo_cells;
- +.float health;
- +.float frags;
- +.float weapon; // one of the IT_SHOTGUN, etc flags
- +.string weaponmodel;
- +.float weaponframe;
- +.float currentammo;
- +.float ammo_shells, ammo_nails, ammo_rockets, ammo_cells;
-
- -.float items; // bit flags
- +.float items; // bit flags
-
- -.float takedamage;
- -.entity chain;
- -.float deadflag;
- +.float takedamage;
- +.entity chain;
- +.float deadflag;
-
- -.vector view_ofs; // add to origin to get eye point
- +.vector view_ofs; // add to origin to get eye point
-
-
- -.float button0; // fire
- -.float button1; // use
- -.float button2; // jump
- +.float button0; // fire
- +.float button1; // use
- +.float button2; // jump
-
- -.float impulse; // weapon changes
- +.float impulse; // weapon changes
-
- -.float fixangle;
- -.vector v_angle; // view / targeting angle for players
- -.float idealpitch; // calculated pitch angle for lookup up slopes
- +.float fixangle;
- +.vector v_angle; // view / targeting angle for players
- +.float idealpitch; // calculated pitch angle for lookup up slopes
-
-
- -.string netname;
- +.string netname;
-
- -.entity enemy;
- +.entity enemy;
-
- -.float flags;
- +.float flags;
-
- -.float colormap;
- -.float team;
- +.float colormap;
- +.float team;
-
- -.float max_health; // players maximum health is stored here
- +.float max_health; // players maximum health is stored here
-
- -.float teleport_time; // don't back up
- +.float teleport_time; // don't back up
-
- -.float armortype; // save this fraction of incoming damage
- -.float armorvalue;
- +.float armortype; // save this fraction of incoming damage
- +.float armorvalue;
-
- -.float waterlevel; // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
- -.float watertype; // a contents value
- +.float waterlevel; // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
- +.float watertype; // a contents value
-
- -.float ideal_yaw;
- -.float yaw_speed;
- +.float ideal_yaw;
- +.float yaw_speed;
-
- -.entity aiment;
- +.entity aiment;
-
- -.entity goalentity; // a movetarget or an enemy
- +.entity goalentity; // a movetarget or an enemy
-
- -.float spawnflags;
- +.float spawnflags;
-
- -.string target;
- -.string targetname;
- +.string target;
- +.string targetname;
-
- // damage is accumulated through a frame. and sent as one single
- // message, so the super shotgun doesn't generate huge messages
- -.float dmg_take;
- -.float dmg_save;
- -.entity dmg_inflictor;
- +.float dmg_take;
- +.float dmg_save;
- +.entity dmg_inflictor;
-
- -.entity owner; // who launched a missile
- -.vector movedir; // mostly for doors, but also used for waterjump
- +.entity owner; // who launched a missile
- +.vector movedir; // mostly for doors, but also used for waterjump
-
- -.string message; // trigger messages
- +.string message; // trigger messages
-
- -.float sounds; // either a cd track number or sound number
- +.float sounds; // either a cd track number or sound number
-
- -.string noise, noise1, noise2, noise3; // contains names of wavs to play
- +.string noise, noise1, noise2, noise3; // contains names of wavs to play
-
- //================================================
- -void end_sys_fields; // flag for structure dumping
- +void end_sys_fields; // flag for structure dumping
- //================================================
-
- /*
- @@ -224,330 +224,351 @@
- // constants
- //
-
- -float FALSE = 0;
- -float TRUE = 1;
- +float FALSE = 0;
- +float TRUE = 1;
-
- // edict.flags
- -float FL_FLY = 1;
- -float FL_SWIM = 2;
- -float FL_CLIENT = 8; // set for all client edicts
- -float FL_INWATER = 16; // for enter / leave water splash
- -float FL_MONSTER = 32;
- -float FL_GODMODE = 64; // player cheat
- -float FL_NOTARGET = 128; // player cheat
- -float FL_ITEM = 256; // extra wide size for bonus items
- -float FL_ONGROUND = 512; // standing on something
- -float FL_PARTIALGROUND = 1024; // not all corners are valid
- -float FL_WATERJUMP = 2048; // player jumping out of water
- -float FL_JUMPRELEASED = 4096; // for jump debouncing
- +float FL_FLY = 1;
- +float FL_SWIM = 2;
- +float FL_CLIENT = 8; // set for all client edicts
- +float FL_INWATER = 16; // for enter / leave water splash
- +float FL_MONSTER = 32;
- +float FL_GODMODE = 64; // player cheat
- +float FL_NOTARGET = 128; // player cheat
- +float FL_ITEM = 256; // extra wide size for bonus items
- +float FL_ONGROUND = 512; // standing on something
- +float FL_PARTIALGROUND = 1024; // not all corners are valid
- +float FL_WATERJUMP = 2048; // player jumping out of water
- +float FL_JUMPRELEASED = 4096; // for jump debouncing
-
- // edict.movetype values
- -float MOVETYPE_NONE = 0; // never moves
- -//float MOVETYPE_ANGLENOCLIP = 1;
- -//float MOVETYPE_ANGLECLIP = 2;
- -float MOVETYPE_WALK = 3; // players only
- -float MOVETYPE_STEP = 4; // discrete, not real time unless fall
- -float MOVETYPE_FLY = 5;
- -float MOVETYPE_TOSS = 6; // gravity
- -float MOVETYPE_PUSH = 7; // no clip to world, push and crush
- -float MOVETYPE_NOCLIP = 8;
- -float MOVETYPE_FLYMISSILE = 9; // fly with extra size against monsters
- -float MOVETYPE_BOUNCE = 10;
- -float MOVETYPE_BOUNCEMISSILE = 11; // bounce with extra size
- +float MOVETYPE_NONE = 0; // never moves
- +//float MOVETYPE_ANGLENOCLIP = 1;
- +//float MOVETYPE_ANGLECLIP = 2;
- +float MOVETYPE_WALK = 3; // players only
- +float MOVETYPE_STEP = 4; // discrete, not real time unless fall
- +float MOVETYPE_FLY = 5;
- +float MOVETYPE_TOSS = 6; // gravity
- +float MOVETYPE_PUSH = 7; // no clip to world, push and crush
- +float MOVETYPE_NOCLIP = 8;
- +float MOVETYPE_FLYMISSILE = 9; // fly with extra size against monsters
- +float MOVETYPE_BOUNCE = 10;
- +float MOVETYPE_BOUNCEMISSILE = 11; // bounce with extra size
-
- // edict.solid values
- -float SOLID_NOT = 0; // no interaction with other objects
- -float SOLID_TRIGGER = 1; // touch on edge, but not blocking
- -float SOLID_BBOX = 2; // touch on edge, block
- -float SOLID_SLIDEBOX = 3; // touch on edge, but not an onground
- -float SOLID_BSP = 4; // bsp clip, touch on edge, block
- +float SOLID_NOT = 0; // no interaction with other objects
- +float SOLID_TRIGGER = 1; // touch on edge, but not blocking
- +float SOLID_BBOX = 2; // touch on edge, block
- +float SOLID_SLIDEBOX = 3; // touch on edge, but not an onground
- +float SOLID_BSP = 4; // bsp clip, touch on edge, block
-
- // range values
- -float RANGE_MELEE = 0;
- -float RANGE_NEAR = 1;
- -float RANGE_MID = 2;
- -float RANGE_FAR = 3;
- +float RANGE_MELEE = 0;
- +float RANGE_NEAR = 1;
- +float RANGE_MID = 2;
- +float RANGE_FAR = 3;
-
- // deadflag values
-
- -float DEAD_NO = 0;
- -float DEAD_DYING = 1;
- -float DEAD_DEAD = 2;
- -float DEAD_RESPAWNABLE = 3;
- +float DEAD_NO = 0;
- +float DEAD_DYING = 1;
- +float DEAD_DEAD = 2;
- +float DEAD_RESPAWNABLE = 3;
-
- // takedamage values
-
- -float DAMAGE_NO = 0;
- -float DAMAGE_YES = 1;
- -float DAMAGE_AIM = 2;
- +float DAMAGE_NO = 0;
- +float DAMAGE_YES = 1;
- +float DAMAGE_AIM = 2;
-
- // items
- -float IT_AXE = 4096;
- -float IT_SHOTGUN = 1;
- -float IT_SUPER_SHOTGUN = 2;
- -float IT_NAILGUN = 4;
- -float IT_SUPER_NAILGUN = 8;
- -float IT_GRENADE_LAUNCHER = 16;
- -float IT_ROCKET_LAUNCHER = 32;
- -float IT_LIGHTNING = 64;
- -float IT_EXTRA_WEAPON = 128;
- -
- -float IT_SHELLS = 256;
- -float IT_NAILS = 512;
- -float IT_ROCKETS = 1024;
- -float IT_CELLS = 2048;
- -
- -float IT_ARMOR1 = 8192;
- -float IT_ARMOR2 = 16384;
- -float IT_ARMOR3 = 32768;
- -float IT_SUPERHEALTH = 65536;
- -
- -float IT_KEY1 = 131072;
- -float IT_KEY2 = 262144;
- -
- -float IT_INVISIBILITY = 524288;
- -float IT_INVULNERABILITY = 1048576;
- -float IT_SUIT = 2097152;
- -float IT_QUAD = 4194304;
- +float IT_AXE = 4096;
- +float IT_SHOTGUN = 1;
- +float IT_SUPER_SHOTGUN = 2;
- +float IT_NAILGUN = 4;
- +float IT_SUPER_NAILGUN = 8;
- +float IT_GRENADE_LAUNCHER = 16;
- +float IT_ROCKET_LAUNCHER = 32;
- +float IT_LIGHTNING = 64;
- +float IT_EXTRA_WEAPON = 128;
- +
- +float IT_SHELLS = 256;
- +float IT_NAILS = 512;
- +float IT_ROCKETS = 1024;
- +float IT_CELLS = 2048;
- +
- +float IT_ARMOR1 = 8192;
- +float IT_ARMOR2 = 16384;
- +float IT_ARMOR3 = 32768;
- +float IT_SUPERHEALTH = 65536;
- +
- +float IT_KEY1 = 131072;
- +float IT_KEY2 = 262144;
- +
- +float IT_INVISIBILITY = 524288;
- +float IT_INVULNERABILITY = 1048576;
- +float IT_SUIT = 2097152;
- +float IT_QUAD = 4194304;
-
- // point content values
-
- -float CONTENT_EMPTY = -1;
- -float CONTENT_SOLID = -2;
- -float CONTENT_WATER = -3;
- -float CONTENT_SLIME = -4;
- -float CONTENT_LAVA = -5;
- -float CONTENT_SKY = -6;
- -
- -float STATE_TOP = 0;
- -float STATE_BOTTOM = 1;
- -float STATE_UP = 2;
- -float STATE_DOWN = 3;
- -
- -vector VEC_ORIGIN = '0 0 0';
- -vector VEC_HULL_MIN = '-16 -16 -24';
- -vector VEC_HULL_MAX = '16 16 32';
- +float CONTENT_EMPTY = -1;
- +float CONTENT_SOLID = -2;
- +float CONTENT_WATER = -3;
- +float CONTENT_SLIME = -4;
- +float CONTENT_LAVA = -5;
- +float CONTENT_SKY = -6;
- +
- +float STATE_TOP = 0;
- +float STATE_BOTTOM = 1;
- +float STATE_UP = 2;
- +float STATE_DOWN = 3;
- +
- +vector VEC_ORIGIN = '0 0 0';
- +vector VEC_HULL_MIN = '-16 -16 -24';
- +vector VEC_HULL_MAX = '16 16 32';
-
- -vector VEC_HULL2_MIN = '-32 -32 -24';
- -vector VEC_HULL2_MAX = '32 32 64';
- +vector VEC_HULL2_MIN = '-32 -32 -24';
- +vector VEC_HULL2_MAX = '32 32 64';
-
- // protocol bytes
- -float SVC_TEMPENTITY = 23;
- -float SVC_KILLEDMONSTER = 27;
- -float SVC_FOUNDSECRET = 28;
- -float SVC_INTERMISSION = 30;
- -float SVC_FINALE = 31;
- -float SVC_CDTRACK = 32;
- -float SVC_SELLSCREEN = 33;
- -
- -
- -float TE_SPIKE = 0;
- -float TE_SUPERSPIKE = 1;
- -float TE_GUNSHOT = 2;
- -float TE_EXPLOSION = 3;
- -float TE_TAREXPLOSION = 4;
- -float TE_LIGHTNING1 = 5;
- -float TE_LIGHTNING2 = 6;
- -float TE_WIZSPIKE = 7;
- -float TE_KNIGHTSPIKE = 8;
- -float TE_LIGHTNING3 = 9;
- -float TE_LAVASPLASH = 10;
- -float TE_TELEPORT = 11;
- +float SVC_TEMPENTITY = 23;
- +float SVC_KILLEDMONSTER = 27;
- +float SVC_FOUNDSECRET = 28;
- +float SVC_INTERMISSION = 30;
- +float SVC_FINALE = 31;
- +float SVC_CDTRACK = 32;
- +float SVC_SELLSCREEN = 33;
- +
- +
- +float TE_SPIKE = 0;
- +float TE_SUPERSPIKE = 1;
- +float TE_GUNSHOT = 2;
- +float TE_EXPLOSION = 3;
- +float TE_TAREXPLOSION = 4;
- +float TE_LIGHTNING1 = 5;
- +float TE_LIGHTNING2 = 6;
- +float TE_WIZSPIKE = 7;
- +float TE_KNIGHTSPIKE = 8;
- +float TE_LIGHTNING3 = 9;
- +float TE_LAVASPLASH = 10;
- +float TE_TELEPORT = 11;
-
- // sound channels
- // channel 0 never willingly overrides
- // other channels (1-7) allways override a playing sound on that channel
- -float CHAN_AUTO = 0;
- -float CHAN_WEAPON = 1;
- -float CHAN_VOICE = 2;
- -float CHAN_ITEM = 3;
- -float CHAN_BODY = 4;
- -
- -float ATTN_NONE = 0;
- -float ATTN_NORM = 1;
- -float ATTN_IDLE = 2;
- -float ATTN_STATIC = 3;
- +float CHAN_AUTO = 0;
- +float CHAN_WEAPON = 1;
- +float CHAN_VOICE = 2;
- +float CHAN_ITEM = 3;
- +float CHAN_BODY = 4;
- +
- +float ATTN_NONE = 0;
- +float ATTN_NORM = 1;
- +float ATTN_IDLE = 2;
- +float ATTN_STATIC = 3;
-
- // update types
-
- -float UPDATE_GENERAL = 0;
- -float UPDATE_STATIC = 1;
- -float UPDATE_BINARY = 2;
- -float UPDATE_TEMP = 3;
- +float UPDATE_GENERAL = 0;
- +float UPDATE_STATIC = 1;
- +float UPDATE_BINARY = 2;
- +float UPDATE_TEMP = 3;
-
- // entity effects
-
- -float EF_BRIGHTFIELD = 1;
- -float EF_MUZZLEFLASH = 2;
- -float EF_BRIGHTLIGHT = 4;
- -float EF_DIMLIGHT = 8;
- +float EF_BRIGHTFIELD = 1;
- +float EF_MUZZLEFLASH = 2;
- +float EF_BRIGHTLIGHT = 4;
- +float EF_DIMLIGHT = 8;
-
-
- // messages
- -float MSG_BROADCAST = 0; // unreliable to all
- -float MSG_ONE = 1; // reliable to one (msg_entity)
- -float MSG_ALL = 2; // reliable to all
- -float MSG_INIT = 3; // write to the init string
- +float MSG_BROADCAST = 0; // unreliable to all
- +float MSG_ONE = 1; // reliable to one (msg_entity)
- +float MSG_ALL = 2; // reliable to all
- +float MSG_INIT = 3; // write to the init string
-
- //================================================
-
- //
- // globals
- //
- -float movedist;
- -float gameover; // set when a rule exits
- +float movedist;
- +float gameover; // set when a rule exits
-
- -string string_null; // null string, nothing should be held here
- -float empty_float;
- +string string_null; // null string, nothing should be held here
- +float empty_float;
-
- -entity newmis; // launch_spike sets this after spawning it
- +entity newmis; // launch_spike sets this after spawning it
-
- -entity activator; // the entity that activated a trigger or brush
- +entity activator; // the entity that activated a trigger or brush
-
- -entity damage_attacker; // set by T_Damage
- -float framecount;
- +entity damage_attacker; // set by T_Damage
- +float framecount;
-
- -float skill;
- +float skill;
-
- //================================================
-
- //
- // world fields (FIXME: make globals)
- //
- -.string wad;
- -.string map;
- -.float worldtype; // 0=medieval 1=metal 2=base
- +.string wad;
- +.string map;
- +.float worldtype; // 0=medieval 1=metal 2=base
-
- //================================================
-
- -.string killtarget;
- +.string killtarget;
-
- //
- // quakeed fields
- //
- -.float light_lev; // not used by game, but parsed by light util
- -.float style;
- +.float light_lev; // not used by game, but parsed by light util
- +.float style;
-
-
- //
- // monster ai
- //
- -.void() th_stand;
- -.void() th_walk;
- -.void() th_run;
- -.void() th_missile;
- -.void() th_melee;
- -.void(entity attacker, float damage) th_pain;
- -.void() th_die;
- -
- -.entity oldenemy; // mad at this player before taking damage
- -
- -.float speed;
- -
- -.float lefty;
- -
- -.float search_time;
- -.float attack_state;
- -
- -float AS_STRAIGHT = 1;
- -float AS_SLIDING = 2;
- -float AS_MELEE = 3;
- -float AS_MISSILE = 4;
- +.void() th_stand;
- +.void() th_walk;
- +.void() th_run;
- +.void() th_missile;
- +.void() th_melee;
- +.void(entity attacker, float damage) th_pain;
- +.void() th_die;
- +
- +.entity oldenemy; // mad at this player before taking damage
- +
- +.float speed;
- +
- +.float lefty;
- +
- +.float search_time;
- +.float attack_state;
- +
- +float AS_STRAIGHT = 1;
- +float AS_SLIDING = 2;
- +float AS_MELEE = 3;
- +float AS_MISSILE = 4;
-
- //
- // player only fields
- //
- -.float walkframe;
- +.float walkframe;
-
- -.float attack_finished;
- -.float pain_finished;
- +.float attack_finished;
- +.float pain_finished;
-
- -.float invincible_finished;
- -.float invisible_finished;
- -.float super_damage_finished;
- -.float radsuit_finished;
- +//CN_PATCH - Cameron Newham, Aug 96
- +.float duration; // duration of rocket existance
- +.float use_counter_shot; //should really collapse these into one set
- +.float use_av_shot;
- +.float use_last_shot;
- +.float jammed_shot;
- +.float use_counter_rocket;
- +.float use_av_rocket;
- +.float use_last_rocket;
- +.float jammed_rocket;
- +.float use_counter_gl;
- +.float use_av_gl;
- +.float use_last_gl;
- +.float jammed_gl;
- +.float use_counter_ss;
- +.float use_av_ss;
- +.float use_last_ss;
- +.float jammed_ss;
- +.float jammed_death; //0 = none 1 = gl 2 = rl
- +//END CN_PATCH
- +
- +.float invincible_finished;
- +.float invisible_finished;
- +.float super_damage_finished;
- +.float radsuit_finished;
- +
- +.float invincible_time, invincible_sound;
- +.float invisible_time, invisible_sound;
- +.float super_time, super_sound;
- +.float rad_time;
- +.float fly_sound;
-
- -.float invincible_time, invincible_sound;
- -.float invisible_time, invisible_sound;
- -.float super_time, super_sound;
- -.float rad_time;
- -.float fly_sound;
- +.float axhitme;
-
- -.float axhitme;
- -
- -.float show_hostile; // set to time+0.2 whenever a client fires a
- +.float show_hostile; // set to time+0.2 whenever a client fires a
- // weapon or takes damage. Used to alert
- // monsters that otherwise would let the player go
- -.float jump_flag; // player jump flag
- -.float swim_flag; // player swimming sound flag
- -.float air_finished; // when time > air_finished, start drowning
- -.float bubble_count; // keeps track of the number of bubbles
- -.string deathtype; // keeps track of how the player died
- +.float jump_flag; // player jump flag
- +.float swim_flag; // player swimming sound flag
- +.float air_finished; // when time > air_finished, start drowning
- +.float bubble_count; // keeps track of the number of bubbles
- +.string deathtype; // keeps track of how the player died
-
- //
- // object stuff
- //
- -.string mdl;
- -.vector mangle; // angle at start
- +.string mdl;
- +.vector mangle; // angle at start
-
- -.vector oldorigin; // only used by secret door
- +.vector oldorigin; // only used by secret door
-
- -.float t_length, t_width;
- +.float t_length, t_width;
-
-
- //
- // doors, etc
- //
- -.vector dest, dest1, dest2;
- -.float wait; // time from firing to restarting
- -.float delay; // time from activation to firing
- -.entity trigger_field; // door's trigger entity
- -.string noise4;
- +.vector dest, dest1, dest2;
- +.float wait; // time from firing to restarting
- +.float delay; // time from activation to firing
- +.entity trigger_field; // door's trigger entity
- +.string noise4;
-
- //
- // monsters
- //
- -.float pausetime;
- -.entity movetarget;
- +.float pausetime;
- +.entity movetarget;
-
-
- //
- // doors
- //
- -.float aflag;
- -.float dmg; // damage done by door when hit
- +.float aflag;
- +.float dmg; // damage done by door when hit
-
- //
- // misc
- //
- -.float cnt; // misc flag
- +.float cnt; // misc flag
-
- //
- // subs
- //
- -.void() think1;
- -.vector finaldest, finalangle;
- +.void() think1;
- +.vector finaldest, finalangle;
-
- //
- // triggers
- //
- -.float count; // for counting triggers
- +.float count; // for counting triggers
-
-
- //
- // plats / doors / buttons
- //
- -.float lip;
- -.float state;
- -.vector pos1, pos2; // top and bottom positions
- -.float height;
- +.float lip;
- +.float state;
- +.vector pos1, pos2; // top and bottom positions
- +.float height;
-
- //
- // sounds
- //
- -.float waitmin, waitmax;
- -.float distance;
- -.float volume;
- +.float waitmin, waitmax;
- +.float distance;
- +.float volume;
-
-
-
- @@ -559,110 +580,110 @@
- // builtin functions
- //
-
- -void(vector ang) makevectors = #1; // sets v_forward, etc globals
- -void(entity e, vector o) setorigin = #2;
- -void(entity e, string m) setmodel = #3; // set movetype and solid first
- +void(vector ang) makevectors = #1; // sets v_forward, etc globals
- +void(entity e, vector o) setorigin = #2;
- +void(entity e, string m) setmodel = #3; // set movetype and solid first
- void(entity e, vector min, vector max) setsize = #4;
- // #5 was removed
- -void() break = #6;
- -float() random = #7; // returns 0 - 1
- +void() break = #6;
- +float() random = #7; // returns 0 - 1
- void(entity e, float chan, string samp, float vol, float atten) sound = #8;
- -vector(vector v) normalize = #9;
- -void(string e) error = #10;
- -void(string e) objerror = #11;
- -float(vector v) vlen = #12;
- -float(vector v) vectoyaw = #13;
- -entity() spawn = #14;
- -void(entity e) remove = #15;
- +vector(vector v) normalize = #9;
- +void(string e) error = #10;
- +void(string e) objerror = #11;
- +float(vector v) vlen = #12;
- +float(vector v) vectoyaw = #13;
- +entity() spawn = #14;
- +void(entity e) remove = #15;
-
- // sets trace_* globals
- // nomonsters can be:
- // An entity will also be ignored for testing if forent == test,
- // forent->owner == test, or test->owner == forent
- // a forent of world is ignored
- -void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16;
- +void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16;
-
- -entity() checkclient = #17; // returns a client to look for
- +entity() checkclient = #17; // returns a client to look for
- entity(entity start, .string fld, string match) find = #18;
- -string(string s) precache_sound = #19;
- -string(string s) precache_model = #20;
- +string(string s) precache_sound = #19;
- +string(string s) precache_model = #20;
- void(entity client, string s)stuffcmd = #21;
- entity(vector org, float rad) findradius = #22;
- -void(string s) bprint = #23;
- +void(string s) bprint = #23;
- void(entity client, string s) sprint = #24;
- -void(string s) dprint = #25;
- -string(float f) ftos = #26;
- -string(vector v) vtos = #27;
- -void() coredump = #28; // prints all edicts
- -void() traceon = #29; // turns statment trace on
- -void() traceoff = #30;
- -void(entity e) eprint = #31; // prints an entire edict
- -float(float yaw, float dist) walkmove = #32; // returns TRUE or FALSE
- +void(string s) dprint = #25;
- +string(float f) ftos = #26;
- +string(vector v) vtos = #27;
- +void() coredump = #28; // prints all edicts
- +void() traceon = #29; // turns statment trace on
- +void() traceoff = #30;
- +void(entity e) eprint = #31; // prints an entire edict
- +float(float yaw, float dist) walkmove = #32; // returns TRUE or FALSE
- // #33 was removed
- -float(float yaw, float dist) droptofloor= #34; // TRUE if landed on floor
- +float(float yaw, float dist) droptofloor= #34; // TRUE if landed on floor
- void(float style, string value) lightstyle = #35;
- -float(float v) rint = #36; // round to nearest int
- -float(float v) floor = #37; // largest integer <= v
- -float(float v) ceil = #38; // smallest integer >= v
- +float(float v) rint = #36; // round to nearest int
- +float(float v) floor = #37; // largest integer <= v
- +float(float v) ceil = #38; // smallest integer >= v
- // #39 was removed
- -float(entity e) checkbottom = #40; // true if self is on ground
- -float(vector v) pointcontents = #41; // returns a CONTENT_*
- +float(entity e) checkbottom = #40; // true if self is on ground
- +float(vector v) pointcontents = #41; // returns a CONTENT_*
- // #42 was removed
- float(float f) fabs = #43;
- -vector(entity e, float speed) aim = #44; // returns the shooting vector
- -float(string s) cvar = #45; // return cvar.value
- -void(string s) localcmd = #46; // put string into local que
- -entity(entity e) nextent = #47; // for looping through all ents
- +vector(entity e, float speed) aim = #44; // returns the shooting vector
- +float(string s) cvar = #45; // return cvar.value
- +void(string s) localcmd = #46; // put string into local que
- +entity(entity e) nextent = #47; // for looping through all ents
- void(vector o, vector d, float color, float count) particle = #48;// start a particle effect
- -void() ChangeYaw = #49; // turn towards self.ideal_yaw
- +void() ChangeYaw = #49; // turn towards self.ideal_yaw
- // at self.yaw_speed
- // #50 was removed
- -vector(vector v) vectoangles = #51;
- +vector(vector v) vectoangles = #51;
-
- //
- // direct client message generation
- //
- -void(float to, float f) WriteByte = #52;
- -void(float to, float f) WriteChar = #53;
- -void(float to, float f) WriteShort = #54;
- -void(float to, float f) WriteLong = #55;
- -void(float to, float f) WriteCoord = #56;
- -void(float to, float f) WriteAngle = #57;
- -void(float to, string s) WriteString = #58;
- -void(float to, entity s) WriteEntity = #59;
- +void(float to, float f) WriteByte = #52;
- +void(float to, float f) WriteChar = #53;
- +void(float to, float f) WriteShort = #54;
- +void(float to, float f) WriteLong = #55;
- +void(float to, float f) WriteCoord = #56;
- +void(float to, float f) WriteAngle = #57;
- +void(float to, string s) WriteString = #58;
- +void(float to, entity s) WriteEntity = #59;
-
- //
- // broadcast client message generation
- //
-
- -// void(float f) bWriteByte = #59;
- -// void(float f) bWriteChar = #60;
- -// void(float f) bWriteShort = #61;
- -// void(float f) bWriteLong = #62;
- -// void(float f) bWriteCoord = #63;
- -// void(float f) bWriteAngle = #64;
- -// void(string s) bWriteString = #65;
- +// void(float f) bWriteByte = #59;
- +// void(float f) bWriteChar = #60;
- +// void(float f) bWriteShort = #61;
- +// void(float f) bWriteLong = #62;
- +// void(float f) bWriteCoord = #63;
- +// void(float f) bWriteAngle = #64;
- +// void(string s) bWriteString = #65;
- // void(entity e) bWriteEntity = #66;
-
- -void(float step) movetogoal = #67;
- +void(float step) movetogoal = #67;
-
- -string(string s) precache_file = #68; // no effect except for -copy
- -void(entity e) makestatic = #69;
- +string(string s) precache_file = #68; // no effect except for -copy
- +void(entity e) makestatic = #69;
- void(string s) changelevel = #70;
-
- //#71 was removed
-
- -void(string var, string val) cvar_set = #72; // sets cvar.value
- +void(string var, string val) cvar_set = #72; // sets cvar.value
-
- -void(entity client, string s) centerprint = #73; // sprint, but in middle
- +void(entity client, string s) centerprint = #73; // sprint, but in middle
-
- void(vector pos, string samp, float vol, float atten) ambientsound = #74;
-
- -string(string s) precache_model2 = #75; // registered version only
- -string(string s) precache_sound2 = #76; // registered version only
- -string(string s) precache_file2 = #77; // registered version only
- +string(string s) precache_model2 = #75; // registered version only
- +string(string s) precache_sound2 = #76; // registered version only
- +string(string s) precache_file2 = #77; // registered version only
-
- -void(entity e) setspawnparms = #78; // set parm1... to the
- +void(entity e) setspawnparms = #78; // set parm1... to the
- // values at level start
- // for coop respawn
-
- @@ -681,7 +702,7 @@
- void() SUB_Remove;
-
- //
- -// combat.qc
- +// combat.qc
- //
- void(entity targ, entity inflictor, entity attacker, float damage) T_Damage;
-
- diff -ur --new-file v101qc/player.qc progs/player.qc
- --- v101qc/player.qc Sun Aug 18 02:29:36 1996
- +++ progs/player.qc Wed Aug 14 19:00:08 1996
- @@ -11,7 +11,7 @@
-
- $cd /raid/quake/id1/models/player_4
- $origin 0 -6 24
- -$base base
- +$base base
- $skin skin
-
- //
- @@ -88,7 +88,7 @@
-
- void() player_run;
-
- -void() player_stand1 =[ $axstnd1, player_stand1 ]
- +void() player_stand1 =[ $axstnd1, player_stand1 ]
- {
- self.weaponframe=0;
- if (self.velocity_x || self.velocity_y)
- @@ -110,10 +110,10 @@
- self.walkframe = 0;
- self.frame = $stand1 + self.walkframe;
- }
- - self.walkframe = self.walkframe + 1;
- + self.walkframe = self.walkframe + 1;
- };
-
- -void() player_run =[ $rockrun1, player_run ]
- +void() player_run =[ $rockrun1, player_run ]
- {
- self.weaponframe=0;
- if (!self.velocity_x && !self.velocity_y)
- @@ -139,33 +139,33 @@
- };
-
-
- -void() player_shot1 = [$shotatt1, player_shot2 ] {self.weaponframe=1;
- +void() player_shot1 = [$shotatt1, player_shot2 ] {self.weaponframe=1;
- self.effects = self.effects | EF_MUZZLEFLASH;};
- -void() player_shot2 = [$shotatt2, player_shot3 ] {self.weaponframe=2;};
- -void() player_shot3 = [$shotatt3, player_shot4 ] {self.weaponframe=3;};
- -void() player_shot4 = [$shotatt4, player_shot5 ] {self.weaponframe=4;};
- -void() player_shot5 = [$shotatt5, player_shot6 ] {self.weaponframe=5;};
- -void() player_shot6 = [$shotatt6, player_run ] {self.weaponframe=6;};
- -
- -void() player_axe1 = [$axatt1, player_axe2 ] {self.weaponframe=1;};
- -void() player_axe2 = [$axatt2, player_axe3 ] {self.weaponframe=2;};
- -void() player_axe3 = [$axatt3, player_axe4 ] {self.weaponframe=3;W_FireAxe();};
- -void() player_axe4 = [$axatt4, player_run ] {self.weaponframe=4;};
- -
- -void() player_axeb1 = [$axattb1, player_axeb2 ] {self.weaponframe=5;};
- -void() player_axeb2 = [$axattb2, player_axeb3 ] {self.weaponframe=6;};
- -void() player_axeb3 = [$axattb3, player_axeb4 ] {self.weaponframe=7;W_FireAxe();};
- -void() player_axeb4 = [$axattb4, player_run ] {self.weaponframe=8;};
- -
- -void() player_axec1 = [$axattc1, player_axec2 ] {self.weaponframe=1;};
- -void() player_axec2 = [$axattc2, player_axec3 ] {self.weaponframe=2;};
- -void() player_axec3 = [$axattc3, player_axec4 ] {self.weaponframe=3;W_FireAxe();};
- -void() player_axec4 = [$axattc4, player_run ] {self.weaponframe=4;};
- -
- -void() player_axed1 = [$axattd1, player_axed2 ] {self.weaponframe=5;};
- -void() player_axed2 = [$axattd2, player_axed3 ] {self.weaponframe=6;};
- -void() player_axed3 = [$axattd3, player_axed4 ] {self.weaponframe=7;W_FireAxe();};
- -void() player_axed4 = [$axattd4, player_run ] {self.weaponframe=8;};
- +void() player_shot2 = [$shotatt2, player_shot3 ] {self.weaponframe=2;};
- +void() player_shot3 = [$shotatt3, player_shot4 ] {self.weaponframe=3;};
- +void() player_shot4 = [$shotatt4, player_shot5 ] {self.weaponframe=4;};
- +void() player_shot5 = [$shotatt5, player_shot6 ] {self.weaponframe=5;};
- +void() player_shot6 = [$shotatt6, player_run ] {self.weaponframe=6;};
- +
- +void() player_axe1 = [$axatt1, player_axe2 ] {self.weaponframe=1;};
- +void() player_axe2 = [$axatt2, player_axe3 ] {self.weaponframe=2;};
- +void() player_axe3 = [$axatt3, player_axe4 ] {self.weaponframe=3;W_FireAxe();};
- +void() player_axe4 = [$axatt4, player_run ] {self.weaponframe=4;};
- +
- +void() player_axeb1 = [$axattb1, player_axeb2 ] {self.weaponframe=5;};
- +void() player_axeb2 = [$axattb2, player_axeb3 ] {self.weaponframe=6;};
- +void() player_axeb3 = [$axattb3, player_axeb4 ] {self.weaponframe=7;W_FireAxe();};
- +void() player_axeb4 = [$axattb4, player_run ] {self.weaponframe=8;};
- +
- +void() player_axec1 = [$axattc1, player_axec2 ] {self.weaponframe=1;};
- +void() player_axec2 = [$axattc2, player_axec3 ] {self.weaponframe=2;};
- +void() player_axec3 = [$axattc3, player_axec4 ] {self.weaponframe=3;W_FireAxe();};
- +void() player_axec4 = [$axattc4, player_run ] {self.weaponframe=4;};
- +
- +void() player_axed1 = [$axattd1, player_axed2 ] {self.weaponframe=5;};
- +void() player_axed2 = [$axattd2, player_axed3 ] {self.weaponframe=6;};
- +void() player_axed3 = [$axattd3, player_axed4 ] {self.weaponframe=7;W_FireAxe();};
- +void() player_axed4 = [$axattd4, player_run ] {self.weaponframe=8;};
-
-
- //============================================================================
- @@ -240,7 +240,7 @@
-
- void() PainSound =
- {
- -local float rs;
- +local float rs;
-
- if (self.health < 0)
- return;
- @@ -265,7 +265,7 @@
- // slime pain sounds
- if (self.watertype == CONTENT_SLIME)
- {
- -// FIX ME put in some steam here
- +// FIX ME put in some steam here
- if (random() > 0.5)
- sound (self, CHAN_VOICE, "player/lburn1.wav", 1, ATTN_NORM);
- else
- @@ -320,19 +320,19 @@
- return;
- };
-
- -void() player_pain1 = [ $pain1, player_pain2 ] {PainSound();self.weaponframe=0;};
- -void() player_pain2 = [ $pain2, player_pain3 ] {};
- -void() player_pain3 = [ $pain3, player_pain4 ] {};
- -void() player_pain4 = [ $pain4, player_pain5 ] {};
- -void() player_pain5 = [ $pain5, player_pain6 ] {};
- -void() player_pain6 = [ $pain6, player_run ] {};
- -
- -void() player_axpain1 = [ $axpain1, player_axpain2 ] {PainSound();self.weaponframe=0;};
- -void() player_axpain2 = [ $axpain2, player_axpain3 ] {};
- -void() player_axpain3 = [ $axpain3, player_axpain4 ] {};
- -void() player_axpain4 = [ $axpain4, player_axpain5 ] {};
- -void() player_axpain5 = [ $axpain5, player_axpain6 ] {};
- -void() player_axpain6 = [ $axpain6, player_run ] {};
- +void() player_pain1 = [ $pain1, player_pain2 ] {PainSound();self.weaponframe=0;};
- +void() player_pain2 = [ $pain2, player_pain3 ] {};
- +void() player_pain3 = [ $pain3, player_pain4 ] {};
- +void() player_pain4 = [ $pain4, player_pain5 ] {};
- +void() player_pain5 = [ $pain5, player_pain6 ] {};
- +void() player_pain6 = [ $pain6, player_run ] {};
- +
- +void() player_axpain1 = [ $axpain1, player_axpain2 ] {PainSound();self.weaponframe=0;};
- +void() player_axpain2 = [ $axpain2, player_axpain3 ] {};
- +void() player_axpain3 = [ $axpain3, player_axpain4 ] {};
- +void() player_axpain4 = [ $axpain4, player_axpain5 ] {};
- +void() player_axpain5 = [ $axpain5, player_axpain6 ] {};
- +void() player_axpain6 = [ $axpain6, player_run ] {};
-
- void() player_pain =
- {
- @@ -340,7 +340,7 @@
- return;
-
- if (self.invisible_finished > time)
- - return; // eyes don't have pain frames
- + return; // eyes don't have pain frames
-
- if (self.weapon == IT_AXE)
- player_axpain1 ();
- @@ -357,7 +357,7 @@
-
- void() DeathBubblesSpawn =
- {
- -local entity bubble;
- +local entity bubble;
- if (self.owner.waterlevel != 3)
- return;
- bubble = spawn();
- @@ -381,7 +381,7 @@
-
- void(float num_bubbles) DeathBubbles =
- {
- -local entity bubble_spawner;
- +local entity bubble_spawner;
-
- bubble_spawner = spawn();
- setorigin (bubble_spawner, self.origin);
- @@ -398,7 +398,7 @@
-
- void() DeathSound =
- {
- -local float rs;
- +local float rs;
-
- // water death sounds
- if (self.waterlevel == 3)
- @@ -442,12 +442,12 @@
-
- if (dm > -50)
- {
- -// dprint ("level 1\n");
- +// dprint ("level 1\n");
- v = v * 0.7;
- }
- else if (dm > -200)
- {
- -// dprint ("level 3\n");
- +// dprint ("level 3\n");
- v = v * 2;
- }
- else
- @@ -458,7 +458,7 @@
-
- void(string gibname, float dm) ThrowGib =
- {
- - local entity new;
- + local entity new;
-
- new = spawn();
- new.origin = self.origin;
- @@ -523,14 +523,14 @@
-
- void() PlayerDie =
- {
- - local float i;
- + local float i;
-
- self.items = self.items - (self.items & IT_INVISIBILITY);
- - self.invisible_finished = 0; // don't die as eyes
- + self.invisible_finished = 0; // don't die as eyes
- self.invincible_finished = 0;
- self.super_damage_finished = 0;
- self.radsuit_finished = 0;
- - self.modelindex = modelindex_player; // don't use eyes
- + self.modelindex = modelindex_player; // don't use eyes
-
- if (deathmatch || coop)
- DropBackpack();
- @@ -579,9 +579,9 @@
- };
-
- void() set_suicide_frame =
- -{ // used by klill command and diconnect command
- +{ // used by klill command and diconnect command
- if (self.model != "progs/player.mdl")
- - return; // allready gibbed
- + return; // allready gibbed
- self.frame = $deatha11;
- self.solid = SOLID_NOT;
- self.movetype = MOVETYPE_TOSS;
- @@ -590,70 +590,70 @@
- };
-
-
- -void() player_diea1 = [ $deatha1, player_diea2 ] {};
- -void() player_diea2 = [ $deatha2, player_diea3 ] {};
- -void() player_diea3 = [ $deatha3, player_diea4 ] {};
- -void() player_diea4 = [ $deatha4, player_diea5 ] {};
- -void() player_diea5 = [ $deatha5, player_diea6 ] {};
- -void() player_diea6 = [ $deatha6, player_diea7 ] {};
- -void() player_diea7 = [ $deatha7, player_diea8 ] {};
- -void() player_diea8 = [ $deatha8, player_diea9 ] {};
- -void() player_diea9 = [ $deatha9, player_diea10 ] {};
- -void() player_diea10 = [ $deatha10, player_diea11 ] {};
- -void() player_diea11 = [ $deatha11, player_diea11 ] {PlayerDead();};
- -
- -void() player_dieb1 = [ $deathb1, player_dieb2 ] {};
- -void() player_dieb2 = [ $deathb2, player_dieb3 ] {};
- -void() player_dieb3 = [ $deathb3, player_dieb4 ] {};
- -void() player_dieb4 = [ $deathb4, player_dieb5 ] {};
- -void() player_dieb5 = [ $deathb5, player_dieb6 ] {};
- -void() player_dieb6 = [ $deathb6, player_dieb7 ] {};
- -void() player_dieb7 = [ $deathb7, player_dieb8 ] {};
- -void() player_dieb8 = [ $deathb8, player_dieb9 ] {};
- -void() player_dieb9 = [ $deathb9, player_dieb9 ] {PlayerDead();};
- -
- -void() player_diec1 = [ $deathc1, player_diec2 ] {};
- -void() player_diec2 = [ $deathc2, player_diec3 ] {};
- -void() player_diec3 = [ $deathc3, player_diec4 ] {};
- -void() player_diec4 = [ $deathc4, player_diec5 ] {};
- -void() player_diec5 = [ $deathc5, player_diec6 ] {};
- -void() player_diec6 = [ $deathc6, player_diec7 ] {};
- -void() player_diec7 = [ $deathc7, player_diec8 ] {};
- -void() player_diec8 = [ $deathc8, player_diec9 ] {};
- -void() player_diec9 = [ $deathc9, player_diec10 ] {};
- -void() player_diec10 = [ $deathc10, player_diec11 ] {};
- -void() player_diec11 = [ $deathc11, player_diec12 ] {};
- -void() player_diec12 = [ $deathc12, player_diec13 ] {};
- -void() player_diec13 = [ $deathc13, player_diec14 ] {};
- -void() player_diec14 = [ $deathc14, player_diec15 ] {};
- -void() player_diec15 = [ $deathc15, player_diec15 ] {PlayerDead();};
- -
- -void() player_died1 = [ $deathd1, player_died2 ] {};
- -void() player_died2 = [ $deathd2, player_died3 ] {};
- -void() player_died3 = [ $deathd3, player_died4 ] {};
- -void() player_died4 = [ $deathd4, player_died5 ] {};
- -void() player_died5 = [ $deathd5, player_died6 ] {};
- -void() player_died6 = [ $deathd6, player_died7 ] {};
- -void() player_died7 = [ $deathd7, player_died8 ] {};
- -void() player_died8 = [ $deathd8, player_died9 ] {};
- -void() player_died9 = [ $deathd9, player_died9 ] {PlayerDead();};
- -
- -void() player_diee1 = [ $deathe1, player_diee2 ] {};
- -void() player_diee2 = [ $deathe2, player_diee3 ] {};
- -void() player_diee3 = [ $deathe3, player_diee4 ] {};
- -void() player_diee4 = [ $deathe4, player_diee5 ] {};
- -void() player_diee5 = [ $deathe5, player_diee6 ] {};
- -void() player_diee6 = [ $deathe6, player_diee7 ] {};
- -void() player_diee7 = [ $deathe7, player_diee8 ] {};
- -void() player_diee8 = [ $deathe8, player_diee9 ] {};
- -void() player_diee9 = [ $deathe9, player_diee9 ] {PlayerDead();};
- -
- -void() player_die_ax1 = [ $axdeth1, player_die_ax2 ] {};
- -void() player_die_ax2 = [ $axdeth2, player_die_ax3 ] {};
- -void() player_die_ax3 = [ $axdeth3, player_die_ax4 ] {};
- -void() player_die_ax4 = [ $axdeth4, player_die_ax5 ] {};
- -void() player_die_ax5 = [ $axdeth5, player_die_ax6 ] {};
- -void() player_die_ax6 = [ $axdeth6, player_die_ax7 ] {};
- -void() player_die_ax7 = [ $axdeth7, player_die_ax8 ] {};
- -void() player_die_ax8 = [ $axdeth8, player_die_ax9 ] {};
- -void() player_die_ax9 = [ $axdeth9, player_die_ax9 ] {PlayerDead();};
- +void() player_diea1 = [ $deatha1, player_diea2 ] {};
- +void() player_diea2 = [ $deatha2, player_diea3 ] {};
- +void() player_diea3 = [ $deatha3, player_diea4 ] {};
- +void() player_diea4 = [ $deatha4, player_diea5 ] {};
- +void() player_diea5 = [ $deatha5, player_diea6 ] {};
- +void() player_diea6 = [ $deatha6, player_diea7 ] {};
- +void() player_diea7 = [ $deatha7, player_diea8 ] {};
- +void() player_diea8 = [ $deatha8, player_diea9 ] {};
- +void() player_diea9 = [ $deatha9, player_diea10 ] {};
- +void() player_diea10 = [ $deatha10, player_diea11 ] {};
- +void() player_diea11 = [ $deatha11, player_diea11 ] {PlayerDead();};
- +
- +void() player_dieb1 = [ $deathb1, player_dieb2 ] {};
- +void() player_dieb2 = [ $deathb2, player_dieb3 ] {};
- +void() player_dieb3 = [ $deathb3, player_dieb4 ] {};
- +void() player_dieb4 = [ $deathb4, player_dieb5 ] {};
- +void() player_dieb5 = [ $deathb5, player_dieb6 ] {};
- +void() player_dieb6 = [ $deathb6, player_dieb7 ] {};
- +void() player_dieb7 = [ $deathb7, player_dieb8 ] {};
- +void() player_dieb8 = [ $deathb8, player_dieb9 ] {};
- +void() player_dieb9 = [ $deathb9, player_dieb9 ] {PlayerDead();};
- +
- +void() player_diec1 = [ $deathc1, player_diec2 ] {};
- +void() player_diec2 = [ $deathc2, player_diec3 ] {};
- +void() player_diec3 = [ $deathc3, player_diec4 ] {};
- +void() player_diec4 = [ $deathc4, player_diec5 ] {};
- +void() player_diec5 = [ $deathc5, player_diec6 ] {};
- +void() player_diec6 = [ $deathc6, player_diec7 ] {};
- +void() player_diec7 = [ $deathc7, player_diec8 ] {};
- +void() player_diec8 = [ $deathc8, player_diec9 ] {};
- +void() player_diec9 = [ $deathc9, player_diec10 ] {};
- +void() player_diec10 = [ $deathc10, player_diec11 ] {};
- +void() player_diec11 = [ $deathc11, player_diec12 ] {};
- +void() player_diec12 = [ $deathc12, player_diec13 ] {};
- +void() player_diec13 = [ $deathc13, player_diec14 ] {};
- +void() player_diec14 = [ $deathc14, player_diec15 ] {};
- +void() player_diec15 = [ $deathc15, player_diec15 ] {PlayerDead();};
- +
- +void() player_died1 = [ $deathd1, player_died2 ] {};
- +void() player_died2 = [ $deathd2, player_died3 ] {};
- +void() player_died3 = [ $deathd3, player_died4 ] {};
- +void() player_died4 = [ $deathd4, player_died5 ] {};
- +void() player_died5 = [ $deathd5, player_died6 ] {};
- +void() player_died6 = [ $deathd6, player_died7 ] {};
- +void() player_died7 = [ $deathd7, player_died8 ] {};
- +void() player_died8 = [ $deathd8, player_died9 ] {};
- +void() player_died9 = [ $deathd9, player_died9 ] {PlayerDead();};
- +
- +void() player_diee1 = [ $deathe1, player_diee2 ] {};
- +void() player_diee2 = [ $deathe2, player_diee3 ] {};
- +void() player_diee3 = [ $deathe3, player_diee4 ] {};
- +void() player_diee4 = [ $deathe4, player_diee5 ] {};
- +void() player_diee5 = [ $deathe5, player_diee6 ] {};
- +void() player_diee6 = [ $deathe6, player_diee7 ] {};
- +void() player_diee7 = [ $deathe7, player_diee8 ] {};
- +void() player_diee8 = [ $deathe8, player_diee9 ] {};
- +void() player_diee9 = [ $deathe9, player_diee9 ] {PlayerDead();};
- +
- +void() player_die_ax1 = [ $axdeth1, player_die_ax2 ] {};
- +void() player_die_ax2 = [ $axdeth2, player_die_ax3 ] {};
- +void() player_die_ax3 = [ $axdeth3, player_die_ax4 ] {};
- +void() player_die_ax4 = [ $axdeth4, player_die_ax5 ] {};
- +void() player_die_ax5 = [ $axdeth5, player_die_ax6 ] {};
- +void() player_die_ax6 = [ $axdeth6, player_die_ax7 ] {};
- +void() player_die_ax7 = [ $axdeth7, player_die_ax8 ] {};
- +void() player_die_ax8 = [ $axdeth8, player_die_ax9 ] {};
- +void() player_die_ax9 = [ $axdeth9, player_die_ax9 ] {PlayerDead();};
- diff -ur --new-file v101qc/progdefs.h progs/progdefs.h
- --- v101qc/progdefs.h Thu Jan 1 08:00:00 1970
- +++ progs/progdefs.h Sat Aug 17 23:10:52 1996
- @@ -0,0 +1,143 @@
- +
- +/* file generated by qcc, do not modify */
- +
- +typedef struct
- +{ int pad[28];
- + int self;
- + int other;
- + int world;
- + float time;
- + float frametime;
- + float force_retouch;
- + string_t mapname;
- + float deathmatch;
- + float coop;
- + float teamplay;
- + float serverflags;
- + float total_secrets;
- + float total_monsters;
- + float found_secrets;
- + float killed_monsters;
- + float parm1;
- + float parm2;
- + float parm3;
- + float parm4;
- + float parm5;
- + float parm6;
- + float parm7;
- + float parm8;
- + float parm9;
- + float parm10;
- + float parm11;
- + float parm12;
- + float parm13;
- + float parm14;
- + float parm15;
- + float parm16;
- + vec3_t v_forward;
- + vec3_t v_up;
- + vec3_t v_right;
- + float trace_allsolid;
- + float trace_startsolid;
- + float trace_fraction;
- + vec3_t trace_endpos;
- + vec3_t trace_plane_normal;
- + float trace_plane_dist;
- + int trace_ent;
- + float trace_inopen;
- + float trace_inwater;
- + int msg_entity;
- + func_t main;
- + func_t StartFrame;
- + func_t PlayerPreThink;
- + func_t PlayerPostThink;
- + func_t ClientKill;
- + func_t ClientConnect;
- + func_t PutClientInServer;
- + func_t ClientDisconnect;
- + func_t SetNewParms;
- + func_t SetChangeParms;
- +} globalvars_t;
- +
- +typedef struct
- +{
- + float modelindex;
- + vec3_t absmin;
- + vec3_t absmax;
- + float ltime;
- + float movetype;
- + float solid;
- + vec3_t origin;
- + vec3_t oldorigin;
- + vec3_t velocity;
- + vec3_t angles;
- + vec3_t avelocity;
- + vec3_t punchangle;
- + string_t classname;
- + string_t model;
- + float frame;
- + float skin;
- + float effects;
- + vec3_t mins;
- + vec3_t maxs;
- + vec3_t size;
- + func_t touch;
- + func_t use;
- + func_t think;
- + func_t blocked;
- + float nextthink;
- + int groundentity;
- + float health;
- + float frags;
- + float weapon;
- + string_t weaponmodel;
- + float weaponframe;
- + float currentammo;
- + float ammo_shells;
- + float ammo_nails;
- + float ammo_rockets;
- + float ammo_cells;
- + float items;
- + float takedamage;
- + int chain;
- + float deadflag;
- + vec3_t view_ofs;
- + float button0;
- + float button1;
- + float button2;
- + float impulse;
- + float fixangle;
- + vec3_t v_angle;
- + float idealpitch;
- + string_t netname;
- + int enemy;
- + float flags;
- + float colormap;
- + float team;
- + float max_health;
- + float teleport_time;
- + float armortype;
- + float armorvalue;
- + float waterlevel;
- + float watertype;
- + float ideal_yaw;
- + float yaw_speed;
- + int aiment;
- + int goalentity;
- + float spawnflags;
- + string_t target;
- + string_t targetname;
- + float dmg_take;
- + float dmg_save;
- + int dmg_inflictor;
- + int owner;
- + vec3_t movedir;
- + string_t message;
- + float sounds;
- + string_t noise;
- + string_t noise1;
- + string_t noise2;
- + string_t noise3;
- +} entvars_t;
- +
- +#define PROGHEADER_CRC 5927
- diff -ur --new-file v101qc/progs.src progs/progs.src
- --- v101qc/progs.src Sun Aug 18 02:29:36 1996
- +++ progs/progs.src Wed Aug 14 18:46:28 1996
- @@ -6,6 +6,7 @@
- ai.qc
- combat.qc
- items.qc
- +cbnmods.qc
- weapons.qc
- world.qc
- client.qc
- @@ -27,9 +28,9 @@
- zombie.qc
- boss.qc
-
- -tarbaby.qc // registered
- -hknight.qc // registered
- -fish.qc // registered
- -shalrath.qc // registered
- -enforcer.qc // registered
- -oldone.qc // registered
- +tarbaby.qc // registered
- +hknight.qc // registered
- +fish.qc // registered
- +shalrath.qc // registered
- +enforcer.qc // registered
- +oldone.qc // registered
- diff -ur --new-file v101qc/triggers.qc progs/triggers.qc
- --- v101qc/triggers.qc Sun Aug 18 02:29:36 1996
- +++ progs/triggers.qc Thu Aug 15 23:29:42 1996
- @@ -9,8 +9,8 @@
-
- //=============================================================================
-
- -float SPAWNFLAG_NOMESSAGE = 1;
- -float SPAWNFLAG_NOTOUCH = 1;
- +float SPAWNFLAG_NOMESSAGE = 1;
- +float SPAWNFLAG_NOTOUCH = 1;
-
- // the wait time has passed, so set back up for another activation
- void() multi_wait =
- @@ -31,7 +31,7 @@
- {
- if (self.nextthink > time)
- {
- - return; // allready been triggered
- + return; // allready been triggered
- }
-
- if (self.classname == "trigger_secret")
- @@ -52,13 +52,13 @@
-
- SUB_UseTargets();
-
- - if (self.wait > 0)
- + if (self.wait > 0)
- {
- self.think = multi_wait;
- self.nextthink = time + self.wait;
- }
- else
- - { // we can't just remove (self) here, because this is a touch function
- + { // we can't just remove (self) here, because this is a touch function
- // called wheil C code is looping through area links...
- self.touch = SUB_Null;
- self.nextthink = time + 0.1;
- @@ -88,7 +88,7 @@
- {
- makevectors (other.angles);
- if (v_forward * self.movedir < 0)
- - return; // not facing the right way
- + return; // not facing the right way
- }
-
- self.enemy = other;
- @@ -102,9 +102,9 @@
- If notouch is set, the trigger is only fired by other entities, not by touching.
- NOTOUCH has been obsoleted by trigger_relay!
- sounds
- -1) secret
- -2) beep beep
- -3) large switch
- +1) secret
- +2) beep beep
- +3) large switch
- 4)
- set "message" to text string
- */
- @@ -140,7 +140,7 @@
- self.th_die = multi_killed;
- self.takedamage = DAMAGE_YES;
- self.solid = SOLID_BBOX;
- - setorigin (self, self.origin); // make sure it links into the world
- + setorigin (self, self.origin); // make sure it links into the world
- }
- else
- {
- @@ -159,9 +159,9 @@
- if "killtarget" is set, any objects that have a matching "target" will be removed when the trigger is fired.
- if "angle" is set, the trigger will only fire when someone is facing the direction of the angle. Use "360" for an angle of 0.
- sounds
- -1) secret
- -2) beep beep
- -3) large switch
- +1) secret
- +2) beep beep
- +3) large switch
- 4)
- set "message" to text string
- */
- @@ -187,8 +187,8 @@
- /*QUAKED trigger_secret (.5 .5 .5) ?
- secret counter trigger
- sounds
- -1) secret
- -2) beep beep
- +1) secret
- +2) beep beep
- 3)
- 4)
- set "message" to text string
- @@ -276,13 +276,13 @@
- ==============================================================================
- */
-
- -float PLAYER_ONLY = 1;
- -float SILENT = 2;
- +float PLAYER_ONLY = 1;
- +float SILENT = 2;
-
- void() play_teleport =
- {
- - local float v;
- - local string tmpstr;
- + local float v;
- + local string tmpstr;
-
- v = random() * 5;
- if (v < 1)
- @@ -326,7 +326,7 @@
- if (other.invincible_finished > time)
- self.classname = "teledeath2";
- if (self.owner.classname != "player")
- - { // other monsters explode themselves
- + { // other monsters explode themselves
- T_Damage (self.owner, self, self, 50000);
- return;
- }
- @@ -342,7 +342,7 @@
-
- void(vector org, entity death_owner) spawn_tdeath =
- {
- -local entity death;
- +local entity death;
-
- death = spawn();
- death.classname = "teledeath";
- @@ -356,25 +356,29 @@
- death.think = SUB_Remove;
- death.owner = death_owner;
-
- - force_retouch = 2; // make sure even still objects get hit
- + force_retouch = 2; // make sure even still objects get hit
- };
-
- void() teleport_touch =
- {
- -local entity t;
- -local vector org;
- +local entity t;
- +local vector org;
-
- if (self.targetname)
- {
- if (self.nextthink < time)
- {
- - return; // not fired yet
- + return; // not fired yet
- }
- }
-
- - if (self.spawnflags & PLAYER_ONLY)
- +/* if (self.spawnflags & PLAYER_ONLY)
- {
- +//PATCH - CN, Aug 96: make rockets and grenades teleport
- +bprint (other.classname);
- if (other.classname != "player")
- + if (other.classname != "grenade")
- + if (other.classname != "rocket")
- return;
- }
-
- @@ -384,6 +388,8 @@
-
- SUB_UseTargets ();
-
- +*/
- +
- // put a tfog where the player was
- spawn_tfog (other.origin);
-
- @@ -410,7 +416,7 @@
- other.angles = t.mangle;
- if (other.classname == "player")
- {
- - other.fixangle = 1; // turn this way immediately
- + other.fixangle = 1; // turn this way immediately
- other.teleport_time = time + 0.7;
- if (other.flags & FL_ONGROUND)
- other.flags = other.flags - FL_ONGROUND;
- @@ -436,7 +442,7 @@
- void() teleport_use =
- {
- self.nextthink = time + 0.2;
- - force_retouch = 2; // make sure even still objects get hit
- + force_retouch = 2; // make sure even still objects get hit
- self.think = SUB_Null;
- };
-
- diff -ur --new-file v101qc/weapons.qc progs/weapons.qc
- --- v101qc/weapons.qc Sun Aug 18 02:29:36 1996
- +++ progs/weapons.qc Sat Aug 17 22:34:22 1996
- @@ -6,22 +6,21 @@
- void(vector org, vector vel, float damage) SpawnBlood;
- void() SuperDamageSound;
-
- -
- // called by worldspawn
- void() W_Precache =
- {
- - precache_sound ("weapons/r_exp3.wav"); // new rocket explosion
- - precache_sound ("weapons/rocket1i.wav"); // spike gun
- + precache_sound ("weapons/r_exp3.wav"); // new rocket explosion
- + precache_sound ("weapons/rocket1i.wav"); // spike gun
- precache_sound ("weapons/sgun1.wav");
- - precache_sound ("weapons/guncock.wav"); // player shotgun
- - precache_sound ("weapons/ric1.wav"); // ricochet (used in c code)
- - precache_sound ("weapons/ric2.wav"); // ricochet (used in c code)
- - precache_sound ("weapons/ric3.wav"); // ricochet (used in c code)
- - precache_sound ("weapons/spike2.wav"); // super spikes
- - precache_sound ("weapons/tink1.wav"); // spikes tink (used in c code)
- - precache_sound ("weapons/grenade.wav"); // grenade launcher
- - precache_sound ("weapons/bounce.wav"); // grenade bounce
- - precache_sound ("weapons/shotgn2.wav"); // super shotgun
- + precache_sound ("weapons/guncock.wav"); // player shotgun
- + precache_sound ("weapons/ric1.wav"); // ricochet (used in c code)
- + precache_sound ("weapons/ric2.wav"); // ricochet (used in c code)
- + precache_sound ("weapons/ric3.wav"); // ricochet (used in c code)
- + precache_sound ("weapons/spike2.wav"); // super spikes
- + precache_sound ("weapons/tink1.wav"); // spikes tink (used in c code)
- + precache_sound ("weapons/grenade.wav"); // grenade launcher
- + precache_sound ("weapons/bounce.wav"); // grenade bounce
- + precache_sound ("weapons/shotgn2.wav"); // super shotgun
- };
-
- float() crandom =
- @@ -36,8 +35,8 @@
- */
- void() W_FireAxe =
- {
- - local vector source;
- - local vector org;
- + local vector source;
- + local vector org;
-
- source = self.origin + '0 0 16';
- traceline (source, source + v_forward*64, FALSE, self);
- @@ -53,7 +52,7 @@
- T_Damage (trace_ent, self, self, 20);
- }
- else
- - { // hit wall
- + { // hit wall
- sound (self, CHAN_WEAPON, "player/axhit2.wav", 1, ATTN_NORM);
- WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
- WriteByte (MSG_BROADCAST, TE_GUNSHOT);
- @@ -69,7 +68,7 @@
-
- vector() wall_velocity =
- {
- - local vector vel;
- + local vector vel;
-
- vel = normalize (self.velocity);
- vel = normalize(vel + v_up*(random()- 0.5) + v_right*(random()- 0.5));
- @@ -87,8 +86,8 @@
- */
- void(vector org, vector vel) SpawnMeatSpray =
- {
- - local entity missile, mpuff;
- - local vector org;
- + local entity missile, mpuff;
- + local vector org;
-
- missile = spawn ();
- missile.owner = self;
- @@ -107,7 +106,7 @@
- missile.think = SUB_Remove;
-
- setmodel (missile, "progs/zom_gib.mdl");
- - setsize (missile, '0 0 0', '0 0 0');
- + setsize (missile, '0 0 0', '0 0 0');
- setorigin (missile, org);
- };
-
- @@ -128,7 +127,7 @@
- */
- void(float damage) spawn_touchblood =
- {
- - local vector vel;
- + local vector vel;
-
- vel = wall_velocity () * 0.2;
- SpawnBlood (self.origin + vel*0.01, vel, damage);
- @@ -155,8 +154,8 @@
- ==============================================================================
- */
-
- -entity multi_ent;
- -float multi_damage;
- +entity multi_ent;
- +float multi_damage;
-
- void() ClearMultiDamage =
- {
- @@ -201,7 +200,7 @@
- */
- void(float damage, vector dir) TraceAttack =
- {
- - local vector vel, org;
- + local vector vel, org;
-
- vel = normalize(dir + v_up*crandom() + v_right*crandom());
- vel = vel + 2*trace_plane_normal;
- @@ -234,8 +233,8 @@
- */
- void(float shotcount, vector dir, vector spread) FireBullets =
- {
- - local vector direction;
- - local vector src;
- + local vector direction;
- + local vector src;
-
- makevectors(self.v_angle);
-
- @@ -265,7 +264,7 @@
- {
- local vector dir;
-
- - sound (self, CHAN_WEAPON, "weapons/guncock.wav", 1, ATTN_NORM);
- + sound (self, CHAN_WEAPON, "weapons/guncock.wav", 1, ATTN_NORM);
-
- self.punchangle_x = -2;
-
- @@ -290,7 +289,7 @@
- return;
- }
-
- - sound (self ,CHAN_WEAPON, "weapons/shotgn2.wav", 1, ATTN_NORM);
- + sound (self ,CHAN_WEAPON, "weapons/shotgn2.wav", 1, ATTN_NORM);
-
- self.punchangle_x = -4;
-
- @@ -308,12 +307,12 @@
- ==============================================================================
- */
-
- -void() s_explode1 = [0, s_explode2] {};
- -void() s_explode2 = [1, s_explode3] {};
- -void() s_explode3 = [2, s_explode4] {};
- -void() s_explode4 = [3, s_explode5] {};
- -void() s_explode5 = [4, s_explode6] {};
- -void() s_explode6 = [5, SUB_Remove] {};
- +void() s_explode1 = [0, s_explode2] {};
- +void() s_explode2 = [1, s_explode3] {};
- +void() s_explode3 = [2, s_explode4] {};
- +void() s_explode4 = [3, s_explode5] {};
- +void() s_explode5 = [4, s_explode6] {};
- +void() s_explode6 = [5, SUB_Remove] {};
-
- void() BecomeExplosion =
- {
- @@ -327,10 +326,10 @@
-
- void() T_MissileTouch =
- {
- - local float damg;
- + local float damg;
-
- if (other == self.owner)
- - return; // don't explode on owner
- + return; // don't explode on owner
-
- if (pointcontents(self.origin) == CONTENT_SKY)
- {
- @@ -343,7 +342,7 @@
- if (other.health)
- {
- if (other.classname == "monster_shambler")
- - damg = damg * 0.5; // mostly immune
- + damg = damg * 0.5; // mostly immune
- T_Damage (other, self, self.owner, damg );
- }
-
- @@ -351,7 +350,7 @@
- // was done in the impact
- T_RadiusDamage (self, self.owner, 120, other);
-
- -// sound (self, CHAN_WEAPON, "weapons/r_exp3.wav", 1, ATTN_NORM);
- +// sound (self, CHAN_WEAPON, "weapons/r_exp3.wav", 1, ATTN_NORM);
- self.origin = self.origin - 8*normalize(self.velocity);
-
- WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
- @@ -364,7 +363,6 @@
- };
-
-
- -
- /*
- ================
- W_FireRocket
- @@ -372,7 +370,8 @@
- */
- void() W_FireRocket =
- {
- - local entity missile, mpuff;
- + local entity missile, mpuff;
- + local vector recoil;
-
- self.currentammo = self.ammo_rockets = self.ammo_rockets - 1;
-
- @@ -385,22 +384,35 @@
- missile.movetype = MOVETYPE_FLYMISSILE;
- missile.solid = SOLID_BBOX;
-
- -// set missile speed
- +// set missile speed
-
- makevectors (self.v_angle);
- missile.velocity = aim(self, 1000);
- + recoil = missile.velocity * 150; // CN_PATCH - calculate recoil
- missile.velocity = missile.velocity * 1000;
- missile.angles = vectoangles(missile.velocity);
-
- missile.touch = T_MissileTouch;
-
- -// set missile duration
- - missile.nextthink = time + 5;
- - missile.think = SUB_Remove;
-
- setmodel (missile, "progs/missile.mdl");
- - setsize (missile, '0 0 0', '0 0 0');
- + setsize (missile, '0 0 0', '0 0 0');
- setorigin (missile, self.origin + v_forward*8 + '0 0 16');
- +
- +
- +//CN_PATCH - Aug 96: Setup for missiles in water and player recoil
- + missile.nextthink = time + 0.1;
- + missile.duration = time + 6;
- + missile.think = CN_Missile_Think;
- + missile.jump_flag = FALSE; // use these fields for our own use
- + missile.swim_flag = FALSE;
- + missile.classname = "rocket";
- +
- + // Give some good 'ol Newtonian recoil
- + self.velocity = self.velocity - recoil;
- + self.avelocity = vectoangles(self.velocity);
- +// END CN_PATCH
- +
- };
-
- /*
- @@ -418,8 +430,8 @@
- */
- void(vector p1, vector p2, entity from, float damage) LightningDamage =
- {
- - local entity e1, e2;
- - local vector f;
- + local entity e1, e2;
- + local vector f;
-
- f = p2 - p1;
- normalize (f);
- @@ -462,7 +474,7 @@
-
- void() W_FireLightning =
- {
- - local vector org;
- + local vector org;
-
- if (self.ammo_cells < 1)
- {
- @@ -526,17 +538,18 @@
- void() GrenadeTouch =
- {
- if (other == self.owner)
- - return; // don't explode on owner
- + return; // don't explode on owner
- if (other.takedamage == DAMAGE_AIM)
- {
- GrenadeExplode();
- return;
- }
- - sound (self, CHAN_WEAPON, "weapons/bounce.wav", 1, ATTN_NORM); // bounce sound
- + sound (self, CHAN_WEAPON, "weapons/bounce.wav", 1, ATTN_NORM); // bounce sound
- if (self.velocity == '0 0 0')
- self.avelocity = '0 0 0';
- };
-
- +
- /*
- ================
- W_FireGrenade
- @@ -544,7 +557,8 @@
- */
- void() W_FireGrenade =
- {
- - local entity missile, mpuff;
- + local entity missile, mpuff;
- + local vector recoil;
-
- self.currentammo = self.ammo_rockets = self.ammo_rockets - 1;
-
- @@ -558,7 +572,7 @@
- missile.solid = SOLID_BBOX;
- missile.classname = "grenade";
-
- -// set missile speed
- +// set missile speed
-
- makevectors (self.v_angle);
-
- @@ -571,19 +585,31 @@
- missile.velocity_z = 200;
- }
-
- + recoil = missile.velocity * 0.234; //CN_PATCH calculate recoil
- +
- missile.avelocity = '300 300 300';
-
- missile.angles = vectoangles(missile.velocity);
-
- missile.touch = GrenadeTouch;
-
- -// set missile duration
- - missile.nextthink = time + 2.5;
- - missile.think = GrenadeExplode;
-
- setmodel (missile, "progs/grenade.mdl");
- - setsize (missile, '0 0 0', '0 0 0');
- + setsize (missile, '0 0 0', '0 0 0');
- setorigin (missile, self.origin);
- +
- +//CN_PATCH - Aug 96: Setup for missiles in water and player recoil
- + missile.nextthink = time + 0.1;
- + missile.duration = time + 2.5;
- + missile.think = CN_Missile_Think;
- + missile.jump_flag = FALSE; //id's fields used for our own purpose
- + missile.swim_flag = FALSE;
- +
- + //Give the player some good 'ol Newtonian recoil
- + self.velocity = self.velocity - recoil;
- + self.avelocity = vectoangles(self.velocity);
- +//END CN_PATCH
- +
- };
-
-
- @@ -611,19 +637,25 @@
-
- newmis.touch = spike_touch;
- newmis.classname = "spike";
- - newmis.think = SUB_Remove;
- - newmis.nextthink = time + 6;
- setmodel (newmis, "progs/spike.mdl");
- - setsize (newmis, VEC_ORIGIN, VEC_ORIGIN);
- + setsize (newmis, VEC_ORIGIN, VEC_ORIGIN);
- setorigin (newmis, org);
-
- newmis.velocity = dir * 1000;
- +
- +//CN_PATCH - Aug 96: Setup for missiles in water and player recoil
- + newmis.nextthink = time + 0.1;
- + newmis.duration = time + 6;
- + newmis.think = CN_Missile_Think;
- + newmis.jump_flag = FALSE; //id's fields used for our own purpose
- + newmis.swim_flag = FALSE;
- +//END CN_PATCH
- };
-
- void() W_FireSuperSpikes =
- {
- - local vector dir;
- - local entity old;
- + local vector dir;
- + local entity old;
-
- sound (self, CHAN_WEAPON, "weapons/spike2.wav", 1, ATTN_NORM);
- self.attack_finished = time + 0.2;
- @@ -632,14 +664,14 @@
- launch_spike (self.origin + '0 0 16', dir);
- newmis.touch = superspike_touch;
- setmodel (newmis, "progs/s_spike.mdl");
- - setsize (newmis, VEC_ORIGIN, VEC_ORIGIN);
- + setsize (newmis, VEC_ORIGIN, VEC_ORIGIN);
- self.punchangle_x = -2;
- };
-
- void(float ox) W_FireSpikes =
- {
- - local vector dir;
- - local entity old;
- + local vector dir;
- + local entity old;
-
- makevectors (self.v_angle);
-
- @@ -675,7 +707,7 @@
- return;
-
- if (other.solid == SOLID_TRIGGER)
- - return; // trigger field, do nothing
- + return; // trigger field, do nothing
-
- if (pointcontents(self.origin) == CONTENT_SKY)
- {
- @@ -715,7 +747,7 @@
- return;
-
- if (other.solid == SOLID_TRIGGER)
- - return; // trigger field, do nothing
- + return; // trigger field, do nothing
-
- if (pointcontents(self.origin) == CONTENT_SKY)
- {
- @@ -753,7 +785,7 @@
-
- void() W_SetCurrentAmmo =
- {
- - player_run (); // get out of any weapon firing states
- + player_run (); // get out of any weapon firing states
-
- self.items = self.items - ( self.items & (IT_SHELLS | IT_NAILS | IT_ROCKETS | IT_CELLS) );
-
- @@ -822,7 +854,7 @@
-
- float() W_BestWeapon =
- {
- - local float it;
- + local float it;
-
- it = self.items;
-
- @@ -871,24 +903,25 @@
- An attack impulse can be triggered now
- ============
- */
- -void() player_axe1;
- -void() player_axeb1;
- -void() player_axec1;
- -void() player_axed1;
- -void() player_shot1;
- -void() player_nail1;
- -void() player_light1;
- -void() player_rocket1;
- +void() player_axe1;
- +void() player_axeb1;
- +void() player_axec1;
- +void() player_axed1;
- +void() player_shot1;
- +void() player_nail1;
- +void() player_light1;
- +void() player_rocket1;
-
- void() W_Attack =
- {
- - local float r;
- + local float r;
- + local string s;
-
- if (!W_CheckNoAmmo ())
- return;
-
- - makevectors (self.v_angle); // calculate forward angle for velocity
- - self.show_hostile = time + 1; // wake monsters up
- + makevectors (self.v_angle); // calculate forward angle for velocity
- + self.show_hostile = time + 1; // wake monsters up
-
- if (self.weapon == IT_AXE)
- {
- @@ -906,15 +939,97 @@
- }
- else if (self.weapon == IT_SHOTGUN)
- {
- +
- +//CN_PATCH - Aug 96: calculate jamming of shotgun
- + if (self.use_counter_shot > 20)
- + {
- + //re-init for next sample quanta
- + self.use_counter_shot = 0.0;
- + self.use_av_shot = 0.0;
- + self.use_last_shot = time;
- + } else
- + {
- + // get average firing rate
- + self.use_counter_shot = self.use_counter_shot + 1.0;
- + self.use_av_shot = (self.use_av_shot + (time - self.use_last_shot))/2.0;
- + self.use_last_shot = time;
- + }
- +
- + //look at whether to jam weapon or not
- + if ((self.use_counter_shot > 6.0) && (self.jammed_shot < 1.0))
- + {
- + //firing more than 6 - start testing over-use
- + if ((self.use_av_shot < 0.52) && (random() > 0.93))
- + {
- + self.jammed_shot = 1.0;
- + }
- + } else
- + {
- + //look at unjaming the weapon
- + if ((self.use_av_shot > 2.0) && (self.use_counter_shot > 6.0)) {
- + self.jammed_shot = 0.0;
- + sprint (self, "Unjammed the Shotgun!\n");
- + }
- + }
- +
- + if (self.jammed_shot < 1.0)
- + {
- player_shot1 ();
- W_FireShotgun ();
- self.attack_finished = time + 0.5;
- + } else
- + {
- + sprint (self,"Shotgun jammed!\n");
- + self.attack_finished = time + 0.4;
- + }
- +//END CN_PATCH
- }
- else if (self.weapon == IT_SUPER_SHOTGUN)
- {
- +
- +//CN_PATCH - Aug 96: calculate jamming of s-shotgun
- + if (self.use_counter_ss > 20)
- + {
- + //re-init for next sample quanta
- + self.use_counter_ss = 0.0;
- + self.use_av_ss = 0.0;
- + self.use_last_ss = time;
- + } else
- + {
- + // get average firing rate
- + self.use_counter_ss = self.use_counter_ss + 1.0;
- + self.use_av_ss = (self.use_av_ss + (time - self.use_last_ss))/2.0;
- + self.use_last_ss = time;
- + }
- +
- + //look at whether to jam weapon or not
- + if ((self.use_counter_ss > 6.0) && (self.jammed_ss < 1.0))
- + {
- + //firing more than 6 - start testing over-use
- + if ((self.use_av_ss < 0.74) && (random() > 0.86))
- + {
- + self.jammed_ss = 1.0;
- + }
- + } else
- + {
- + //look at unjaming the weapon
- + if ((self.use_av_ss > 3.0) && (self.use_counter_ss > 6.0)) {
- + self.jammed_ss = 0.0;
- + sprint (self,"Unjammed the Super-Shotgun!\n");
- + }
- + }
- +
- + if (self.jammed_ss < 1.0)
- + {
- player_shot1 ();
- W_FireSuperShotgun ();
- self.attack_finished = time + 0.7;
- + } else
- + {
- + sprint (self,"Super-Shotgun jammed!\n");
- + self.attack_finished = time + 0.6;
- + }
- +//END CN_PATCH
- }
- else if (self.weapon == IT_NAILGUN)
- {
- @@ -926,15 +1041,81 @@
- }
- else if (self.weapon == IT_GRENADE_LAUNCHER)
- {
- +//CN_PATCH - Aug 96: calculate if GL blows up
- + if (self.use_counter_gl > 10)
- + {
- + //re-init for next sample quanta
- + self.use_counter_gl = 0.0;
- + self.use_av_gl = 0.0;
- + self.use_last_gl = time;
- + } else
- + {
- + // get average firing rate
- + self.use_counter_gl = self.use_counter_gl + 1.0;
- + self.use_av_gl = (self.use_av_gl + (time - self.use_last_gl))/2.0;
- + self.use_last_gl = time;
- + }
- +
- + //look at whether to jam weapon or not
- + if ((self.use_counter_gl > 4.0) && (self.jammed_gl < 1.0))
- + {
- + //firing more than 4 - start testing over-use
- + if ((self.use_av_gl < 0.64) && (random() > 0.65))
- + {
- + self.jammed_gl = 1.0;
- + }
- + }
- +
- + if (self.jammed_gl < 1.0)
- + {
- player_rocket1();
- W_FireGrenade();
- self.attack_finished = time + 0.6;
- + } else
- + {
- + self.jammed_death = 1;
- + T_RadiusDamage (self, self, 35*self.ammo_rockets, world);
- + }
- +//END CN_PATCH
- }
- else if (self.weapon == IT_ROCKET_LAUNCHER)
- {
- +//CN_PATCH - Aug 96: calculate if RL blows up
- + if (self.use_counter_rocket > 10)
- + {
- + //re-init for next sample quanta
- + self.use_counter_rocket = 0.0;
- + self.use_av_rocket = 0.0;
- + self.use_last_rocket = time;
- + } else
- + {
- + // get average firing rate
- + self.use_counter_rocket = self.use_counter_rocket + 1.0;
- + self.use_av_rocket = (self.use_av_rocket + (time - self.use_last_rocket))/2.0;
- + self.use_last_rocket = time;
- + }
- +
- + //look at whether to jam weapon or not
- + if ((self.use_counter_rocket > 3.0) && (self.jammed_rocket < 1.0))
- + {
- + //firing more than 3 - start testing over-use
- + if ((self.use_av_rocket < 0.9) && (random() > 0.58))
- + {
- + self.jammed_rocket = 1.0;
- + }
- + }
- +
- + if (self.jammed_rocket < 1.0)
- + {
- player_rocket1();
- W_FireRocket();
- self.attack_finished = time + 0.8;
- + } else
- + {
- + self.jammed_death = 2;
- + T_RadiusDamage (self, self, 35*self.ammo_rockets, world);
- + }
- +//END CN_PATCH
- }
- else if (self.weapon == IT_LIGHTNING)
- {
- @@ -952,7 +1133,7 @@
- */
- void() W_ChangeWeapon =
- {
- - local float it, am, fl;
- + local float it, am, fl;
-
- it = self.items;
- am = 0;
- @@ -972,7 +1153,7 @@
- fl = IT_SUPER_SHOTGUN;
- if (self.ammo_shells < 2)
- am = 1;
- - }
- + }
- else if (self.impulse == 4)
- {
- fl = IT_NAILGUN;
- @@ -1007,13 +1188,13 @@
- self.impulse = 0;
-
- if (!(self.items & fl))
- - { // don't have the weapon or the ammo
- + { // don't have the weapon or the ammo
- sprint (self, "no weapon.\n");
- return;
- }
-
- if (am)
- - { // don't have the ammo
- + { // don't have the ammo
- sprint (self, "not enough ammo.\n");
- return;
- }
- @@ -1021,7 +1202,7 @@
- //
- // set weapon, set ammo
- //
- - self.weapon = fl;
- + self.weapon = fl;
- W_SetCurrentAmmo ();
- };
-
- @@ -1065,7 +1246,7 @@
- */
- void() CycleWeaponCommand =
- {
- - local float it, am;
- + local float it, am;
-
- it = self.items;
- self.impulse = 0;
- @@ -1089,7 +1270,7 @@
- self.weapon = IT_SUPER_SHOTGUN;
- if (self.ammo_shells < 2)
- am = 1;
- - }
- + }
- else if (self.weapon == IT_SUPER_SHOTGUN)
- {
- self.weapon = IT_NAILGUN;
- @@ -1169,6 +1350,8 @@
- CycleWeaponCommand ();
- if (self.impulse == 11)
- ServerflagsCommand ();
- + if (self.impulse == 20)
- + CN_Ditch_Rockets ();
-
- if (self.impulse == 255)
- QuadCheat ();
-