From: Mario Date: Fri, 10 Jun 2016 09:12:19 +0000 (+1000) Subject: Cleanse PlayerUseKey and PlayerPreThink X-Git-Tag: xonotic-v0.8.2~861 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=8acaf6b6479901564ebc1dc4e825c6343f746a29;p=xonotic%2Fxonotic-data.pk3dir.git Cleanse PlayerUseKey and PlayerPreThink --- diff --git a/qcsrc/common/gamemodes/gamemode/nexball/nexball.qc b/qcsrc/common/gamemodes/gamemode/nexball/nexball.qc index e624428ec..d17ff7f16 100644 --- a/qcsrc/common/gamemodes/gamemode/nexball/nexball.qc +++ b/qcsrc/common/gamemodes/gamemode/nexball/nexball.qc @@ -944,45 +944,47 @@ MUTATOR_HOOKFUNCTION(nb, MakePlayerObserver) } MUTATOR_HOOKFUNCTION(nb, PlayerPreThink) -{SELFPARAM(); - makevectors(self.v_angle); +{ + entity player = M_ARGV(0, entity); + + makevectors(player.v_angle); if(nexball_mode & NBM_BASKETBALL) { - if(self.ballcarried) + if(player.ballcarried) { // 'view ball' - self.ballcarried.velocity = self.velocity; - setcefc(self.ballcarried, ball_customize); + player.ballcarried.velocity = player.velocity; + setcefc(player.ballcarried, ball_customize); - vector org = self.origin + self.view_ofs + + vector org = player.origin + player.view_ofs + v_forward * autocvar_g_nexball_viewmodel_offset.x + v_right * autocvar_g_nexball_viewmodel_offset.y + v_up * autocvar_g_nexball_viewmodel_offset.z; - setorigin(self.ballcarried, org); + setorigin(player.ballcarried, org); // 'safe passing' if(autocvar_g_nexball_safepass_maxdist) { - if(self.ballcarried.wait < time && self.ballcarried.enemy) + if(player.ballcarried.wait < time && player.ballcarried.enemy) { - //centerprint(self, sprintf("Lost lock on %s", self.ballcarried.enemy.netname)); - self.ballcarried.enemy = world; + //centerprint(player, sprintf("Lost lock on %s", player.ballcarried.enemy.netname)); + player.ballcarried.enemy = world; } - //tracebox(self.origin + self.view_ofs, '-2 -2 -2', '2 2 2', self.origin + self.view_ofs + v_forward * autocvar_g_nexball_safepass_maxdist); - crosshair_trace(self); + //tracebox(player.origin + player.view_ofs, '-2 -2 -2', '2 2 2', player.origin + player.view_ofs + v_forward * autocvar_g_nexball_safepass_maxdist); + crosshair_trace(player); if( trace_ent && IS_CLIENT(trace_ent) && !IS_DEAD(trace_ent) && - trace_ent.team == self.team && - vlen(trace_ent.origin - self.origin) <= autocvar_g_nexball_safepass_maxdist ) + trace_ent.team == player.team && + vdist(trace_ent.origin - player.origin, <=, autocvar_g_nexball_safepass_maxdist) ) { - //if(self.ballcarried.enemy != trace_ent) - // centerprint(self, sprintf("Locked to %s", trace_ent.netname)); - self.ballcarried.enemy = trace_ent; - self.ballcarried.wait = time + autocvar_g_nexball_safepass_holdtime; + //if(player.ballcarried.enemy != trace_ent) + // centerprint(player, sprintf("Locked to %s", trace_ent.netname)); + player.ballcarried.enemy = trace_ent; + player.ballcarried.wait = time + autocvar_g_nexball_safepass_holdtime; } @@ -991,23 +993,21 @@ MUTATOR_HOOKFUNCTION(nb, PlayerPreThink) else { .entity weaponentity = weaponentities[0]; // TODO - if(self.(weaponentity).weapons) + if(player.(weaponentity).weapons) { - self.weapons = self.(weaponentity).weapons; + player.weapons = player.(weaponentity).weapons; Weapon w = WEP_NEXBALL; - w.wr_resetplayer(w, self); - PS(self).m_switchweapon = self.(weaponentity).m_switchweapon; - W_SwitchWeapon(self, PS(self).m_switchweapon); + WITHSELF(player, w.wr_resetplayer(w, player)); + PS(player).m_switchweapon = player.(weaponentity).m_switchweapon; + W_SwitchWeapon(player, PS(player).m_switchweapon); - self.(weaponentity).weapons = '0 0 0'; + player.(weaponentity).weapons = '0 0 0'; } } } - nexball_setstatus(self); - - return false; + nexball_setstatus(player); } MUTATOR_HOOKFUNCTION(nb, SpectateCopy) diff --git a/qcsrc/common/gamemodes/gamemode/onslaught/onslaught.qc b/qcsrc/common/gamemodes/gamemode/onslaught/onslaught.qc index 96c3ac719..005bd0921 100644 --- a/qcsrc/common/gamemodes/gamemode/onslaught/onslaught.qc +++ b/qcsrc/common/gamemodes/gamemode/onslaught/onslaught.qc @@ -2104,20 +2104,20 @@ MUTATOR_HOOKFUNCTION(ons, SV_ParseClientCommand) } MUTATOR_HOOKFUNCTION(ons, PlayerUseKey) -{SELFPARAM(); +{ if(MUTATOR_RETURNVALUE || gameover) { return false; } - if((time > self.teleport_antispam) && (!IS_DEAD(self)) && !self.vehicle) + entity player = M_ARGV(0, entity); + + if((time > player.teleport_antispam) && (!IS_DEAD(player)) && !player.vehicle) { - entity source_point = ons_Nearest_ControlPoint(self, self.origin, autocvar_g_onslaught_teleport_radius); + entity source_point = ons_Nearest_ControlPoint(player, player.origin, autocvar_g_onslaught_teleport_radius); if ( source_point ) { - stuffcmd(self, "qc_cmd_cl hud clickradar\n"); + stuffcmd(player, "qc_cmd_cl hud clickradar\n"); return true; } } - - return false; } MUTATOR_HOOKFUNCTION(ons, PlayHitsound) diff --git a/qcsrc/common/mutators/mutator/bloodloss/bloodloss.qc b/qcsrc/common/mutators/mutator/bloodloss/bloodloss.qc index 4cbdfcfb7..f4678e1db 100644 --- a/qcsrc/common/mutators/mutator/bloodloss/bloodloss.qc +++ b/qcsrc/common/mutators/mutator/bloodloss/bloodloss.qc @@ -4,23 +4,23 @@ REGISTER_MUTATOR(bloodloss, cvar("g_bloodloss")); .float bloodloss_timer; MUTATOR_HOOKFUNCTION(bloodloss, PlayerPreThink) -{SELFPARAM(); - if(IS_PLAYER(self)) - if(self.health <= autocvar_g_bloodloss && !IS_DEAD(self)) +{ + entity player = M_ARGV(0, entity); + + if(IS_PLAYER(player)) + if(player.health <= autocvar_g_bloodloss && !IS_DEAD(player)) { - PHYS_INPUT_BUTTON_CROUCH(self) = true; + PHYS_INPUT_BUTTON_CROUCH(player) = true; - if(time >= self.bloodloss_timer) + if(time >= player.bloodloss_timer) { - if(self.vehicle) + if(player.vehicle) vehicles_exit(VHEF_RELEASE); - if(self.event_damage) - self.event_damage(self, self, self, 1, DEATH_ROT.m_id, self.origin, '0 0 0'); - self.bloodloss_timer = time + 0.5 + random() * 0.5; + if(player.event_damage) + player.event_damage(player, player, player, 1, DEATH_ROT.m_id, player.origin, '0 0 0'); + player.bloodloss_timer = time + 0.5 + random() * 0.5; } } - - return false; } MUTATOR_HOOKFUNCTION(bloodloss, PlayerJump) diff --git a/qcsrc/common/mutators/mutator/buffs/buffs.qc b/qcsrc/common/mutators/mutator/buffs/buffs.qc index 78ced032d..776d36b3f 100644 --- a/qcsrc/common/mutators/mutator/buffs/buffs.qc +++ b/qcsrc/common/mutators/mutator/buffs/buffs.qc @@ -701,19 +701,21 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerDies) } MUTATOR_HOOKFUNCTION(buffs, PlayerUseKey, CBC_ORDER_FIRST) -{SELFPARAM(); - if(MUTATOR_RETURNVALUE || gameover) { return false; } - if(self.buffs) +{ + if(MUTATOR_RETURNVALUE || gameover) { return; } + + entity player = M_ARGV(0, entity); + + if(player.buffs) { - int buffid = buff_FirstFromFlags(self.buffs).m_id; - Send_Notification(NOTIF_ONE, self, MSG_MULTI, ITEM_BUFF_DROP, buffid); - Send_Notification(NOTIF_ALL_EXCEPT, self, MSG_INFO, INFO_ITEM_BUFF_LOST, self.netname, buffid); + int buffid = buff_FirstFromFlags(player.buffs).m_id; + Send_Notification(NOTIF_ONE, player, MSG_MULTI, ITEM_BUFF_DROP, buffid); + Send_Notification(NOTIF_ALL_EXCEPT, player, MSG_INFO, INFO_ITEM_BUFF_LOST, player.netname, buffid); - self.buffs = 0; - sound(self, CH_TRIGGER, SND_BUFF_LOST, VOL_BASE, ATTN_NORM); + player.buffs = 0; + sound(player, CH_TRIGGER, SND_BUFF_LOST, VOL_BASE, ATTN_NORM); return true; } - return false; } MUTATOR_HOOKFUNCTION(buffs, ForbidThrowCurrentWeapon) @@ -860,14 +862,16 @@ MUTATOR_HOOKFUNCTION(buffs, WeaponSpeedFactor) } MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) -{SELFPARAM(); - if(gameover || IS_DEAD(self)) { return false; } +{ + entity player = M_ARGV(0, entity); - if(time < self.buff_disability_time) - if(time >= self.buff_disability_effect_time) + if(gameover || IS_DEAD(player)) { return false; } + + if(time < player.buff_disability_time) + if(time >= player.buff_disability_effect_time) { - Send_Effect(EFFECT_SMOKING, self.origin + ((self.mins + self.maxs) * 0.5), '0 0 0', 1); - self.buff_disability_effect_time = time + 0.5; + Send_Effect(EFFECT_SMOKING, player.origin + ((player.mins + player.maxs) * 0.5), '0 0 0', 1); + player.buff_disability_effect_time = time + 0.5; } // handle buff lost status @@ -875,28 +879,28 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) // 2: notify carrier as well int buff_lost = 0; - if(self.buff_time) - if(time >= self.buff_time) + if(player.buff_time) + if(time >= player.buff_time) buff_lost = 2; - if(STAT(FROZEN, self)) { buff_lost = 1; } + if(STAT(FROZEN, player)) { buff_lost = 1; } if(buff_lost) { - if(self.buffs) + if(player.buffs) { - int buffid = buff_FirstFromFlags(self.buffs).m_id; - Send_Notification(NOTIF_ALL_EXCEPT, self, MSG_INFO, INFO_ITEM_BUFF_LOST, self.netname, buffid); + int buffid = buff_FirstFromFlags(player.buffs).m_id; + Send_Notification(NOTIF_ALL_EXCEPT, player, MSG_INFO, INFO_ITEM_BUFF_LOST, player.netname, buffid); if(buff_lost >= 2) { - Send_Notification(NOTIF_ONE, self, MSG_MULTI, ITEM_BUFF_DROP, buffid); // TODO: special timeout message? - sound(self, CH_TRIGGER, SND_BUFF_LOST, VOL_BASE, ATTN_NORM); + Send_Notification(NOTIF_ONE, player, MSG_MULTI, ITEM_BUFF_DROP, buffid); // TODO: special timeout message? + sound(player, CH_TRIGGER, SND_BUFF_LOST, VOL_BASE, ATTN_NORM); } - self.buffs = 0; + player.buffs = 0; } } - if(self.buffs & BUFF_MAGNET.m_itemid) + if(player.buffs & BUFF_MAGNET.m_itemid) { vector pickup_size; FOREACH_ENTITY_FLAGS(flags, FL_ITEM, @@ -906,12 +910,12 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) else pickup_size = '1 1 1' * autocvar_g_buffs_magnet_range_item; - if(boxesoverlap(self.absmin - pickup_size, self.absmax + pickup_size, it.absmin, it.absmax)) + if(boxesoverlap(player.absmin - pickup_size, player.absmax + pickup_size, it.absmin, it.absmax)) { if(gettouch(it)) { entity oldother = other; - other = self; + other = player; WITHSELF(it, gettouch(it)(it)); other = oldother; } @@ -919,96 +923,95 @@ MUTATOR_HOOKFUNCTION(buffs, PlayerPreThink) }); } - if(self.buffs & BUFF_AMMO.m_itemid) - if(self.clip_size) - self.clip_load = self.(weapon_load[PS(self).m_switchweapon.m_id]) = self.clip_size; + if(player.buffs & BUFF_AMMO.m_itemid) + if(player.clip_size) + player.clip_load = player.(weapon_load[PS(player).m_switchweapon.m_id]) = player.clip_size; - if((self.buffs & BUFF_INVISIBLE.m_itemid) && (self.oldbuffs & BUFF_INVISIBLE.m_itemid)) - if(self.alpha != autocvar_g_buffs_invisible_alpha) - self.alpha = autocvar_g_buffs_invisible_alpha; // powerups reset alpha, so we must enforce this (TODO) + if((player.buffs & BUFF_INVISIBLE.m_itemid) && (player.oldbuffs & BUFF_INVISIBLE.m_itemid)) + if(player.alpha != autocvar_g_buffs_invisible_alpha) + player.alpha = autocvar_g_buffs_invisible_alpha; // powerups reset alpha, so we must enforce this (TODO) - if(self.buffs & BUFF_MEDIC.m_itemid) - if(time >= self.buff_medic_healtime) + if(player.buffs & BUFF_MEDIC.m_itemid) + if(time >= player.buff_medic_healtime) { - buff_Medic_Heal(self); - self.buff_medic_healtime = time + autocvar_g_buffs_medic_heal_delay; + buff_Medic_Heal(player); + player.buff_medic_healtime = time + autocvar_g_buffs_medic_heal_delay; } -#define BUFF_ONADD(b) if ( (self.buffs & (b).m_itemid) && !(self.oldbuffs & (b).m_itemid)) -#define BUFF_ONREM(b) if (!(self.buffs & (b).m_itemid) && (self.oldbuffs & (b).m_itemid)) +#define BUFF_ONADD(b) if ( (player.buffs & (b).m_itemid) && !(player.oldbuffs & (b).m_itemid)) +#define BUFF_ONREM(b) if (!(player.buffs & (b).m_itemid) && (player.oldbuffs & (b).m_itemid)) - if(self.buffs != self.oldbuffs) + if(player.buffs != player.oldbuffs) { - entity buff = buff_FirstFromFlags(self.buffs); + entity buff = buff_FirstFromFlags(player.buffs); float bufftime = buff != BUFF_Null ? buff.m_time(buff) : 0; - self.buff_time = (bufftime) ? time + bufftime : 0; + player.buff_time = (bufftime) ? time + bufftime : 0; BUFF_ONADD(BUFF_AMMO) { - self.buff_ammo_prev_infitems = (self.items & IT_UNLIMITED_WEAPON_AMMO); - self.items |= IT_UNLIMITED_WEAPON_AMMO; + player.buff_ammo_prev_infitems = (player.items & IT_UNLIMITED_WEAPON_AMMO); + player.items |= IT_UNLIMITED_WEAPON_AMMO; - if(self.clip_load) - self.buff_ammo_prev_clipload = self.clip_load; - self.clip_load = self.(weapon_load[PS(self).m_switchweapon.m_id]) = self.clip_size; + if(player.clip_load) + player.buff_ammo_prev_clipload = player.clip_load; + player.clip_load = player.(weapon_load[PS(player).m_switchweapon.m_id]) = player.clip_size; } BUFF_ONREM(BUFF_AMMO) { - if(self.buff_ammo_prev_infitems) - self.items |= IT_UNLIMITED_WEAPON_AMMO; + if(player.buff_ammo_prev_infitems) + player.items |= IT_UNLIMITED_WEAPON_AMMO; else - self.items &= ~IT_UNLIMITED_WEAPON_AMMO; + player.items &= ~IT_UNLIMITED_WEAPON_AMMO; - if(self.buff_ammo_prev_clipload) - self.clip_load = self.buff_ammo_prev_clipload; + if(player.buff_ammo_prev_clipload) + player.clip_load = player.buff_ammo_prev_clipload; } BUFF_ONADD(BUFF_INVISIBLE) { - if(time < self.strength_finished && g_instagib) - self.alpha = autocvar_g_instagib_invis_alpha; + if(time < player.strength_finished && g_instagib) + player.alpha = autocvar_g_instagib_invis_alpha; else - self.alpha = self.buff_invisible_prev_alpha; - self.alpha = autocvar_g_buffs_invisible_alpha; + player.alpha = player.buff_invisible_prev_alpha; + player.alpha = autocvar_g_buffs_invisible_alpha; } BUFF_ONREM(BUFF_INVISIBLE) - self.alpha = self.buff_invisible_prev_alpha; + player.alpha = player.buff_invisible_prev_alpha; - self.oldbuffs = self.buffs; - if(self.buffs) + player.oldbuffs = player.buffs; + if(player.buffs) { - if(!self.buff_model) - buffs_BuffModel_Spawn(self); + if(!player.buff_model) + buffs_BuffModel_Spawn(player); - self.buff_model.color = buff.m_color; - self.buff_model.glowmod = buff_GlowColor(self.buff_model); - self.buff_model.skin = buff.m_skin; + player.buff_model.color = buff.m_color; + player.buff_model.glowmod = buff_GlowColor(player.buff_model); + player.buff_model.skin = buff.m_skin; - self.effects |= EF_NOSHADOW; + player.effects |= EF_NOSHADOW; } else { - remove(self.buff_model); - self.buff_model = world; + remove(player.buff_model); + player.buff_model = world; - self.effects &= ~(EF_NOSHADOW); + player.effects &= ~(EF_NOSHADOW); } } - if(self.buff_model) + if(player.buff_model) { - self.buff_model.effects = self.effects; - self.buff_model.effects |= EF_LOWPRECISION; - self.buff_model.effects = self.buff_model.effects & EFMASK_CHEAP; // eat performance + player.buff_model.effects = player.effects; + player.buff_model.effects |= EF_LOWPRECISION; + player.buff_model.effects = player.buff_model.effects & EFMASK_CHEAP; // eat performance - self.buff_model.alpha = self.alpha; + player.buff_model.alpha = player.alpha; } #undef BUFF_ONADD #undef BUFF_ONREM - return false; } MUTATOR_HOOKFUNCTION(buffs, SpectateCopy) diff --git a/qcsrc/common/mutators/mutator/campcheck/campcheck.qc b/qcsrc/common/mutators/mutator/campcheck/campcheck.qc index daf4e107c..38a1ab835 100644 --- a/qcsrc/common/mutators/mutator/campcheck/campcheck.qc +++ b/qcsrc/common/mutators/mutator/campcheck/campcheck.qc @@ -33,49 +33,50 @@ MUTATOR_HOOKFUNCTION(campcheck, PlayerDamage_Calculate) } MUTATOR_HOOKFUNCTION(campcheck, PlayerPreThink) -{SELFPARAM(); +{ + entity player = M_ARGV(0, entity); + if(!gameover) if(!warmup_stage) // don't consider it camping during warmup? if(time >= game_starttime) - if(IS_PLAYER(self)) - if(IS_REAL_CLIENT(self)) // bots may camp, but that's no reason to constantly kill them - if(!IS_DEAD(self)) - if(!STAT(FROZEN, self)) - if(!PHYS_INPUT_BUTTON_CHAT(self)) + if(IS_PLAYER(player)) + if(IS_REAL_CLIENT(player)) // bots may camp, but that's no reason to constantly kill them + if(!IS_DEAD(player)) + if(!STAT(FROZEN, player)) + if(!PHYS_INPUT_BUTTON_CHAT(player)) if(autocvar_g_campcheck_interval) { vector dist; // calculate player movement (in 2 dimensions only, so jumping on one spot doesn't count as movement) - dist = self.prevorigin - self.origin; + dist = player.prevorigin - player.origin; dist.z = 0; - self.campcheck_traveled_distance += fabs(vlen(dist)); + player.campcheck_traveled_distance += fabs(vlen(dist)); if((autocvar_g_campaign && !campaign_bots_may_start) || (time < game_starttime) || (round_handler_IsActive() && !round_handler_IsRoundStarted())) { - self.campcheck_nextcheck = time + autocvar_g_campcheck_interval * 2; - self.campcheck_traveled_distance = 0; + player.campcheck_nextcheck = time + autocvar_g_campcheck_interval * 2; + player.campcheck_traveled_distance = 0; } - if(time > self.campcheck_nextcheck) + if(time > player.campcheck_nextcheck) { - if(self.campcheck_traveled_distance < autocvar_g_campcheck_distance) + if(player.campcheck_traveled_distance < autocvar_g_campcheck_distance) { - Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_CAMPCHECK); - if(self.vehicle) - Damage(self.vehicle, world, world, autocvar_g_campcheck_damage * 2, DEATH_CAMP.m_id, self.vehicle.origin, '0 0 0'); + Send_Notification(NOTIF_ONE, player, MSG_CENTER, CENTER_CAMPCHECK); + if(player.vehicle) + Damage(player.vehicle, world, world, autocvar_g_campcheck_damage * 2, DEATH_CAMP.m_id, player.vehicle.origin, '0 0 0'); else - Damage(self, world, world, bound(0, autocvar_g_campcheck_damage, self.health + self.armorvalue * autocvar_g_balance_armor_blockpercent + 5), DEATH_CAMP.m_id, self.origin, '0 0 0'); + Damage(player, world, world, bound(0, autocvar_g_campcheck_damage, player.health + player.armorvalue * autocvar_g_balance_armor_blockpercent + 5), DEATH_CAMP.m_id, player.origin, '0 0 0'); } - self.campcheck_nextcheck = time + autocvar_g_campcheck_interval; - self.campcheck_traveled_distance = 0; + player.campcheck_nextcheck = time + autocvar_g_campcheck_interval; + player.campcheck_traveled_distance = 0; } - return false; + return; } - self.campcheck_nextcheck = time + autocvar_g_campcheck_interval; // one of the above checks failed, so keep the timer up to date - return false; + player.campcheck_nextcheck = time + autocvar_g_campcheck_interval; // one of the above checks failed, so keep the timer up to date } MUTATOR_HOOKFUNCTION(campcheck, PlayerSpawn) diff --git a/qcsrc/common/mutators/mutator/instagib/instagib.qc b/qcsrc/common/mutators/mutator/instagib/instagib.qc index ef1856d68..0be98ba06 100644 --- a/qcsrc/common/mutators/mutator/instagib/instagib.qc +++ b/qcsrc/common/mutators/mutator/instagib/instagib.qc @@ -188,9 +188,10 @@ MUTATOR_HOOKFUNCTION(mutator_instagib, PlayerSpawn) } MUTATOR_HOOKFUNCTION(mutator_instagib, PlayerPreThink) -{SELFPARAM(); - instagib_ammocheck(self); - return false; +{ + entity player = M_ARGV(0, entity); + + instagib_ammocheck(player); } MUTATOR_HOOKFUNCTION(mutator_instagib, PlayerRegen) diff --git a/qcsrc/common/mutators/mutator/nades/nades.qc b/qcsrc/common/mutators/mutator/nades/nades.qc index 45c156071..3e5c495d5 100644 --- a/qcsrc/common/mutators/mutator/nades/nades.qc +++ b/qcsrc/common/mutators/mutator/nades/nades.qc @@ -1149,21 +1149,23 @@ MUTATOR_HOOKFUNCTION(nades, ForbidThrowCurrentWeapon, CBC_ORDER_LAST) } MUTATOR_HOOKFUNCTION(nades, PlayerPreThink) -{SELFPARAM(); - if (!IS_PLAYER(self)) { return false; } +{ + entity player = M_ARGV(0, entity); - if (self.nade && (self.offhand != OFFHAND_NADE || (self.weapons & WEPSET(HOOK)))) OFFHAND_NADE.offhand_think(OFFHAND_NADE, self, self.nade_altbutton); + if (!IS_PLAYER(player)) { return false; } - if(IS_PLAYER(self)) + if (player.nade && (player.offhand != OFFHAND_NADE || (player.weapons & WEPSET(HOOK)))) OFFHAND_NADE.offhand_think(OFFHAND_NADE, player, player.nade_altbutton); + + if(IS_PLAYER(player)) { if ( autocvar_g_nades_bonus && autocvar_g_nades ) { entity key; float key_count = 0; - FOR_EACH_KH_KEY(key) if(key.owner == self) { ++key_count; } + FOR_EACH_KH_KEY(key) if(key.owner == player) { ++key_count; } float time_score; - if(self.flagcarried || self.ballcarried) // this player is important + if(player.flagcarried || player.ballcarried) // this player is important time_score = autocvar_g_nades_bonus_score_time_flagcarrier; else time_score = autocvar_g_nades_bonus_score_time; @@ -1173,69 +1175,67 @@ MUTATOR_HOOKFUNCTION(nades, PlayerPreThink) if(autocvar_g_nades_bonus_client_select) { - self.nade_type = self.cvar_cl_nade_type; - self.pokenade_type = self.cvar_cl_pokenade_type; + player.nade_type = player.cvar_cl_nade_type; + player.pokenade_type = player.cvar_cl_pokenade_type; } else { - self.nade_type = autocvar_g_nades_bonus_type; - self.pokenade_type = autocvar_g_nades_pokenade_monster_type; + player.nade_type = autocvar_g_nades_bonus_type; + player.pokenade_type = autocvar_g_nades_pokenade_monster_type; } - self.nade_type = bound(1, self.nade_type, Nades_COUNT); + player.nade_type = bound(1, player.nade_type, Nades_COUNT); - if(self.bonus_nade_score >= 0 && autocvar_g_nades_bonus_score_max) - nades_GiveBonus(self, time_score / autocvar_g_nades_bonus_score_max); + if(player.bonus_nade_score >= 0 && autocvar_g_nades_bonus_score_max) + nades_GiveBonus(player, time_score / autocvar_g_nades_bonus_score_max); } else { - self.bonus_nades = self.bonus_nade_score = 0; + player.bonus_nades = player.bonus_nade_score = 0; } } float n = 0; entity o = world; - if(self.freezetag_frozen_timeout > 0 && time >= self.freezetag_frozen_timeout) + if(player.freezetag_frozen_timeout > 0 && time >= player.freezetag_frozen_timeout) n = -1; else { vector revive_extra_size = '1 1 1' * autocvar_g_freezetag_revive_extra_size; n = 0; - FOREACH_CLIENT(IS_PLAYER(it) && it != self, LAMBDA( + FOREACH_CLIENT(IS_PLAYER(it) && it != player, LAMBDA( if(!IS_DEAD(it)) if(STAT(FROZEN, it) == 0) - if(SAME_TEAM(it, self)) - if(boxesoverlap(self.absmin - revive_extra_size, self.absmax + revive_extra_size, it.absmin, it.absmax)) + if(SAME_TEAM(it, player)) + if(boxesoverlap(player.absmin - revive_extra_size, player.absmax + revive_extra_size, it.absmin, it.absmax)) { if(!o) o = it; - if(STAT(FROZEN, self) == 1) + if(STAT(FROZEN, player) == 1) it.reviving = true; ++n; } )); } - if(n && STAT(FROZEN, self) == 3) // OK, there is at least one teammate reviving us + if(n && STAT(FROZEN, player) == 3) // OK, there is at least one teammate reviving us { - self.revive_progress = bound(0, self.revive_progress + frametime * max(1/60, autocvar_g_freezetag_revive_speed), 1); - self.health = max(1, self.revive_progress * start_health); + player.revive_progress = bound(0, player.revive_progress + frametime * max(1/60, autocvar_g_freezetag_revive_speed), 1); + player.health = max(1, player.revive_progress * start_health); - if(self.revive_progress >= 1) + if(player.revive_progress >= 1) { - Unfreeze(self); + Unfreeze(player); - Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_FREEZETAG_REVIVED, o.netname); - Send_Notification(NOTIF_ONE, o, MSG_CENTER, CENTER_FREEZETAG_REVIVE, self.netname); + Send_Notification(NOTIF_ONE, player, MSG_CENTER, CENTER_FREEZETAG_REVIVED, o.netname); + Send_Notification(NOTIF_ONE, o, MSG_CENTER, CENTER_FREEZETAG_REVIVE, player.netname); } FOREACH_CLIENT(IS_PLAYER(it) && it.reviving, LAMBDA( - other.revive_progress = self.revive_progress; - other.reviving = false; + it.revive_progress = player.revive_progress; + it.reviving = false; )); } - - return false; } MUTATOR_HOOKFUNCTION(nades, PlayerSpawn) diff --git a/qcsrc/common/mutators/mutator/nix/nix.qc b/qcsrc/common/mutators/mutator/nix/nix.qc index 238e7fbac..19faf090f 100644 --- a/qcsrc/common/mutators/mutator/nix/nix.qc +++ b/qcsrc/common/mutators/mutator/nix/nix.qc @@ -265,12 +265,13 @@ MUTATOR_HOOKFUNCTION(nix, OnEntityPreSpawn) } MUTATOR_HOOKFUNCTION(nix, PlayerPreThink) -{SELFPARAM(); +{ + entity player = M_ARGV(0, entity); + if(!intermission_running) - if(!IS_DEAD(self)) - if(IS_PLAYER(self)) - NIX_GiveCurrentWeapon(this); - return false; + if(!IS_DEAD(player)) + if(IS_PLAYER(player)) + NIX_GiveCurrentWeapon(player); } MUTATOR_HOOKFUNCTION(nix, PlayerSpawn) diff --git a/qcsrc/common/mutators/mutator/overkill/overkill.qc b/qcsrc/common/mutators/mutator/overkill/overkill.qc index 04817f493..a9989be2f 100644 --- a/qcsrc/common/mutators/mutator/overkill/overkill.qc +++ b/qcsrc/common/mutators/mutator/overkill/overkill.qc @@ -198,37 +198,39 @@ MUTATOR_HOOKFUNCTION(ok, ForbidThrowCurrentWeapon) } MUTATOR_HOOKFUNCTION(ok, PlayerPreThink) -{SELFPARAM(); +{ if(intermission_running || gameover) return false; - if(IS_DEAD(self) || !IS_PLAYER(self) || STAT(FROZEN, self)) + entity player = M_ARGV(0, entity); + + if(IS_DEAD(player) || !IS_PLAYER(player) || STAT(FROZEN, player)) return false; - if(self.ok_lastwep) + if(player.ok_lastwep) { - Weapon newwep = Weapons_from(self.ok_lastwep); - if(self.ok_lastwep == WEP_HMG.m_id) + Weapon newwep = Weapons_from(player.ok_lastwep); + if(player.ok_lastwep == WEP_HMG.m_id) newwep = WEP_MACHINEGUN; - if(self.ok_lastwep == WEP_RPC.m_id) + if(player.ok_lastwep == WEP_RPC.m_id) newwep = WEP_VORTEX; - PS(self).m_switchweapon = newwep; - self.ok_lastwep = 0; + PS(player).m_switchweapon = newwep; + player.ok_lastwep = 0; } - ok_IncreaseCharge(self, PS(self).m_weapon.m_id); + ok_IncreaseCharge(player, PS(player).m_weapon.m_id); - if(PHYS_INPUT_BUTTON_ATCK2(self)) - if(!forbidWeaponUse(self) || self.weapon_blocked) // allow if weapon is blocked - if(time >= self.jump_interval) + if(PHYS_INPUT_BUTTON_ATCK2(player)) + if(!forbidWeaponUse(player) || player.weapon_blocked) // allow if weapon is blocked + if(time >= player.jump_interval) { - self.jump_interval = time + WEP_CVAR_PRI(blaster, refire) * W_WeaponRateFactor(this); - makevectors(self.v_angle); + player.jump_interval = time + WEP_CVAR_PRI(blaster, refire) * W_WeaponRateFactor(player); + makevectors(player.v_angle); - Weapon oldwep = PS(self).m_weapon; - PS(self).m_weapon = WEP_BLASTER; + Weapon oldwep = PS(player).m_weapon; + PS(player).m_weapon = WEP_BLASTER; W_Blaster_Attack( - self, + player, WEP_BLASTER.m_id | HITTYPE_SECONDARY, WEP_CVAR_SEC(vaporizer, shotangle), WEP_CVAR_SEC(vaporizer, damage), @@ -240,33 +242,31 @@ MUTATOR_HOOKFUNCTION(ok, PlayerPreThink) WEP_CVAR_SEC(vaporizer, delay), WEP_CVAR_SEC(vaporizer, lifetime) ); - PS(self).m_weapon = oldwep; + PS(player).m_weapon = oldwep; } - self.weapon_blocked = false; + player.weapon_blocked = false; - self.ok_ammo_charge = self.ammo_charge[PS(self).m_weapon.m_id]; + player.ok_ammo_charge = player.ammo_charge[PS(player).m_weapon.m_id]; - if(self.ok_use_ammocharge) - if(!ok_CheckWeaponCharge(self, PS(self).m_weapon.m_id)) + if(player.ok_use_ammocharge) + if(!ok_CheckWeaponCharge(player, PS(player).m_weapon.m_id)) { - if(autocvar_g_overkill_ammo_charge_notice && time > self.ok_notice_time && PHYS_INPUT_BUTTON_ATCK(self) && IS_REAL_CLIENT(self) && PS(self).m_weapon == PS(self).m_switchweapon) + if(autocvar_g_overkill_ammo_charge_notice && time > player.ok_notice_time && PHYS_INPUT_BUTTON_ATCK(player) && IS_REAL_CLIENT(player) && PS(player).m_weapon == PS(player).m_switchweapon) { - //Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_OVERKILL_CHARGE); - self.ok_notice_time = time + 2; - play2(self, SND(DRYFIRE)); + //Send_Notification(NOTIF_ONE, player, MSG_CENTER, CENTER_OVERKILL_CHARGE); + player.ok_notice_time = time + 2; + play2(player, SND(DRYFIRE)); } - Weapon wpn = PS(self).m_weapon; + Weapon wpn = PS(player).m_weapon; .entity weaponentity = weaponentities[0]; // TODO: unhardcode - if(self.(weaponentity).state != WS_CLEAR) - w_ready(wpn, self, weaponentity, PHYS_INPUT_BUTTON_ATCK(self) | (PHYS_INPUT_BUTTON_ATCK2(self) << 1)); + if(player.(weaponentity).state != WS_CLEAR) + w_ready(wpn, player, weaponentity, PHYS_INPUT_BUTTON_ATCK(player) | (PHYS_INPUT_BUTTON_ATCK2(player) << 1)); - self.weapon_blocked = true; + player.weapon_blocked = true; } - PHYS_INPUT_BUTTON_ATCK2(self) = false; - - return false; + PHYS_INPUT_BUTTON_ATCK2(player) = false; } MUTATOR_HOOKFUNCTION(ok, PlayerSpawn) diff --git a/qcsrc/common/mutators/mutator/touchexplode/touchexplode.qc b/qcsrc/common/mutators/mutator/touchexplode/touchexplode.qc index 56fc45736..1698b3a64 100644 --- a/qcsrc/common/mutators/mutator/touchexplode/touchexplode.qc +++ b/qcsrc/common/mutators/mutator/touchexplode/touchexplode.qc @@ -9,11 +9,11 @@ REGISTER_MUTATOR(touchexplode, cvar("g_touchexplode")); .float touchexplode_time; void PlayerTouchExplode(entity p1, entity p2) -{SELFPARAM(); +{ vector org = (p1.origin + p2.origin) * 0.5; org.z += (p1.mins.z + p2.mins.z) * 0.5; - sound(self, CH_TRIGGER, SND_GRENADE_IMPACT, VOL_BASE, ATTEN_NORM); + sound(p1, CH_TRIGGER, SND_GRENADE_IMPACT, VOL_BASE, ATTEN_NORM); Send_Effect(EFFECT_EXPLOSION_SMALL, org, '0 0 0', 1); entity e = spawn(); @@ -23,22 +23,24 @@ void PlayerTouchExplode(entity p1, entity p2) } MUTATOR_HOOKFUNCTION(touchexplode, PlayerPreThink) -{SELFPARAM(); - if(time > self.touchexplode_time) +{ + entity player = M_ARGV(0, entity); + + if(time > player.touchexplode_time) if(!gameover) - if(!STAT(FROZEN, self)) - if(IS_PLAYER(self)) - if(!IS_DEAD(self)) - if(!IS_INDEPENDENT_PLAYER(self)) - FOREACH_CLIENT(IS_PLAYER(it) && it != self, LAMBDA( + if(!STAT(FROZEN, player)) + if(IS_PLAYER(player)) + if(!IS_DEAD(player)) + if(!IS_INDEPENDENT_PLAYER(player)) + FOREACH_CLIENT(IS_PLAYER(it) && it != player, LAMBDA( if(time > it.touchexplode_time) if(!STAT(FROZEN, it)) if(!IS_DEAD(it)) if (!IS_INDEPENDENT_PLAYER(it)) - if(boxesoverlap(self.absmin, self.absmax, it.absmin, it.absmax)) + if(boxesoverlap(player.absmin, player.absmax, it.absmin, it.absmax)) { - PlayerTouchExplode(self, it); - self.touchexplode_time = it.touchexplode_time = time + 0.2; + PlayerTouchExplode(player, it); + player.touchexplode_time = it.touchexplode_time = time + 0.2; } )); diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 43298c026..ffda2a471 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -2052,7 +2052,7 @@ void PlayerUseKey() } // a use key was pressed; call handlers - MUTATOR_CALLHOOK(PlayerUseKey); + MUTATOR_CALLHOOK(PlayerUseKey, this); } @@ -2153,7 +2153,7 @@ void PlayerPreThink () Unfreeze(this); } - MUTATOR_CALLHOOK(PlayerPreThink); + MUTATOR_CALLHOOK(PlayerPreThink, this); if(autocvar_g_vehicles_enter) if(time > this.last_vehiclecheck) diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh index f7782504b..f5bc6c379 100644 --- a/qcsrc/server/mutators/events.qh +++ b/qcsrc/server/mutators/events.qh @@ -191,7 +191,10 @@ MUTATOR_HOOKABLE(Turret_CheckFire, EV_Turret_CheckFire); MUTATOR_HOOKABLE(OnEntityPreSpawn, EV_OnEntityPreSpawn); /** runs in the event loop for players; is called for ALL player entities, also bots, also the dead, or spectators */ -MUTATOR_HOOKABLE(PlayerPreThink, EV_NO_ARGS); +#define EV_PlayerPreThink(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /**/ +MUTATOR_HOOKABLE(PlayerPreThink, EV_PlayerPreThink); /** TODO change this into a general PlayerPostThink hook? */ MUTATOR_HOOKABLE(GetPressedKeys, EV_NO_ARGS); @@ -372,7 +375,10 @@ MUTATOR_HOOKABLE(PlayerRegen, EV_NO_ARGS); * if MUTATOR_RETURNVALUE is 1, don't do anything * return 1 if the use key actually did something */ -MUTATOR_HOOKABLE(PlayerUseKey, EV_NO_ARGS); + #define EV_PlayerUseKey(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /**/ +MUTATOR_HOOKABLE(PlayerUseKey, EV_PlayerUseKey); /** * called when a client command is parsed diff --git a/qcsrc/server/mutators/mutator/gamemode_ctf.qc b/qcsrc/server/mutators/mutator/gamemode_ctf.qc index 84065045c..7b687776b 100644 --- a/qcsrc/server/mutators/mutator/gamemode_ctf.qc +++ b/qcsrc/server/mutators/mutator/gamemode_ctf.qc @@ -1976,12 +1976,13 @@ void havocbot_role_ctf_setrole(entity bot, int role) // ============== MUTATOR_HOOKFUNCTION(ctf, PlayerPreThink) -{SELFPARAM(); - entity flag; +{ + entity player = M_ARGV(0, entity); + int t = 0, t2 = 0, t3 = 0; // initially clear items so they can be set as necessary later. - self.ctf_flagstatus &= ~(CTF_RED_FLAG_CARRYING | CTF_RED_FLAG_TAKEN | CTF_RED_FLAG_LOST + player.ctf_flagstatus &= ~(CTF_RED_FLAG_CARRYING | CTF_RED_FLAG_TAKEN | CTF_RED_FLAG_LOST | CTF_BLUE_FLAG_CARRYING | CTF_BLUE_FLAG_TAKEN | CTF_BLUE_FLAG_LOST | CTF_YELLOW_FLAG_CARRYING | CTF_YELLOW_FLAG_TAKEN | CTF_YELLOW_FLAG_LOST | CTF_PINK_FLAG_CARRYING | CTF_PINK_FLAG_TAKEN | CTF_PINK_FLAG_LOST @@ -1989,42 +1990,40 @@ MUTATOR_HOOKFUNCTION(ctf, PlayerPreThink) | CTF_FLAG_NEUTRAL | CTF_SHIELDED); // scan through all the flags and notify the client about them - for(flag = ctf_worldflaglist; flag; flag = flag.ctf_worldflagnext) + for(entity flag = ctf_worldflaglist; flag; flag = flag.ctf_worldflagnext) { if(flag.team == NUM_TEAM_1) { t = CTF_RED_FLAG_CARRYING; t2 = CTF_RED_FLAG_TAKEN; t3 = CTF_RED_FLAG_LOST; } if(flag.team == NUM_TEAM_2) { t = CTF_BLUE_FLAG_CARRYING; t2 = CTF_BLUE_FLAG_TAKEN; t3 = CTF_BLUE_FLAG_LOST; } if(flag.team == NUM_TEAM_3) { t = CTF_YELLOW_FLAG_CARRYING; t2 = CTF_YELLOW_FLAG_TAKEN; t3 = CTF_YELLOW_FLAG_LOST; } if(flag.team == NUM_TEAM_4) { t = CTF_PINK_FLAG_CARRYING; t2 = CTF_PINK_FLAG_TAKEN; t3 = CTF_PINK_FLAG_LOST; } - if(flag.team == 0) { t = CTF_NEUTRAL_FLAG_CARRYING; t2 = CTF_NEUTRAL_FLAG_TAKEN; t3 = CTF_NEUTRAL_FLAG_LOST; self.ctf_flagstatus |= CTF_FLAG_NEUTRAL; } + if(flag.team == 0) { t = CTF_NEUTRAL_FLAG_CARRYING; t2 = CTF_NEUTRAL_FLAG_TAKEN; t3 = CTF_NEUTRAL_FLAG_LOST; player.ctf_flagstatus |= CTF_FLAG_NEUTRAL; } switch(flag.ctf_status) { case FLAG_PASSING: case FLAG_CARRY: { - if((flag.owner == self) || (flag.pass_sender == self)) - self.ctf_flagstatus |= t; // carrying: self is currently carrying the flag + if((flag.owner == player) || (flag.pass_sender == player)) + player.ctf_flagstatus |= t; // carrying: player is currently carrying the flag else - self.ctf_flagstatus |= t2; // taken: someone else is carrying the flag + player.ctf_flagstatus |= t2; // taken: someone else is carrying the flag break; } case FLAG_DROPPED: { - self.ctf_flagstatus |= t3; // lost: the flag is dropped somewhere on the map + player.ctf_flagstatus |= t3; // lost: the flag is dropped somewhere on the map break; } } } // item for stopping players from capturing the flag too often - if(self.ctf_captureshielded) - self.ctf_flagstatus |= CTF_SHIELDED; + if(player.ctf_captureshielded) + player.ctf_flagstatus |= CTF_SHIELDED; // update the health of the flag carrier waypointsprite - if(self.wps_flagcarrier) - WaypointSprite_UpdateHealth(self.wps_flagcarrier, '1 0 0' * healtharmor_maxdamage(self.health, self.armorvalue, autocvar_g_balance_armor_blockpercent, DEATH_WEAPON.m_id)); - - return false; + if(player.wps_flagcarrier) + WaypointSprite_UpdateHealth(player.wps_flagcarrier, '1 0 0' * healtharmor_maxdamage(player.health, player.armorvalue, autocvar_g_balance_armor_blockpercent, DEATH_WEAPON.m_id)); } MUTATOR_HOOKFUNCTION(ctf, PlayerDamage_Calculate) // for changing damage and force values that are applied to players in g_damage.qc @@ -2128,10 +2127,10 @@ MUTATOR_HOOKFUNCTION(ctf, PortalTeleport) } MUTATOR_HOOKFUNCTION(ctf, PlayerUseKey) -{SELFPARAM(); +{ if(MUTATOR_RETURNVALUE || gameover) { return false; } - entity player = self; + entity player = M_ARGV(0, entity); if((time > player.throw_antispam) && !IS_DEAD(player) && !player.speedrunning && (!player.vehicle || autocvar_g_ctf_allow_vehicle_touch)) { @@ -2216,8 +2215,6 @@ MUTATOR_HOOKFUNCTION(ctf, PlayerUseKey) } } } - - return false; } MUTATOR_HOOKFUNCTION(ctf, HelpMePing) diff --git a/qcsrc/server/mutators/mutator/gamemode_freezetag.qc b/qcsrc/server/mutators/mutator/gamemode_freezetag.qc index 52e2fe3c6..d8d250911 100644 --- a/qcsrc/server/mutators/mutator/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/mutator/gamemode_freezetag.qc @@ -479,43 +479,45 @@ MUTATOR_HOOKFUNCTION(ft, GiveFragsForKill, CBC_ORDER_FIRST) } MUTATOR_HOOKFUNCTION(ft, PlayerPreThink, CBC_ORDER_FIRST) -{SELFPARAM(); +{ if(gameover) - return 1; + return true; + + entity player = M_ARGV(0, entity); - if(STAT(FROZEN, self) == 1) + if(STAT(FROZEN, player) == 1) { // keep health = 1 - self.pauseregen_finished = time + autocvar_g_balance_pause_health_regen; + player.pauseregen_finished = time + autocvar_g_balance_pause_health_regen; } if(round_handler_IsActive()) if(!round_handler_IsRoundStarted()) - return 1; + return true; int n; entity o; o = world; - //if(STAT(FROZEN, self)) - //if(self.freezetag_frozen_timeout > 0 && time < self.freezetag_frozen_timeout) - //self.iceblock.alpha = ICE_MIN_ALPHA + (ICE_MAX_ALPHA - ICE_MIN_ALPHA) * (self.freezetag_frozen_timeout - time) / (self.freezetag_frozen_timeout - self.freezetag_frozen_time); + //if(STAT(FROZEN, player)) + //if(player.freezetag_frozen_timeout > 0 && time < player.freezetag_frozen_timeout) + //player.iceblock.alpha = ICE_MIN_ALPHA + (ICE_MAX_ALPHA - ICE_MIN_ALPHA) * (player.freezetag_frozen_timeout - time) / (player.freezetag_frozen_timeout - player.freezetag_frozen_time); - if(self.freezetag_frozen_timeout > 0 && time >= self.freezetag_frozen_timeout) + if(player.freezetag_frozen_timeout > 0 && time >= player.freezetag_frozen_timeout) n = -1; else { vector revive_extra_size = '1 1 1' * autocvar_g_freezetag_revive_extra_size; n = 0; - FOREACH_CLIENT(IS_PLAYER(it) && it != self, LAMBDA( + FOREACH_CLIENT(IS_PLAYER(it) && it != player, LAMBDA( if(STAT(FROZEN, it) == 0) if(!IS_DEAD(it)) - if(SAME_TEAM(it, self)) - if(boxesoverlap(self.absmin - revive_extra_size, self.absmax + revive_extra_size, it.absmin, it.absmax)) + if(SAME_TEAM(it, player)) + if(boxesoverlap(player.absmin - revive_extra_size, player.absmax + revive_extra_size, it.absmin, it.absmax)) { if(!o) o = it; - if(STAT(FROZEN, self) == 1) + if(STAT(FROZEN, player) == 1) it.reviving = true; ++n; } @@ -523,21 +525,21 @@ MUTATOR_HOOKFUNCTION(ft, PlayerPreThink, CBC_ORDER_FIRST) } - if(n && STAT(FROZEN, self) == 1) // OK, there is at least one teammate reviving us + if(n && STAT(FROZEN, player) == 1) // OK, there is at least one teammate reviving us { - self.revive_progress = bound(0, self.revive_progress + frametime * max(1/60, autocvar_g_freezetag_revive_speed), 1); - self.health = max(1, self.revive_progress * ((warmup_stage) ? warmup_start_health : start_health)); + player.revive_progress = bound(0, player.revive_progress + frametime * max(1/60, autocvar_g_freezetag_revive_speed), 1); + player.health = max(1, player.revive_progress * ((warmup_stage) ? warmup_start_health : start_health)); - if(self.revive_progress >= 1) + if(player.revive_progress >= 1) { - freezetag_Unfreeze(self); + freezetag_Unfreeze(player); freezetag_count_alive_players(); if(n == -1) { - Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_FREEZETAG_AUTO_REVIVED, autocvar_g_freezetag_frozen_maxtime); - Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_FREEZETAG_AUTO_REVIVED, self.netname, autocvar_g_freezetag_frozen_maxtime); - return 1; + Send_Notification(NOTIF_ONE, player, MSG_CENTER, CENTER_FREEZETAG_AUTO_REVIVED, autocvar_g_freezetag_frozen_maxtime); + Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_FREEZETAG_AUTO_REVIVED, player.netname, autocvar_g_freezetag_frozen_maxtime); + return true; } // EVERY team mate nearby gets a point (even if multiple!) @@ -547,27 +549,27 @@ MUTATOR_HOOKFUNCTION(ft, PlayerPreThink, CBC_ORDER_FIRST) nades_GiveBonus(it,autocvar_g_nades_bonus_score_low); )); - Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_FREEZETAG_REVIVED, o.netname); - Send_Notification(NOTIF_ONE, o, MSG_CENTER, CENTER_FREEZETAG_REVIVE, self.netname); - Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_FREEZETAG_REVIVED, self.netname, o.netname); + Send_Notification(NOTIF_ONE, player, MSG_CENTER, CENTER_FREEZETAG_REVIVED, o.netname); + Send_Notification(NOTIF_ONE, o, MSG_CENTER, CENTER_FREEZETAG_REVIVE, player.netname); + Send_Notification(NOTIF_ALL, world, MSG_INFO, INFO_FREEZETAG_REVIVED, player.netname, o.netname); } FOREACH_CLIENT(IS_PLAYER(it) && it.reviving, LAMBDA( - it.revive_progress = self.revive_progress; + it.revive_progress = player.revive_progress; it.reviving = false; )); } - else if(!n && STAT(FROZEN, self) == 1) // only if no teammate is nearby will we reset + else if(!n && STAT(FROZEN, player) == 1) // only if no teammate is nearby will we reset { - self.revive_progress = bound(0, self.revive_progress - frametime * autocvar_g_freezetag_revive_clearspeed, 1); - self.health = max(1, self.revive_progress * ((warmup_stage) ? warmup_start_health : start_health)); + player.revive_progress = bound(0, player.revive_progress - frametime * autocvar_g_freezetag_revive_clearspeed, 1); + player.health = max(1, player.revive_progress * ((warmup_stage) ? warmup_start_health : start_health)); } - else if(!n && !STAT(FROZEN, self)) + else if(!n && !STAT(FROZEN, player)) { - self.revive_progress = 0; // thawing nobody + player.revive_progress = 0; // thawing nobody } - return 1; + return true; } MUTATOR_HOOKFUNCTION(ft, SetStartItems) diff --git a/qcsrc/server/mutators/mutator/gamemode_keepaway.qc b/qcsrc/server/mutators/mutator/gamemode_keepaway.qc index 7af44fcc1..53d770611 100644 --- a/qcsrc/server/mutators/mutator/gamemode_keepaway.qc +++ b/qcsrc/server/mutators/mutator/gamemode_keepaway.qc @@ -345,26 +345,27 @@ MUTATOR_HOOKFUNCTION(ka, GiveFragsForKill) } MUTATOR_HOOKFUNCTION(ka, PlayerPreThink) -{SELFPARAM(); +{ + entity player = M_ARGV(0, entity); + // clear the item used for the ball in keepaway - self.items &= ~IT_KEY1; + player.items &= ~IT_KEY1; // if the player has the ball, make sure they have the item for it (Used for HUD primarily) - if(self.ballcarried) - self.items |= IT_KEY1; - - return false; + if(player.ballcarried) + player.items |= IT_KEY1; } MUTATOR_HOOKFUNCTION(ka, PlayerUseKey) -{SELFPARAM(); +{ + entity player = M_ARGV(0, entity); + if(MUTATOR_RETURNVALUE == 0) - if(self.ballcarried) + if(player.ballcarried) { - ka_DropEvent(self); - return 1; + ka_DropEvent(player); + return true; } - return false; } MUTATOR_HOOKFUNCTION(ka, PlayerDamage_Calculate) // for changing damage and force values that are applied to players in g_damage.qc diff --git a/qcsrc/server/mutators/mutator/gamemode_keyhunt.qc b/qcsrc/server/mutators/mutator/gamemode_keyhunt.qc index 9b4c7586c..5f4c2e76d 100644 --- a/qcsrc/server/mutators/mutator/gamemode_keyhunt.qc +++ b/qcsrc/server/mutators/mutator/gamemode_keyhunt.qc @@ -1346,18 +1346,19 @@ MUTATOR_HOOKFUNCTION(kh, SpectateCopy) } MUTATOR_HOOKFUNCTION(kh, PlayerUseKey) -{SELFPARAM(); +{ + entity player = M_ARGV(0, entity); + if(MUTATOR_RETURNVALUE == 0) { - entity k; - k = self.kh_next; + entity k = player.kh_next; if(k) { kh_Key_DropOne(k); - return 1; + return true; } } - return 0; + return false; } MUTATOR_HOOKFUNCTION(kh, HavocBot_ChooseRole) diff --git a/qcsrc/server/mutators/mutator/gamemode_lms.qc b/qcsrc/server/mutators/mutator/gamemode_lms.qc index 05ff73f3d..dada01677 100644 --- a/qcsrc/server/mutators/mutator/gamemode_lms.qc +++ b/qcsrc/server/mutators/mutator/gamemode_lms.qc @@ -233,11 +233,11 @@ MUTATOR_HOOKFUNCTION(lms, ClientConnect) } MUTATOR_HOOKFUNCTION(lms, PlayerPreThink) -{SELFPARAM(); - if(this.deadflag == DEAD_DYING) - this.deadflag = DEAD_RESPAWNING; +{ + entity player = M_ARGV(0, entity); - return false; + if(player.deadflag == DEAD_DYING) + player.deadflag = DEAD_RESPAWNING; } MUTATOR_HOOKFUNCTION(lms, PlayerRegen)