# -*- coding: utf-8 -*-
from mob import *
from json_ import *

mimic = Enemy(
    mob = "skeleton",
    name = JTxt('mimic', color = 'gray'),
    hp = 20,
    attack_damage = 5,
    movement_speed = 0.25,
    follow_range = 26,
    feet = 'id:"iron_boots",Count:1b',
    legs = 'id:"iron_leggings",Count:1b',
    chest = 'id:"iron_chestplate",Count:1b',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;1,1,1,1],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGZkODVhOTY4MzM0ZmZhODc0ZDYzZTgwNjhjNGQxODM1ZTI5YjhkYTE3Y2Y1OGQ4ZGUwYTcxMzM4ZWNiZjYwIn19fQ=="}]}}}')

# ================== F1 ==================
dagger_goblin = Enemy(
    mob = "zombie",
    name = JTxt('dagger_goblin', color = 'dark_green'),
    silent = True,
    hp = 9,
    baby = True,
    attack_damage = 3.5,
    movement_speed = 0.22,
    follow_range = 18,
    right_hand = 'id:"wooden_sword",Count:1,tag:{CustomModelData:3504}',
    legs = 'id:"leather_leggings",Count:1',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;2,2,2,2],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGJmNTZjNjU0MWMxMjY2ZmZjNDYzNTEwYmRiNTVhZWY5MzE1YWY1NDg4OThjZjVkM2NiYTFiNWI0YzAxIn19fQ=="}]}}}',
    death_trigger = True,
    custom_sound = True,
    tags = ["goblin"])
spear_goblin = Enemy(
    mob = "zombie",
    name = JTxt('spear_goblin', color = 'dark_green'),
    silent = True,
    hp = 12,
    baby = True,
    attack_damage = 2.7,
    movement_speed = 0.2,
    follow_range = 18,
    right_hand = 'id:"wooden_sword",Count:1,tag:{CustomModelData:3002}',
    legs = 'id:"leather_leggings",Count:1',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;3,3,3,3],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjZiOTcyZTMyZDc2MWIxOTI2MjZlNWQ2ZDAxZWRjMDk0OTQwOTEwMTAzY2VhNWUyZTJkMWYyMzFhZGI3NTVkNSJ9fX0="}]}}}',
    death_trigger = True,
    custom_sound = True,
    tags = ["goblin"])
undead_archer = Enemy(
    mob = "skeleton",
    name = JTxt('undead_archer', color = '#cac8c8'),
    hp = 8,
    attack_damage = 3,
    movement_speed = 0.23,
    follow_range = 11,
    right_hand = 'id:"bow",Count:1b,tag:{Enchantments:[{id:"punch",lvl:1s}]}',
    feet = 'id:"chainmail_boots",Count:1b',
    chest = 'id:"chainmail_chestplate",Count:1b')
basic_slime = Slime(
    name = JTxt('basic_slime', color = '#5fe61e'),
    hp = 6,
    attack_damage = 2.5,
    movement_speed = 0.23,
    follow_range = 14,
    size = 1,
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;999,999,999,999],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODk1YWVlYzZiODQyYWRhODY2OWY4NDZkNjViYzQ5NzYyNTk3ODI0YWI5NDRmMjJmNDViZjNiYmI5NDFhYmU2YyJ9fX0="}]}}}',
    death_trigger = True)
troll = Enemy(
    mob = "zombie",
    name = JTxt('troll', color = '#986200'),
    silent = True,
    hp = 17,
    attack_damage = 5,
    movement_speed = 0.2,
    follow_range = 18,
    knockback_resistance = 0.65,
    right_hand = 'id:"stone_axe",Count:1b,tag:{Enchantments:[{id:"minecraft:knockback",lvl:3s}]}',
    feet = 'id:"leather_boots",Count:1b,tag:{display:{color:10056534}}',
    legs = 'id:"leather_leggings",Count:1b,tag:{display:{color:10056534}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:10056534}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;4,4,4,4],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2E3NzkxNmU4NDc2OWIyYzk1NDc5MzRkZDIxYWViZWRiMTk3Mjc1OGFhNWE3MzliNjEyNzQzNjUzZjZlYSJ9fX0="}]}}}',
    death_trigger = True,
    custom_sound= True)
