X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fgamemodes%2Fgamemode%2Fctf%2Fsv_ctf.qc;fp=qcsrc%2Fcommon%2Fgamemodes%2Fgamemode%2Fctf%2Fsv_ctf.qc;h=91952b2d15746ce085923c62007e35213717722d;hp=a1e1c59900ba4ac5ac435e8dcdc73d431f0bc57a;hb=2ae933c54f6de686a0dc00b26bdac415ced445dd;hpb=34f4781ebdc3d07c1fce44e835485a6a154dd9e4 diff --git a/qcsrc/common/gamemodes/gamemode/ctf/sv_ctf.qc b/qcsrc/common/gamemodes/gamemode/ctf/sv_ctf.qc index a1e1c5990..91952b2d1 100644 --- a/qcsrc/common/gamemodes/gamemode/ctf/sv_ctf.qc +++ b/qcsrc/common/gamemodes/gamemode/ctf/sv_ctf.qc @@ -356,6 +356,7 @@ void ctf_Handle_Drop(entity flag, entity player, int droptype) flag.angles = '0 0 0'; SetResourceExplicit(flag, RES_HEALTH, flag.max_health); flag.ctf_droptime = time; + flag.ctf_landtime = 0; flag.ctf_dropper = player; flag.ctf_status = FLAG_DROPPED; @@ -473,6 +474,7 @@ void ctf_Handle_Throw(entity player, entity receiver, int droptype) flag.solid = SOLID_TRIGGER; flag.ctf_dropper = player; flag.ctf_droptime = time; + flag.ctf_landtime = 0; flag.flags = FL_ITEM | FL_NOTARGET; // clear FL_ONGROUND for MOVETYPE_TOSS @@ -949,7 +951,7 @@ void ctf_FlagThink(entity this) for(tmp_entity = ctf_worldflaglist; tmp_entity; tmp_entity = tmp_entity.ctf_worldflagnext) if(tmp_entity.ctf_status == FLAG_DROPPED) if(vdist(this.origin - tmp_entity.origin, <, autocvar_g_ctf_dropped_capture_radius)) - if(time > tmp_entity.ctf_droptime + autocvar_g_ctf_dropped_capture_delay) + if((this.noalign || tmp_entity.ctf_landtime) && time > ((this.noalign) ? tmp_entity.ctf_droptime : tmp_entity.ctf_landtime) + autocvar_g_ctf_dropped_capture_delay) ctf_Handle_Capture(this, tmp_entity, CAPTURE_DROPPED); } return; @@ -958,6 +960,8 @@ void ctf_FlagThink(entity this) case FLAG_DROPPED: { this.angles = '0 0 0'; // reset flag angles in case warpzones adjust it + if(IS_ONGROUND(this) && !this.ctf_landtime) + this.ctf_landtime = time; // landtime is reset when thrown, and we don't want to restart the timer if the flag is pushed if(autocvar_g_ctf_flag_dropped_floatinwater) { @@ -1210,6 +1214,7 @@ void ctf_RespawnFlag(entity flag) flag.ctf_dropper = NULL; flag.ctf_pickuptime = 0; flag.ctf_droptime = 0; + flag.ctf_landtime = 0; flag.ctf_flagdamaged_byworld = false; navigation_dynamicgoal_unset(flag);