extend("fiskheroes:hero_basic");
loadTextures({
    "layer1": "gowhp:kratos/kratos_layer1",
    "layer2": "gowhp:kratos/kratos_layer2",
    "eyes": "gowhp:kratos/kratos_spartanrage_eyes",
    "guardianshield_closed": "gowhp:kratos/guardianshield_closed",
    "guardianshield_open": "gowhp:kratos/guardianshield_open",
    "leviathanaxe": "gowhp:kratos/leviathanaxe",
    "leviathanaxe_lights": "gowhp:kratos/leviathanaxe_lights",
    "mimir": "gowhp:kratos/mimir",
    "mimir_lights": "gowhp:kratos/mimir_lights",
    "boulder": "gowhp:kratos/boulder"
});

var utils = implement("fiskheroes:external/utils");
var flames = implement("gowhp:external/spartanrage");

var leviathanaxe;
var leviathanaxeholster;
var hand_flames;

function init(renderer) {
    parent.init(renderer);
    renderer.setLights((entity) => entity.getData("gowhp:dyn/spartanrage") ? "eyes" : null);
    initEffects(renderer);
}

function initAnimations(renderer) {
    parent.initAnimations(renderer);
    renderer.removeCustomAnimation("basic.BLOCKING");
    renderer.removeCustomAnimation("basic.CHARGED_BEAM");
    renderer.removeCustomAnimation("basic.ENERGY_PROJ");
    addAnimationWithData(renderer, "kratos.BLOCKING", "gowhp:guardianshield", "fiskheroes:shield_blocking_timer")
        .priority = -5;
    addAnimation(renderer, "kratos.DISPLAY", "gowhp:kratos_display")
        .setData((entity, data) => data.load(1.0))
        .setCondition(entity => (entity.as("DISPLAY").getDisplayType() == "HOLOGRAM" || entity.as("DISPLAY").getDisplayType() == "DATABASE_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "FABRICATOR_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "ITERATOR_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "BOOK_PREVIEW"))
        .priority = 20;
    addAnimation(renderer, "kratos.SPRINT", "gowhp:sprint_kratos")
        .setData((entity, data) => data.load(1.0))
        .setCondition(entity => (entity.isSprinting()))
        .priority = 21;
    addAnimationWithData(renderer, "kratos.LEVIATHANAXETHROW", "gowhp:throwaiming", "fiskheroes:beam_charge").setCondition(entity => (entity.getData("gowhp:dyn/leviathanaxe") && entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 0));
    addAnimationWithData(renderer, "kratos.WRATHOFTHEFROSTANCIENT", "gowhp:wrathofthefrostancient", "fiskheroes:beam_charge").setCondition(entity => (entity.getData("gowhp:dyn/leviathanaxe") && entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 1));
    addAnimationWithData(renderer, "kratos.BREATHOFTHAMUR", "gowhp:breathofthamur", "fiskheroes:beam_charge").setCondition(entity => (entity.getData("gowhp:dyn/leviathanaxe") && entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 2));
    addAnimationWithData(renderer, "kratos.LEVIATHANAXEUNHOLSTER", "gowhp:leviathanaxeunholster", "gowhp:dyn/leviathanaxe_timer");
    addAnimationWithData(renderer, "kratos.LEVIATHANAXEFIRSTPERSON", "gowhp:weaponfirstperson", "gowhp:dyn/leviathanaxe").setCondition(entity => (!entity.getInterpolatedData("gowhp:dyn/leviathanaxethrowanimation_timer") && entity.getInterpolatedData("gowhp:dyn/leviathanaxe_timer") > 0.5 && !entity.isPunching()));
    addAnimationWithData(renderer, "kratos.SPARTANRAGECHARGE", "gowhp:spartanragecharge", "gowhp:dyn/spartanrage_animation_timer").setCondition(entity => (entity.getData("gowhp:dyn/spartanrage") && entity.getInterpolatedData("gowhp:dyn/spartanrage_animation_timer") < 0.5));
    addAnimationWithData(renderer, "kratos.SPARTANRAGE", "gowhp:spartanrage", "gowhp:dyn/spartanrage_timer").setCondition(entity => (entity.getData("gowhp:dyn/spartanrage") && entity.getInterpolatedData("gowhp:dyn/spartanrage_timer") > 0.5 && entity.getInterpolatedData("gowhp:dyn/spartanrage_timer") < 1.0));
    addAnimationWithData(renderer, "kratos.SPARTANRAGEEND", "gowhp:spartanrageend", "gowhp:dyn/spartanrage_end_timer").setCondition(entity => (!entity.getData("gowhp:dyn/spartanrage")));
    addAnimationWithData(renderer, "kratos.BOULDERTHROWCHARGE", "gowhp:boulderthrow_charge", "fiskheroes:beam_charge").setCondition(entity => (entity.getData("gowhp:dyn/spartanrage") && entity.getData("fiskheroes:beam_charging") && !entity.getData("fiskheroes:beam_shooting")));
    addAnimationWithData(renderer, "kratos.BOULDERTHROW", "gowhp:throwaiming", "fiskheroes:beam_charge").setCondition(entity => (entity.getData("gowhp:dyn/spartanrage") && entity.getData("fiskheroes:beam_shooting")));
    addAnimationWithData(renderer, "kratos.SPARTANRAGEDUALWIELD", "gowhp:dualwield", "gowhp:dyn/spartanrage").setCondition(entity => entity.isPunching());
}

function initEffects(renderer) {
    guardianshield_closed = renderer.createEffect("fiskheroes:model");
    guardianshield_closed.setModel(utils.createModel(renderer, "gowhp:guardianshield_closed", "guardianshield_closed"));
    guardianshield_closed.anchor.set("leftArm");
    guardianshield_closed.setRotation(0.0, -90.0, 0.0);
    guardianshield_closed.setOffset(-3.5, -17.5, 0.0);

    guardianshield_open = renderer.createEffect("fiskheroes:model");
    guardianshield_open.setModel(utils.createModel(renderer, "gowhp:guardianshield_open", "guardianshield_open"));
    guardianshield_open.anchor.set("leftArm");
    guardianshield_open.setScale(0.85);
    guardianshield_open.setRotation(0.0, -90.0, 0.0);
    guardianshield_open.setOffset(-4.0, -7.0, 0.0);

    guardianshield_openfp = renderer.createEffect("fiskheroes:model");
    guardianshield_openfp.setModel(utils.createModel(renderer, "gowhp:guardianshield_open", "guardianshield_open"));
    guardianshield_openfp.anchor.set("rightArm");
    guardianshield_openfp.setScale(0.85);
    guardianshield_openfp.setRotation(40.0, -70.0, 40.0);
    guardianshield_openfp.setOffset(-4.0, -10.0, -16.0);

    guardianshield_openfpweaponfp = renderer.createEffect("fiskheroes:model");
    guardianshield_openfpweaponfp.setModel(utils.createModel(renderer, "gowhp:guardianshield_open", "guardianshield_open"));
    guardianshield_openfpweaponfp.anchor.set("rightArm");
    guardianshield_openfpweaponfp.setScale(0.85);
    guardianshield_openfpweaponfp.setRotation(-60.0, 200.0, -40.0);
    guardianshield_openfpweaponfp.setOffset(-20.0, 0.0, -4.0);

    var leviathanaxethrow = renderer.createResource("MODEL", "gowhp:leviathanaxe");
    leviathanaxethrow.texture.set("leviathanaxe", "leviathanaxe_lights");
    leviathanaxethrow.bindAnimation("gowhp:leviathanaxethrow").setData((entity, data) => {
		data.load(entity.getInterpolatedData("gowhp:dyn/leviathanaxethrowanimation_timer"));
	});
    leviathanaxe = renderer.createEffect("fiskheroes:model").setModel(leviathanaxethrow);
    leviathanaxe.anchor.set("rightArm");
    leviathanaxe.setScale(0.7);
    leviathanaxe.setRotation(90.0, 90.0, 0.0);
    leviathanaxe.setOffset(1.0, 9.0, -18.0);

    utils.bindBeam(renderer, "fiskheroes:charged_beam", "gowhp:invisible", "rightArm", 0xe25822, [
        { "firstPerson": [-4.75, 3.0, -13.0], "offset": [-0.6, 19.0, -1.5], "size": [2.0, 2.0] }
    ]).setCondition(entity => (entity.getData("gowhp:dyn/spartanrage")));

    utils.bindBeam(renderer, "fiskheroes:charged_beam", "gowhp:invisible", "rightArm", 0x4CB5FF, [
        { "firstPerson": [-4.75, 3.0, -13.0], "offset": [-0.6, 19.0, -1.5], "size": [2.0, 2.0] }
    ]).setCondition(entity => (entity.getData("gowhp:dyn/leviathanaxe") && entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 0));

    utils.bindBeam(renderer, "fiskheroes:charged_beam", "gowhp:wrathofthefrostancient", "rightArm", 0x4CB5FF, [
        { "firstPerson": [-4.5, -4.0, -15.0], "offset": [-0.5, 15.0, -19.0], "size": [2.0, 2.0] }
    ]).setCondition(entity => (entity.getData("gowhp:dyn/leviathanaxe") && entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 1)).setParticles(renderer.createResource("PARTICLE_EMITTER", "gowhp:wrathofthefrostancient"));;

    utils.bindBeam(renderer, "fiskheroes:charged_beam", "gowhp:breathofthamur", "body", 0x4CB5FF, [
        { "firstPerson": [0.0, 6.0, 0.0], "offset": [0.0, 5.0, -4.0], "size": [40.0, 40.0] }
    ]).setCondition(entity => (entity.getData("gowhp:dyn/leviathanaxe") && entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 2)).setParticles(renderer.createResource("PARTICLE_EMITTER", "gowhp:breathofthamurshoot"));;

    utils.bindParticles(renderer, "gowhp:breathofthamur").setCondition(entity => entity.getData("gowhp:dyn/leviathanaxe") && entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 2 && entity.getInterpolatedData("fiskheroes:beam_shooting_timer") > 0);

    var leviathanaxerunicchargeshake = renderer.bindProperty("fiskheroes:camera_shake").setCondition(entity => ((entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 1 || entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 2) && !entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 0 && entity.getData("fiskheroes:beam_charging") && !entity.getData("fiskheroes:beam_shooting")));
    leviathanaxerunicchargeshake.factor = 0.05;

    var leviathanaxerunicshake = renderer.bindProperty("fiskheroes:camera_shake").setCondition(entity => ((entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 1 || entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 2) && !entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 0 && entity.getData("fiskheroes:beam_charging") && entity.getInterpolatedData("fiskheroes:beam_shooting_timer") > 0));
    leviathanaxerunicshake.factor = 0.1;

    leviathanaxeholster = renderer.createEffect("fiskheroes:model");
    leviathanaxeholster.setModel(utils.createModel(renderer, "gowhp:leviathanaxe", "leviathanaxe", "leviathanaxe_lights"));
    leviathanaxeholster.anchor.set("body");
    leviathanaxeholster.setScale(0.7);
    leviathanaxeholster.setRotation(0.0, 180.0, 45.0);
    leviathanaxeholster.setOffset(7.0, 0.0, 3.0);

    var fire = renderer.createResource("ICON", "fiskheroes:red_fire_layer_%s");
    hand_flames = flames.createHands(renderer, fire, true);

    var spartanrageenergy_color = 0xFF0000;
    var spartanrageenergy_beam = renderer.createResource("BEAM_RENDERER", "gowhp:spartanrageenergy");

    spartanrageenergyarms = utils.createLines(renderer, spartanrageenergy_beam, spartanrageenergy_color, [
        {"start": [-0.3, -1.0, -1.1], "end": [-1.7, 4.5, -1.1], "size": [10.0, 10.0]},
        {"start": [-1.7, -1.0, -1.1], "end": [-0.3, 4.5, -1.1], "size": [10.0, 10.0]},
        {"start": [-1.7, 4.0, -1.1], "end": [-0.3, 6.5, -1.1], "size": [10.0, 10.0]},
        {"start": [-0.3, 4.0, -1.1], "end": [-1.7, 6.5, -1.1], "size": [10.0, 10.0]},

        {"start": [-0.3, -1.0, 1.1], "end": [-1.7, 4.5, 1.1], "size": [10.0, 10.0]},
        {"start": [-1.7, -1.0, 1.1], "end": [-0.3, 4.5, 1.1], "size": [10.0, 10.0]},
        {"start": [-1.7, 4.0, 1.1], "end": [-0.3, 6.5, 1.1], "size": [10.0, 10.0]},
        {"start": [-0.3, 4.0, 1.1], "end": [-1.7, 6.5, 1.1], "size": [10.0, 10.0]},

        {"start": [-1.8, -1.0, 1.0], "end": [-1.8, 4.5, -1.0], "size": [10.0, 10.0]},
        {"start": [-1.8, -1.0, -1.0], "end": [-1.8, 4.5, 1.0], "size": [10.0, 10.0]},
        {"start": [-1.8, 4.0, -1.0], "end": [-1.8, 6.5, 1.0], "size": [10.0, 10.0]},
        {"start": [-1.8, 4.0, 1.0], "end": [-1.8, 6.5, -1.0], "size": [10.0, 10.0]},
    ]);
    spartanrageenergyarms.anchor.set("rightArm");
    spartanrageenergyarms.setScale(1.5);
    spartanrageenergyarms.mirror = true;

    spartanrageenergybody = utils.createLines(renderer, spartanrageenergy_beam, spartanrageenergy_color, [
        {"start": [3.5, 0.0, -1.4], "end": [-3.5, 4.5, -1.4], "size": [10.0, 10.0]},
        {"start": [-3.5, 0.0, -1.4], "end": [3.5, 4.5, -1.4], "size": [10.0, 10.0]},
        {"start": [3.5, 0.0, 1.4], "end": [-3.5, 4.5, 1.4], "size": [10.0, 10.0]},
        {"start": [-3.5, 0.0, 1.4], "end": [3.5, 4.5, 1.4], "size": [10.0, 10.0]},
    ]);
    spartanrageenergybody.anchor.set("body");
    spartanrageenergybody.setScale(1.5);
    spartanrageenergybody.mirror = false;

    utils.bindParticles(renderer, "gowhp:spartanragepunch").setCondition(entity => entity.getData("gowhp:dyn/spartanrage") && entity.isPunching());
    utils.bindParticles(renderer, "gowhp:spartanrage").setCondition(entity => entity.getData("gowhp:dyn/spartanrage") && entity.getInterpolatedData("gowhp:dyn/spartanrage_animation_timer") < 1.0);

    utils.addCameraShake(renderer, 0.1, 0.1, "gowhp:dyn/spartanrage");

    var spartanrageactivateshake = renderer.bindProperty("fiskheroes:camera_shake").setCondition(entity => (entity.getData("gowhp:dyn/spartanrage") && entity.getInterpolatedData("gowhp:dyn/spartanrage_animation_timer") < 0.5));
    spartanrageactivateshake.factor = 0.2;

    var wrathofthefrostancientcharge_color = 0x4CB5FF;
    var wrathofthefrostancientcharge_effect = renderer.createResource("BEAM_RENDERER", "gowhp:wrathofthefrostancientcharge");

    wrathofthefrostancientcharge = utils.createLines(renderer, wrathofthefrostancientcharge_effect, wrathofthefrostancientcharge_color, [
        {"start": [-1.0, 5.0, -19.7], "end": [-1.0, 16.0, -19.7], "size": [45.0, 10.5]},
        {"start": [-1.0, 12.0, -20.5], "end": [-1.0, 16.0, -21.7], "size": [10.5, 10.5]},

        {"start": [-1.0, 15.7, -18.6], "end": [-1.0, 14.5, -15.0], "size": [10.5, 10.5]},
        {"start": [-1.0, 14.7, -15.3], "end": [-1.0, 13.0, -13.0], "size": [10.5, 10.5]},

        {"start": [-1.0, 11.2, -18.0], "end": [-1.0, 15.2, -18.0], "size": [30.0, 10.5]},
        {"start": [-1.0, 11.2, -16.3], "end": [-1.0, 14.7, -16.3], "size": [30.0, 10.5]},
        {"start": [-1.0, 12.0, -15.0], "end": [-1.0, 14.2, -15.0], "size": [10.5, 10.5]},
        {"start": [-1.0, 12.5, -14.2], "end": [-1.0, 14.0, -14.2], "size": [15.5, 10.5]},

        {"start": [-1.0, 11.5, -15.5], "end": [-1.0, 13.0, -12.5], "size": [10.5, 10.5]},
    ]);
    wrathofthefrostancientcharge.anchor.set("rightArm");
    wrathofthefrostancientcharge.setScale(1.0);
    wrathofthefrostancientcharge.mirror = false;

    utils.bindParticles(renderer, "gowhp:wrathofthefrostancientcharge").setCondition(entity => (entity.getData("gowhp:dyn/leviathanaxe") && entity.getData("fiskheroes:beam_charging") && entity.getData("fiskheroes:beam_charge") > 0.5 &&  entity.getData("fiskheroes:beam_charge") < 1 && entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 1));

    utils.bindParticles(renderer, "gowhp:breathofthamurcharge").setCondition(entity => (entity.getData("gowhp:dyn/leviathanaxe") && entity.getData("fiskheroes:beam_charging") && entity.getData("fiskheroes:beam_charge") > 0.5 &&  entity.getData("fiskheroes:beam_charge") < 1 && entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 2));

    mimir = renderer.createEffect("fiskheroes:model");
    mimir.setModel(utils.createModel(renderer, "gowhp:mimir", "mimir", "mimir_lights"));
    mimir.anchor.set("body");

    var boulderthrow = renderer.createResource("MODEL", "gowhp:boulder");
    boulderthrow.texture.set("boulder");
    boulderthrow.bindAnimation("gowhp:boulder").setData((entity, data) => {
		data.load(entity.getData("gowhp:dyn/spartanrage") && entity.getData("fiskheroes:beam_shooting"));
	});
    boulder = renderer.createEffect("fiskheroes:model").setModel(boulderthrow);
    boulder.anchor.set("rightArm");
    boulder.setScale(0.7);
    boulder.setRotation(0.0, 180.0, -45.0);
    boulder.setOffset(2.0, -2.0, 0.0);

    utils.bindParticles(renderer, "gowhp:boulder").setCondition(entity => entity.getData("gowhp:dyn/spartanrage") && entity.getInterpolatedData("fiskheroes:beam_charging") && !entity.getData("fiskheroes:beam_shooting"));

    utils.bindParticles(renderer, "gowhp:boulderthrow").setCondition(entity => entity.getData("gowhp:dyn/spartanrage") && entity.getInterpolatedData("fiskheroes:beam_shooting_timer") > 0);

    var boulderthrowchargeshake = renderer.bindProperty("fiskheroes:camera_shake").setCondition(entity => (entity.getData("gowhp:dyn/spartanrage") && entity.getData("fiskheroes:beam_charging") && !entity.getData("fiskheroes:beam_shooting")));
    boulderthrowchargeshake.factor = 0.1;

    var boulderthrowshake = renderer.bindProperty("fiskheroes:camera_shake").setCondition(entity => (entity.getData("gowhp:dyn/spartanrage") && entity.getData("fiskheroes:beam_charging") && entity.getInterpolatedData("fiskheroes:beam_shooting_timer") > 0));
    boulderthrowshake.factor = 0.2;
}

function render(entity, renderLayer, isFirstPersonArm) {
    if (entity.getInterpolatedData("fiskheroes:shield_blocking_timer") > 0 || ((entity.as("DISPLAY").getDisplayType() == "HOLOGRAM" || entity.as("DISPLAY").getDisplayType() == "DATABASE_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "FABRICATOR_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "ITERATOR_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "BOOK_PREVIEW") && entity.getWornChestplate().suitType() == 'gowhp:kratos')) {
        guardianshield_open.render();
    }
    if (entity.getInterpolatedData("fiskheroes:shield_blocking_timer") == 1 && isFirstPersonArm && !(entity.getData("gowhp:dyn/leviathanaxe") || entity.getData("gowhp:dyn/draupnirspear") || entity.getData("gowhp:dyn/bladesofchaos"))) {
        guardianshield_openfp.render();
    }
    if (entity.getInterpolatedData("fiskheroes:shield_blocking_timer") == 1 && isFirstPersonArm && (entity.getData("gowhp:dyn/leviathanaxe") || entity.getData("gowhp:dyn/draupnirspear") || entity.getData("gowhp:dyn/bladesofchaos"))) {
        guardianshield_openfpweaponfp.render();
    }
    if ((entity.getInterpolatedData("gowhp:dyn/leviathanaxe_timer") > 0.5) && (entity.getHeldItem().isEmpty()) || ((entity.as("DISPLAY").getDisplayType() == "HOLOGRAM" || entity.as("DISPLAY").getDisplayType() == "DATABASE_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "FABRICATOR_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "ITERATOR_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "BOOK_PREVIEW") && entity.getWornChestplate().suitType() == 'gowhp:kratos')) {
        leviathanaxe.render();
    }
    if ((renderLayer == "CHESTPLATE" && entity.getInterpolatedData("gowhp:dyn/leviathanaxe_timer") < 0.5) && !(((entity.as("DISPLAY").getDisplayType() == "HOLOGRAM" || entity.as("DISPLAY").getDisplayType() == "DATABASE_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "FABRICATOR_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "ITERATOR_PREVIEW" || entity.as("DISPLAY").getDisplayType() == "BOOK_PREVIEW") && (entity.getWornChestplate().suitType() == 'gowhp:kratos' || entity.getWornChestplate().suitType().startsWith("gowhp:kratos_allfather"))))) {
        leviathanaxeholster.render();
    }
    if (entity.getInterpolatedData("gowhp:dyn/spartanrage_timer")) {
        hand_flames.render(entity);
    }
    if (entity.getInterpolatedData("gowhp:dyn/spartanrage_timer")){
        spartanrageenergyarms.progress = Math.max(1 - (1 - entity.getInterpolatedData('gowhp:dyn/spartanrage_timer')) * 1, 0);
        spartanrageenergyarms.opacity = Math.max(1 - (1 - entity.getInterpolatedData('gowhp:dyn/spartanrage_timer')) * 1, 0);
        spartanrageenergyarms.render();
        spartanrageenergybody.progress = Math.max(1 - (1 - entity.getInterpolatedData('gowhp:dyn/spartanrage_timer')) * 1, 0);
        spartanrageenergybody.opacity = Math.max(1 - (1 - entity.getInterpolatedData('gowhp:dyn/spartanrage_timer')) * 1, 0);
        spartanrageenergybody.render();
    }
    if ((entity.getData("gowhp:dyn/leviathanaxe") && entity.getData("fiskheroes:beam_charge") && entity.getData("gowhp:dyn/leviathanaxe_runic_cycle") == 1)){
        wrathofthefrostancientcharge.progress = Math.max(1 - (1 - entity.getInterpolatedData('fiskheroes:beam_charge')) * 1, 0);
        wrathofthefrostancientcharge.opacity = Math.max(1 - (1 - entity.getInterpolatedData('fiskheroes:beam_charge')) * 1, 0);
        wrathofthefrostancientcharge.render();
    }
    if ((renderLayer == "CHESTPLATE") && !entity.getWornChestplate().suitType().startsWith("gowhp:kratos_allfather")) {
        mimir.render();
    }
    if (renderLayer == "CHESTPLATE") {
        guardianshield_closed.render();
    }
    if (entity.getData("gowhp:dyn/spartanrage") && (entity.getData("fiskheroes:beam_charging") && entity.getInterpolatedData("fiskheroes:beam_charge") > 0.5)) {
        boulder.render();
    }
}