zeldia_knight = Enemy(
    mob = 'skeleton',
    name = JTxt('zeldia_knight', color = 'gray'),
    hp = 10,
    attack_damage = 4,
    movement_speed = 0.22,
    follow_range = 24,
    right_hand = 'id:"iron_sword",Count:1b',
    left_hand = 'id:"shield",Count:1b',
    feet = 'id:"iron_boots",Count:1b',
    legs = 'id:"iron_leggings",Count:1b',
    chest = 'id:"iron_chestplate",Count:1b',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;5,5,5,5],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2M5ZDcyNjNhMTNhMzhmYTdkNDc3MzhjMmY2ZWFmMDgzYTNkNDU5MmI5N2U1MjZjYjExMWM4NjExMGNjYyJ9fX0="}]}}}',
    tags = ["zeldian"])
zeldia_leader = Enemy(
    mob = 'skeleton',
    name = JTxt('zeldia_knight_leader', color = 'gold'),
    hp = 14,
    attack_damage = 4.5,
    movement_speed = 0.23,
    follow_range = 24,
    right_hand = 'id:"iron_sword",Count:1b',
    left_hand = 'id:"shield",Count:1b,tag:{BlockentityTag:{Patterns:[{Color:3,Pattern:"sc"},{Color:11,Pattern:"mc"},{Color:11,Pattern:"flo"},{Color:4,Pattern:"flo"}]}}',
    feet = 'id:"golden_boots",Count:1b',
    legs = 'id:"golden_leggings",Count:1b',
    chest = 'id:"golden_chestplate",Count:1b',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;6,6,6,6],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmM4NTg3ZDA5N2ZjM2U2ZWFiODAyYzZiNTVjOGJkNzIzMTZiZDY4ZmQ4MzUyODFjNDI3MjQ4YzdhOTZmM2MifX19"}]}}}',
    custom_attack = True,
    tags = ["zeldian"])
zeldia_miner = Enemy(
    mob = 'skeleton',
    name = JTxt('zeldia_miner', color = 'gray'),
    hp = 9,
    attack_damage = 3.7,
    movement_speed = 0.22,
    follow_range = 24,
    right_hand = 'id:"iron_pickaxe",Count:1b',
    left_hand = 'id:"stick",Count:1b,tag:{CustomModelData:2304}',
    feet = 'id:"leather_boots",Count:1b',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;-66274328,-488488680,-1717246728,300373265],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM3ZjhmOTVjMTI1NzU3Y2JmNzY3YTExZjUyYTRlNjY5MWNlMThhMjU5NzhjNjhjZmEzOTEwMzYwZmUifX19"}]}}}',
    custom_attack = True,
    tags = ["zeldian"])

undead_archer.icon["item"] = "skeleton_skull"

e_floor_1 = [dagger_goblin, spear_goblin, undead_archer, basic_slime, troll, zeldia_knight, zeldia_leader, zeldia_miner]


# ================== F2 ==================
elf_assassin = Enemy(
    mob = "zombie",
    name = JTxt('elf_assassin', color = 'dark_green'),
    hp = 15,
    attack_damage = 5.5,
    movement_speed = 0.26,
    follow_range = 20,
    silent = True,
    right_hand = 'id:"wooden_sword",Count:1,tag:{CustomModelData:3504}',
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:5522464}}',
    legs = 'id:"leather_leggings",Count:1,tag:{display:{color:4811533}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:1338123}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;7,7,7,7],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmE3NjkzMzUzYTZhZTU3N2I1NzQ0ODdiMzkwZTMzNjYxNWU0ZDdlNGM2MjdkYThmM2U5MzRkMzg5YWM2NWMifX19"}]}}}',
    custom_attack = True,
    tags = ["attacking"],
    commands = ["execute as @e[tag=elf_assassin,tag=EB,tag=init,limit=1] run function olink:ch1/new_link"])
stone_guardian = Enemy(
    mob = 'zombie',
    name = JTxt('stone_guardian', color = 'gray'),
    silent = True,
    hp = 23,
    attack_damage = 3.8,
    movement_speed = 0.17,
    knockback_resistance = 0.75,
    follow_range = 17,
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:11130038}}',
    legs = 'id:"leather_leggings",Count:1,tag:{display:{color:11126703}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:10340255}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;8,8,8,8],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTIxYjczYjE4MWExZTY5ZDIwMTYyNThhZWRkMzI4MjJkYmU0MTcwYjcxN2QwYzQzZDM2MGE3YThhYjRjZmJmNSJ9fX0="}]}}}',
    death_trigger = True,
    custom_sound = True,
    custom_attack = True,
    tags = ["sg"])
