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_primary_force_other_scale 1
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_gauntlet 0
set g_balance_laser_secondary_force_zscale 1
set g_balance_laser_secondary_force_velocitybias 0
+set g_balance_laser_secondary_force_other_scale 1
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 6
set g_balance_sniperrifle_primary_burstcost 0
set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot
set g_balance_sniperrifle_secondary 1
+set g_balance_sniperrifle_secondary_reload 0
set g_balance_sniperrifle_secondary_tracer 0
set g_balance_sniperrifle_secondary_damage 35
set g_balance_sniperrifle_secondary_headshotaddeddamage 15 // 50 damage only on head
set g_balance_laser_primary_gauntlet 0
set g_balance_laser_primary_force_zscale 2 // 300 upforce
set g_balance_laser_primary_force_velocitybias 0.3
+set g_balance_laser_primary_force_other_scale 1
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_gauntlet 1
set g_balance_laser_secondary_force_zscale 1.25
set g_balance_laser_secondary_force_velocitybias 0
+set g_balance_laser_secondary_force_other_scale 1
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 5
set g_balance_sniperrifle_primary_burstcost 0 // require same cooldown as secondary, note it's smaller than primary refire time
set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot
set g_balance_sniperrifle_secondary 1
+set g_balance_sniperrifle_secondary_reload 0
set g_balance_sniperrifle_secondary_tracer 0
set g_balance_sniperrifle_secondary_damage 40
set g_balance_sniperrifle_secondary_headshotaddeddamage 20
set g_balance_laser_primary_gauntlet 0
set g_balance_laser_primary_force_zscale 2 // 350 upforce
set g_balance_laser_primary_force_velocitybias 0.3
+set g_balance_laser_primary_force_other_scale 1
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_gauntlet 0
set g_balance_laser_secondary_force_zscale 1.25
set g_balance_laser_secondary_force_velocitybias 0
+set g_balance_laser_secondary_force_other_scale 1
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 10
set g_balance_sniperrifle_primary_burstcost 0
set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot
set g_balance_sniperrifle_secondary 1
+set g_balance_sniperrifle_secondary_reload 0
set g_balance_sniperrifle_secondary_tracer 0
set g_balance_sniperrifle_secondary_damage 50
set g_balance_sniperrifle_secondary_headshotaddeddamage 50 // 50 damage only on head
// }}}
// {{{ powerups
-set g_balance_powerup_invincible_takedamage 0.3
+set g_balance_powerup_invincible_takedamage 0.6
set g_balance_powerup_invincible_time 30
set g_balance_powerup_strength_damage 3
set g_balance_powerup_strength_force 4
set g_balance_laser_primary_gauntlet 0
set g_balance_laser_primary_force_zscale 2 // 300 upforce
set g_balance_laser_primary_force_velocitybias 0.3
+set g_balance_laser_primary_force_other_scale 2.5 // force 375 when pushing others around
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_gauntlet 1
set g_balance_laser_secondary_force_zscale 1.25
set g_balance_laser_secondary_force_velocitybias 0
+set g_balance_laser_secondary_force_other_scale 0
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 18
set g_balance_uzi_burst_animtime 0.45
set g_balance_uzi_burst_refire 0.05 // refire between burst bullets
set g_balance_uzi_burst_refire2 0.45 // refire after burst
-set g_balance_uzi_burst_spread 0.05
-set g_balance_uzi_burst_damage 20 // 100 dps, delivered in 0.15s
+set g_balance_uzi_burst_spread 0.07
+set g_balance_uzi_burst_damage 25
set g_balance_uzi_burst_force 50
set g_balance_uzi_burst_ammo 3
set g_balance_uzi_first 1
-set g_balance_uzi_first_damage 20 // 100 dps
+set g_balance_uzi_first_damage 22
set g_balance_uzi_first_force 50
set g_balance_uzi_first_spread 0.03
set g_balance_uzi_first_refire 0.2
set g_balance_uzi_sustained_damage 12 // 120 dps
set g_balance_uzi_sustained_force 12
-set g_balance_uzi_sustained_spread 0.08
+set g_balance_uzi_sustained_spread 0.06
set g_balance_uzi_sustained_refire 0.1
set g_balance_uzi_sustained_ammo 1
set g_balance_electro_primary_force 425
set g_balance_electro_primary_force_up 125
set g_balance_electro_primary_radius 850
-set g_balance_electro_primary_comboradius 75
+set g_balance_electro_primary_comboradius 150
set g_balance_electro_primary_speed 0
set g_balance_electro_primary_spread 0
set g_balance_electro_primary_lifetime 0
set g_balance_crylink_primary_other_fadetime 0.25
set g_balance_crylink_secondary 1
-set g_balance_crylink_secondary_damage 3
-set g_balance_crylink_secondary_edgedamage 0
-set g_balance_crylink_secondary_force -20
-set g_balance_crylink_secondary_radius 5
-set g_balance_crylink_secondary_speed 1700
-set g_balance_crylink_secondary_spread 0.03
-set g_balance_crylink_secondary_shots 3
-set g_balance_crylink_secondary_bounces 0
-set g_balance_crylink_secondary_refire 0.15
-set g_balance_crylink_secondary_animtime 0.15
-set g_balance_crylink_secondary_ammo 1
-set g_balance_crylink_secondary_bouncedamagefactor 0.5
+set g_balance_crylink_secondary_damage 8
+set g_balance_crylink_secondary_edgedamage 3
+set g_balance_crylink_secondary_force 20
+set g_balance_crylink_secondary_radius 20
+set g_balance_crylink_secondary_speed 1500
+set g_balance_crylink_secondary_spread 0.1
+set g_balance_crylink_secondary_shots 6
+set g_balance_crylink_secondary_bounces 2
+set g_balance_crylink_secondary_refire 0.8
+set g_balance_crylink_secondary_animtime 0.3
+set g_balance_crylink_secondary_ammo 2
+set g_balance_crylink_secondary_bouncedamagefactor 0.2
set g_balance_crylink_secondary_joindelay 0
-set g_balance_crylink_secondary_joinspread 0
-set g_balance_crylink_secondary_jointime 0
+set g_balance_crylink_secondary_joinspread 0.2
+set g_balance_crylink_secondary_jointime 0.1
set g_balance_crylink_secondary_joinexplode 0
set g_balance_crylink_secondary_joinexplode_damage 0
set g_balance_crylink_secondary_joinexplode_edgedamage 0
set g_balance_crylink_secondary_middle_lifetime 5 // range: 10000 full, fades to 10000
set g_balance_crylink_secondary_middle_fadetime 5
set g_balance_crylink_secondary_line_lifetime 2 // range: 4000 full, fades to 8000
-set g_balance_crylink_secondary_line_fadetime 2
+set g_balance_crylink_secondary_line_fadetime 0.25
// }}}
// {{{ nex
set g_balance_nex_primary_damage 90
set g_balance_nex_secondary_charge 1
set g_balance_nex_secondary_charge_rate 0.4
set g_balance_nex_secondary_chargepool 1
-set g_balance_nex_secondary_chargepool_regen 0.15
-set g_balance_nex_secondary_chargepool_pause_regen 1
-set g_balance_nex_secondary_chargepool_pause_health_regen 1
+set g_balance_nex_secondary_chargepool_regen 0.25
+set g_balance_nex_secondary_chargepool_pause_regen 2
+set g_balance_nex_secondary_chargepool_pause_health_regen 0.5
set g_balance_nex_secondary_damage 0
set g_balance_nex_secondary_force 0
set g_balance_nex_secondary_refire 0
set g_balance_nex_secondary_animtime 0
-set g_balance_nex_secondary_ammo 0.2 // full charge pool is 1, so it depletes in 5 secs
+set g_balance_nex_secondary_ammo 0.4 // full charge pool is 1, so it depletes in 2.5 secs
set g_balance_nex_secondary_damagefalloff_mindist 0
set g_balance_nex_secondary_damagefalloff_maxdist 0
set g_balance_nex_secondary_damagefalloff_halflife 0
set g_balance_nex_charge_rate 0.5
set g_balance_nex_charge_limit 0.5
set g_balance_nex_charge_rot_rate 0.1
-set g_balance_nex_charge_rot_pause 1 // Dont rot down until this long after release of charge button
+set g_balance_nex_charge_rot_pause 0.5 // Dont rot down until this long after release of charge button
set g_balance_nex_charge_shot_multiplier 0
set g_balance_nex_charge_velocity_rate 0
set g_balance_nex_charge_minspeed 600
set g_balance_hagar_primary_damage 14
set g_balance_hagar_primary_edgedamage 6
set g_balance_hagar_primary_force 70
-set g_balance_hagar_primary_radius 115
+set g_balance_hagar_primary_radius 110
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_sniperrifle_primary_burstcost 0
set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot
set g_balance_sniperrifle_secondary 1
+set g_balance_sniperrifle_secondary_reload 1
set g_balance_sniperrifle_secondary_tracer 0
set g_balance_sniperrifle_secondary_damage 42
set g_balance_sniperrifle_secondary_headshotaddeddamage 42
set g_balance_laser_primary_gauntlet 0
set g_balance_laser_primary_force_zscale 1.2
set g_balance_laser_primary_force_velocitybias 0
+set g_balance_laser_primary_force_other_scale 1
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_gauntlet 0
set g_balance_laser_secondary_force_zscale 1
set g_balance_laser_secondary_force_velocitybias 0
+set g_balance_laser_secondary_force_other_scale 1
// }}}
// {{{ shotgun
set g_balance_shotgun_primary_bullets 10
set g_balance_sniperrifle_primary_burstcost 0
set g_balance_sniperrifle_primary_bullethail 0 // empty magazine on shot
set g_balance_sniperrifle_secondary 1
+set g_balance_sniperrifle_secondary_reload 0
set g_balance_sniperrifle_secondary_tracer 0
set g_balance_sniperrifle_secondary_damage 50
set g_balance_sniperrifle_secondary_headshotaddeddamage 50 // 50 damage only on head
seta g_mirrordamage_virtual 1 "for teamplay 4: do not actually apply mirror damage, just show graphics effect for it"
seta g_friendlyfire 0.500000 "for teamplay 4: fiendly fire factor"
seta g_friendlyfire_virtual 1 "for teamplay 4: do not actually apply friendly fire, just show graphics effect for it"
+seta g_friendlyfire_virtual_force 1 "for teamplay 4: apply force even though damage was made virtual only"
seta g_teamdamage_threshold 40 "for teamplay 4: threshold over which to apply mirror damage"
seta g_teamdamage_resetspeed 20 "for teamplay 4: how fast player's teamdamage count decreases"
seta hud_fontsize 11
seta scr_centersize 12
seta hud_width 560
-// alias hud_font "loadfont user1 ${1},gfx/fallback ${2-}; loadfont user2 ${1}-big ${2-}; scoreboard_columns_set"
-alias sbar_font "set _requested_sbar_font \"${*}\""
-sbar_font gfx/vera-sans 8 12 16 24 32
// these entities are not referenced by anything directly, they just represent
// teams and are found by find() when needed
scr_loadingscreen_background 0
scr_loadingscreen_barcolor "0 0.5 1"
-scr_loadingscreen_barheight 20
+scr_loadingscreen_barheight 12
scr_loadingscreen_count 1
scr_conforcewhiledisconnected 0
+scr_infobar_height 12
// DP cannot properly detect this, so rather turn off the detection
r_texture_dds_load_dxt1_noalpha 1
oldshift = draw_shift;
oldscale = draw_scale;
absSize = boxToGlobalSize(me.size, eX * (1 - me.controlWidth) + eY * me.itemHeight);
+ draw_scale = boxToGlobalSize(eX * (1 - me.controlWidth) + eY * me.itemHeight, oldscale);
for(i = floor(me.scrollPos / me.itemHeight); i < me.nItems; ++i)
{
float y;
if(y >= 1)
break;
draw_shift = boxToGlobal(eY * y, oldshift, oldscale);
- draw_scale = boxToGlobalSize(eY * me.itemHeight + eX * (1 - me.controlWidth), oldscale);
me.drawListBoxItem(me, i, absSize, (me.selectedItem == i));
}
draw_ClearClip();
sl = makeXonoticSlider(0.15, 1, 0.05, "cl_autotaunt");
sl.valueDisplayMultiplier = 100;
sl.valueDigits = 0;
- me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, sl, "Automatic taunts"));
+ me.TD(me, 1, 3, e = makeXonoticSliderCheckBox(0, 1, sl, "Automatic taunts"));
if(sl.value != e.savedValue)
e.savedValue = 0.65; // default
me.TR(me);
me.TR(me);
me.TR(me);
- me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Geometry detail:"));
+ me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Geometry detail:"));
me.TD(me, 1, 2, e = makeXonoticTextSlider("r_subdivisions_tolerance"));
e.addValue(e, "Lowest", "16");
e.addValue(e, "Low", "8");
e.addValue(e, "Insane", "1");
e.configureXonoticTextSliderValues(e);
me.TR(me);
- me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Antialiasing:"));
+ me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Antialiasing:"));
me.TD(me, 1, 2, e = makeXonoticTextSlider("vid_samples"));
e.addValue(e, "Disabled", "1");
e.addValue(e, "2x", "2");
e.configureXonoticTextSliderValues(e);
me.TR(me);
me.TR(me);
- me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Texture resolution:"));
+ me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Texture resolution:"));
me.TD(me, 1, 2, e = makeXonoticPicmipSlider());
if(cvar("developer"))
e.addValue(e, "Leet", "1337");
}
}
me.TR(me);
- me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Anisotropy:"));
+ me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Anisotropy:"));
me.TD(me, 1, 2, e = makeXonoticTextSlider("gl_texture_anisotropy"));
e.addValue(e, "Disabled", "1");
e.addValue(e, "2x", "2");
e.configureXonoticTextSliderValues(e);
me.TR(me);
me.TR(me);
- me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Particle quality:"));
+ me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Particle quality:"));
me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality"));
me.TR(me);
- me.TD(me, 1, 1, e = makeXonoticTextLabel(0, "Particle dist.:"));
+ me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, "Particle distance:"));
me.TD(me, 1, 2, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance"));
me.TR(me);
me.TR(me);
me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_decals", "Decals"));
me.TR(me);
me.TDempty(me, 0.2);
- me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Distance:"));
+ me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, "Distance:"));
setDependent(e, "cl_decals", 1, 1);
me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance"));
setDependent(e, "cl_decals", 1, 1);
me.TR(me);
me.TDempty(me, 0.2);
- me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, "Time:"));
+ me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, "Time:"));
setDependent(e, "cl_decals", 1, 1);
me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_time"));
setDependent(e, "cl_decals", 1, 1);
if(srv == "")
return FALSE;
srv = netaddress_resolve(srv, 26000);
+ if(srv == "")
+ return FALSE;
p = crypto_getidfp(srv);
n = tokenize_console(cvar_string("net_slist_favorites"));
for(i = 0; i < n; ++i)
me.columnPingSize = me.realFontSize_x * 3;
me.columnMapSize = me.realFontSize_x * 10;
me.columnTypeSize = me.realFontSize_x * 4;
- me.columnPlayersSize = me.realFontSize_x * 4;
+ me.columnPlayersSize = me.realFontSize_x * 5;
me.columnNameSize = 1 - me.columnPlayersSize - me.columnMapSize - me.columnPingSize - me.columnIconsSize - me.columnTypeSize - 5 * me.realFontSize_x;
me.columnPingOrigin = me.columnIconsOrigin + me.columnIconsSize + me.realFontSize_x;
me.columnNameOrigin = me.columnPingOrigin + me.columnPingSize + me.realFontSize_x;
}
else if(scan == K_MOUSE2 || scan == K_SPACE)
{
- main.serverInfoDialog.loadServerInfo(main.serverInfoDialog, me.selectedItem);
- DialogOpenButton_Click_withCoords(me, main.serverInfoDialog, org, sz);
+ if(me.nItems != 0)
+ {
+ main.serverInfoDialog.loadServerInfo(main.serverInfoDialog, me.selectedItem);
+ DialogOpenButton_Click_withCoords(me, main.serverInfoDialog, org, sz);
+ }
}
else if(scan == K_INS || scan == K_MOUSE3 || scan == K_KP_INS)
{
float autocvar_g_balance_sniperrifle_secondary_force;
float autocvar_g_balance_sniperrifle_secondary_headshotaddeddamage;
float autocvar_g_balance_sniperrifle_secondary_lifetime;
+float autocvar_g_balance_sniperrifle_secondary_reload;
float autocvar_g_balance_sniperrifle_secondary_refire;
float autocvar_g_balance_sniperrifle_secondary_speed;
float autocvar_g_balance_sniperrifle_secondary_spread;
float autocvar_g_balance_laser_primary_delay;
float autocvar_g_balance_laser_primary_edgedamage;
float autocvar_g_balance_laser_primary_force;
+float autocvar_g_balance_laser_primary_force_other_scale;
float autocvar_g_balance_laser_primary_force_velocitybias;
float autocvar_g_balance_laser_primary_force_zscale;
float autocvar_g_balance_laser_primary_lifetime;
float autocvar_g_balance_laser_secondary_damage;
float autocvar_g_balance_laser_secondary_edgedamage;
float autocvar_g_balance_laser_secondary_force;
+float autocvar_g_balance_laser_secondary_force_other_scale;
float autocvar_g_balance_laser_secondary_force_velocitybias;
float autocvar_g_balance_laser_secondary_force_zscale;
float autocvar_g_balance_laser_secondary_lifetime;
float autocvar_g_freezetag_warmup;
#define autocvar_g_friendlyfire cvar("g_friendlyfire")
#define autocvar_g_friendlyfire_virtual cvar("g_friendlyfire_virtual")
+#define autocvar_g_friendlyfire_virtual_force cvar("g_friendlyfire_virtual_force")
float autocvar_g_full_getstatus_responses;
float autocvar_g_fullbrightitems;
float autocvar_g_fullbrightplayers;
self.cnt = self.switchweapon;
self.weapon = 0;
+ self.wish_reload = 0;
+
if(!self.alivetime)
self.alivetime = time;
} else if(self.classname == "observer" || (g_ca && !allowed_to_spawn)) {
{
// do nothing
}
- else if(g_freezetag && self.freezetag_frozen == 1)
+ else if(self.freezetag_frozen)
{
// do nothing
}
*/
void PlayerJump (void)
{
- if(g_freezetag && self.freezetag_frozen)
+ if(self.freezetag_frozen)
return; // no jumping in freezetag when frozen
float mjumpheight;
void W_Reload()
{
- if(self.switchweapon == self.weapon)
- if(self.weaponentity.state == WS_READY)
- weapon_action(self.weapon, WR_RELOAD);
+ self.wish_reload = 1;
}
// switch between weapons
#endif
.float sniperrifle_bulletcounter;
+.float wish_reload;
#define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_CORPSE; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE
// when doing this, hagar can go through clones
targ.dmg_save += v_y;
targ.dmg_inflictor = inflictor;
damage = 0;
- force = '0 0 0';
+ if(!autocvar_g_friendlyfire_virtual_force)
+ force = '0 0 0';
}
}
else
// laser force adjustments :P
if(DEATH_WEAPONOF(deathtype) == WEP_LASER)
{
- vector vel;
-
- float force_zscale;
- float force_velocitybiasramp;
- float force_velocitybias;
-
- force_velocitybiasramp = autocvar_sv_maxspeed;
- if(deathtype & HITTYPE_SECONDARY)
- {
- force_zscale = autocvar_g_balance_laser_secondary_force_zscale;
- force_velocitybias = autocvar_g_balance_laser_secondary_force_velocitybias;
- }
- else
- {
- force_zscale = autocvar_g_balance_laser_primary_force_zscale;
- force_velocitybias = autocvar_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)
+ {
+ vector vel;
+
+ float force_zscale;
+ float force_velocitybiasramp;
+ float force_velocitybias;
+
+ force_velocitybiasramp = autocvar_sv_maxspeed;
+ if(deathtype & HITTYPE_SECONDARY)
+ {
+ force_zscale = autocvar_g_balance_laser_secondary_force_zscale;
+ force_velocitybias = autocvar_g_balance_laser_secondary_force_velocitybias;
+ }
+ else
+ {
+ force_zscale = autocvar_g_balance_laser_primary_force_zscale;
+ force_velocitybias = autocvar_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;
+ }
+ else
+ {
+ if(deathtype & HITTYPE_SECONDARY)
+ {
+ force *= autocvar_g_balance_laser_secondary_force_other_scale;
+ }
+ else
+ {
+ force *= autocvar_g_balance_laser_primary_force_other_scale;
+ }
+ }
}
//if (targ == attacker)
if(e.watertype != CONTENT_LAVA)
e.fire_endtime = 0;
+ // ice stops fire
+ if(e.freezetag_frozen)
+ e.fire_endtime = 0;
+
t = min(frametime, e.fire_endtime - time);
d = e.fire_damagepersec * t;
if((arena_roundbased && time < warmup) || (time < game_starttime))
return;
- if(g_freezetag && self.freezetag_frozen)
+ if(self.freezetag_frozen)
return;
makevectors(self.v_angle);
BADCVAR("g_forced_team_pink");
// mapinfo
- BADCVAR("timelimit");
BADCVAR("fraglimit");
- BADCVAR("leadlimit");
- BADCVAR("g_tdm_teams");
- BADCVAR("g_keyhunt_teams");
- BADCVAR("g_domination_default_teams");
- BADCVAR("g_race_qualifying_timelimit");
- BADCVAR("g_lms");
BADCVAR("g_arena");
- BADCVAR("g_ca");
BADCVAR("g_assault");
+ BADCVAR("g_ca");
BADCVAR("g_ctf");
+ BADCVAR("g_cts");
BADCVAR("g_dm");
BADCVAR("g_domination");
+ BADCVAR("g_domination_default_teams");
BADCVAR("g_freezetag");
+ BADCVAR("g_keepaway");
BADCVAR("g_keyhunt");
BADCVAR("g_keyhunt_teams");
+ BADCVAR("g_keyhunt_teams");
+ BADCVAR("g_lms");
+ BADCVAR("g_nexball");
BADCVAR("g_onslaught");
BADCVAR("g_race");
- BADCVAR("g_cts");
+ BADCVAR("g_race_qualifying_timelimit");
BADCVAR("g_runematch");
BADCVAR("g_tdm");
- BADCVAR("g_nexball");
- BADCVAR("g_keepaway");
+ BADCVAR("g_tdm_teams");
+ BADCVAR("leadlimit");
+ BADCVAR("nextmap");
BADCVAR("teamplay");
+ BADCVAR("timelimit");
// long
BADCVAR("hostname");
void CreatureFrame (void)
{
local entity oldself;
- local float dm, maxspeed;
+ local float dm;
oldself = self;
self = findfloat(world, iscreature, TRUE);
while (self)
self.dmg = 2;
}
// check for falling damage
+ float velocity_len = vlen(self.velocity);
if(!self.hook.state && !g_ca && !(g_cts && !autocvar_g_cts_selfdamage))
{
- dm = vlen(self.oldvelocity) - vlen(self.velocity); // dm is now the velocity DECREASE. Velocity INCREASE should never cause a sound or any damage.
+ dm = vlen(self.oldvelocity) - velocity_len; // dm is now the velocity DECREASE. Velocity INCREASE should never cause a sound or any damage.
if (self.deadflag)
dm = (dm - autocvar_g_balance_falldamage_deadminspeed) * autocvar_g_balance_falldamage_factor;
else
Damage (self, world, world, dm, DEATH_FALL, self.origin, '0 0 0');
}
- maxspeed = autocvar_g_maxspeed;
- if(maxspeed > 0 && vlen(self.velocity) > maxspeed)
+ if(autocvar_g_maxspeed > 0 && velocity_len > autocvar_g_maxspeed)
Damage (self, world, world, 100000, DEATH_SHOOTING_STAR, self.origin, '0 0 0');
// play stupid sounds
if (g_footsteps)
if (!gameover)
if (self.flags & FL_ONGROUND)
- if (vlen(self.velocity) > autocvar_sv_maxspeed * 0.6)
+ if (velocity_len > autocvar_sv_maxspeed * 0.6)
if (!self.deadflag)
if (time < self.lastground + 0.2)
{
remove(self);
return;
}
- if (self.owner.weaponentity.state != WS_INUSE || (self.owner.ammo_cells <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK || (g_freezetag && self.owner.freezetag_frozen))
+ if (self.owner.weaponentity.state != WS_INUSE || (self.owner.ammo_cells <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK || self.owner.freezetag_frozen)
{
if(self == self.owner.lgbeam)
self.owner.lgbeam = world;
{
if(self.sniperrifle_bulletcounter < 0) // forced reload (e.g. because interrupted)
{
- if(self.switchweapon == self.weapon)
- if(self.weaponentity.state == WS_READY)
- W_SniperRifle_Reload();
+ self.wish_reload = 1;
}
else
{
{
if (autocvar_g_balance_sniperrifle_secondary)
{
- if (weapon_prepareattack_check(1, autocvar_g_balance_sniperrifle_secondary_refire))
- if (time >= self.sniperrifle_accumulator + autocvar_g_balance_sniperrifle_secondary_burstcost)
- {
- weapon_prepareattack_do(1, autocvar_g_balance_sniperrifle_secondary_refire);
- W_SniperRifle_BulletHail(autocvar_g_balance_sniperrifle_secondary_bullethail, W_SniperRifle_Attack2, WFRAME_FIRE2, autocvar_g_balance_sniperrifle_secondary_animtime, autocvar_g_balance_sniperrifle_primary_refire);
- self.sniperrifle_accumulator += autocvar_g_balance_sniperrifle_secondary_burstcost;
- }
+ if(autocvar_g_balance_sniperrifle_secondary_reload)
+ self.wish_reload = 1;
+ else
+ {
+ if (weapon_prepareattack_check(1, autocvar_g_balance_sniperrifle_secondary_refire))
+ if (time >= self.sniperrifle_accumulator + autocvar_g_balance_sniperrifle_secondary_burstcost)
+ {
+ weapon_prepareattack_do(1, autocvar_g_balance_sniperrifle_secondary_refire);
+ W_SniperRifle_BulletHail(autocvar_g_balance_sniperrifle_secondary_bullethail, W_SniperRifle_Attack2, WFRAME_FIRE2, autocvar_g_balance_sniperrifle_secondary_animtime, autocvar_g_balance_sniperrifle_primary_refire);
+ self.sniperrifle_accumulator += autocvar_g_balance_sniperrifle_secondary_burstcost;
+ }
+ }
}
}
}
+ if(self.wish_reload)
+ {
+ if(self.switchweapon == self.weapon)
+ {
+ if(self.weaponentity.state == WS_READY)
+ {
+ self.wish_reload = 0;
+ W_SniperRifle_Reload();
+ }
+ }
+ }
}
else if (req == WR_PRECACHE)
{
return self.ammo_nails >= autocvar_g_balance_sniperrifle_secondary_ammo;
else if (req == WR_RELOAD)
{
- W_SniperRifle_Reload();
+ self.wish_reload = 1;
}
else if (req == WR_RESETPLAYER)
{