export function controllerSetupSelect(player, equipKey, gauntletKey) {

    switch (equipKey) {
        case 'set': // SET CONTROLLERS
            switch (gauntletKey) {
                case 'common':
                    player.playAnimation( // START EQUIP ANIMATION
                        'animation.oct_eg.util.equipped_gauntlet.reset',
                        {
                            blendOutTime: 0.0,
                            nextState: "animation.oct_eg.util.equipped_gauntlet.set",
                            stopExpression: "v.is_first_person && !q.is_in_ui",
                            controller: `_octEgCont_eqg`
                        }
                    );
                    player.playAnimation( // START EQUIP ANIMATION - This also hides the janky transition in first person
                        'animation.oct_eg.util.equipped_gauntlet.set',
                        {
                            blendOutTime: 0.0,
                            nextState: "animation.oct_eg.util.equipped_gauntlet.reset",
                            stopExpression: "(!v.is_first_person && q.all_animations_finished) && !q.is_in_ui",
                            controller: `_octEgCont_eqg`
                        }
                    );
                    vanillaCorrectionControllersEquip(player);
                    commonMovementControllersEquip(player);
                    break;
                case 'anemo':
                    punchDetectionEquip(player);
                    anemoGauntletControllersEquip(player);
                    break;
                case 'pyro':
                    punchDetectionEquip(player);
                    pyroGauntletControllersEquip(player);
                    break;
                case 'ender':
                    punchDetectionEquip(player);
                    enderGauntletControllersEquip(player);
                    break;
                case 'electro':
                    punchDetectionEquip(player);
                    electroGauntletControllersEquip(player);
                    break;
                case 'necro':
                    punchDetectionEquip(player);
                    necroGauntletControllersEquip(player);
                    break;
                case 'hydro':
                    punchDetectionEquip(player);
                    hydroGauntletControllersEquip(player);
                    break;
                case 'geo':
                    punchDetectionEquip(player);
                    geoGauntletControllersEquip(player);
                    break;
            }
            break;

        case 'reset': // RESET CONTROLLERS
            switch (gauntletKey) {
                case 'common':
                    player.playAnimation( // RESET EQUIP ANIMATION
                        'animation.oct_eg.util.equipped_gauntlet.reset',
                        {
                            blendOutTime: 0.0,
                            nextState: "_null",
                            stopExpression: "0",
                            controller: `_octEgCont_eqg`
                        }
                    );
                    vanillaCorrectionControllersUnequip(player);
                    commonMovementControllersUnequip(player);
                    //world.sendMessage(`RESET EQUIP ANIMATION`);
                    break;
                case 'anemo':
                    punchDetectionUnequip(player);
                    anemoGauntletControllersUnequip(player);
                    break;
                case 'pyro':
                    punchDetectionUnequip(player);
                    pyroGauntletControllersUnequip(player);
                    break;
                case 'ender':
                    punchDetectionUnequip(player);
                    enderGauntletControllersUnequip(player);
                    break;
                case 'electro':
                    punchDetectionUnequip(player);
                    electroGauntletControllersUnequip(player);
                    break;
                case 'necro':
                    punchDetectionUnequip(player);
                    necroGauntletControllersUnequip(player);
                    break;
                case 'hydro':
                    punchDetectionUnequip(player);
                    hydroGauntletControllersUnequip(player);
                    break;
                case 'geo':
                    punchDetectionUnequip(player);
                    geoGauntletControllersUnequip(player);
                    break;
            }
            break;
    }
}