half_stone_guardian = Enemy(
    mob = 'zombie',
    name = JTxt('half_stone_guardian', color = 'gray'),
    silent = True,
    hp = 12,
    attack_damage = 3.4,
    baby = True,
    movement_speed = 0.21,
    knockback_resistance = 0.5,
    follow_range = 17,
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:11130038}}',
    legs = 'id:"leather_leggings",Count:1,tag:{display:{color:11126703}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:10340255}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;8,8,8,8],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTIxYjczYjE4MWExZTY5ZDIwMTYyNThhZWRkMzI4MjJkYmU0MTcwYjcxN2QwYzQzZDM2MGE3YThhYjRjZmJmNSJ9fX0="}]}}}',
    death_trigger = True,
    custom_sound = True,
    tags = ["sg"])
ent = Enemy(
    mob = 'zombie',
    name = JTxt('ent', color = '#5fe61e'),
    hp = 16,
    attack_damage = 4.6,
    movement_speed = 0.22,
    follow_range = 20,
    silent = True,
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:9202467}}',
    legs = 'id:"leather_leggings",Count:1,tag:{display:{color:9202467}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:9202467}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;9,9,9,9],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTZlODVlMzJiNzVlOTcyZTEwYjI1NmQ1NDk2NGUxOWYxYThiMzk0MDk1YWQ5ZjMzMWI4ODg0MDlkZTIifX19"}]}}}',
    right_hand = 'id:"slime_ball",Count:1,tag:{CustomModelData:7031}',
    left_hand = 'id:"slime_ball",Count:1,tag:{CustomModelData:7032}',
    death_trigger = True,
    custom_sound = True,
    custom_attack = True)
elder_ent = Enemy(
    mob = 'zombie',
    name = JTxt('elder_ent', color = 'dark_green'),
    hp = 22,
    attack_damage = 5,
    movement_speed = 0.22,
    knockback_resistance = 0.1,
    follow_range = 20,
    silent = True,
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:8816388}}',
    legs = 'id:"leather_leggings",Count:1,tag:{display:{color:8816388}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:8816388}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;10,10,10,10],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjA1MGM3ODJhMzQ1NTA0YTE1YjcxNWE0ZDg2YzM1OWMwZDhlYjQ2YjI4YWFhMzRlZjg5ZWJlZmE1NTNmOCJ9fX0="}]}}}',
    right_hand = 'id:"slime_ball",Count:1,tag:{CustomModelData:7033}',
    left_hand = 'id:"slime_ball",Count:1,tag:{CustomModelData:7034}',
    death_trigger = True,   
    custom_sound = True,
    custom_attack = True)
frog = Enemy(
    mob = 'zombie',
    name = JTxt('frog', color = '#6ab335'),
    baby = True,
    silent = True,
    hp = 11,
    attack_damage = 4,
    movement_speed = 0.20,
    follow_range = 16,
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:6733126}}',
    legs = 'id:"leather_leggings",Count:1,tag:{display:{color:6604602}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:6283320}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;12,12,12,12],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWRjNTY5Y2M2MjBiMWUyMDZlYWY5ZmZkOTYzYTliNGYwMTE1NDM2MGQyNzkyZmY1ZGNkNjUwYjNjZjc1NTVkIn19fQ=="}]}}}',
    death_trigger = True,
    custom_sound = True,
    custom_attack = True,
    other = 'ActiveEffects:[{Id:8,Amplifier:2b,Duration:7200,ShowParticles:0b}]')
angry_panda = Panda(
    hp = 16,
    name = JTxt('angry_panda', color = '#cac8c8'),
    attack_damage = 4.8,
    movement_speed = 0.24,
    follow_range = 25,
    gene = "aggressive",
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;13,13,13,13],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODNmZTFlNzgyYWU5NmEzMDMzNmEwM2VmNzQ2ODFjZTNhNjkwNWZjYzY3M2ZhNTZjMDQ2YWFlZTZhYTI4MzA3ZCJ9fX0="}]}}}',
    tags = ["autoanger"])
