r4061 - in trunk/data: models/sprites qcsrc/server scripts

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sat Aug 9 01:30:43 EDT 2008


Author: div0
Date: 2008-08-09 01:30:43 -0400 (Sat, 09 Aug 2008)
New Revision: 4061

Modified:
   trunk/data/models/sprites/danger.sp2
   trunk/data/models/sprites/helpme.sp2
   trunk/data/models/sprites/here.sp2
   trunk/data/models/sprites/keycarrier-finish.sp2
   trunk/data/models/sprites/make-sprites.sh
   trunk/data/models/sprites/redbase.sp2
   trunk/data/qcsrc/server/race.qc
   trunk/data/qcsrc/server/scores.qc
   trunk/data/qcsrc/server/scores_rules.qc
   trunk/data/qcsrc/server/t_jumppads.qc
   trunk/data/qcsrc/server/t_teleporters.qc
   trunk/data/scripts/entities.def
Log:
fix Qualifying mode for race; make teleporters able to trigger a timing event


Modified: trunk/data/models/sprites/danger.sp2
===================================================================
(Binary files differ)

Modified: trunk/data/models/sprites/helpme.sp2
===================================================================
(Binary files differ)

Modified: trunk/data/models/sprites/here.sp2
===================================================================
(Binary files differ)

Modified: trunk/data/models/sprites/keycarrier-finish.sp2
===================================================================
(Binary files differ)

Modified: trunk/data/models/sprites/make-sprites.sh
===================================================================
--- trunk/data/models/sprites/make-sprites.sh	2008-08-08 18:07:15 UTC (rev 4060)
+++ trunk/data/models/sprites/make-sprites.sh	2008-08-09 05:30:43 UTC (rev 4061)
@@ -161,3 +161,5 @@
 sprite ons-cp-atck-blue   "CONTROL POINT" 0000ff 000000 0.5 0000ff ffff00 0.5
 sprite ons-cp-dfnd-red    "CONTROL POINT" ff0000 000000 0.5 ff0000 ffffff 0.5
 sprite ons-cp-dfnd-blue   "CONTROL POINT" 0000ff 000000 0.5 0000ff ffffff 0.5
+sprite race-checkpoint    "CHECKPOINT"    000000 ffffff 0.0
+sprite race-finish        "FINISH"        000000 ffffff 0.0

Modified: trunk/data/models/sprites/redbase.sp2
===================================================================
(Binary files differ)

Modified: trunk/data/qcsrc/server/race.qc
===================================================================
--- trunk/data/qcsrc/server/race.qc	2008-08-08 18:07:15 UTC (rev 4060)
+++ trunk/data/qcsrc/server/race.qc	2008-08-09 05:30:43 UTC (rev 4061)
@@ -1,6 +1,8 @@
 .float race_checkpoint; // player: next checkpoint that has to be reached
 .float race_laptime;
 
+.entity sprite;
+
 float race_checkpoint_records[256];
 string race_checkpoint_recordholders[256];
 
@@ -157,7 +159,8 @@
 	}
 	else
 	{
-		Damage (other, self, self, 10000, DEATH_HURTTRIGGER, other.origin, '0 0 0');
+		if(self.spawnflags & 4)
+			Damage (other, self, self, 10000, DEATH_HURTTRIGGER, other.origin, '0 0 0');
 	}
 }
 
@@ -167,6 +170,16 @@
 	checkpoint_touch();
 }
 
+float race_waypointsprite_for_player(entity e)
+{
+	if(e.race_checkpoint == -1)
+		return self.modelindex;
+	else if(e.race_checkpoint == self.owner.cnt)
+		return self.modelindex;
+	else
+		return FALSE;
+}
+
 void spawnfunc_trigger_race_checkpoint()
 {
 	vector o;
@@ -179,8 +192,8 @@
 		self.touch = checkpoint_touch;
 
 	o = (self.absmin + self.absmax) * 0.5;
-	traceline(o, o - '0 0 1' * (o_z - self.absmin_z), MOVE_NORMAL, self);
-	o = trace_endpos - '0 0 1' * PL_MIN_z;
+	tracebox(o, PL_MIN, PL_MAX, o - '0 0 1' * (o_z - self.absmin_z), MOVE_NORMAL, self);
+	o = trace_endpos;
 	self.nearestwaypoint = waypoint_spawn(o, o, WAYPOINTFLAG_GENERATED);
 	self.nearestwaypointtimeout = time + 1000000000;
 
@@ -189,6 +202,18 @@
 
 	if(self.cnt > race_highest_checkpoint)
 		race_highest_checkpoint = self.cnt;
+
+	if(self.cnt)
+	{
+		precache_model("models/sprites/race-checkpoint.sp2");
+		WaypointSprite_SpawnFixed("race-checkpoint", o, self, sprite);
+	}
+	else
+	{
+		precache_model("models/sprites/race-finish.sp2");
+		WaypointSprite_SpawnFixed("race-finish", o, self, sprite);
+	}
+	self.sprite.waypointsprite_for_player = race_waypointsprite_for_player;
 }
 
 void race_PreparePlayer()

