Towers of Doom

Wiki
  • Neither team can directly attack the enemy Core. Core damage comes from Altars, Sappers, the Headless Horseman, and 6-cap Bell Tower bombardment.
  • Capturing an Altar deals 1 Core damage, plus 1 more for each Bell Tower your team holds.
  • Bell Towers start as Forts and become Keeps when the Waygates/Tunnels open, usually at 12:00.
  • The central Headless Horseman boss camp, when captured, deals 4 damage to the enemy Core.

Objective Timers

EventDurationSecondsSource
First Altars3:00180slibMTOD_gv_mMToDScoringEventDelay_C
Altar Respawn1:50110slibMTOD_gv_mMToDAltarRespawnDelay_C
Altar Warning0:3030slibMTOD_gv_mMToDScoringAltarWarningTime_C
Phase 2 Activates12:00720slibMTOD_gv_mMToDPhaseTwoDelay_C

Altar Captures Deal Core Damage

Neither team can directly attack the enemy Core. Capturing an Altar deals 1 Core damage, plus 1 more for each Bell Tower your team holds. Sappers, the Headless Horseman, and 6-cap Bell Tower bombardment can also damage the Core.


    }
    auto956A1EFD_g = libMTOD_gv_mMToDScoringAltarConfigs[lv_pointGroup];
    lv_itAltar = -1;
    while (true) {
        	lv_itAltar = PlayerGroupNextPlayer(auto956A1EFD_g, lv_itAltar);
        	if (lv_itAltar<0) { break; }
        	libNtve_gf_SendActorMessageToUnit(libMTOD_gv_mMToDScoringAltars[lv_itAltar].lv_unit, "MinimapIconTintColor 255,145,113,218");
        libNtve_gf_SendActorMessageToUnit(libMTOD_gv_mMToDScoringAltars[lv_itAltar].lv_unit, "MinimapTooltip DOCSTR_NextActiveAltar");
        libNtve_gf_SendActorMessageToUnit(libMTOD_gv_mMToDScoringAltars[lv_itAltar].lv_unit, "SetMinimapVisibility 1");
        libNtve_gf_SendActorMessageToUnit(libMTOD_gv_mMToDScoringAltars[lv_itAltar].lv_unit, "SetMinimapVisibilityAlways 1");
    }
    libMTOD_gv_mMToDEventCurrentPointGroup = lv_pointGroup;
}

void libMTOD_gf_MMToDAltarFireCannons (int lp_teamScored) {
    // Variable Declarations
    unit lv_itTown;

    // Automatic Variable Declarations
    int autoB1EAAD11_val;
    unitgroup auto8B70F9E1_g;
    int auto8B70F9E1_u;
    unitgroup autoCFA5C262_g;
    int autoCFA5C262_u;

    // Variable Initialization

    // Implementation
    autoB1EAAD11_val = lp_teamScored;

Waygates and Headless Horseman

Bell Towers start as Forts and become Keeps when the Waygates/Tunnels open, usually at 12:00. If Altars are active then, opening is delayed until after that objective phase ends. The central Headless Horseman boss camp, when captured, deals 4 damage to the enemy Core.


    }
    ActorScopeKill(ActorScopeFromActor(lv_actorRegion));
}

unit libMTOD_gf_MMToDGetTownFort (int lp_townIndex) {
    // Automatic Variable Declarations
    // Implementation
    return libMTOD_gv_mMToDTowns[lp_townIndex].lv_fortUnit;
}

void libMTOD_gf_MMToDBossCampFireCannons (int lp_firingTeam) {
    // Variable Declarations
    revealer[libCore_gv_bALMaxTeams + 1] lv_revealers;
    int lv_shotsFired;
    int lv_enemyTeam;

    // Automatic Variable Declarations
    // Variable Initialization

    // Implementation
    VisRevealerCreate(libCore_gv_cOMPUTER_TeamOrder, RegionCircle(UnitGetPosition(libMTOD_gv_mMToDHorsemanCannon), 2.0));

Timer Source

libmtod_h.galaxy — constants

const fixed libMTOD_gv_mMToDScoringEventDelay_C = 180.0;
const fixed libMTOD_gv_mMToDAltarRespawnDelay_C = 110.0;
const fixed libMTOD_gv_mMToDScoringAltarWarningTime_C = 30.0;
const fixed libMTOD_gv_mMToDPhaseTwoDelay_C = 720.0;

libmtod.galaxy — timer start

    // Actions
    if (!runActions) {
        return true;
    }

    if ((libMTOD_gv_mMToDFirstEventSpawned == true)) {
        TimerStart(libMTOD_gv_mMToDScoringAltarTimer, libMTOD_gv_mMToDAltarRespawnDelay_C, false, c_timeGame);
    }
    else {
        libMTOD_gv_mMToDFirstEventSpawned = true;
        TimerStart(libMTOD_gv_mMToDScoringAltarTimer, libMTOD_gv_mMToDScoringEventDelay_C, false, c_timeGame);
    }
    libNtve_gf_WaitForTimer(libMTOD_gv_mMToDScoringAltarTimer, libMTOD_gv_mMToDScoringAltarWarningTime_C, false);
    if (((libMTOD_gv_mMToDMapEventDisabled == true) || (libGame_gv_gameOver == true))) {
        return true;
    }


// ...


    // Actions
    if (!runActions) {
        return true;
    }

    TimerStart(libMTOD_gv_mMToDPhaseTwoTimer, libMTOD_gv_mMToDPhaseTwoDelay_C, false, c_timeGame);
    libNtve_gf_WaitForTimer(libMTOD_gv_mMToDPhaseTwoTimer, libMTOD_gv_mMToDPhaseTwoWarningTime_C, false);
    if ((libMTOD_gv_mMToDScoringAltarsActive == 0)) {
        if ((TimerIsPaused(libMTOD_gv_mMToDScoringAltarTimer) == false) && (TimerGetRemaining(libMTOD_gv_mMToDScoringAltarTimer) <= libMTOD_gv_mMToDPhaseTwoWarningTime_C)) {
            Wait((TimerGetRemaining(libMTOD_gv_mMToDScoringAltarTimer) + 1.0), c_timeGame);
        }
    }

// ...

    if (!runActions) {
        return true;
    }

    if ((TimerGetRemaining(libMTOD_gv_mMToDScoringAltarTimer) > 1)) {
        TriggerDebugOutput(1, StringExternal("Param/Value/lib_MTOD_8BC9190F"), true);
        TimerStart(libMTOD_gv_mMToDScoringAltarTimer, libMTOD_gv_mMToDScoringAltarWarningTime_C, false, c_timeGame);
    }

    return true;
}

//--------------------------------------------------------------------------------------------------

Source Files