spider = Enemy(
    mob = 'spider',
    name = JTxt('spider', color = '#c8b8a9'),
    hp = 14,
    attack_damage = 4.5,
    movement_speed = 0.24,
    follow_range = 15,
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;14,14,14,14],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzg3YTk2YThjMjNiODNiMzJhNzNkZjA1MWY2Yjg0YzJlZjI0ZDI1YmE0MTkwZGJlNzRmMTExMzg2MjliNWFlZiJ9fX0="}]}}}')
venomous_spider = Enemy(
    mob = 'cave_spider',
    name = JTxt('venomous_spider', color = '#5fe61e'),
    hp = 10,
    attack_damage = 2.5,
    movement_speed = 0.22,
    follow_range = 10,
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;15,15,15,15],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjA0ZDVmY2IyODlmZTY1YjY3ODY2ODJlMWM3MzZjM2Y3YjE2ZjM5ZDk0MGUzZDJmNDFjZjAwNDA3MDRjNjI4MiJ9fX0="}]}}}')
mangradora = Enemy(
    mob = 'zombie',
    name = JTxt('mandragora', color = '#5fe61e'),
    baby = True,
    silent = True,
    hp = 8,
    attack_damage = 3,
    movement_speed = 0.13,
    follow_range = 5,
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:12814375}}',
    legs = 'id:"leather_leggings",Count:1,tag:{display:{color:14260786}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:12814375}}',
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7000}',
    right_hand = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7001}',
    left_hand = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7001}',
    death_trigger = True,
    custom_sound = True,
    invisible = True,
    overwrite_summon = 'function attacks:planted_mandragora/summon')

e_floor_2 = [ elf_assassin, stone_guardian, half_stone_guardian, ent, elder_ent, frog, angry_panda, spider, venomous_spider, mangradora ]


# ================== F3 ==================
ghost_pirate = Enemy(
    mob = 'drowned',
    name = JTxt('ghost_pirate', color = 'gray'),
    silent = True,
    hp = 18,
    attack_damage = 5.2,
    movement_speed = 0.23,
    follow_range = 24,
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7003}',
    right_hand = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7004}',
    left_hand = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7005}',
    custom_sound = True,
    death_trigger = True,
    invisible = True,
    tags = ["water_speed","water_speed_I"])
