From: MirceaKitsune Date: Tue, 3 May 2011 13:10:58 +0000 (+0300) Subject: Use self.stat_eaten instead of checking self.predator.classname. Also adjust the... X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=e03eccb2fb3597361ddeec65ae447587d6e95bac;p=voretournament%2Fvoretournament.git Use self.stat_eaten instead of checking self.predator.classname. Also adjust the fakeprey status accordingly. This is a major change and might brake some things, but it's cleaner and more correct. --- diff --git a/data/qcsrc/server/bot/havocbot/havocbot.qc b/data/qcsrc/server/bot/havocbot/havocbot.qc index faca874c..1e29e531 100644 --- a/data/qcsrc/server/bot/havocbot/havocbot.qc +++ b/data/qcsrc/server/bot/havocbot/havocbot.qc @@ -16,7 +16,7 @@ void havocbot_ai() // execute the vore AI for bots Vore_AI(); - if(self.predator.classname == "player") + if(self.stat_eaten) return; // an eaten bot has nothing to do outside of the vore AI if (bot_strategytoken == self) diff --git a/data/qcsrc/server/bot/havocbot/vore_ai.qc b/data/qcsrc/server/bot/havocbot/vore_ai.qc index 4bbd4211..1d4b08a8 100644 --- a/data/qcsrc/server/bot/havocbot/vore_ai.qc +++ b/data/qcsrc/server/bot/havocbot/vore_ai.qc @@ -22,7 +22,7 @@ void Vore_AI_Teamheal(entity prey) if not(teams_matter && cvar("g_balance_vore_teamheal") && cvar("g_vore_teamvore")) return; - if(self.deadflag != DEAD_NO || self.predator.classname == "player" || self.flagcarried || self.digesting) // a flag carrier can't waste time on team healing + if(self.deadflag != DEAD_NO || self.stat_eaten || self.flagcarried || self.digesting) // a flag carrier can't waste time on team healing { self.status_teamhealing = 0; return; @@ -97,7 +97,7 @@ void Vore_AI() // Predator bot behavior: // -------------------------------- - if(self.predator.classname != "player") + if(!self.stat_eaten) { // finding and swallowing a player @@ -170,7 +170,7 @@ void Vore_AI() // Prey bot behavior: // -------------------------------- - if(self.predator.classname == "player" && time > self.decide_prey) + if(self.stat_eaten && time > self.decide_prey) { // all we can do in the stomach is kick and do some damage / try to escape, or leave if the circumstances allow it and we should diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 33790477..eb1b144a 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -528,7 +528,7 @@ float Client_customizeentityforclient() } Client_setmodel(setmodel_state()); - if not(self.predator.classname == "player" || self.fakeprey) + if not(self.stat_eaten || self.fakeprey) self.alpha = default_player_alpha; else self.alpha = -1; // hide all prey @@ -829,7 +829,7 @@ void PutClientInServer (void) RemoveGrabber(self); // Wazat's Grabber Vore_DeadPrey_Detach(self); - self.fakeprey = 0; // completely clear the fakeprey status + self.fakeprey = FALSE; // clear the fakeprey status self.classname = "player"; self.wasplayer = TRUE; @@ -1612,7 +1612,7 @@ void ChatBubbleThink() remove(self); return; } - if ((self.owner.BUTTON_CHAT && !self.owner.deadflag && self.owner.predator.classname != "player" && self.owner.fakepredator.classname != "player") + if ((self.owner.BUTTON_CHAT && !self.owner.deadflag && !self.owner.stat_eaten && self.owner.fakepredator.classname != "player") #ifdef TETRIS || self.owner.tetris_on #endif @@ -1655,7 +1655,7 @@ void TeamBubbleThink() return; } // setorigin(self, self.owner.origin + '0 0 15' + self.owner.maxs_z * '0 0 1'); // bandwidth hog. setattachment does this now - if (self.owner.BUTTON_CHAT || self.owner.deadflag || self.owner.killindicator || self.owner.predator.classname == "player" || self.owner.fakepredator.classname == "player") + if (self.owner.BUTTON_CHAT || self.owner.deadflag || self.owner.killindicator || self.owner.stat_eaten) self.model = ""; else { @@ -2287,13 +2287,13 @@ void ApplyHealthSize() if(self.crouch) { //setsize (self, PL_CROUCH_MIN * self.scale, PL_CROUCH_MAX * self.scale); - if not(self.predator.classname == "player" || self.fakeprey > 1) + if(!self.stat_eaten) self.view_ofs = PL_CROUCH_VIEW_OFS * self.scale; } else { //setsize (self, PL_MIN * self.scale, PL_MAX * self.scale); - if not(self.predator.classname == "player" || self.fakeprey > 1) + if(!self.stat_eaten) self.view_ofs = PL_VIEW_OFS * self.scale; } } diff --git a/data/qcsrc/server/cl_physics.qc b/data/qcsrc/server/cl_physics.qc index 9c2a82d6..d8a18fda 100644 --- a/data/qcsrc/server/cl_physics.qc +++ b/data/qcsrc/server/cl_physics.qc @@ -774,7 +774,7 @@ void SV_PlayerPhysics() } } - if(self.predator.classname == "player" || self.fakepredator.classname == "player") + if(self.stat_eaten) return; if (self.movetype == MOVETYPE_NONE) @@ -980,7 +980,7 @@ void SV_PlayerPhysics() PM_Accelerate(wishdir, wishspeed, wishspeed, sv_accelerate*maxspd_mod, 1, 0); } } - else if ((self.items & IT_JETPACK) && self.BUTTON_JETPACK && (!cvar("g_jetpack_fuel") || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO) && self.predator.classname != "player") + else if ((self.items & IT_JETPACK) && self.BUTTON_JETPACK && (!cvar("g_jetpack_fuel") || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO) && !self.stat_eaten) { //makevectors(self.v_angle_y * '0 1 0'); makevectors(self.v_angle); @@ -1082,7 +1082,7 @@ void SV_PlayerPhysics() else if (self.flags & FL_ONGROUND) { // we get here if we ran out of ammo - if((self.items & IT_JETPACK) && self.BUTTON_JETPACK && !(buttons_prev & 32) && self.predator.classname != "player") + if((self.items & IT_JETPACK) && self.BUTTON_JETPACK && !(buttons_prev & 32) && !self.stat_eaten) sprint(self, "You don't have any fuel for the ^2Jetpack\n"); // walking @@ -1143,7 +1143,7 @@ void SV_PlayerPhysics() { float wishspeed0; // we get here if we ran out of ammo - if((self.items & IT_JETPACK) && self.BUTTON_JETPACK && !(buttons_prev & 32) && self.predator.classname != "player") + if((self.items & IT_JETPACK) && self.BUTTON_JETPACK && !(buttons_prev & 32) && !self.stat_eaten) sprint(self, "You don't have any fuel for the ^2Jetpack\n"); if(maxspd_mod < 1) diff --git a/data/qcsrc/server/cl_player.qc b/data/qcsrc/server/cl_player.qc index c3bde6ce..85192565 100644 --- a/data/qcsrc/server/cl_player.qc +++ b/data/qcsrc/server/cl_player.qc @@ -749,7 +749,7 @@ void UpdateSelectedPlayer() selected = world; selected_score = 0.95; // 18 degrees - if(self.predator.classname == "player") + if(self.stat_eaten) { if(!self.dropweapon_check) if(self.predator.team != self.team) // don't disarm team mates when swallowing them @@ -1233,7 +1233,7 @@ void GlobalSound(string sample, float chan, float voicetype) { if(msg_entity.cvar_cl_voice_directional == 1) { - if(self.predator.classname == "player") + if(self.stat_eaten) soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE * bound(0, cvar("g_vore_soundocclusion"), 1), ATTN_MIN); else soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_MIN); @@ -1252,7 +1252,7 @@ void GlobalSound(string sample, float chan, float voicetype) { if(msg_entity.cvar_cl_voice_directional == 1) { - if(self.predator.classname == "player") + if(self.stat_eaten) soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE * bound(0, cvar("g_vore_soundocclusion"), 1), ATTN_MIN); else soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_MIN); @@ -1271,7 +1271,7 @@ void GlobalSound(string sample, float chan, float voicetype) { if(msg_entity.cvar_cl_voice_directional == 1) { - if(self.predator.classname == "player") + if(self.stat_eaten) soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE * bound(0, cvar("g_vore_soundocclusion"), 1), ATTN_MIN); else soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_MIN); @@ -1292,7 +1292,7 @@ void GlobalSound(string sample, float chan, float voicetype) if (tauntrand < msg_entity.cvar_cl_autotaunt) if (msg_entity.cvar_cl_voice_directional >= 1) { - if(self.predator.classname == "player") + if(self.stat_eaten) soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE * bound(0, cvar("g_vore_soundocclusion"), 1), bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX)); else soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX)); @@ -1312,7 +1312,7 @@ void GlobalSound(string sample, float chan, float voicetype) { if (msg_entity.cvar_cl_voice_directional >= 1) { - if(self.predator.classname == "player") + if(self.stat_eaten) soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE * bound(0, cvar("g_vore_soundocclusion"), 1), bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX)); else soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, bound(ATTN_MIN, msg_entity.cvar_cl_voice_directional_taunt_attenuation, ATTN_MAX)); @@ -1321,7 +1321,7 @@ void GlobalSound(string sample, float chan, float voicetype) soundto(MSG_ONE, self, chan, sample, VOL_BASEVOICE, ATTN_NONE); } case VOICETYPE_PLAYERSOUND: - if(self.predator.classname == "player") + if(self.stat_eaten) sound(self, chan, sample, VOL_BASE * bound(0, cvar("g_vore_soundocclusion"), 1), ATTN_NORM); else sound(self, chan, sample, VOL_BASE, ATTN_NORM); diff --git a/data/qcsrc/server/cl_weapons.qc b/data/qcsrc/server/cl_weapons.qc index cd5b1da2..255072f4 100644 --- a/data/qcsrc/server/cl_weapons.qc +++ b/data/qcsrc/server/cl_weapons.qc @@ -274,7 +274,7 @@ void W_ThrowWeapon(vector velo, vector delta, float doreduce) w = self.weapon; if (w == 0) return; // just in case - if(self.predator.classname == "player" && self.dropweapon_check) + if(self.stat_eaten && self.dropweapon_check) return; // can't drop weapons from the stomach if (g_lms) return; diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc index 66ad0f7c..09cbaccf 100644 --- a/data/qcsrc/server/cl_weaponsystem.qc +++ b/data/qcsrc/server/cl_weaponsystem.qc @@ -566,7 +566,7 @@ void CL_Weaponentity_Think() if(self.owner.alpha == default_player_alpha) self.alpha = default_weapon_alpha; - else if(self.owner.alpha != 0 && self.owner.predator.classname != "player") + else if(self.owner.alpha != 0 && !self.owner.stat_eaten) self.alpha = self.owner.alpha; else self.alpha = 1; @@ -1585,7 +1585,7 @@ void W_DecreaseAmmo(.float ammo_type, float ammo_use, float ammo_reload) void W_ReloadedAndReady() { // if we are inside the stomach, don't allow reloading, and schedule the weapon to reload once when we're out - if(self.predator.classname == "player") + if(self.stat_eaten) { self.clip_load = self.weapon_load[self.weapon] = -1; w_ready(); // don't keep executing each frame @@ -1621,7 +1621,7 @@ void W_ReloadedAndReady() void W_Reload(float sent_ammo_min, float sent_ammo_amount, float sent_time, string sent_sound) { // if we are inside the stomach, don't allow reloading - if(self.predator.classname == "player") + if(self.stat_eaten) return; // set global values to work with diff --git a/data/qcsrc/server/g_grabber.qc b/data/qcsrc/server/g_grabber.qc index 4df1ad58..f8ce6c05 100644 --- a/data/qcsrc/server/g_grabber.qc +++ b/data/qcsrc/server/g_grabber.qc @@ -131,7 +131,7 @@ void GrabberThink() WarpZone_RefSys_AddIncrementally(self, self.aiment); // prevent the grabber from sticking to a player that has been swallowed - if(self.aiment.predator.classname == "player") + if(self.aiment.stat_eaten) { // if the grabber is linked to a player that we swallowed, disconnect it (or the grabber will stick to us / the player inside us) // otherwise, link the grabber to the player who ate our linked player diff --git a/data/qcsrc/server/g_violence.qc b/data/qcsrc/server/g_violence.qc index 769b19d9..5665ff43 100644 --- a/data/qcsrc/server/g_violence.qc +++ b/data/qcsrc/server/g_violence.qc @@ -13,7 +13,7 @@ float Violence_GibSplash_SendEntity(entity to, float sf) // TODO maybe convert this to a TE? void Violence_GibSplash_At(vector org, vector dir, float type, float amount, entity gibowner, entity attacker) { - if(gibowner.predator.classname == "player" || gibowner.fakeprey > 1) + if(gibowner.stat_eaten) return; // you can't bleed or gib outside of the stomach entity e; diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index 7a065d43..c6776437 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -49,7 +49,7 @@ void OtherPLReport_Think() WriteByte(MSG_BROADCAST, SVC_TEMPENTITY); WriteByte(MSG_BROADCAST, TE_CSQC_OTHERPLREPORT); WriteByte(MSG_BROADCAST, self.cnt); - if(e.predator.classname == "player") // tempt hackers less by only sending the info of eaten players + if(e.stat_eaten) // tempt hackers less by only sending the info of eaten players { if(cvar("g_vore_showhealth")) WriteByte(MSG_BROADCAST, e.health); diff --git a/data/qcsrc/server/tturrets/system/system_main.qc b/data/qcsrc/server/tturrets/system/system_main.qc index e7dd022a..85bd30b6 100644 --- a/data/qcsrc/server/tturrets/system/system_main.qc +++ b/data/qcsrc/server/tturrets/system/system_main.qc @@ -464,7 +464,7 @@ float turret_validate_target(entity e_turret,entity e_target,float validate_flag if not (e_target) return -2; - if(e_target.predator.classname == "player") // don't shoot someone from the belly + if(e_target.stat_eaten) // don't shoot someone in the belly return -3; if(g_onslaught) diff --git a/data/qcsrc/server/vore.qc b/data/qcsrc/server/vore.qc index 4adbd900..23fdeb77 100644 --- a/data/qcsrc/server/vore.qc +++ b/data/qcsrc/server/vore.qc @@ -33,8 +33,8 @@ float Swallow_condition_check(entity prey) // checks the necessary conditions for swallowing a player if(prey != self) - if(prey.classname == "player" && prey.predator.classname != "player" && prey.deadflag == DEAD_NO) // we can't swallow someone who's already in someone else's stomach - if(self.classname == "player" && self.predator.classname != "player" && self.deadflag == DEAD_NO) // we can't swallow players while inside someone's stomach ourselves + if(prey.classname == "player" && !prey.stat_eaten && prey.deadflag == DEAD_NO) // we can't swallow someone who's already in someone else's stomach + if(self.classname == "player" && !self.stat_eaten && self.deadflag == DEAD_NO) // we can't swallow players while inside someone's stomach ourselves if(!self.BUTTON_REGURGITATE && self.swallow_delay < time) if not(vlen(self.velocity) > cvar("g_balance_vore_regurgitate_speedcap")) { @@ -83,7 +83,7 @@ float Stomach_TeamMates_check(entity pred) float Vore_CanLeave() { - if(self.predator.classname == "player") + if(self.stat_eaten) { if(!cvar("g_vore_kick")) // you are defenseless in the stomach if you can't kick, so allow leaving return TRUE; @@ -98,13 +98,13 @@ float Vore_CanLeave() // position the camera properly for prey void Vore_SetCamera() { - if not(self.predator.classname == "player" || self.fakeprey > 1) + if not(self.stat_eaten) return; self.view_ofs = PL_PREY_VIEW_OFS; float prey_height; - if(self.fakeprey > 1) + if(self.fakeprey) prey_height = (self.scale - self.fakepredator.scale) * cvar("g_healthsize_vore_pos"); else prey_height = (self.scale - self.predator.scale) * cvar("g_healthsize_vore_pos"); @@ -241,12 +241,12 @@ void Vore_DeadPrey_Configure(entity e) { // ran when the keepdeadprey feature is enabled and prey stays inside the stomach after dying - if(e.fakeprey || e.predator.classname != "player") // already configured + if(e.fakeprey || !e.stat_eaten) // we already configured everything return; // this entity is like e.predator but for dead prey, to avoid conflicts e.fakepredator = e.predator; - e.fakeprey = 2; // is fakeprey in a stomach + e.fakeprey = TRUE; // first release the prey from the predator, as dead prey needs to be attached differently // the predator's stomach load is also decreased, as dead prey doesn't count any more @@ -270,7 +270,7 @@ void Vore_DeadPrey_Detach(entity e) return; e.fakepredator = world; - e.fakeprey = 1; // was fakeprey but is now detached + e.fakeprey = TRUE; // keep fakeprey status e.aiment = world; e.movetype = MOVETYPE_TOSS; } @@ -279,7 +279,7 @@ void Vore_PreyRelease(entity e, float pred_disconnect) { if(pred_disconnect) { - if(e.fakeprey > 1) + if(e.fakeprey) Vore_DeadPrey_Detach(e); else Vore_Regurgitate(e); @@ -299,7 +299,7 @@ void Vore_Disconnect() // frees prey from their predators when someone disconnects or goes spectating, or in other circumstances // prey disconnects or goes spectating while inside someone's belly - if(self.predator.classname == "player") + if(self.stat_eaten) Vore_PreyRelease(self, TRUE); // pred disconnects or goes spectating with players in their belly @@ -416,7 +416,7 @@ void Vore_AutoTaunt() } // prey taunts - if(self.predator.classname == "player" && !(teams_matter && self.team == self.predator.team)) + if(self.stat_eaten && !(teams_matter && self.team == self.predator.team)) { if(!self.taunt_soundtime) // taunt_soundtime becomes 0 once the taunt has played { @@ -444,7 +444,7 @@ void Vore() Vore_AutoTaunt(); // wash the goo away from players once they leave the stomach - if(self.predator.classname != "player") + if(!self.stat_eaten) if(stov(cvar_string("g_vore_regurgitatecolor_release"))) if(self.colormod) if(cvar("g_vore_regurgitatecolor_release_fade")) @@ -461,7 +461,7 @@ void Vore() } // set all vore stats - if(self.fakeprey > 1) + if(self.fakepredator.classname == "player") self.stat_eaten = num_for_edict(self.fakepredator); else if(self.predator.classname == "player") { @@ -480,7 +480,7 @@ void Vore() // don't allow a player inside a player inside another player :) // prevent this by checking if such has happened, and taking the proper measures // this code has a high priority and must not be stopped by any delay, so run it here - if(self.predator.predator.classname == "player") + if(self.predator.stat_eaten) { entity target_predator, target_predator_predator, oldself; target_predator = self.predator; @@ -586,11 +586,11 @@ void Vore() Vore_SetCamera(); // keepdeadprey - detach dead prey if their predator died or got swallowed - if(self.fakepredator.classname == "player") - if(self.fakepredator.deadflag != DEAD_NO || self.fakepredator.predator.classname == "player") + if(self.fakeprey) + if(self.fakepredator.deadflag != DEAD_NO || self.fakepredator.stat_eaten) Vore_DeadPrey_Detach(self); - if(self.predator.classname != "player") + if(!self.stat_eaten) return; if(self.deadflag != DEAD_NO) diff --git a/data/qcsrc/server/w_grabber.qc b/data/qcsrc/server/w_grabber.qc index 30d7131c..ba0afe73 100644 --- a/data/qcsrc/server/w_grabber.qc +++ b/data/qcsrc/server/w_grabber.qc @@ -62,7 +62,7 @@ void spawnfunc_weapon_grabber (void) float w_grabber(float req) { - if(self.predator.classname == "player") // we can't use weapons while in the stomach + if(self.stat_eaten) // we can't use weapons while in the stomach { self.grabber_state |= GRABBER_REMOVING; return FALSE;