Modified: trunk/data/qcsrc/server/scores.qc
===================================================================
--- trunk/data/qcsrc/server/scores.qc	2008-08-08 18:07:15 UTC (rev 4060)
+++ trunk/data/qcsrc/server/scores.qc	2008-08-09 05:30:43 UTC (rev 4061)
@@ -329,6 +329,16 @@
 
 		WinningConditionHelper_topscore = teamscorekeepers[WinningConditionHelper_winnerteam].teamscores_primary;
 		WinningConditionHelper_lowerisbetter = (teamscores_flags_primary & SFL_LOWER_IS_BETTER);
+		if(teamscores_flags_primary & SFL_ZERO_IS_WORST)
+			if(WinningConditionHelper_topscore == 0)
+			{
+				if(WinningConditionHelper_lowerisbetter)
+					WinningConditionHelper_topscore = 999999999;
+				else
+					WinningConditionHelper_topscore = -999999999;
+			}
+		if(teamscores_flags_primary & SFL_TIME)
+			WinningConditionHelper_topscore /= 10;
 
 		WinningConditionHelper_winner = world;
 		if(WinningConditionHelper_equality)
@@ -354,6 +364,16 @@
 
 		WinningConditionHelper_topscore = WinningConditionHelper_winner.scorekeeper.scores_primary;
 		WinningConditionHelper_lowerisbetter = (scores_flags_primary & SFL_LOWER_IS_BETTER);
+		if(scores_flags_primary & SFL_ZERO_IS_WORST)
+			if(WinningConditionHelper_topscore == 0)
+			{
+				if(WinningConditionHelper_lowerisbetter)
+					WinningConditionHelper_topscore = 999999999;
+				else
+					WinningConditionHelper_topscore = -999999999;
+			}
+		if(teamscores_flags_primary & SFL_TIME)
+			WinningConditionHelper_topscore /= 10;
 
 		if(WinningConditionHelper_equality)
 			WinningConditionHelper_winner = world;

Modified: trunk/data/qcsrc/server/scores_rules.qc
===================================================================
--- trunk/data/qcsrc/server/scores_rules.qc	2008-08-08 18:07:15 UTC (rev 4060)
+++ trunk/data/qcsrc/server/scores_rules.qc	2008-08-09 05:30:43 UTC (rev 4061)
@@ -128,13 +128,13 @@
 	ScoreRules_basics(0, 0);
 	if(cvar("g_race_qualifying"))
 	{
-		ScoreInfo_SetLabel_PlayerScore(SP_RACE_LAPS,    "laps",      SFL_SORT_PRIO_PRIMARY);
-		ScoreInfo_SetLabel_PlayerScore(SP_RACE_FASTEST, "fastest",   SFL_SORT_PRIO_SECONDARY | SFL_LOWER_IS_BETTER | SFL_TIME);
+		ScoreInfo_SetLabel_PlayerScore(SP_RACE_LAPS,    "laps",      0);
+		ScoreInfo_SetLabel_PlayerScore(SP_RACE_FASTEST, "fastest",   SFL_SORT_PRIO_PRIMARY | SFL_LOWER_IS_BETTER | SFL_TIME);
 	}
 	else
 	{
-		ScoreInfo_SetLabel_PlayerScore(SP_RACE_LAPS,    "laps",      0);
-		ScoreInfo_SetLabel_PlayerScore(SP_RACE_FASTEST, "fastest",   SFL_SORT_PRIO_PRIMARY | SFL_LOWER_IS_BETTER | SFL_TIME);
+		ScoreInfo_SetLabel_PlayerScore(SP_RACE_LAPS,    "laps",      SFL_SORT_PRIO_PRIMARY);
+		ScoreInfo_SetLabel_PlayerScore(SP_RACE_FASTEST, "fastest",   SFL_SORT_PRIO_SECONDARY | SFL_LOWER_IS_BETTER | SFL_TIME);
 	}
 	ScoreRules_basics_end();
 }

