set g_balance_devastator_detonatedelay 0.02
set g_balance_devastator_edgedamage 40
set g_balance_devastator_force 400
+set g_balance_devastator_force_xyscale 1
set g_balance_devastator_guidedelay 0.2
set g_balance_devastator_guidegoal 512
set g_balance_devastator_guiderate 90
set g_balance_devastator_detonatedelay 0.2
set g_balance_devastator_edgedamage 40
set g_balance_devastator_force 600
+set g_balance_devastator_force_xyscale 1
set g_balance_devastator_guidedelay 0.15
set g_balance_devastator_guidegoal 512
set g_balance_devastator_guiderate 90
set g_balance_devastator_detonatedelay 0.02
set g_balance_devastator_edgedamage 35
set g_balance_devastator_force 450
+set g_balance_devastator_force_xyscale 1
set g_balance_devastator_guidedelay 0.2
set g_balance_devastator_guidegoal 512
set g_balance_devastator_guiderate 70
set g_balance_devastator_detonatedelay 999
set g_balance_devastator_edgedamage 40
set g_balance_devastator_force 350
+set g_balance_devastator_force_xyscale 1
set g_balance_devastator_guidedelay 0.2
set g_balance_devastator_guidegoal 512
set g_balance_devastator_guiderate 0
set g_balance_devastator_detonatedelay 0.02
set g_balance_devastator_edgedamage 40
set g_balance_devastator_force 400
+set g_balance_devastator_force_xyscale 1
set g_balance_devastator_guidedelay 0.2
set g_balance_devastator_guidegoal 512
set g_balance_devastator_guiderate 90
this.event_damage = func_null;
+ vector force_xyzscale = '1 1 1';
+ force_xyzscale.z = WEP_CVAR_PRI(WEP_BLASTER, force_zscale);
+
RadiusDamageForSource(
this,
(this.origin + (this.mins + this.maxs) * 0.5),
NULL,
false,
WEP_CVAR_PRI(WEP_BLASTER, force),
- WEP_CVAR_PRI(WEP_BLASTER, force_zscale),
+ force_xyzscale,
this.projectiledeathtype,
this.weaponentity_fld,
toucher
this.event_damage = func_null;
this.takedamage = DAMAGE_NO;
- RadiusDamage(
+ vector force_xyzscale = '1 1 1';
+ force_xyzscale.x = WEP_CVAR(WEP_DEVASTATOR, force_xyscale);
+ force_xyzscale.y = WEP_CVAR(WEP_DEVASTATOR, force_xyscale);
+
+ RadiusDamageForSource(
this,
+ this.origin,
+ this.velocity,
this.realowner,
WEP_CVAR(WEP_DEVASTATOR, damage),
WEP_CVAR(WEP_DEVASTATOR, edgedamage),
WEP_CVAR(WEP_DEVASTATOR, radius),
NULL,
NULL,
+ false,
WEP_CVAR(WEP_DEVASTATOR, force),
+ force_xyzscale,
this.projectiledeathtype,
this.weaponentity_fld,
directhitentity
P(class, prefix, detonatedelay, float, NONE) \
P(class, prefix, edgedamage, float, NONE) \
P(class, prefix, force, float, NONE) \
+ P(class, prefix, force_xyscale, float, NONE) \
P(class, prefix, guidedelay, float, NONE) \
P(class, prefix, guidegoal, float, NONE) \
P(class, prefix, guideratedelay, float, NONE) \
// Returns total damage applies to creatures
float RadiusDamageForSource (entity inflictor, vector inflictororigin, vector inflictorvelocity, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe,
- float inflictorselfdamage, float forceintensity, float forcezscale, int deathtype, .entity weaponentity, entity directhitentity)
+ float inflictorselfdamage, float forceintensity, vector forcexyzscale, int deathtype, .entity weaponentity, entity directhitentity)
{
entity targ;
vector force;
force = force * (finaldmg / max(coredamage, edgedamage)) * forceintensity;
hitloc = nearest;
- // apply special scaling along the z axis if set
- // NOTE: 0 value is not allowed for compatibility, in the case of weapon cvars not being set
- if(forcezscale)
- force.z *= forcezscale;
+ // apply special force scalings
+ if(forcexyzscale.x)
+ force.x *= forcexyzscale.x;
+ if(forcexyzscale.y)
+ force.y *= forcexyzscale.y;
+ if(forcexyzscale.z)
+ force.z *= forcexyzscale.z;
if(targ != directhitentity)
{
float RadiusDamage(entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float forceintensity, int deathtype, .entity weaponentity, entity directhitentity)
{
return RadiusDamageForSource(inflictor, (inflictor.origin + (inflictor.mins + inflictor.maxs) * 0.5), inflictor.velocity, attacker, coredamage, edgedamage, rad,
- cantbe, mustbe, false, forceintensity, 1, deathtype, weaponentity, directhitentity);
+ cantbe, mustbe, false, forceintensity, '1 1 1', deathtype, weaponentity, directhitentity);
}
bool Heal(entity targ, entity inflictor, float amount, float limit)
void Damage (entity targ, entity inflictor, entity attacker, float damage, int deathtype, .entity weaponentity, vector hitloc, vector force);
float RadiusDamage_running;
-float RadiusDamageForSource (entity inflictor, vector inflictororigin, vector inflictorvelocity, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float inflictorselfdamage, float forceintensity, float forcezscale, int deathtype, .entity weaponentity, entity directhitentity);
+float RadiusDamageForSource (entity inflictor, vector inflictororigin, vector inflictorvelocity, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float inflictorselfdamage, float forceintensity, vector forcexyzscale, int deathtype, .entity weaponentity, entity directhitentity);
// Returns total damage applies to creatures
float RadiusDamage (entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float forceintensity, int deathtype, .entity weaponentity, entity directhitentity);