#pragma once #include "../gamemode.qh" void assault_ScoreRules(); REGISTER_MUTATOR(as, false) { ActivateTeamplay(); have_team_spawns = -1; // request team spawns MUTATOR_ONADD { if (time > 1) // game loads at time 1 error("This is a game type and it cannot be added at runtime."); assault_ScoreRules(); } MUTATOR_ONROLLBACK_OR_REMOVE { // we actually cannot roll back assault_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; } // sprites .entity assault_decreaser; .entity assault_sprite; // legacy bot defs const int HAVOCBOT_AST_ROLE_NONE = 0; const int HAVOCBOT_AST_ROLE_DEFENSE = 2; const int HAVOCBOT_AST_ROLE_OFFENSE = 4; .int havocbot_role_flags; .float havocbot_attack_time; .void(entity this) havocbot_role; .void(entity this) havocbot_previous_role; void(entity this) havocbot_role_ast_defense; void(entity this) havocbot_role_ast_offense; void(entity bot) havocbot_ast_reset_role; void(entity this, float ratingscale, vector org, float sradius) havocbot_goalrating_items; void(entity this, float ratingscale, vector org, float sradius) havocbot_goalrating_enemyplayers; // scoreboard stuff const float ST_ASSAULT_OBJECTIVES = 1; // predefined spawnfuncs void target_objective_decrease_activate(entity this);