mirror of
https://git.code.sf.net/p/quake/prozac-qfcc
synced 2025-02-17 09:32:08 +00:00
*** empty log message ***
This commit is contained in:
parent
91ada067c3
commit
6703c3fffd
3 changed files with 56 additions and 42 deletions
29
engineer.qc
29
engineer.qc
|
@ -244,7 +244,7 @@ void() EMPGrenadeExplode =
|
|||
//CH Slice gave idea of an emp gren getting rated based on blast so i added..
|
||||
total_exp = 0;
|
||||
local float range = 300;
|
||||
local float dmg = 0.3;
|
||||
local float dmg = 0.8;
|
||||
|
||||
local float numcells = 0;
|
||||
local float numrockets = 0;
|
||||
|
@ -278,6 +278,7 @@ void() EMPGrenadeExplode =
|
|||
dist = vlen(self.origin - te.origin);
|
||||
mult = 0.90 - (0.75 * dist / range) + (0.10 * random());
|
||||
mult *= dmg;
|
||||
numshells = numcells = numrockets = numgren1 = numgren2 = expsize = 0;
|
||||
|
||||
if (IsBuilding(te))
|
||||
{
|
||||
|
@ -323,8 +324,9 @@ void() EMPGrenadeExplode =
|
|||
else if (te.classname == "ammobox")
|
||||
{
|
||||
expsize = 0;
|
||||
expsize = expsize + (te.ammo_rockets * 5);
|
||||
expsize = expsize + (te.ammo_cells * 1.4);
|
||||
expsize = expsize + (te.ammo_rockets * 3);
|
||||
expsize = expsize + (te.ammo_cells * 1.5);
|
||||
expsize += expsize * te.ammo_shells / 500;
|
||||
|
||||
if (expsize > 0)
|
||||
{
|
||||
|
@ -333,8 +335,8 @@ void() EMPGrenadeExplode =
|
|||
// Damage player and explode
|
||||
deathmsg = DMSG_GREN_EMP;
|
||||
total_exp = total_exp + expsize;
|
||||
if (expsize > 300) //CH so they are not too powerfull //WK was 500
|
||||
expsize = 300;
|
||||
if (expsize > 500)
|
||||
expsize = 500;
|
||||
|
||||
T_RadiusDamage(te, self.owner, expsize, te);
|
||||
|
||||
|
@ -370,10 +372,7 @@ void() EMPGrenadeExplode =
|
|||
numrockets = te.ammo_rockets;
|
||||
|
||||
if (te.weapons_carried & WEAP_SPANNER && te.classname == "player")
|
||||
{
|
||||
if (numcells > (te.maxammo_cells - 200))
|
||||
numcells = te.maxammo_cells - 200;
|
||||
}
|
||||
numcells = 0;
|
||||
}
|
||||
|
||||
numcells = floor(numcells);
|
||||
|
@ -381,7 +380,7 @@ void() EMPGrenadeExplode =
|
|||
|
||||
expsize = 0;
|
||||
// calculate explosion size
|
||||
expsize = numcells * 1.5 + numrockets * 5; // ouch, this hurts
|
||||
expsize = numcells * 1.5 + numrockets * 3; // ouch, this hurts
|
||||
|
||||
if (te.classname == "player")
|
||||
{
|
||||
|
@ -418,22 +417,22 @@ void() EMPGrenadeExplode =
|
|||
//WK Make players not explode radially! GR why not?
|
||||
if (te.touch != BackpackTouch)
|
||||
{
|
||||
T_RadiusDamage(te, self.owner, expsize, te);
|
||||
T_RadiusDamage(te, self.owner, expsize / 2, te);
|
||||
|
||||
deathmsg = DMSG_GREN_EMP;
|
||||
TF_T_Damage (te, te, self.owner, 2 * expsize / 3, 0, TF_TD_IGNOREARMOUR);
|
||||
TF_T_Damage (te, te, self.owner, expsize / 3, 0, TF_TD_EXPLOSION);
|
||||
TF_T_Damage (te, te, self.owner, expsize, 0, TF_TD_EXPLOSION);
|
||||
|
||||
// Remove ammo
|
||||
te.ammo_cells -= numcells;
|
||||
te.ammo_rockets -= numrockets;
|
||||
te.ammo_shells -= numshells;
|
||||
|
||||
if (te.classname == "player")
|
||||
{
|
||||
if (te.tp_grenades_1 == GR_TYPE_MIRV)
|
||||
te.no_grenades_1 -= 3 * mult;
|
||||
te.no_grenades_1 -= numgren1;
|
||||
if (te.tp_grenades_2 == GR_TYPE_MIRV)
|
||||
te.no_grenades_2 -= 3 * mult;
|
||||
te.no_grenades_2 -= numgren2;
|
||||
|
||||
// Update console
|
||||
oldself = self;
|
||||
|
|
38
player.qc
38
player.qc
|
@ -19,7 +19,7 @@ firings get shunted through here.
|
|||
|
||||
// Prototypes
|
||||
void() bubble_bob;
|
||||
void() W_FireAssaultCannon;
|
||||
void(float num) W_FireAssaultCannon;
|
||||
void() W_FireLightAssault;
|
||||
|
||||
void() Throw_Grapple;
|
||||
|
@ -602,6 +602,10 @@ void() player_assaultcannonup1 =[$nailatt1, player_assaultcannonup2 ]
|
|||
sound (self, CHAN_WEAPON, "weapons/asscan1.wav", 1, ATTN_NORM);
|
||||
|
||||
SuperDamageSound();
|
||||
if (self.heat > 7) {
|
||||
W_FireAssaultCannon (self.heat);
|
||||
sound (self, CHAN_WEAPON, "weapons/asscan2.wav", 1, ATTN_NORM);
|
||||
}
|
||||
Attack_Finished(0.1);
|
||||
|
||||
if (self.heat != 2 && self.heat != 4)
|
||||
|
@ -613,7 +617,7 @@ void() player_assaultcannonup1 =[$nailatt1, player_assaultcannonup2 ]
|
|||
}
|
||||
|
||||
self.heat = self.heat + 1;
|
||||
if (self.heat >= 7)
|
||||
if (self.heat >= 10)
|
||||
{
|
||||
self.heat = 0;
|
||||
player_assaultcannon1();
|
||||
|
@ -638,6 +642,10 @@ void() player_assaultcannonup2 =[$nailatt1, player_assaultcannonup1 ]
|
|||
}
|
||||
|
||||
SuperDamageSound();
|
||||
if (self.heat > 4) {
|
||||
sound (self, CHAN_WEAPON, "weapons/asscan2.wav", 1, ATTN_NORM);
|
||||
W_FireAssaultCannon (self.heat);
|
||||
}
|
||||
Attack_Finished(0.1);
|
||||
|
||||
if (self.heat != 2 && self.heat != 4 && self.heat != 7)
|
||||
|
@ -651,8 +659,9 @@ void() player_assaultcannonup2 =[$nailatt1, player_assaultcannonup1 ]
|
|||
}
|
||||
|
||||
self.heat = self.heat + 1;
|
||||
if (self.heat >= 13)
|
||||
if (self.heat >= 10)
|
||||
{
|
||||
sound (self, CHAN_AUTO, "weapons/asscan4.wav", 1, ATTN_NORM);
|
||||
self.heat = 0;
|
||||
player_assaultcannon1();
|
||||
}
|
||||
|
@ -669,7 +678,7 @@ void() player_assaultcannon1 =[$nailatt1, player_assaultcannon2 ]
|
|||
|
||||
if ((!self.button0) || (self.ammo_shells < 1) || intermission_running)
|
||||
{
|
||||
stuffcmd(self, "v_idlescale 0\n");
|
||||
// stuffcmd(self, "v_idlescale 0\n"); // GR NO
|
||||
// Let him/her walk again
|
||||
self.tfstate &= ~TFSTATE_ASSAULTCANNON;
|
||||
TeamFortress_SetSpeed(self);
|
||||
|
@ -685,7 +694,7 @@ void() player_assaultcannon1 =[$nailatt1, player_assaultcannon2 ]
|
|||
else
|
||||
self.weaponframe = 2;
|
||||
SuperDamageSound();
|
||||
W_FireAssaultCannon();
|
||||
W_FireAssaultCannon(7);
|
||||
|
||||
// Shake the screen
|
||||
// Not with idlescale -GR
|
||||
|
@ -700,8 +709,8 @@ void() player_assaultcannon1 =[$nailatt1, player_assaultcannon2 ]
|
|||
#else
|
||||
local vector off = self.v_angle;
|
||||
|
||||
off_x -= (random () * 2) + 2;
|
||||
off_y -= (random () * 2) - 1;
|
||||
off_x -= (random () + 0.5);
|
||||
off_y -= ((random () * 0.6) - 0.3);
|
||||
|
||||
msg_entity = self;
|
||||
WriteByte (MSG_ONE, SVC_SETANGLE);
|
||||
|
@ -726,12 +735,13 @@ void() player_assaultcannon2 =[$nailatt2, player_assaultcannon1 ]
|
|||
return;
|
||||
}
|
||||
|
||||
if (self.weaponframe == 2)
|
||||
self.weaponframe = 4;
|
||||
else
|
||||
self.weaponframe++;
|
||||
if (self.weaponframe == 4)
|
||||
self.weaponframe = 2;
|
||||
else
|
||||
self.weaponframe = 4;
|
||||
SuperDamageSound();
|
||||
W_FireAssaultCannon();
|
||||
W_FireAssaultCannon(7);
|
||||
|
||||
// increase the heat of the cannon
|
||||
self.heat = self.heat + 0.1;
|
||||
|
@ -739,8 +749,8 @@ void() player_assaultcannon2 =[$nailatt2, player_assaultcannon1 ]
|
|||
// Not with idlescale
|
||||
#if 0
|
||||
stuffcmd(self, "v_idlescale 0\n");
|
||||
stuffcmd(self, "bf\n");
|
||||
#endif
|
||||
#endif
|
||||
stuffcmd (self, "bf\n");
|
||||
|
||||
Attack_Finished(0.1);
|
||||
};
|
||||
|
@ -749,7 +759,7 @@ void() player_assaultcannon2 =[$nailatt2, player_assaultcannon1 ]
|
|||
void() player_assaultcannondown1 =[$nailatt1, player_assaultcannondown1 ]
|
||||
{
|
||||
if (self.count == 1)
|
||||
sound (self, CHAN_WEAPON, "weapons/asscan3.wav", 1, ATTN_NORM);
|
||||
sound (self, CHAN_AUTO, "weapons/asscan3.wav", 1, ATTN_NORM);
|
||||
|
||||
if (self.count >= 15) {
|
||||
self.heat = 0;
|
||||
|
|
31
weapons.qc
31
weapons.qc
|
@ -1080,17 +1080,6 @@ void (float damage, vector dir) TraceAttack =
|
|||
} else {
|
||||
puff_org = org;
|
||||
puff_count++;
|
||||
|
||||
msg_entity = self;
|
||||
|
||||
WriteByte (MSG_ONE, SVC_TEMPENTITY);
|
||||
WriteByte (MSG_ONE, TE_GUNSHOT);
|
||||
WriteByte (MSG_ONE, 1.0);
|
||||
|
||||
WriteCoord (MSG_ONE, trace_endpos_x);
|
||||
WriteCoord (MSG_ONE, trace_endpos_y);
|
||||
WriteCoord (MSG_ONE, trace_endpos_z);
|
||||
|
||||
if (trace_ent.classname == "force_field") { //- OfN - Makes field explosion b4 removing it
|
||||
FieldExplosion(trace_ent,trace_endpos,trace_ent);
|
||||
PutFieldWork(trace_ent);
|
||||
|
@ -1110,6 +1099,17 @@ void(float shotcount, vector dir, vector spread) FireBullets =
|
|||
{
|
||||
local vector direction;
|
||||
local vector src;
|
||||
local string st = infokey (NIL, "numpuffs");
|
||||
local float puffdiv = 0;
|
||||
|
||||
if (st)
|
||||
puffdiv = stof (st) - 1;
|
||||
|
||||
if (puffdiv <= 0)
|
||||
puffdiv = 0;
|
||||
else
|
||||
puffdiv = shotcount / puffdiv;
|
||||
|
||||
makevectors (self.v_angle);
|
||||
|
||||
src = self.origin + v_forward * 10;
|
||||
|
@ -1127,6 +1127,11 @@ void(float shotcount, vector dir, vector spread) FireBullets =
|
|||
else
|
||||
TraceAttack (6, direction); //WK 4
|
||||
|
||||
if (puffdiv) {
|
||||
if (shotcount % puffdiv == 0)
|
||||
Multi_Finish (TRUE);
|
||||
}
|
||||
|
||||
shotcount--;
|
||||
}
|
||||
ApplyMultiDamage ();
|
||||
|
@ -1432,7 +1437,7 @@ void() W_FireAutoRifle =
|
|||
TeamFortress : W_FireAssaultCannon
|
||||
================
|
||||
*/
|
||||
void() W_FireAssaultCannon =
|
||||
void(float num) W_FireAssaultCannon =
|
||||
{
|
||||
local vector dir;
|
||||
|
||||
|
@ -1441,7 +1446,7 @@ void() W_FireAssaultCannon =
|
|||
self.currentammo = self.ammo_shells = self.ammo_shells - 1;
|
||||
dir = aim (self, 100000);
|
||||
deathmsg = DMSG_ASSAULTCANNON;
|
||||
FireBullets (7, dir, '0.06 0.06 0');
|
||||
FireBullets (num, dir, '0.01 0.01 0' * num);
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue