]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote-tracking branch 'origin/master' into pending-release
authorbones_was_here <bones_was_here@xonotic.au>
Tue, 9 May 2023 09:22:19 +0000 (19:22 +1000)
committerbones_was_here <bones_was_here@xonotic.au>
Tue, 9 May 2023 09:22:19 +0000 (19:22 +1000)
1  2 
qcsrc/common/gamemodes/gamemode/ctf/sv_ctf.qc

index 92603311abd709836adf121f787d540faaded464,d92dd0a3b99245f0d38553f429edbd3a248e0254..e16ed913829338802823dddce026e7be7f42d989
@@@ -401,6 -401,7 +401,7 @@@ void ctf_Handle_Retrieve(entity flag, e
        GameRules_scoring_vip(player, true);
  
        // reset flag
+       flag.solid = SOLID_NOT; // before setorigin to prevent area grid linking
        if(player.vehicle)
        {
                setattachment(flag, player.vehicle, "");
        }
        set_movetype(flag, MOVETYPE_NONE);
        flag.takedamage = DAMAGE_NO;
-       flag.solid = SOLID_NOT;
        flag.angles = '0 0 0';
        flag.ctf_status = FLAG_CARRY;
  
@@@ -467,11 -467,11 +467,11 @@@ void ctf_Handle_Throw(entity player, en
        // reset the flag
        setattachment(flag, NULL, "");
        tracebox(player.origin - FLAG_DROP_OFFSET, flag.m_mins, flag.m_maxs, player.origin + FLAG_DROP_OFFSET, MOVE_NOMONSTERS, flag);
+       flag.solid = SOLID_TRIGGER; // before setorigin to ensure area grid linking
        setorigin(flag, trace_endpos);
        flag.owner.flagcarried = NULL;
        GameRules_scoring_vip(flag.owner, false);
        flag.owner = NULL;
-       flag.solid = SOLID_TRIGGER;
        flag.ctf_dropper = player;
        flag.ctf_droptime = time;
        flag.ctf_landtime = 0;
@@@ -689,6 -689,7 +689,7 @@@ void ctf_Handle_Pickup(entity flag, ent
        flag.owner = player;
        player.flagcarried = flag;
        GameRules_scoring_vip(player, true);
+       flag.solid = SOLID_NOT; // before setorigin to prevent area grid linking
        if(player.vehicle)
        {
                setattachment(flag, player.vehicle, "");
        // flag setup
        set_movetype(flag, MOVETYPE_NONE);
        flag.takedamage = DAMAGE_NO;
-       flag.solid = SOLID_NOT;
        flag.angles = '0 0 0';
        flag.ctf_status = FLAG_CARRY;
  
@@@ -1186,13 -1186,13 +1186,13 @@@ void ctf_RespawnFlag(entity flag
  
        // reset the flag
        setattachment(flag, NULL, "");
+       flag.solid = SOLID_TRIGGER; // before setorigin to ensure area grid linking
        setorigin(flag, flag.ctf_spawnorigin);
  
        //set_movetype(flag, ((flag.noalign) ? MOVETYPE_NONE : MOVETYPE_TOSS)); // would be desired, except maps that want floating flags have it set to fall!
        set_movetype(flag, MOVETYPE_NONE); // match the initial setup handling (flag doesn't move when spawned)
        flag.takedamage = DAMAGE_NO;
        SetResourceExplicit(flag, RES_HEALTH, flag.max_health);
-       flag.solid = SOLID_TRIGGER;
        flag.velocity = '0 0 0';
        flag.angles = flag.mangle;
        flag.flags = FL_ITEM | FL_NOTARGET;
@@@ -1300,11 -1300,6 +1300,11 @@@ void ctf_FlagSetup(int teamnum, entity 
        flag.nextthink = time + FLAG_THINKRATE;
        flag.ctf_status = FLAG_BASE;
  
 +      // set correct team colors
 +      flag.glowmod = Team_ColorRGB(teamnum);
 +      flag.colormap = (teamnum) ? (teamnum - 1) * 0x11 : 0x00;
 +      flag.colormap |= BIT(10); // RENDER_COLORMAPPED
 +
        // crudely force them all to 0
        if(autocvar_g_ctf_score_ignore_fields)
                flag.cnt = flag.score_assist = flag.score_team_capture = flag.score_capture = flag.score_drop = flag.score_pickup = flag.score_return = 0;