undead_pirate = Enemy(
    mob = 'skeleton',
    name = JTxt('undead_pirate', color = '#cac8c8'),
    hp = 22,
    attack_damage = 5.4,
    movement_speed = 0.22,
    follow_range = 24,
    right_hand = 'id:"wooden_sword",Count:1,tag:{CustomModelData:3304}',
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:8537868}}',
    legs = 'id:"leather_leggings",Count:1,tag:{display:{color:11868160}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:11868160}}',
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7012}'
)
drowned_fisherman = Enemy(
    mob = 'drowned',
    name = JTxt('drowned_fisherman', color = 'dark_aqua'),
    hp = 20,
    attack_damage = 5,
    movement_speed = 0.23,
    follow_range = 18,
    right_hand = 'id:"wooden_sword",Count:1,tag:{CustomModelData:3502,Enchantments:[{id:"minecraft:knockback",lvl:3s}]}',
    custom_attack = True,
    tags = ["water_speed","water_speed_I"]
)
floating_jellyfish = Enemy(
    mob = 'drowned',
    name = JTxt('floating_jellyfish', color = 'light_purple'),
    silent = True,
    hp = 16,
    attack_damage = 3.2,
    movement_speed = 0.21,
    follow_range = 15,
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7007}',
    custom_sound = True,
    death_trigger = True,
    invisible = True,
    tags = ["water_speed","water_speed_I"],
)
annoying_seagull = Enemy(
    mob = 'phantom',
    name = JTxt('annoying_seagull', color = '#cac8c8'),
    silent = True,
    hp = 17,
    attack_damage = 4.5,
    movement_speed = 0.24,
    follow_range = 25,
    custom_sound= True,
    death_trigger = True,
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7008}',
    objmc = Objmc('7000', 40, 1),
    invisible = True
)
hermit_crab = Enemy(
    mob = 'zombie',
    name = JTxt('hermit_crab', color = '#ff933e'),
    hp = 28,
    attack_damage = 4,
    movement_speed = 0.15,
    follow_range = 14,
    silent = True,
    baby = True,
    custom_sound = True,
    custom_attack = True,
    death_trigger = True,
    objmc = Objmc('7002', 80, 1),
    invisible = True,
    tags = ["water_speed","water_speed_I"],
)
siren = Enemy(
    mob = 'drowned',
    name = JTxt('siren', color = 'dark_aqua'),
    silent = True,
    hp = 20,
    attack_damage = 5.5,
    movement_speed = 0.13,
    follow_range = 24,
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7013}',
    right_hand = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7014}',
    left_hand = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7015}',
    death_trigger = True,
    invisible = True,
    custom_sound= True,
    tags = ["water_speed","water_speed_II"],
)
dolphin_ridder = Enemy(
    mob = 'drowned',
    name = JTxt('dolphin_ridder', color = 'dark_aqua'),
    hp = 15,
    attack_damage = 4.5,
    movement_speed = 0.23,
    follow_range = 20,
    custom_attack = True, 
    right_hand = 'id:"trident",Count:1',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;1637949205,-978304925,-1293147704,978780041],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmJlOTRmZDMxYjgyMjIyNDMyZjI3YjYwZDc2NWE1ZDYyMmZkNzZjNGUzYTg4MDdmOWExZDQxZmI3MDdhZmFlMCJ9fX0="}]}}}',
    commands = ["execute as @e[tag=dolphin_ridder,tag=init,sort=nearest,limit=1] run function enemies:dolphin_ridder/summon_dolphin"],
    tags = ["water_speed","water_speed_I",""]
)
parasite_squid = Enemy(
    mob = 'drowned',
    name = JTxt('parasite_squid', color = 'dark_aqua'),
    hp = 14,
    attack_damage = 4,
    movement_speed = 0.23,
    follow_range = 16,
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7010}',
    custom_sound= True,
    tags = ["water_speed","water_speed_I"]
)
guardian = Enemy(
    mob = 'guardian',
    name = JTxt('guardian', color = 'dark_aqua'),
    hp = 18,
    attack_damage = 4.4,
    movement_speed = 0.23,
    follow_range = 24,
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;1653544400,-476295207,-1672573887,-722121943],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTBiZjM0YTcxZTc3MTViNmJhNTJkNWRkMWJhZTVjYjg1Zjc3M2RjOWIwZDQ1N2I0YmZjNWY5ZGQzY2M3Yzk0In19fQ=="}]}}}'
)
pufferfish = Enemy(
    mob = 'pufferfish',
    name = JTxt('pufferfish', color = 'gold'),
    hp = 12,
    attack_damage = 0,
    movement_speed = 0.23,
    follow_range = 18,
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;630075668,915163297,-2046968232,152236255],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxNTI4NzZiYzNhOTZkZDJhMjI5OTI0NWVkYjNiZWVmNjQ3YzhhNTZhYzg4NTNhNjg3YzNlN2I1ZDhiYiJ9fX0="}]}}}'
)

if True:
    ghost_pirate.icon["item"] = "slime_ball"
    ghost_pirate.icon["nbt"] = "CustomModelData:7006"
    hermit_crab.icon["item"] = "slime_ball"
    hermit_crab.icon["nbt"] = "CustomModelData:7009"
    drowned_fisherman.icon["item"] = "player_head"
    drowned_fisherman.icon["nbt"] = 'SkullOwner:{Id:[I;790009440,1639859901,-1397417282,-100772047],Properties:{textures:[{Value:\\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzNmN2NjZjYxZGJjM2Y5ZmU5YTYzMzNjZGUwYzBlMTQzOTllYjJlZWE3MWQzNGNmMjIzYjNhY2UyMjA1MSJ9fX0=\\"}]}}'
    parasite_squid.icon["item"] = "player_head"
    parasite_squid.icon["nbt"] = 'SkullOwner:{Id:[I;-188971529,704594796,-1571695001,-2091444551],Properties:{textures:[{Value:\\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2U5NGExYmIxY2IwMGFhYTE1M2E3NGRhZjRiMGVlYTIwYjg5NzQ1MjJmZTk5MDFlYjU1YWVmNDc4ZWJlZmYwZCJ9fX0=\\"}]}}'
    siren.icon["item"] = "slime_ball"
    siren.icon["nbt"] = "CustomModelData:7016"

