bool autocvar_g_lms_join_anytime;
int autocvar_g_lms_last_join;
bool autocvar_g_lms_regenerate;
-int autocvar_g_lms_leader_wp_lives;
-float autocvar_g_lms_leader_wp_max_relative;
-float autocvar_g_lms_leader_wp_time;
-float autocvar_g_lms_leader_wp_time_repeat;
-float autocvar_g_lms_dynamic_respawn_delay;
-float autocvar_g_lms_dynamic_respawn_delay_base;
-float autocvar_g_lms_dynamic_respawn_delay_increase;
-bool autocvar_g_lms_dynamic_vampire;
-float autocvar_g_lms_dynamic_vampire_factor_base;
-float autocvar_g_lms_dynamic_vampire_factor_increase;
-float autocvar_g_lms_dynamic_vampire_factor_max;
-int autocvar_g_lms_dynamic_vampire_min_lives_diff;
+int autocvar_g_lms_leader_wp_lives = 2;
+float autocvar_g_lms_leader_wp_max_relative = 0.5;
+float autocvar_g_lms_leader_wp_time = 5;
+float autocvar_g_lms_leader_wp_time_jitter = 10;
+float autocvar_g_lms_leader_wp_time_repeat = 25;
+float autocvar_g_lms_dynamic_respawn_delay = 1;
+float autocvar_g_lms_dynamic_respawn_delay_base = 2;
+float autocvar_g_lms_dynamic_respawn_delay_increase = 3;
+float autocvar_g_lms_dynamic_respawn_delay_max = 20;
+bool autocvar_g_lms_dynamic_vampire = 1;
+float autocvar_g_lms_dynamic_vampire_factor_base = 0.1;
+float autocvar_g_lms_dynamic_vampire_factor_increase = 0.1;
+float autocvar_g_lms_dynamic_vampire_factor_max = 0.5;
+int autocvar_g_lms_dynamic_vampire_min_lives_diff = 2;
.float lms_leader;
int lms_leaders;
bool lms_visible_leaders;
bool lms_visible_leaders_prev;
+float lms_leader_time_jitter;
// main functions
int LMS_NewPlayerLives()
float leader_repeat_time = leader_time + autocvar_g_lms_leader_wp_time_repeat;
lms_visible_leaders_prev = lms_visible_leaders;
lms_visible_leaders = (time % leader_repeat_time < leader_time);
+ if (lms_visible_leaders_prev && !lms_visible_leaders)
+ lms_leader_time_jitter = random() * autocvar_g_lms_leader_wp_time_jitter;
+ leader_repeat_time += lms_leader_time_jitter;
lms_leaders = 0;
FOREACH_CLIENT(true, {
if (pl_cnt == 1) // player wasn't counted
max_lives = 0;
- player.respawn_time = time + autocvar_g_lms_dynamic_respawn_delay_base +
+ float dlay = autocvar_g_lms_dynamic_respawn_delay_base +
autocvar_g_lms_dynamic_respawn_delay_increase * max(0, max_lives - pl_lives);
+ player.respawn_time = time + min(autocvar_g_lms_dynamic_respawn_delay_max, dlay);
return true;
}