Volskaya Foundry

Wiki
  • Contest a Capture Point that rotates between three locations to earn the Triglav Protector.
  • The Triglav Protector is a two-person mech: one Hero pilots, another mans the weapons.
  • The Triglav Protector has a fixed 150-second timed life once awarded.
  • The first point activates at 3:00 after a 30-second warning; later points activate 3:00 after the Protector is destroyed.

Objective Timers

EventDurationSecondsSource
First Capture Point Cooldown2:30150slibVLSK_gv_mechanicInitialSpawnTimerDuration_C
Capture Point Cooldown2:30150slibVLSK_gv_cooldownTimerDuration_C
Capture Warning0:3030slibVLSK_gv_warningTimerDuration
Protector Timed Life2:30150s

Units

Triglav Protector

Pilot

XML
HP
11500
Speed
4
Scaling
Life
+575/min 1-5, +862.5/min 6-10, +1293.75/min 11-15, +1725/min 16-20, +2156.25/min 21+
Basic damage
+6.3/min 1-5, +9.45/min 6-10, +12.6/min 11-15, +15.75/min 16-20, +18.9/min 21+
Abilities
  • QChargeVolskayaVehicleCharge

    Charge a target and deal 225 damage in an area. Non-Heroes take 200% increased damage.

  • WRocket FistVolskayaVehicleRocketFist

    Launch a Rocket Fist that deals 200 damage to the first Hero or Structure in its path. The rocket pushes away and Stuns Heroes for 1.5 seconds and disables Structures for 4 seconds. Instantly kills Minions in its path.

  • EShield EmitterVolskayaVehicleTShield

    Gain 25 Armor and Shield nearby allied Heroes for 450. Lasts 3 seconds.

  • DLeave VehicleVolskayaVehicleLeaveVehicle

    Exit the Vehicle.

Gunner

XML
HP
10000
Abilities
  • QParticle CannonVolskayaVehicleActivateParticleCannon

    Fire the Particle Cannon, dealing 225 damage in an area.

  • QParticle CannonVolskayaVehicleInitiateParticleCannon

    Start extending the range of the Particle Cannon. Reactivate to fire, dealing 225 damage in the target area.

  • WDeactivate Gatling CannonVolskayaVehicleGatlingCannonCancel

    Stop firing.

  • WGatling CannonVolskayaVehicleTacticalStrikes

    Toggle to fire missiles at the cursor's location. Each missile deals 45 damage but drains 1 Energy. Reactivate to stop firing. Deals 50% less damage to Structures.

  • EScorching LaserVolskayaVehicleSkyLaser

    Vector Targeting Draw a line on the ground, dealing 75 damage. After 1 second, it explodes for 500 damage.

  • DLeave VehicleVolskayaVehicleLeaveVehicle

    Exit the Vehicle.

Capture Point

A team must take control of the Capture Point and hold it until capture progress reaches 100% to earn the Triglav Protector. Control progress can decay while the point is empty or being flipped, but capture progress toward 100% does not decay. Enemy Heroes contesting at 99% force overtime and delay the reward.


    int init_i;

    if (libVLSK_InitVariables_completed) {
        return;
    }

    libVLSK_InitVariables_completed = true;

    libVLSK_gv_capturePointContestTimeGoal_C = 3.0;
    libVLSK_gv_capturePointVictoryTimeGoal_C = 45.0;
    libVLSK_gv_capturePointDecayDelayTime_C = 5.0;
    libVLSK_gv_capturePointContestFilter_C = UnitFilter((1 << c_targetFilterHeroic), 0, (1 << c_targetFilterAir) | (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterBenign - 32)));
    for (init_i = 0; init_i <= libVLSK_gv_capturePointMaxCount_C; init_i += 1) {
        libVLSK_gv_capturePoints[init_i].lv_state = libVLSK_ge_OverwatchCapturePoint_State_Empty;
    }
    libVLSK_gv_capturePointCooldownTimer = TimerCreate();
    libVLSK_gv_capturePointWarningTimer = TimerCreate();

Pilot & Gunner Roles

The first player to enter the Triglav Protector becomes the pilot, the second becomes the gunner. Players can leave and another Hero can take an open seat, but the pilot and gunner roles can no longer be swapped via a Swap ability.


