- Hold both the Sun Shrine (top) and the Moon Shrine (bottom) at the same time to unlock the Dragon Altar.
- Channel the Dragon Altar for 3 seconds to claim the Dragon Knight. Moving, taking damage, or losing a Shrine mid-channel breaks the attempt.
- Once claimed, the Dragon Knight lasts until destroyed or until its timer runs out.
- Its duration is 55 seconds plus 2 seconds per full game-minute elapsed.
Objective Timers
| Event | Duration | Seconds | Source |
|---|---|---|---|
| Shrine Activation Warning | 0:30 | 30s | libMapM_gv_mMGardensDragonWarningTime_C |
| Shrines Activate | 1:00 | 60s | libMapM_gv_mMGardensDragonDragonTowerStartTime_C |
| Shrine Respawn | 1:30 | 90s | libMapM_gv_mMGardensDragonDragonTowerRespawnTime_C |
| Dragon Knight Duration | 0:55 | 55s | libMapM_gv_mMGardensDragonDragonKnightStartingTime_C |
Units
Dragon Knight
- HP
- 8350
- Speed
- 4
Scaling
- Life
- +500/min 1-5, +750/min 6-10, +1000/min 11-15, +1250/min 16-20, +1500/min 21-25, +2250/min 26+
- Basic damage
- +9/min 1-5, +13.5/min 6-10, +18/min 11-15, +22.5/min 16-20, +27/min 21-25, +40.5/min 26+
Abilities
- QFlame Breath
DragonKnightFireBreathBreath a cone of flame, dealing 85 damage and burn the area of effect for an additional 160 damage over 4 seconds.
- WSavage Charge
DragonKnightBullRushAfter a short delay, charge an enemy Hero to knock them back and deal 450 damage.
- RRubble Maker
DragonKnightRubbleMakerIncreases damage to Structures and Minions by 100%. Reduces damage from Structures by 60%. Permanently Unstoppable. The Dragon Knight explodes on death, knocking back nearby enemies.
- DLeave Dragon
DragonKnightLeaveDragonLeave the Dragon Knight.
Weapons
| ID | Damage | Period | Range |
|---|---|---|---|
GardensDragonKnightWeapon | 180 | 1s | 2 |
GardensDragonKnightPuntWeapon | 200 | 0.5s | 2 |
Holding Both Shrines
A team can only channel the Dragon Altar while it holds both the Sun Shrine and the Moon Shrine. Enemy Heroes can retake a Shrine before the 3-second channel finishes to lock the Altar again.
for ( ; ( (autoC86FE021_ai >= 0 && lv_towerIndex <= autoC86FE021_ae) || (autoC86FE021_ai < 0 && lv_towerIndex >= autoC86FE021_ae) ) ; lv_towerIndex += autoC86FE021_ai ) {
if ((UnitGetOwner(libMapM_gv_mMGardensDragonDragonTowers[lv_towerIndex].lv_shrineUnit) == libCore_gv_cOMPUTER_TeamOrder)) {
lv_orderTowersOwned += 1;
}
if ((UnitGetOwner(libMapM_gv_mMGardensDragonDragonTowers[lv_towerIndex].lv_shrineUnit) == libCore_gv_cOMPUTER_TeamChaos)) {
lv_chaosTowersOwned += 1;
}
}
if (((lv_chaosTowersOwned == libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C) || (lv_orderTowersOwned == libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C))) {
if ((lv_chaosTowersOwned == libMapM_gv_mMGardensDragonDragonTowerObeliskCount_C)) {
libMapM_gf_MMGardensDragonActivateStatueForTeam(libCore_gv_cOMPUTER_TeamChaos);
libMapM_gf_MMDragonballsTransmissionDragonCapturableQ(libGame_gv_teamChaosIndex_C);
}
else {
libMapM_gf_MMGardensDragonActivateStatueForTeam(libCore_gv_cOMPUTER_TeamOrder);
libMapM_gf_MMDragonballsTransmissionDragonCapturableQ(libGame_gv_teamOrderIndex_C);
}
}
else {
if ((UnitGetOwner(libMapM_gv_mMGardensDragonStatue) != 0)) {
Dragon Knight Duration Scales With Game Time
The Dragon Knight's duration is not fixed. Once claimed, it lasts 55 seconds plus 2 more for each full game-minute elapsed, unless destroyed first.
TextTagShow(libMapM_gv_mMGardensDragonStatueTextTag, libCore_gv_playerGroupFromPlayer[libCore_gv_oBSERVER_ObserverUIPlayer], false);
TimerStart(libMapM_gv_mMGardensDragonDragonStatueActiveReminderTimer, 1.0, false, c_timeGame);
return true;
}
fixed libMapM_gf_MMGardensDragonDragonDuration () {
// Automatic Variable Declarations
// Implementation
return IntToFixed((FixedToInt(libMapM_gv_mMGardensDragonDragonKnightStartingTime_C)+2*FixedToInt(TimerGetElapsed(libGame_gv_gameTimer))/60));
}
bool libMapM_gf_MMGardensDragonObeliskFullyCaptured (unit lp_obeliskUnit) {
// Variable Declarations
int lv_obeliskIndex;
// Automatic Variable Declarations
int auto7B50E203_ae;
Timer Source
mapmechanicslib_h.galaxy — constants
const fixed libMapM_gv_mMGardensDragonWarningTime_C = 30.0;
const fixed libMapM_gv_mMGardensDragonDragonTowerStartTime_C = 60.0;
const fixed libMapM_gv_mMGardensDragonDragonTowerRespawnTime_C = 90.0;
const fixed libMapM_gv_mMGardensDragonDragonKnightStartingTime_C = 55.0;
mapmechanicslib.galaxy — timer start
// Actions
if (!runActions) {
return true;
}
TimerStart(libMapM_gv_mMGardensDragonDragonTowerStartTimer, libMapM_gv_mMGardensDragonDragonTowerStartTime_C, false, c_timeGame);
return true;
}
//--------------------------------------------------------------------------------------------------
void libMapM_gt_MMGardensDragonGateOpen_Init () {
libMapM_gt_MMGardensDragonGateOpen = TriggerCreate("libMapM_gt_MMGardensDragonGateOpen_Func");
// ...
if (!runActions) {
return true;
}
TriggerExecute(libMapM_gt_MMGardensDragonObjectiveUIHandler, true, false);
libMapM_gv_mMGardensDragonCurrentState = libMapM_ge_MMGardensDragonState_ObelisksWarning;
TimerStart(libMapM_gv_mMGardensDragonDragonTowerWarningTimer, libMapM_gv_mMGardensDragonWarningTime_C, false, c_timeGame);
TimerStart(libMapM_gv_mMGardensDragonDragonTowerGoalActivationTimer, (libMapM_gv_mMGardensDragonWarningTime_C - 5.0), false, c_timeGame);
if ((libMapM_gv_mMDragonballsTransmissionShrinesRechargeFirstTime == true)) {
libMapM_gv_mMDragonballsTransmissionShrinesRechargeFirstTime = false;
libMapM_gf_MMDragonballsTransmissionObelisksChargingFirstQ();
}
else {
libMapM_gf_MMDragonballsTransmissionObelisksChargingRepeatQ();
// ...
}
if ((lv_player > libCore_gv_bALMaxPlayers)) {
lv_player = libMapM_gv_mMGardensDragonPlayer;
}
TimerStart(libMapM_gv_mMGardensDragonDragonTowerRespawnTimer, libMapM_gv_mMGardensDragonDragonTowerRespawnTime_C, false, c_timeGame);
TimerStart(libMapM_gv_mMGardensDragonDragonKnightLifeTimer, 0.0, false, c_timeGame);
libGame_gf_SendEventMapDragonShireDragonEnds();
ActorSend(libCore_gf_ActorStoredForUnit(libMapM_gv_mMGardensDragonUnit, 1), "Destroy");
libMapM_gf_MMGardensDragonDragonHasLeftArtHooks();
Wait(0.5, c_timeGame);
libMapM_gf_MMDragonballsTransmissionDragonExpireQ();
// ...
if (!runActions) {
return true;
}
TriggerExecute(libMapM_gt_MMGardensDragonObjectiveUIHandler, true, false);
libMapM_gv_mMGardensDragonCurrentState = libMapM_ge_MMGardensDragonState_ObelisksWarning;
TimerStart(libMapM_gv_mMGardensDragonDragonTowerWarningTimer, libMapM_gv_mMGardensDragonWarningTime_C, false, c_timeGame);
TimerPause(libMapM_gv_mMGardensDragonDragonTowerStartTimer, true);
TimerPause(libMapM_gv_mMGardensDragonDragonTowerGoalActivationTimer, true);
return true;
}
//--------------------------------------------------------------------------------------------------