package com.zivilon.cinder_loe.mixins;

import com.zivilon.cinder_loe.CinderUnitTradeEntry;
import com.zivilon.cinder_loe.entity.npc.HobbitBannerBearer;
import com.zivilon.cinder_loe.entity.npc.elf.Sirrandrai;
import com.zivilon.cinder_loe.entity.npc.evil_human.RhudaurSoldier;
import com.zivilon.cinder_loe.entity.npc.evil_human.UmbarUsurper;
import com.zivilon.cinder_loe.entity.npc.good_human.BattleNun;
import com.zivilon.cinder_loe.entity.npc.good_human.EsgarothSoldier;
import com.zivilon.cinder_loe.entity.npc.good_human.TauredainTrueBlood;
import com.zivilon.cinder_loe.entity.npc.orc.MorgulOrc;
import com.zivilon.cinder_loe.entity.npc.orc.NorthernOrc;
import lotr.common.LOTRMod;
import lotr.common.entity.animal.*;
import lotr.common.entity.npc.*;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;

@Mixin(LOTRUnitTradeEntries.class)
public class MixinLOTRUnitTradeEntries {

    @Shadow(remap = false)
    public static LOTRUnitTradeEntries MORDOR_ORC_MERCENARY_CAPTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityMordorOrc.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityMordorOrcArcher.class, 150, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityMordorOrcBombardier.class, 250, 400.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityMordorWarg.class, 100, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityMordorOrc.class, LOTREntityMordorWarg.class, "MordorOrc_Warg", 250, 100.0f).setMountArmor(LOTRMod.wargArmorMordor, 0.5f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityMordorOrcArcher.class, LOTREntityMordorWarg.class, "MordorOrcArcher_Warg", 250, 150.0f).setMountArmor(LOTRMod.wargArmorMordor, 0.5f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityMordorWargBombardier.class, 400, 250.0f),
            new LOTRUnitTradeEntry(LOTREntityOlogHai.class, 800, 350.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityMordorBannerBearer.class, 150, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityMordorBannerBearer.class, LOTREntityMordorWarg.class, "Banner_Warg", 150, 250.0f).setMountArmor(LOTRMod.wargArmorMordor, 0.5f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(MorgulOrc.class, 130, 750.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(MorgulOrc.class, LOTREntityMordorWarg.class, "MordorOrc_Warg", 230, 750.0f).setPledgeExclusive().setMountArmor(LOTRMod.wargArmorMordor, 1.0f),
            new LOTRUnitTradeEntry(LOTREntityMinasMorgulBannerBearer.class, 130, 150.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityMinasMorgulBannerBearer.class, LOTREntityMordorWarg.class, "Banner_Warg", 230, 750.0f).setPledgeExclusive().setMountArmor(LOTRMod.wargArmorMordor, 1.0f));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries GONDORIAN_CAPTAIN = new LOTRUnitTradeEntries(200.0f,
            new LOTRUnitTradeEntry(LOTREntityGondorLevyman.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityGondorSoldier.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityGondorArcher.class, 250, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityGondorSoldier.class, LOTREntityHorse.class, "GondorSoldier_Horse", 350, 150.0f).setMountArmor(LOTRMod.horseArmorGondor).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGondorTowerGuard.class, 500, 250.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGondorBannerBearer.class, 250, 200.0f),
            new LOTRUnitTradeEntry(LOTREntityGondorBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 350, 300.0f).setMountArmor(LOTRMod.horseArmorGondor).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries DWARF_COMMANDER = new LOTRUnitTradeEntries(200.0f,
            new LOTRUnitTradeEntry(LOTREntityDwarf.class, 60, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityDwarfWarrior.class, 400, 50.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDwarfAxeThrower.class, 400, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDwarfWarrior.class, LOTREntityWildBoar.class, "DwarfWarrior_Boar", 500, 150.0f).setMountArmor(LOTRMod.boarArmorDwarven).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDwarfAxeThrower.class, LOTREntityWildBoar.class, "DwarfAxeThrower_Boar", 500, 200.0f).setMountArmor(LOTRMod.boarArmorDwarven).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDwarfBannerBearer.class, 400, 200.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDwarfBannerBearer.class, LOTREntityWildBoar.class, "Banner_Horse", 500, 300.0f).setMountArmor(LOTRMod.boarArmorDwarven).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries URUK_HAI_MERCENARY_CAPTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityIsengardSnaga.class, 100, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityIsengardSnagaArcher.class, 100, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityUrukHai.class, 500, 0.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityUrukHaiCrossbower.class, 500, 50.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityUrukHaiSapper.class, 600, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityUrukHaiBerserker.class, 600, 150.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityUrukWarg.class, 100, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityIsengardSnaga.class, LOTREntityUrukWarg.class, "IsengardSnaga_Warg", 200, 100.0f).setMountArmor(LOTRMod.wargArmorUruk, 0.5f),
            new LOTRUnitTradeEntry(LOTREntityIsengardSnagaArcher.class, LOTREntityUrukWarg.class, "IsengardSnagaArcher_Warg", 200, 150.0f).setMountArmor(LOTRMod.wargArmorUruk, 0.5f),
            new LOTRUnitTradeEntry(LOTREntityUrukWargBombardier.class, 400, 250.0f),
            new LOTRUnitTradeEntry(LOTREntityUrukHaiBannerBearer.class, 500, 150.0f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries ELF_LORD = new LOTRUnitTradeEntries(300.0f,
            new LOTRUnitTradeEntry(LOTREntityGaladhrimElf.class, 60, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityGaladhrimWarden.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityGaladhrimWarrior.class, 500, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGaladhrimWarrior.class, LOTREntityHorse.class, "GaladhrimWarrior_Horse", 600, 200.0f).setMountArmor(LOTRMod.horseArmorGaladhrim).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGaladhrimBannerBearer.class, 500, 250.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGaladhrimBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 600, 350.0f).setMountArmor(LOTRMod.horseArmorGaladhrim).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries ROHIRRIM_MARSHAL = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityRohirrimWarrior.class, 250, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityRohirrimArcher.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityRohirrimWarrior.class, LOTREntityHorse.class, "Rohirrim_Horse", 350, 100.0f).setMountArmor(LOTRMod.horseArmorRohan).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityRohirrimArcher.class, LOTREntityHorse.class, "RohirrimArcher_Horse", 350, 150.0f).setMountArmor(LOTRMod.horseArmorRohan).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityRohanBannerBearer.class, 250, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityRohanBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 350, 250.0f).setMountArmor(LOTRMod.horseArmorRohan).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries HOBBIT_SHIRRIFF = new LOTRUnitTradeEntries(50.0f,
            new LOTRUnitTradeEntry(LOTREntityHobbitBounder.class, 60, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityHobbitBounder.class, LOTREntityShirePony.class, "HobbitBounder_Pony", 160, 50.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(HobbitBannerBearer.class, 60, 100.0f),
            new LOTRUnitTradeEntry(HobbitBannerBearer.class, LOTREntityShirePony.class, "Banner_Horse", 160, 200.0f).setPledgeExclusive()
            );
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries DUNLENDING_WARLORD = new LOTRUnitTradeEntries(100.0f,
            new LOTRUnitTradeEntry(LOTREntityDunlending.class, 60, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityDunlendingWarrior.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityDunlendingArcher.class, 250, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityDunlendingAxeThrower.class, 250, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDunlendingBerserker.class, 400, 200.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDunlendingBannerBearer.class, 250, 200.0f));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries WOOD_ELF_CAPTAIN = new LOTRUnitTradeEntries(250.0f,
            new LOTRUnitTradeEntry(LOTREntityWoodElf.class, 60, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityWoodElfScout.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityWoodElfWarrior.class, 500, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityWoodElfWarrior.class, LOTREntityElk.class, "WoodElfWarrior_Elk", 600, 200.0f).setMountArmor(LOTRMod.elkArmorWoodElven).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityWoodElfBannerBearer.class, 500, 250.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityWoodElfBannerBearer.class, LOTREntityElk.class, "Banner_Horse", 600, 350.0f).setMountArmor(LOTRMod.elkArmorWoodElven).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries ANGMAR_ORC_MERCENARY_CAPTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityAngmarOrc.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityAngmarOrcArcher.class, 150, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityAngmarOrcBombardier.class, 250, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityAngmarWarg.class, 100, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityAngmarOrc.class, LOTREntityAngmarWarg.class, "AngmarOrc_Warg", 250, 100.0f).setMountArmor(LOTRMod.wargArmorAngmar, 0.5f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityAngmarOrcArcher.class, LOTREntityAngmarWarg.class, "AngmarOrcArcher_Warg", 250, 150.0f).setMountArmor(LOTRMod.wargArmorAngmar, 0.5f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityAngmarWargBombardier.class, 400, 250.0f),
            new LOTRUnitTradeEntry(LOTREntityTroll.class, 500, 250.0f),
            new LOTRUnitTradeEntry(LOTREntityMountainTroll.class, 600, 350.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityAngmarBannerBearer.class, 150, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityAngmarBannerBearer.class, LOTREntityAngmarWarg.class, "Banner_Warg", 250, 250.0f).setMountArmor(LOTRMod.wargArmorAngmar, 0.5f).setPledgeExclusive(),
            (new CinderUnitTradeEntry(NorthernOrc.class, 500, 400.0F).setObjective("Angmar").setExtraInfo("Angmar")).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries MORDOR_ORC_SLAVER = new LOTRUnitTradeEntries(200.0f,
            new LOTRUnitTradeEntry(LOTREntityNurnSlave.class, 100, 0.0f).setTask(LOTRHiredNPCInfo.Task.FARMER));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries MORDOR_ORC_SPIDER_KEEPER = new LOTRUnitTradeEntries(250.0f,
            new LOTRUnitTradeEntry(LOTREntityMordorSpider.class, 100, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityMordorOrc.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityMordorOrcArcher.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityMordorOrc.class, LOTREntityMordorSpider.class, "MordorOrc_Spider", 250, 50.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityMordorOrcArcher.class, LOTREntityMordorSpider.class, "MordorOrcArcher_Spider", 250, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityNanUngolBannerBearer.class, 150, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityNanUngolBannerBearer.class, LOTREntityMordorSpider.class, "MordorOrcArcher_Spider", 250, 250.0f).setPledgeExclusive());
