r4853 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Oct 24 03:35:04 EDT 2008
Author: div0
Date: 2008-10-24 03:35:00 -0400 (Fri, 24 Oct 2008)
New Revision: 4853
Modified:
trunk/data/qcsrc/server/g_triggers.qc
trunk/data/qcsrc/server/t_jumppads.qc
trunk/data/qcsrc/server/w_rocketlauncher.qc
Log:
rocket launcher now detonates in the think function, should fix problems with shortly pressed buttons
Modified: trunk/data/qcsrc/server/g_triggers.qc
===================================================================
--- trunk/data/qcsrc/server/g_triggers.qc 2008-10-24 07:09:33 UTC (rev 4852)
+++ trunk/data/qcsrc/server/g_triggers.qc 2008-10-24 07:35:00 UTC (rev 4853)
@@ -920,6 +920,7 @@
if (other.classname != "body")
if (other.classname != "gib")
if (other.classname != "missile")
+ if (other.classname != "rocket")
if (other.classname != "casing")
if (other.classname != "grenade")
if (other.classname != "plasma")
@@ -967,6 +968,7 @@
if (other.classname != "body")
if (other.classname != "gib")
if (other.classname != "missile")
+ if (other.classname != "rocket")
if (other.classname != "casing")
if (other.classname != "grenade")
if (other.classname != "plasma")
@@ -1003,6 +1005,7 @@
if (other.classname != "body")
if (other.classname != "gib")
if (other.classname != "missile")
+ if (other.classname != "rocket")
if (other.classname != "casing")
if (other.classname != "grenade")
if (other.classname != "plasma")
Modified: trunk/data/qcsrc/server/t_jumppads.qc
===================================================================
--- trunk/data/qcsrc/server/t_jumppads.qc 2008-10-24 07:09:33 UTC (rev 4852)
+++ trunk/data/qcsrc/server/t_jumppads.qc 2008-10-24 07:35:00 UTC (rev 4853)
@@ -109,6 +109,7 @@
if (other.classname != "body")
if (other.classname != "gib")
if (other.classname != "missile")
+ if (other.classname != "rocket")
if (other.classname != "casing")
if (other.classname != "grenade")
if (other.classname != "plasma")
Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc 2008-10-24 07:09:33 UTC (rev 4852)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc 2008-10-24 07:35:00 UTC (rev 4853)
@@ -1,5 +1,4 @@
-
-.float rl_sound;
+.float rl_release;
.float rl_detonate_later;
void W_Rocket_Explode (void)
@@ -135,13 +134,6 @@
{
if(g_laserguided_missile)
{
- if(!self.owner.BUTTON_ATCK)
- self.ltime = -1; // indicate that the player has let go of the button
-
-
- if(self.owner.deadflag == DEAD_NO)
- if (self.owner.BUTTON_ATCK && self.ltime < 0) // if the player let go of the button and then pushed it again
- self.rl_detonate_later = TRUE;
if(self.rl_detonate_later)
W_Rocket_RemoteExplode();
@@ -180,8 +172,6 @@
}
else
{
- if (self.owner.BUTTON_ATCK2)
- self.rl_detonate_later = TRUE;
if(self.rl_detonate_later)
W_Rocket_RemoteExplode();
}
@@ -231,7 +221,7 @@
missile.spawnshieldtime = time + cvar("g_balance_rocketlauncher_detonatedelay");
else
missile.spawnshieldtime = -1;
- missile.classname = "missile";
+ missile.classname = "rocket";
missile.bot_dodge = TRUE;
missile.bot_dodgerating = cvar("g_balance_rocketlauncher_primary_damage") * 2; // * 2 because it can be detonated inflight which makes it even more dangerous
@@ -292,6 +282,8 @@
float w_rlauncher(float req)
{
+ entity rock;
+ float rockfound;
if (req == WR_AIM)
{
// aim and decide to fire if appropriate
@@ -310,12 +302,12 @@
teamdamage = 0;
enemydamage = 0;
targetlist = findchainfloat(bot_attack, TRUE);
- missile = find(world, classname, "missile");
+ missile = find(world, classname, "rocket");
while (missile)
{
if (missile.owner != self)
{
- missile = find(missile, classname, "missile");
+ missile = find(missile, classname, "rocket");
continue;
}
targ = targetlist;
@@ -332,7 +324,7 @@
enemydamage = enemydamage + d;
targ = targ.chain;
}
- missile = find(missile, classname, "missile");
+ missile = find(missile, classname, "rocket");
}
local float desirabledamage;
desirabledamage = enemydamage;
@@ -341,12 +333,12 @@
if (self.team && teamplay == 2)
desirabledamage = desirabledamage - teamdamage;
- missile = find(world, classname, "missile");
+ missile = find(world, classname, "rocket");
while (missile)
{
if (missile.owner != self)
{
- missile = find(missile, classname, "missile");
+ missile = find(missile, classname, "rocket");
continue;
}
makevectors(missile.v_angle);
@@ -374,7 +366,7 @@
// dprint(ftos(random()/distance*300),">");dprint(ftos(frametime*bound(0,(10-skill)*0.2,1)),"\n");
}
- missile = find(missile, classname, "missile");
+ missile = find(missile, classname, "rocket");
}
// if we would be doing at X percent of the core damage, detonate it
// but don't fire a new shot at the same time!
@@ -389,28 +381,62 @@
}
else if (req == WR_THINK)
{
- if (self.BUTTON_ATCK)
- if (weapon_prepareattack(0, cvar("g_balance_rocketlauncher_refire")))
+ if(g_laserguided_missile)
{
- W_Rocket_Attack();
- weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_rocketlauncher_animtime"), w_ready);
+ if (self.BUTTON_ATCK && self.rl_release)
+ {
+ rockfound = 0;
+ for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self)
+ {
+ rock.rl_detonate_later = TRUE;
+ rockfound = 1;
+ }
+ if(rockfound)
+ sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM);
+ else
+ {
+ if (weapon_prepareattack(0, cvar("g_balance_rocketlauncher_refire")))
+ {
+ W_Rocket_Attack();
+ weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_rocketlauncher_animtime"), w_ready);
+ }
+ }
+ self.rl_release = 0;
+ }
+ if (!self.BUTTON_ATCK)
+ self.rl_release = 1;
+ if (self.BUTTON_ATCK2)
+ if(self.exteriorweaponentity.attack_finished_single < time)
+ {
+ self.exteriorweaponentity.attack_finished_single = time + 0.4;
+ self.laser_on = !self.laser_on;
+ // UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds
+ sound (self, CHAN_WEAPON2, "weapons/tink1.wav", VOL_BASE, ATTN_NORM);
+ }
}
- if (self.BUTTON_ATCK2)
- if(time > self.rl_sound)
+ else
{
- self.rl_sound = time + 1;
- // UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds
- sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM);
+ if (self.BUTTON_ATCK)
+ if (weapon_prepareattack(0, cvar("g_balance_rocketlauncher_refire")))
+ {
+ W_Rocket_Attack();
+ weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_rocketlauncher_animtime"), w_ready);
+ }
+ if (self.BUTTON_ATCK2 && self.rl_release)
+ {
+ rockfound = 0;
+ for(rock = world; (rock = find(rock, classname, "rocket")); ) if(rock.owner == self)
+ {
+ rock.rl_detonate_later = TRUE;
+ rockfound = 1;
+ }
+ if(rockfound)
+ sound (self, CHAN_WEAPON2, "weapons/rocket_det.wav", 0.5 * VOL_BASE, ATTN_NORM);
+ self.rl_release = 0;
+ }
+ if (!self.BUTTON_ATCK2)
+ self.rl_release = 1;
}
- if (self.BUTTON_ATCK2)
- if(g_laserguided_missile)
- if(self.exteriorweaponentity.attack_finished_single < time)
- {
- self.exteriorweaponentity.attack_finished_single = time + 0.4;
- self.laser_on = !self.laser_on;
- // UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds
- sound (self, CHAN_WEAPON2, "weapons/tink1.wav", VOL_BASE, ATTN_NORM);
- }
}
else if (req == WR_PRECACHE)
{
@@ -427,7 +453,10 @@
precache_model ("models/laser_dot.mdl"); // rocket launcher
}
else if (req == WR_SETUP)
+ {
weapon_setup(WEP_ROCKET_LAUNCHER);
+ self.rl_release = 1;
+ }
else if (req == WR_CHECKAMMO1)
{
// don't switch while guiding a missile
More information about the nexuiz-commits
mailing list