set g_balance_laser_primary_shotangle 0
set g_balance_laser_primary_delay 0.05
set g_balance_laser_primary_gauntlet 0
+set g_balance_laser_primary_force_zscale 1
+set g_balance_laser_primary_force_velocitybias 0
set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
set g_balance_laser_secondary_damage 35
set g_balance_laser_secondary_edgedamage 10
set g_balance_laser_secondary_shotangle 0
set g_balance_laser_secondary_delay 0
set g_balance_laser_secondary_gauntlet 0
+set g_balance_laser_secondary_force_zscale 1
+set g_balance_laser_secondary_force_velocitybias 0
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 6
set g_balance_nex_charge_start 0
set g_balance_nex_charge_rate 0.1
set g_balance_nex_charge_limit 0.5
+set g_balance_nex_charge_rot_rate 0
set g_balance_nex_charge_shot_multiplier 0.5
set g_balance_nex_charge_velocity_rate 0.2
set g_balance_nex_charge_minspeed 400
set g_balance_laser_primary_shotangle 0
set g_balance_laser_primary_delay 0.03
set g_balance_laser_primary_gauntlet 0
+set g_balance_laser_primary_force_zscale 1
+set g_balance_laser_primary_force_velocitybias 0
set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
set g_balance_laser_secondary_damage 25
set g_balance_laser_secondary_edgedamage 10
set g_balance_laser_secondary_shotangle -90
set g_balance_laser_secondary_delay 0
set g_balance_laser_secondary_gauntlet 0
+set g_balance_laser_secondary_force_zscale 1
+set g_balance_laser_secondary_force_velocitybias 0
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 5
set g_balance_nex_charge_start 0
set g_balance_nex_charge_rate 0.1
set g_balance_nex_charge_limit 0.5
+set g_balance_nex_charge_rot_rate 0
set g_balance_nex_charge_shot_multiplier 0.5
set g_balance_nex_charge_velocity_rate 0.2
set g_balance_nex_charge_minspeed 400
set g_balance_laser_primary_shotangle 0
set g_balance_laser_primary_delay 0.03
set g_balance_laser_primary_gauntlet 0
+set g_balance_laser_primary_force_zscale 1
+set g_balance_laser_primary_force_velocitybias 0
set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
set g_balance_laser_secondary_damage 35
set g_balance_laser_secondary_edgedamage 10
set g_balance_laser_secondary_shotangle 0
set g_balance_laser_secondary_delay 0
set g_balance_laser_secondary_gauntlet 0
+set g_balance_laser_secondary_force_zscale 1
+set g_balance_laser_secondary_force_velocitybias 0
// }}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 6
set g_balance_nex_charge_start 0
set g_balance_nex_charge_rate 0.1
set g_balance_nex_charge_limit 0.5
+set g_balance_nex_charge_rot_rate 0
set g_balance_nex_charge_shot_multiplier 0.5
set g_balance_nex_charge_velocity_rate 0.2
set g_balance_nex_charge_minspeed 400
set g_balance_laser_primary_shotangle 0
set g_balance_laser_primary_delay 0.03
set g_balance_laser_primary_gauntlet 0
+set g_balance_laser_primary_force_zscale 1
+set g_balance_laser_primary_force_velocitybias 0
set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
set g_balance_laser_secondary_damage 25
set g_balance_laser_secondary_edgedamage 10
set g_balance_laser_secondary_shotangle -90
set g_balance_laser_secondary_delay 0
set g_balance_laser_secondary_gauntlet 0
+set g_balance_laser_secondary_force_zscale 1
+set g_balance_laser_secondary_force_velocitybias 0
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 6
set g_balance_nex_charge_start 0
set g_balance_nex_charge_rate 0.1
set g_balance_nex_charge_limit 0.5
+set g_balance_nex_charge_rot_rate 0
set g_balance_nex_charge_shot_multiplier 0.5
set g_balance_nex_charge_velocity_rate 0.2
set g_balance_nex_charge_minspeed 400
set g_balance_laser_primary_shotangle 0
set g_balance_laser_primary_delay 0.03
set g_balance_laser_primary_gauntlet 0
+set g_balance_laser_primary_force_zscale 1
+set g_balance_laser_primary_force_velocitybias 0.25
set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
set g_balance_laser_secondary_damage 35
set g_balance_laser_secondary_edgedamage 10
set g_balance_laser_secondary_shotangle 0
set g_balance_laser_secondary_delay 0
set g_balance_laser_secondary_gauntlet 0
+set g_balance_laser_secondary_force_zscale 1
+set g_balance_laser_secondary_force_velocitybias 0.25
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 10
set g_balance_nex_charge_start 0
set g_balance_nex_charge_rate 0.35
set g_balance_nex_charge_limit 0.5
+set g_balance_nex_charge_rot_rate 0
set g_balance_nex_charge_shot_multiplier 0
set g_balance_nex_charge_velocity_rate 0
set g_balance_nex_charge_minspeed 400
set g_warmup_start_ammo_rockets 50 "starting values when being in warmup-stage"
set g_warmup_start_ammo_cells 50 "starting values when being in warmup-stage"
set g_warmup_start_ammo_fuel 0 "starting values when being in warmup-stage"
-set g_lms_start_health 200
-set g_lms_start_armor 100
+set g_lms_start_health 250
+set g_lms_start_armor 250
set g_lms_start_ammo_shells 30
set g_lms_start_ammo_nails 250
set g_lms_start_ammo_rockets 100
set g_pickup_rockets_max 150
set g_pickup_cells 30
set g_pickup_cells_weapon 20
-set g_pickup_cells_max 200
+set g_pickup_cells_max 150
set g_pickup_fuel 25
set g_pickup_fuel_weapon 15
set g_pickup_fuel_jetpack 50
set g_pickup_fuel_max 100
set g_pickup_armorsmall 5
-set g_pickup_armorsmall_max 200
+set g_pickup_armorsmall_max 250
set g_pickup_armorsmall_anyway 1
set g_pickup_armormedium 25
-set g_pickup_armormedium_max 200
+set g_pickup_armormedium_max 250
set g_pickup_armormedium_anyway 1
set g_pickup_armorbig 50
-set g_pickup_armorbig_max 200
+set g_pickup_armorbig_max 250
set g_pickup_armorbig_anyway 1
set g_pickup_armorlarge 100
-set g_pickup_armorlarge_max 200
+set g_pickup_armorlarge_max 250
set g_pickup_armorlarge_anyway 1
set g_pickup_healthsmall 5
-set g_pickup_healthsmall_max 200
+set g_pickup_healthsmall_max 250
set g_pickup_healthsmall_anyway 1
set g_pickup_healthmedium 25
-set g_pickup_healthmedium_max 100
+set g_pickup_healthmedium_max 150
set g_pickup_healthmedium_anyway 0
set g_pickup_healthlarge 50
-set g_pickup_healthlarge_max 100
+set g_pickup_healthlarge_max 150
set g_pickup_healthlarge_anyway 0
set g_pickup_healthmega 100
-set g_pickup_healthmega_max 200
+set g_pickup_healthmega_max 250
set g_pickup_healthmega_anyway 1
set g_pickup_respawntime_short 15
set g_pickup_respawntime_medium 20
set g_balance_firetransfer_damage 0.8
set g_throughfloor_damage 0.5
set g_throughfloor_force 0.7
-set g_projectiles_newton_style 0
+set g_projectiles_newton_style 2
// possible values:
// 0: absolute velocity projectiles (like Quake)
// 1: relative velocity projectiles, "Newtonian" (like Tribes 2)
// 4: just add the player velocity length to the absolute velocity (tZork's sniper rockets)
set g_projectiles_newton_style_2_minfactor 0.7
set g_projectiles_newton_style_2_maxfactor 5
-set g_projectiles_spread_style 4
+set g_projectiles_spread_style 7
// possible values:
// 0: forward + solid sphere (like Quake) - varies velocity
// 1: forward + flattened solid sphere
set g_balance_laser_primary_shotangle 0
set g_balance_laser_primary_delay 0
set g_balance_laser_primary_gauntlet 0
+set g_balance_laser_primary_zscale 1.25
+set g_balance_laser_primary_velocitybias 0
set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
set g_balance_laser_secondary_damage 200 // dps
set g_balance_laser_secondary_edgedamage 0
set g_balance_laser_secondary_shotangle 0
set g_balance_laser_secondary_delay 0
set g_balance_laser_secondary_gauntlet 1
+set g_balance_laser_secondary_zscale 1.25
+set g_balance_laser_secondary_velocitybias 0
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 20
set g_balance_nex_charge_start 0.2
set g_balance_nex_charge_rate 0.05
set g_balance_nex_charge_limit 0.5
+set g_balance_nex_charge_rot_rate 0.01
set g_balance_nex_charge_shot_multiplier 0.675
set g_balance_nex_charge_velocity_rate 0.15
set g_balance_nex_charge_minspeed 400
set g_balance_hagar_primary_damage 12
set g_balance_hagar_primary_edgedamage 6
set g_balance_hagar_primary_force 70
-set g_balance_hagar_primary_radius 100
+set g_balance_hagar_primary_radius 125
set g_balance_hagar_primary_spread 0.1
set g_balance_hagar_primary_speed 1800
set g_balance_hagar_primary_lifetime 5
set g_balance_hagar_secondary_damage 12
set g_balance_hagar_secondary_edgedamage 6
set g_balance_hagar_secondary_force 70
-set g_balance_hagar_secondary_radius 100
+set g_balance_hagar_secondary_radius 135
set g_balance_hagar_secondary_spread 0.15
set g_balance_hagar_secondary_speed 1800
set g_balance_hagar_secondary_lifetime_min 5
set g_balance_hagar_secondary_ammo 1
// }}}
// {{{ rocketlauncher // TODO
-set g_balance_rocketlauncher_damage 100
+set g_balance_rocketlauncher_damage 90
set g_balance_rocketlauncher_edgedamage 33
set g_balance_rocketlauncher_force 350
set g_balance_rocketlauncher_radius 125
set g_balance_laser_primary_shotangle 0
set g_balance_laser_primary_delay 0
set g_balance_laser_primary_gauntlet 0
+set g_balance_laser_primary_force_zscale 1
+set g_balance_laser_primary_force_velocitybias 0
set g_balance_laser_secondary 0 // when 1, a secondary laser mode exists
set g_balance_laser_secondary_damage 35
set g_balance_laser_secondary_edgedamage 10
set g_balance_laser_secondary_shotangle 0
set g_balance_laser_secondary_delay 0
set g_balance_laser_secondary_gauntlet 0
+set g_balance_laser_secondary_force_zscale 1
+set g_balance_laser_secondary_force_velocitybias 0
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 10
set g_balance_nex_charge_start 0
set g_balance_nex_charge_rate 0.35
set g_balance_nex_charge_limit 0.5
+set g_balance_nex_charge_rot_rate 0
set g_balance_nex_charge_shot_multiplier 0
set g_balance_nex_charge_velocity_rate 0
set g_balance_nex_charge_minspeed 400
seta crosshair_fireball_size 1 "crosshair size when wielding the fireball"
seta crosshair_ring_size 2 "bullet counter ring size for Rifle, velocity ring for Nex"
seta crosshair_campingrifle_bulletcounter_alpha 0.15
+
seta crosshair_nexvelocity_alpha 0.15
+seta crosshair_nexvelocity_currentcharge_scale 30
+seta crosshair_nexvelocity_currentcharge_alpha 0.15
+seta crosshair_nexvelocity_currentcharge_color_red 0.8
+seta crosshair_nexvelocity_currentcharge_color_green 0
+seta crosshair_nexvelocity_currentcharge_color_blue 0
+seta crosshair_nexvelocity_currentcharge_movingavg_rate 0.05
+
seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (brakes image proportions)"
seta cl_reticle_item_nex 1 "draw aiming recticle for the nex weapon's zoom, 0 disables and values between 0 and 1 change alpha"
seta cl_reticle_item_normal 1 "draw recticle when zooming with the zoom button, 0 disables and values between 0 and 1 change alpha"
string weaponorder_byimpulse;
string weaponorder_bypriority;
+
+float nex_charge_movingavg;
float nex_charge;
nex_charge = getstatf(STAT_NEX_CHARGE);
+ if(nex_charge_movingavg == 0) // this should only happen if we have just loaded up the game
+ nex_charge_movingavg = nex_charge;
+
// ring around crosshair representing bullets left in camping rifle clip
if (activeweapon == WEP_CAMPINGRIFLE && cr_maxbullets)
{
}
else if (activeweapon == WEP_NEX && nex_charge) // ring around crosshair representing velocity-dependent damage for the nex
{
+ vector rgb;
+ // indicate how much we're charging right now with an inner circle
+ a = cvar("crosshair_nexvelocity_currentcharge_alpha");
+ nex_charge_movingavg = (1 - cvar("crosshair_nexvelocity_currentcharge_movingavg_rate")) * nex_charge_movingavg + cvar("crosshair_nexvelocity_currentcharge_movingavg_rate") * nex_charge;
+
+ rgb = eX * cvar("crosshair_nexvelocity_currentcharge_color_red") + eY * cvar("crosshair_nexvelocity_currentcharge_color_green") + eZ * cvar("crosshair_nexvelocity_currentcharge_color_blue");
+ DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring_inner.tga", bound(0, cvar("crosshair_nexvelocity_currentcharge_scale") * (nex_charge - nex_charge_movingavg), 1), rgb, wcross_alpha * a, DRAWFLAG_ADDITIVE);
+
+ // draw the charge
a = cvar("crosshair_nexvelocity_alpha");
DrawCircleClippedPic(wcross_origin, wcross_size_x * ring_scale, "gfx/crosshair_ring.tga", nex_charge, wcross_color, wcross_alpha * a, DRAWFLAG_ADDITIVE);
}
}
player_regen();
+
+ // rot nex charge to the charge limit
+ if(cvar("g_balance_nex_charge_rot_rate") && self.nex_charge > cvar("g_balance_nex_charge_limit"))
+ self.nex_charge = bound(cvar("g_balance_nex_charge_limit"), self.nex_charge - cvar("g_balance_nex_charge_rot_rate") * frametime / W_TICSPERFRAME, 1);
+
if(frametime)
player_anim();
finaldmg = finaldmg * a;
a = bound(0, tfloorforce + (1-tfloorforce) * hitratio, 1);
force = force * a;
+
+ // laser force adjustments :P
+ if(DEATH_WEAPONOF(deathtype) == WEP_LASER)
+ {
+ vector vel;
+
+ float force_zscale;
+ float force_velocitybiasramp;
+ float force_velocitybias;
+
+ force_velocitybiasramp = cvar("sv_maxspeed");
+ if(deathtype & HITTYPE_SECONDARY)
+ {
+ force_zscale = cvar("g_balance_laser_secondary_force_zscale");
+ force_velocitybias = cvar("g_balance_laser_secondary_force_velocitybias");
+ }
+ else
+ {
+ force_zscale = cvar("g_balance_laser_primary_force_zscale");
+ force_velocitybias = cvar("g_balance_laser_primary_force_velocitybias");
+ }
+
+ vel = targ.velocity;
+ vel_z = 0;
+ vel = normalize(vel) * bound(0, vlen(vel) / force_velocitybiasramp, 1) * force_velocitybias;
+ force =
+ vlen(force)
+ *
+ normalize(normalize(force) + vel);
+
+ force_z *= force_zscale;
+ }
+
//if (targ == attacker)
//{
// print("hits ", ftos(hits), " / ", ftos(total));
if(cvar("g_balance_nex_charge"))
{
charge = cvar("g_balance_nex_charge_mindmg") / mydmg + (1 - cvar("g_balance_nex_charge_mindmg") / mydmg) * self.nex_charge;
- self.nex_charge *= cvar("g_balance_nex_charge_shot_multiplier"); // do this AFTER setting mydmg/myforce
+ self.nex_charge = self.nex_charge * cvar("g_balance_nex_charge_shot_multiplier"); // do this AFTER setting mydmg/myforce
}
else
charge = 1;
- mydmg *= charge;
- myforce *= charge;
+ mydmg = mydmg * charge;
+ myforce = myforce * charge;
W_SetupShot (self, TRUE, 5, "weapons/nexfire.wav", mydmg);
{
if(cvar("g_balance_nex_charge") && self.nex_charge < cvar("g_balance_nex_charge_limit"))
self.nex_charge = min(1, self.nex_charge + cvar("g_balance_nex_charge_rate") * frametime / W_TICSPERFRAME);
+
if (self.BUTTON_ATCK)
{
if (weapon_prepareattack(0, cvar("g_balance_nex_primary_refire")))