X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fmutator%2Fgamemode_invasion.qc;h=1d9dc662017f7743f212588be4a96ba0c8a7f1c4;hp=ffbd29cdfa6a375ef0b49f954c8552364b609e63;hb=f34fd47ee0a7f283ab60592a17399ec5a500416c;hpb=0e83bfa836d40bdab5d96e17b6dd1b822f459fd7 diff --git a/qcsrc/server/mutators/mutator/gamemode_invasion.qc b/qcsrc/server/mutators/mutator/gamemode_invasion.qc index ffbd29cdf..1d9dc6620 100644 --- a/qcsrc/server/mutators/mutator/gamemode_invasion.qc +++ b/qcsrc/server/mutators/mutator/gamemode_invasion.qc @@ -1,66 +1,4 @@ #include "gamemode_invasion.qh" -#ifndef GAMEMODE_INVASION_H -#define GAMEMODE_INVASION_H - -#define autocvar_g_invasion_point_limit cvar("g_invasion_point_limit") -int autocvar_g_invasion_teams; -bool autocvar_g_invasion_team_spawns; -bool g_invasion; -void invasion_Initialize(); - -REGISTER_MUTATOR(inv, false) -{ - MUTATOR_ONADD - { - if (time > 1) // game loads at time 1 - error("This is a game type and it cannot be added at runtime."); - g_invasion = true; - invasion_Initialize(); - - cvar_settemp("g_monsters", "1"); - - SetLimits(autocvar_g_invasion_point_limit, autocvar_leadlimit_override, autocvar_timelimit_override, -1); - if (autocvar_g_invasion_teams >= 2) - { - ActivateTeamplay(); - if (autocvar_g_invasion_team_spawns) - have_team_spawns = -1; // request team spawns - } - } - - MUTATOR_ONROLLBACK_OR_REMOVE - { - // we actually cannot roll back invasion_Initialize here - // BUT: we don't need to! If this gets called, adding always - // succeeds. - } - - MUTATOR_ONREMOVE - { - LOG_INFO("This is a game type and it cannot be removed at runtime."); - return -1; - } - - return 0; -} - -float inv_numspawned; -float inv_maxspawned; -float inv_roundcnt; -float inv_maxrounds; -float inv_numkilled; -float inv_lastcheck; -float inv_maxcurrent; - -float invasion_teams; -float inv_monsters_perteam[17]; - -float inv_monsterskill; - -const float ST_INV_KILLS = 1; -#endif - -#ifdef IMPLEMENTATION #include #include @@ -77,7 +15,7 @@ float autocvar_g_invasion_spawn_delay; spawnfunc(invasion_spawnpoint) { - if(!g_invasion) { remove(this); return; } + if(!g_invasion) { delete(this); return; } this.classname = "invasion_spawnpoint"; @@ -131,7 +69,7 @@ void invasion_SpawnChosenMonster(float mon) if(spawn_point == NULL) { - LOG_TRACE("Warning: couldn't find any invasion_spawnpoint spawnpoints, attempting to spawn monsters in random locations\n"); + LOG_TRACE("Warning: couldn't find any invasion_spawnpoint spawnpoints, attempting to spawn monsters in random locations"); entity e = spawn(); setsize(e, (get_monsterinfo(mon)).mins, (get_monsterinfo(mon)).maxs); @@ -485,7 +423,7 @@ MUTATOR_HOOKFUNCTION(inv, AllowMobButcher) return true; } -void invasion_ScoreRules(float inv_teams) +void invasion_ScoreRules(int inv_teams) { if(inv_teams) { CheckAllowedTeams(NULL); } ScoreRules_basics(inv_teams, 0, 0, false); @@ -497,7 +435,16 @@ void invasion_ScoreRules(float inv_teams) void invasion_DelayedInit(entity this) // Do this check with a delay so we can wait for teams to be set up. { if(autocvar_g_invasion_teams) + { invasion_teams = bound(2, autocvar_g_invasion_teams, 4); + int teams = 0; + if(invasion_teams >= 1) teams |= BIT(0); + if(invasion_teams >= 2) teams |= BIT(1); + if(invasion_teams >= 3) teams |= BIT(2); + if(invasion_teams >= 4) teams |= BIT(3); + + invasion_teams = teams; // now set it? + } else invasion_teams = 0; @@ -535,5 +482,3 @@ void invasion_Initialize() InitializeEntity(NULL, invasion_DelayedInit, INITPRIO_GAMETYPE); } - -#endif