r4741 - in trunk/data/qcsrc/server: . tturrets/include tturrets/system tturrets/units
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Mon Oct 13 11:23:02 EDT 2008
Author: tzork
Date: 2008-10-13 11:23:02 -0400 (Mon, 13 Oct 2008)
New Revision: 4741
Modified:
trunk/data/qcsrc/server/miscfunctions.qc
trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh
trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc
trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc
trunk/data/qcsrc/server/tturrets/units/turret_unit_common.qc
trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc
trunk/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc
trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc
trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc
trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc
trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc
trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc
trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc
trunk/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc
Log:
Turrets precache fixed. Turrets now work with ONS.
Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/miscfunctions.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -731,7 +731,7 @@
entity get_weaponinfo(float w);
-void readplayerstartcvars()
+void readplayerstartcvars()
{
entity e;
float i;
@@ -1021,6 +1021,11 @@
precache_model ("models/runematch/rune.mdl");
}
+#ifdef TTURRETS_ENABLED
+ if(cvar("g_turrets"))
+ turrets_precash();
+#endif
+
// Precache all player models if desired
if (cvar("sv_precacheplayermodels"))
{
@@ -1432,7 +1437,7 @@
}
//
-// func_breakable
+// func_breakable
// - basically func_assault_destructible for general gameplay use
//
float () crandom;
@@ -1440,10 +1445,10 @@
void LaunchDebris (string debrisname) =
{
local entity dbr;
-
+
if (debrisname == "" || !debrisname)
return;
-
+
dbr = spawn();
dbr.origin = self.origin;
setmodel (dbr, debrisname );
@@ -1470,14 +1475,14 @@
self.solid = SOLID_NOT;
}
self.takedamage = DAMAGE_NO;
-
+
// now throw around the debris
LaunchDebris(self.debris1);
LaunchDebris(self.debris2);
LaunchDebris(self.debris3);
-
+
SUB_UseTargets();
-
+
self.event_damage = SUB_Null;
}
@@ -1505,12 +1510,12 @@
- self.classname = "func_breakable";
+ self.classname = "func_breakable";
self.mdl = self.model;
setmodel(self, self.mdl);
-
+
self.solid = SOLID_BSP;
-
+
// precache all the models
if (self.mdl_dead)
precache_model(self.mdl_dead);
@@ -1520,7 +1525,7 @@
precache_model(self.debris2);
if (self.debris3)
precache_model(self.debris3);
-
+
self.use = assault_destructible_use; // shared use function, b/c they woudl do the same thing anyways
self.event_damage = func_breakable_damage;
}
Modified: trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh
===================================================================
--- trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh 2008-10-13 15:23:02 UTC (rev 4741)
@@ -331,8 +331,8 @@
.void() turret_firefunc;
/// prefire checks go here. return 1 to go bang, 0 not to.
.float() turret_firecheckfunc;
-/// Execure BEFORE main ai loop. return 0 to cancel any following proccessing.
-.float() turret_prethink;
+// Execure BEFORE main ai loop. return 0 to cancel any following proccessing.
+//.float() turret_prethink;
/// Execure AFTER main AI loop UNLESS turret_prethink returnd 0
.void() turret_postthink;
@@ -387,7 +387,7 @@
/*
* Damage, death and respawn.
*/
-void turret_gibs_precash();
+//void turret_gibs_precash();
// generalized so save mem (on fields)
// Function to handle incomming damage. usualy turret_stdproc_damage
//.void(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce) turret_damagefunc;
@@ -420,7 +420,7 @@
/// Generic fairly smart bias-aware target selection.
float turret_stdproc_targetscore_generic(entity e_turret, entity e_target);
/// Experimental supportunits targetselector
-float turret_stdproc_targetscore_support(entity e_turret,entity e_target);
+float turret_stdproc_targetscore_support(entity e_turret,entity e_target);
/*
* Aim functions
@@ -462,4 +462,5 @@
.vector tur_shotorg_updated;
.vector tur_shotdir_updated;
+void turrets_precash();
#endif // TTURRETS_ENABLED
Modified: trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -5,19 +5,7 @@
{
self.velocity += vforce;
}
-void turret_gibs_precash()
-{
- precache_model("models/turrets/base-gib1.md3");
- precache_model("models/turrets/base-gib2.md3");
- precache_model("models/turrets/base-gib3.md3");
- precache_model("models/turrets/base-gib4.md3");
- precache_model("models/turrets/head-gib1.md3");
- precache_model("models/turrets/head-gib2.md3");
- precache_model("models/turrets/head-gib3.md3");
- precache_model("models/turrets/head-gib4.md3");
-}
-
void turret_trowgib(
vector v_from, vector v_to, vector v_colormod,
string smodel,
@@ -60,7 +48,7 @@
float i;
string s;
- for (i=1;i<5;i++)
+ for (i = 1; i < 5; i = i +1)
{
gib = spawn();
gib.classname = "turret_gib";
Modified: trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -510,6 +510,36 @@
self.nextthink = (time + self.ticrate);
+ // ONS uses somewhat backwards linking.
+ if(teamplay)
+ {
+ if(g_onslaught)
+ {
+
+ /*
+ // see turret_stdproc_use()
+ if(self.targetname)
+ {
+ e = find(world,target,self.targetname);
+ if(e != world)
+ self.team = e.team;
+ }*/
+ }
+ else
+ {
+ if(self.target)
+ {
+ e = find(world,targetname,self.target);
+ if(e != world)
+ self.team = e.team;
+ }
+ }
+
+ if(self.team != self.tur_head.team)
+ turret_stdproc_respawn();
+ }
+
+
if (cvar("g_turrets_reloadcvars") == 1)
{
e = nextent(world);
@@ -538,7 +568,7 @@
#endif
//Do custom prethink, and bail if it fails.
- if (!self.turret_prethink()) return;
+ //if (!self.turret_prethink()) return;
// Handle ammo
if (self.ammo < self.ammo_max)
@@ -660,11 +690,29 @@
void turret_stdproc_use()
{
- // bprint("Used:",self.netname,"\n");
- if (self.tur_active)
- self.tur_active = 0;
+ // bprint("Used:",self.netname, " By ",other.netname,"\n");
+
+ if(g_onslaught)
+ {
+ entity e;
+
+ if(self.targetname)
+ {
+ e = find(world,target,self.targetname);
+ if(e != world)
+ self.team = e.team;
+ }
+
+ if(self.team != self.tur_head.team)
+ turret_stdproc_respawn();
+ }
else
- self.tur_active = 1;
+ {
+ if (self.tur_active)
+ self.tur_active = 0;
+ else
+ self.tur_active = 1;
+ }
}
@@ -681,7 +729,7 @@
if (cvar("g_turrets") == 0) return 0;
// Better more then once then never.
- turret_gibs_precash();
+ // turret_gibs_precash();
if (self.spawnflags & 2)
{
@@ -922,7 +970,7 @@
// Attach stdprocs. override when and what needed
if (self.turrcaps_flags & TFL_TURRCAPS_SUPPORT)
{
- self.turret_prethink = turret_stdproc_true;
+ //self.turret_prethink = turret_stdproc_true;
self.turret_score_target = turret_stdproc_targetscore_support;
//self.turret_aim = turret_stdproc_aim_generic;
//self.turret_track = turret_stdproc_track;
@@ -941,7 +989,7 @@
else
{
- self.turret_prethink = turret_stdproc_true;
+ //self.turret_prethink = turret_stdproc_true;
self.turret_score_target = turret_stdproc_targetscore_generic;
//if (self.aim_flags & TFL_AIM_SIMPLE)
Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_common.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_common.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_common.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -4,7 +4,7 @@
float f;
// Laters dooz
- if(linked)
+ if (linked)
return 0;
f = gettagindex(self,"tag_head");
@@ -45,72 +45,104 @@
float bforce,float f_dmg,float f_velfactor, float deathtype)
{
- local vector hitloc, force, endpoint, dir;
- local entity ent;
+ local vector hitloc, force, endpoint, dir;
+ local entity ent;
- dir = normalize(end - start);
- force = dir * bforce;
+ dir = normalize(end - start);
+ force = dir * bforce;
- // go a little bit into the wall because we need to hit this wall later
- end = end + dir;
+ // go a little bit into the wall because we need to hit this wall later
+ end = end + dir;
- // trace multiple times until we hit a wall, each obstacle will be made unsolid.
- // note down which entities were hit so we can damage them later
- while (1)
- {
+ // trace multiple times until we hit a wall, each obstacle will be made unsolid.
+ // note down which entities were hit so we can damage them later
+ while (1)
+ {
tracebox(start, smin, smax, end, FALSE, self);
- // if it is world we can't hurt it so stop now
- if (trace_ent == world || trace_fraction == 1)
- break;
+ // if it is world we can't hurt it so stop now
+ if (trace_ent == world || trace_fraction == 1)
+ break;
- if (trace_ent.solid == SOLID_BSP)
+ if (trace_ent.solid == SOLID_BSP)
break;
- // make the entity non-solid so we can hit the next one
- trace_ent.railgunhit = TRUE;
- trace_ent.railgunhitloc = end;
- trace_ent.railgunhitsolidbackup = trace_ent.solid;
+ // make the entity non-solid so we can hit the next one
+ trace_ent.railgunhit = TRUE;
+ trace_ent.railgunhitloc = end;
+ trace_ent.railgunhitsolidbackup = trace_ent.solid;
- // stop if this is a wall
+ // stop if this is a wall
- // make the entity non-solid
- trace_ent.solid = SOLID_NOT;
- }
+ // make the entity non-solid
+ trace_ent.solid = SOLID_NOT;
+ }
- endpoint = trace_endpos;
+ endpoint = trace_endpos;
- // find all the entities the railgun hit and restore their solid state
- ent = findfloat(world, railgunhit, TRUE);
- while (ent)
- {
- // restore their solid type
- ent.solid = ent.railgunhitsolidbackup;
- ent = findfloat(ent, railgunhit, TRUE);
- }
+ // find all the entities the railgun hit and restore their solid state
+ ent = findfloat(world, railgunhit, TRUE);
+ while (ent)
+ {
+ // restore their solid type
+ ent.solid = ent.railgunhitsolidbackup;
+ ent = findfloat(ent, railgunhit, TRUE);
+ }
- // find all the entities the railgun hit and hurt them
- ent = findfloat(world, railgunhit, TRUE);
- while (ent)
- {
- // get the details we need to call the damage function
- hitloc = ent.railgunhitloc;
- ent.railgunhitloc = '0 0 0';
- ent.railgunhitsolidbackup = SOLID_NOT;
- ent.railgunhit = FALSE;
+ // find all the entities the railgun hit and hurt them
+ ent = findfloat(world, railgunhit, TRUE);
+ while (ent)
+ {
+ // get the details we need to call the damage function
+ hitloc = ent.railgunhitloc;
+ ent.railgunhitloc = '0 0 0';
+ ent.railgunhitsolidbackup = SOLID_NOT;
+ ent.railgunhit = FALSE;
- // apply the damage
- if (ent.takedamage)
- {
- Damage (ent, self, self, f_dmg, deathtype, hitloc, force);
+ // apply the damage
+ if (ent.takedamage)
+ {
+ Damage (ent, self, self, f_dmg, deathtype, hitloc, force);
ent.velocity = ent.velocity * f_velfactor;
//ent.alpha = 0.25 + random() * 0.75;
- }
+ }
- // advance to the next entity
- ent = findfloat(ent, railgunhit, TRUE);
- }
- trace_endpos = endpoint;
+ // advance to the next entity
+ ent = findfloat(ent, railgunhit, TRUE);
+ }
+ trace_endpos = endpoint;
}
+void turrets_precash()
+{
+ precache_sound ("turrets/phaser.ogg");
+
+ precache_model ("models/turrets/base-gib1.md3");
+ precache_model ("models/turrets/base-gib2.md3");
+ precache_model ("models/turrets/base-gib3.md3");
+ precache_model ("models/turrets/base-gib4.md3");
+
+ precache_model ("models/turrets/head-gib1.md3");
+ precache_model ("models/turrets/head-gib2.md3");
+ precache_model ("models/turrets/head-gib3.md3");
+ precache_model ("models/turrets/head-gib4.md3");
+
+ precache_model ("models/turrets/base.md3");
+ precache_model ("models/turrets/flac.md3");
+ precache_model ("models/turrets/pd_proj.md3");
+ precache_model ("models/turrets/reactor.md3");
+ precache_model ("models/turrets/mlrs_rocket.md3");
+ precache_model ("models/turrets/hellion.md3");
+ precache_model ("models/turrets/hunter2.md3");
+ precache_model ("models/turrets/hk.md3");
+ precache_model ("models/turrets/machinegun.md3");
+ precache_model ("models/turrets/rocket.md3");
+ precache_model ("models/turrets/mlrs.md3");
+ precache_model ("models/turrets/phaser.md3");
+ precache_model ("models/turrets/phaser_beam.md3");
+ precache_model ("models/turrets/plasmad.md3");
+ precache_model ("models/turrets/plasma.md3");
+ precache_model ("models/turrets/tesla_head.md3");
+ precache_model ("models/turrets/tesla_base.md3");
+}
Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -93,9 +93,9 @@
void spawnfunc_turret_flac()
{
- precache_model ("models/turrets/base.md3");
- precache_model ("models/turrets/flac.md3");
- precache_model("models/turrets/pd_proj.md3");
+ //precache_model ("models/turrets/base.md3");
+ //precache_model ("models/turrets/flac.md3");
+ //precache_model("models/turrets/pd_proj.md3");
self.think = turret_flac_dinit;
self.nextthink = time + 0.5;
Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -66,7 +66,6 @@
self.turret_firecheckfunc = turret_fusionreactor_firecheck;
self.turret_firefunc = turret_fusionreactor_fire;
- // re-color badge & handle recoil effect
self.turret_postthink = turret_fusionreactor_postthink;
}
@@ -74,8 +73,8 @@
*/
void spawnfunc_turret_fusionreactor()
{
- precache_model ("models/turrets/reactor.md3");
- precache_model ("models/turrets/base.md3");
+ //precache_model ("models/turrets/reactor.md3");
+ //precache_model ("models/turrets/base.md3");
self.think = turret_fusionreactor_dinit;
self.nextthink = time + 0.5;
Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -210,9 +210,9 @@
*/
void spawnfunc_turret_hellion()
{
- precache_model ( "models/turrets/mlrs_rocket.md3");
- precache_model ("models/turrets/hellion.md3");
- precache_model ("models/turrets/base.md3");
+ //precache_model ( "models/turrets/mlrs_rocket.md3");
+ //precache_model ("models/turrets/hellion.md3");
+ //precache_model ("models/turrets/base.md3");
self.think = turret_hellion_dinit;
self.nextthink = time + 0.5;
Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -460,9 +460,9 @@
void spawnfunc_turret_hk()
{
- precache_model ( "models/turrets/hunter2.md3");
- precache_model ("models/turrets/base.md3");
- precache_model ("models/turrets/hk.md3");
+ //precache_model ( "models/turrets/hunter2.md3");
+ //precache_model ("models/turrets/base.md3");
+ //precache_model ("models/turrets/hk.md3");
self.think = turret_hk_dinit;
self.nextthink = time + 0.5;
Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -62,8 +62,8 @@
*/
void spawnfunc_turret_machinegun()
{
- precache_model ("models/turrets/machinegun.md3");
- precache_model ("models/turrets/base.md3");
+ //precache_model ("models/turrets/machinegun.md3");
+ //precache_model ("models/turrets/base.md3");
self.think = turret_machinegun_std_init;
self.nextthink = time + 0.5;
Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -106,9 +106,9 @@
void spawnfunc_turret_mlrs()
{
- precache_model ( "models/turrets/rocket.md3");
- precache_model ("models/turrets/mlrs.md3");
- precache_model ("models/turrets/base.md3");
+ //precache_model ( "models/turrets/rocket.md3");
+ //precache_model ("models/turrets/mlrs.md3");
+ //precache_model ("models/turrets/base.md3");
self.think = turret_mlrs_dinit;
self.nextthink = time + 0.5;
Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -137,10 +137,10 @@
*/
void spawnfunc_turret_phaser()
{
- precache_sound ("turrets/phaser.ogg");
- precache_model ("models/turrets/phaser.md3");
- precache_model ("models/turrets/phaser_beam.md3");
- precache_model ("models/turrets/base.md3");
+ //precache_sound ("turrets/phaser.ogg");
+ //precache_model ("models/turrets/phaser.md3");
+ //precache_model ("models/turrets/phaser_beam.md3");
+ //precache_model ("models/turrets/base.md3");
self.think = turret_phaser_dinit;
self.nextthink = time + 0.5;
Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -163,8 +163,8 @@
*/
void spawnfunc_turret_plasma()
{
- precache_model ("models/turrets/plasma.md3");
- precache_model ("models/turrets/base.md3");
+ //precache_model ("models/turrets/plasma.md3");
+ //precache_model ("models/turrets/base.md3");
self.think = turret_plasma_std_init;
self.nextthink = time + 0.5;
@@ -174,8 +174,8 @@
*/
void spawnfunc_turret_plasma_dual()
{
- precache_model ("models/turrets/plasmad.md3");
- precache_model ("models/turrets/base.md3");
+ //precache_model ("models/turrets/plasmad.md3");
+ //precache_model ("models/turrets/base.md3");
self.think = turret_plasma_dual_init;
self.nextthink = time + 0.5;
Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc 2008-10-13 13:12:10 UTC (rev 4740)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc 2008-10-13 15:23:02 UTC (rev 4741)
@@ -72,7 +72,7 @@
self.attack_finished_single = time + self.shot_refire;
self.ammo = self.ammo - self.shot_dmg;
- for (i = 0;i < 10;i++)
+ for (i = 0;i < 10;i = i + 1)
{
d *= 0.5;
r *= 0.75;
@@ -137,8 +137,8 @@
*/
void spawnfunc_turret_tesla()
{
- precache_model ("models/turrets/tesla_head.md3");
- precache_model ("models/turrets/tesla_base.md3");
+ //precache_model ("models/turrets/tesla_head.md3");
+ //precache_model ("models/turrets/tesla_base.md3");
self.think = turret_tesla_dinit;
More information about the nexuiz-commits
mailing list