Battlefield of Eternity

Wiki
  • An Angelic and Demonic Immortal spawn in the center arena and fight each other.
  • Heroes damage the enemy Immortal while defending their own. Immortals use Cleave and Explosions, telegraphed by ground indicators.
  • The winning Immortal gains a Shield equal to its remaining Health and pushes whichever enemy lane has the least Structure damage.
  • A new duel begins 105 seconds later.

Objective Timers

EventDurationSecondsSource
First Immortal Spawn3:00180slibMLBD_gv_mMBossDuelInitialDelay_C
Immortal Respawn1:45105slibMLBD_gv_mMBossDuelEventCooldown_C
Spawn Warning0:3030slibMLBD_gv_mMBossDuelWarningDelayLong_C

Units

Immortal (Heaven)

Laner

XML
HP
10500
Speed
4.3984
Scaling
Life
+800/min 1-5, +850/min 6-10, +900/min 11-15, +950/min 16+
Basic damage
+24/min 1-10, +28/min 11-15, +32/min 16+
Abilities
  • QAngelic ExplosionsAngelicExplosions

    Damages and stuns enemies in multiple areas around the caster. There must be nearby heroes around to activate.

  • WAngelic CleaveAngelicCleave

    Deals area damage and knocks back targets around the caster.

Weapons
IDDamagePeriodRange
BossDuelLanerRangedWeaponHeaven4502s
BossDuelLanerMeleeWeaponHeaven4502s1.5

Objective

XML
HP
16250
Speed
15
Scaling
Life
+750/min 1-5, +1125/min 6-10, +1500/min 11-15, +1875/min 16-20, +2250/min 21+
Abilities
  • QAngelic ExplosionsAngelicExplosions

    Damages and stuns enemies in multiple areas around the caster. There must be nearby heroes around to activate.

  • WAngelic CleaveAngelicCleave

    Deals area damage and knocks back targets around the caster.

Weapons
IDDamagePeriodRange
BossDuelBossDummyHeavenWeapon2s100

Immortal (Hell)

Laner

XML
HP
10500
Speed
4.3984
Scaling
Life
+800/min 1-5, +850/min 6-10, +900/min 11-15, +950/min 16+
Basic damage
+24/min 1-10, +28/min 11-15, +32/min 16+
Abilities
  • QDemonic ExplosionsDemonicExplosions

    Damages and stuns enemies in multiple areas around the caster. There must be nearby heroes around to activate.

  • WDemonic CleaveDemonicCleave

    Deals area damage and knocks back targets around the caster.

Weapons
IDDamagePeriodRange
BossDuelLanerRangedWeaponHell4502s
BossDuelLanerMeleeWeaponHell4502s1.5

Objective

XML
HP
16250
Speed
15
Scaling
Life
+750/min 1-5, +1125/min 6-10, +1500/min 11-15, +1875/min 16-20, +2250/min 21+
Abilities
  • QDemonic ExplosionsDemonicExplosions

    Damages and stuns enemies in multiple areas around the caster. There must be nearby heroes around to activate.

  • WDemonic CleaveDemonicCleave

    Deals area damage and knocks back targets around the caster.

Weapons
IDDamagePeriodRange
BossDuelBossDummyHellWeapon2s100

The Duel

