X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_client.qc;h=87d567f29acbcf101e3ebfa9614ce14fdd1f3c65;hb=78c8c5ce2c81599cde866c96db13ef896c691387;hp=97bffaacc43b9dc22f706b11ce019f1d73bbd76d;hpb=3e6b3fbaf2c068d8171250a4d82003ac6fcc21db;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 97bffaacc..87d567f29 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -599,6 +599,7 @@ void PutObserverInServer (void) } DropAllRunes(self); + MUTATOR_CALLHOOK(MakePlayerObserver); Portal_ClearAll(self); @@ -713,8 +714,6 @@ void PutObserverInServer (void) } else self.frags = FRAGS_SPECTATOR; - - MUTATOR_CALLHOOK(MakePlayerObserver); } float RestrictSkin(float s) @@ -890,7 +889,11 @@ void PutClientInServer (void) self.air_finished = time + 12; self.dmg = 2; if(cvar("g_balance_nex_charge")) + { + if(cvar("g_balance_nex_secondary_charge_pool")) + self.nex_charge_pool_ammo = 1; self.nex_charge = cvar("g_balance_nex_charge_start"); + } if(inWarmupStage) { @@ -1075,6 +1078,9 @@ void PutClientInServer (void) // ctf_playerchanged(); } +.float ebouncefactor, ebouncestop; // electro's values +// TODO do we need all these fields, or should we stop autodetecting runtime +// changes and just have a console command to update this? float ClientInit_SendEntity(entity to, float sf) { WriteByte(MSG_ENTITY, ENT_CLIENT_INIT); @@ -1099,6 +1105,8 @@ float ClientInit_SendEntity(entity to, float sf) WriteByte(MSG_ENTITY, self.cnt * 255.0); // g_balance_weaponswitchdelay WriteCoord(MSG_ENTITY, self.bouncefactor); // g_balance_grenadelauncher_bouncefactor WriteCoord(MSG_ENTITY, self.bouncestop); // g_balance_grenadelauncher_bouncestop + WriteCoord(MSG_ENTITY, self.ebouncefactor); // g_balance_grenadelauncher_bouncefactor + WriteCoord(MSG_ENTITY, self.ebouncestop); // g_balance_grenadelauncher_bouncestop WriteByte(MSG_ENTITY, cvar("g_balance_nex_secondary")); // client has to know if it should zoom or not WriteByte(MSG_ENTITY, cvar("g_balance_campingrifle_secondary")); // client has to know if it should zoom or not WriteByte(MSG_ENTITY, serverflags); // client has to know if it should zoom or not @@ -1128,6 +1136,16 @@ void ClientInit_CheckUpdate() self.bouncestop = cvar("g_balance_grenadelauncher_bouncestop"); self.SendFlags |= 1; } + if(self.ebouncefactor != cvar("g_balance_electro_secondary_bouncefactor")) + { + self.ebouncefactor = cvar("g_balance_electro_secondary_bouncefactor"); + self.SendFlags |= 1; + } + if(self.ebouncestop != cvar("g_balance_electro_secondary_bouncestop")) + { + self.ebouncestop = cvar("g_balance_electro_secondary_bouncestop"); + self.SendFlags |= 1; + } } void ClientInit_Spawn() @@ -2460,50 +2478,6 @@ void checkSpectatorBlock() { } } -float vercmp_recursive(string v1, string v2) -{ - float dot1, dot2; - string s1, s2; - float r; - - dot1 = strstrofs(v1, ".", 0); - dot2 = strstrofs(v2, ".", 0); - if(dot1 == -1) - s1 = v1; - else - s1 = substring(v1, 0, dot1); - if(dot2 == -1) - s2 = v2; - else - s2 = substring(v2, 0, dot2); - - r = stof(s1) - stof(s2); - if(r != 0) - return r; - - r = strcasecmp(s1, s2); - if(r != 0) - return r; - - if(dot1 == -1) - if(dot2 == -1) - return 0; - else - return -1; - else - if(dot2 == -1) - return 1; - else - return vercmp_recursive(substring(v1, dot1 + 1, 999), substring(v2, dot2 + 1, 999)); -} - -float vercmp(string v1, string v2) -{ - if(strcasecmp(v1, v2) == 0) // early out check - return 0; - return vercmp_recursive(v1, v2); -} - void ObserverThink() { if (self.flags & FL_JUMPRELEASED) { @@ -2873,8 +2847,11 @@ void PlayerPreThink (void) if (g_minstagib) minstagib_ammocheck(); - ctf_setstatus(); - nexball_setstatus(); + if(g_ctf) + ctf_setstatus(); + + if(g_nexball) + nexball_setstatus(); self.dmg_team = max(0, self.dmg_team - cvar("g_teamdamage_resetspeed") * frametime);