set g_balance_electro_combo_comboradius_thruwall 200
set g_balance_electro_combo_damage 50
set g_balance_electro_combo_damage_interval 0.05
-set g_balance_electro_combo_damage_linear 1
set g_balance_electro_combo_duration 1.5
set g_balance_electro_combo_edgedamage 25
set g_balance_electro_combo_force 0
-set g_balance_electro_combo_power 3
set g_balance_electro_combo_radius 150
set g_balance_electro_combo_safeammocheck 1
set g_balance_electro_combo_speed 2000
set g_balance_electro_combo_comboradius_thruwall 0
set g_balance_electro_combo_damage 80
set g_balance_electro_combo_damage_interval 0.05
-set g_balance_electro_combo_damage_linear 0
set g_balance_electro_combo_duration 0
set g_balance_electro_combo_edgedamage 0
set g_balance_electro_combo_force 200
-set g_balance_electro_combo_power 3
set g_balance_electro_combo_radius 250
set g_balance_electro_combo_safeammocheck 0
set g_balance_electro_combo_speed 2000
set g_balance_electro_combo_comboradius_thruwall 200
set g_balance_electro_combo_damage 50
set g_balance_electro_combo_damage_interval 0.05
-set g_balance_electro_combo_damage_linear 0
set g_balance_electro_combo_duration 0
set g_balance_electro_combo_edgedamage 25
set g_balance_electro_combo_force 120
-set g_balance_electro_combo_power 3
set g_balance_electro_combo_radius 150
set g_balance_electro_combo_safeammocheck 1
set g_balance_electro_combo_speed 2000
set g_balance_electro_combo_comboradius_thruwall 200
set g_balance_electro_combo_damage 50
set g_balance_electro_combo_damage_interval 0.05
-set g_balance_electro_combo_damage_linear 0
set g_balance_electro_combo_duration 0
set g_balance_electro_combo_edgedamage 25
set g_balance_electro_combo_force 120
-set g_balance_electro_combo_power 3
set g_balance_electro_combo_radius 175
set g_balance_electro_combo_safeammocheck 1
set g_balance_electro_combo_speed 2000
set g_balance_electro_combo_comboradius_thruwall 200
set g_balance_electro_combo_damage 50
set g_balance_electro_combo_damage_interval 0.05
-set g_balance_electro_combo_damage_linear 0
set g_balance_electro_combo_duration 0
set g_balance_electro_combo_edgedamage 25
set g_balance_electro_combo_force 120
-set g_balance_electro_combo_power 3
set g_balance_electro_combo_radius 150
set g_balance_electro_combo_safeammocheck 1
set g_balance_electro_combo_speed 2000
void W_Electro_ExplodeComboThink(entity this)
{
float dt = time - this.teleport_time + this.dmg_interval;
- float dmg_remaining_next = (bound(0, 1 - dt / this.dmg_duration, 1) ** this.dmg_power);
- float f = this.dmg_last - dmg_remaining_next;
- this.dmg_last = dmg_remaining_next;
-
- float dmg_scale = ((this.dmg_linear) ? this.dmg_interval : f);
-
- RadiusDamage(this, this.realowner, this.dmg * dmg_scale, this.dmg_edge * dmg_scale, this.dmg_radius, NULL, NULL, this.dmg_force * f, this.projectiledeathtype, this.weaponentity_fld, NULL);
+ RadiusDamage(this, this.realowner, this.dmg, this.dmg_edge, this.dmg_radius, NULL, NULL, this.dmg_force, this.projectiledeathtype, this.weaponentity_fld, NULL);
this.projectiledeathtype |= HITTYPE_BOUNCE; // ensure it doesn't spam its effect
if(dt < this.dmg_duration)
setthink(this, W_Electro_ExplodeComboThink);
this.nextthink = time;
- this.dmg = WEP_CVAR(electro, combo_damage);
- this.dmg_edge = WEP_CVAR(electro, combo_edgedamage);
+ this.dmg_interval = WEP_CVAR(electro, combo_damage_interval);
+ if(!this.dmg_interval)
+ this.dmg_interval = PHYS_INPUT_TIMELENGTH;
+ this.dmg = WEP_CVAR(electro, combo_damage) * this.dmg_interval;
+ this.dmg_edge = WEP_CVAR(electro, combo_edgedamage) * this.dmg_interval;
this.dmg_radius = WEP_CVAR(electro, combo_radius);
- this.dmg_force = WEP_CVAR(electro, combo_force);
- this.dmg_power = WEP_CVAR(electro, combo_power);
+ this.dmg_force = WEP_CVAR(electro, combo_force) * this.dmg_interval;
this.dmg_duration = WEP_CVAR(electro, combo_duration);
- this.dmg_interval = WEP_CVAR(electro, combo_damage_interval);
- this.dmg_linear = WEP_CVAR(electro, combo_damage_linear);
this.teleport_time = time;
this.dmg_last = 1;
set_movetype(this, MOVETYPE_NONE);
P(class, prefix, combo_comboradius_thruwall, float, NONE) \
P(class, prefix, combo_damage, float, NONE) \
P(class, prefix, combo_damage_interval, float, NONE) \
- P(class, prefix, combo_damage_linear, float, NONE) \
P(class, prefix, combo_duration, float, NONE) \
P(class, prefix, combo_edgedamage, float, NONE) \
P(class, prefix, combo_force, float, NONE) \
P(class, prefix, combo_radius, float, NONE) \
- P(class, prefix, combo_power, float, NONE) \
P(class, prefix, combo_safeammocheck, float, NONE) \
P(class, prefix, combo_speed, float, NONE) \
P(class, prefix, count, float, SEC) \
.float dmg_edge;
.float dmg_radius;
.float dmg_force;
-.float dmg_power;
.float dmg_duration;
.float dmg_last;
.float dmg_interval;
-.float dmg_linear;
IntrusiveList LimitedElectroBallRubbleList;
.float electro_count;
alias test_ctf_stalemate90 "settemp g_ctf_stalemate_time 90"
alias test_ctf_stalemate120 "settemp g_ctf_stalemate_time 120"
-alias test_electro_combo_over_time "settemp g_balance_electro_combo_damage_interval 0.05 ; settemp g_balance_electro_combo_duration 1.5 ; settemp g_balance_electro_combo_power 3 ; settemp g_balance_electro_combo_damage_linear 1 ; settemp g_balance_electro_combo_force 0"
+alias test_electro_combo_over_time "settemp g_balance_electro_combo_damage_interval 0.05 ; settemp g_balance_electro_combo_duration 1.5 ; settemp g_balance_electro_combo_force 0"
alias testing_enable "addvote test_blaster_switch ; addvote test_crylink_sec_horizontal ; addvote test_rocket_flying ; addvote test_ctf_stalemate90 ; addvote test_ctf_stalemate120 ; addvote test_arc_bounce ; addvote test_arc_bounce_burst ; addvote test_electro_combo_over_time"
alias testing_disable "delvote test_blaster_switch ; delvote test_crylink_sec_horizontal ; delvote test_rocket_flying ; delvote test_ctf_stalemate90 ; delvote test_ctf_stalemate120 ; delvote test_arc_bounce ; delvote test_arc_bounce_burst ; delvote test_electro_combo_over_time"