//    @Unique
//
//    //Lets  give Gundies a chance to spawn with warg armor
//    private static Item randomWargArmor() {
//        Item[] options = {
//                LOTRMod.wargArmorMordor,
//                LOTRMod.wargArmorUruk,
//                LOTRMod.wargArmorAngmar
//        };
//        return options[LOTRMod.proxy.getClientWorld().rand.nextInt(options.length)];
//    }

    @Shadow(remap = false)
    public static LOTRUnitTradeEntries GUNDABAD_ORC_MERCENARY_CAPTAIN = new LOTRUnitTradeEntries(100.0f,
            new LOTRUnitTradeEntry(LOTREntityGundabadOrc.class, 100, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityGundabadOrcArcher.class, 100, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityGundabadWarg.class, 100, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityGundabadOrc.class, LOTREntityGundabadWarg.class, "GundabadOrc_Warg", 200, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGundabadOrcArcher.class, LOTREntityGundabadWarg.class, "GundabadOrcArcher_Warg", 200, 150.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGundabadUruk.class, 500, 250.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGundabadUrukArcher.class, 500, 300.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGundabadBannerBearer.class, 100, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityGundabadBannerBearer.class, LOTREntityGundabadWarg.class, "Banner_Warg", 200, 250.0f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries RANGER_NORTH_CAPTAIN = new LOTRUnitTradeEntries(300.0f,
            new LOTRUnitTradeEntry(LOTREntityRangerNorth.class, 250, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityRangerNorth.class, LOTREntityHorse.class, "RangerNorth_Horse", 350, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityRangerNorthBannerBearer.class, 250, 150.0f));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries HOBBIT_FARMER = new LOTRUnitTradeEntries(0.0f,
            new LOTRUnitTradeEntry(LOTREntityHobbitFarmhand.class, 100, 50.0f).setTask(LOTRHiredNPCInfo.Task.FARMER));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries HIGH_ELF_LORD = new LOTRUnitTradeEntries(300.0f,
            new LOTRUnitTradeEntry(LOTREntityHighElf.class, 60, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityHighElfWarrior.class, 500, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityHighElfWarrior.class, LOTREntityHorse.class, "HighElfWarrior_Horse", 600, 200.0f).setMountArmor(LOTRMod.horseArmorHighElven).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityHighElfBannerBearer.class, 500, 250.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityHighElfBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 600, 350.0f).setMountArmor(LOTRMod.horseArmorHighElven).setPledgeExclusive(),
            (new CinderUnitTradeEntry(Sirrandrai.class, LOTREntityHorse.class, "Sirrandrai", 600, 400.0F).setObjective("Lindon").setExtraInfo("Lindon")).setPledgeExclusive().setMountArmor(LOTRMod.horseArmorHighElven));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries NEAR_HARADRIM_WARLORD = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityNearHaradrimWarrior.class, 250, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityNearHaradrimArcher.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntitySouthronChampion.class, LOTREntityHorse.class, "SouthronChampion_Horse", 350, 100.0f).setMountArmor(LOTRMod.horseArmorNearHarad).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityNearHaradBannerBearer.class, 250, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityNearHaradBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 350, 250.0f).setMountArmor(LOTRMod.horseArmorNearHarad).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries BLUE_DWARF_COMMANDER = new LOTRUnitTradeEntries(200.0f,
            new LOTRUnitTradeEntry(LOTREntityBlueDwarf.class, 60, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityBlueDwarfWarrior.class, 400, 50.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityBlueDwarfAxeThrower.class, 400, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityBlueDwarfWarrior.class, LOTREntityWildBoar.class, "BlueDwarfWarrior_Boar", 500, 150.0f).setMountArmor(LOTRMod.boarArmorBlueDwarven).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityBlueDwarfAxeThrower.class, LOTREntityWildBoar.class, "BlueDwarfAxeThrower_Boar", 500, 200.0f).setMountArmor(LOTRMod.boarArmorBlueDwarven).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityBlueDwarfBannerBearer.class, 400, 200.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityBlueDwarfBannerBearer.class, LOTREntityWildBoar.class, "Banner_Horse", 500, 300.0f).setMountArmor(LOTRMod.boarArmorBlueDwarven).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries DOL_GULDUR_CAPTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityDolGuldurOrc.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityDolGuldurOrcArcher.class, 150, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityMirkwoodSpider.class, 100, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityDolGuldurOrc.class, LOTREntityMirkwoodSpider.class, "DolGuldurOrc_Spider", 250, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDolGuldurOrcArcher.class, LOTREntityMirkwoodSpider.class, "DolGuldurOrcArcher_Spider", 250, 150.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityMirkTroll.class, 750, 350.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDolGuldurBannerBearer.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityDolGuldurBannerBearer.class, LOTREntityMirkwoodSpider.class, "DolGuldurOrc_Spider", 250, 100.0f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries RANGER_ITHILIEN_CAPTAIN = new LOTRUnitTradeEntries(300.0f,
            new LOTRUnitTradeEntry(LOTREntityRangerIthilien.class, 50, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityRangerIthilienBannerBearer.class, 70, 150.0f));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries HALF_TROLL_WARLORD = new LOTRUnitTradeEntries(200.0f,
            new LOTRUnitTradeEntry(LOTREntityHalfTroll.class, 100, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityHalfTrollWarrior.class, 400, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityHalfTrollWarrior.class, LOTREntityRhino.class, "HalfTrollWarrior_Rhino", 500, 200.0f).setMountArmor(LOTRMod.rhinoArmorHalfTroll, 0.5f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityHalfTrollBannerBearer.class, 400, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityHalfTrollBannerBearer.class, LOTREntityRhino.class, "Banner_Horse", 500, 250.0f).setMountArmor(LOTRMod.rhinoArmorHalfTroll, 0.5f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries DOL_AMROTH_CAPTAIN = new LOTRUnitTradeEntries(200.0f,
            new LOTRUnitTradeEntry(LOTREntityDolAmrothSoldier.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityDolAmrothArcher.class, 150, 50.0f),
            new LOTRUnitTradeEntry(LOTREntitySwanKnight.class, 500, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDolAmrothSoldier.class, LOTREntityHorse.class, "DolAmrothSoldier_Horse", 250, 100.0f).setMountArmor(LOTRMod.horseArmorDolAmroth, 0.5f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntitySwanKnight.class, LOTREntityHorse.class, "SwanKnight_Horse", 600, 200.0f).setMountArmor(LOTRMod.horseArmorDolAmroth).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDolAmrothBannerBearer.class, 150, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityDolAmrothBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 250, 250.0f).setMountArmor(LOTRMod.horseArmorDolAmroth, 0.5f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries MOREDAIN_CHIEFTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityMoredainWarrior.class, 250, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityMoredainWarrior.class, LOTREntityZebra.class, "MoredainWarrior_Zebra", 350, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityMoredainBannerBearer.class, 250, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityMoredainBannerBearer.class, LOTREntityZebra.class, "Banner_Horse", 350, 250.0f));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries ANGMAR_HILLMAN_CHIEFTAIN = new LOTRUnitTradeEntries(100.0f,
            new LOTRUnitTradeEntry(LOTREntityAngmarHillman.class, 60, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityAngmarHillmanWarrior.class, 150, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityAngmarHillmanAxeThrower.class, 150, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityAngmarHillman.class, LOTREntityAngmarWarg.class, "AngmarHillman_Warg", 250, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityAngmarHillmanWarrior.class, LOTREntityAngmarWarg.class, "AngmarHillmanWarrior_Warg", 250, 150.0f).setMountArmor(LOTRMod.wargArmorAngmar, 0.3f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityAngmarHillmanAxeThrower.class, LOTREntityAngmarWarg.class, "AngmarHillmanAxeThrower_Warg", 250, 200.0f).setMountArmor(LOTRMod.wargArmorAngmar, 0.3f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityAngmarHillmanBannerBearer.class, 150, 200.0f),
            new LOTRUnitTradeEntry(LOTREntityAngmarHillmanBannerBearer.class, LOTREntityAngmarWarg.class, "Banner_Warg", 250, 300.0f).setMountArmor(LOTRMod.wargArmorAngmar, 0.5f).setPledgeExclusive(),
            (new CinderUnitTradeEntry(RhudaurSoldier.class, 500, 400.0F).setObjective("Rhudaur").setExtraInfo("Rhudaur")));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries TAUREDAIN_CHIEFTAIN = new LOTRUnitTradeEntries(200.0f,
            new LOTRUnitTradeEntry(LOTREntityTauredainWarrior.class, 250, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityTauredainBlowgunner.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityTauredainBannerBearer.class, 250, 150.0f),
            new LOTRUnitTradeEntry(TauredainTrueBlood.class, 500, 800.0f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries TAUREDAIN_FARMER = new LOTRUnitTradeEntries(0.0f,
            new LOTRUnitTradeEntry(LOTREntityTauredainFarmhand.class, 100, 50.0f).setTask(LOTRHiredNPCInfo.Task.FARMER));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries DALE_CAPTAIN = new LOTRUnitTradeEntries(100.0f,
            new LOTRUnitTradeEntry(LOTREntityDaleLevyman.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityDaleSoldier.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityDaleArcher.class, 250, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityDaleSoldier.class, LOTREntityHorse.class, "DaleSoldier_Horse", 350, 150.0f).setMountArmor(LOTRMod.horseArmorDale).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDaleBannerBearer.class, 250, 200.0f),
            new LOTRUnitTradeEntry(LOTREntityDaleBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 350, 300.0f).setMountArmor(LOTRMod.horseArmorDale).setPledgeExclusive(),
            (new CinderUnitTradeEntry(EsgarothSoldier.class, 500, 400.0F).setObjective("Dale").setExtraInfo("Dale")),
            (new CinderUnitTradeEntry(LOTREntityEsgarothBannerBearer.class, 500, 400.0F).setObjective("Dale").setExtraInfo("Dale")));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries DORWINION_CAPTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityDorwinionGuard.class, 250, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityDorwinionCrossbower.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityDorwinionBannerBearer.class, 250, 150.0f));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries DORWINION_ELF_CAPTAIN = new LOTRUnitTradeEntries(250.0f,
            new LOTRUnitTradeEntry(LOTREntityDorwinionElfWarrior.class, 500, 0.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDorwinionElfArcher.class, 500, 50.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityDorwinionElfBannerBearer.class, 500, 150.0f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries DORWINION_VINEKEEPER = new LOTRUnitTradeEntries(0.0f,
            new LOTRUnitTradeEntry(LOTREntityDorwinionVinehand.class, 100, 50.0f).setTask(LOTRHiredNPCInfo.Task.FARMER));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries LOSSARNACH_CAPTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityGondorLevyman.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityLossarnachAxeman.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityLossarnachBannerBearer.class, 250, 200.0f));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries PELARGIR_CAPTAIN = new LOTRUnitTradeEntries(200.0f,
            new LOTRUnitTradeEntry(LOTREntityLebenninLevyman.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityPelargirMarine.class, 200, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityPelargirBannerBearer.class, 250, 200.0f));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries PINNATH_GELIN_CAPTAIN = new LOTRUnitTradeEntries(200.0f,
            new LOTRUnitTradeEntry(LOTREntityGondorLevyman.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityPinnathGelinSoldier.class, 200, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityPinnathGelinSoldier.class, LOTREntityHorse.class, "PinnathGelinSoldier_Horse", 350, 150.0f).setMountArmor(LOTRMod.horseArmorGondor).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityPinnathGelinBannerBearer.class, 250, 200.0f),
            new LOTRUnitTradeEntry(LOTREntityPinnathGelinBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 350, 300.0f).setMountArmor(LOTRMod.horseArmorGondor).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries BLACKROOT_CAPTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityGondorLevyman.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityBlackrootSoldier.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityBlackrootArcher.class, 200, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityBlackrootSoldier.class, LOTREntityHorse.class, "BlackrootSoldier_Horse", 350, 150.0f).setMountArmor(LOTRMod.horseArmorGondor).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityBlackrootBannerBearer.class, 250, 200.0f),
            new LOTRUnitTradeEntry(LOTREntityBlackrootBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 350, 300.0f).setMountArmor(LOTRMod.horseArmorGondor).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries GONDOR_FARMER = new LOTRUnitTradeEntries(0.0f,
            new LOTRUnitTradeEntry(LOTREntityGondorFarmhand.class, 100, 50.0f).setTask(LOTRHiredNPCInfo.Task.FARMER));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries LEBENNIN_CAPTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityLebenninLevyman.class, 100, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityGondorSoldier.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityGondorArcher.class, 250, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityLebenninBannerBearer.class, 150, 150.0f));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries LAMEDON_CAPTAIN = new LOTRUnitTradeEntries(200.0f,
            new LOTRUnitTradeEntry(LOTREntityLamedonHillman.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityLamedonSoldier.class, 200, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityLamedonArcher.class, 250, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityLamedonSoldier.class, LOTREntityHorse.class, "LamedonSoldier_Horse", 300, 150.0f).setMountArmor(LOTRMod.horseArmorLamedon).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityLamedonBannerBearer.class, 250, 200.0f),
            new LOTRUnitTradeEntry(LOTREntityLamedonBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 300, 300.0f).setMountArmor(LOTRMod.horseArmorLamedon).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries ROHAN_FARMER = new LOTRUnitTradeEntries(0.0f,
            new LOTRUnitTradeEntry(LOTREntityRohanFarmhand.class, 100, 50.0f).setTask(LOTRHiredNPCInfo.Task.FARMER));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries EASTERLING_WARLORD = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityEasterlingLevyman.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityEasterlingWarrior.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityEasterlingArcher.class, 250, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityEasterlingGoldWarrior.class, 500, 200.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityEasterlingWarrior.class, LOTREntityHorse.class, "EasterlingWarrior_Horse", 350, 150.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityEasterlingArcher.class, LOTREntityHorse.class, "EasterlingArcher_Horse", 350, 200.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityEasterlingGoldWarrior.class, LOTREntityHorse.class, "EasterlingGoldWarrior_Horse", 600, 300.0f).setMountArmor(LOTRMod.horseArmorRhunGold).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityEasterlingFireThrower.class, 260, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityEasterlingBannerBearer.class, 250, 200.0f),
            new LOTRUnitTradeEntry(LOTREntityEasterlingBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 350, 150.0f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries EASTERLING_FARMER = new LOTRUnitTradeEntries(0.0f,
            new LOTRUnitTradeEntry(LOTREntityEasterlingFarmhand.class, 100, 50.0f).setTask(LOTRHiredNPCInfo.Task.FARMER));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries RIVENDELL_LORD = new LOTRUnitTradeEntries(300.0f,
            new LOTRUnitTradeEntry(LOTREntityRivendellElf.class, 60, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityRivendellWarrior.class, 500, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityRivendellWarrior.class, LOTREntityHorse.class, "RivendellWarrior_Horse", 600, 200.0f).setMountArmor(LOTRMod.horseArmorRivendell).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityRivendellBannerBearer.class, 500, 250.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityRivendellBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 600, 350.0f).setMountArmor(LOTRMod.horseArmorRivendell).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries HARNEDOR_WARLORD = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityHarnedorWarrior.class, 250, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityHarnedorArcher.class, 200, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityHarnedorWarrior.class, LOTREntityHorse.class, "HarnedorWarrior_Horse", 350, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityHarnedorArcher.class, LOTREntityHorse.class, "HarnedorArcher_Horse", 300, 150.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityHarnedorBannerBearer.class, 250, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityHarnedorBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 350, 250.0f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries UMBAR_CAPTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityUmbarWarrior.class, 250, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityUmbarArcher.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityUmbarWarrior.class, LOTREntityHorse.class, "UmbarWarrior_Horse", 350, 100.0f).setMountArmor(LOTRMod.horseArmorUmbar).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityUmbarBannerBearer.class, 250, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityUmbarBannerBearer.class, LOTREntityHorse.class, "Banner_Horse", 350, 250.0f).setMountArmor(LOTRMod.horseArmorUmbar).setPledgeExclusive(),
            new LOTRUnitTradeEntry(UmbarUsurper.class, 400, 500.0f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries CORSAIR_CAPTAIN = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityCorsair.class, 200, 0.0f).setExtraInfo("Corsair"));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries NOMAD_WARLORD = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityNomadWarrior.class, 150, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityNomadArcher.class, 150, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityNomadWarrior.class, LOTREntityCamel.class, "NomadWarrior_Camel", 250, 100.0f),
            new LOTRUnitTradeEntry(LOTREntityNomadArcher.class, LOTREntityCamel.class, "NomadArcher_Camel", 250, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityNomadBannerBearer.class, 150, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityNomadBannerBearer.class, LOTREntityCamel.class, "Banner_Horse", 250, 250.0f));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries GULF_WARLORD = new LOTRUnitTradeEntries(150.0f,
            new LOTRUnitTradeEntry(LOTREntityGulfHaradWarrior.class, 200, 0.0f),
            new LOTRUnitTradeEntry(LOTREntityGulfHaradArcher.class, 250, 50.0f),
            new LOTRUnitTradeEntry(LOTREntityGulfHaradWarrior.class, LOTREntityHorse.class, "GulfWarrior_Horse", 300, 100.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGulfHaradArcher.class, LOTREntityHorse.class, "GulfArcher_Horse", 350, 150.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityGulfHaradBannerBearer.class, 250, 150.0f),
            new LOTRUnitTradeEntry(LOTREntityGulfHaradBannerBearer.class, LOTREntityHorse.class, "GulfWarrior_Horse", 350, 250.0f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries CORSAIR_SLAVER = new LOTRUnitTradeEntries(0.0f,
            new LOTRUnitTradeEntry(LOTREntityHaradSlave.class, 100, 0.0f).setTask(LOTRHiredNPCInfo.Task.FARMER));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries HARNEDOR_FARMER = new LOTRUnitTradeEntries(0.0f,
            new LOTRUnitTradeEntry(LOTREntityHarnedorFarmhand.class, 100, 50.0f).setTask(LOTRHiredNPCInfo.Task.FARMER));
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries BLACK_URUK_CAPTAIN = new LOTRUnitTradeEntries(400.0f,
            new LOTRUnitTradeEntry(LOTREntityBlackUruk.class, 500, 250.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityBlackUrukArcher.class, 500, 300.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityOlogHai.class, 800, 350.0f).setPledgeExclusive(),
            new LOTRUnitTradeEntry(LOTREntityBlackUrukBannerBearer.class, 500, 400.0f).setPledgeExclusive());
    @Shadow(remap = false)
    public static LOTRUnitTradeEntries BREE_FARMER = new LOTRUnitTradeEntries(0.0f,
            new LOTRUnitTradeEntry(LOTREntityBreeFarmhand.class, 40, 50.0f).setTask(LOTRHiredNPCInfo.Task.FARMER));
    @Final
    @Shadow(remap = false)
    public static final int MOREDAIN_MERCENARY_COST = 200;

}
