X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_client.qc;h=c29523bfce730fee240f67ef86c8938a0d6632ca;hp=4ab1836e8c0e242828aa2b0e7cf470b1897ea71b;hb=3adaa0873ad9eac20f32e6e3fc0455d4f9e044cd;hpb=ca135a84df8858611eba56e8c3eef1e7b21959aa diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 4ab1836e8c..c29523bfce 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -428,11 +428,11 @@ void PutClientInServer (void) self.effects |= EF_TELEPORT_BIT | EF_RESTARTANIM_BIT; self.air_finished = time + 12; self.dmg = 2; - if(autocvar_g_balance_nex_charge) + if(WEP_CVAR(vortex, charge)) { - if(autocvar_g_balance_nex_secondary_chargepool) - self.nex_chargepool_ammo = 1; - self.nex_charge = autocvar_g_balance_nex_charge_start; + if(WEP_CVAR_SEC(vortex, chargepool)) + self.vortex_chargepool_ammo = 1; + self.vortex_charge = WEP_CVAR(vortex, charge_start); } if(warmup_stage) @@ -441,6 +441,7 @@ void PutClientInServer (void) self.ammo_nails = warmup_start_ammo_nails; self.ammo_rockets = warmup_start_ammo_rockets; self.ammo_cells = warmup_start_ammo_cells; + self.ammo_plasma = warmup_start_ammo_plasma; self.ammo_fuel = warmup_start_ammo_fuel; self.health = warmup_start_health; self.armorvalue = warmup_start_armorvalue; @@ -452,6 +453,7 @@ void PutClientInServer (void) self.ammo_nails = start_ammo_nails; self.ammo_rockets = start_ammo_rockets; self.ammo_cells = start_ammo_cells; + self.ammo_plasma = start_ammo_plasma; self.ammo_fuel = start_ammo_fuel; self.health = start_health; self.armorvalue = start_armorvalue; @@ -463,13 +465,13 @@ void PutClientInServer (void) else self.superweapons_finished = 0; - if(g_weaponarena_random) + if(g_weaponarena_random) // WEAPONTODO: more stuff that should be in a mutator. also: rename those cvars { if(g_weaponarena_random_with_laser) - self.weapons &= ~WEPSET_LASER; + self.weapons &= ~WEPSET_BLASTER; W_RandomWeapons(self, g_weaponarena_random); if(g_weaponarena_random_with_laser) - self.weapons |= WEPSET_LASER; + self.weapons |= WEPSET_BLASTER; } self.items = start_items; @@ -572,13 +574,13 @@ void PutClientInServer (void) // reset fields the weapons may use for (j = WEP_FIRST; j <= WEP_LAST; ++j) { - weapon_action(j, WR_RESETPLAYER); + WEP_ACTION(j, WR_RESETPLAYER); // all weapons must be fully loaded when we spawn entity e; e = get_weaponinfo(j); if(e.spawnflags & WEP_FLAG_RELOADABLE) // prevent accessing undefined cvars - self.(weapon_load[j]) = cvar(strcat("g_balance_", e.netname, "_reload_ammo")); + self.(weapon_load[j]) = e.reloading_ammo; } oldself = self; @@ -630,30 +632,27 @@ float ClientInit_SendEntity(entity to, float sf) WriteInt24_t(MSG_ENTITY, compressShotOrigin(hook_shotorigin[1])); WriteInt24_t(MSG_ENTITY, compressShotOrigin(hook_shotorigin[2])); WriteInt24_t(MSG_ENTITY, compressShotOrigin(hook_shotorigin[3])); - WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[0])); - WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[1])); - WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[2])); - WriteInt24_t(MSG_ENTITY, compressShotOrigin(electro_shotorigin[3])); - WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[0])); - WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[1])); - WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[2])); - WriteInt24_t(MSG_ENTITY, compressShotOrigin(gauntlet_shotorigin[3])); + WriteInt24_t(MSG_ENTITY, compressShotOrigin(arc_shotorigin[0])); + WriteInt24_t(MSG_ENTITY, compressShotOrigin(arc_shotorigin[1])); + WriteInt24_t(MSG_ENTITY, compressShotOrigin(arc_shotorigin[2])); + WriteInt24_t(MSG_ENTITY, compressShotOrigin(arc_shotorigin[3])); + if(sv_foginterval && world.fog != "") WriteString(MSG_ENTITY, world.fog); else WriteString(MSG_ENTITY, ""); WriteByte(MSG_ENTITY, self.count * 255.0); // g_balance_armor_blockpercent - 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, autocvar_g_balance_nex_secondary); // client has to know if it should zoom or not - WriteByte(MSG_ENTITY, autocvar_g_balance_rifle_secondary); // client has to know if it should zoom or not + WriteCoord(MSG_ENTITY, self.bouncefactor); // g_balance_mortar_bouncefactor // WEAPONTODO + WriteCoord(MSG_ENTITY, self.bouncestop); // g_balance_mortar_bouncestop + WriteCoord(MSG_ENTITY, self.ebouncefactor); // g_balance_mortar_bouncefactor + WriteCoord(MSG_ENTITY, self.ebouncestop); // g_balance_mortar_bouncestop + WriteByte(MSG_ENTITY, WEP_CVAR(vortex, secondary)); // client has to know if it should zoom or not // WEAPONTODO + WriteByte(MSG_ENTITY, WEP_CVAR(rifle, secondary)); // client has to know if it should zoom or not // WEAPONTODO WriteByte(MSG_ENTITY, serverflags); // client has to know if it should zoom or not - WriteByte(MSG_ENTITY, autocvar_g_balance_minelayer_limit); // minelayer max mines - WriteByte(MSG_ENTITY, autocvar_g_balance_hagar_secondary_load_max); // hagar max loadable rockets + WriteByte(MSG_ENTITY, WEP_CVAR(minelayer, limit)); // minelayer max mines // WEAPONTODO + WriteByte(MSG_ENTITY, WEP_CVAR_SEC(hagar, load_max)); // hagar max loadable rockets // WEAPONTODO WriteCoord(MSG_ENTITY, autocvar_g_trueaim_minrange); - WriteByte(MSG_ENTITY, autocvar_g_balance_porto_secondary); + WriteByte(MSG_ENTITY, WEP_CVAR(porto, secondary)); // WEAPONTODO return TRUE; } @@ -665,14 +664,14 @@ void ClientInit_CheckUpdate() self.count = autocvar_g_balance_armor_blockpercent; self.SendFlags |= 1; } - if(self.bouncefactor != autocvar_g_balance_grenadelauncher_bouncefactor) + if(self.bouncefactor != autocvar_g_balance_mortar_bouncefactor) // WEAPONTODO { - self.bouncefactor = autocvar_g_balance_grenadelauncher_bouncefactor; + self.bouncefactor = autocvar_g_balance_mortar_bouncefactor; self.SendFlags |= 1; } - if(self.bouncestop != autocvar_g_balance_grenadelauncher_bouncestop) + if(self.bouncestop != autocvar_g_balance_mortar_bouncestop) { - self.bouncestop = autocvar_g_balance_grenadelauncher_bouncestop; + self.bouncestop = autocvar_g_balance_mortar_bouncestop; self.SendFlags |= 1; } if(self.ebouncefactor != autocvar_g_balance_electro_secondary_bouncefactor) @@ -1201,13 +1200,7 @@ void ClientConnect (void) if(!sv_foginterval && world.fog != "") stuffcmd(self, strcat("\nfog ", world.fog, "\nr_fog_exp2 0\nr_drawfog 1\n")); - if(autocvar_g_hitplots || strstrofs(strcat(" ", autocvar_g_hitplots_individuals, " "), strcat(" ", self.netaddress, " "), 0) >= 0) - { - self.hitplotfh = fopen(strcat("hits-", matchid, "-", self.netaddress, "-", ftos(self.playerid), ".plot"), FILE_WRITE); - fputs(self.hitplotfh, strcat("#name ", self.netname, "\n")); - } - else - self.hitplotfh = -1; + W_HitPlotOpen(self); if(g_race || g_cts) { string rr; @@ -1267,11 +1260,7 @@ void ClientDisconnect (void) CheatShutdownClient(); - if(self.hitplotfh >= 0) - { - fclose(self.hitplotfh); - self.hitplotfh = -1; - } + W_HitPlotClose(self); anticheat_report(); anticheat_shutdown(); @@ -1699,6 +1688,7 @@ void SpectateCopy(entity spectatee) { self.armortype = spectatee.armortype; self.armorvalue = spectatee.armorvalue; self.ammo_cells = spectatee.ammo_cells; + self.ammo_plasma = spectatee.ammo_plasma; self.ammo_shells = spectatee.ammo_shells; self.ammo_nails = spectatee.ammo_nails; self.ammo_rockets = spectatee.ammo_rockets; @@ -1719,8 +1709,8 @@ void SpectateCopy(entity spectatee) { self.switchweapon = spectatee.switchweapon; self.switchingweapon = spectatee.switchingweapon; self.weapon = spectatee.weapon; - self.nex_charge = spectatee.nex_charge; - self.nex_chargepool_ammo = spectatee.nex_chargepool_ammo; + self.vortex_charge = spectatee.vortex_charge; + self.vortex_chargepool_ammo = spectatee.vortex_chargepool_ammo; self.hagar_load = spectatee.hagar_load; self.minelayer_mines = spectatee.minelayer_mines; self.punchangle = spectatee.punchangle; @@ -2274,17 +2264,17 @@ void PlayerPreThink (void) if(frametime) { - if(self.weapon == WEP_NEX && autocvar_g_balance_nex_charge) + if(self.weapon == WEP_VORTEX && WEP_CVAR(vortex, charge)) { - self.weaponentity_glowmod_x = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_half * min(1, self.nex_charge / autocvar_g_balance_nex_charge_animlimit); - self.weaponentity_glowmod_y = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_half * min(1, self.nex_charge / autocvar_g_balance_nex_charge_animlimit); - self.weaponentity_glowmod_z = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_half * min(1, self.nex_charge / autocvar_g_balance_nex_charge_animlimit); + self.weaponentity_glowmod_x = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_half * min(1, self.vortex_charge / WEP_CVAR(vortex, charge_animlimit)); + self.weaponentity_glowmod_y = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_half * min(1, self.vortex_charge / WEP_CVAR(vortex, charge_animlimit)); + self.weaponentity_glowmod_z = autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_half * min(1, self.vortex_charge / WEP_CVAR(vortex, charge_animlimit)); - if(self.nex_charge > autocvar_g_balance_nex_charge_animlimit) + if(self.vortex_charge > WEP_CVAR(vortex, charge_animlimit)) { - self.weaponentity_glowmod_x = self.weaponentity_glowmod_x + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_full * (self.nex_charge - autocvar_g_balance_nex_charge_animlimit) / (1 - autocvar_g_balance_nex_charge_animlimit); - self.weaponentity_glowmod_y = self.weaponentity_glowmod_y + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_full * (self.nex_charge - autocvar_g_balance_nex_charge_animlimit) / (1 - autocvar_g_balance_nex_charge_animlimit); - self.weaponentity_glowmod_z = self.weaponentity_glowmod_z + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_full * (self.nex_charge - autocvar_g_balance_nex_charge_animlimit) / (1 - autocvar_g_balance_nex_charge_animlimit); + self.weaponentity_glowmod_x = self.weaponentity_glowmod_x + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_red_full * (self.vortex_charge - WEP_CVAR(vortex, charge_animlimit)) / (1 - WEP_CVAR(vortex, charge_animlimit)); + self.weaponentity_glowmod_y = self.weaponentity_glowmod_y + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_green_full * (self.vortex_charge - WEP_CVAR(vortex, charge_animlimit)) / (1 - WEP_CVAR(vortex, charge_animlimit)); + self.weaponentity_glowmod_z = self.weaponentity_glowmod_z + autocvar_g_weapon_charge_colormod_hdrmultiplier * autocvar_g_weapon_charge_colormod_blue_full * (self.vortex_charge - WEP_CVAR(vortex, charge_animlimit)) / (1 - WEP_CVAR(vortex, charge_animlimit)); } } else @@ -2367,7 +2357,10 @@ void PlayerPreThink (void) do_crouch = 0; if(self.freezetag_frozen) do_crouch = 0; - if(self.weapon == WEP_SHOTGUN && self.weaponentity.wframe == WFRAME_FIRE2 && time < self.weapon_nextthink) + + // WEAPONTODO: THIS SHIT NEEDS TO GO EVENTUALLY + // It cannot be predicted by the engine! + if((self.weapon == WEP_SHOCKWAVE || self.weapon == WEP_SHOTGUN) && self.weaponentity.wframe == WFRAME_FIRE2 && time < self.weapon_nextthink) do_crouch = 0; if (do_crouch) @@ -2415,9 +2408,10 @@ void PlayerPreThink (void) player_regen(); + // WEAPONTODO: Add a weapon request for this // rot nex charge to the charge limit - if(autocvar_g_balance_nex_charge_rot_rate && self.nex_charge > autocvar_g_balance_nex_charge_limit && self.nex_charge_rottime < time) - self.nex_charge = bound(autocvar_g_balance_nex_charge_limit, self.nex_charge - autocvar_g_balance_nex_charge_rot_rate * frametime / W_TICSPERFRAME, 1); + if(WEP_CVAR(vortex, charge_rot_rate) && self.vortex_charge > WEP_CVAR(vortex, charge_limit) && self.vortex_charge_rottime < time) + self.vortex_charge = bound(WEP_CVAR(vortex, charge_limit), self.vortex_charge - WEP_CVAR(vortex, charge_rot_rate) * frametime / W_TICSPERFRAME, 1); if(frametime) player_anim(); @@ -2441,8 +2435,9 @@ void PlayerPreThink (void) SpectatorThink(); } + // WEAPONTODO: Add weapon request for this if(!zoomstate_set) - SetZoomState(self.BUTTON_ZOOM || self.BUTTON_ZOOMSCRIPT || (self.BUTTON_ATCK2 && self.weapon == WEP_NEX) || (self.BUTTON_ATCK2 && self.weapon == WEP_RIFLE && autocvar_g_balance_rifle_secondary == 0)); + SetZoomState(self.BUTTON_ZOOM || self.BUTTON_ZOOMSCRIPT || (self.BUTTON_ATCK2 && self.weapon == WEP_VORTEX) || (self.BUTTON_ATCK2 && self.weapon == WEP_RIFLE && WEP_CVAR(rifle, secondary) == 0)); // WEAPONTODO float oldspectatee_status; oldspectatee_status = self.spectatee_status; @@ -2484,6 +2479,7 @@ void PlayerPreThink (void) target_voicescript_next(self); + // WEAPONTODO: Move into weaponsystem somehow // if a player goes unarmed after holding a loaded weapon, empty his clip size and remove the crosshair ammo ring if(!self.weapon) self.clip_load = self.clip_size = 0;