#include <common/mutators/mutator/instagib/items.qh>
#include <server/campaign.qh>
#include <server/command/_mod.qh>
+#include <server/world.qh>
+#include <server/items/items.qh>
int autocvar_g_lms_extra_lives;
bool autocvar_g_lms_join_anytime;
if(warmup_stage)
return false;
- if(player.frags == FRAGS_SPECTATOR)
- return true;
- if(GameRules_scoring_add(player, LMS_LIVES, 0) <= 0)
+ if(player.frags == FRAGS_SPECTATOR || GameRules_scoring_add(player, LMS_LIVES, 0) <= 0)
{
Send_Notification(NOTIF_ONE, player, MSG_CENTER, CENTER_LMS_NOLIVES);
return true;
{
entity frag_target = M_ARGV(2, entity);
+ float tl = GameRules_scoring_add(frag_target, LMS_LIVES, 0);
+ if (tl <= 0)
+ {
+ frag_target.respawn_flags = RESPAWN_SILENT;
+ // prevent unwanted sudden rejoin as spectator and movement of spectator camera
+ frag_target.respawn_time = time + 2;
+ }
frag_target.respawn_flags |= RESPAWN_FORCE;
}
{
if (player.lms_spectate_warning < 2)
{
- if(IS_BOT_CLIENT(player))
- bot_clear(player);
player.frags = FRAGS_PLAYER_OUT_OF_GAME;
int pl_cnt = 0;
FOREACH_CLIENT(IS_PLAYER(it) && it.frags != FRAGS_PLAYER_OUT_OF_GAME, {
FOREACH_CLIENT(IS_PLAYER(it) && it.frags != FRAGS_PLAYER_OUT_OF_GAME, {
pl_cnt++;
});
- if(IS_BOT_CLIENT(frag_target))
- bot_clear(frag_target);
frag_target.frags = FRAGS_PLAYER_OUT_OF_GAME;
GameRules_scoring_add(frag_target, LMS_RANK, pl_cnt);
}
MUTATOR_HOOKFUNCTION(lms, OnEntityPreSpawn)
{
+ if (MUTATOR_RETURNVALUE) return false;
if (!autocvar_g_powerups) return false;
if (!autocvar_g_lms_extra_lives) return false;
MUTATOR_HOOKFUNCTION(lms, ItemTouch)
{
+ if(MUTATOR_RETURNVALUE) return false;
+
entity item = M_ARGV(0, entity);
entity toucher = M_ARGV(1, entity);