// Canceling of vanilla animations
function vanillaCorrectionControllersEquip(player) {

    player.playAnimation( // ARM CORRECTION FP
        'animation.oct_eg.player.fp.arm_correction',
        {
            blendOutTime: 0.0,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `!v.is_first_person`,
            controller: `_octEgCont_armCorrFP`
        }
    );
    player.playAnimation( // ARM CORRECTION FP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.0,
            nextState: "animation.oct_eg.player.fp.arm_correction",
            stopExpression: `v.is_first_person`,
            controller: `_octEgCont_armCorrFP`
        }
    );

    player.playAnimation( // ATTACK ROTATIONS FP
        'animation.oct_eg.player_cancel.attack.rotations_first_person',
        {
            blendOutTime: 0.0,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `!v.is_first_person`,
            controller: `_octEgCont_cancelAttackRotationsFP`
        }
    );
    player.playAnimation( // ATTACK ROTATIONS FP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.0,
            nextState: "animation.oct_eg.player_cancel.attack.rotations_first_person",
            stopExpression: `v.is_first_person`,
            controller: `_octEgCont_cancelAttackRotationsFP`
        }
    );

    player.playAnimation( // ATTACK ROTATIONS TP
        'animation.oct_eg.player_cancel.attack.rotations',
        {
            blendOutTime: 0.0,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person`,
            controller: `_octEgCont_cancelAttackRotationsTP`
        }
    );
    player.playAnimation( // ATTACK ROTATIONS TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.0,
            nextState: "animation.oct_eg.player_cancel.attack.rotations",
            stopExpression: `!v.is_first_person`,
            controller: `_octEgCont_cancelAttackRotationsTP`
        }
    );

    player.playAnimation( // MOVE ARMS/LEGS TP
        'animation.oct_eg.player_cancel.move',
        {
            blendOutTime: 0.2,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person`,
            controller: `_octEgCont_cancelmoveArmsLegsTP`
        }
    );
    player.playAnimation( // MOVE ARMS/LEGS TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.2,
            nextState: "animation.oct_eg.player_cancel.move",
            stopExpression: `!v.is_first_person`,
            controller: `_octEgCont_cancelmoveArmsLegsTP`
        }
    );

    player.playAnimation( // BOB TP
        'animation.oct_eg.player_cancel.bob',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person`,
            controller: `_octEgCont_cancelBobTP`
        }
    );
    player.playAnimation( // BOB TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.2,
            nextState: "animation.oct_eg.player_cancel.bob",
            stopExpression: `!v.is_first_person`,
            controller: `_octEgCont_cancelBobTP`
        }
    );

};
function vanillaCorrectionControllersUnequip(player) {

    player.playAnimation( // ARM CORRECTION FP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_armCorrFP`
        }
    );
    player.playAnimation( // ATTACK ROTATIONS FP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_cancelAttackRotationsFP`
        }
    );
    player.playAnimation( // ATTACK ROTATIONS TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_cancelAttackRotationsTP`
        }
    );
    player.playAnimation( // MOVE ARMS/LEGS TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_cancelmoveArmsLegsTP`
        }
    );
    player.playAnimation( // BOB TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_cancelBobTP`
        }
    );
};

