From 4eaecc2a87d4e6ac05bd5f07024ba64db7905734 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Sat, 8 May 2010 20:20:20 +0200 Subject: [PATCH] fireball: use fuel, not rockets, again, and swap prim/sec --- balance.cfg | 54 +++++++-------- balance25.cfg | 52 +++++++-------- balanceSamual.cfg | 56 ++++++++-------- balanceXPM.cfg | 56 ++++++++-------- qcsrc/server/w_fireball.qc | 130 ++++++++++++++++++------------------- 5 files changed, 174 insertions(+), 174 deletions(-) diff --git a/balance.cfg b/balance.cfg index 6bed58144..0a4d8cf7f 100644 --- a/balance.cfg +++ b/balance.cfg @@ -555,40 +555,40 @@ set g_balance_tuba_radius 200 set g_balance_tuba_force 40 // }}} // {{{ fireball -set g_balance_fireball_primary_ammo 5 -set g_balance_fireball_primary_animtime 0.3 -set g_balance_fireball_primary_damage 40 +set g_balance_fireball_primary_ammo 40 +set g_balance_fireball_primary_animtime 0.15 +set g_balance_fireball_primary_bfgdamage 100 +set g_balance_fireball_primary_bfgforce 0 +set g_balance_fireball_primary_bfgradius 1000 +set g_balance_fireball_primary_damage 200 set g_balance_fireball_primary_damageforcescale 4 -set g_balance_fireball_primary_damagetime 5 -set g_balance_fireball_primary_force 100 +set g_balance_fireball_primary_edgedamage 0 +set g_balance_fireball_primary_force 700 +set g_balance_fireball_primary_health 50 set g_balance_fireball_primary_laserburntime 0.5 -set g_balance_fireball_primary_laserdamage 30 +set g_balance_fireball_primary_laserdamage 80 set g_balance_fireball_primary_laseredgedamage 20 -set g_balance_fireball_primary_laserradius 110 -set g_balance_fireball_primary_lifetime 7 -set g_balance_fireball_primary_refire 2 -set g_balance_fireball_primary_speed 900 -set g_balance_fireball_primary_speed_up 100 -set g_balance_fireball_primary_speed_z 0 +set g_balance_fireball_primary_laserradius 256 +set g_balance_fireball_primary_lifetime 15 +set g_balance_fireball_primary_radius 200 +set g_balance_fireball_primary_refire 5 +set g_balance_fireball_primary_refire2 0 +set g_balance_fireball_primary_speed 650 set g_balance_fireball_primary_spread 0 -set g_balance_fireball_secondary_ammo 25 -set g_balance_fireball_secondary_animtime 0.15 -set g_balance_fireball_secondary_bfgdamage 100 -set g_balance_fireball_secondary_bfgforce 500 -set g_balance_fireball_secondary_bfgradius 750 -set g_balance_fireball_secondary_damage 150 +set g_balance_fireball_secondary_ammo 5 +set g_balance_fireball_secondary_animtime 0.3 +set g_balance_fireball_secondary_damage 40 set g_balance_fireball_secondary_damageforcescale 4 -set g_balance_fireball_secondary_edgedamage 0 -set g_balance_fireball_secondary_force 700 -set g_balance_fireball_secondary_health 50 +set g_balance_fireball_secondary_damagetime 5 +set g_balance_fireball_secondary_force 100 set g_balance_fireball_secondary_laserburntime 0.5 set g_balance_fireball_secondary_laserdamage 30 set g_balance_fireball_secondary_laseredgedamage 20 -set g_balance_fireball_secondary_laserradius 256 -set g_balance_fireball_secondary_lifetime 15 -set g_balance_fireball_secondary_radius 200 -set g_balance_fireball_secondary_refire 0 -set g_balance_fireball_secondary_refire2 4 -set g_balance_fireball_secondary_speed 650 +set g_balance_fireball_secondary_laserradius 110 +set g_balance_fireball_secondary_lifetime 7 +set g_balance_fireball_secondary_refire 2 +set g_balance_fireball_secondary_speed 900 +set g_balance_fireball_secondary_speed_up 100 +set g_balance_fireball_secondary_speed_z 0 set g_balance_fireball_secondary_spread 0 // }}} diff --git a/balance25.cfg b/balance25.cfg index e3e7b7678..6f36e9bc5 100644 --- a/balance25.cfg +++ b/balance25.cfg @@ -555,40 +555,40 @@ set g_balance_tuba_radius 200 set g_balance_tuba_force 40 // }}} // {{{ fireball -set g_balance_fireball_primary_ammo 5 -set g_balance_fireball_primary_animtime 0.3 -set g_balance_fireball_primary_damage 100 +set g_balance_fireball_primary_ammo 40 +set g_balance_fireball_primary_animtime 0.15 +set g_balance_fireball_primary_bfgdamage 100 +set g_balance_fireball_primary_bfgforce 0 +set g_balance_fireball_primary_bfgradius 1000 +set g_balance_fireball_primary_damage 200 set g_balance_fireball_primary_damageforcescale 4 -set g_balance_fireball_primary_damagetime 5 -set g_balance_fireball_primary_force 100 +set g_balance_fireball_primary_edgedamage 0 +set g_balance_fireball_primary_force 700 +set g_balance_fireball_primary_health 50 set g_balance_fireball_primary_laserburntime 0.5 set g_balance_fireball_primary_laserdamage 80 set g_balance_fireball_primary_laseredgedamage 20 -set g_balance_fireball_primary_laserradius 128 -set g_balance_fireball_primary_lifetime 7 -set g_balance_fireball_primary_refire 1.5 -set g_balance_fireball_primary_speed 700 -set g_balance_fireball_primary_speed_up 100 -set g_balance_fireball_primary_speed_z 0 +set g_balance_fireball_primary_laserradius 256 +set g_balance_fireball_primary_lifetime 15 +set g_balance_fireball_primary_radius 200 +set g_balance_fireball_primary_refire 5 +set g_balance_fireball_primary_refire2 0 +set g_balance_fireball_primary_speed 650 set g_balance_fireball_primary_spread 0 -set g_balance_fireball_secondary_ammo 15 -set g_balance_fireball_secondary_animtime 0.15 -set g_balance_fireball_secondary_bfgdamage 200 -set g_balance_fireball_secondary_bfgforce 0 -set g_balance_fireball_secondary_bfgradius 1500 -set g_balance_fireball_secondary_damage 150 +set g_balance_fireball_secondary_ammo 5 +set g_balance_fireball_secondary_animtime 0.3 +set g_balance_fireball_secondary_damage 40 set g_balance_fireball_secondary_damageforcescale 4 -set g_balance_fireball_secondary_edgedamage 0 -set g_balance_fireball_secondary_force 700 -set g_balance_fireball_secondary_health 50 +set g_balance_fireball_secondary_damagetime 5 +set g_balance_fireball_secondary_force 100 set g_balance_fireball_secondary_laserburntime 0.5 -set g_balance_fireball_secondary_laserdamage 80 +set g_balance_fireball_secondary_laserdamage 50 set g_balance_fireball_secondary_laseredgedamage 20 -set g_balance_fireball_secondary_laserradius 256 -set g_balance_fireball_secondary_lifetime 15 -set g_balance_fireball_secondary_radius 200 +set g_balance_fireball_secondary_laserradius 110 +set g_balance_fireball_secondary_lifetime 7 set g_balance_fireball_secondary_refire 2 -set g_balance_fireball_secondary_refire2 0 -set g_balance_fireball_secondary_speed 650 +set g_balance_fireball_secondary_speed 900 +set g_balance_fireball_secondary_speed_up 100 +set g_balance_fireball_secondary_speed_z 0 set g_balance_fireball_secondary_spread 0 // }}} diff --git a/balanceSamual.cfg b/balanceSamual.cfg index 2357d8bb1..c4aa8d5a9 100644 --- a/balanceSamual.cfg +++ b/balanceSamual.cfg @@ -555,40 +555,40 @@ set g_balance_tuba_radius 200 set g_balance_tuba_force 40 // }}} // {{{ fireball -set g_balance_fireball_primary_ammo 5 -set g_balance_fireball_primary_animtime 0.3 -set g_balance_fireball_primary_damage 40 +set g_balance_fireball_primary_ammo 40 +set g_balance_fireball_primary_animtime 0.15 +set g_balance_fireball_primary_bfgdamage 100 +set g_balance_fireball_primary_bfgforce 0 +set g_balance_fireball_primary_bfgradius 1000 +set g_balance_fireball_primary_damage 200 set g_balance_fireball_primary_damageforcescale 4 -set g_balance_fireball_primary_damagetime 5 -set g_balance_fireball_primary_force 100 +set g_balance_fireball_primary_edgedamage 0 +set g_balance_fireball_primary_force 700 +set g_balance_fireball_primary_health 50 set g_balance_fireball_primary_laserburntime 0.5 -set g_balance_fireball_primary_laserdamage 30 +set g_balance_fireball_primary_laserdamage 80 set g_balance_fireball_primary_laseredgedamage 20 -set g_balance_fireball_primary_laserradius 110 -set g_balance_fireball_primary_lifetime 7 -set g_balance_fireball_primary_refire 2 -set g_balance_fireball_primary_speed 900 -set g_balance_fireball_primary_speed_up 100 -set g_balance_fireball_primary_speed_z 0 +set g_balance_fireball_primary_laserradius 256 +set g_balance_fireball_primary_lifetime 15 +set g_balance_fireball_primary_radius 200 +set g_balance_fireball_primary_refire 5 +set g_balance_fireball_primary_refire2 0 +set g_balance_fireball_primary_speed 650 set g_balance_fireball_primary_spread 0 -set g_balance_fireball_secondary_ammo 25 -set g_balance_fireball_secondary_animtime 0.15 -set g_balance_fireball_secondary_bfgdamage 100 -set g_balance_fireball_secondary_bfgforce 500 -set g_balance_fireball_secondary_bfgradius 750 -set g_balance_fireball_secondary_damage 150 +set g_balance_fireball_secondary_ammo 5 +set g_balance_fireball_secondary_animtime 0.3 +set g_balance_fireball_secondary_damage 40 set g_balance_fireball_secondary_damageforcescale 4 -set g_balance_fireball_secondary_edgedamage 0 -set g_balance_fireball_secondary_force 700 -set g_balance_fireball_secondary_health 50 +set g_balance_fireball_secondary_damagetime 5 +set g_balance_fireball_secondary_force 100 set g_balance_fireball_secondary_laserburntime 0.5 -set g_balance_fireball_secondary_laserdamage 30 +set g_balance_fireball_secondary_laserdamage 50 set g_balance_fireball_secondary_laseredgedamage 20 -set g_balance_fireball_secondary_laserradius 256 -set g_balance_fireball_secondary_lifetime 15 -set g_balance_fireball_secondary_radius 200 -set g_balance_fireball_secondary_refire 0 -set g_balance_fireball_secondary_refire2 4 -set g_balance_fireball_secondary_speed 650 +set g_balance_fireball_secondary_laserradius 110 +set g_balance_fireball_secondary_lifetime 7 +set g_balance_fireball_secondary_refire 2 +set g_balance_fireball_secondary_speed 900 +set g_balance_fireball_secondary_speed_up 100 +set g_balance_fireball_secondary_speed_z 0 set g_balance_fireball_secondary_spread 0 // }}} diff --git a/balanceXPM.cfg b/balanceXPM.cfg index 0b9b96439..d5c048ed1 100644 --- a/balanceXPM.cfg +++ b/balanceXPM.cfg @@ -555,40 +555,40 @@ set g_balance_tuba_radius 200 set g_balance_tuba_force 40 // }}} // {{{ fireball -set g_balance_fireball_primary_ammo 5 -set g_balance_fireball_primary_animtime 0.3 -set g_balance_fireball_primary_damage 40 +set g_balance_fireball_primary_ammo 40 +set g_balance_fireball_primary_animtime 0.15 +set g_balance_fireball_primary_bfgdamage 100 +set g_balance_fireball_primary_bfgforce 0 +set g_balance_fireball_primary_bfgradius 1000 +set g_balance_fireball_primary_damage 200 set g_balance_fireball_primary_damageforcescale 4 -set g_balance_fireball_primary_damagetime 5 -set g_balance_fireball_primary_force 100 +set g_balance_fireball_primary_edgedamage 0 +set g_balance_fireball_primary_force 700 +set g_balance_fireball_primary_health 50 set g_balance_fireball_primary_laserburntime 0.5 -set g_balance_fireball_primary_laserdamage 30 +set g_balance_fireball_primary_laserdamage 80 set g_balance_fireball_primary_laseredgedamage 20 -set g_balance_fireball_primary_laserradius 110 -set g_balance_fireball_primary_lifetime 7 -set g_balance_fireball_primary_refire 2 -set g_balance_fireball_primary_speed 900 +set g_balance_fireball_primary_laserradius 256 +set g_balance_fireball_primary_lifetime 15 +set g_balance_fireball_primary_radius 200 +set g_balance_fireball_primary_refire 5 +set g_balance_fireball_primary_refire2 0 +set g_balance_fireball_primary_speed 650 set g_balance_fireball_primary_spread 0 -set g_balance_fireball_primary_speed_up 100 -set g_balance_fireball_primary_speed_z 0 -set g_balance_fireball_secondary_ammo 25 -set g_balance_fireball_secondary_animtime 0.15 -set g_balance_fireball_secondary_bfgdamage 100 -set g_balance_fireball_secondary_bfgforce 500 -set g_balance_fireball_secondary_bfgradius 750 -set g_balance_fireball_secondary_damage 150 +set g_balance_fireball_secondary_ammo 5 +set g_balance_fireball_secondary_animtime 0.3 +set g_balance_fireball_secondary_damage 40 set g_balance_fireball_secondary_damageforcescale 4 -set g_balance_fireball_secondary_edgedamage 0 -set g_balance_fireball_secondary_force 700 -set g_balance_fireball_secondary_health 50 +set g_balance_fireball_secondary_damagetime 5 +set g_balance_fireball_secondary_force 100 set g_balance_fireball_secondary_laserburntime 0.5 -set g_balance_fireball_secondary_laserdamage 30 +set g_balance_fireball_secondary_laserdamage 50 set g_balance_fireball_secondary_laseredgedamage 20 -set g_balance_fireball_secondary_laserradius 256 -set g_balance_fireball_secondary_lifetime 15 -set g_balance_fireball_secondary_radius 200 -set g_balance_fireball_secondary_refire 0 -set g_balance_fireball_secondary_refire2 4 -set g_balance_fireball_secondary_speed 650 +set g_balance_fireball_secondary_laserradius 110 +set g_balance_fireball_secondary_lifetime 7 +set g_balance_fireball_secondary_refire 2 +set g_balance_fireball_secondary_speed 900 +set g_balance_fireball_secondary_speed_up 100 +set g_balance_fireball_secondary_speed_z 0 set g_balance_fireball_secondary_spread 0 // }}} diff --git a/qcsrc/server/w_fireball.qc b/qcsrc/server/w_fireball.qc index 05de87693..6bccb7e3f 100644 --- a/qcsrc/server/w_fireball.qc +++ b/qcsrc/server/w_fireball.qc @@ -1,9 +1,9 @@ #ifdef REGISTER_WEAPON -REGISTER_WEAPON(FIREBALL, w_fireball, IT_ROCKETS, 9, WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", "Fireball"); +REGISTER_WEAPON(FIREBALL, w_fireball, IT_FUEL, 9, WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "fireball", "fireball", "Fireball"); #else -.float bot_secondary_fireballmooth; // whatever a mooth is +.float bot_primary_fireballmooth; // whatever a mooth is .vector fireball_impactvec; -.float fireball_secondarytime; +.float fireball_primarytime; void W_Fireball_Explode (void) { @@ -18,15 +18,15 @@ void W_Fireball_Explode (void) // 1. dist damage d = (self.owner.health + self.owner.armorvalue); - RadiusDamage (self, self.realowner, cvar("g_balance_fireball_secondary_damage"), cvar("g_balance_fireball_secondary_edgedamage"), cvar("g_balance_fireball_secondary_radius"), world, cvar("g_balance_fireball_secondary_force"), self.projectiledeathtype, other); + RadiusDamage (self, self.realowner, cvar("g_balance_fireball_primary_damage"), cvar("g_balance_fireball_primary_edgedamage"), cvar("g_balance_fireball_primary_radius"), world, cvar("g_balance_fireball_primary_force"), self.projectiledeathtype, other); if(self.realowner.health + self.realowner.armorvalue >= d) if(!self.cnt) { - modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, cvar("g_balance_fireball_secondary_bfgradius"), 0.2, 0.05, 0.25); + modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, cvar("g_balance_fireball_primary_bfgradius"), 0.2, 0.05, 0.25); // 2. bfg effect // NOTE: this cannot be made warpzone aware by design. So, better intentionally ignore warpzones here. - for(e = findradius(self.origin, cvar("g_balance_fireball_secondary_bfgradius")); e; e = e.chain) + for(e = findradius(self.origin, cvar("g_balance_fireball_primary_bfgradius")); e; e = e.chain) if(e != self.owner) if(e.takedamage == DAMAGE_AIM) if(e.classname != "player" || !self.owner || IsDifferentTeam(e, self)) { // can we see fireball? @@ -39,14 +39,14 @@ void W_Fireball_Explode (void) if(/* trace_startsolid || */ trace_fraction != 1) continue; dist = vlen(self.origin - e.origin - e.view_ofs); - points = (1 - sqrt(dist / cvar("g_balance_fireball_secondary_bfgradius"))); + points = (1 - sqrt(dist / cvar("g_balance_fireball_primary_bfgradius"))); if(points <= 0) continue; dir = normalize(e.origin + e.view_ofs - self.origin); - Damage(e, self, self.realowner, cvar("g_balance_fireball_secondary_bfgdamage") * points, self.projectiledeathtype | HITTYPE_BOUNCE | HITTYPE_SPLASH, e.origin + e.view_ofs, cvar("g_balance_fireball_secondary_bfgforce") * dir); + Damage(e, self, self.realowner, cvar("g_balance_fireball_primary_bfgdamage") * points, self.projectiledeathtype | HITTYPE_BOUNCE | HITTYPE_SPLASH, e.origin + e.view_ofs, cvar("g_balance_fireball_primary_bfgforce") * dir); pointparticles(particleeffectnum("fireball_bfgdamage"), e.origin, -1 * dir, 1); - Damage_RecordDamage(self.owner, self.projectiledeathtype, cvar("g_balance_fireball_secondary_bfgdamage") * points); + Damage_RecordDamage(self.owner, self.projectiledeathtype, cvar("g_balance_fireball_primary_bfgdamage") * points); } } @@ -102,7 +102,7 @@ void W_Fireball_Think() return; } - W_Fireball_LaserPlay(0.1, cvar("g_balance_fireball_secondary_laserradius"), cvar("g_balance_fireball_secondary_laserdamage"), cvar("g_balance_fireball_secondary_laseredgedamage"), cvar("g_balance_fireball_secondary_laserburntime")); + W_Fireball_LaserPlay(0.1, cvar("g_balance_fireball_primary_laserradius"), cvar("g_balance_fireball_primary_laserdamage"), cvar("g_balance_fireball_primary_laseredgedamage"), cvar("g_balance_fireball_primary_laserburntime")); self.nextthink = time + 0.1; } @@ -119,11 +119,11 @@ void W_Fireball_Damage (entity inflictor, entity attacker, float damage, float d } } -void W_Fireball_Attack2() +void W_Fireball_Attack1() { local entity proj; - W_SetupShot_ProjectileSize (self, '-16 -16 -16', '16 16 16', FALSE, 2, "weapons/fireball_fire2.wav", cvar("g_balance_fireball_secondary_damage") + cvar("g_balance_fireball_secondary_bfgdamage")); + W_SetupShot_ProjectileSize (self, '-16 -16 -16', '16 16 16', FALSE, 2, "weapons/fireball_fire2.wav", cvar("g_balance_fireball_primary_damage") + cvar("g_balance_fireball_primary_bfgdamage")); pointparticles(particleeffectnum("fireball_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); @@ -131,22 +131,22 @@ void W_Fireball_Attack2() proj.classname = "plasma_prim"; proj.owner = proj.realowner = self; proj.bot_dodge = TRUE; - proj.bot_dodgerating = cvar("g_balance_fireball_secondary_damage"); - proj.pushltime = time + cvar("g_balance_fireball_secondary_lifetime"); + proj.bot_dodgerating = cvar("g_balance_fireball_primary_damage"); + proj.pushltime = time + cvar("g_balance_fireball_primary_lifetime"); proj.use = W_Fireball_Explode; proj.think = W_Fireball_Think; proj.nextthink = time; - proj.health = cvar("g_balance_fireball_secondary_health"); + proj.health = cvar("g_balance_fireball_primary_health"); proj.team = self.team; proj.event_damage = W_Fireball_Damage; proj.takedamage = DAMAGE_YES; - proj.damageforcescale = cvar("g_balance_fireball_secondary_damageforcescale"); + proj.damageforcescale = cvar("g_balance_fireball_primary_damageforcescale"); PROJECTILE_MAKETRIGGER(proj); - proj.projectiledeathtype = WEP_FIREBALL | HITTYPE_SECONDARY; + proj.projectiledeathtype = WEP_FIREBALL; setorigin(proj, w_shotorg); proj.movetype = MOVETYPE_FLY; - W_SETUPPROJECTILEVELOCITY(proj, g_balance_fireball_secondary); + W_SETUPPROJECTILEVELOCITY(proj, g_balance_fireball_primary); proj.angles = vectoangles(proj.velocity); proj.touch = W_Fireball_TouchExplode; setsize(proj, '-16 -16 -16', '16 16 16'); @@ -162,38 +162,38 @@ void W_Fireball_AttackEffect(float i, vector f_diff) pointparticles(particleeffectnum("fireball_preattack_muzzleflash"), w_shotorg, w_shotdir * 1000, 1); } -void W_Fireball_Attack2_Frame4() +void W_Fireball_Attack1_Frame4() { - W_Fireball_Attack2(); - weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_secondary_animtime"), w_ready); + W_Fireball_Attack1(); + weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_primary_animtime"), w_ready); } -void W_Fireball_Attack2_Frame3() +void W_Fireball_Attack1_Frame3() { W_Fireball_AttackEffect(0, '+1.25 +3.75 0'); - weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_secondary_animtime"), W_Fireball_Attack2_Frame4); + weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_primary_animtime"), W_Fireball_Attack1_Frame4); } -void W_Fireball_Attack2_Frame2() +void W_Fireball_Attack1_Frame2() { W_Fireball_AttackEffect(0, '-1.25 +3.75 0'); - weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_secondary_animtime"), W_Fireball_Attack2_Frame3); + weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_primary_animtime"), W_Fireball_Attack1_Frame3); } -void W_Fireball_Attack2_Frame1() +void W_Fireball_Attack1_Frame1() { W_Fireball_AttackEffect(1, '+1.25 -3.75 0'); - weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_secondary_animtime"), W_Fireball_Attack2_Frame2); + weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_primary_animtime"), W_Fireball_Attack1_Frame2); } -void W_Fireball_Attack2_Frame0() +void W_Fireball_Attack1_Frame0() { if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - cvar("g_balance_fireball_secondary_ammo"); + self.ammo_fuel = self.ammo_fuel - cvar("g_balance_fireball_primary_ammo"); W_Fireball_AttackEffect(0, '-1.25 -3.75 0'); sound (self, CHAN_WEAPON, "weapons/fireball_prefire2.wav", VOL_BASE, ATTN_NORM); - weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_secondary_animtime"), W_Fireball_Attack2_Frame1); + weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_fireball_primary_animtime"), W_Fireball_Attack1_Frame1); } void W_Firemine_Think() @@ -207,7 +207,7 @@ void W_Firemine_Think() // make it "hot" once it leaves its owner if(self.owner) { - if(vlen(self.origin - self.owner.origin - self.owner.view_ofs) > cvar("g_balance_fireball_primary_laserradius")) + if(vlen(self.origin - self.owner.origin - self.owner.view_ofs) > cvar("g_balance_fireball_secondary_laserradius")) { self.cnt += 1; if(self.cnt == 3) @@ -217,7 +217,7 @@ void W_Firemine_Think() self.cnt = 0; } - W_Fireball_LaserPlay(0.1, cvar("g_balance_fireball_primary_laserradius"), cvar("g_balance_fireball_primary_laserdamage"), cvar("g_balance_fireball_primary_laseredgedamage"), cvar("g_balance_fireball_primary_laserburntime")); + W_Fireball_LaserPlay(0.1, cvar("g_balance_fireball_secondary_laserradius"), cvar("g_balance_fireball_secondary_laserdamage"), cvar("g_balance_fireball_secondary_laseredgedamage"), cvar("g_balance_fireball_secondary_laserburntime")); self.nextthink = time + 0.1; } @@ -226,7 +226,7 @@ void W_Firemine_Touch (void) { PROJECTILE_TOUCH; if (other.takedamage == DAMAGE_AIM) - if(Fire_AddDamage(other, self.realowner, cvar("g_balance_fireball_primary_damage"), cvar("g_balance_fireball_primary_damagetime"), self.projectiledeathtype | HITTYPE_HEADSHOT) >= 0) + if(Fire_AddDamage(other, self.realowner, cvar("g_balance_fireball_secondary_damage"), cvar("g_balance_fireball_secondary_damagetime"), self.projectiledeathtype | HITTYPE_HEADSHOT) >= 0) { remove(self); return; @@ -234,14 +234,14 @@ void W_Firemine_Touch (void) self.projectiledeathtype |= HITTYPE_BOUNCE; } -void W_Fireball_Attack1() +void W_Fireball_Attack2() { local entity proj; vector f_diff; float c; if not(self.items & IT_UNLIMITED_WEAPON_AMMO) - self.ammo_rockets = self.ammo_rockets - cvar("g_balance_fireball_primary_ammo"); + self.ammo_fuel = self.ammo_fuel - cvar("g_balance_fireball_secondary_ammo"); c = mod(self.bulletcounter, 4); switch(c) @@ -260,7 +260,7 @@ void W_Fireball_Attack1() f_diff = '+1.25 +3.75 0'; break; } - W_SetupShot_ProjectileSize(self, '-4 -4 -4', '4 4 4', FALSE, 2, "weapons/fireball_fire.wav", cvar("g_balance_fireball_primary_damage")); + W_SetupShot_ProjectileSize(self, '-4 -4 -4', '4 4 4', FALSE, 2, "weapons/fireball_fire.wav", cvar("g_balance_fireball_secondary_damage")); traceline(w_shotorg, w_shotorg + f_diff_x * v_up + f_diff_y * v_right, MOVE_NORMAL, self); w_shotorg = trace_endpos; @@ -270,18 +270,18 @@ void W_Fireball_Attack1() proj.owner = proj.realowner = self; proj.classname = "grenade"; proj.bot_dodge = TRUE; - proj.bot_dodgerating = cvar("g_balance_fireball_primary_damage"); + proj.bot_dodgerating = cvar("g_balance_fireball_secondary_damage"); proj.movetype = MOVETYPE_BOUNCE; - proj.projectiledeathtype = WEP_FIREBALL; + proj.projectiledeathtype = WEP_FIREBALL | HITTYPE_SECONDARY; proj.touch = W_Firemine_Touch; PROJECTILE_MAKETRIGGER(proj); setsize(proj, '-4 -4 -4', '4 4 4'); setorigin(proj, w_shotorg); proj.think = W_Firemine_Think; proj.nextthink = time; - proj.damageforcescale = cvar("g_balance_fireball_primary_damageforcescale"); - proj.pushltime = time + cvar("g_balance_fireball_primary_lifetime"); - W_SETUPPROJECTILEVELOCITY_UP(proj, g_balance_fireball_primary); + proj.damageforcescale = cvar("g_balance_fireball_secondary_damageforcescale"); + proj.pushltime = time + cvar("g_balance_fireball_secondary_lifetime"); + W_SETUPPROJECTILEVELOCITY_UP(proj, g_balance_fireball_secondary); proj.angles = vectoangles(proj.velocity); proj.flags = FL_PROJECTILE; @@ -300,37 +300,37 @@ float w_fireball(float req) { self.BUTTON_ATCK = FALSE; self.BUTTON_ATCK2 = FALSE; - if (self.bot_secondary_fireballmooth == 0) + if (self.bot_primary_fireballmooth == 0) { - if(bot_aim(cvar("g_balance_fireball_primary_speed"), cvar("g_balance_fireball_primary_speed_up"), cvar("g_balance_fireball_primary_lifetime"), TRUE)) + if(bot_aim(cvar("g_balance_fireball_primary_speed"), 0, cvar("g_balance_fireball_primary_lifetime"), FALSE)) { self.BUTTON_ATCK = TRUE; - if(random() < 0.01) self.bot_secondary_fireballmooth = 1; + if(random() < 0.02) self.bot_primary_fireballmooth = 0; } } else { - if(bot_aim(cvar("g_balance_fireball_secondary_speed"), 0, cvar("g_balance_fireball_secondary_lifetime"), FALSE)) + if(bot_aim(cvar("g_balance_fireball_secondary_speed"), cvar("g_balance_fireball_secondary_speed_up"), cvar("g_balance_fireball_secondary_lifetime"), TRUE)) { self.BUTTON_ATCK2 = TRUE; - if(random() < 0.02) self.bot_secondary_fireballmooth = 0; + if(random() < 0.01) self.bot_primary_fireballmooth = 1; } } } else if (req == WR_THINK) { if (self.BUTTON_ATCK) - if (weapon_prepareattack(0, cvar("g_balance_fireball_primary_refire"))) + if (time >= self.fireball_primarytime) + if (weapon_prepareattack(1, cvar("g_balance_fireball_primary_refire"))) { - W_Fireball_Attack1(); - weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_fireball_primary_animtime"), w_ready); + W_Fireball_Attack1_Frame0(); + self.fireball_primarytime = time + cvar("g_balance_fireball_primary_refire2"); } if (self.BUTTON_ATCK2) - if (time >= self.fireball_secondarytime) - if (weapon_prepareattack(1, cvar("g_balance_fireball_secondary_refire"))) + if (weapon_prepareattack(0, cvar("g_balance_fireball_secondary_refire"))) { - W_Fireball_Attack2_Frame0(); - self.fireball_secondarytime = time + cvar("g_balance_fireball_secondary_refire2"); + W_Fireball_Attack2(); + weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_fireball_secondary_animtime"), w_ready); } } else if (req == WR_PRECACHE) @@ -346,19 +346,26 @@ float w_fireball(float req) else if (req == WR_SETUP) weapon_setup(WEP_FIREBALL); else if (req == WR_CHECKAMMO1) - return self.ammo_rockets >= cvar("g_balance_fireball_primary_ammo"); + return self.ammo_fuel >= cvar("g_balance_fireball_primary_ammo"); else if (req == WR_CHECKAMMO2) - return self.ammo_rockets >= cvar("g_balance_fireball_secondary_ammo"); + return self.ammo_fuel >= cvar("g_balance_fireball_secondary_ammo"); else if (req == WR_SUICIDEMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) - w_deathtypestring = "should have used a smaller gun"; - else w_deathtypestring = "forgot about some firemine"; + else + w_deathtypestring = "should have used a smaller gun"; } else if (req == WR_KILLMESSAGE) { if(w_deathtype & HITTYPE_SECONDARY) + { + if(w_deathtype & HITTYPE_HEADSHOT) + w_deathtypestring = "tried to catch #'s firemine"; + else + w_deathtypestring = "fatefully ignored #'s firemine"; + } + else { if(w_deathtype & HITTYPE_BOUNCE) { @@ -376,17 +383,10 @@ float w_fireball(float req) else w_deathtypestring = "tasted #'s fireball"; } - else - { - if(w_deathtype & HITTYPE_HEADSHOT) - w_deathtypestring = "tried to catch #'s firemine"; - else - w_deathtypestring = "fatefully ignored #'s firemine"; - } } else if (req == WR_RESETPLAYER) { - self.fireball_secondarytime = time; + self.fireball_primarytime = time; } return TRUE; }; -- 2.39.2