.string netname_previous;
-void SetSpectatee(entity player, entity spectatee);
+void SetSpectatee(entity this, entity spectatee);
+void SetSpectatee_status(entity this, int spectatee_num);
/*
this.teleportable = TELEPORT_SIMPLE;
this.damagedbycontents = false;
this.health = FRAGS_SPECTATOR;
+ SetSpectatee_status(this, etof(this));
this.takedamage = DAMAGE_NO;
this.solid = SOLID_NOT;
set_movetype(this, MOVETYPE_FLY_WORLDONLY); // user preference is controlled by playerprethink
}
TRANSMUTE(Player, this);
+
this.wasplayer = true;
this.iscreature = true;
this.teleportable = TELEPORT_NORMAL;
this.armorvalue = start_armorvalue;
this.weapons = start_weapons;
}
+ SetSpectatee_status(this, 0);
this.superweapons_finished = (this.weapons & WEPSET_SUPERWEAPONS) ? time + autocvar_g_balance_superweapons_time : 0;
else
WriteString(channel, "");
WriteByte(channel, this.count * 255.0); // g_balance_armor_blockpercent
- WriteByte(channel, serverflags); // client has to know if it should zoom or not
+ WriteByte(channel, serverflags);
WriteCoord(channel, autocvar_g_trueaim_minrange);
}
return true;
}
+void SetSpectatee_status(entity this, int spectatee_num)
+{
+ int oldspectatee_status = this.spectatee_status;
+ this.spectatee_status = spectatee_num;
+
+ if (this.spectatee_status != oldspectatee_status)
+ {
+ ClientData_Touch(this);
+ if (g_race || g_cts) race_InitSpectator();
+ }
+}
+
void SetSpectatee(entity this, entity spectatee)
{
entity old_spectatee = this.enemy;
}
}
+ if (this.enemy)
+ SetSpectatee_status(this, etof(this.enemy));
+
// needed to update spectator list
if(old_spectatee) { ClientData_Touch(old_spectatee); }
}
);
}
- int oldspectatee_status = this.spectatee_status;
- if (IS_SPEC(this)) {
- this.spectatee_status = etof(this.enemy);
- } else if (IS_OBSERVER(this)) {
- this.spectatee_status = etof(this);
- } else {
- this.spectatee_status = 0;
- }
- if (this.spectatee_status != oldspectatee_status) {
- ClientData_Touch(this);
- if (g_race || g_cts) race_InitSpectator();
- }
-
if (this.teamkill_soundtime && time > this.teamkill_soundtime)
{
this.teamkill_soundtime = 0;
void Player_Physics(entity this)
{
- set_movetype(this, ((this.move_qcphysics) ? MOVETYPE_NONE : this.move_movetype));
+ set_movetype(this, this.move_movetype);
if(!this.move_qcphysics)
return;
- int mt = this.move_movetype;
-
- if(mt == MOVETYPE_PUSH || mt == MOVETYPE_FAKEPUSH || mt == MOVETYPE_PHYSICS)
- {
- this.move_qcphysics = false;
- set_movetype(this, mt);
- return;
- }
-
if(!frametime && !this.pm_frametime)
return;