// Common movement controllers
function commonMovementControllersEquip(player) {

    player.playAnimation( // IDLE LEGS TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.idle_legs",
            stopExpression: `(q.modified_move_speed < 0.1 || q.is_swimming) && !v.is_first_person`,
            controller: `_octEgCont_legsIdleFP`
        }
    );
    player.playAnimation( // IDLE LEGS TP
        'animation.oct_eg.gauntlet.common.tp.idle_legs',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `(q.modified_move_speed >= 0.1 && !q.is_swimming) || v.is_first_person`,
            controller: `_octEgCont_legsIdleFP`
        }
    );
    player.playAnimation( // IDLE LEGS TRANSITION START
        'animation.oct_eg.util.null_3',
        {
            blendOutTime: 0.2,
            nextState: "animation.oct_eg.gauntlet.common.tp.idle_legs",
            stopExpression: `!v.is_first_person`,
            controller: `_octEgCont_legsIdleFP`
        }
    );
    player.playAnimation( // WALK LEGS TP
        'animation.oct_eg.gauntlet.common.tp.walk_legs',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `(q.modified_move_speed < 0.1 && !q.is_swimming) || v.is_first_person`,
            controller: `_octEgCont_legsWalkFP`
        }
    );
    player.playAnimation( // WALK LEGS TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.walk_legs",
            stopExpression: `(q.modified_move_speed >= 0.1 || q.is_swimming) && !v.is_first_person`,
            controller: `_octEgCont_legsWalkFP`
        }
    );
    player.playAnimation( // WALK LEGS TRANSITION START
        'animation.oct_eg.util.null_3',
        {
            blendOutTime: 0.2,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `!v.is_first_person`,
            controller: `_octEgCont_legsWalkFP`
        }
    );
    player.playAnimation( // IDLE ARMS TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.idle_arms",
            stopExpression: `(q.modified_move_speed < 0.1 || q.is_swimming) && !v.is_first_person`,
            controller: `_octEgCont_ArmsIdleFP`
        }
    );
    player.playAnimation( // IDLE ARMS TP
        'animation.oct_eg.gauntlet.common.tp.idle_arms',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `(q.modified_move_speed >= 0.1 && !q.is_swimming) || v.is_first_person`,
            controller: `_octEgCont_ArmsIdleFP`
        }
    );
    player.playAnimation( // IDLE ARMS TRANSITION START
        'animation.oct_eg.util.null_3',
        {
            blendOutTime: 0.2,
            nextState: "animation.oct_eg.gauntlet.common.tp.idle_arms",
            stopExpression: `!v.is_first_person`,
            controller: `_octEgCont_ArmsIdleFP`
        }
    );

    player.playAnimation( // WALK ARMS TP
        "animation.oct_eg.gauntlet.common.tp.walk_arms_electro",
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `(q.modified_move_speed < 0.1 && !q.is_swimming) || v.is_first_person`,
            controller: `_octEgCont_ArmsWalkFP`
        }
    );
    player.playAnimation( // WALK ARMS TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.walk_arms_electro",
            stopExpression: `(q.modified_move_speed >= 0.1 || q.is_swimming) && !v.is_first_person`,
            controller: `_octEgCont_ArmsWalkFP`
        }
    );
    player.playAnimation( // WALK ARMS TRANSITION START
        'animation.oct_eg.util.null_3',
        {
            blendOutTime: 0.2,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `!v.is_first_person`,
            controller: `_octEgCont_ArmsWalkFP`
        }
    );

}
function commonMovementControllersUnequip(player) {

    player.playAnimation( // IDLE LEGS TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_legsIdleFP`
        }
    );
    player.playAnimation( // WALK LEGS TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_legsWalkFP`
        }
    );
    player.playAnimation( // IDLE ARMS TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_ArmsIdleFP`
        }
    );
    player.playAnimation( // WALK ARMS TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_ArmsWalkFP`
        }
    );
}

// Punch detection
function punchDetectionEquip(player, max_punch = 2) {
    player.playAnimation( // PUNCH DETECTION
        `animation.oct_eg.util.gauntlet.common.punch_id.hit_nothing.cycle_${max_punch}`,
        {
            blendOutTime: 0.0,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `q.all_animations_finished || v.oct_eg_cancel_punch == 1`,
            controller: `_octEgCont_punchDetection`
        }
    );
    player.playAnimation( // PUNCH DETECTION
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.0,
            nextState: `animation.oct_eg.util.gauntlet.common.punch_id.hit_nothing.cycle_${max_punch}`,
            stopExpression: `v.attack_time > 0.01 && v.oct_eg_cancel_punch == 0`,
            controller: `_octEgCont_punchDetection`
        }
    );
    // If not, the variable is itterated twice
    player.playAnimation( // PUNCH DETECTION START
        'animation.oct_eg.util.null_3',
        {
            blendOutTime: 0.0,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `!q.is_in_ui`,
            controller: `_octEgCont_punchDetection`
        }
    );
}
function punchDetectionUnequip(player) {
    player.playAnimation( // PUNCH DETECTION
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punchDetection`
        }
    );
}

// Gauntlet specific controllers
function anemoGauntletControllersEquip(player) {
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.gauntlet.common.tp.punch_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 1`,
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_1",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 1`,
            controller: `_octEgCont_punch1TP`
        }
    );

    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.gauntlet.common.tp.punch_2',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 2`,
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_2",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 2`,
            controller: `_octEgCont_punch2TP`
        }
    );

    player.playAnimation( // PUNCH 3 TP
        'animation.oct_eg.gauntlet.anemo.tp.quick_punch',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 3`,
            controller: `_octEgCont_punch3TP`
        }
    );
    player.playAnimation( // PUNCH 3 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.anemo.tp.quick_punch",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 3`,
            controller: `_octEgCont_punch3TP`
        }
    );

    player.playAnimation( // AIR SLASH TP
        'animation.oct_eg.gauntlet.anemo.tp.air_slash',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_air_slash ?? 0) == 0",
            controller: `_octEgCont_airSlashTP`
        }
    );
    player.playAnimation( // AIR SLASH TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.anemo.tp.air_slash",
            stopExpression: "!v.is_first_person && (v.oct_eg_air_slash ?? 0)",
            controller: `_octEgCont_airSlashTP`
        }
    );

    player.playAnimation( // TORNADO TP
        'animation.oct_eg.gauntlet.ender.tp.ender_rift',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_tornado ?? 0) == 0",
            controller: `_octEgCont_tornadoTP`
        }
    );
    player.playAnimation( // TORNADO TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.ender.tp.ender_rift",
            stopExpression: "!v.is_first_person && (v.oct_eg_tornado ?? 0)",
            controller: `_octEgCont_tornadoTP`
        }
    );

};
function anemoGauntletControllersUnequip(player) {
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 3 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch3TP`
        }
    );
    player.playAnimation( // AIR SLASH TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_airSlashTP`
        }
    );
    player.playAnimation( // TORNADO TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_tornadoTP`
        }
    );
};

