r3232 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Wed Jan 23 03:34:48 EST 2008
Author: div0
Date: 2008-01-23 03:34:46 -0500 (Wed, 23 Jan 2008)
New Revision: 3232
Modified:
trunk/data/qcsrc/server/mode_onslaught.qc
Log:
Onslaught: use the new waypoint sprites! But I don't like them yet... need to get changed in graphics.
Modified: trunk/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- trunk/data/qcsrc/server/mode_onslaught.qc 2008-01-23 07:56:15 UTC (rev 3231)
+++ trunk/data/qcsrc/server/mode_onslaught.qc 2008-01-23 08:34:46 UTC (rev 3232)
@@ -2,10 +2,15 @@
.string target2;
.float iscaptured;
.float islinked;
+.float isgenneighbor_red;
+.float isgenneighbor_blue;
+.float iscpneighbor_red;
+.float iscpneighbor_blue;
.float isshielded;
.float lasthealth;
float ons_sprite_cp_red, ons_sprite_cp_blue, ons_sprite_cp_neut;
+float ons_sprite_cp_atck_red, ons_sprite_cp_atck_blue, ons_sprite_cp_atck_neut;
float ons_sprite_gen_red, ons_sprite_gen_blue, ons_sprite_gen_shielded;
void() onslaught_updatelinks =
@@ -33,6 +38,10 @@
{
l.islinked = FALSE;
l.isshielded = TRUE;
+ l.isgenneighbor_red = FALSE;
+ l.isgenneighbor_blue = FALSE;
+ l.iscpneighbor_red = FALSE;
+ l.iscpneighbor_blue = FALSE;
dprint(etos(l), " (point) belongs to team ", ftos(l.team), "\n");
l = l.chain;
}
@@ -83,11 +92,39 @@
{
dprint(etos(l), " (link) is unshielding ", etos(l.enemy), " (point) because its team does not match ", etos(l.goalentity), " (point)\n");
l.enemy.isshielded = FALSE;
+ if(l.goalentity.classname == "onslaught_generator")
+ {
+ if(l.goalentity.team == COLOR_TEAM1)
+ l.enemy.isgenneighbor_red = TRUE;
+ else if(l.goalentity.team == COLOR_TEAM2)
+ l.enemy.isgenneighbor_blue = TRUE;
+ }
+ else
+ {
+ if(l.goalentity.team == COLOR_TEAM1)
+ l.enemy.iscpneighbor_red = TRUE;
+ else if(l.goalentity.team == COLOR_TEAM2)
+ l.enemy.iscpneighbor_blue = TRUE;
+ }
}
if (l.enemy.islinked)
{
dprint(etos(l), " (link) is unshielding ", etos(l.goalentity), " (point) because its team does not match ", etos(l.enemy), " (point)\n");
l.goalentity.isshielded = FALSE;
+ if(l.enemy.classname == "onslaught_generator")
+ {
+ if(l.enemy.team == COLOR_TEAM1)
+ l.goalentity.isgenneighbor_red = TRUE;
+ else if(l.enemy.team == COLOR_TEAM2)
+ l.goalentity.isgenneighbor_blue = TRUE;
+ }
+ else
+ {
+ if(l.enemy.team == COLOR_TEAM1)
+ l.goalentity.iscpneighbor_red = TRUE;
+ else if(l.enemy.team == COLOR_TEAM2)
+ l.goalentity.iscpneighbor_blue = TRUE;
+ }
}
}
l = l.chain;
@@ -161,6 +198,22 @@
float onslaught_controlpoint_can_be_linked(entity cp, float t)
{
+ if(t == COLOR_TEAM1)
+ {
+ if(cp.isgenneighbor_red)
+ return 2;
+ if(cp.iscpneighbor_red)
+ return 1;
+ }
+ else if(t == COLOR_TEAM2)
+ {
+ if(cp.isgenneighbor_blue)
+ return 2;
+ if(cp.iscpneighbor_blue)
+ return 1;
+ }
+ return 0;
+/*
entity e;
// check to see if this player has a legitimate claim to capture this
// control point - more specifically that there is a captured path of
@@ -205,6 +258,7 @@
e = e.chain;
}
return 0;
+*/
}
float onslaught_controlpoint_attackable(entity cp, float t)
@@ -212,7 +266,11 @@
// 0: off limits
// 1: attack it
// 2: touch it
+// 3: attack it (HIGH PRIO)
+// 4: touch it (HIGH PRIO)
{
+ float a;
+
if(cp.isshielded)
{
return 0;
@@ -222,14 +280,24 @@
// if there's already an icon built, nothing happens
if(cp.team == t)
return -1;
- //if(onslaught_controlpoint_can_be_linked(cp, t))
- return 1;
+ // we know it can be linked, so no need to check
+ // but...
+ a = onslaught_controlpoint_can_be_linked(cp, t);
+ if(a == 2) // near our generator?
+ return 3; // EMERGENCY!
+ return 1;
}
else
{
// free point
if(onslaught_controlpoint_can_be_linked(cp, t))
- return 2;
+ {
+ a = onslaught_controlpoint_can_be_linked(cp, COLOR_TEAM1 + COLOR_TEAM2 - t);
+ if(a == 2)
+ return 4; // GET THIS ONE NOW!
+ else
+ return 2; // TOUCH ME
+ }
}
return 0;
}
@@ -372,9 +440,18 @@
if(e.classname == "player")
{
a = onslaught_controlpoint_attackable(self.owner, e.team);
- if(self.owner.team == e.team || a == -1 || a == 1) // own point, or fire at it
+ if(a == 3 || a == 4) // ATTACK/TOUCH THIS ONE NOW
{
if(self.owner.team == COLOR_TEAM1)
+ return ons_sprite_cp_atck_red;
+ else if(self.owner.team == COLOR_TEAM2)
+ return ons_sprite_cp_atck_blue;
+ else
+ return ons_sprite_cp_atck_neut;
+ }
+ else if(self.owner.team == e.team || a == -1 || a == 1) // own point, or fire at it
+ {
+ if(self.owner.team == COLOR_TEAM1)
return ons_sprite_cp_red;
else if(self.owner.team == COLOR_TEAM2)
return ons_sprite_cp_blue;
@@ -422,6 +499,15 @@
precache_model("models/sprites/ons-cp-neut.sp2");
setmodel(self, "models/sprites/ons-cp-neut.sp2");
ons_sprite_cp_neut = self.modelindex;
+ precache_model("models/sprites/ons-cp-atck-blue.sp2");
+ setmodel(self, "models/sprites/ons-cp-atck-blue.sp2");
+ ons_sprite_cp_atck_blue = self.modelindex;
+ precache_model("models/sprites/ons-cp-atck-red.sp2");
+ setmodel(self, "models/sprites/ons-cp-atck-red.sp2");
+ ons_sprite_cp_atck_red = self.modelindex;
+ precache_model("models/sprites/ons-cp-atck-neut.sp2");
+ setmodel(self, "models/sprites/ons-cp-atck-neut.sp2");
+ ons_sprite_cp_atck_neut = self.modelindex;
precache_model("models/sprites/ons-gen-blue.sp2");
setmodel(self, "models/sprites/ons-gen-blue.sp2");
ons_sprite_gen_blue = self.modelindex;
@@ -571,9 +657,11 @@
void() onslaught_controlpoint_touch =
{
local entity e;
+ float a;
if (other.classname != "player")
return;
- if(onslaught_controlpoint_attackable(self, other.team) != 2)
+ a = onslaught_controlpoint_attackable(self, other.team);
+ if(a != 2 && a != 4)
return;
// we've verified that this player has a legitimate claim to this point,
// so start building the captured point icon (which only captures this
More information about the nexuiz-commits
mailing list