e_floor_3 = [ghost_pirate, undead_pirate, drowned_fisherman, floating_jellyfish, annoying_seagull, hermit_crab, siren, dolphin_ridder, parasite_squid, guardian, pufferfish]


# ================== F4 ==================
flying_machine = Enemy(
    mob = 'sheep',
    name = JTxt('flying_machine', color = 'gray'),
    hp = 20,
    attack_damage = 5,
    movement_speed = 0.20,
    follow_range = 25,
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7025}',
    silent = True,
    invisible = True,
    custom_sound = True,
    custom_attack = True,
    death_trigger = True,
    objmc = Objmc('7006', 2, 10),
    commands = [
        "execute as @e[tag=flying_machine,tag=init,sort=nearest,limit=1] run effect give @s slow_falling 720000 0 true",
        "execute as @e[tag=flying_machine,tag=init,sort=nearest,limit=1] run function enemies:flying_machine/state/change/2aggro",
        "execute as @e[tag=flying_machine,tag=init,sort=nearest,limit=1] run function olink:ch2/new_link"
    ])
copper_golem = Enemy(
    mob = 'hoglin',
    name = JTxt('copper_golem', color = 'gold'),
    hp = 28,
    attack_damage = 5,
    movement_speed = 0.22,
    follow_range = 20,
    knockback_resistance = 0.5,
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7026}',
    silent = True,
    invisible = True,
    custom_sound = True,
    custom_attack = True,
    death_trigger = True,
    objmc = Objmc('7008', 40, 1),
    tags = ["electric_immunity"],
    other = "Age:-72000,IsImmuneToZombification:1b",
    commands = [
        "execute as @e[tag=copper_golem,tag=init,sort=nearest,limit=1] run function olink:ch1/find_linked",
        "execute as @e[tag=copper_golem,tag=init,sort=nearest,limit=1] run function enemies:copper_golem/state/change/2idle",
        "execute as @e[tag=copper_golem,tag=init,sort=nearest,limit=1] run attribute @s generic.attack_damage base set 5"
    ])
factory_guard = Enemy(
    mob = "vindicator",
    name = JTxt('factory_guard', color = '#cac8c8'),
    hp = 25,
    attack_damage = 5.5,
    movement_speed = 0.3,
    follow_range = 18,
    tags = ["electric_immunity"],
    right_hand = 'id:"iron_sword",Count:1')
ranged_factory_guard = Enemy(
    mob = "pillager",
    name = JTxt('ranged_factory_guard', color = '#cac8c8'),
    hp = 25,
    attack_damage = 4,
    movement_speed = 0.25,
    follow_range = 18,
    tags = ["electric_immunity"],
    right_hand = 'id:"crossbow",Count:1')
crazy_engineer = Enemy(
    mob = "vindicator",
    name = JTxt('crazy_engineer', color = 'gold'),
    hp = 22,
    attack_damage = 5,
    movement_speed = 0.24,
    follow_range = 18,
    invisible = True,
    custom_attack = True,
    objmc = Objmc('7011', 0, 0),
    tags = ["electric_immunity"],
    commands = [
        "execute as @e[tag=crazy_engineer,tag=init,sort=nearest,limit=1] run function olink:ch1/find_linked",
        "execute as @e[tag=crazy_engineer,tag=init,sort=nearest,limit=1] run function enemies:crazy_engineer/state/change/2idle",
    ]
)
electrified_creeper = Creeper(
    mob = "creeper",
    name = JTxt('electrified_creeper', color = '#42dce7'),
    hp = 18,
    attack_damage = 7,
    movement_speed = 0.3,
    follow_range = 18,
    tags = ["electric_immunity"],
    powered = 1,
    explosion_radius = 0,
    commands = [
        "execute as @e[tag=electrified_creeper,tag=init,sort=nearest,limit=1] run effect give @s luck 999999 0 false",
    ]
)
mechanical_bug = Enemy(
    mob = "silverfish",
    name = JTxt('mechanical_bug', color = '#cac8c8'),
    hp = 16,
    attack_damage = 4.7,
    movement_speed = 0.2,
    follow_range = 18,
    custom_attack = True)