function pyroGauntletControllersEquip(player) {

    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.gauntlet.common.tp.punch_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || (v.oct_eg_punch_id ?? 0) != 1`,
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_1",
            stopExpression: `!v.is_first_person && (v.oct_eg_punch_anim ?? 0) && (v.oct_eg_punch_id ?? 0) == 1`,
            controller: `_octEgCont_punch1TP`
        }
    );

    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.gauntlet.common.tp.punch_2',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || (v.oct_eg_punch_id ?? 0) != 2`,
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_2",
            stopExpression: `!v.is_first_person && (v.oct_eg_punch_anim ?? 0) && (v.oct_eg_punch_id ?? 0) == 2`,
            controller: `_octEgCont_punch2TP`
        }
    );

    player.playAnimation( // PUNCH 11 TP
        'animation.oct_eg.gauntlet.common.tp.punch_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || (v.oct_eg_punch_id ?? 0) != 11`,
            controller: `_octEgCont_punch11TP`
        }
    );
    player.playAnimation( // PUNCH 11 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_1",
            stopExpression: `!v.is_first_person && (v.oct_eg_punch_anim ?? 0) && (v.oct_eg_punch_id ?? 0) == 11`,
            controller: `_octEgCont_punch11TP`
        }
    );

    player.playAnimation( // PUNCH 12 TP
        'animation.oct_eg.gauntlet.common.tp.punch_2',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || (v.oct_eg_punch_id ?? 0) != 12`,
            controller: `_octEgCont_punch12TP`
        }
    );
    player.playAnimation( // PUNCH 12 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_2",
            stopExpression: `!v.is_first_person && (v.oct_eg_punch_anim ?? 0) && (v.oct_eg_punch_id ?? 0) == 12`,
            controller: `_octEgCont_punch12TP`
        }
    );

    player.playAnimation( // FIRE BREATH EXITEARLY TP
        'animation.oct_eg.gauntlet.pyro.tp.fire_breath.start',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || (v.oct_eg_fire_breath ?? 0) == 0`,
            controller: `_octEgCont_fireBreathTP`
        }
    );
    player.playAnimation( // FIRE BREATH START TP
        'animation.oct_eg.gauntlet.pyro.tp.fire_breath.start',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.pyro.tp.fire_breath.ongoing",
            stopExpression: `!v.is_first_person && q.all_animations_finished && (v.oct_eg_fire_breath ?? 0) == 1`,
            controller: `_octEgCont_fireBreathTP`
        }
    );
    player.playAnimation( // FIRE BREATH ONGOING TP
        'animation.oct_eg.gauntlet.pyro.tp.fire_breath.ongoing',
        {
            blendOutTime: 0.2,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `!v.is_first_person && (v.oct_eg_fire_breath ?? 0) == 0`,
            controller: `_octEgCont_fireBreathTP`
        }
    );
    player.playAnimation( // FIRE BREATH TRANSITION START
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.pyro.tp.fire_breath.start",
            stopExpression: `!v.is_first_person && !q.is_in_ui && (v.oct_eg_fire_breath ?? 0) == 1`,
            controller: `_octEgCont_fireBreathTP`
        }
    );

};
function pyroGauntletControllersUnequip(player) {

    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 11 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch11TP`
        }
    );
    player.playAnimation( // PUNCH 12 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch12TP`
        }
    );
    player.playAnimation( // FIRE BREATH TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_fireBreathTP`
        }
    );

};

