r4346 - in trunk/data: qcsrc/common qcsrc/server scripts
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Sep 5 02:52:33 EDT 2008
Author: div0
Date: 2008-09-05 02:52:32 -0400 (Fri, 05 Sep 2008)
New Revision: 4346
Modified:
trunk/data/qcsrc/common/constants.qh
trunk/data/qcsrc/server/cl_client.qc
trunk/data/qcsrc/server/cl_weapons.qc
trunk/data/qcsrc/server/miscfunctions.qc
trunk/data/qcsrc/server/race.qc
trunk/data/qcsrc/server/t_items.qc
trunk/data/qcsrc/server/w_crylink.qc
trunk/data/qcsrc/server/w_electro.qc
trunk/data/qcsrc/server/w_grenadelauncher.qc
trunk/data/qcsrc/server/w_hagar.qc
trunk/data/qcsrc/server/w_minstanex.qc
trunk/data/qcsrc/server/w_nex.qc
trunk/data/qcsrc/server/w_porto.qc
trunk/data/qcsrc/server/w_rocketlauncher.qc
trunk/data/qcsrc/server/w_shotgun.qc
trunk/data/qcsrc/server/w_uzi.qc
trunk/data/scripts/entities.def
Log:
trigger_items
Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/common/constants.qh 2008-09-05 06:52:32 UTC (rev 4346)
@@ -293,6 +293,8 @@
float WEP_LAST = 11; float WEPBIT_ALL = 2047;
float WEP_COUNT = 12;
+float IT_UNLIMITED_AMMO = 1;
+// when this bit is set, using a weapon does not reduce ammo. Checkpoints can give this powerup.
float IT_SHELLS = 256;
float IT_NAILS = 512;
float IT_ROCKETS = 1024;
Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/cl_client.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -633,7 +633,7 @@
self.ammo_cells = start_ammo_cells;
self.health = start_health;
self.armorvalue = start_armorvalue;
- self.items = 0;
+ self.items = start_items;
self.weapons = start_weapons;
self.switchweapon = start_switchweapon;
self.cnt = start_switchweapon;
Modified: trunk/data/qcsrc/server/cl_weapons.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weapons.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/cl_weapons.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -399,20 +399,20 @@
if(nixnex_nextchange != self.nixnex_lastchange_id) // this shall only be called once per round!
{
self.nixnex_lastchange_id = nixnex_nextchange;
- if (cvar("g_use_ammunition"))
+ if (self.items & IT_UNLIMITED_AMMO)
{
+ self.ammo_shells = cvar("g_pickup_shells_max");
+ self.ammo_nails = cvar("g_pickup_nails_max");
+ self.ammo_rockets = cvar("g_pickup_rockets_max");
+ self.ammo_cells = cvar("g_pickup_cells_max");
+ }
+ else
+ {
self.ammo_shells = cvar("g_balance_nixnex_ammo_shells");
self.ammo_nails = cvar("g_balance_nixnex_ammo_nails");
self.ammo_rockets = cvar("g_balance_nixnex_ammo_rockets");
self.ammo_cells = cvar("g_balance_nixnex_ammo_cells");
}
- else
- {
- self.ammo_shells = cvar("g_pickup_shells_max");
- self.ammo_nails = cvar("g_pickup_nails_max");
- self.ammo_rockets = cvar("g_pickup_rockets_max");
- self.ammo_cells = cvar("g_pickup_cells_max");
- }
self.nixnex_nextincr = time + cvar("g_balance_nixnex_incrtime");
if(dt >= 1 && dt <= 5)
self.nixnex_lastinfotime = -42;
@@ -426,7 +426,7 @@
centerprint(self, strcat("^3", ftos(dt), "^2 seconds until weapon change...\n\nNext weapon: ^3", W_Name(nixnex_nextweapon), "\n"));
}
- if(cvar("g_use_ammunition") && time > self.nixnex_nextincr)
+ if(!(self.items & IT_UNLIMITED_AMMO) && time > self.nixnex_nextincr)
{
self.ammo_shells = self.ammo_shells + cvar("g_balance_nixnex_ammoincr_shells");
self.ammo_nails = self.ammo_nails + cvar("g_balance_nixnex_ammoincr_nails");
Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/miscfunctions.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -701,6 +701,7 @@
float g_pickup_healthmega_max;
float start_weapons;
+float start_items;
float start_switchweapon;
float start_ammo_shells;
float start_ammo_nails;
@@ -770,6 +771,7 @@
// initialize starting values for players
start_weapons = 0;
+ start_items = 0;
start_switchweapon = 0;
start_ammo_shells = 0;
start_ammo_nails = 0;
@@ -784,6 +786,7 @@
start_switchweapon = WEP_ROCKET_LAUNCHER;
weapon_action(start_switchweapon, WR_PRECACHE);
start_ammo_rockets = 999;
+ start_items |= IT_UNLIMITED_AMMO;
}
else if(g_nixnex)
{
@@ -829,6 +832,7 @@
start_ammo_nails = cvar("g_pickup_nails_max");
start_ammo_rockets = cvar("g_pickup_rockets_max");
start_ammo_cells = cvar("g_pickup_cells_max");
+ start_items |= IT_UNLIMITED_AMMO;
}
for(i = WEP_FIRST; i <= WEP_LAST; ++i)
Modified: trunk/data/qcsrc/server/race.qc
===================================================================
--- trunk/data/qcsrc/server/race.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/race.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -301,9 +301,29 @@
void checkpoint_touch()
{
+ if(other.classname == "porto")
+ {
+ // do not allow portalling through checkpoints
+ trace_plane_normal = normalize(-1 * other.velocity);
+ self = other;
+ W_Porto_Fail();
+ return;
+ }
+
if(other.classname != "player")
return;
+ /*
+ * Remove unauthorized equipment
+ */
+ Portal_ClearAll(other);
+
+ /*
+ * Trigger targets
+ */
+ activator = other;
+ SUB_UseTargets();
+
EXACTTRIGGER_TOUCH;
if(other.race_checkpoint == -1 || other.race_checkpoint == self.race_checkpoint)
Modified: trunk/data/qcsrc/server/t_items.qc
===================================================================
--- trunk/data/qcsrc/server/t_items.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/t_items.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -24,6 +24,7 @@
case IT_NAILS: return "nails";
case IT_ROCKETS: return "rockets";
case IT_CELLS: return "cells";
+
// add more things here (health, armor)
default: error("requested item has no counter field name");
}
@@ -881,3 +882,141 @@
self.use = func_wall_use;
}
+void trigger_items_use (void)
+{
+ if(activator.classname != "player")
+ return;
+ if(activator.deadflag != DEAD_NO)
+ return;
+ EXACTTRIGGER_TOUCH;
+
+ float _switchweapon;
+ _switchweapon = FALSE;
+ if (activator.autoswitch)
+ if (activator.switchweapon == w_getbestweapon(activator))
+ _switchweapon = TRUE;
+
+ if(self.spawnflags == 0) // SET
+ {
+ activator.ammo_shells = self.ammo_shells;
+ activator.ammo_nails = self.ammo_nails;
+ activator.ammo_rockets = self.ammo_rockets;
+ activator.ammo_cells = self.ammo_cells;
+ activator.health = self.health;
+ activator.armorvalue = self.armorvalue;
+ activator.weapons = self.weapons;
+ activator.items = self.items;
+
+ if(self.weapons)
+ sound (activator, CHAN_AUTO, "weapons/weaponpickup.wav", VOL_BASE, ATTN_NORM);
+ if(self.items)
+ sound (activator, CHAN_AUTO, "misc/itempickup.wav", VOL_BASE, ATTN_NORM);
+ if(self.health)
+ sound (activator, CHAN_AUTO, "misc/megahealth.wav", VOL_BASE, ATTN_NORM);
+ if(self.armorvalue)
+ sound (activator, CHAN_AUTO, "misc/armor25.wav", VOL_BASE, ATTN_NORM);
+ if(self.items & IT_STRENGTH)
+ {
+ sound (activator, CHAN_AUTO, "misc/powerup.wav", VOL_BASE, ATTN_NORM);
+ activator.strength_finished = max(activator.strength_finished, time + self.strength_finished);
+ }
+ if(self.items & IT_INVINCIBLE)
+ {
+ sound (activator, CHAN_AUTO, "misc/powerup_shield.wav", VOL_BASE, ATTN_NORM);
+ activator.invincible_finished = max(activator.invincible_finished, time + self.invincible_finished);
+ }
+ }
+ else if(self.spawnflags == 1) // AND/MIN
+ {
+ activator.ammo_shells = min(activator.ammo_shells, self.ammo_shells);
+ activator.ammo_nails = min(activator.ammo_nails, self.ammo_nails);
+ activator.ammo_rockets = min(activator.ammo_rockets, self.ammo_rockets);
+ activator.ammo_cells = min(activator.ammo_cells, self.ammo_cells);
+ activator.health = min(activator.health, self.health);
+ activator.armorvalue = min(activator.armorvalue, self.armorvalue);
+ activator.weapons = activator.weapons & self.weapons;
+ activator.items = activator.items & self.items;
+
+ if not(self.items & IT_STRENGTH)
+ activator.strength_finished = 0;
+ if not(self.items & IT_INVINCIBLE)
+ activator.invincible_finished = 0;
+ }
+ else if(self.spawnflags == 2) // OR/MAX
+ {
+ activator.ammo_shells = max(activator.ammo_shells, self.ammo_shells);
+ activator.ammo_nails = max(activator.ammo_nails, self.ammo_nails);
+ activator.ammo_rockets = max(activator.ammo_rockets, self.ammo_rockets);
+ activator.ammo_cells = max(activator.ammo_cells, self.ammo_cells);
+ activator.health = max(activator.health, self.health);
+ activator.armorvalue = max(activator.armorvalue, self.armorvalue);
+ activator.weapons |= self.weapons;
+ activator.items |= self.items;
+
+ if(self.weapons)
+ sound (activator, CHAN_AUTO, "weapons/weaponpickup.wav", VOL_BASE, ATTN_NORM);
+ if(self.items)
+ sound (activator, CHAN_AUTO, "misc/itempickup.wav", VOL_BASE, ATTN_NORM);
+ if(self.health)
+ sound (activator, CHAN_AUTO, "misc/megahealth.wav", VOL_BASE, ATTN_NORM);
+ if(self.armorvalue)
+ sound (activator, CHAN_AUTO, "misc/armor25.wav", VOL_BASE, ATTN_NORM);
+ if(self.items & IT_STRENGTH)
+ {
+ sound (activator, CHAN_AUTO, "misc/powerup.wav", VOL_BASE, ATTN_NORM);
+ activator.strength_finished = max(activator.strength_finished, time + self.strength_finished);
+ }
+ if(self.items & IT_INVINCIBLE)
+ {
+ sound (activator, CHAN_AUTO, "misc/powerup_shield.wav", VOL_BASE, ATTN_NORM);
+ activator.invincible_finished = max(activator.invincible_finished, time + self.invincible_finished);
+ }
+ }
+ else if(self.spawnflags == 4) // ANDNOT/MIN
+ {
+ activator.ammo_shells = min(activator.ammo_shells, self.ammo_shells);
+ activator.ammo_nails = min(activator.ammo_nails, self.ammo_nails);
+ activator.ammo_rockets = min(activator.ammo_rockets, self.ammo_rockets);
+ activator.ammo_cells = min(activator.ammo_cells, self.ammo_cells);
+ activator.health = min(activator.health, self.health);
+ activator.armorvalue = min(activator.armorvalue, self.armorvalue);
+ activator.weapons -= activator.weapons & self.weapons;
+ activator.items -= activator.items & self.items;
+
+ if(self.items & IT_STRENGTH)
+ activator.strength_finished = 0;
+ if(self.items & IT_INVINCIBLE)
+ activator.invincible_finished = 0;
+ }
+
+ if not(activator.weapons & W_WeaponBit(activator.switchweapon))
+ _switchweapon = TRUE;
+ if(_switchweapon)
+ W_SwitchWeapon_Force(activator, w_getbestweapon(activator));
+}
+
+void spawnfunc_trigger_items (void)
+{
+ float n, i, j;
+ entity e;
+ EXACTTRIGGER_INIT;
+ self.use = trigger_items_use;
+ if(!self.strength_finished)
+ self.strength_finished = cvar("g_balance_powerup_strength_time");
+ if(!self.invincible_finished)
+ self.invincible_finished = cvar("g_balance_powerup_invincible_time");
+
+ n = tokenize(self.message);
+ for(i = 0; i < n; ++i)
+ {
+ if(argv(i) == "unlimited_ammo") self.items |= IT_UNLIMITED_AMMO;
+ if(argv(i) == "strength") self.items |= IT_STRENGTH;
+ if(argv(i) == "shield") self.items |= IT_INVINCIBLE;
+ for(j = WEP_FIRST; j <= WEP_LAST; ++j)
+ {
+ e = get_weaponinfo(j);
+ if(argv(i) == e.netname)
+ self.weapons |= e.weapons;
+ }
+ }
+}
Modified: trunk/data/qcsrc/server/w_crylink.qc
===================================================================
--- trunk/data/qcsrc/server/w_crylink.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/w_crylink.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -67,7 +67,7 @@
local entity proj;
local vector s;
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_cells = self.ammo_cells - cvar("g_balance_crylink_primary_ammo");
W_SetupShot (self, '25 8 -8', FALSE, 2, "weapons/crylink_fire.wav");
@@ -131,7 +131,7 @@
local float counter, shots;
local entity proj;
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_cells = self.ammo_cells - cvar("g_balance_crylink_secondary_ammo");
W_SetupShot (self, '25 8 -8', FALSE, 2, "weapons/crylink_fire.wav");
@@ -180,7 +180,7 @@
// experimental lightning gun
void W_Crylink_Attack3 (void)
{
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_cells = self.ammo_cells - cvar("g_balance_crylink_primary_ammo");
W_SetupShot (self, '25 8 -8', TRUE, 0, "weapons/crylink_fire.wav");
Modified: trunk/data/qcsrc/server/w_electro.qc
===================================================================
--- trunk/data/qcsrc/server/w_electro.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/w_electro.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -109,7 +109,7 @@
proj.solid = SOLID_BBOX;
setorigin(proj, w_shotorg);
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_cells = self.ammo_cells - cvar("g_balance_electro_primary_ammo");
proj.effects = EF_BRIGHTFIELD | EF_LOWPRECISION;
proj.movetype = MOVETYPE_FLY;
@@ -143,7 +143,7 @@
proj.solid = SOLID_BBOX;
setorigin(proj, w_shotorg);
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_cells = self.ammo_cells - cvar("g_balance_electro_secondary_ammo");
proj.effects = EF_LOWPRECISION;
//proj.glow_size = 50;
Modified: trunk/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_grenadelauncher.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/w_grenadelauncher.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -76,7 +76,7 @@
{
local entity gren;
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_rockets = self.ammo_rockets - cvar("g_balance_grenadelauncher_primary_ammo");
W_SetupShot (self, '25 6 -8', FALSE, 4, "weapons/grenade_fire.wav");
//W_SetupShot (self, '25 8 -8', FALSE, 4, "weapons/grenade_fire.wav"); // TODO: move model to the right a little
@@ -111,7 +111,7 @@
{
local entity gren;
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_rockets = self.ammo_rockets - cvar("g_balance_grenadelauncher_secondary_ammo");
W_SetupShot (self, '25 6 -8', FALSE, 4, "weapons/grenade_fire.wav");
//W_SetupShot (self, '25 8 -8', FALSE, 4, "weapons/grenade_fire.wav"); // TODO: move model to the right a little
Modified: trunk/data/qcsrc/server/w_hagar.qc
===================================================================
--- trunk/data/qcsrc/server/w_hagar.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/w_hagar.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -80,7 +80,7 @@
{
local entity missile;
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_rockets = self.ammo_rockets - cvar("g_balance_hagar_primary_ammo");
W_SetupShot (self, '25 5 -8', FALSE, 2, "weapons/hagar_fire.wav");
//W_SetupShot (self, '25 8 -8', FALSE, 2, "weapons/hagar_fire.wav"); // TODO: move model a little to the right
@@ -119,7 +119,7 @@
{
local entity missile;
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_rockets = self.ammo_rockets - cvar("g_balance_hagar_secondary_ammo");
W_SetupShot (self, '25 5 -8', FALSE, 2, "weapons/hagar_fire.wav");
//W_SetupShot (self, '25 8 -8', FALSE, 2, "weapons/hagar_fire.wav"); // TODO: move model a little to the right
Modified: trunk/data/qcsrc/server/w_minstanex.qc
===================================================================
--- trunk/data/qcsrc/server/w_minstanex.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/w_minstanex.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -23,7 +23,7 @@
// play a sound
soundat (self, trace_endpos, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
{
if (g_minstagib)
self.ammo_cells = self.ammo_cells - 1;
Modified: trunk/data/qcsrc/server/w_nex.qc
===================================================================
--- trunk/data/qcsrc/server/w_nex.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/w_nex.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -22,7 +22,7 @@
// play a sound
soundat (self, trace_endpos, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
{
self.ammo_cells = self.ammo_cells - cvar("g_balance_nex_ammo");
}
Modified: trunk/data/qcsrc/server/w_porto.qc
===================================================================
--- trunk/data/qcsrc/server/w_porto.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/w_porto.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -98,7 +98,7 @@
{
local entity gren;
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.weapons = self.weapons - (self.weapons & WEPBIT_PORTO);
W_SetupShot (self, '0 0 0', FALSE, 4, "weapons/grenade_fire.wav");
Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -213,7 +213,7 @@
local entity missile;
local entity flash, flash2;
- if (cvar("g_use_ammunition") && !g_rocketarena)
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_rockets = self.ammo_rockets - cvar("g_balance_rocketlauncher_ammo");
W_SetupShot (self, '25 3 -4', FALSE, 5, "weapons/rocket_fire.wav");
Modified: trunk/data/qcsrc/server/w_shotgun.qc
===================================================================
--- trunk/data/qcsrc/server/w_shotgun.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/w_shotgun.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -16,7 +16,7 @@
W_SetupShot (self, '25 8 -8', TRUE, 5, "weapons/shotgun_fire.wav");
for (sc = 0;sc < bullets;sc = sc + 1)
fireBullet (w_shotorg, w_shotdir, spread, d, f, WEP_SHOTGUN, sc < 3);
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_shells = self.ammo_shells - cvar("g_balance_shotgun_primary_ammo");
pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, cvar("g_balance_shotgun_primary_ammo"));
@@ -59,7 +59,7 @@
W_SetupShot (self, '25 8 -8', TRUE, 5, "weapons/shotgun_fire.wav");
for (sc = 0;sc < bullets;sc = sc + 1)
fireBullet (w_shotorg, w_shotdir, spread, d, f, WEP_SHOTGUN, sc < 3);
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
self.ammo_shells = self.ammo_shells - cvar("g_balance_shotgun_secondary_ammo");
pointparticles(particleeffectnum("shotgun_muzzleflash"), w_shotorg, w_shotdir * 1000, cvar("g_balance_shotgun_secondary_ammo"));
Modified: trunk/data/qcsrc/server/w_uzi.qc
===================================================================
--- trunk/data/qcsrc/server/w_uzi.qc 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/qcsrc/server/w_uzi.qc 2008-09-05 06:52:32 UTC (rev 4346)
@@ -15,7 +15,7 @@
{
local entity flash, flash2;
- if (cvar("g_use_ammunition"))
+ if not(self.items & IT_UNLIMITED_AMMO)
{
if (self.uzi_bulletcounter == 1)
self.ammo_nails = self.ammo_nails - cvar("g_balance_uzi_first_ammo");
Modified: trunk/data/scripts/entities.def
===================================================================
--- trunk/data/scripts/entities.def 2008-09-05 06:07:56 UTC (rev 4345)
+++ trunk/data/scripts/entities.def 2008-09-05 06:52:32 UTC (rev 4346)
@@ -922,6 +922,7 @@
cnt: Number of the checkpoint. 0 for finish line, and at least two other checkpoints have to exist. They MUST be touched in sequential order!
message: Death message, when touching checkpoints in the wrong order.
targetname: Name of the checkpoint. info_player_race can target this to assign a spawn to a checkpoint. Also used for triggering a checkpoint by an event.
+target: when the checkpoint is passed, these entities are triggered. Useful for forcing items in certain areas using trigger_items
-------- SPAWNFLAGS --------
NOTOUCH: the checkpoint will not become active when touched, it HAS to be targeted
CRUSH: the checkpoint kills when used at the wrong time
@@ -1006,6 +1007,7 @@
/*QUAKED weapon_porto (1 0 .5) (-30 -30 0) (30 30 32) FLOATING
the Port-O-Launch. Only can be shot once.
+Portals cannot be made on noimpact surfaces, and the portal missile will bounce on slick surfaces.
-------- KEYS --------
respawntime: time till it respawns (default: 120)
team: out of items with the same value here, only one (random one) will spawn. Useful to put multiple items on one spot.
@@ -1014,3 +1016,19 @@
-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY --------
model="models/weapons/g_porto.md3"
*/
+
+/*QUAKED trigger_items (0 0 1) (-8 -8 -8) (8 8 8) AND OR ANDNOT
+Sets the items of any player who triggers this.
+-------- KEYS --------
+message: space separated list of items (either weapon short names (like in g_start_weapon_* cvars), or item short names "unlimited_ammo", "shield" and "strength"
+ammo_shells: amount of shells
+ammo_nails: amount of bullets
+ammo_rockets: amount of rockets
+ammo_cells: amount of cells
+health: amount of health
+armorvalue: amount of armor
+-------- SPAWNFLAGS --------
+AND: any items not listed will get removed, and none will get added
+OR: the player may keep items not listed
+ANDNOT: the items listed will get removed from the player
+*/
More information about the nexuiz-commits
mailing list