Modified: trunk/data/qcsrc/server/t_jumppads.qc
===================================================================
--- trunk/data/qcsrc/server/t_jumppads.qc	2008-08-08 18:07:15 UTC (rev 4060)
+++ trunk/data/qcsrc/server/t_jumppads.qc	2008-08-09 05:30:43 UTC (rev 4061)
@@ -4,6 +4,8 @@
 .float pushltime;
 .float height;
 
+void() SUB_UseTargets;
+
 float trigger_push_calculatevelocity_flighttime;
 
 /*
@@ -155,6 +157,16 @@
 			centerprint(other, self.message);
 	}
 
+	if(self.enemy.target)
+	{
+		entity oldself;
+		oldself = self;
+		activator = other;
+		self = self.enemy;
+		SUB_UseTargets();
+		self = oldself;
+	}
+
 	// reset tracking of who pushed you into a hazard (for kill credit)
 	other.pushltime = 0;
 

Modified: trunk/data/qcsrc/server/t_teleporters.qc
===================================================================
--- trunk/data/qcsrc/server/t_teleporters.qc	2008-08-08 18:07:15 UTC (rev 4060)
+++ trunk/data/qcsrc/server/t_teleporters.qc	2008-08-09 05:30:43 UTC (rev 4061)
@@ -56,6 +56,7 @@
 void Teleport_Touch (void)
 {
 	entity head;
+	entity oldself;
 
 	if (other.health < 1)
 		return;
@@ -120,12 +121,20 @@
 
 	// stop player name display
 	{
-		entity oldself;
 		oldself = self;
 		self = other;
 		ClearSelectedPlayer();
 		self = oldself;
 	}
+
+	if(self.enemy.target)
+	{
+		oldself = self;
+		activator = other;
+		self = self.enemy;
+		SUB_UseTargets();
+		self = oldself;
+	}
 }
 
 void spawnfunc_info_teleport_destination (void)

Modified: trunk/data/scripts/entities.def
===================================================================
--- trunk/data/scripts/entities.def	2008-08-08 18:07:15 UTC (rev 4060)
+++ trunk/data/scripts/entities.def	2008-08-09 05:30:43 UTC (rev 4061)
@@ -559,6 +559,7 @@
 Teleport destination location point for trigger_teleport entities. Do not let it touch the floor, but place it slightly higher (like, 16 units above) for better flow when jumping through it.
 -------- KEYS --------
 targetname: make the trigger_teleporter point to this.
+target: target to activate when a teleporter targeting this is used
 angle: direction in which player will look when teleported, OR use
 angles: pitch and yaw when coming out of the teleporter (also specifies the direction the player will aim when coming out)
 */
@@ -640,6 +641,7 @@
 Aiming target for entities like light and trigger_push.
 -------- KEYS --------
 targetname: the entity that requires an aiming direction points to this.
+target: target to activate when a jumppad targeting this is used
 */
 
 /*QUAKED target_speaker (0 .7 .7) (-8 -8 -8) (8 8 8) 
@@ -885,10 +887,12 @@
 _celshader: Sets the cel shader used for this geometry. Note: omit the "textures/" prefix.
 */
 
-/*QUAKED trigger_race_checkpoint (0 1 0) ? 
+/*QUAKED trigger_race_checkpoint (0 1 0) ? - - CRUSH
 A checkpoint, for the race game mode. Be sure to make them quite long, so they actually catch a player reliably!
 -------- KEYS --------
 cnt: Number of the checkpoint. 0 for finish line, and at least two other checkpoints have to exist. They MUST be touched in sequential order!
 message: Death message, when touching checkpoints in the wrong order.
+-------- SPAWNFLAGS --------
+CRUSH: the checkpoint kills when used at the wrong time
 */
 




More information about the nexuiz-commits mailing list