function enderGauntletControllersEquip(player) {

    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.gauntlet.common.tp.punch_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 1 || (v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_1",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 1 && !(v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch1TP`
        }
    );

    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.gauntlet.common.tp.punch_2',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 2 || (v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_2",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 2 && !(v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch2TP`
        }
    );


    player.playAnimation( // SHULKER BARRAGE TP
        'animation.oct_eg.gauntlet.ender.tp.shulker_barrage',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_shulker_barrage ?? 0) == 0",
            controller: `_octEgCont_shulkerBarrageTP`
        }
    );
    player.playAnimation( // SHULKER BARRAGE TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.ender.tp.shulker_barrage",
            stopExpression: "!v.is_first_person && (v.oct_eg_shulker_barrage ?? 0)",
            controller: `_octEgCont_shulkerBarrageTP`
        }
    );

    player.playAnimation( // ENDER RIFT TP
        'animation.oct_eg.gauntlet.ender.tp.ender_rift',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_ender_rift ?? 0) == 0",
            controller: `_octEgCont_enderRiftTP`
        }
    );
    player.playAnimation( // ENDER RIFT TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.ender.tp.ender_rift",
            stopExpression: "!v.is_first_person && (v.oct_eg_ender_rift ?? 0)",
            controller: `_octEgCont_enderRiftTP`
        }
    );


    player.playAnimation( // FIRE BREATH EXITEARLY TP
        'animation.oct_eg.gauntlet.pyro.tp.fire_breath.start',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || (v.oct_eg_fire_breath ?? 0) == 0`,
            controller: `_octEgCont_fireBreathTP`
        }
    );
    player.playAnimation( // FIRE BREATH START TP
        'animation.oct_eg.gauntlet.pyro.tp.fire_breath.start',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.pyro.tp.fire_breath.ongoing",
            stopExpression: `!v.is_first_person && q.all_animations_finished && (v.oct_eg_fire_breath ?? 0) == 1`,
            controller: `_octEgCont_fireBreathTP`
        }
    );
    player.playAnimation( // FIRE BREATH ONGOING TP
        'animation.oct_eg.gauntlet.pyro.tp.fire_breath.ongoing',
        {
            blendOutTime: 0.2,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `!v.is_first_person && (v.oct_eg_fire_breath ?? 0) == 0`,
            controller: `_octEgCont_fireBreathTP`
        }
    );
    player.playAnimation( // FIRE BREATH TRANSITION START
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.pyro.tp.fire_breath.start",
            stopExpression: `!v.is_first_person && !q.is_in_ui && (v.oct_eg_fire_breath ?? 0) == 1`,
            controller: `_octEgCont_fireBreathTP`
        }
    );

};
function enderGauntletControllersUnequip(player) {

    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch2TP`
        }
    );

    player.playAnimation( // SHULKER BARRAGE TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_shulkerBarrageTP`
        }
    );
    player.playAnimation( // ENDER RIFT TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_enderRiftTP`
        }
    );
    player.playAnimation( // FIRE BREATH TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_fireBreathTP`
        }
    );


};