exoskeleton = Enemy(
    mob = "skeleton",
    name = JTxt('exoskeleton', color = '#cac8c8'),
    hp = 26,
    attack_damage = 5.3,
    movement_speed = 0.22,
    follow_range = 18,
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7029}')
iron_golem = Enemy(
    mob = "iron_golem",
    name = JTxt('iron_golem', color = '#cac8c8'),
    hp = 32,
    attack_damage = 5.2,
    movement_speed = 0.20,
    follow_range = 18,
    custom_attack = True,
    head = 'id:"slime_ball",Count:1b,tag:{CustomModelData:7038}',
    tags = ["autoanger"])

if True:
    factory_guard.icon["item"] = "slime_ball"
    factory_guard.icon["nbt"] = 'CustomModelData:7027'
    ranged_factory_guard.icon["item"] = "slime_ball"
    ranged_factory_guard.icon["nbt"] = 'CustomModelData:7027'
    crazy_engineer.icon["item"] = "slime_ball"
    crazy_engineer.icon["nbt"] = 'CustomModelData:7028'
    electrified_creeper.icon["item"] = "player_head"
    electrified_creeper.icon["nbt"] = 'SkullOwner:{Id:[I;790009440,1639859901,-1397417282,-100772047],Properties:{textures:[{Value:\\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjJjZWIzOWRkNGRlMjRhN2FkZmUyOTFhM2EwY2ZjN2NmNGY2NDVkZTU5YjYwM2ZjZmUwNmM2YjVhMDZlMjYifX19\\"}]}}'
    mechanical_bug.icon["item"] = "player_head"
    mechanical_bug.icon["nbt"] = 'SkullOwner:{Id:[I;790009440,1639859901,-1397417282,-100772047],Properties:{textures:[{Value:\\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGE5MWRhYjgzOTFhZjVmZGE1NGFjZDJjMGIxOGZiZDgxOWI4NjVlMWE4ZjFkNjIzODEzZmE3NjFlOTI0NTQwIn19fQ==\\"}]}}'

e_floor_4 = [flying_machine, copper_golem, factory_guard, ranged_factory_guard, crazy_engineer, electrified_creeper, mechanical_bug, exoskeleton, iron_golem]


# ================== F? ==================
mummy = Enemy(
    mob = 'zombie',
    name = JTxt('Mummy', color = 'gray'),
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:15790815}}',
    legs = 'id:"leather_leggings",Count:1,tag:{display:{color:15790815}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:15790815}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;13,13,13,13],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2U5MWU5NTgyMmZlOThjYzVhNTY1OGU4MjRiMWI4Y2YxNGQ0ZGU5MmYwZTFhZjI0ODE1MzcyNDM1YzllYWI2In19fQ=="}]}}}')


# =============== Builders ===============
hydroangeas = Enemy(
    mob = "zombie",
    name = JTxt('Hydroangeas', color = '#F2EB24', translate = False),
    hp = 22,
    attack_damage = 5,
    movement_speed = 0.22,
    follow_range = 20,
    right_hand = 'id:"bricks",Count:1b',
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:8537882}}',
    legs = 'id:"leather_leggings",Count:1b,tag:{display:{color:3707061}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:15906582}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;-693982816,-1661580715,-1808679624,-2137908024],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWZkNjE2ZDE0ZjljYmY5MTg0ZDkwYjVmNzdiN2JlNDk4N2QwOGEzMzYzNjc2OWQ5Mjk2NzZiMjI2M2MzZDA0OCJ9fX0="}]}}}',
    tags = ["builder"])
min3rminor = Enemy(
    mob = "zombie",
    name = JTxt('Min3rminor', color = '#F2EB24', translate = False),
    hp = 20,
    attack_damage = 4,
    movement_speed = 0.22,
    follow_range = 20,
    right_hand = 'id:"bricks",Count:1b',
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:8537882}}',
    legs = 'id:"leather_leggings",Count:1b,tag:{display:{color:3707061}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:15906582}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;-959148926,-1572321047,-1313585126,966887461],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjM4ODdmMWE5YzgzZDg3OGQ4ZDA5YTdlMjY2MzA2ODYwMTRjYzc4ZDE2YzNiZmYzYzc1YmI1ZWQ0MjY4YmJiNiJ9fX0="}]}}}',
    tags = ["builder"])
