From c07f08419a518a6e27dff7ff46524983c9d2c3c7 Mon Sep 17 00:00:00 2001 From: div0 Date: Fri, 7 Dec 2007 18:54:16 +0000 Subject: [PATCH] add noalign support to flags git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3008 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/ctf.qc | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/data/qcsrc/server/ctf.qc b/data/qcsrc/server/ctf.qc index 88cac43c5..8a2d87bcf 100644 --- a/data/qcsrc/server/ctf.qc +++ b/data/qcsrc/server/ctf.qc @@ -1,6 +1,7 @@ .float next_take_time; // the next time a player can pick up a flag (time + blah) /// I used this, in part, to fix the looping score bug. - avirox +.float movetype_orig; //float FLAGSCORE_PICKUP = 1; //float FLAGSCORE_RETURN = 5; // returned by owner team @@ -24,7 +25,7 @@ void() place_flag = self.mdl = self.model; self.flags = FL_ITEM; self.solid = SOLID_TRIGGER; - self.movetype = MOVETYPE_TOSS; + self.movetype = self.movetype_orig; self.velocity = '0 0 0'; self.origin_z = self.origin_z + 6; self.think = FlagThink; @@ -34,12 +35,13 @@ void() place_flag = self.mangle = self.angles; self.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP; //self.effects = self.effects | EF_DIMLIGHT; - if (!droptofloor()) - { - dprint("Flag fell out of level at ", vtos(self.origin), "\n"); - remove(self); - return; - } + if(!self.noalign) + if (!droptofloor()) + { + dprint("Flag fell out of level at ", vtos(self.origin), "\n"); + remove(self); + return; + } self.oldorigin = self.origin; }; @@ -58,7 +60,7 @@ void LogCTF(string mode, float flagteam, entity actor) void(entity e) RegenFlag = { setattachment(e, world, ""); - e.movetype = MOVETYPE_TOSS; + e.movetype = self.movetype_orig; e.solid = SOLID_TRIGGER; // TODO: play a sound here setorigin(e, e.oldorigin); @@ -406,6 +408,8 @@ void() item_flag_team1 = self.netname = "^1RED^7 flag"; self.target = "###item###"; self.skin = 0; + if(self.spawnflags & 1) + self.noalign = 1; if (!self.model) self.model = "models/ctf/flag_red.md3"; if (!self.noise) @@ -433,7 +437,8 @@ void() item_flag_team1 = // self.glow_size = 50; self.effects = self.effects | EF_FULLBRIGHT | EF_LOWPRECISION; - droptofloor(); + if(!self.noalign) + droptofloor(); WaypointSprite_SpawnFixed("redbase", self.origin + '0 0 37'); }; @@ -462,6 +467,8 @@ void() item_flag_team2 = self.netname = "^4BLUE^7 flag"; self.target = "###item###"; self.skin = 0; + if(self.spawnflags & 1) + self.noalign = 1; if (!self.model) self.model = "models/ctf/flag_blue.md3"; if (!self.noise) @@ -489,7 +496,8 @@ void() item_flag_team2 = // self.glow_size = 50; self.effects = self.effects | EF_FULLBRIGHT | EF_LOWPRECISION; - droptofloor(); + if(!self.noalign) + droptofloor(); WaypointSprite_SpawnFixed("bluebase", self.origin + '0 0 37'); }; -- 2.39.2