function electroGauntletControllersEquip(player) {

    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.gauntlet.common.tp.punch_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || (v.oct_eg_punch_id ?? 0) != 1 || (v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_1",
            stopExpression: `!v.is_first_person && (v.oct_eg_punch_anim ?? 0) && (v.oct_eg_punch_id ?? 0) == 1 && !(v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch1TP`
        }
    );

    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.gauntlet.common.tp.punch_2',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || (v.oct_eg_punch_id ?? 0) != 2 || (v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_2",
            stopExpression: `!v.is_first_person && (v.oct_eg_punch_anim ?? 0) && (v.oct_eg_punch_id ?? 0) == 2 && !(v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch2TP`
        }
    );

    player.playAnimation( // PUNCH 11 TP
        'animation.oct_eg.gauntlet.common.tp.punch_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || (v.oct_eg_punch_id ?? 0) != 11 || (v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch11TP`
        }
    );
    player.playAnimation( // PUNCH 11 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_1",
            stopExpression: `!v.is_first_person && (v.oct_eg_punch_anim ?? 0) && (v.oct_eg_punch_id ?? 0) == 11 && !(v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch11TP`
        }
    );

    player.playAnimation( // PUNCH 12 TP
        'animation.oct_eg.gauntlet.common.tp.punch_2',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || (v.oct_eg_punch_id ?? 0) != 12 || (v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch12TP`
        }
    );
    player.playAnimation( // PUNCH 12 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_2",
            stopExpression: `!v.is_first_person && (v.oct_eg_punch_anim ?? 0) && (v.oct_eg_punch_id ?? 0) == 12 && !(v.oct_eg_fire_breath ?? 0)`,
            controller: `_octEgCont_punch12TP`
        }
    );

    player.playAnimation( // DISCHARGE TP
        'animation.oct_eg.gauntlet.electro.tp.discharge',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_discharge ?? 0) == 0",
            controller: `_octEgCont_dischargeTP`
        }
    );
    player.playAnimation( // DISCHARGE TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.electro.tp.discharge",
            stopExpression: "!v.is_first_person && (v.oct_eg_discharge ?? 0)",
            controller: `_octEgCont_dischargeTP`
        }
    );

};
function electroGauntletControllersUnequip(player) {

    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch2TP`
        }
    );

    player.playAnimation( // PUNCH 11 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch11TP`
        }
    );
    player.playAnimation( // PUNCH 12 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch12TP`
        }
    );

    player.playAnimation( // DISCHARGE TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_dischargeTP`
        }
    );
};

function necroGauntletControllersEquip(player) {
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.gauntlet.common.tp.punch_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 1`,
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_1",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 1`,
            controller: `_octEgCont_punch1TP`
        }
    );

    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.gauntlet.common.tp.punch_2',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 2`,
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_2",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 2`,
            controller: `_octEgCont_punch2TP`
        }
    );

    player.playAnimation( // PUNCH 3 TP
        'animation.oct_eg.gauntlet.necro.tp.leaching_punch',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 3`,
            controller: `_octEgCont_punch3TP`
        }
    );
    player.playAnimation( // PUNCH 3 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.necro.tp.leaching_punch",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 3`,
            controller: `_octEgCont_punch3TP`
        }
    );

    player.playAnimation( // UNDEAD SCYTHE TP
        'animation.oct_eg.gauntlet.anemo.tp.air_slash',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_undead_scythe ?? 0) == 0",
            controller: `_octEgCont_undeadScytheTP`
        }
    );
    player.playAnimation( // UNDEAD SCYTHE TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.anemo.tp.air_slash",
            stopExpression: "!v.is_first_person && (v.oct_eg_undead_scythe ?? 0)",
            controller: `_octEgCont_undeadScytheTP`
        }
    );

    player.playAnimation( // PUTRID RIBS TP
        'animation.oct_eg.gauntlet.anemo.tp.quick_punch',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_putrid_ribs ?? 0) == 0",
            controller: `_octEgCont_putridRibsTP`
        }
    );
    player.playAnimation( // PUTRID RIBS TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.anemo.tp.quick_punch",
            stopExpression: "!v.is_first_person && (v.oct_eg_putrid_ribs ?? 0)",
            controller: `_octEgCont_putridRibsTP`
        }
    );

};
function necroGauntletControllersUnequip(player) {
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 3 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch3TP`
        }
    );
    player.playAnimation( // UNDEAD SCYTHE TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_undeadScytheTP`
        }
    );
    player.playAnimation( // PUTRID RIBS TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_putridRibsTP`
        }
    );
};