//--------------------------------------------------------------------------------------------------
// Trigger: Vehicle Entered
//--------------------------------------------------------------------------------------------------
bool libVLSK_gt_VehicleEntered_Func (bool testConds, bool runActions) {
    // Automatic Variable Declarations
    // Actions
    if (!runActions) {
        return true;
    }

    if ((UnitGetType(libGame_gf_UseVehicleVehicleUnit()) == "VolskayaVehicle")) {
        libVLSK_gf_SetPilotPortrait(libGame_gf_UseVehiclePassengerHero());
    }
    else {
        if ((UnitGetType(libGame_gf_UseVehicleVehicleUnit()) == "VolskayaVehicleGunner")) {
            UnitCreateEffectUnit(libMapM_gv_vehicle[libMapM_gf_GetVehicleIndexOfUnit(libGame_gf_UseVehicleVehicleUnit())].lv_unit_LinkedVehicle, "AttachedVehicle_AddTrackedUnit", libGame_gf_UseVehiclePassengerHero());
            libVLSK_gf_SetGunnerPortrait(libGame_gf_UseVehiclePassengerHero());
        }

    }
    return true;

Fixed Protector Duration

The Triglav Protector's timed life is fixed at 150 seconds. It does not scale up with game time.


    libVLSK_gf_SendEventVolskayaGiantRobotDies(lv_deathPosition, libGame_gf_TeamNumberOfPlayer(UnitGetOwner(EventUnit())));
    libMapM_gf_JungleStopHibernateCamps();
    TriggerEnable(libVLSK_gt_PilotEntersRobotDropBanner, false);
    TriggerEnable(libVLSK_gt_GunnerEntersRobotDropBanner, false);
    TriggerEnable(libVLSK_gt_PilotNeededTimerExpires, false);
    TriggerEnable(libVLSK_gt_GunnerNeededTimerExpires, false);
    TriggerEnable(libVLSK_gt_PilotEntersRobotStartGunnerReminderTimer, false);
    TriggerEnable(libVLSK_gt_GunnerEntersRobotStopGunnerReminderTimer, false);
    if ((UnitBehaviorDuration(EventUnit(), "VehicleDragonTimedLife") > 0.0)) {
        libVLSK_gf_PlayVORobotDestroyed();
    }
    else {
        libVLSK_gf_PlayVORobotTimedOut();
    }
    if ((libMapM_gv_mMMapMechanicDisabled == false)) {
        libVLSK_gv_currentCapturePoint = libVLSK_gf_GetNextCapturePointIndex();
        TimerStart(libVLSK_gv_mMVolskayaObjectivePreviewTimer, libVLSK_gv_mMVolskayaObjectivePreviewDelay_C, false, c_timeGame);

Timer Source

libvlsk_h.galaxy — constants

const fixed libVLSK_gv_cooldownTimerDuration_C = 150.0;
const fixed libVLSK_gv_mechanicInitialSpawnTimerDuration_C = 150.0;
const fixed libVLSK_gv_warningTimerDuration = 30.0;

libvlsk.galaxy — timer start

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

    TimerStart(libVLSK_gv_capturePointWarningTimer, libVLSK_gv_warningTimerDuration, false, c_timeGame);
    libVLSK_gf_SendEventVolskayaPointWarningCreated(libVLSK_gv_capturePoints[libVLSK_gv_currentCapturePoint].lv_region);
    libVLSK_gf_PlayVOControlPointWarning();
    libVLSK_gf_ShowCapturePointWarningSlideoutWithPing(libVLSK_gv_currentCapturePoint);
    return true;
}


// ...

    if ((libMapM_gv_mMMapMechanicDisabled == false)) {
        libVLSK_gv_currentCapturePoint = libVLSK_gf_GetNextCapturePointIndex();
        TimerStart(libVLSK_gv_mMVolskayaObjectivePreviewTimer, libVLSK_gv_mMVolskayaObjectivePreviewDelay_C, false, c_timeGame);
    }

    if ((libMapM_gv_mMMapMechanicDisabled == false)) {
        TimerStart(libVLSK_gv_capturePointCooldownTimer, libVLSK_gv_mechanicInitialSpawnTimerDuration_C, false, c_timeGame);
    }

    return true;
}

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

// ...

    else {
        libVLSK_gf_PlayVORobotTimedOut();
    }
    if ((libMapM_gv_mMMapMechanicDisabled == false)) {
        libVLSK_gv_currentCapturePoint = libVLSK_gf_GetNextCapturePointIndex();
        TimerStart(libVLSK_gv_mMVolskayaObjectivePreviewTimer, libVLSK_gv_mMVolskayaObjectivePreviewDelay_C, false, c_timeGame);
        TimerStart(libVLSK_gv_capturePointCooldownTimer, libVLSK_gv_cooldownTimerDuration_C, false, c_timeGame);
    }

    return true;
}

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

Source Files