[nexuiz-commits] r7569 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Mon Aug 31 11:17:32 EDT 2009
Author: lordhavoc
Date: 2009-08-31 11:17:32 -0400 (Mon, 31 Aug 2009)
New Revision: 7569
Modified:
trunk/data/qcsrc/server/t_items.qc
Log:
fix transparent items behavior for teamed items
Modified: trunk/data/qcsrc/server/t_items.qc
===================================================================
--- trunk/data/qcsrc/server/t_items.qc 2009-08-31 14:53:09 UTC (rev 7568)
+++ trunk/data/qcsrc/server/t_items.qc 2009-08-31 15:17:32 UTC (rev 7569)
@@ -41,40 +41,49 @@
.float max_armorvalue;
-void Item_Show (float visible)
+void Item_Show (entity e, float mode)
{
- if (visible)
+ if (mode > 0)
{
// make the item look normal, and be touchable
- self.model = self.mdl;
- self.solid = SOLID_TRIGGER;
- self.effects = self.effects - (self.effects & (EF_ADDITIVE | EF_FULLBRIGHT));
- //self.colormod = '0 0 0';
- self.alpha = 1;
+ e.model = e.mdl;
+ e.solid = SOLID_TRIGGER;
+ e.effects = e.effects - (e.effects & (EF_ADDITIVE | EF_FULLBRIGHT));
+ //e.colormod = '0 0 0';
+ e.alpha = 0;
// special cases
- if (self.strength_finished || self.invincible_finished)
- self.effects = self.effects | EF_ADDITIVE | EF_FULLBRIGHT;
+ if (e.strength_finished || e.invincible_finished)
+ e.effects = e.effects | EF_ADDITIVE | EF_FULLBRIGHT;
if (cvar("g_fullbrightitems"))
- self.effects = self.effects | EF_FULLBRIGHT;
+ e.effects = e.effects | EF_FULLBRIGHT;
}
+ else if (mode < 0)
+ {
+ // hide the item completely
+ e.model = string_null;
+ e.solid = SOLID_NOT;
+ e.effects = e.effects - (e.effects & (EF_ADDITIVE | EF_FULLBRIGHT));
+ //e.colormod = '0 0 0';
+ e.alpha = 0;
+ }
else
{
// make the item translucent green and not touchable
- self.model = self.mdl;
- self.solid = SOLID_NOT;
- self.effects = self.effects | EF_ADDITIVE | EF_FULLBRIGHT;
- //self.colormod = '0.2 1 0.2';
- self.alpha = 0.1;
+ e.model = e.mdl;
+ e.solid = SOLID_NOT;
+ e.effects = e.effects | EF_ADDITIVE | EF_FULLBRIGHT;
+ //e.colormod = '0.2 1 0.2';
+ e.alpha = 0.1;
}
// relink entity (because solid may have changed)
- setorigin(self, self.origin);
+ setorigin(e, e.origin);
}
void Item_Respawn (void)
{
- Item_Show(TRUE);
+ Item_Show(self, 1);
if(!g_minstagib && self.items == IT_STRENGTH)
sound (self, CHAN_TRIGGER, "misc/strength_respawn.wav", VOL_BASE, ATTN_NORM); // play respawn sound
else if(!g_minstagib && self.items == IT_INVINCIBLE)
@@ -163,12 +172,13 @@
void Item_ScheduleRespawn(entity e)
{
+ Item_Show(e, 0);
Item_ScheduleRespawnIn(e, ITEM_RESPAWNTIME(e));
}
void Item_ScheduleInitialRespawn(entity e)
{
- Item_Show(FALSE);
+ Item_Show(e, 0);
Item_ScheduleRespawnIn(e, game_starttime - time + ITEM_RESPAWNTIME_INITIAL(e));
}
@@ -423,12 +433,17 @@
return;
else
{
- Item_Show(FALSE);
if(self.team)
{
RandomSelection_Init();
- for(head = world; (head = findfloat(head, team, self.team)); ) if(head.flags & FL_ITEM)
- RandomSelection_Add(head, 0, string_null, head.cnt, 0);
+ for(head = world; (head = findfloat(head, team, self.team)); )
+ {
+ if(head.flags & FL_ITEM)
+ {
+ Item_Show(head, -1);
+ RandomSelection_Add(head, 0, string_null, head.cnt, 0);
+ }
+ }
e = RandomSelection_chosen_ent;
}
else
@@ -450,13 +465,14 @@
RandomSelection_Add(head, 0, string_null, head.cnt, 0);
e = RandomSelection_chosen_ent;
e.state = 0;
+ Item_Show(e, 1);
for(head = world; (head = findfloat(head, team, self.team)); ) if(head.flags & FL_ITEM)
{
if(head != e)
{
// make it a non-spawned item
- Item_Show(FALSE);
+ Item_Show(head, -1);
head.state = 1; // state 1 = initially hidden item
}
head.effects &~= EF_NODRAW;
@@ -469,7 +485,7 @@
void Item_Reset()
{
- Item_Show(!self.state);
+ Item_Show(self, !self.state);
setorigin (self, self.origin);
self.think = SUB_Null;
self.nextthink = 0;
@@ -814,7 +830,7 @@
self.colormap = 1024; // color shirt=0 pants=0 grey
}
- Item_Show(TRUE);
+ Item_Show(self, 1);
self.state = 0;
if(self.team)
{
More information about the nexuiz-commits
mailing list