function hydroGauntletControllersEquip(player) {
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.gauntlet.common.tp.punch_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 1`,
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_1",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 1`,
            controller: `_octEgCont_punch1TP`
        }
    );

    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.gauntlet.common.tp.punch_2',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 2`,
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_2",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 2`,
            controller: `_octEgCont_punch2TP`
        }
    );

    player.playAnimation( // AQUATIC DASH TP
        'animation.oct_eg.gauntlet.hydro.tp.aquatic_dash',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_aquatic_dash ?? 0) == 0",
            controller: `_octEgCont_aquaticDashTP`
        }
    );
    player.playAnimation( // AQUATIC DASH TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.hydro.tp.aquatic_dash",
            stopExpression: "!v.is_first_person && (v.oct_eg_aquatic_dash ?? 0)",
            controller: `_octEgCont_aquaticDashTP`
        }
    );

    player.playAnimation( // AIR SLASH TP
        'animation.oct_eg.gauntlet.anemo.tp.air_slash',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_air_slash ?? 0) == 0",
            controller: `_octEgCont_airSlashTP`
        }
    );
    player.playAnimation( // AIR SLASH TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.anemo.tp.air_slash",
            stopExpression: "!v.is_first_person && (v.oct_eg_air_slash ?? 0)",
            controller: `_octEgCont_airSlashTP`
        }
    );

    player.playAnimation( // PUTRID RIBS TP
        'animation.oct_eg.gauntlet.anemo.tp.quick_punch',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_putrid_ribs ?? 0) == 0",
            controller: `_octEgCont_putridRibsTP`
        }
    );
    player.playAnimation( // PUTRID RIBS TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.anemo.tp.quick_punch",
            stopExpression: "!v.is_first_person && (v.oct_eg_putrid_ribs ?? 0)",
            controller: `_octEgCont_putridRibsTP`
        }
    );

};
function hydroGauntletControllersUnequip(player) {
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // AQUATIC DASH TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_aquaticDashTP`
        }
    );
    player.playAnimation( // AIR SLASH TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_airSlashTP`
        }
    );
    player.playAnimation( // PUTRID RIBS TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_putridRibsTP`
        }
    );
};

function geoGauntletControllersEquip(player) {
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.gauntlet.common.tp.punch_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 1`,
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_1",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 1`,
            controller: `_octEgCont_punch1TP`
        }
    );

    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.gauntlet.common.tp.punch_2',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 2`,
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.common.tp.punch_2",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 2`,
            controller: `_octEgCont_punch2TP`
        }
    );

    player.playAnimation( // PUNCH 3 TP
        'animation.oct_eg.gauntlet.geo.tp.punch_3',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: `v.is_first_person || q.all_animations_finished || v.oct_eg_punch_id != 3`,
            controller: `_octEgCont_punch3TP`
        }
    );
    player.playAnimation( // PUNCH 3 TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.05,
            nextState: "animation.oct_eg.gauntlet.geo.tp.punch_3",
            stopExpression: `!v.is_first_person && v.oct_eg_punch_anim && v.oct_eg_punch_id == 3`,
            controller: `_octEgCont_punch3TP`
        }
    );

    player.playAnimation( // AIR SLASH TP
        'animation.oct_eg.gauntlet.anemo.tp.air_slash',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.util.null_1",
            stopExpression: "v.is_first_person || q.all_animations_finished || (v.oct_eg_air_slash ?? 0) == 0",
            controller: `_octEgCont_airSlashTP`
        }
    );
    player.playAnimation( // AIR SLASH TP
        'animation.oct_eg.util.null_1',
        {
            blendOutTime: 0.1,
            nextState: "animation.oct_eg.gauntlet.anemo.tp.air_slash",
            stopExpression: "!v.is_first_person && (v.oct_eg_air_slash ?? 0)",
            controller: `_octEgCont_airSlashTP`
        }
    );

};
function geoGauntletControllersUnequip(player) {
    player.playAnimation( // PUNCH 1 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch1TP`
        }
    );
    player.playAnimation( // PUNCH 2 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch2TP`
        }
    );
    player.playAnimation( // PUNCH 3 TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_punch3TP`
        }
    );
    player.playAnimation( // AIR SLASH TP
        'animation.oct_eg.util.null_2',
        {
            blendOutTime: 0.0,
            nextState: "_null",
            stopExpression: "0",
            controller: `_octEgCont_airSlashTP`
        }
    );
};