end_mysuffering = Enemy(
    mob = "zombie",
    name = JTxt('End_mySuffering', color = '#F2EB24', translate = False),
    hp = 20,
    attack_damage = 4,
    movement_speed = 0.22,
    follow_range = 20,
    right_hand = 'id:"bricks",Count:1b',
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:8537882}}',
    legs = 'id:"leather_leggings",Count:1b,tag:{display:{color:3707061}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:15906582}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;-2057712510,-1784003310,-1973684010,1759448807],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmUwNjdmZDk5MzhjOGU1ODQ1M2ZkZGM5MjNmYzJkZjRiNjY1ZWUxNzA5ZDYyNTA2OWY4ZGNjZjk2YWNjNjUwYiJ9fX0="}]}}}',
    tags = ["builder"])
jonloveslegos = Enemy(
    mob = "zombie",
    name = JTxt('JonLovesLegos', color = '#F2EB24', translate = False),
    hp = 18,
    attack_damage = 3.7,
    movement_speed = 0.22,
    follow_range = 20,
    right_hand = 'id:"bricks",Count:1b',
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:8537882}}',
    legs = 'id:"leather_leggings",Count:1b,tag:{display:{color:3707061}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:15906582}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;792430193,1441614980,-1857025035,-167655060],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWM1ODE4MGM3OGEzYzdkMDY4MWM1OGNkMzgwNDE4ODY4Y2UxNTI0YWQ0OWRiNDI2YjJhNzJiYzEwMWU5NDI1NCJ9fX0="}]}}}',
    tags = ["builder"])
yekc = Enemy(
    mob = "zombie",
    name = JTxt('Yekc', color = '#F2EB24', translate = False),
    hp = 18,
    attack_damage = 4.2,
    movement_speed = 0.22,
    follow_range = 20,
    right_hand = 'id:"bricks",Count:1b',
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:8537882}}',
    legs = 'id:"leather_leggings",Count:1b,tag:{display:{color:3707061}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:15906582}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;441126330,504253723,-1810934514,818375297],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTZhYTZlNDQyNzRiYzJlMDI3MGJkNjY5YTczODBhM2VkNzA0MjI5MWVjZjhjNDUzNWQ5MzFlNGM2MzllZWZkNiJ9fX0="}]}}}',
    tags = ["builder"])
youknowwho = Enemy(
    mob = "zombie",
    name = JTxt('YouKnowWho', color = '#F2EB24', translate = False),
    hp = 22,
    attack_damage = 5,
    movement_speed = 0.22,
    follow_range = 20,
    right_hand = 'id:"bricks",Count:1b',
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:8537882}}',
    legs = 'id:"leather_leggings",Count:1b,tag:{display:{color:3707061}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:15906582}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;1737677918,640896651,-1191157781,-1294105647],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDU2OTQwNTJhMjIzYzcwMzc1Y2Y4MDQ5ZTQ0Njg4NzBiNmFiZGY2NWUwYzkwNDZkZjVjZTU5MTVmY2Y3NDgxMSJ9fX0="}]}}}',
    tags = ["builder"])
piro_oh = Enemy(
    mob = "zombie",
    name = JTxt('Piro_oh', color = '#F2EB24', translate = False),
    hp = 24,
    attack_damage = 5,
    movement_speed = 0.23,
    follow_range = 20,
    right_hand = 'id:"bricks",Count:1b',
    feet = 'id:"leather_boots",Count:1,tag:{display:{color:8537882}}',
    legs = 'id:"leather_leggings",Count:1b,tag:{display:{color:3707061}}',
    chest = 'id:"leather_chestplate",Count:1,tag:{display:{color:15906582}}',
    head = 'id:"player_head",Count:1b,tag:{SkullOwner:{Id:[I;-1722521793,-390904295,-2125274787,793310395],Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWRhNDIyYmVmNDA3ZGE5ZjFiMGQ4ZjM2M2VhODllNTc2MzhjNjRkYjUyNWUxYmIxMDE4YmIyNDlmZWZiNzlhNSJ9fX0="}]}}}',
    tags = ["builder"])

builders = [hydroangeas, min3rminor, end_mysuffering, jonloveslegos, yekc, youknowwho, piro_oh]

e_others = [mimic]



enemies:list[Enemy] = e_floor_1 + e_floor_2 + e_floor_3 + e_floor_4 + e_others + builders
