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