X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_client.qc;h=de2603437e253f69e2c2322706a55ba846f8c92f;hb=33ade75b9b320129db4c2f47d7d859dbec2e2d12;hp=ffbfe02ff946bfc4daccc38a2795359ebe13ef7e;hpb=57755aea0cb5ac02b6aa56949ad9ac1beabced0a;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index ffbfe02ff..de2603437 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -209,7 +209,7 @@ void PutObserverInServer() if(self.vehicle) vehicles_exit(VHEF_RELEASE); - WaypointSprite_PlayerDead(); + WaypointSprite_PlayerDead(self); if(!mutator_returnvalue) // mutator prevents resetting teams self.team = -1; // move this as it is needed to log the player spectating in eventlog @@ -731,21 +731,21 @@ Called when a client types 'kill' in the console */ .float clientkill_nexttime; -void ClientKill_Now_TeamChange() -{SELFPARAM(); - if(self.killindicator_teamchange == -1) +void ClientKill_Now_TeamChange(entity this) +{ + if(this.killindicator_teamchange == -1) { - JoinBestTeam( self, false, true ); + JoinBestTeam( this, false, true ); } - else if(self.killindicator_teamchange == -2) + else if(this.killindicator_teamchange == -2) { if(blockSpectators) - Send_Notification(NOTIF_ONE_ONLY, self, MSG_INFO, INFO_SPECTATE_WARNING, autocvar_g_maxplayers_spectator_blocktime); - PutObserverInServer(); + Send_Notification(NOTIF_ONE_ONLY, this, MSG_INFO, INFO_SPECTATE_WARNING, autocvar_g_maxplayers_spectator_blocktime); + WITH(entity, self, this, PutObserverInServer()); } else - SV_ChangeTeam(self.killindicator_teamchange - 1); - self.killindicator_teamchange = 0; + WITH(entity, self, this, SV_ChangeTeam(this.killindicator_teamchange - 1)); + this.killindicator_teamchange = 0; } void ClientKill_Now() @@ -766,7 +766,7 @@ void ClientKill_Now() self.killindicator = world; if(self.killindicator_teamchange) - ClientKill_Now_TeamChange(); + ClientKill_Now_TeamChange(self); if(IS_PLAYER(self)) Damage(self, self, self, 100000, DEATH_KILL.m_id, self.origin, '0 0 0'); @@ -835,13 +835,13 @@ void ClientKill_TeamChange (float targetteam) // 0 = don't change, -1 = auto, -2 if(!self.killindicator) { - if(self.deadflag == DEAD_NO) + if(!IS_DEAD(self)) { killtime = max(killtime, self.clientkill_nexttime - time); self.clientkill_nexttime = time + killtime + autocvar_g_balance_kill_antispam; } - if(killtime <= 0 || !IS_PLAYER(self) || self.deadflag != DEAD_NO) + if(killtime <= 0 || !IS_PLAYER(self) || IS_DEAD(self)) { ClientKill_Now(); } @@ -916,7 +916,7 @@ void ClientKill () {SELFPARAM(); if(gameover) return; if(self.player_blocked) return; - if(self.frozen) return; + if(STAT(FROZEN, self)) return; ClientKill_TeamChange(0); } @@ -1078,7 +1078,7 @@ void ClientConnect() this.netname_previous = strzone(this.netname); - Send_Notification(NOTIF_ALL, NULL, MSG_INFO, (teamplay ? APP_TEAM_ENT_4(this, INFO_JOIN_CONNECT_TEAM_) : INFO_JOIN_CONNECT), this.netname); + Send_Notification(NOTIF_ALL, NULL, MSG_INFO, ((teamplay && IS_PLAYER(this)) ? APP_TEAM_ENT_4(this, INFO_JOIN_CONNECT_TEAM_) : INFO_JOIN_CONNECT), this.netname); stuffcmd(this, clientstuff, "\n"); stuffcmd(this, "cl_particles_reloadeffects\n"); // TODO do we still need this? @@ -1244,6 +1244,9 @@ void ClientDisconnect () self.playerid = 0; ReadyCount(); + if(vote_called) + if(IS_REAL_CLIENT(self)) + VoteCount(false); // free cvars GetCvars(-1); @@ -1263,7 +1266,7 @@ void ChatBubbleThink() self.mdl = ""; - if ( !self.owner.deadflag && IS_PLAYER(self.owner) ) + if ( !IS_DEAD(self.owner) && IS_PLAYER(self.owner) ) { if ( self.owner.active_minigame ) self.mdl = "models/sprites/minigame_busy.iqm"; @@ -1330,7 +1333,7 @@ void respawn() SUB_SetFade (self, time + autocvar_g_respawn_ghosts_maxtime / 2 + random () * (autocvar_g_respawn_ghosts_maxtime - autocvar_g_respawn_ghosts_maxtime / 2), 1.5); } - CopyBody(1); + CopyBody(self, 1); self.effects |= EF_NODRAW; // prevent another CopyBody PutClientInServer(); @@ -1349,14 +1352,14 @@ void player_powerups () // add a way to see what the items were BEFORE all of these checks for the mutator hook int items_prev = self.items; - if((self.items & IT_USING_JETPACK) && !self.deadflag && !gameover) + if((self.items & IT_USING_JETPACK) && !IS_DEAD(self) && !gameover) self.modelflags |= MF_ROCKET; else self.modelflags &= ~MF_ROCKET; self.effects &= ~(EF_RED | EF_BLUE | EF_ADDITIVE | EF_FULLBRIGHT | EF_FLAME | EF_NODEPTHTEST); - if((self.alpha < 0 || self.deadflag) && !self.vehicle) // don't apply the flags if the player is gibbed + if((self.alpha < 0 || IS_DEAD(self)) && !self.vehicle) // don't apply the flags if the player is gibbed return; Fire_ApplyDamage(self); @@ -1523,7 +1526,7 @@ void player_regen () regen_health_stable = autocvar_g_balance_health_regenstable; regen_health_rotstable = autocvar_g_balance_health_rotstable; if(!MUTATOR_CALLHOOK(PlayerRegen)) - if(!self.frozen) + if(!STAT(FROZEN, self)) { float mina, maxa, limith, limita; maxa = autocvar_g_balance_armor_rotstable; @@ -1552,7 +1555,7 @@ void player_regen () if(self.vehicle) vehicles_exit(VHEF_RELEASE); if(self.event_damage) - self.event_damage(self, self, 1, DEATH_ROT.m_id, self.origin, '0 0 0'); + self.event_damage(self, self, self, 1, DEATH_ROT.m_id, self.origin, '0 0 0'); } if (!(self.items & IT_UNLIMITED_WEAPON_AMMO)) @@ -1640,7 +1643,7 @@ void SpectateCopy(entity this, entity spectatee) self.dmg_inflictor = spectatee.dmg_inflictor; self.v_angle = spectatee.v_angle; self.angles = spectatee.v_angle; - self.frozen = spectatee.frozen; + STAT(FROZEN, self) = STAT(FROZEN, spectatee); self.revive_progress = spectatee.revive_progress; if(!self.BUTTON_USE) self.fixangle = true; @@ -1733,12 +1736,12 @@ bool Spectate(entity pl) bool SpectateNext() {SELFPARAM(); - other = find(self.enemy, classname, "player"); + other = find(self.enemy, classname, STR_PLAYER); if (MUTATOR_CALLHOOK(SpectateNext, self, other)) other = spec_player; else if (!other) - other = find(other, classname, "player"); + other = find(other, classname, STR_PLAYER); if(other) { SetSpectatee(self, other); } @@ -1748,7 +1751,7 @@ bool SpectateNext() bool SpectatePrev() {SELFPARAM(); // NOTE: chain order is from the highest to the lower entnum (unlike find) - other = findchain(classname, "player"); + other = findchain(classname, STR_PLAYER); if (!other) // no player return false; @@ -1791,7 +1794,7 @@ Update a respawn countdown display. void ShowRespawnCountdown() {SELFPARAM(); float number; - if(self.deadflag == DEAD_NO) // just respawned? + if(!IS_DEAD(self)) // just respawned? return; else { @@ -1827,7 +1830,7 @@ void LeaveSpectatorMode() PutClientInServer(); - if(IS_PLAYER(self)) { Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_JOIN_PLAY, self.netname); } + if(IS_PLAYER(self)) { Send_Notification(NOTIF_ALL, world, MSG_INFO, ((teamplay && this.team != -1) ? APP_TEAM_ENT_4(this, INFO_JOIN_PLAY_TEAM_) : INFO_JOIN_PLAY), self.netname); } } else stuffcmd(self, "menu_showteamselect\n"); @@ -2049,8 +2052,8 @@ void PlayerUseKey() } else if(autocvar_g_vehicles_enter) { - if(!self.frozen) - if(self.deadflag == DEAD_NO) + if(!STAT(FROZEN, self)) + if(!IS_DEAD(self)) if(!gameover) { entity head, closest_target = world; @@ -2059,7 +2062,7 @@ void PlayerUseKey() while(head) // find the closest acceptable target to enter { if(head.vehicle_flags & VHF_ISVEHICLE) - if(head.deadflag == DEAD_NO) + if(!IS_DEAD(head)) if(!head.owner || ((head.vehicle_flags & VHF_MULTISLOT) && SAME_TEAM(head.owner, self))) if(head.takedamage != DAMAGE_NO) { @@ -2177,7 +2180,7 @@ void PlayerPreThink () self.max_armorvalue = 0; } - if(self.frozen == 2) + if(STAT(FROZEN, self) == 2) { self.revive_progress = bound(0, self.revive_progress + frametime * self.revive_speed, 1); self.health = max(1, self.revive_progress * start_health); @@ -2186,7 +2189,7 @@ void PlayerPreThink () if(self.revive_progress >= 1) Unfreeze(self); } - else if(self.frozen == 3) + else if(STAT(FROZEN, self) == 3) { self.revive_progress = bound(0, self.revive_progress - frametime * self.revive_speed, 1); self.health = max(0, autocvar_g_nades_ice_health + (start_health-autocvar_g_nades_ice_health) * self.revive_progress ); @@ -2195,7 +2198,7 @@ void PlayerPreThink () { if(self.vehicle) vehicles_exit(VHEF_RELEASE); - self.event_damage(self, self.frozen_by, 1, DEATH_NADE_ICE_FREEZE.m_id, self.origin, '0 0 0'); + self.event_damage(self, self, self.frozen_by, 1, DEATH_NADE_ICE_FREEZE.m_id, self.origin, '0 0 0'); } else if ( self.revive_progress <= 0 ) Unfreeze(self); @@ -2207,14 +2210,14 @@ void PlayerPreThink () if(time > self.last_vehiclecheck) if(IS_PLAYER(self)) if(!gameover) - if(!self.frozen) + if(!STAT(FROZEN, self)) if(!self.vehicle) - if(self.deadflag == DEAD_NO) + if(!IS_DEAD(self)) { entity veh; for(veh = world; (veh = findflags(veh, vehicle_flags, VHF_ISVEHICLE)); ) if(vlen(veh.origin - self.origin) < autocvar_g_vehicles_enter_radius) - if(veh.deadflag == DEAD_NO) + if(!IS_DEAD(veh)) if(veh.takedamage != DAMAGE_NO) if((veh.vehicle_flags & VHF_MULTISLOT) && SAME_TEAM(veh.owner, self)) Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_VEHICLE_ENTER_GUNNER); @@ -2261,7 +2264,7 @@ void PlayerPreThink () player_powerups(); } - if (self.deadflag != DEAD_NO) + if (IS_DEAD(self)) { if(self.personal && g_race_qualifying) { @@ -2333,7 +2336,7 @@ void PlayerPreThink () do_crouch = 0; if(self.vehicle) do_crouch = 0; - if(self.frozen) + if(STAT(FROZEN, self)) do_crouch = 0; // WEAPONTODO: THIS SHIT NEEDS TO GO EVENTUALLY @@ -2397,7 +2400,7 @@ void PlayerPreThink () secrets_setstatus(); // monsters status - monsters_setstatus(); + monsters_setstatus(self); self.dmg_team = max(0, self.dmg_team - autocvar_g_teamdamage_resetspeed * frametime); @@ -2465,7 +2468,7 @@ void PlayerPreThink () void DrownPlayer(entity this) { - if(this.deadflag != DEAD_NO) + if(IS_DEAD(this)) return; if (this.waterlevel != WATERLEVEL_SUBMERGED)