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