An Angelic and a Demonic Immortal spawn in the center arena and fight each other. Heroes can damage the opposing Immortal while protecting their allied one. During the duel, Immortals use Cleave and Explosions, both telegraphed by ground indicators. The first Immortal reduced to 0 Health loses; the survivor wins.


    if ((EventUnit() == libMLBD_gv_mMBOEBosses[1])) {
        UnitSetPropertyFixed(libMLBD_gv_mMBOEBosses[1], c_unitPropLife, 0.5);
        lv_winningUnit = libMLBD_gv_mMBOEBosses[2];
        libGame_gf_DropLootBannerinSconce(libMLBD_gv_mMBOEMiddleBannerSconce, libGame_gv_players[libMLBD_gv_mMBOELastBossAttackers[1]].lv_lootContent.lv_loot_Banner.lv_bannerID, libMLBD_gv_mMBOELastBossAttackers[1], true);
    }
    else {
        UnitSetPropertyFixed(libMLBD_gv_mMBOEBosses[2], c_unitPropLife, 0.5);
        lv_winningUnit = libMLBD_gv_mMBOEBosses[1];
        libGame_gf_DropLootBannerinSconce(libMLBD_gv_mMBOEMiddleBannerSconce, libGame_gv_players[libMLBD_gv_mMBOELastBossAttackers[2]].lv_lootContent.lv_loot_Banner.lv_bannerID, libMLBD_gv_mMBOELastBossAttackers[2], true);
    }
    libMLBD_gv_mMBOEEventWinningTeam = libGame_gf_TeamNumberOfPlayer(UnitGetOwner(lv_winningUnit));
    libNtve_gf_MakeUnitInvulnerable(lv_winningUnit, true);
    libNtve_gf_ChangeUnitDamage(lv_winningUnit, libNtve_ge_UnitDamageTakenDealt_Damage_Take, libNtve_ge_UnitDamageChangeOption_No);
    UnitBehaviorAdd(libMLBD_gv_mMBOEBosses[1], "BossDuelDuelCompleteBehavior", libMLBD_gv_mMBOEBosses[1], 1);
    UnitBehaviorAdd(libMLBD_gv_mMBOEBosses[2], "BossDuelDuelCompleteBehavior", libMLBD_gv_mMBOEBosses[2], 1);
    libMLBD_gf_MMBOEUISetBossHP();
    lv_team = 1;
    for ( ; ( (autoD1DA67FE_ai >= 0 && lv_team <= autoD1DA67FE_ae) || (autoD1DA67FE_ai < 0 && lv_team >= autoD1DA67FE_ae) ) ; lv_team += autoD1DA67FE_ai ) {
        RemoveUnitOfInterest(libMLBD_gv_mMBOEBosses[lv_team], "DefendImmortal", libAIAI_gf_ConvertIntegertoGoalTeam(lv_team));
        RemoveUnitOfInterest(libMLBD_gv_mMBOEBosses[lv_team], "KillEnemyImmortal", libAIAI_gf_ConvertIntegertoGoalTeam(libGame_gf_EnemyTeam(lv_team)));
    }

HP → Lane-Push Shield

The winning Immortal gains a Shield equal to its remaining Health during the Objective phase, then flies to the enemy lane that has taken the least Structure damage.


    lv_townHP2 = libMLBD_gf_MMBOETownHealth(lp_town2, lp_player);
    if (((lv_townHP1 - lv_townHP2) > libMLBD_gv_mMBossDuelMeaningfulTownHPDifference_C)) {
        return 1;
    }

    if (((lv_townHP2 - lv_townHP1) > libMLBD_gv_mMBossDuelMeaningfulTownHPDifference_C)) {
        return -1;
    }

    return 0;
}

int libMLBD_gf_MMBOEBossPushingLane (int lp_team) {
    // Variable Declarations
    int lv_teamEnemy;
    int lv_computerEnemy;
    int lv_lane;

    // Automatic Variable Declarations
    int auto782BE736_val;

    // Variable Initialization

    // Implementation
    lv_teamEnemy = libGame_gf_EnemyTeam(lp_team);

Timer Source

libmlbd_h.galaxy — constants

const fixed libMLBD_gv_mMBossDuelInitialDelay_C = 180.0;
const fixed libMLBD_gv_mMBossDuelWarningDelayLong_C = 30.0;
const fixed libMLBD_gv_mMBossDuelEventCooldown_C = 105.0;

libmlbd.galaxy — timer start

    }

    if ((libMapM_gv_mMMapMechanicDisabled == true)) {
        return true;
    }

    TimerStart(libMLBD_gv_mMBOEEventInitDelayTimer, (libMLBD_gv_mMBossDuelInitialDelay_C - libMLBD_gv_mMBossDuelWarningDelay), false, c_timeGame);
    libMLBD_gf_MMBOECalculateNewSpawnLocations(1);
    libMLBD_gf_MMBOEDuelPreviewSetup(false);
    libNtve_gf_WaitForTimer(TimerLastStarted(), 0.0, false);
    if ((TriggerIsEnabled(TriggerGetCurrent()) == false)) {
        return true;
    }

// ...

    libMLBD_gv_mMBOEBossesLaning = null;
    libMapM_gf_JungleStopHibernateCamps();
    Wait(1.0, c_timeGame);
    libMLBD_gv_mMBOEEventStage = libMLBD_ge_MMBOEEventStage_Idle;
    lv_winningTeam = libMLBD_gv_mMBOEEventWinningTeam;
    libMLBD_gv_mMBOEEventWinningTeam = 0;
    TimerStart(libMLBD_gv_mMBOEEventCooldownTimer, (libMLBD_gv_mMBossDuelEventCooldown_C - libMLBD_gv_mMBossDuelWarningDelay), false, c_timeGame);
    Wait(1.5, c_timeGame);
    libMLBD_gf_MMBOETransmissionBossRetreatedQ(lv_winningTeam);
    libMLBD_gf_MMBOECalculateNewSpawnLocations(1);
    libMLBD_gf_MMBOEDuelPreviewSetup(false);
    libNtve_gf_WaitForTimer(TimerLastStarted(), 0.0, false);
    if ((libMLBD_gv_mMBOEDebugUsed == false)) {

Source Files