forked from id/quake-qw-qc
as released 1997-08-10
This commit is contained in:
parent
ba33f2e180
commit
2a4c0638b2
10 changed files with 361 additions and 113 deletions
140
client.qc
140
client.qc
|
@ -134,11 +134,21 @@ entity() FindIntermission =
|
||||||
|
|
||||||
void() GotoNextMap =
|
void() GotoNextMap =
|
||||||
{
|
{
|
||||||
|
local string newmap;
|
||||||
|
|
||||||
//ZOID: 12-13-96, samelevel is overloaded, only 1 works for same level
|
//ZOID: 12-13-96, samelevel is overloaded, only 1 works for same level
|
||||||
|
|
||||||
if (cvar("samelevel") == 1) // if samelevel is set, stay on same level
|
if (cvar("samelevel") == 1) // if samelevel is set, stay on same level
|
||||||
changelevel (mapname);
|
changelevel (mapname);
|
||||||
|
else {
|
||||||
|
// configurable map lists, see if the current map exists as a
|
||||||
|
// serverinfo/localinfo var
|
||||||
|
newmap = infokey(world, mapname);
|
||||||
|
if (newmap != "")
|
||||||
|
changelevel (newmap);
|
||||||
else
|
else
|
||||||
changelevel (nextmap);
|
changelevel (nextmap);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -327,7 +337,7 @@ entity() SelectSpawnPoint =
|
||||||
{
|
{
|
||||||
totalspots = totalspots + 1;
|
totalspots = totalspots + 1;
|
||||||
|
|
||||||
thing=findradius(spot.origin, 256);
|
thing=findradius(spot.origin, 84);
|
||||||
pcount=0;
|
pcount=0;
|
||||||
while (thing)
|
while (thing)
|
||||||
{
|
{
|
||||||
|
@ -443,6 +453,7 @@ called each time a player enters a new level
|
||||||
void() PutClientInServer =
|
void() PutClientInServer =
|
||||||
{
|
{
|
||||||
local entity spot;
|
local entity spot;
|
||||||
|
local string s;
|
||||||
|
|
||||||
self.classname = "player";
|
self.classname = "player";
|
||||||
self.health = 100;
|
self.health = 100;
|
||||||
|
@ -508,6 +519,53 @@ void() PutClientInServer =
|
||||||
rj = stof(infokey(world, "rj"));
|
rj = stof(infokey(world, "rj"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (deathmatch == 4)
|
||||||
|
{
|
||||||
|
self.ammo_shells = 0;
|
||||||
|
if (stof(infokey(world, "axe")) == 0)
|
||||||
|
{
|
||||||
|
self.ammo_nails = 255;
|
||||||
|
self.ammo_shells = 255;
|
||||||
|
self.ammo_rockets = 255;
|
||||||
|
self.ammo_cells = 255;
|
||||||
|
self.items = self.items | IT_NAILGUN;
|
||||||
|
self.items = self.items | IT_SUPER_NAILGUN;
|
||||||
|
self.items = self.items | IT_SUPER_SHOTGUN;
|
||||||
|
self.items = self.items | IT_ROCKET_LAUNCHER;
|
||||||
|
// self.items = self.items | IT_GRENADE_LAUNCHER;
|
||||||
|
self.items = self.items | IT_LIGHTNING;
|
||||||
|
}
|
||||||
|
self.items = self.items - (self.items & (IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3)) + IT_ARMOR3;
|
||||||
|
self.armorvalue = 200;
|
||||||
|
self.armortype = 0.8;
|
||||||
|
self.health = 250;
|
||||||
|
self.items = self.items | IT_INVULNERABILITY;
|
||||||
|
self.invincible_time = 1;
|
||||||
|
self.invincible_finished = time + 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (deathmatch == 5)
|
||||||
|
{
|
||||||
|
self.ammo_nails = 80;
|
||||||
|
self.ammo_shells = 30;
|
||||||
|
self.ammo_rockets = 10;
|
||||||
|
self.ammo_cells = 30;
|
||||||
|
self.items = self.items | IT_NAILGUN;
|
||||||
|
self.items = self.items | IT_SUPER_NAILGUN;
|
||||||
|
self.items = self.items | IT_SUPER_SHOTGUN;
|
||||||
|
self.items = self.items | IT_ROCKET_LAUNCHER;
|
||||||
|
self.items = self.items | IT_GRENADE_LAUNCHER;
|
||||||
|
self.items = self.items | IT_LIGHTNING;
|
||||||
|
self.items = self.items - (self.items & (IT_ARMOR1 | IT_ARMOR2 | IT_ARMOR3)) + IT_ARMOR3;
|
||||||
|
self.armorvalue = 200;
|
||||||
|
self.armortype = 0.8;
|
||||||
|
self.health = 200;
|
||||||
|
self.items = self.items | IT_INVULNERABILITY;
|
||||||
|
self.invincible_time = 1;
|
||||||
|
self.invincible_finished = time + 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -563,6 +621,10 @@ go to the next level for deathmatch
|
||||||
void() NextLevel =
|
void() NextLevel =
|
||||||
{
|
{
|
||||||
local entity o;
|
local entity o;
|
||||||
|
local string newmap;
|
||||||
|
|
||||||
|
if (nextmap != "")
|
||||||
|
return; // already done
|
||||||
|
|
||||||
if (mapname == "start")
|
if (mapname == "start")
|
||||||
{
|
{
|
||||||
|
@ -957,9 +1019,15 @@ void() CheckPowerups =
|
||||||
self.invincible_finished = 0;
|
self.invincible_finished = 0;
|
||||||
}
|
}
|
||||||
if (self.invincible_finished > time)
|
if (self.invincible_finished > time)
|
||||||
|
{
|
||||||
self.effects = self.effects | EF_DIMLIGHT;
|
self.effects = self.effects | EF_DIMLIGHT;
|
||||||
|
self.effects = self.effects | EF_RED;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
self.effects = self.effects - (self.effects & EF_DIMLIGHT);
|
self.effects = self.effects - (self.effects & EF_DIMLIGHT);
|
||||||
|
self.effects = self.effects - (self.effects & EF_RED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// super damage
|
// super damage
|
||||||
|
@ -972,6 +1040,9 @@ void() CheckPowerups =
|
||||||
{
|
{
|
||||||
if (self.super_time == 1)
|
if (self.super_time == 1)
|
||||||
{
|
{
|
||||||
|
if (deathmatch == 4)
|
||||||
|
sprint (self, PRINT_HIGH, "OctaPower is wearing off\n");
|
||||||
|
else
|
||||||
sprint (self, PRINT_HIGH, "Quad Damage is wearing off\n");
|
sprint (self, PRINT_HIGH, "Quad Damage is wearing off\n");
|
||||||
stuffcmd (self, "bf\n");
|
stuffcmd (self, "bf\n");
|
||||||
sound (self, CHAN_AUTO, "items/damage2.wav", 1, ATTN_NORM);
|
sound (self, CHAN_AUTO, "items/damage2.wav", 1, ATTN_NORM);
|
||||||
|
@ -988,13 +1059,26 @@ void() CheckPowerups =
|
||||||
if (self.super_damage_finished < time)
|
if (self.super_damage_finished < time)
|
||||||
{ // just stopped
|
{ // just stopped
|
||||||
self.items = self.items - IT_QUAD;
|
self.items = self.items - IT_QUAD;
|
||||||
|
if (deathmatch == 4)
|
||||||
|
{
|
||||||
|
self.ammo_cells = 255;
|
||||||
|
self.armorvalue = 1;
|
||||||
|
self.armortype = 0.8;
|
||||||
|
self.health = 100;
|
||||||
|
}
|
||||||
self.super_damage_finished = 0;
|
self.super_damage_finished = 0;
|
||||||
self.super_time = 0;
|
self.super_time = 0;
|
||||||
}
|
}
|
||||||
if (self.super_damage_finished > time)
|
if (self.super_damage_finished > time)
|
||||||
|
{
|
||||||
self.effects = self.effects | EF_DIMLIGHT;
|
self.effects = self.effects | EF_DIMLIGHT;
|
||||||
|
self.effects = self.effects | EF_BLUE;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
self.effects = self.effects - (self.effects & EF_DIMLIGHT);
|
self.effects = self.effects - (self.effects & EF_DIMLIGHT);
|
||||||
|
self.effects = self.effects - (self.effects & EF_BLUE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// suit
|
// suit
|
||||||
|
@ -1127,6 +1211,19 @@ void(entity targ, entity attacker) ClientObituary =
|
||||||
|
|
||||||
if (targ.classname == "player")
|
if (targ.classname == "player")
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (deathmatch > 3)
|
||||||
|
{
|
||||||
|
if (targ.deathtype == "selfwater")
|
||||||
|
{
|
||||||
|
targ.deathtype = "";
|
||||||
|
bprint (PRINT_MEDIUM, targ.netname);
|
||||||
|
bprint (PRINT_MEDIUM," electrocutes himself.\n ");
|
||||||
|
targ.frags = targ.frags - 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (attacker.classname == "teledeath")
|
if (attacker.classname == "teledeath")
|
||||||
{
|
{
|
||||||
bprint (PRINT_MEDIUM,targ.netname);
|
bprint (PRINT_MEDIUM,targ.netname);
|
||||||
|
@ -1162,6 +1259,7 @@ void(entity targ, entity attacker) ClientObituary =
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attacker.classname == "player")
|
if (attacker.classname == "player")
|
||||||
{
|
{
|
||||||
//ZOID 12-13-96: self.team doesn't work in QW. Use keys
|
//ZOID 12-13-96: self.team doesn't work in QW. Use keys
|
||||||
|
@ -1265,6 +1363,9 @@ void(entity targ, entity attacker) ClientObituary =
|
||||||
bprint (PRINT_MEDIUM, " a new one\n");
|
bprint (PRINT_MEDIUM, " a new one\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (deathmatch == 4)
|
||||||
|
deathstring2 = "'s OctaRocket!\n";
|
||||||
|
else
|
||||||
deathstring2 = "'s quad rocket\n";
|
deathstring2 = "'s quad rocket\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1332,43 +1433,6 @@ void(entity targ, entity attacker) ClientObituary =
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attacker.flags & FL_MONSTER)
|
|
||||||
{
|
|
||||||
if (attacker.classname == "monster_army")
|
|
||||||
bprint (PRINT_MEDIUM," was shot by a Grunt\n");
|
|
||||||
if (attacker.classname == "monster_demon1")
|
|
||||||
bprint (PRINT_MEDIUM," was eviscerated by a Fiend\n");
|
|
||||||
if (attacker.classname == "monster_dog")
|
|
||||||
bprint (PRINT_MEDIUM," was mauled by a Rottweiler\n");
|
|
||||||
if (attacker.classname == "monster_dragon")
|
|
||||||
bprint (PRINT_MEDIUM," was fried by a Dragon\n");
|
|
||||||
if (attacker.classname == "monster_enforcer")
|
|
||||||
bprint (PRINT_MEDIUM," was blasted by an Enforcer\n");
|
|
||||||
if (attacker.classname == "monster_fish")
|
|
||||||
bprint (PRINT_MEDIUM," was fed to the Rotfish\n");
|
|
||||||
if (attacker.classname == "monster_hell_knight")
|
|
||||||
bprint (PRINT_MEDIUM," was slain by a Death Knight\n");
|
|
||||||
if (attacker.classname == "monster_knight")
|
|
||||||
bprint (PRINT_MEDIUM," was slashed by a Knight\n");
|
|
||||||
if (attacker.classname == "monster_ogre")
|
|
||||||
bprint (PRINT_MEDIUM," was destroyed by an Ogre\n");
|
|
||||||
if (attacker.classname == "monster_oldone")
|
|
||||||
bprint (PRINT_MEDIUM," became one with Shub-Niggurath\n");
|
|
||||||
if (attacker.classname == "monster_shalrath")
|
|
||||||
bprint (PRINT_MEDIUM," was exploded by a Vore\n");
|
|
||||||
if (attacker.classname == "monster_shambler")
|
|
||||||
bprint (PRINT_MEDIUM," was smashed by a Shambler\n");
|
|
||||||
if (attacker.classname == "monster_tarbaby")
|
|
||||||
bprint (PRINT_MEDIUM," was slimed by a Spawn\n");
|
|
||||||
if (attacker.classname == "monster_vomit")
|
|
||||||
bprint (PRINT_MEDIUM," was vomited on by a Vomitus\n");
|
|
||||||
if (attacker.classname == "monster_wizard")
|
|
||||||
bprint (PRINT_MEDIUM," was scragged by a Scrag\n");
|
|
||||||
if (attacker.classname == "monster_zombie")
|
|
||||||
bprint (PRINT_MEDIUM," joins the Zombies\n");
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (attacker.classname == "explo_box")
|
if (attacker.classname == "explo_box")
|
||||||
{
|
{
|
||||||
bprint (PRINT_MEDIUM," blew up\n");
|
bprint (PRINT_MEDIUM," blew up\n");
|
||||||
|
|
15
combat.qc
15
combat.qc
|
@ -2,6 +2,7 @@
|
||||||
void() T_MissileTouch;
|
void() T_MissileTouch;
|
||||||
void() info_player_start;
|
void() info_player_start;
|
||||||
void(entity targ, entity attacker) ClientObituary;
|
void(entity targ, entity attacker) ClientObituary;
|
||||||
|
void(entity inflictor, entity attacker, float damage, entity ignore) T_RadiusDamage;
|
||||||
|
|
||||||
/*SERVER
|
/*SERVER
|
||||||
void() monster_death_use;
|
void() monster_death_use;
|
||||||
|
@ -120,8 +121,12 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage=
|
||||||
// used by buttons and triggers to set activator for target firing
|
// used by buttons and triggers to set activator for target firing
|
||||||
damage_attacker = attacker;
|
damage_attacker = attacker;
|
||||||
|
|
||||||
|
|
||||||
// check for quad damage powerup on the attacker
|
// check for quad damage powerup on the attacker
|
||||||
if (attacker.super_damage_finished > time)
|
if (attacker.super_damage_finished > time)
|
||||||
|
if (deathmatch == 4)
|
||||||
|
damage = damage * 8;
|
||||||
|
else
|
||||||
damage = damage * 4;
|
damage = damage * 4;
|
||||||
|
|
||||||
// save damage based on the target's armor level
|
// save damage based on the target's armor level
|
||||||
|
@ -170,6 +175,8 @@ void(entity targ, entity inflictor, entity attacker, float damage) T_Damage=
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// check for godmode or invincibility
|
// check for godmode or invincibility
|
||||||
if (targ.flags & FL_GODMODE)
|
if (targ.flags & FL_GODMODE)
|
||||||
return;
|
return;
|
||||||
|
@ -249,6 +256,11 @@ void(entity inflictor, entity attacker, float damage, entity ignore) T_RadiusDam
|
||||||
|
|
||||||
while (head)
|
while (head)
|
||||||
{
|
{
|
||||||
|
//bprint (PRINT_HIGH, head.classname);
|
||||||
|
//bprint (PRINT_HIGH, " | ");
|
||||||
|
//bprint (PRINT_HIGH, head.netname);
|
||||||
|
//bprint (PRINT_HIGH, "\n");
|
||||||
|
|
||||||
if (head != ignore)
|
if (head != ignore)
|
||||||
{
|
{
|
||||||
if (head.takedamage)
|
if (head.takedamage)
|
||||||
|
@ -258,6 +270,7 @@ void(entity inflictor, entity attacker, float damage, entity ignore) T_RadiusDam
|
||||||
if (points < 0)
|
if (points < 0)
|
||||||
points = 0;
|
points = 0;
|
||||||
points = damage - points;
|
points = damage - points;
|
||||||
|
|
||||||
if (head == attacker)
|
if (head == attacker)
|
||||||
points = points * 0.5;
|
points = points * 0.5;
|
||||||
if (points > 0)
|
if (points > 0)
|
||||||
|
@ -268,8 +281,10 @@ void(entity inflictor, entity attacker, float damage, entity ignore) T_RadiusDam
|
||||||
T_Damage (head, inflictor, attacker, points*0.5);
|
T_Damage (head, inflictor, attacker, points*0.5);
|
||||||
else
|
else
|
||||||
T_Damage (head, inflictor, attacker, points);
|
T_Damage (head, inflictor, attacker, points);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
head = head.chain;
|
head = head.chain;
|
||||||
|
|
14
defs.qc
14
defs.qc
|
@ -390,8 +390,9 @@ float EF_BRIGHTLIGHT = 4;
|
||||||
float EF_DIMLIGHT = 8;
|
float EF_DIMLIGHT = 8;
|
||||||
float EF_FLAG1 = 16;
|
float EF_FLAG1 = 16;
|
||||||
float EF_FLAG2 = 32;
|
float EF_FLAG2 = 32;
|
||||||
|
// GLQuakeWorld Stuff
|
||||||
|
float EF_BLUE = 64; // Blue Globe effect for Quad
|
||||||
|
float EF_RED = 128; // Red Globe effect for Pentagram
|
||||||
// messages
|
// messages
|
||||||
float MSG_BROADCAST = 0; // unreliable to all
|
float MSG_BROADCAST = 0; // unreliable to all
|
||||||
float MSG_ONE = 1; // reliable to one (msg_entity)
|
float MSG_ONE = 1; // reliable to one (msg_entity)
|
||||||
|
@ -413,6 +414,9 @@ float MULTICAST_ALL_R = 3; // every client, reliable
|
||||||
float MULTICAST_PHS_R = 4; // within hearing, reliable
|
float MULTICAST_PHS_R = 4; // within hearing, reliable
|
||||||
float MULTICAST_PVS_R = 5; // within sight, reliable
|
float MULTICAST_PVS_R = 5; // within sight, reliable
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//================================================
|
//================================================
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -489,6 +493,12 @@ float AS_MISSILE = 4;
|
||||||
.float voided;
|
.float voided;
|
||||||
.float walkframe;
|
.float walkframe;
|
||||||
|
|
||||||
|
// Zoid Additions
|
||||||
|
.float maxspeed; // Used to set Maxspeed on a player
|
||||||
|
.float gravity; // Gravity Multiplier (0 to 1.0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.float attack_finished;
|
.float attack_finished;
|
||||||
.float pain_finished;
|
.float pain_finished;
|
||||||
|
|
||||||
|
|
119
items.qc
119
items.qc
|
@ -44,6 +44,12 @@ local string s;
|
||||||
self.solid = SOLID_NOT;
|
self.solid = SOLID_NOT;
|
||||||
other.items = other.items | IT_QUAD;
|
other.items = other.items | IT_QUAD;
|
||||||
self.model = string_null;
|
self.model = string_null;
|
||||||
|
if (deathmatch == 4)
|
||||||
|
{
|
||||||
|
other.armortype = 0;
|
||||||
|
other.armorvalue = 0 * 0.01;
|
||||||
|
other.ammo_cells = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// do the apropriate action
|
// do the apropriate action
|
||||||
other.super_time = 1;
|
other.super_time = 1;
|
||||||
|
@ -52,12 +58,13 @@ local string s;
|
||||||
s=ftos(rint(other.super_damage_finished - time));
|
s=ftos(rint(other.super_damage_finished - time));
|
||||||
|
|
||||||
bprint (PRINT_LOW, other.netname);
|
bprint (PRINT_LOW, other.netname);
|
||||||
|
if (deathmatch == 4)
|
||||||
|
bprint (PRINT_LOW, " recovered an OctaPower with ");
|
||||||
|
else
|
||||||
bprint (PRINT_LOW, " recovered a Quad with ");
|
bprint (PRINT_LOW, " recovered a Quad with ");
|
||||||
bprint (PRINT_LOW, s);
|
bprint (PRINT_LOW, s);
|
||||||
bprint (PRINT_LOW, " seconds remaining!\n");
|
bprint (PRINT_LOW, " seconds remaining!\n");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
activator = other;
|
activator = other;
|
||||||
SUB_UseTargets(); // fire all targets / killtargets
|
SUB_UseTargets(); // fire all targets / killtargets
|
||||||
};
|
};
|
||||||
|
@ -146,9 +153,6 @@ void(float timeleft) DropRing =
|
||||||
item.think = SUB_Remove;
|
item.think = SUB_Remove;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
============
|
============
|
||||||
PlaceItem
|
PlaceItem
|
||||||
|
@ -275,6 +279,10 @@ void() health_touch =
|
||||||
local float amount;
|
local float amount;
|
||||||
local string s;
|
local string s;
|
||||||
|
|
||||||
|
if (deathmatch == 4)
|
||||||
|
if (other.invincible_time > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if (other.classname != "player")
|
if (other.classname != "player")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -308,8 +316,11 @@ void() health_touch =
|
||||||
if (self.healtype == 2)
|
if (self.healtype == 2)
|
||||||
{
|
{
|
||||||
other.items = other.items | IT_SUPERHEALTH;
|
other.items = other.items | IT_SUPERHEALTH;
|
||||||
|
if (deathmatch != 4)
|
||||||
|
{
|
||||||
self.nextthink = time + 5;
|
self.nextthink = time + 5;
|
||||||
self.think = item_megahealth_rot;
|
self.think = item_megahealth_rot;
|
||||||
|
}
|
||||||
self.owner = other;
|
self.owner = other;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -366,6 +377,10 @@ void() armor_touch =
|
||||||
if (other.classname != "player")
|
if (other.classname != "player")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (deathmatch == 4)
|
||||||
|
if (other.invincible_time > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if (self.classname == "item_armor1")
|
if (self.classname == "item_armor1")
|
||||||
{
|
{
|
||||||
type = 0.3;
|
type = 0.3;
|
||||||
|
@ -551,7 +566,7 @@ void() weapon_touch =
|
||||||
best = W_BestWeapon();
|
best = W_BestWeapon();
|
||||||
self = stemp;
|
self = stemp;
|
||||||
|
|
||||||
if (deathmatch == 2 || deathmatch == 3)
|
if (deathmatch == 2 || deathmatch == 3 || deathmatch == 5)
|
||||||
leave = 1;
|
leave = 1;
|
||||||
else
|
else
|
||||||
leave = 0;
|
leave = 0;
|
||||||
|
@ -645,7 +660,7 @@ void() weapon_touch =
|
||||||
if (leave)
|
if (leave)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (deathmatch!=3)
|
if (deathmatch!=3 || deathmatch !=5)
|
||||||
{
|
{
|
||||||
// remove it in single player, or setup for respawning in deathmatch
|
// remove it in single player, or setup for respawning in deathmatch
|
||||||
self.model = string_null;
|
self.model = string_null;
|
||||||
|
@ -663,6 +678,8 @@ void() weapon_touch =
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void() weapon_supershotgun =
|
void() weapon_supershotgun =
|
||||||
|
{
|
||||||
|
if (deathmatch <= 3)
|
||||||
{
|
{
|
||||||
precache_model ("progs/g_shot.mdl");
|
precache_model ("progs/g_shot.mdl");
|
||||||
setmodel (self, "progs/g_shot.mdl");
|
setmodel (self, "progs/g_shot.mdl");
|
||||||
|
@ -671,12 +688,15 @@ void() weapon_supershotgun =
|
||||||
self.touch = weapon_touch;
|
self.touch = weapon_touch;
|
||||||
setsize (self, '-16 -16 0', '16 16 56');
|
setsize (self, '-16 -16 0', '16 16 56');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*QUAKED weapon_nailgun (0 .5 .8) (-16 -16 0) (16 16 32)
|
/*QUAKED weapon_nailgun (0 .5 .8) (-16 -16 0) (16 16 32)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void() weapon_nailgun =
|
void() weapon_nailgun =
|
||||||
|
{
|
||||||
|
if (deathmatch <= 3)
|
||||||
{
|
{
|
||||||
precache_model ("progs/g_nail.mdl");
|
precache_model ("progs/g_nail.mdl");
|
||||||
setmodel (self, "progs/g_nail.mdl");
|
setmodel (self, "progs/g_nail.mdl");
|
||||||
|
@ -685,12 +705,15 @@ void() weapon_nailgun =
|
||||||
self.touch = weapon_touch;
|
self.touch = weapon_touch;
|
||||||
setsize (self, '-16 -16 0', '16 16 56');
|
setsize (self, '-16 -16 0', '16 16 56');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*QUAKED weapon_supernailgun (0 .5 .8) (-16 -16 0) (16 16 32)
|
/*QUAKED weapon_supernailgun (0 .5 .8) (-16 -16 0) (16 16 32)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void() weapon_supernailgun =
|
void() weapon_supernailgun =
|
||||||
|
{
|
||||||
|
if (deathmatch <= 3)
|
||||||
{
|
{
|
||||||
precache_model ("progs/g_nail2.mdl");
|
precache_model ("progs/g_nail2.mdl");
|
||||||
setmodel (self, "progs/g_nail2.mdl");
|
setmodel (self, "progs/g_nail2.mdl");
|
||||||
|
@ -699,12 +722,15 @@ void() weapon_supernailgun =
|
||||||
self.touch = weapon_touch;
|
self.touch = weapon_touch;
|
||||||
setsize (self, '-16 -16 0', '16 16 56');
|
setsize (self, '-16 -16 0', '16 16 56');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*QUAKED weapon_grenadelauncher (0 .5 .8) (-16 -16 0) (16 16 32)
|
/*QUAKED weapon_grenadelauncher (0 .5 .8) (-16 -16 0) (16 16 32)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void() weapon_grenadelauncher =
|
void() weapon_grenadelauncher =
|
||||||
|
{
|
||||||
|
if (deathmatch <= 3)
|
||||||
{
|
{
|
||||||
precache_model ("progs/g_rock.mdl");
|
precache_model ("progs/g_rock.mdl");
|
||||||
setmodel (self, "progs/g_rock.mdl");
|
setmodel (self, "progs/g_rock.mdl");
|
||||||
|
@ -713,12 +739,15 @@ void() weapon_grenadelauncher =
|
||||||
self.touch = weapon_touch;
|
self.touch = weapon_touch;
|
||||||
setsize (self, '-16 -16 0', '16 16 56');
|
setsize (self, '-16 -16 0', '16 16 56');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*QUAKED weapon_rocketlauncher (0 .5 .8) (-16 -16 0) (16 16 32)
|
/*QUAKED weapon_rocketlauncher (0 .5 .8) (-16 -16 0) (16 16 32)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void() weapon_rocketlauncher =
|
void() weapon_rocketlauncher =
|
||||||
|
{
|
||||||
|
if (deathmatch <= 3)
|
||||||
{
|
{
|
||||||
precache_model ("progs/g_rock2.mdl");
|
precache_model ("progs/g_rock2.mdl");
|
||||||
setmodel (self, "progs/g_rock2.mdl");
|
setmodel (self, "progs/g_rock2.mdl");
|
||||||
|
@ -727,6 +756,7 @@ void() weapon_rocketlauncher =
|
||||||
self.touch = weapon_touch;
|
self.touch = weapon_touch;
|
||||||
setsize (self, '-16 -16 0', '16 16 56');
|
setsize (self, '-16 -16 0', '16 16 56');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -734,6 +764,8 @@ void() weapon_rocketlauncher =
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void() weapon_lightning =
|
void() weapon_lightning =
|
||||||
|
{
|
||||||
|
if (deathmatch <= 3)
|
||||||
{
|
{
|
||||||
precache_model ("progs/g_light.mdl");
|
precache_model ("progs/g_light.mdl");
|
||||||
setmodel (self, "progs/g_light.mdl");
|
setmodel (self, "progs/g_light.mdl");
|
||||||
|
@ -742,6 +774,7 @@ void() weapon_lightning =
|
||||||
self.touch = weapon_touch;
|
self.touch = weapon_touch;
|
||||||
setsize (self, '-16 -16 0', '16 16 56');
|
setsize (self, '-16 -16 0', '16 16 56');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -836,7 +869,7 @@ local float best;
|
||||||
|
|
||||||
// Xian -- If playing in DM 3.0 mode, halve the time ammo respawns
|
// Xian -- If playing in DM 3.0 mode, halve the time ammo respawns
|
||||||
|
|
||||||
if (deathmatch == 3)
|
if (deathmatch == 3 || deathmatch == 5)
|
||||||
self.nextthink = time + 15;
|
self.nextthink = time + 15;
|
||||||
|
|
||||||
self.think = SUB_regen;
|
self.think = SUB_regen;
|
||||||
|
@ -855,6 +888,9 @@ float WEAPON_BIG2 = 1;
|
||||||
|
|
||||||
void() item_shells =
|
void() item_shells =
|
||||||
{
|
{
|
||||||
|
if (deathmatch == 4)
|
||||||
|
return;
|
||||||
|
|
||||||
self.touch = ammo_touch;
|
self.touch = ammo_touch;
|
||||||
|
|
||||||
if (self.spawnflags & WEAPON_BIG2)
|
if (self.spawnflags & WEAPON_BIG2)
|
||||||
|
@ -880,6 +916,9 @@ void() item_shells =
|
||||||
|
|
||||||
void() item_spikes =
|
void() item_spikes =
|
||||||
{
|
{
|
||||||
|
if (deathmatch == 4)
|
||||||
|
return;
|
||||||
|
|
||||||
self.touch = ammo_touch;
|
self.touch = ammo_touch;
|
||||||
|
|
||||||
if (self.spawnflags & WEAPON_BIG2)
|
if (self.spawnflags & WEAPON_BIG2)
|
||||||
|
@ -898,6 +937,7 @@ void() item_spikes =
|
||||||
self.netname = "nails";
|
self.netname = "nails";
|
||||||
setsize (self, '0 0 0', '32 32 56');
|
setsize (self, '0 0 0', '32 32 56');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*QUAKED item_rockets (0 .5 .8) (0 0 0) (32 32 32) big
|
/*QUAKED item_rockets (0 .5 .8) (0 0 0) (32 32 32) big
|
||||||
|
@ -905,6 +945,9 @@ void() item_spikes =
|
||||||
|
|
||||||
void() item_rockets =
|
void() item_rockets =
|
||||||
{
|
{
|
||||||
|
if (deathmatch == 4)
|
||||||
|
return;
|
||||||
|
|
||||||
self.touch = ammo_touch;
|
self.touch = ammo_touch;
|
||||||
|
|
||||||
if (self.spawnflags & WEAPON_BIG2)
|
if (self.spawnflags & WEAPON_BIG2)
|
||||||
|
@ -923,6 +966,7 @@ void() item_rockets =
|
||||||
self.netname = "rockets";
|
self.netname = "rockets";
|
||||||
setsize (self, '0 0 0', '32 32 56');
|
setsize (self, '0 0 0', '32 32 56');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -931,6 +975,9 @@ void() item_rockets =
|
||||||
|
|
||||||
void() item_cells =
|
void() item_cells =
|
||||||
{
|
{
|
||||||
|
if (deathmatch == 4)
|
||||||
|
return;
|
||||||
|
|
||||||
self.touch = ammo_touch;
|
self.touch = ammo_touch;
|
||||||
|
|
||||||
if (self.spawnflags & WEAPON_BIG2)
|
if (self.spawnflags & WEAPON_BIG2)
|
||||||
|
@ -949,6 +996,7 @@ void() item_cells =
|
||||||
self.netname = "cells";
|
self.netname = "cells";
|
||||||
setsize (self, '0 0 0', '32 32 56');
|
setsize (self, '0 0 0', '32 32 56');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1288,6 +1336,12 @@ local float best;
|
||||||
|
|
||||||
if (self.classname == "item_artifact_super_damage")
|
if (self.classname == "item_artifact_super_damage")
|
||||||
{
|
{
|
||||||
|
if (deathmatch == 4)
|
||||||
|
{
|
||||||
|
other.armortype = 0;
|
||||||
|
other.armorvalue = 0 * 0.01;
|
||||||
|
other.ammo_cells = 0;
|
||||||
|
}
|
||||||
other.super_time = 1;
|
other.super_time = 1;
|
||||||
other.super_damage_finished = time + 30;
|
other.super_damage_finished = time + 30;
|
||||||
}
|
}
|
||||||
|
@ -1312,6 +1366,7 @@ void() item_artifact_invulnerability =
|
||||||
self.noise = "items/protect.wav";
|
self.noise = "items/protect.wav";
|
||||||
setmodel (self, "progs/invulner.mdl");
|
setmodel (self, "progs/invulner.mdl");
|
||||||
self.netname = "Pentagram of Protection";
|
self.netname = "Pentagram of Protection";
|
||||||
|
self.effects = self.effects | EF_RED;
|
||||||
self.items = IT_INVULNERABILITY;
|
self.items = IT_INVULNERABILITY;
|
||||||
setsize (self, '-16 -16 -24', '16 16 32');
|
setsize (self, '-16 -16 -24', '16 16 32');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
|
@ -1369,8 +1424,12 @@ void() item_artifact_super_damage =
|
||||||
precache_sound ("items/damage3.wav");
|
precache_sound ("items/damage3.wav");
|
||||||
self.noise = "items/damage.wav";
|
self.noise = "items/damage.wav";
|
||||||
setmodel (self, "progs/quaddama.mdl");
|
setmodel (self, "progs/quaddama.mdl");
|
||||||
|
if (deathmatch == 4)
|
||||||
|
self.netname == "OctaPower";
|
||||||
|
else
|
||||||
self.netname = "Quad Damage";
|
self.netname = "Quad Damage";
|
||||||
self.items = IT_QUAD;
|
self.items = IT_QUAD;
|
||||||
|
self.effects = self.effects | EF_BLUE;
|
||||||
setsize (self, '-16 -16 -24', '16 16 32');
|
setsize (self, '-16 -16 -24', '16 16 32');
|
||||||
StartItem ();
|
StartItem ();
|
||||||
};
|
};
|
||||||
|
@ -1391,9 +1450,12 @@ void() BackpackTouch =
|
||||||
local float best, old, new;
|
local float best, old, new;
|
||||||
local entity stemp;
|
local entity stemp;
|
||||||
local float acount;
|
local float acount;
|
||||||
|
|
||||||
local float b_switch;
|
local float b_switch;
|
||||||
|
|
||||||
|
if (deathmatch == 4)
|
||||||
|
if (other.invincible_time > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if ((stof(infokey(other,"b_switch"))) == 0)
|
if ((stof(infokey(other,"b_switch"))) == 0)
|
||||||
b_switch = 8;
|
b_switch = 8;
|
||||||
else
|
else
|
||||||
|
@ -1408,6 +1470,41 @@ void() BackpackTouch =
|
||||||
acount = 0;
|
acount = 0;
|
||||||
sprint (other, PRINT_LOW, "You get ");
|
sprint (other, PRINT_LOW, "You get ");
|
||||||
|
|
||||||
|
if (deathmatch == 4)
|
||||||
|
{
|
||||||
|
other.health = other.health + 10;
|
||||||
|
sprint (other, PRINT_LOW, "10 additional health\n");
|
||||||
|
if ((other.health > 250) && (other.health < 300))
|
||||||
|
sound (other, CHAN_ITEM, "items/protect3.wav", 1, ATTN_NORM);
|
||||||
|
else
|
||||||
|
sound (other, CHAN_ITEM, "weapons/lock4.wav", 1, ATTN_NORM);
|
||||||
|
stuffcmd (other, "bf\n");
|
||||||
|
remove(self);
|
||||||
|
|
||||||
|
if (other.health >299)
|
||||||
|
{
|
||||||
|
if (other.invincible_time != 1)
|
||||||
|
{
|
||||||
|
other.invincible_time = 1;
|
||||||
|
other.invincible_finished = time + 30;
|
||||||
|
other.items = other.items | IT_INVULNERABILITY;
|
||||||
|
|
||||||
|
other.super_time = 1;
|
||||||
|
other.super_damage_finished = time + 30;
|
||||||
|
other.items = other.items | IT_QUAD;
|
||||||
|
|
||||||
|
other.ammo_cells = 0;
|
||||||
|
|
||||||
|
|
||||||
|
sound (other, CHAN_VOICE, "boss1/sight1.wav", 1, ATTN_NORM);
|
||||||
|
stuffcmd (other, "bf\n");
|
||||||
|
bprint (PRINT_HIGH, other.netname);
|
||||||
|
bprint (PRINT_HIGH, " attains bonus powers!!!\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self = other;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (self.items)
|
if (self.items)
|
||||||
if ((other.items & self.items) == 0)
|
if ((other.items & self.items) == 0)
|
||||||
{
|
{
|
||||||
|
@ -1473,7 +1570,7 @@ void() BackpackTouch =
|
||||||
sprint (other,PRINT_LOW, " cells");
|
sprint (other,PRINT_LOW, " cells");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( (deathmatch==3) & ( (WeaponCode(new)==6) || (WeaponCode(new)==7) ) & (other.ammo_rockets < 5) )
|
if ( (deathmatch==3 || deathmatch == 5) & ( (WeaponCode(new)==6) || (WeaponCode(new)==7) ) & (other.ammo_rockets < 5) )
|
||||||
other.ammo_rockets = 5;
|
other.ammo_rockets = 5;
|
||||||
|
|
||||||
sprint (other, PRINT_LOW, "\n");
|
sprint (other, PRINT_LOW, "\n");
|
||||||
|
@ -1502,8 +1599,6 @@ void() BackpackTouch =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
W_SetCurrentAmmo ();
|
W_SetCurrentAmmo ();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -555,6 +555,9 @@ void() PlayerDie =
|
||||||
{
|
{
|
||||||
DropQuad (self.super_damage_finished - time);
|
DropQuad (self.super_damage_finished - time);
|
||||||
bprint (PRINT_LOW, self.netname);
|
bprint (PRINT_LOW, self.netname);
|
||||||
|
if (deathmatch == 4)
|
||||||
|
bprint (PRINT_LOW, " lost an OctaPower with ");
|
||||||
|
else
|
||||||
bprint (PRINT_LOW, " lost a quad with ");
|
bprint (PRINT_LOW, " lost a quad with ");
|
||||||
s = ftos(rint(self.super_damage_finished - time));
|
s = ftos(rint(self.super_damage_finished - time));
|
||||||
bprint (PRINT_LOW, s);
|
bprint (PRINT_LOW, s);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
./qwprogs.dat
|
../qwprogs.dat
|
||||||
|
|
||||||
defs.qc
|
defs.qc
|
||||||
subs.qc
|
subs.qc
|
||||||
|
|
67
weapons.qc
67
weapons.qc
|
@ -51,6 +51,9 @@ void() W_FireAxe =
|
||||||
{
|
{
|
||||||
trace_ent.axhitme = 1;
|
trace_ent.axhitme = 1;
|
||||||
SpawnBlood (org, 20);
|
SpawnBlood (org, 20);
|
||||||
|
if (deathmatch > 3)
|
||||||
|
T_Damage (trace_ent, self, self, 75);
|
||||||
|
else
|
||||||
T_Damage (trace_ent, self, self, 20);
|
T_Damage (trace_ent, self, self, 20);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -144,7 +147,6 @@ void(float damage) spawn_touchblood =
|
||||||
SpawnBlood (self.origin + vel*0.01, damage);
|
SpawnBlood (self.origin + vel*0.01, damage);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
|
@ -221,9 +223,7 @@ void() Multi_Finish =
|
||||||
|
|
||||||
/*
|
/*
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
BULLETS
|
BULLETS
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -279,7 +279,6 @@ void(float shotcount, vector dir, vector spread) FireBullets =
|
||||||
|
|
||||||
while (shotcount > 0)
|
while (shotcount > 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
direction = dir + crandom()*spread_x*v_right + crandom()*spread_y*v_up;
|
direction = dir + crandom()*spread_x*v_right + crandom()*spread_y*v_up;
|
||||||
traceline (src, src + direction*2048, FALSE, self);
|
traceline (src, src + direction*2048, FALSE, self);
|
||||||
if (trace_fraction != 1.0)
|
if (trace_fraction != 1.0)
|
||||||
|
@ -305,7 +304,9 @@ void() W_FireShotgun =
|
||||||
msg_entity = self;
|
msg_entity = self;
|
||||||
WriteByte (MSG_ONE, SVC_SMALLKICK);
|
WriteByte (MSG_ONE, SVC_SMALLKICK);
|
||||||
|
|
||||||
|
if (deathmatch != 4 )
|
||||||
self.currentammo = self.ammo_shells = self.ammo_shells - 1;
|
self.currentammo = self.ammo_shells = self.ammo_shells - 1;
|
||||||
|
|
||||||
dir = aim (self, 100000);
|
dir = aim (self, 100000);
|
||||||
FireBullets (6, dir, '0.04 0.04 0');
|
FireBullets (6, dir, '0.04 0.04 0');
|
||||||
};
|
};
|
||||||
|
@ -331,6 +332,7 @@ void() W_FireSuperShotgun =
|
||||||
msg_entity = self;
|
msg_entity = self;
|
||||||
WriteByte (MSG_ONE, SVC_BIGKICK);
|
WriteByte (MSG_ONE, SVC_BIGKICK);
|
||||||
|
|
||||||
|
if (deathmatch != 4)
|
||||||
self.currentammo = self.ammo_shells = self.ammo_shells - 2;
|
self.currentammo = self.ammo_shells = self.ammo_shells - 2;
|
||||||
dir = aim (self, 100000);
|
dir = aim (self, 100000);
|
||||||
FireBullets (14, dir, '0.14 0.08 0');
|
FireBullets (14, dir, '0.14 0.08 0');
|
||||||
|
@ -349,6 +351,23 @@ void() T_MissileTouch =
|
||||||
{
|
{
|
||||||
local float damg;
|
local float damg;
|
||||||
|
|
||||||
|
// if (deathmatch == 4)
|
||||||
|
// {
|
||||||
|
// if ( ((other.weapon == 32) || (other.weapon == 16)))
|
||||||
|
// {
|
||||||
|
// if (random() < 0.1)
|
||||||
|
// {
|
||||||
|
// if (other != world)
|
||||||
|
// {
|
||||||
|
// // bprint (PRINT_HIGH, "Got here\n");
|
||||||
|
// other.deathtype = "blaze";
|
||||||
|
// T_Damage (other, self, self.owner, 1000 );
|
||||||
|
// T_RadiusDamage (self, self.owner, 1000, other);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
if (other == self.owner)
|
if (other == self.owner)
|
||||||
return; // don't explode on owner
|
return; // don't explode on owner
|
||||||
|
|
||||||
|
@ -374,8 +393,11 @@ void() T_MissileTouch =
|
||||||
|
|
||||||
// don't do radius damage to the other, because all the damage
|
// don't do radius damage to the other, because all the damage
|
||||||
// was done in the impact
|
// was done in the impact
|
||||||
|
|
||||||
|
|
||||||
T_RadiusDamage (self, self.owner, 120, other);
|
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);
|
self.origin = self.origin - 8 * normalize(self.velocity);
|
||||||
|
|
||||||
|
@ -398,6 +420,7 @@ W_FireRocket
|
||||||
*/
|
*/
|
||||||
void() W_FireRocket =
|
void() W_FireRocket =
|
||||||
{
|
{
|
||||||
|
if (deathmatch != 4)
|
||||||
self.currentammo = self.ammo_rockets = self.ammo_rockets - 1;
|
self.currentammo = self.ammo_rockets = self.ammo_rockets - 1;
|
||||||
|
|
||||||
sound (self, CHAN_WEAPON, "weapons/sgun1.wav", 1, ATTN_NORM);
|
sound (self, CHAN_WEAPON, "weapons/sgun1.wav", 1, ATTN_NORM);
|
||||||
|
@ -423,6 +446,7 @@ void() W_FireRocket =
|
||||||
// set newmis duration
|
// set newmis duration
|
||||||
newmis.nextthink = time + 5;
|
newmis.nextthink = time + 5;
|
||||||
newmis.think = SUB_Remove;
|
newmis.think = SUB_Remove;
|
||||||
|
newmis.classname = "grenade";
|
||||||
|
|
||||||
setmodel (newmis, "progs/missile.mdl");
|
setmodel (newmis, "progs/missile.mdl");
|
||||||
setsize (newmis, '0 0 0', '0 0 0');
|
setsize (newmis, '0 0 0', '0 0 0');
|
||||||
|
@ -431,9 +455,7 @@ void() W_FireRocket =
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
|
||||||
LIGHTNING
|
LIGHTNING
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -469,6 +491,7 @@ void(vector p1, vector p2, entity from, float damage) LightningDamage =
|
||||||
e1 = e2 = world;
|
e1 = e2 = world;
|
||||||
|
|
||||||
traceline (p1, p2, FALSE, self);
|
traceline (p1, p2, FALSE, self);
|
||||||
|
|
||||||
if (trace_ent.takedamage)
|
if (trace_ent.takedamage)
|
||||||
{
|
{
|
||||||
LightningHit (from, damage);
|
LightningHit (from, damage);
|
||||||
|
@ -509,6 +532,15 @@ void() W_FireLightning =
|
||||||
|
|
||||||
// explode if under water
|
// explode if under water
|
||||||
if (self.waterlevel > 1)
|
if (self.waterlevel > 1)
|
||||||
|
{
|
||||||
|
if (deathmatch > 3)
|
||||||
|
{
|
||||||
|
if (random() <= 0.5)
|
||||||
|
{
|
||||||
|
self.deathtype = "selfwater";
|
||||||
|
T_Damage (self, self, self.owner, 4000 );
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
cells = self.ammo_cells;
|
cells = self.ammo_cells;
|
||||||
self.ammo_cells = 0;
|
self.ammo_cells = 0;
|
||||||
|
@ -516,6 +548,16 @@ void() W_FireLightning =
|
||||||
T_RadiusDamage (self, self, 35*cells, world);
|
T_RadiusDamage (self, self, 35*cells, world);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cells = self.ammo_cells;
|
||||||
|
self.ammo_cells = 0;
|
||||||
|
W_SetCurrentAmmo ();
|
||||||
|
T_RadiusDamage (self, self, 35*cells, world);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (self.t_width < time)
|
if (self.t_width < time)
|
||||||
{
|
{
|
||||||
|
@ -525,6 +567,7 @@ void() W_FireLightning =
|
||||||
msg_entity = self;
|
msg_entity = self;
|
||||||
WriteByte (MSG_ONE, SVC_SMALLKICK);
|
WriteByte (MSG_ONE, SVC_SMALLKICK);
|
||||||
|
|
||||||
|
if (deathmatch != 4)
|
||||||
self.currentammo = self.ammo_cells = self.ammo_cells - 1;
|
self.currentammo = self.ammo_cells = self.ammo_cells - 1;
|
||||||
|
|
||||||
org = self.origin + '0 0 16';
|
org = self.origin + '0 0 16';
|
||||||
|
@ -590,6 +633,7 @@ W_FireGrenade
|
||||||
*/
|
*/
|
||||||
void() W_FireGrenade =
|
void() W_FireGrenade =
|
||||||
{
|
{
|
||||||
|
if (deathmatch != 4)
|
||||||
self.currentammo = self.ammo_rockets = self.ammo_rockets - 1;
|
self.currentammo = self.ammo_rockets = self.ammo_rockets - 1;
|
||||||
|
|
||||||
sound (self, CHAN_WEAPON, "weapons/grenade.wav", 1, ATTN_NORM);
|
sound (self, CHAN_WEAPON, "weapons/grenade.wav", 1, ATTN_NORM);
|
||||||
|
@ -624,7 +668,16 @@ void() W_FireGrenade =
|
||||||
newmis.touch = GrenadeTouch;
|
newmis.touch = GrenadeTouch;
|
||||||
|
|
||||||
// set newmis duration
|
// set newmis duration
|
||||||
|
if (deathmatch == 4)
|
||||||
|
{
|
||||||
newmis.nextthink = time + 2.5;
|
newmis.nextthink = time + 2.5;
|
||||||
|
self.attack_finished = time + 1.1;
|
||||||
|
// self.health = self.health - 1;
|
||||||
|
T_Damage (self, self, self.owner, 10 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
newmis.nextthink = time + 2.5;
|
||||||
|
|
||||||
newmis.think = GrenadeExplode;
|
newmis.think = GrenadeExplode;
|
||||||
|
|
||||||
setmodel (newmis, "progs/grenade.mdl");
|
setmodel (newmis, "progs/grenade.mdl");
|
||||||
|
@ -674,6 +727,7 @@ void() W_FireSuperSpikes =
|
||||||
|
|
||||||
sound (self, CHAN_WEAPON, "weapons/spike2.wav", 1, ATTN_NORM);
|
sound (self, CHAN_WEAPON, "weapons/spike2.wav", 1, ATTN_NORM);
|
||||||
self.attack_finished = time + 0.2;
|
self.attack_finished = time + 0.2;
|
||||||
|
if (deathmatch != 4)
|
||||||
self.currentammo = self.ammo_nails = self.ammo_nails - 2;
|
self.currentammo = self.ammo_nails = self.ammo_nails - 2;
|
||||||
dir = aim (self, 1000);
|
dir = aim (self, 1000);
|
||||||
launch_spike (self.origin + '0 0 16', dir);
|
launch_spike (self.origin + '0 0 16', dir);
|
||||||
|
@ -706,6 +760,7 @@ void(float ox) W_FireSpikes =
|
||||||
|
|
||||||
sound (self, CHAN_WEAPON, "weapons/rocket1i.wav", 1, ATTN_NORM);
|
sound (self, CHAN_WEAPON, "weapons/rocket1i.wav", 1, ATTN_NORM);
|
||||||
self.attack_finished = time + 0.2;
|
self.attack_finished = time + 0.2;
|
||||||
|
if (deathmatch != 4)
|
||||||
self.currentammo = self.ammo_nails = self.ammo_nails - 1;
|
self.currentammo = self.ammo_nails = self.ammo_nails - 1;
|
||||||
dir = aim (self, 1000);
|
dir = aim (self, 1000);
|
||||||
launch_spike (self.origin + '0 0 16' + v_right*ox, dir);
|
launch_spike (self.origin + '0 0 16' + v_right*ox, dir);
|
||||||
|
|
12
world.qc
12
world.qc
|
@ -176,13 +176,11 @@ void() worldspawn =
|
||||||
|
|
||||||
// custom map attributes
|
// custom map attributes
|
||||||
|
|
||||||
// can't change gravity in QuakeWorld
|
|
||||||
/*
|
|
||||||
if (self.model == "maps/e1m8.bsp")
|
if (self.model == "maps/e1m8.bsp")
|
||||||
cvar_set ("sv_gravity", "100");
|
cvar_set ("sv_gravity", "100");
|
||||||
else
|
else
|
||||||
cvar_set ("sv_gravity", "800");
|
cvar_set ("sv_gravity", "800");
|
||||||
*/
|
|
||||||
|
|
||||||
// the area based ambient sounds MUST be the first precache_sounds
|
// the area based ambient sounds MUST be the first precache_sounds
|
||||||
|
|
||||||
|
@ -241,6 +239,8 @@ void() worldspawn =
|
||||||
precache_sound ("player/death4.wav");
|
precache_sound ("player/death4.wav");
|
||||||
precache_sound ("player/death5.wav");
|
precache_sound ("player/death5.wav");
|
||||||
|
|
||||||
|
precache_sound ("boss1/sight1.wav");
|
||||||
|
|
||||||
// ax sounds
|
// ax sounds
|
||||||
precache_sound ("weapons/ax1.wav"); // ax swoosh
|
precache_sound ("weapons/ax1.wav"); // ax swoosh
|
||||||
precache_sound ("player/axhit1.wav"); // ax hit meat
|
precache_sound ("player/axhit1.wav"); // ax hit meat
|
||||||
|
@ -258,6 +258,12 @@ void() worldspawn =
|
||||||
precache_sound ("misc/water1.wav"); // swimming
|
precache_sound ("misc/water1.wav"); // swimming
|
||||||
precache_sound ("misc/water2.wav"); // swimming
|
precache_sound ("misc/water2.wav"); // swimming
|
||||||
|
|
||||||
|
// Invulnerability sounds
|
||||||
|
precache_sound ("items/protect.wav");
|
||||||
|
precache_sound ("items/protect2.wav");
|
||||||
|
precache_sound ("items/protect3.wav");
|
||||||
|
|
||||||
|
|
||||||
precache_model ("progs/player.mdl");
|
precache_model ("progs/player.mdl");
|
||||||
precache_model ("progs/eyes.mdl");
|
precache_model ("progs/eyes.mdl");
|
||||||
precache_model ("progs/h_player.mdl");
|
precache_model ("progs/h_player.mdl");
|
||||||
|
|
Loading…
Reference in a new issue