X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fctf.qc;h=b31e1429381ca5637966f9dfd8a0bde4c308474c;hp=6e314c88efd50f223f1c6ef15a8a1ae2a7c721e6;hb=dcaa708cee1093798a651369d9fd46ad5074121e;hpb=c41727946009fa3197280323439f8bca789cc7e9 diff --git a/qcsrc/server/ctf.qc b/qcsrc/server/ctf.qc index 6e314c88e..b31e14293 100644 --- a/qcsrc/server/ctf.qc +++ b/qcsrc/server/ctf.qc @@ -150,7 +150,7 @@ void FakeTimeLimit(entity e, float t) WriteByte(MSG_ONE, 3); // svc_updatestat WriteByte(MSG_ONE, 236); // STAT_TIMELIMIT if(t < 0) - WriteCoord(MSG_ONE, cvar("timelimit")); + WriteCoord(MSG_ONE, autocvar_timelimit); else WriteCoord(MSG_ONE, (t + 1) / 60); } @@ -171,11 +171,6 @@ void place_flag() return; } - if(!self.t_width) - self.t_width = 0.1; // frame animation rate - if(!self.t_length) - self.t_length = 58; // maximum frame - setattachment(self, world, ""); self.mdl = self.model; self.flags = FL_ITEM; @@ -188,7 +183,7 @@ void place_flag() self.nextthink = time + 0.1; self.cnt = FLAG_BASE; self.mangle = self.angles; - self.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP; + self.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP | DPCONTENTS_BOTCLIP; //self.effects = self.effects | EF_DIMLIGHT; if(self.noalign) { @@ -206,7 +201,7 @@ void place_flag() void LogCTF(string mode, float flagteam, entity actor) { string s; - if(!cvar("sv_eventlog")) + if(!autocvar_sv_eventlog) return; s = strcat(":ctf:", mode); s = strcat(s, ":", ftos(flagteam)); @@ -317,7 +312,7 @@ void DropFlag(entity e, entity penalty_receiver, entity attacker) sound (self, CHAN_TRIGGER, self.noise4, VOL_BASE, ATTN_NONE); setattachment(e, world, ""); - e.damageforcescale = cvar("g_balance_ctf_damageforcescale"); + e.damageforcescale = autocvar_g_balance_ctf_damageforcescale; e.takedamage = DAMAGE_YES; if (p.flagcarried == e) @@ -331,7 +326,7 @@ void DropFlag(entity e, entity penalty_receiver, entity attacker) setorigin(e, p.origin - '0 0 24' + '0 0 37'); e.cnt = FLAG_DROPPED; e.velocity = '0 0 300'; - e.pain_finished = time + cvar("g_ctf_flag_returntime");//30; + e.pain_finished = time + autocvar_g_ctf_flag_returntime;//30; trace_startsolid = FALSE; tracebox(e.origin, e.mins, e.maxs, e.origin, TRUE, e); @@ -339,19 +334,6 @@ void DropFlag(entity e, entity penalty_receiver, entity attacker) dprint("FLAG FALLTHROUGH will happen SOON\n"); }; -void AnimateFlag() -{ - if(self.delay > time) - return; - self.delay = time + self.t_width; - if(self.nextthink > self.delay) - self.nextthink = self.delay; - - self.frame = self.frame + 1; - if(self.frame > self.t_length) - self.frame = 0; -} - void FlagThink() { local entity e; @@ -373,8 +355,6 @@ void FlagThink() ctf_captureshield_update(e, 1); // release shield only } - AnimateFlag(); - if(self.speedrunning) if(self.cnt == FLAG_CARRY) { @@ -426,7 +406,7 @@ void FlagThink() return; } - if(cvar("g_ctf_allow_drop")) + if(autocvar_g_ctf_allow_drop) if(e.BUTTON_USE) DropFlag(self, e, world); }; @@ -460,7 +440,7 @@ void FlagTouch() { return; } - if(cvar("g_ctf_captimerecord_always") || player_count - currentbots <= 1) // at most one human + if(autocvar_g_ctf_captimerecord_always || player_count - currentbots <= 1) // at most one human { t = time - other.flagcarried.flagpickuptime; s = ftos_decimals(t, 2); @@ -502,7 +482,7 @@ void FlagTouch() // give credit to the individual player UpdateFrags(other, ctf_score_value("score_capture")); - if (cvar("g_ctf_flag_capture_effects")) { + if (autocvar_g_ctf_flag_capture_effects) { if (other.team == COLOR_TEAM1) { // red team scores effect pointparticles(particleeffectnum("red_ground_quake"), self.origin, '0 0 0', 1); flag_cap_ring_spawn(self.origin); @@ -530,7 +510,7 @@ void FlagTouch() if (other.next_take_time > time) return; - if (cvar("g_ctf_flag_pickup_effects")) // pickup effect + if (autocvar_g_ctf_flag_pickup_effects) // pickup effect pointparticles(particleeffectnum("smoke_ring"), 0.5 * (self.absmin + self.absmax), '0 0 0', 1); // pick up @@ -610,12 +590,12 @@ void FlagTouch() sound (other, CHAN_AUTO, self.noise1, VOL_BASE, ATTN_NONE); ReturnFlag(self); } - else if (!other.flagcarried && (other.playerid != self.dropperid || time > self.ctf_droptime + cvar("g_balance_ctf_delay_collect"))) + else if (!other.flagcarried && (other.playerid != self.dropperid || time > self.ctf_droptime + autocvar_g_balance_ctf_delay_collect)) { if(self.waypointsprite_attachedforcarrier) WaypointSprite_DetachCarrier(self); - if (cvar("g_ctf_flag_pickup_effects")) // field pickup effect + if (autocvar_g_ctf_flag_pickup_effects) // field pickup effect pointparticles(particleeffectnum("smoke_ring"), 0.5 * (self.absmin + self.absmax), '0 0 0', 1); // pick up @@ -628,7 +608,7 @@ void FlagTouch() //bprint(other.netname, "^7 picked up the ", self.netname, "\n"); float f; - f = bound(0, (self.pain_finished - time) / cvar("g_ctf_flag_returntime"), 1); + f = bound(0, (self.pain_finished - time) / autocvar_g_ctf_flag_returntime, 1); //print("factor is ", ftos(f), "\n"); f = ctf_score_value("score_pickup_dropped_late") * (1-f) + ctf_score_value("score_pickup_dropped_early") * f; @@ -747,7 +727,7 @@ void item_flag_postspawn() { // Check CTF Item Flag Post Spawn // Flag Glow Trail Support - if(cvar("g_ctf_flag_glowtrails")) + if(autocvar_g_ctf_flag_glowtrails) { // Provide Flag Glow Trail if(self.team == COLOR_TEAM1) // Red @@ -795,9 +775,6 @@ void spawnfunc_item_flag_team1() return; } - //if(!cvar("teamplay")) - // cvar_set("teamplay", "3"); - // link flag into ctf_worldflaglist self.ctf_worldflagnext = ctf_worldflaglist; ctf_worldflaglist = self; @@ -815,11 +792,11 @@ void spawnfunc_item_flag_team1() } self.netname = "^1RED^7 flag"; self.target = "###item###"; - self.skin = cvar("g_ctf_flag_red_skin"); + self.skin = autocvar_g_ctf_flag_red_skin; if(self.spawnflags & 1) self.noalign = 1; if (!self.model) - self.model = cvar_string("g_ctf_flag_red_model"); + self.model = autocvar_g_ctf_flag_red_model; if (!self.noise) self.noise = "ctf/red_taken.wav"; if (!self.noise1) @@ -849,9 +826,9 @@ void spawnfunc_item_flag_team1() // self.glow_size = 50; self.effects = self.effects | EF_LOWPRECISION; - if(cvar("g_ctf_fullbrightflags")) + if(autocvar_g_ctf_fullbrightflags) self.effects |= EF_FULLBRIGHT; - if(cvar("g_ctf_dynamiclights")) + if(autocvar_g_ctf_dynamiclights) self.effects |= EF_RED; // From Spidflisk @@ -895,8 +872,6 @@ void spawnfunc_item_flag_team2() remove(self); return; } - //if(!cvar("teamplay")) - // cvar_set("teamplay", "3"); // link flag into ctf_worldflaglist self.ctf_worldflagnext = ctf_worldflaglist; @@ -915,11 +890,11 @@ void spawnfunc_item_flag_team2() } self.netname = "^4BLUE^7 flag"; self.target = "###item###"; - self.skin = cvar("g_ctf_flag_blue_skin"); + self.skin = autocvar_g_ctf_flag_blue_skin; if(self.spawnflags & 1) self.noalign = 1; if (!self.model) - self.model = cvar_string("g_ctf_flag_blue_model"); + self.model = autocvar_g_ctf_flag_blue_model; if (!self.noise) self.noise = "ctf/blue_taken.wav"; if (!self.noise1) @@ -949,9 +924,9 @@ void spawnfunc_item_flag_team2() // self.glow_size = 50; self.effects = self.effects | EF_LOWPRECISION; - if(cvar("g_ctf_fullbrightflags")) + if(autocvar_g_ctf_fullbrightflags) self.effects |= EF_FULLBRIGHT; - if(cvar("g_ctf_dynamiclights")) + if(autocvar_g_ctf_dynamiclights) self.effects |= EF_BLUE; // From Spidflisk @@ -1030,9 +1005,14 @@ void ctf_init() InitializeEntity(world, ctf_delayedinit, INITPRIO_GAMETYPE); flagcaptimerecord = stof(db_get(ServerProgsDB, strcat(GetMapname(), "/captimerecord/time"))); - captureshield_min_negscore = cvar("g_ctf_shield_min_negscore"); - captureshield_max_ratio = cvar("g_ctf_shield_max_ratio"); - captureshield_force = cvar("g_ctf_shield_force"); + captureshield_min_negscore = autocvar_g_ctf_shield_min_negscore; + captureshield_max_ratio = autocvar_g_ctf_shield_max_ratio; + captureshield_force = autocvar_g_ctf_shield_force; + + +//#NO AUTOCVARS START + g_ctf_win_mode = cvar("g_ctf_win_mode"); +//#NO AUTOCVARS END }; void ctf_setstatus2(entity flag, float shift) @@ -1058,42 +1038,40 @@ void ctf_setstatus() self.items &~= IT_BLUE_FLAG_LOST; self.items &~= IT_CTF_SHIELDED; - if (g_ctf) { - local entity flag; - float redflags, blueflags; + local entity flag; + float redflags, blueflags; - if(self.ctf_captureshielded) - self.items |= IT_CTF_SHIELDED; + if(self.ctf_captureshielded) + self.items |= IT_CTF_SHIELDED; - redflags = 0; - blueflags = 0; + redflags = 0; + blueflags = 0; - for (flag = ctf_worldflaglist; flag; flag = flag.ctf_worldflagnext) if(flag.cnt != FLAG_BASE) - { - if(flag.items & IT_KEY2) // blue - ++redflags; - else if(flag.items & IT_KEY1) // red - ++blueflags; - } + for (flag = ctf_worldflaglist; flag; flag = flag.ctf_worldflagnext) if(flag.cnt != FLAG_BASE) + { + if(flag.items & IT_KEY2) // blue + ++redflags; + else if(flag.items & IT_KEY1) // red + ++blueflags; + } - // blinking magic: if there is more than one flag, show one of these in a clever way - if(redflags) - redflags = mod(floor(time * redflags * 0.75), redflags); - if(blueflags) - blueflags = mod(floor(time * blueflags * 0.75), blueflags); + // blinking magic: if there is more than one flag, show one of these in a clever way + if(redflags) + redflags = mod(floor(time * redflags * 0.75), redflags); + if(blueflags) + blueflags = mod(floor(time * blueflags * 0.75), blueflags); - for (flag = ctf_worldflaglist; flag; flag = flag.ctf_worldflagnext) if(flag.cnt != FLAG_BASE) + for (flag = ctf_worldflaglist; flag; flag = flag.ctf_worldflagnext) if(flag.cnt != FLAG_BASE) + { + if(flag.items & IT_KEY2) // blue { - if(flag.items & IT_KEY2) // blue - { - if(--redflags == -1) // happens exactly once (redflags is in 0..count-1, and will --'ed count times) - ctf_setstatus2(flag, IT_RED_FLAG_TAKEN); - } - else if(flag.items & IT_KEY1) // red - { - if(--blueflags == -1) // happens exactly once - ctf_setstatus2(flag, IT_BLUE_FLAG_TAKEN); - } + if(--redflags == -1) // happens exactly once (redflags is in 0..count-1, and will --'ed count times) + ctf_setstatus2(flag, IT_RED_FLAG_TAKEN); + } + else if(flag.items & IT_KEY1) // red + { + if(--blueflags == -1) // happens exactly once + ctf_setstatus2(flag, IT_BLUE_FLAG_TAKEN); } } };