r4393 - in trunk/data: qcsrc/server scripts
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun Sep 7 07:08:24 EDT 2008
Author: div0
Date: 2008-09-07 07:08:23 -0400 (Sun, 07 Sep 2008)
New Revision: 4393
Modified:
trunk/data/qcsrc/server/t_items.qc
trunk/data/scripts/entities.def
Log:
add precaching to trigger_items; make it support a trigger brush too (not just targeting)
Modified: trunk/data/qcsrc/server/t_items.qc
===================================================================
--- trunk/data/qcsrc/server/t_items.qc 2008-09-06 22:01:42 UTC (rev 4392)
+++ trunk/data/qcsrc/server/t_items.qc 2008-09-07 11:08:23 UTC (rev 4393)
@@ -919,6 +919,16 @@
return a & b;
}
+float trigger_item_func_itembitset(float a, float b)
+{
+ return (b - (b & (IT_UNLIMITED_AMMO | IT_STRENGTH | IT_INVINCIBLE))) | a;
+}
+
+float trigger_item_func_itemand(float a, float b)
+{
+ return (b - (b & (IT_UNLIMITED_AMMO | IT_STRENGTH | IT_INVINCIBLE))) | (a & b);
+}
+
float trigger_item_func_or(float a, float b)
{
return a | b;
@@ -996,7 +1006,7 @@
trigger_item_change(0, health, trigger_item_func_set, "misc/megahealth.wav", "");
trigger_item_change(0, armorvalue, trigger_item_func_set, "misc/armor25.wav", "");
trigger_item_change(1, items, trigger_item_func_bitset, "misc/powerup.wav", "");
- trigger_item_change(1, weapons, trigger_item_func_bitset, "weapons/weaponpickup.wav", "");
+ trigger_item_change(1, weapons, trigger_item_func_itembitset, "weapons/weaponpickup.wav", "");
if((self.items & activator.items) & IT_STRENGTH)
activator.strength_finished = time + self.strength_finished;
@@ -1012,7 +1022,7 @@
trigger_item_change(0, health, trigger_item_func_min, "misc/megahealth.wav", "");
trigger_item_change(0, armorvalue, trigger_item_func_min, "misc/armor25.wav", "");
trigger_item_change(1, items, trigger_item_func_and, "misc/powerup.wav", "");
- trigger_item_change(1, weapons, trigger_item_func_and, "weapons/weaponpickup.wav", "");
+ trigger_item_change(1, weapons, trigger_item_func_itemand, "weapons/weaponpickup.wav", "");
if((self.items & activator.items) & IT_STRENGTH)
activator.strength_finished = min(activator.strength_finished, time + self.strength_finished);
@@ -1074,17 +1084,39 @@
centerprint(activator, self.message);
}
+void trigger_items_touch (void)
+{
+ activator = other;
+ trigger_items_use();
+}
+
void spawnfunc_trigger_items (void)
{
float n, i, j;
entity e;
- EXACTTRIGGER_INIT;
- self.use = trigger_items_use;
+ IFTARGETED
+ {
+ self.use = trigger_items_use;
+ }
+ else
+ {
+ EXACTTRIGGER_INIT;
+ self.touch = trigger_items_touch;
+ }
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");
+ precache_sound("misc/itempickup.wav");
+ precache_sound("misc/itempickup.wav");
+ precache_sound("misc/itempickup.wav");
+ precache_sound("misc/itempickup.wav");
+ precache_sound("misc/megahealth.wav");
+ precache_sound("misc/armor25.wav");
+ precache_sound("misc/powerup.wav");
+ precache_sound("weapons/weaponpickup.wav");
+
n = tokenize(self.netname);
for(i = 0; i < n; ++i)
{
@@ -1095,7 +1127,11 @@
{
e = get_weaponinfo(j);
if(argv(i) == e.netname)
+ {
self.weapons |= e.weapons;
+ if(self.spawnflags == 0 || self.spawnflags == 2)
+ weapon_action(e.weapon, WR_PRECACHE);
+ }
}
}
}
Modified: trunk/data/scripts/entities.def
===================================================================
--- trunk/data/scripts/entities.def 2008-09-06 22:01:42 UTC (rev 4392)
+++ trunk/data/scripts/entities.def 2008-09-07 11:08:23 UTC (rev 4393)
@@ -1020,10 +1020,11 @@
model="models/weapons/g_porto.md3"
*/
-/*QUAKED trigger_items (0 0 1) (-8 -8 -8) (8 8 8) AND OR ANDNOT
+/*QUAKED trigger_items (0 0 1) ? AND OR ANDNOT
Sets the items of any player who triggers this.
For the number fields, not specifying a value means not changing it. To clear armor, you need to explicitly set "armor" to "-1".
-------- KEYS --------
+targetname: used to trigger this. If not set, anyone touching this gets the item changes.
netname: space separated list of items (either weapon short names (like in g_start_weapon_* cvars), or item short names "unlimited_ammo", "invincible" and "strength"
message: message to print
ammo_shells: amount of shells
More information about the nexuiz-commits
mailing list