[nexuiz-commits] r6750 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Thu May 21 22:31:28 EDT 2009
Author: mand1nga
Date: 2009-05-21 22:31:28 -0400 (Thu, 21 May 2009)
New Revision: 6750
Modified:
trunk/data/qcsrc/server/mode_onslaught.qc
Log:
Pimp Onslaught code :)
Modified: trunk/data/qcsrc/server/mode_onslaught.qc
===================================================================
--- trunk/data/qcsrc/server/mode_onslaught.qc 2009-05-21 18:03:52 UTC (rev 6749)
+++ trunk/data/qcsrc/server/mode_onslaught.qc 2009-05-22 02:31:28 UTC (rev 6750)
@@ -62,20 +62,18 @@
self.think = SUB_Remove;
return;
}
- if(self.count>self.giblifetime-10) self.alpha -= 0.1;
+ if(self.count>self.giblifetime-10)
+ self.alpha -= 0.1;
org = self.origin + '-20 -20 -20';
org = randompos(org, self.origin + '20 20 20');
- onslaught_generator_boom_spawn(org, random()*0.5+0.3);
+ onslaught_generator_boom_spawn(org, random()*0.5+0.3);
self.count +=1;
};
-void ons_trowgib(
- vector v_from, vector v_to, vector v_colormod,
- string smodel,
- float f_lifetime, float f_fadetime, float b_burn)
+void ons_trowgib(vector v_from, vector v_to, string smodel, float f_lifetime, float f_fadetime, float b_burn)
{
local entity gib;
-
+
gib = spawn();
setmodel(gib,smodel);
@@ -89,13 +87,14 @@
gib.flags = FL_NOTARGET;
gib.velocity = v_to;
gib.giblifetime = f_lifetime;
- if (b_burn)
+
+ if (b_burn)
{
gib.think = ons_trowgib_think;
gib.nextthink = time;
}
- else SUB_SetFade(gib,time + f_lifetime,2);
-
+ else
+ SUB_SetFade(gib,time + f_lifetime,2);
};
void onslaught_updatelinks()
@@ -465,6 +464,7 @@
self.alpha -= 0.1;
else
self.alpha += 0.1;
+
self.scale += 0.2;
self.count +=1;
};
@@ -477,7 +477,7 @@
setorigin(e,org);
e.angles = randomvec() * 360;
e.alpha = 0;
- e.scale = random()*5+8;
+ e.scale = random() * 5 + 8;
e.think = onslaught_generator_ray_think;
e.nextthink = time;
};
@@ -513,41 +513,40 @@
e.alpha = 0;
e.frame = 0;
e.count = 0;
-
+
e.think = onslaught_generator_shockwave_think;
e.nextthink = time;
};
-void gendmg_think()
+void onslaught_generator_damage_think()
{
- if(self.owner.health < 0)
+ if(self.owner.health < 0)
{
self.think = SUB_Remove;
return;
}
self.nextthink = time+0.1;
- // damaged fx
+
+ // damaged fx (less probable the more damaged is the generator)
if(random()<(cvar("g_onslaught_gen_health")-self.owner.health)/cvar("g_onslaught_gen_health")-0.1)
- {
if(random()<0.01)
{
pointparticles(particleeffectnum("electro_ballexplode"), randompos(self.origin+ '50 50 50', self.origin - '50 50 20'), '0 0 0', 1);
sound(self, CHAN_TRIGGER, "onslaught/electricity_explode.ogg", VOL_BASE, ATTN_NORM);
}
else
- pointparticles(particleeffectnum("torch_small"), randompos(self.origin+ '60 60 60', self.origin - '60 60 20'), '0 0 0', 1);
- }
+ pointparticles(particleeffectnum("torch_small"), randompos(self.origin + '60 60 60', self.origin - '60 60 20'), '0 0 0', 1);
};
-void spawn_gendmg(entity gd_owner)
+void onslaught_generator_damage_spawn(entity gd_owner)
{
entity e;
e = spawn();
e.owner = gd_owner;
e.health = self.owner.health;
setorigin(e,gd_owner.origin);
- e.think = gendmg_think;
+ e.think = onslaught_generator_damage_think;
e.nextthink = time+1;
};
@@ -571,11 +570,11 @@
{
i = random();
if(i<0.3)
- ons_trowgib(self.origin + '0 0 40', (100 * randomvec() - '1 1 1') * 11 + '0 0 20','1 1 1',"models/onslaught/gen_gib1.md3",25,1,1);
+ ons_trowgib(self.origin + '0 0 40', (100 * randomvec() - '1 1 1') * 11 + '0 0 20',"models/onslaught/gen_gib1.md3",25,1,1);
else if(i>0.7)
- ons_trowgib(self.origin + '0 0 40', (100 * randomvec() - '1 1 1') * 12 + '0 0 20','1 1 1',"models/onslaught/gen_gib2.md3",20,1,1);
+ ons_trowgib(self.origin + '0 0 40', (100 * randomvec() - '1 1 1') * 12 + '0 0 20',"models/onslaught/gen_gib2.md3",20,1,1);
else
- ons_trowgib(self.origin + '0 0 40', (100 * randomvec() - '1 1 1') * 13 + '0 0 20','1 1 1',"models/onslaught/gen_gib3.md3",15,1,1);
+ ons_trowgib(self.origin + '0 0 40', (100 * randomvec() - '1 1 1') * 13 + '0 0 20',"models/onslaught/gen_gib3.md3",15,1,1);
}
// Spawn fire balls
@@ -583,7 +582,7 @@
{
org = self.origin - '20 20 20' * i*1.5;
org_z = self.origin_z - 20;
- org = randompos(org, self.origin + '20 20 20' * i*1.5 + '0 0 20');
+ org = randompos(org, self.origin + '20 20 20' * i * 1.5 + '0 0 20');
onslaught_generator_boom_spawn(org, (6-i)/5+0.3);
}
@@ -598,7 +597,7 @@
// Particles
org = randompos(self.origin + self.mins + '8 8 8', self.origin + self.maxs + '-8 -8 -8');
pointparticles(particleeffectnum("onslaught_generator_smallexplosion"), org, '0 0 0', 1);
-
+
// rays
if(random() > 0.25 )
{
@@ -699,35 +698,35 @@
setmodel(self, "models/onslaught/generator_dmg9.md3");
if(self.health <= 0)
setmodel(self, "models/onslaught/generator_dead.md3");
-
+
// Throw some flaming gibs on damage, more damage = more chance for gib
if(random()<damage/220)
{
sound(self, CHAN_TRIGGER, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
i = random();
if(i<0.3)
- ons_trowgib(hitloc,(force * -1) + '0 0 40','1 1 1',"models/onslaught/gen_gib1.md3",7,1,1);
+ ons_trowgib(hitloc,(force * -1) + '0 0 40',"models/onslaught/gen_gib1.md3",7,1,1);
else if(i>0.7)
- ons_trowgib(hitloc,(force * -1)+ '0 0 40','1 1 1',"models/onslaught/gen_gib2.md3",6,1,1);
+ ons_trowgib(hitloc,(force * -1)+ '0 0 40',"models/onslaught/gen_gib2.md3",6,1,1);
else
- ons_trowgib(hitloc,(force * -1)+ '0 0 40','1 1 1',"models/onslaught/gen_gib3.md3",5,1,1);
+ ons_trowgib(hitloc,(force * -1)+ '0 0 40',"models/onslaught/gen_gib3.md3",5,1,1);
}
else
{
- // particles on every hit
- pointparticles(particleeffectnum("sparks"),hitloc,force*-1, 1);
-
- //sound on every hit
- if (random()<0.5)
- sound(self, CHAN_TRIGGER, "onslaught/ons_hit1.wav", VOL_BASE, ATTN_NORM);
- else
- sound(self, CHAN_TRIGGER, "onslaught/ons_hit2.wav", VOL_BASE, ATTN_NORM);
+ // particles on every hit
+ pointparticles(particleeffectnum("sparks"),hitloc,force * -1, 1);
+
+ //sound on every hit
+ if (random()<0.5)
+ sound(self, CHAN_TRIGGER, "onslaught/ons_hit1.wav", VOL_BASE, ATTN_NORM);
+ else
+ sound(self, CHAN_TRIGGER, "onslaught/ons_hit2.wav", VOL_BASE, ATTN_NORM);
}
-
+
//throw some gibs on damage
if(random()<damage/200+0.2)
- if(random()<0.5)
- ons_trowgib(hitloc,randomvec()*360,'1 1 1',"models/onslaught/gen_gib1.md3",1,1,0);
+ if(random()<0.5)
+ ons_trowgib(hitloc,randomvec()*360,"models/onslaught/gen_gib1.md3",1,1,0);
};
// update links after a delay
@@ -930,7 +929,7 @@
precache_sound("onslaught/shockwave.wav");
precache_sound("onslaught/ons_hit1.wav");
precache_sound("onslaught/ons_hit2.wav");
- precache_sound("onslaught/electricity_explode.ogg");
+ precache_sound("onslaught/electricity_explode.wav");
if (!self.team)
objerror("team must be set");
self.team_saved = self.team;
@@ -948,7 +947,7 @@
self.islinked = TRUE;
self.isshielded = TRUE;
// helper entity that create fx when generator is damaged
- spawn_gendmg(self);
+ onslaught_generator_damage_spawn(self);
// spawn shield model which indicates whether this can be damaged
self.enemy = e = spawn();
e.classname = "onslaught_generator_shield";
@@ -968,7 +967,7 @@
WaypointSprite_UpdateRule(self.sprite, COLOR_TEAM2, SPRITERULE_TEAMPLAY);
onslaught_updatelinks();
-
+
self.reset = onslaught_generator_reset;
};
@@ -1003,7 +1002,7 @@
self.cp_bob_dmg_z = (2 * random() - 1) * 15;
// colormod flash when shot
self.colormod = '2 2 2';
- // particles on every hit
+ // particles on every hit
pointparticles(particleeffectnum("sparks"),hitloc,force*-1, 1);
//sound on every hit
if (random()<0.5)
@@ -1019,13 +1018,13 @@
string t;
t = ColoredTeamName(attacker.team);
bprint(ColoredTeamName(self.team), " ", self.message, " control point destroyed by ", t, "\n");
- ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 25,'1 1 1',"models/onslaught/controlpoint_icon_gib1.md3",5,1,0);
- ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 45,'1 1 1',"models/onslaught/controlpoint_icon_gib2.md3",5,1,0);
- ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 45,'1 1 1',"models/onslaught/controlpoint_icon_gib2.md3",5,1,0);
- ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,'1 1 1',"models/onslaught/controlpoint_icon_gib4.md3",5,1,0);
- ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,'1 1 1',"models/onslaught/controlpoint_icon_gib4.md3",5,1,0);
- ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,'1 1 1',"models/onslaught/controlpoint_icon_gib4.md3",5,1,0);
- ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,'1 1 1',"models/onslaught/controlpoint_icon_gib4.md3",5,1,0);
+ ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 25,"models/onslaught/controlpoint_icon_gib1.md3",5,1,0);
+ ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 45,"models/onslaught/controlpoint_icon_gib2.md3",5,1,0);
+ ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 45,"models/onslaught/controlpoint_icon_gib2.md3",5,1,0);
+ ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,"models/onslaught/controlpoint_icon_gib4.md3",5,1,0);
+ ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,"models/onslaught/controlpoint_icon_gib4.md3",5,1,0);
+ ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,"models/onslaught/controlpoint_icon_gib4.md3",5,1,0);
+ ons_trowgib(self.origin, (2 * randomvec() - '1 1 1') * 75,"models/onslaught/controlpoint_icon_gib4.md3",5,1,0);
}
self.owner.goalentity = world;
self.owner.islinked = FALSE;
@@ -1040,8 +1039,8 @@
activator = self;
SUB_UseTargets ();
self = oself;
-
+
self.owner.waslinked = self.owner.islinked;
if(self.owner.model != "models/onslaught/controlpoint_pad.md3")
setmodel(self.owner, "models/onslaught/controlpoint_pad.md3");
@@ -1118,17 +1117,17 @@
else
self.cp_bob_dmg_z = 0;
self.origin = self.cp_origin + self.cp_bob_origin + self.cp_bob_dmg;
-
+
// damaged fx
if(random()<(cvar("g_onslaught_cp_health")-self.health)/cvar("g_onslaught_cp_health")-0.4)
{
- pointparticles(particleeffectnum("electricity_sparks"), randompos(self.origin+ '10 10 20', self.origin - '10 10 20'), '0 0 0', 1);
- if(random()>0.8)
- sound(self, CHAN_PAIN, "onslaught/ons_spark1.wav", VOL_BASE, ATTN_NORM);
- else if (random()>0.5)
- sound(self, CHAN_PAIN, "onslaught/ons_spark2.wav", VOL_BASE, ATTN_NORM);
+ pointparticles(particleeffectnum("electricity_sparks"), randompos(self.origin+ '10 10 20', self.origin - '10 10 20'), '0 0 0', 1);
+
+ if(random()>0.8)
+ sound(self, CHAN_PAIN, "onslaught/ons_spark1.wav", VOL_BASE, ATTN_NORM);
+ else if (random()>0.5)
+ sound(self, CHAN_PAIN, "onslaught/ons_spark2.wav", VOL_BASE, ATTN_NORM);
}
-
};
void onslaught_controlpoint_icon_buildthink()
@@ -1170,7 +1169,7 @@
self.colormod = '1 1 1' * (2 - bound(0, (self.pain_finished - time) / 10, 1));
if(self.owner.model != "models/onslaught/controlpoint_pad2.md3")
setmodel(self.owner, "models/onslaught/controlpoint_pad2.md3");
-
+
if(random()<((self.max_health-self.health)/self.max_health)-0.1)
pointparticles(particleeffectnum("rage"), randompos(self.origin+ '10 10 10', self.origin - '10 10 10'), '0 0 -1', 1);
};
@@ -1400,4 +1399,4 @@
objerror("target and target2 must be set\n");
InitializeEntity(self, onslaught_link_delayed, INITPRIO_FINDTARGET);
Net_LinkEntity(self, FALSE, 0, onslaught_link_send);
-};
\ No newline at end of file
+};
More information about the nexuiz-commits
mailing list