From bd455a3eee7ff29725c4243279e825888717d56a Mon Sep 17 00:00:00 2001 From: kay27 Date: Sun, 9 May 2021 00:55:12 +0000 Subject: [PATCH] Merge weekly changes --before=1619916909 as a squash --- CREDITS.md | 4 +- README.md | 2 + mods/CORE/mcl_damage/init.lua | 164 + mods/CORE/mcl_damage/mod.conf | 3 + mods/CORE/mcl_explosions/init.lua | 44 +- .../textures/mcl_particles_sponge1.png | Bin 0 -> 1174 bytes .../textures/mcl_particles_sponge2.png | Bin 0 -> 1149 bytes .../textures/mcl_particles_sponge3.png | Bin 0 -> 1128 bytes .../textures/mcl_particles_sponge4.png | Bin 0 -> 1150 bytes .../textures/mcl_particles_sponge5.png | Bin 0 -> 1170 bytes mods/CORE/mcl_util/init.lua | 121 + mods/ENTITIES/mcl_boats/init.lua | 4 +- .../ENTITIES/mcl_boats/locale/mcl_boats.de.tr | 3 +- mods/ENTITIES/mcl_boats/locale/template.txt | 3 +- mods/ENTITIES/mcl_burning/api.lua | 322 +- mods/ENTITIES/mcl_burning/init.lua | 106 +- mods/ENTITIES/mcl_falling_nodes/init.lua | 102 +- .../mcl_minecarts/locale/mcl_minecarts.de.tr | 1 + mods/ENTITIES/mcl_mobs/api.txt | 32 +- mods/ENTITIES/mcl_mobs/api/api.lua | 761 +++ .../mcl_mobs/api/mob_functions/ai.lua | 1153 +++++ .../mcl_mobs/api/mob_functions/animation.lua | 259 + .../attack_type_instructions.lua | 351 ++ .../mob_functions/backup_code_api.lua} | 4350 ++++++----------- .../mcl_mobs/api/mob_functions/breeding.lua | 184 + .../mcl_mobs/api/mob_functions/collision.lua | 140 + .../api/mob_functions/death_logic.lua | 154 + .../api/mob_functions/environment.lua | 260 + .../mcl_mobs/api/mob_functions/head_logic.lua | 112 + .../api/mob_functions/interaction.lua | 291 ++ .../api/mob_functions/mob_effects.lua | 152 + .../mcl_mobs/api/mob_functions/movement.lua | 391 ++ .../api/mob_functions/projectile_handling.lua | 44 + .../mcl_mobs/api/mob_functions/set_up.lua | 226 + .../api/mob_functions/sound_handling.lua | 59 + mods/ENTITIES/mcl_mobs/{ => api}/mount.lua | 55 +- mods/ENTITIES/mcl_mobs/{ => api}/spawning.lua | 314 +- mods/ENTITIES/mcl_mobs/init.lua | 8 +- mods/ENTITIES/mcl_mobs/lucky_block.lua | 8 - mods/ENTITIES/mcl_mobs/sounds/attributes.txt | 4 + .../mcl_mobs/sounds/default_punch.1.ogg | Bin 0 -> 12658 bytes .../mcl_mobs/sounds/default_punch.2.ogg | Bin 0 -> 12801 bytes .../mcl_mobs/sounds/default_punch.3.ogg | Bin 0 -> 12943 bytes .../mcl_mobs/sounds/default_punch.ogg | Bin 5946 -> 0 bytes mods/ENTITIES/mcl_mobs/todo.txt | 1 + mods/ENTITIES/mobs_mc/0_gameconfig.lua | 2 + mods/ENTITIES/mobs_mc/1_items_default.lua | 62 +- mods/ENTITIES/mobs_mc/bat.lua | 6 +- mods/ENTITIES/mobs_mc/blaze.lua | 40 +- mods/ENTITIES/mobs_mc/chicken.lua | 120 +- mods/ENTITIES/mobs_mc/cow+mooshroom.lua | 150 +- mods/ENTITIES/mobs_mc/creeper.lua | 69 +- mods/ENTITIES/mobs_mc/ender_dragon.lua | 21 +- mods/ENTITIES/mobs_mc/enderman.lua | 99 +- mods/ENTITIES/mobs_mc/endermite.lua | 4 + mods/ENTITIES/mobs_mc/ghast.lua | 73 +- mods/ENTITIES/mobs_mc/guardian.lua | 3 +- mods/ENTITIES/mobs_mc/guardian_elder.lua | 3 +- mods/ENTITIES/mobs_mc/horse.lua | 138 +- mods/ENTITIES/mobs_mc/iron_golem.lua | 8 +- mods/ENTITIES/mobs_mc/llama.lua | 144 +- mods/ENTITIES/mobs_mc/mod.conf | 2 +- mods/ENTITIES/mobs_mc/models/attributes.txt | 1 + mods/ENTITIES/mobs_mc/models/mobs_mc_cat.b3d | Bin 54146 -> 50977 bytes mods/ENTITIES/mobs_mc/models/mobs_mc_cow.b3d | Bin 75074 -> 71850 bytes .../mobs_mc/models/mobs_mc_creeper.b3d | Bin 44319 -> 139359 bytes .../ENTITIES/mobs_mc/models/mobs_mc_ghast.b3d | Bin 75657 -> 69843 bytes .../mobs_mc/models/mobs_mc_mooshroom.b3d | Bin 54175 -> 71850 bytes .../ENTITIES/mobs_mc/models/mobs_mc_slime.b3d | Bin 4732 -> 6346 bytes mods/ENTITIES/mobs_mc/ocelot.lua | 28 +- mods/ENTITIES/mobs_mc/parrot.lua | 22 +- mods/ENTITIES/mobs_mc/pig.lua | 125 +- mods/ENTITIES/mobs_mc/polar_bear.lua | 5 +- mods/ENTITIES/mobs_mc/rabbit.lua | 85 +- mods/ENTITIES/mobs_mc/sheep.lua | 115 +- mods/ENTITIES/mobs_mc/shulker.lua | 21 +- mods/ENTITIES/mobs_mc/silverfish.lua | 3 +- mods/ENTITIES/mobs_mc/skeleton+stray.lua | 32 +- mods/ENTITIES/mobs_mc/skeleton_wither.lua | 3 +- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 161 +- mods/ENTITIES/mobs_mc/snowman.lua | 1 + .../mobs_mc/sounds/mobs_mc_villager.4.ogg | Bin 10341 -> 14731 bytes .../mobs_mc/sounds/mobs_mc_villager.5.ogg | Bin 14731 -> 11187 bytes .../mobs_mc/sounds/mobs_mc_villager.6.ogg | Bin 11187 -> 11068 bytes .../mobs_mc/sounds/mobs_mc_villager.7.ogg | Bin 11068 -> 0 bytes .../sounds/mobs_mc_villager_hurt.1.ogg | Bin 0 -> 10341 bytes mods/ENTITIES/mobs_mc/spider.lua | 31 +- mods/ENTITIES/mobs_mc/squid.lua | 6 +- .../mobs_mc/textures/mobs_mc_llama_chest.png | Bin 0 -> 20594 bytes .../textures/mobs_mc_llama_decor_black.png | Bin 0 -> 4602 bytes .../textures/mobs_mc_llama_decor_blue.png | Bin 0 -> 6585 bytes .../textures/mobs_mc_llama_decor_brown.png | Bin 0 -> 6231 bytes .../textures/mobs_mc_llama_decor_cyan.png | Bin 0 -> 7612 bytes .../textures/mobs_mc_llama_decor_gray.png | Bin 0 -> 5236 bytes .../textures/mobs_mc_llama_decor_green.png | Bin 0 -> 5809 bytes .../mobs_mc_llama_decor_light_blue.png | Bin 0 -> 7643 bytes .../mobs_mc_llama_decor_light_gray.png | Bin 0 -> 6354 bytes .../textures/mobs_mc_llama_decor_lime.png | Bin 0 -> 7388 bytes .../textures/mobs_mc_llama_decor_magenta.png | Bin 0 -> 7352 bytes .../textures/mobs_mc_llama_decor_orange.png | Bin 0 -> 7396 bytes .../textures/mobs_mc_llama_decor_pink.png | Bin 0 -> 7732 bytes .../textures/mobs_mc_llama_decor_purple.png | Bin 0 -> 5790 bytes .../textures/mobs_mc_llama_decor_red.png | Bin 0 -> 6659 bytes .../textures/mobs_mc_llama_decor_white.png | Bin 0 -> 6866 bytes .../textures/mobs_mc_llama_decor_yellow.png | Bin 0 -> 7571 bytes .../mobs_mc/textures/mobs_mc_slime.png | Bin 2040 -> 2052 bytes .../mobs_mc/textures/mobs_mc_spit.png | Bin 0 -> 677 bytes mods/ENTITIES/mobs_mc/vex.lua | 3 +- mods/ENTITIES/mobs_mc/villager.lua | 25 +- mods/ENTITIES/mobs_mc/villager_evoker.lua | 3 +- mods/ENTITIES/mobs_mc/villager_illusioner.lua | 5 +- mods/ENTITIES/mobs_mc/villager_vindicator.lua | 3 +- mods/ENTITIES/mobs_mc/villager_zombie.lua | 8 +- mods/ENTITIES/mobs_mc/witch.lua | 3 +- mods/ENTITIES/mobs_mc/wither.lua | 3 +- mods/ENTITIES/mobs_mc/wolf.lua | 58 +- mods/ENTITIES/mobs_mc/zombie.lua | 30 +- mods/ENTITIES/mobs_mc/zombiepig.lua | 55 +- mods/ENVIRONMENT/lightning/init.lua | 70 +- mods/ENVIRONMENT/lightning/mod.conf | 1 - mods/ENVIRONMENT/mcl_void_damage/init.lua | 5 +- mods/ENVIRONMENT/mcl_void_damage/mod.conf | 2 +- mods/HELP/doc/doc/init.lua | 10 +- mods/HELP/doc/doc/mod.conf | 1 - .../HELP/doc/doc_items/locale/doc_items.de.tr | 9 +- mods/HELP/doc/doc_items/locale/template.txt | 2 +- mods/HELP/mcl_craftguide/init.lua | 2 +- mods/HUD/awards/api.lua | 4 +- mods/HUD/awards/locale/awards.de.tr | 7 +- mods/HUD/awards/locale/template.txt | 11 +- .../textures/object_crosshair.png | Bin 150 -> 144 bytes mods/HUD/mcl_death_messages/init.lua | 518 +- .../locale/mcl_death_messages.de.tr | 115 +- .../mcl_death_messages/locale/template.txt | 115 +- mods/HUD/mcl_experience/init.lua | 29 +- mods/HUD/mcl_hbarmor/init.lua | 9 +- mods/HUD/mcl_inventory/creative.lua | 29 +- mods/HUD/mcl_inventory/init.lua | 55 +- mods/HUD/mcl_inventory/mod.conf | 2 +- mods/ITEMS/REDSTONE/mcl_dispensers/init.lua | 96 +- mods/ITEMS/REDSTONE/mcl_dispensers/mod.conf | 2 +- mods/ITEMS/REDSTONE/mcl_droppers/init.lua | 4 +- mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua | 4 +- mods/ITEMS/REDSTONE/mcl_droppers/mod.conf | 2 +- .../REDSTONE/mesecons_walllever/init.lua | 1 - mods/ITEMS/mcl_anvils/init.lua | 4 +- mods/ITEMS/mcl_anvils/mod.conf | 2 +- mods/ITEMS/mcl_armor/api.lua | 268 + mods/ITEMS/mcl_armor/armor.lua | 675 --- mods/ITEMS/mcl_armor/damage.lua | 102 + mods/ITEMS/mcl_armor/init.lua | 464 +- .../mcl_armor/models/mcl_armor_character.b3d | Bin 453135 -> 493300 bytes .../models/mcl_armor_character.blend | Bin 1208948 -> 1210268 bytes .../models/mcl_armor_character_female.b3d | Bin 453135 -> 493300 bytes .../models/mcl_armor_character_female.blend | Bin 1210620 -> 1210092 bytes mods/ITEMS/mcl_armor/player.lua | 169 + mods/ITEMS/mcl_armor/register.lua | 205 + mods/ITEMS/mcl_armor_stand/init.lua | 278 +- .../models/3d_armor_entity.obj | 488 +- .../mcl_banners/locale/mcl_banners.de.tr | 2 +- .../mcl_banners/locale/mcl_banners.fr.tr | 4 +- .../mcl_banners/locale/mcl_banners.ru.tr | 2 +- mods/ITEMS/mcl_banners/locale/template.txt | 2 +- mods/ITEMS/mcl_beds/api.lua | 147 +- mods/ITEMS/mcl_beds/functions.lua | 8 +- mods/ITEMS/mcl_books/init.lua | 4 +- mods/ITEMS/mcl_bows/arrow.lua | 6 +- mods/ITEMS/mcl_bows/bow.lua | 1 + mods/ITEMS/mcl_brewing/init.lua | 8 +- mods/ITEMS/mcl_brewing/mod.conf | 2 +- mods/ITEMS/mcl_cauldrons/init.lua | 2 +- .../mcl_cauldrons/locale/mcl_cauldrons.de.tr | 4 +- .../mcl_cauldrons/locale/mcl_cauldrons.es.tr | 4 +- .../mcl_cauldrons/locale/mcl_chaudrons.fr.tr | 2 +- .../mcl_cauldrons/locale/mcl_chaudrons.ru.tr | 2 +- mods/ITEMS/mcl_cauldrons/locale/template.txt | 2 +- mods/ITEMS/mcl_chests/init.lua | 20 +- mods/ITEMS/mcl_chests/locale/template.txt | 2 +- mods/ITEMS/mcl_chests/mod.conf | 2 +- mods/ITEMS/mcl_core/locale/mcl_core.de.tr | 22 +- mods/ITEMS/mcl_core/locale/template.txt | 19 + mods/ITEMS/mcl_core/nodes_liquid.lua | 2 +- mods/ITEMS/mcl_core/nodes_trees.lua | 16 +- mods/ITEMS/mcl_crafting_table/init.lua | 2 +- mods/ITEMS/mcl_enchanting/enchantments.lua | 153 +- mods/ITEMS/mcl_enchanting/engine.lua | 6 +- .../locale/mcl_enchanting.fr.tr | 52 +- .../locale/mcl_enchanting.ru.tr | 6 +- mods/ITEMS/mcl_enchanting/locale/template.txt | 4 +- mods/ITEMS/mcl_farming/pumpkin.lua | 6 +- mods/ITEMS/mcl_fireworks/config.txt | 2 - mods/ITEMS/mcl_fireworks/locale/template.txt | 3 + mods/ITEMS/mcl_fireworks/register.lua | 4 +- .../locale/mcl_flowerpots.de.tr | 2 +- .../locale/mcl_flowerpots.es.tr | 4 +- mods/ITEMS/mcl_furnaces/init.lua | 8 +- mods/ITEMS/mcl_furnaces/mod.conf | 2 +- mods/ITEMS/mcl_heads/init.lua | 5 +- mods/ITEMS/mcl_hoppers/init.lua | 4 +- mods/ITEMS/mcl_hoppers/mod.conf | 2 +- mods/ITEMS/mcl_nether/init.lua | 6 +- mods/ITEMS/mcl_nether/mod.conf | 2 +- mods/ITEMS/mcl_potions/functions.lua | 68 +- .../mcl_potions/locale/mcl_potions.de.tr | 15 - mods/ITEMS/mcl_sponges/init.lua | 13 + mods/ITEMS/mcl_tnt/mod.conf | 2 +- mods/ITEMS/mcl_totems/init.lua | 61 +- mods/ITEMS/mcl_totems/mod.conf | 2 +- mods/MISC/mcl_commands/kill.lua | 14 +- mods/MISC/mcl_commands/mod.conf | 1 - mods/PLAYER/mcl_criticals/init.lua | 30 + mods/PLAYER/mcl_criticals/mod.conf | 2 + .../sounds/mcl_criticals_hit.0.ogg | Bin 0 -> 10932 bytes .../sounds/mcl_criticals_hit.1.ogg | Bin 0 -> 12936 bytes .../sounds/mcl_criticals_hit.2.ogg | Bin 0 -> 10130 bytes mods/PLAYER/mcl_death_drop/API.md | 4 +- mods/PLAYER/mcl_death_drop/init.lua | 4 +- mods/PLAYER/mcl_hunger/hunger.lua | 6 +- mods/PLAYER/mcl_hunger/init.lua | 6 +- mods/PLAYER/mcl_hunger/mod.conf | 1 - .../mcl_hunger/textures/hbhunger_bgicon.png | Bin 114 -> 170 bytes .../mcl_hunger/textures/hbhunger_icon.png | Bin 142 -> 209 bytes .../textures/mcl_hunger_icon_foodpoison.png | Bin 141 -> 218 bytes mods/PLAYER/mcl_player/init.lua | 106 +- mods/PLAYER/mcl_playerinfo/mod.conf | 2 +- mods/PLAYER/mcl_playerplus/init.lua | 113 +- mods/PLAYER/mcl_playerplus/mod.conf | 2 +- mods/PLAYER/mcl_skins/init.lua | 11 +- mods/PLAYER/mcl_skins/mod.conf | 2 +- .../{wieldview => mcl_wieldview}/LICENSE.txt | 0 .../{wieldview => mcl_wieldview}/README.txt | 0 mods/PLAYER/mcl_wieldview/init.lua | 118 + .../{wieldview => mcl_wieldview}/mod.conf | 5 +- mods/PLAYER/wieldview/init.lua | 131 - mods/PLAYER/wieldview/transform.lua | 10 - 235 files changed, 10253 insertions(+), 6761 deletions(-) create mode 100644 mods/CORE/mcl_damage/init.lua create mode 100644 mods/CORE/mcl_damage/mod.conf create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_sponge1.png create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_sponge2.png create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_sponge3.png create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_sponge4.png create mode 100644 mods/CORE/mcl_particles/textures/mcl_particles_sponge5.png create mode 100644 mods/ENTITIES/mcl_mobs/api/api.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/attack_type_instructions.lua rename mods/ENTITIES/mcl_mobs/{api.lua => api/mob_functions/backup_code_api.lua} (55%) create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/collision.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/interaction.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/mob_effects.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/sound_handling.lua rename mods/ENTITIES/mcl_mobs/{ => api}/mount.lua (92%) rename mods/ENTITIES/mcl_mobs/{ => api}/spawning.lua (67%) delete mode 100644 mods/ENTITIES/mcl_mobs/lucky_block.lua create mode 100644 mods/ENTITIES/mcl_mobs/sounds/attributes.txt create mode 100644 mods/ENTITIES/mcl_mobs/sounds/default_punch.1.ogg create mode 100644 mods/ENTITIES/mcl_mobs/sounds/default_punch.2.ogg create mode 100644 mods/ENTITIES/mcl_mobs/sounds/default_punch.3.ogg delete mode 100644 mods/ENTITIES/mcl_mobs/sounds/default_punch.ogg create mode 100644 mods/ENTITIES/mcl_mobs/todo.txt create mode 100644 mods/ENTITIES/mobs_mc/models/attributes.txt delete mode 100644 mods/ENTITIES/mobs_mc/sounds/mobs_mc_villager.7.ogg create mode 100644 mods/ENTITIES/mobs_mc/sounds/mobs_mc_villager_hurt.1.ogg create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_chest.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_black.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_blue.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_brown.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_cyan.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_gray.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_green.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_light_blue.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_light_gray.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_lime.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_magenta.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_orange.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_pink.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_purple.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_red.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_white.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_yellow.png create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_spit.png create mode 100644 mods/ITEMS/mcl_armor/api.lua delete mode 100644 mods/ITEMS/mcl_armor/armor.lua create mode 100644 mods/ITEMS/mcl_armor/damage.lua create mode 100644 mods/ITEMS/mcl_armor/player.lua create mode 100644 mods/ITEMS/mcl_armor/register.lua delete mode 100644 mods/ITEMS/mcl_fireworks/config.txt create mode 100644 mods/ITEMS/mcl_fireworks/locale/template.txt create mode 100644 mods/PLAYER/mcl_criticals/init.lua create mode 100644 mods/PLAYER/mcl_criticals/mod.conf create mode 100644 mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.0.ogg create mode 100644 mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.1.ogg create mode 100644 mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.2.ogg rename mods/PLAYER/{wieldview => mcl_wieldview}/LICENSE.txt (100%) rename mods/PLAYER/{wieldview => mcl_wieldview}/README.txt (100%) create mode 100644 mods/PLAYER/mcl_wieldview/init.lua rename mods/PLAYER/{wieldview => mcl_wieldview}/mod.conf (66%) delete mode 100644 mods/PLAYER/wieldview/init.lua delete mode 100644 mods/PLAYER/wieldview/transform.lua diff --git a/CREDITS.md b/CREDITS.md index bae665e7c..c6ca7d0fb 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -9,7 +9,7 @@ ## Maintainers * Fleckenstein * kay27 -* oilboi +* jordan4ibanez ## Developers * bzoss @@ -74,7 +74,7 @@ * Rochambeau * rubenwardy * stu -* oilboi +* jordan4ibanez * 4aiman * Kahrl * Krock diff --git a/README.md b/README.md index 7c3cecece..ca4d01959 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +# (Currently in feature freeze) + # MineClone 2 An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils. Developed by many people. Not developed or endorsed by Mojang AB. diff --git a/mods/CORE/mcl_damage/init.lua b/mods/CORE/mcl_damage/init.lua new file mode 100644 index 000000000..983b82b49 --- /dev/null +++ b/mods/CORE/mcl_damage/init.lua @@ -0,0 +1,164 @@ +mcl_damage = { + modifiers = {}, + damage_callbacks = {}, + death_callbacks = {}, + types = { + in_fire = {is_fire = true}, + lightning_bolt = {is_lightning = true}, + on_fire = {is_fire = true, bypasses_armor = true}, + lava = {is_fire = true}, + hot_floor = {is_fire = true}, + in_wall = {bypasses_armor = true}, + drown = {bypasses_armor = true}, + starve = {bypasses_armor = true, bypasses_magic = true}, + cactus = {}, + fall = {bypasses_armor = true}, + fly_into_wall = {bypasses_armor = true}, -- unused + out_of_world = {bypasses_armor = true, bypasses_magic = true, bypasses_invulnerability = true}, + generic = {bypasses_armor = true}, + magic = {is_magic = true, bypasses_armor = true}, + dragon_breath = {is_magic = true, bypasses_armor = true}, -- this is only used for dragon fireball; dragon fireball does not actually deal impact damage tho, so this is unreachable + wither = {bypasses_armor = true}, -- unused + wither_skull = {is_magic = true, is_explosion = true}, -- this is non-MC but a workaround to get the proper death message + anvil = {}, + falling_node = {}, -- this is falling_block in MC + mob = {}, + player = {}, + arrow = {is_projectile = true}, + fireball = {is_projectile = true, is_fire = true}, + thorns = {is_magic = true}, + explosion = {is_explosion = true}, + cramming = {bypasses_armor = true}, -- unused + fireworks = {is_explosion = true}, -- unused + } +} + +function mcl_damage.register_modifier(func, priority) + table.insert(mcl_damage.modifiers, {func = func, priority = priority or 0}) +end + +function mcl_damage.register_on_damage(func) + table.insert(mcl_damage.damage_callbacks, func) +end + +function mcl_damage.register_on_death(func) + table.insert(mcl_damage.death_callbacks, func) +end + +function mcl_damage.run_modifiers(obj, damage, reason) + for _, modf in ipairs(mcl_damage.modifiers) do + damage = modf.func(obj, damage, reason) or damage + if damage == 0 then + return 0 + end + end + + return damage +end + +local function run_callbacks(funcs, ...) + for _, func in pairs(funcs) do + func(...) + end +end + +function mcl_damage.run_damage_callbacks(obj, damage, reason) + run_callbacks(mcl_damage.damage_callbacks, obj, damage, reason) +end + +function mcl_damage.run_death_callbacks(obj, reason) + run_callbacks(mcl_damage.death_callbacks, obj, reason) +end + +function mcl_damage.from_punch(mcl_reason, object) + mcl_reason.direct = object + local luaentity = mcl_reason.direct:get_luaentity() + if luaentity then + if luaentity._is_arrow then + mcl_reason.type = "arrow" + elseif luaentity._is_fireball then + mcl_reason.type = "fireball" + elseif luaentity._cmi_is_mob then + mcl_reason.type = "mob" + end + mcl_reason.source = mcl_reason.source or luaentity._source_object + else + mcl_reason.type = "player" + end +end + +function mcl_damage.finish_reason(mcl_reason) + mcl_reason.source = mcl_reason.source or mcl_reason.direct + mcl_reason.flags = mcl_damage.types[mcl_reason.type] +end + +function mcl_damage.from_mt(mt_reason) + if mt_reason._mcl_chached_reason then + return mt_reason._mcl_chached_reason + end + + local mcl_reason + + if mt_reason._mcl_reason then + mcl_reason = mt_reason._mcl_reason + else + mcl_reason = {type = "generic"} + + if mt_reason._mcl_type then + mcl_reason.type = mt_reason._mcl_type + elseif mt_reason.type == "fall" then + mcl_reason.type = "fall" + elseif mt_reason.type == "drown" then + mcl_reason.type = "drown" + elseif mt_reason.type == "punch" then + mcl_damage.from_punch(mcl_reason, mt_reason.object) + elseif mt_reason.type == "node_damage" and mt_reason.node then + if minetest.get_item_group(mt_reason.node, "fire") > 0 then + mcl_reason.type = "in_fire" + end + if minetest.get_item_group(mt_reason.node, "lava") > 0 then + mcl_reason.type = "lava" + end + end + + for key, value in pairs(mt_reason) do + if key:find("_mcl_") == 1 then + mcl_reason[key:sub(6, #key)] = value + end + end + end + + mcl_damage.finish_reason(mcl_reason) + mt_reason._mcl_cached_reason = mcl_reason + + return mcl_reason +end + +function mcl_damage.register_type(name, def) + mcl_damage.types[name] = def +end + +minetest.register_on_player_hpchange(function(player, hp_change, mt_reason) + if hp_change < 0 then + if player:get_hp() <= 0 then + return 0 + end + hp_change = -mcl_damage.run_modifiers(player, -hp_change, mcl_damage.from_mt(mt_reason)) + end + return hp_change +end, true) + +minetest.register_on_player_hpchange(function(player, hp_change, mt_reason) + if hp_change < 0 then + mcl_damage.run_damage_callbacks(player, -hp_change, mcl_damage.from_mt(mt_reason)) + end +end, false) + +minetest.register_on_dieplayer(function(player, mt_reason) + mcl_damage.run_death_callbacks(player, mcl_damage.from_mt(mt_reason)) +end) + +minetest.register_on_mods_loaded(function() + table.sort(mcl_damage.modifiers, function(a, b) return a.priority < b.priority end) +end) + diff --git a/mods/CORE/mcl_damage/mod.conf b/mods/CORE/mcl_damage/mod.conf new file mode 100644 index 000000000..c7d96395e --- /dev/null +++ b/mods/CORE/mcl_damage/mod.conf @@ -0,0 +1,3 @@ +name = mcl_damage +author = Fleckenstein +description = Minecraft-like damage reason system diff --git a/mods/CORE/mcl_explosions/init.lua b/mods/CORE/mcl_explosions/init.lua index 34375248e..e59e3ea12 100644 --- a/mods/CORE/mcl_explosions/init.lua +++ b/mods/CORE/mcl_explosions/init.lua @@ -12,7 +12,6 @@ under the LGPLv2.1 license. mcl_explosions = {} -local mod_death_messages = minetest.get_modpath("mcl_death_messages") ~= nil local mod_fire = minetest.get_modpath("mcl_fire") ~= nil local CONTENT_FIRE = minetest.get_content_id("mcl_fire:fire") @@ -150,7 +149,8 @@ end -- raydirs - The directions for each ray -- radius - The maximum distance each ray will go -- info - Table containing information about explosion --- puncher - object that punches other objects (optional) +-- direct - direct source object of the damage (optional) +-- source - indirect source object of the damage (optional) -- -- Values in info: -- drop_chance - The chance that destroyed nodes will drop their items @@ -165,7 +165,7 @@ end -- Note that this function has been optimized, it contains code which has been -- inlined to avoid function calls and unnecessary table creation. This was -- measured to give a significant performance increase. -local function trace_explode(pos, strength, raydirs, radius, info, puncher) +local function trace_explode(pos, strength, raydirs, radius, info, direct, source) local vm = get_voxel_manip() local emin, emax = vm:read_from_map(vector.subtract(pos, radius), @@ -212,7 +212,7 @@ local function trace_explode(pos, strength, raydirs, radius, info, puncher) npos_x - emin_x + 1 local cid = data[idx] - local br = node_blastres[cid] + local br = node_blastres[cid] or INDESTRUCT_BLASTRES if br < INDESTRUCT_BLASTRES and br > max_blast_resistance then br = max_blast_resistance end @@ -247,7 +247,7 @@ local function trace_explode(pos, strength, raydirs, radius, info, puncher) local ent = obj:get_luaentity() -- Ignore items to lower lag - if obj:is_player() or (ent and ent.name ~= '__builtin.item') then + if (obj:is_player() or (ent and ent.name ~= '__builtin.item')) and obj:get_hp() > 0 then local opos = obj:get_pos() local collisionbox = nil @@ -321,7 +321,6 @@ local function trace_explode(pos, strength, raydirs, radius, info, puncher) impact = 0 end local damage = math.floor((impact * impact + impact) * 7 * strength + 1) - local source = puncher or obj local sleep_formspec_doesnt_close_mt53 = false if obj:is_player() then @@ -333,26 +332,22 @@ local function trace_explode(pos, strength, raydirs, radius, info, puncher) sleep_formspec_doesnt_close_mt53 = true end end - if mod_death_messages then - mcl_death_messages.player_damage(obj, S("@1 was caught in an explosion.", name)) - end - if rawget(_G, "armor") and armor.last_damage_types then - armor.last_damage_types[name] = "explosion" - end end if sleep_formspec_doesnt_close_mt53 then - minetest.after(0.3, function(obj, damage, impact, punch_dir) -- 0.2 is minimum delay for closing old formspec and open died formspec -- TODO: REMOVE THIS IN THE FUTURE - if not obj then return end - obj:punch(obj, 10, { damage_groups = { full_punch_interval = 1, fleshy = damage, knockback = impact * 20.0 } }, punch_dir) - obj:add_velocity(vector.multiply(punch_dir, impact * 20)) - end, obj, damage, impact, vector.new(punch_dir)) - else - obj:punch(source, 10, { damage_groups = { full_punch_interval = 1, fleshy = damage, knockback = impact * 20.0 } }, punch_dir) + minetest.after(0.3, function() -- 0.2 is minimum delay for closing old formspec and open died formspec -- TODO: REMOVE THIS IN THE FUTURE + if not obj:is_player() then + return + end + + mcl_util.deal_damage(obj, damage, {type = "explosion", direct = direct, source = source}) - if obj:is_player() then obj:add_velocity(vector.multiply(punch_dir, impact * 20)) - elseif ent.tnt_knockback then + end) + else + mcl_util.deal_damage(obj, damage, {type = "explosion", direct = direct, source = source}) + + if obj:is_player() or ent.tnt_knockback then obj:add_velocity(vector.multiply(punch_dir, impact * 20)) end end @@ -422,7 +417,8 @@ end -- pos - The position where the explosion originates from -- strength - The blast strength of the explosion (a TNT explosion uses 4) -- info - Table containing information about explosion --- puncher - object that is reported as source of punches/damage (optional) +-- direct - direct source object of the damage (optional) +-- source - indirect source object of the damage (optional) -- -- Values in info: -- drop_chance - If specified becomes the drop chance of all nodes in the @@ -436,7 +432,7 @@ end -- griefing - If true, the explosion will destroy nodes (default: true) -- grief_protected - If true, the explosion will also destroy nodes which have -- been protected (default: false) -function mcl_explosions.explode(pos, strength, info, puncher) +function mcl_explosions.explode(pos, strength, info, direct, source) if info == nil then info = {} end @@ -465,7 +461,7 @@ function mcl_explosions.explode(pos, strength, info, puncher) info.drop_chance = 0 end - trace_explode(pos, strength, shape, radius, info, puncher) + trace_explode(pos, strength, shape, radius, info, direct, source) if info.particles then add_particles(pos, radius) diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_sponge1.png b/mods/CORE/mcl_particles/textures/mcl_particles_sponge1.png new file mode 100644 index 0000000000000000000000000000000000000000..e8099a41a910f1895983574686a6a052c6033967 GIT binary patch literal 1174 zcmV;H1Zn$;P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3vrlH)22h5u_6vjimZ5X-?Bs_qW%^5@`SchX5` z(uqw4unf{cAJ9$h|NlDu!6PmU`H(E;7#$v;eU^fbxyw_wnw{V3`QrA@jh&7U0+XWE z%d5p{Z?Fr-%e2?&r@$Vr9OX7YEVm!ZbR;$d>=9=me44w{-~ZRq~h@mg(r*JMBXSnxrYKLv2H$ zjvs45>rsosG2VIW2h?8kMJZ?rxrBb+^ZNXGrkr-^6Zs9&qsKqkuSnCD(EWpcBNUJJ zp`F8*ovx8?+^!`q3c6&RG^iNln8`7Qfe81R z)UYLZFW;ZRRY5RpX*MjdxMg?%{w46&=F$zcVqidfIl!FO=>RE$f&ei%DxO_r4IJ4e z5lYNRqybQYbWtx0uy6>nLZo=r2sk(eh>bakx1kc`V#Y-X5J4kp0-LM_u)Gi0Kgk>R zPzf4*2qA_PEaXt4#&N=8OmW<(C28_0q?l5&lv5#7^A;>xGP7(YOIF;tA>%w|%Q=^V zpaq@_W)}=7WsyY}zl0?&X|W|Qr3zK8zJ?lWs#bF?tE{@>9ItUrtF3u0jT^R7^DVU4 zQnQv@>DX#ryYHdLp1So+y&Tjg*1PfxYCNgQMrsU92Q^qz+FkItPQqXYV&WOV(;&b~ zB7>PT_Fe|L!3=+hS~`eBMtA(lyluPT{x5|7YJj+z-TN&){-CYBDrG96kEP6( zK9({kk~>Kf{YuIcX_QZrMDIztmqzz#duuBQy(!@?OZ2If-4i`p)H`XThr8 zo0fjq@xS&+pCJ3Eqh}I-l1g%tB>Gs&bU@`KN%XOllg`?a6na6*OA<*=l0?6`;GboS z+)0w?V<~eYxsxQ(DcgEpBd18(?j!tTlj$#nTI!kzyWHCV000JJOGiWizW`(aO0om* z$N&HU32;bRa{vG?BLDy{BLR4&KXw2B00(qQO+^Rg1RMz&F`ym%+W-In8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b09#2!K~y-)WBmB;(SHU6VB{B)V;}`E zF;EC7Hh>Y$3vj?MB*#dM0W7#AKE8VdGYG3V^}K*)IzjJH-vwwU{wL&8^e|z;qY0P6 ojDsv8;fV#tA(9txC1GL#03<*mBJyKFr2qf`07*qoM6N<$f_Rz|!2kdN literal 0 HcmV?d00001 diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_sponge2.png b/mods/CORE/mcl_particles/textures/mcl_particles_sponge2.png new file mode 100644 index 0000000000000000000000000000000000000000..0004ce4db521864ca990ae99a2abe1da0dae5258 GIT binary patch literal 1149 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 Qg8%>k07*qoM6N<$f;cw~MF0Q* literal 0 HcmV?d00001 diff --git a/mods/CORE/mcl_particles/textures/mcl_particles_sponge5.png b/mods/CORE/mcl_particles/textures/mcl_particles_sponge5.png new file mode 100644 index 0000000000000000000000000000000000000000..5278caff34222b7aadf4a25610dfff2e1c1ba03f GIT binary patch literal 1170 zcmV;D1a13?P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1YumfRo={MRXR1SB?b9L(}wZjj@rz}VA0nZ=W~ zc}7^4r9vgqP3_O`PQP%8Nr9Y?8d3-bmrE{5#zM`0x0s;>(XcfmMu=O0+L=lS2 zNTh@Z=U~I=un=MxCu)v1y69twF=|XPlUjA^HE2}Tq&Z2lIB|VKKPF8n<&2;i zo-@AAFvxk6&2Db=dODM5uNhMdQwxW+~sIh8IH8*Z3rRJJ%p~a>x zwcJr^-FDY~4?TA6iF!U+TeSW&e!v08VfC4Fk}Lx}V}lxz8?S3Mk(uB7LRN4k{Y3!cc_0Av74vIFnP z00009a7bBm001r{001r{0eGc9b^rhX2XskIMF-^s90?m1Hz6xB0000PbVXQnLvL+u zWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbNSV=@dR5;6H{P^zCe+C3#V0_M}Ngxsg=;?$7O&%pt k4UvRID4qwu7brFW00eUtCx 0 then + uses = armor_uses + if unbreaking_level > 0 then + uses = uses / (0.6 + 0.4 / (unbreaking_level + 1)) + end + else + local def = itemstack:get_definition() + if def then + local fixed_uses = def._mcl_uses + if fixed_uses then + uses = fixed_uses + if unbreaking_level > 0 then + uses = uses * (unbreaking_level + 1) + end + end + end + if not uses then + local toolcaps = itemstack:get_tool_capabilities() + local groupcaps = toolcaps.groupcaps + for _, v in pairs(groupcaps) do + uses = v.uses + break + end + end + end + + return uses or 0 +end + +function mcl_util.use_item_durability(itemstack, n) + local uses = mcl_util.calculate_durability(itemstack) + itemstack:add_wear(65535 / uses * n) +end + +function mcl_util.deal_damage(target, damage, mcl_reason) + local luaentity = target:get_luaentity() + + if luaentity then + if luaentity.deal_damage then + luaentity:deal_damage(damage, mcl_reason or {type = "generic"}) + return + elseif luaentity._cmi_is_mob then + -- local puncher = mcl_reason and mcl_reason.direct or target + -- target:punch(puncher, 1.0, {full_punch_interval = 1.0, damage_groups = {fleshy = damage}}, vector.direction(puncher:get_pos(), target:get_pos()), damage) + luaentity.health = luaentity.health - damage + return + end + end + + target:set_hp(target:get_hp() - damage, {_mcl_reason = mcl_reason}) +end + +function mcl_util.get_hp(obj) + local luaentity = obj:get_luaentity() + + if luaentity and luaentity._cmi_is_mob then + return luaentity.health + else + return obj:get_hp() + end +end + +function mcl_util.get_inventory(object, create) + if object:is_player() then + return object:get_inventory() + else + local luaentity = object:get_luaentity() + local inventory = luaentity.inventory + + if create and not inventory and luaentity.create_inventory then + inventory = luaentity:create_inventory() + end + + return inventory + end +end + +function mcl_util.get_wielded_item(object) + if object:is_player() then + return object:get_wielded_item() + else + -- ToDo: implement getting wielditems from mobs as soon as mobs have wielditems + return ItemStack() + end +end + +function mcl_util.get_object_name(object) + if object:is_player() then + return object:get_player_name() + else + local luaentity = object:get_luaentity() + + if not luaentity then + return "" + end + + return luaentity.nametag and luaentity.nametag ~= "" and luaentity.nametag or luaentity.description or luaentity.name + end +end diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index 38e73565b..5facec28a 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -188,7 +188,7 @@ function boat.on_punch(self, puncher, time_from_last_punch, tool_capabilities, d end function boat.on_step(self, dtime, moveresult) - mcl_burning.tick(self.object, dtime) + mcl_burning.tick(self.object, dtime, self) self._v = get_v(self.object:get_velocity()) * get_sign(self._v) local v_factor = 1 @@ -394,7 +394,7 @@ for b=1, #boat_ids do if b == 1 then help = true longdesc = S("Boats are used to travel on the surface of water.") - usagehelp = S("Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.") + usagehelp = S("Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.") helpname = S("Boat") end tt_help = S("Water vehicle") diff --git a/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr b/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr index 95066b530..c1864a871 100644 --- a/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr +++ b/mods/ENTITIES/mcl_boats/locale/mcl_boats.de.tr @@ -6,6 +6,7 @@ Boats are used to travel on the surface of water.=Boote werden benutzt, um sich Dark Oak Boat=Schwarzeichenboot Jungle Boat=Dschungelboot Oak Boat=Eichenboot -Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Rechtsklicken Sie auf eine Wasserquelle, um das Boot zu platzieren. Rechtsklicken Sie auf das Boot, um es zu betreten. Mit [Links] und [Rechts] lenken, mit [Vorwärts] und [Rückwärts] Geschwindigkeit regeln oder rückwärts fahren. Rechtsklicken Sie erneut auf das Boot, um es zu verlassen, schlagen Sie das Boot, um es als Gegenstand fallen zu lassen. +Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.=Rechtsklicken Sie auf eine Wasserquelle, um das Boot zu platzieren. Rechtsklicken Sie auf das Boot, um es zu betreten. Mit [Links] und [Rechts] lenken, mit [Vorwärts] und [Rückwärts] Geschwindigkeit regeln oder rückwärts fahren. Nutzen sie [Schleichen], um das Boot zu verlassen, schlagen Sie das Boot, um es als Gegenstand fallen zu lassen. Spruce Boat=Fichtenboot Water vehicle=Wasserfahrzeug +Sneak to dismount=Zum Aussteigen schleichen diff --git a/mods/ENTITIES/mcl_boats/locale/template.txt b/mods/ENTITIES/mcl_boats/locale/template.txt index 54f1fd646..ac52bc19f 100644 --- a/mods/ENTITIES/mcl_boats/locale/template.txt +++ b/mods/ENTITIES/mcl_boats/locale/template.txt @@ -6,6 +6,7 @@ Boats are used to travel on the surface of water.= Dark Oak Boat= Jungle Boat= Oak Boat= -Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.= +Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.= Spruce Boat= Water vehicle= +Sneak to dismount= diff --git a/mods/ENTITIES/mcl_burning/api.lua b/mods/ENTITIES/mcl_burning/api.lua index b08a0fb70..78814a2c7 100644 --- a/mods/ENTITIES/mcl_burning/api.lua +++ b/mods/ENTITIES/mcl_burning/api.lua @@ -1,184 +1,88 @@ local S = minetest.get_translator("mcl_burning") -function mcl_burning.get_default(datatype) - local default_table = {string = "", float = 0.0, int = 0, bool = false} - return default_table[datatype] -end - -function mcl_burning.get(obj, datatype, name) - local key - if obj:is_player() then - local meta = obj:get_meta() - return meta["get_" .. datatype](meta, "mcl_burning:" .. name) - else - local luaentity = obj:get_luaentity() - return luaentity and luaentity["mcl_burning_" .. name] or mcl_burning.get_default(datatype) - end -end - -function mcl_burning.set(obj, datatype, name, value) - if obj:is_player() then - local meta = obj:get_meta() - meta["set_" .. datatype](meta, "mcl_burning:" .. name, value or mcl_burning.get_default(datatype)) - else - local luaentity = obj:get_luaentity() - if mcl_burning.get_default(datatype) == value then - value = nil - end - luaentity["mcl_burning_" .. name] = value - end +function mcl_burning.get_storage(obj) + return obj:is_player() and mcl_burning.storage[obj] or obj:get_luaentity() end function mcl_burning.is_burning(obj) - return mcl_burning.get(obj, "float", "burn_time") > 0 + return mcl_burning.get_storage(obj).burn_time end function mcl_burning.is_affected_by_rain(obj) - return mcl_weather and mcl_weather.get_weather() == "rain" and mcl_weather.is_outdoor(obj:get_pos()) + return mcl_weather.get_weather() == "rain" and mcl_weather.is_outdoor(obj:get_pos()) end -function mcl_burning.get_collisionbox(obj, smaller) - local box = obj:get_properties().collisionbox - local minp, maxp = vector.new(box[1], box[2], box[3]), vector.new(box[4], box[5], box[6]) - if smaller then +function mcl_burning.get_collisionbox(obj, smaller, storage) + local cache = storage.collisionbox_cache + if cache then + local box = cache[smaller and 2 or 1] + return box[1], box[2] + else + local box = obj:get_properties().collisionbox + local minp, maxp = vector.new(box[1], box[2], box[3]), vector.new(box[4], box[5], box[6]) local s_vec = vector.new(0.1, 0.1, 0.1) - minp = vector.add(minp, s_vec) - maxp = vector.subtract(maxp, s_vec) + local s_minp = vector.add(minp, s_vec) + local s_maxp = vector.subtract(maxp, s_vec) + storage.collisionbox_cache = {{minp, maxp}, {s_minp, s_maxp}} + return minp, maxp end - return minp, maxp end -function mcl_burning.get_touching_nodes(obj, nodenames) +function mcl_burning.get_touching_nodes(obj, nodenames, storage) local pos = obj:get_pos() - local box = obj:get_properties().collisionbox - local minp, maxp = mcl_burning.get_collisionbox(obj, true) + local minp, maxp = mcl_burning.get_collisionbox(obj, true, storage) local nodes = minetest.find_nodes_in_area(vector.add(pos, minp), vector.add(pos, maxp), nodenames) return nodes end -function mcl_burning.get_highest_group_value(obj, groupname) - local nodes = mcl_burning.get_touching_nodes(obj, "group:" .. groupname, true) - local highest_group_value = 0 - - for _, pos in pairs(nodes) do - local node = minetest.get_node(pos) - local group_value = minetest.get_item_group(node.name, groupname) - if group_value > highest_group_value then - highest_group_value = group_value - end - end - - return highest_group_value -end - -function mcl_burning.damage(obj) - local luaentity = obj:get_luaentity() - local health - - if luaentity then - health = luaentity.health - end - - local hp = health or obj:get_hp() - - if hp <= 0 then - return - end - - local do_damage = true - - if obj:is_player() then - if mcl_potions.player_has_effect(obj, "fire_proof") then - do_damage = false - else - local name = obj:get_player_name() - armor.last_damage_types[name] = "fire" - local deathmsg = S("@1 burned to death.", name) - local reason = mcl_burning.get(obj, "string", "reason") - if reason ~= "" then - deathmsg = S("@1 was burned by @2.", name, reason) - end - mcl_death_messages.player_damage(obj, deathmsg) - end - else - if luaentity.fire_damage_resistant then - do_damage = false - end - end - - if do_damage then - local new_hp = hp - 1 - if health then - luaentity.health = new_hp - else - obj:set_hp(new_hp) - end - end -end - -function mcl_burning.set_on_fire(obj, burn_time, reason) +function mcl_burning.set_on_fire(obj, burn_time) if obj:get_hp() < 0 then return end + local storage = mcl_burning.get_storage(obj) + local luaentity = obj:get_luaentity() if luaentity and luaentity.fire_resistant then return end - local old_burn_time = mcl_burning.get(obj, "float", "burn_time") - local max_fire_prot_lvl = 0 + if obj:is_player() and minetest.is_creative_enabled(obj:get_player_name()) then + burn_time = 0 + else + local max_fire_prot_lvl = 0 + local inv = mcl_util.get_inventory(obj) + local armor_list = inv and inv:get_list("armor") - if obj:is_player() then - if minetest.is_creative_enabled(obj:get_player_name()) then - burn_time = burn_time / 100 - end - - local inv = obj:get_inventory() - - for i = 2, 5 do - local stack = inv:get_stack("armor", i) - - local fire_prot_lvl = mcl_enchanting.get_enchantment(stack, "fire_protection") - max_fire_prot_lvl = math.max(max_fire_prot_lvl, fire_prot_lvl) - end - end - - if max_fire_prot_lvl > 0 then - burn_time = burn_time - math.floor(burn_time * max_fire_prot_lvl * 0.15) - end - - if old_burn_time <= burn_time then - --[[local sound_id = mcl_burning.get(obj, "int", "sound_id") - if sound_id == 0 then - sound_id = minetest.sound_play("fire_fire", { - object = obj, - gain = 0.18, - max_hear_distance = 16, - loop = true, - }) + 1 - end]]-- - - local hud_id - if obj:is_player() then - hud_id = mcl_burning.get(obj, "int", "hud_id") - if hud_id == 0 then - hud_id = obj:hud_add({ - hud_elem_type = "image", - position = {x = 0.5, y = 0.5}, - scale = {x = -100, y = -100}, - text = "mcl_burning_entity_flame_animated.png^[opacity:180^[verticalframe:" .. mcl_burning.animation_frames .. ":" .. 1, - z_index = 1000, - }) + 1 + if armor_list then + for _, stack in pairs(armor_list) do + local fire_prot_lvl = mcl_enchanting.get_enchantment(stack, "fire_protection") + if fire_prot_lvl > max_fire_prot_lvl then + max_fire_prot_lvl = fire_prot_lvl + end end end - mcl_burning.set(obj, "float", "burn_time", burn_time) - mcl_burning.set(obj, "string", "reason", reason) - mcl_burning.set(obj, "int", "hud_id", hud_id) - --mcl_burning.set(obj, "int", "sound_id", sound_id) + + if max_fire_prot_lvl > 0 then + burn_time = burn_time - math.floor(burn_time * max_fire_prot_lvl * 0.15) + end + end + + if not storage.burn_time or burn_time >= storage.burn_time then + if obj:is_player() and not storage.fire_hud_id then + storage.fire_hud_id = obj:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 0.5}, + scale = {x = -100, y = -100}, + text = "mcl_burning_entity_flame_animated.png^[opacity:180^[verticalframe:" .. mcl_burning.animation_frames .. ":" .. 1, + z_index = 1000, + }) + end + storage.burn_time = burn_time + storage.fire_damage_timer = 0 local fire_entity = minetest.add_entity(obj:get_pos(), "mcl_burning:fire") - local minp, maxp = mcl_burning.get_collisionbox(obj) + local minp, maxp = mcl_burning.get_collisionbox(obj, false, storage) local obj_size = obj:get_properties().visual_size local vertical_grow_factor = 1.2 @@ -192,111 +96,53 @@ function mcl_burning.set_on_fire(obj, burn_time, reason) fire_entity:set_properties({visual_size = size}) fire_entity:set_attach(obj, "", offset, {x = 0, y = 0, z = 0}) - mcl_burning.update_animation_frame(obj, fire_entity, 0) + local fire_luaentity = fire_entity:get_luaentity() + fire_luaentity:update_frame(obj, storage) + + for _, other in pairs(minetest.get_objects_inside_radius(fire_entity:get_pos(), 0)) do + local other_luaentity = other:get_luaentity() + if other_luaentity and other_luaentity.name == "mcl_burning:fire" and other_luaentity ~= fire_luaentity then + other:remove() + break + end + end end end function mcl_burning.extinguish(obj) if mcl_burning.is_burning(obj) then - --local sound_id = mcl_burning.get(obj, "int", "sound_id") - 1 - --minetest.sound_stop(sound_id) - + local storage = mcl_burning.get_storage(obj) if obj:is_player() then - local hud_id = mcl_burning.get(obj, "int", "hud_id") - 1 - obj:hud_remove(hud_id) - end - - mcl_burning.set(obj, "string", "reason") - mcl_burning.set(obj, "float", "burn_time") - mcl_burning.set(obj, "float", "damage_timer") - mcl_burning.set(obj, "int", "hud_id") - --mcl_burning.set(obj, "int", "sound_id") - end -end - -function mcl_burning.catch_fire_tick(obj, dtime) - if mcl_burning.is_affected_by_rain(obj) or #mcl_burning.get_touching_nodes(obj, "group:puts_out_fire") > 0 then - mcl_burning.extinguish(obj) - else - local set_on_fire_value = mcl_burning.get_highest_group_value(obj, "set_on_fire") - - if set_on_fire_value > 0 then - mcl_burning.set_on_fire(obj, set_on_fire_value) + if storage.fire_hud_id then + obj:hud_remove(storage.fire_hud_id) + end + mcl_burning.storage[obj] = {} + else + storage.burn_time = nil + storage.fire_damage_timer = nil end end end -function mcl_burning.tick(obj, dtime) - local burn_time = mcl_burning.get(obj, "float", "burn_time") - dtime +function mcl_burning.tick(obj, dtime, storage) + if storage.burn_time then + storage.burn_time = storage.burn_time - dtime - if burn_time <= 0 then - mcl_burning.extinguish(obj) - else - mcl_burning.set(obj, "float", "burn_time", burn_time) + if storage.burn_time <= 0 or mcl_burning.is_affected_by_rain(obj) or #mcl_burning.get_touching_nodes(obj, "group:puts_out_fire", storage) > 0 then + mcl_burning.extinguish(obj) + return true + else + storage.fire_damage_timer = storage.fire_damage_timer + dtime - local damage_timer = mcl_burning.get(obj, "float", "damage_timer") + dtime + if storage.fire_damage_timer >= 1 then + storage.fire_damage_timer = 0 - if damage_timer >= 1 then - damage_timer = 0 - mcl_burning.damage(obj) - end + local luaentity = obj:get_luaentity() - mcl_burning.set(obj, "float", "damage_timer", damage_timer) - end - - mcl_burning.catch_fire_tick(obj, dtime) -end - -function mcl_burning.update_animation_frame(obj, fire_entity, animation_frame) - local fire_texture = "mcl_burning_entity_flame_animated.png^[opacity:180^[verticalframe:" .. mcl_burning.animation_frames .. ":" .. animation_frame - local fire_HUD_texture = "mcl_burning_hud_flame_animated.png^[opacity:180^[verticalframe:" .. mcl_burning.animation_frames .. ":" .. animation_frame - fire_entity:set_properties({textures = {"blank.png", "blank.png", fire_texture, fire_texture, fire_texture, fire_texture}}) - if obj:is_player() then - local hud_id = mcl_burning.get(obj, "int", "hud_id") - 1 - obj:hud_change(hud_id, "text", fire_HUD_texture) - end -end - -function mcl_burning.fire_entity_step(self, dtime) - if self.removed then - return - end - - local obj = self.object - local parent = obj:get_attach() - local do_remove - - self.doing_step = true - - if not parent or not mcl_burning.is_burning(parent) then - do_remove = true - else - for _, other in pairs(minetest.get_objects_inside_radius(obj:get_pos(), 0)) do - local luaentity = obj:get_luaentity() - if luaentity and luaentity.name == "mcl_burning:fire" and not luaentity.doing_step and not luaentity.removed then - do_remove = true - break + if not luaentity or not luaentity.fire_damage_resistant then + mcl_util.deal_damage(obj, 1, {type = "on_fire"}) + end end end end - - self.doing_step = false - - if do_remove then - self.removed = true - obj:remove() - return - end - - local animation_timer = self.animation_timer + dtime - if animation_timer >= 0.015 then - animation_timer = 0 - local animation_frame = self.animation_frame + 1 - if animation_frame > mcl_burning.animation_frames - 1 then - animation_frame = 0 - end - mcl_burning.update_animation_frame(parent, obj, animation_frame) - self.animation_frame = animation_frame - end - self.animation_timer = animation_timer end diff --git a/mods/ENTITIES/mcl_burning/init.lua b/mods/ENTITIES/mcl_burning/init.lua index 6f1b0ef0d..e223b3566 100644 --- a/mods/ENTITIES/mcl_burning/init.lua +++ b/mods/ENTITIES/mcl_burning/init.lua @@ -2,11 +2,65 @@ local S = minetest.get_translator("mcl_burning") local modpath = minetest.get_modpath("mcl_burning") mcl_burning = { + storage = {}, animation_frames = tonumber(minetest.settings:get("fire_animation_frames")) or 8 } dofile(modpath .. "/api.lua") +minetest.register_globalstep(function(dtime) + for _, player in pairs(minetest.get_connected_players()) do + local storage = mcl_burning.storage[player] + if not mcl_burning.tick(player, dtime, storage) and not mcl_burning.is_affected_by_rain(player) then + local nodes = mcl_burning.get_touching_nodes(player, {"group:puts_out_fire", "group:set_on_fire"}, storage) + local burn_time = 0 + + for _, pos in pairs(nodes) do + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "puts_out_fire") > 0 then + burn_time = 0 + break + end + + local value = minetest.get_item_group(node.name, "set_on_fire") + if value > burn_time then + burn_time = value + end + end + + if burn_time > 0 then + mcl_burning.set_on_fire(player, burn_time) + end + end + end +end) + +minetest.register_on_respawnplayer(function(player) + mcl_burning.extinguish(player) +end) + +minetest.register_on_joinplayer(function(player) + local storage + + local burn_data = player:get_meta():get_string("mcl_burning:data") + if burn_data == "" then + storage = {} + else + storage = minetest.deserialize(burn_data) + end + + mcl_burning.storage[player] = storage +end) + +minetest.register_on_leaveplayer(function(player) + local storage = mcl_burning.storage[player] + storage.fire_hud_id = nil + player:get_meta():set_string("mcl_burning:data", minetest.serialize(storage)) + + mcl_burning.storage[player] = nil +end) + + minetest.register_entity("mcl_burning:fire", { initial_properties = { physical = false, @@ -18,21 +72,45 @@ minetest.register_entity("mcl_burning:fire", { animation_frame = 0, animation_timer = 0, - on_step = mcl_burning.fire_entity_step, -}) -minetest.register_globalstep(function(dtime) - for _, player in pairs(minetest.get_connected_players()) do - if player:get_meta():get_float("mcl_burning:burn_time") > 0 then - mcl_burning.tick(player, dtime) + on_step = function(self, dtime) + local parent, storage = self:sanity_check() + + if parent then + self.animation_timer = self.animation_timer + dtime + if self.animation_timer >= 0.1 then + self.animation_timer = 0 + self.animation_frame = self.animation_frame + 1 + if self.animation_frame > mcl_burning.animation_frames - 1 then + self.animation_frame = 0 + end + self:update_frame(parent, storage) + end + else + self.object:remove() end - end -end) + end, + sanity_check = function(self) + local parent = self.object:get_attach() -minetest.register_on_respawnplayer(function(player) - mcl_burning.extinguish(player) -end) + if not parent then + return + end -minetest.register_on_leaveplayer(function(player) - mcl_burning.set(player, "int", "hud_id") -end) + local storage = mcl_burning.get_storage(parent) + + if not storage or not storage.burn_time then + return + end + + return parent, storage + end, + update_frame = function(self, parent, storage) + local frame_overlay = "^[opacity:180^[verticalframe:" .. mcl_burning.animation_frames .. ":" .. self.animation_frame + local fire_texture = "mcl_burning_entity_flame_animated.png" .. frame_overlay + self.object:set_properties({textures = {"blank.png", "blank.png", fire_texture, fire_texture, fire_texture, fire_texture}}) + if parent:is_player() then + parent:hud_change(storage.fire_hud_id, "text", "mcl_burning_hud_flame_animated.png" .. frame_overlay) + end + end, +}) diff --git a/mods/ENTITIES/mcl_falling_nodes/init.lua b/mods/ENTITIES/mcl_falling_nodes/init.lua index 6e69f8911..af2c06703 100644 --- a/mods/ENTITIES/mcl_falling_nodes/init.lua +++ b/mods/ENTITIES/mcl_falling_nodes/init.lua @@ -1,9 +1,6 @@ local S = minetest.get_translator("mcl_falling_nodes") -local dmes = minetest.get_modpath("mcl_death_messages") ~= nil local has_mcl_armor = minetest.get_modpath("mcl_armor") -local is_creative_enabled = minetest.is_creative_enabled - local get_falling_depth = function(self) if not self._startpos then -- Fallback @@ -23,80 +20,31 @@ local deal_falling_damage = function(self, dtime) -- Fallback self._startpos = pos end - local objs = minetest.get_objects_inside_radius(pos, 1) - for _,v in ipairs(objs) do - if v:is_player() then - local hp = v:get_hp() - local name = v:get_player_name() - if hp ~= 0 then - if not self._hit_players then - self._hit_players = {} - end - local hit = false - for _,v in ipairs(self._hit_players) do - if name == v then - hit = true + self._hit = self._hit or {} + for _, obj in ipairs(minetest.get_objects_inside_radius(pos, 1)) do + if mcl_util.get_hp(obj) > 0 and not self._hit[obj] then + self._hit[obj] = true + local way = self._startpos.y - pos.y + local damage = (way - 1) * 2 + damage = math.min(40, math.max(0, damage)) + if damage >= 1 then + -- Reduce damage if wearing a helmet + local inv = mcl_util.get_inventory(obj) + if inv then + local helmet = inv:get_stack("armor", 2) + if minetest.get_item_group(helmet:get_name(), "combat_armor") > 0 then + damage = damage / 4 * 3 + mcl_util.use_item_durability(helmet, 1) + inv:set_stack("armor", 2, helmet) end end - if not hit then - table.insert(self._hit_players, name) - local way = self._startpos.y - pos.y - local damage = (way - 1) * 2 - damage = math.min(40, math.max(0, damage)) - if damage >= 1 then - hp = hp - damage - if hp < 0 then - hp = 0 - end - -- Reduce damage if wearing a helmet - local inv = v:get_inventory() - local helmet = inv:get_stack("armor", 2) - if has_mcl_armor and not helmet:is_empty() then - hp = hp/4*3 - if not is_creative_enabled(name) then - helmet:add_wear(65535/helmet:get_definition().groups.mcl_armor_uses) --TODO: be sure damage is exactly like mc (informations are missing in the mc wiki) - inv:set_stack("armor", 2, helmet) - end - end - local msg - if minetest.get_item_group(self.node.name, "anvil") ~= 0 then - msg = S("@1 was smashed by a falling anvil.", v:get_player_name()) - else - msg = S("@1 was smashed by a falling block.", v:get_player_name()) - end - if dmes then - mcl_death_messages.player_damage(v, msg) - end - v:set_hp(hp, { type = "punch", from = "mod" }) - end - end - end - else - local hp = v:get_luaentity().health - if hp and hp ~= 0 then - if not self._hit_mobs then - self._hit_mobs = {} - end - local hit = false - for _,mob in ipairs(self._hit_mobs) do - if v == mob then - hit = true - end - end - --TODO: reduce damage for mobs then they will be able to wear armor - if not hit then - table.insert(self._hit_mobs, v) - local way = self._startpos.y - pos.y - local damage = (way - 1) * 2 - damage = math.min(40, math.max(0, damage)) - if damage >= 1 then - hp = hp - damage - if hp < 0 then - hp = 0 - end - v:get_luaentity().health = hp - end + local deathmsg, dmg_type + if minetest.get_item_group(self.node.name, "anvil") ~= 0 then + dmg_type = "anvil" + else + dmg_type = "falling_node" end + mcl_util.deal_damage(obj, damage, {type = dmg_type}) end end end @@ -166,7 +114,7 @@ minetest.register_entity(":__builtin:falling_node", { on_activate = function(self, staticdata) self.object:set_armor_groups({immortal = 1}) - + local ds = minetest.deserialize(staticdata) if ds then self._startpos = ds._startpos @@ -200,7 +148,7 @@ minetest.register_entity(":__builtin:falling_node", { local np = {x = pos.x, y = pos.y + 0.3, z = pos.z} local n2 = minetest.get_node(np) if n2.name == "mcl_portals:portal_end" then - -- TODO: Teleport falling node. + -- TODO: Teleport falling node. self.object:remove() return end @@ -239,7 +187,7 @@ minetest.register_entity(":__builtin:falling_node", { end local nd = minetest.registered_nodes[n2.name] if n2.name == "mcl_portals:portal_end" then - -- TODO: Teleport falling node. + -- TODO: Teleport falling node. elseif (nd and nd.buildable_to == true) or minetest.get_item_group(self.node.name, "crush_after_fall") ~= 0 then -- Replace destination node if it's buildable to diff --git a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr index 4d9b6c2ff..1d270ee6c 100644 --- a/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr +++ b/mods/ENTITIES/mcl_minecarts/locale/mcl_minecarts.de.tr @@ -33,3 +33,4 @@ Activates minecarts when powered=Aktiviert Loren, wenn bestromt Emits redstone power when a minecart is detected=Gibt ein Redstonesignal aus, wenn eine Lore erfasst wird Vehicle for fast travel on rails=Fahrzeug zum schnellen Transport auf Schienen Can be ignited by tools or powered activator rail=Kann mit Werkzeugen oder bestromten Aktivierungsschienen angezündet werden +Sneak to dismount=Zum Aussteigen schleichen diff --git a/mods/ENTITIES/mcl_mobs/api.txt b/mods/ENTITIES/mcl_mobs/api.txt index eda74aeb4..2d8cef5b0 100644 --- a/mods/ENTITIES/mcl_mobs/api.txt +++ b/mods/ENTITIES/mcl_mobs/api.txt @@ -502,20 +502,6 @@ and damages any entity caught inside the blast radius. Protection will limit node destruction but not entity damage. -mobs:capture_mob ----------------- - -mobs:capture_mob(...) - -Does nothing and returns false. - -This function is provided for compability with Mobs Redo for an attempt to -capture a mob. -Mobs cannot be captured in MineClone 2. - -In Mobs Redo, this is generally called inside the on_rightclick section of the mob -api code, it provides a chance of capturing the mob. See Mobs Redo documentation -of parameters. Feeding and Taming/Breeding --------------------------- @@ -535,19 +521,6 @@ Will return true when mob is fed with item it likes. them up -Protecting Mobs ---------------- - -mobs:protect(self, clicker) - -This function can be used to right-click any tamed mob with mobs:protector item, -this will protect the mob from harm inside of a protected area from other -players. Will return true when mob right-clicked with mobs:protector item. - - 'self' mob information - 'clicker' player information - - Riding Mobs ----------- @@ -605,7 +578,7 @@ Note: animation names above are from the pre-defined animation lists inside mob registry without extensions. -mobs:set_animation(self, name) +mobs.set_mob_animation(self, name) This function sets the current animation for mob, defaulting to "stand" if not found. @@ -781,8 +754,5 @@ mobs:register_mob("mob_horse:horse", { inv:remove_item("main", "mobs:saddle") end end - - -- used to capture horse with magic lasso - mobs:capture_mob(self, clicker, 0, 0, 80, false, nil) end }) diff --git a/mods/ENTITIES/mcl_mobs/api/api.lua b/mods/ENTITIES/mcl_mobs/api/api.lua new file mode 100644 index 000000000..d413bae72 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/api.lua @@ -0,0 +1,761 @@ +-- API for Mobs Redo: MineClone 2 Delux 2.0 DRM Free Early Access Super Extreme Edition + +-- mobs library +mobs = {} + +-- lua locals - can grab from this to easily plop them into the api lua files + +--localize minetest functions +local minetest_settings = minetest.settings +local minetest_get_objects_inside_radius = minetest.get_objects_inside_radius +local minetest_get_modpath = minetest.get_modpath +local minetest_registered_nodes = minetest.registered_nodes +local minetest_get_node = minetest.get_node +local minetest_get_item_group = minetest.get_item_group +local minetest_registered_entities = minetest.registered_entities +local minetest_line_of_sight = minetest.line_of_sight +local minetest_after = minetest.after +local minetest_sound_play = minetest.sound_play +local minetest_add_particlespawner = minetest.add_particlespawner +local minetest_registered_items = minetest.registered_items +local minetest_set_node = minetest.set_node +local minetest_add_item = minetest.add_item +local minetest_get_craft_result = minetest.get_craft_result +local minetest_find_path = minetest.find_path +local minetest_is_protected = minetest.is_protected +local minetest_is_creative_enabled = minetest.is_creative_enabled +local minetest_find_node_near = minetest.find_node_near +local minetest_find_nodes_in_area_under_air = minetest.find_nodes_in_area_under_air +local minetest_raycast = minetest.raycast +local minetest_get_us_time = minetest.get_us_time +local minetest_add_entity = minetest.add_entity +local minetest_get_natural_light = minetest.get_natural_light +local minetest_get_node_or_nil = minetest.get_node_or_nil + +-- localize math functions +local math_pi = math.pi +local math_sin = math.sin +local math_cos = math.cos +local math_abs = math.abs +local math_min = math.min +local math_max = math.max +local math_atan = math.atan +local math_random = math.random +local math_floor = math.floor + +-- localize vector functions +local vector_new = vector.new +local vector_add = vector.add +local vector_length = vector.length +local vector_direction = vector.direction +local vector_normalize = vector.normalize +local vector_multiply = vector.multiply +local vector_divide = vector.divide + +-- mob constants +local BREED_TIME = 30 +local BREED_TIME_AGAIN = 300 +local CHILD_GROW_TIME = 60*20 +local DEATH_DELAY = 0.5 +local DEFAULT_FALL_SPEED = -10 +local FLOP_HEIGHT = 5.0 +local FLOP_HOR_SPEED = 1.5 +local GRAVITY = minetest_settings:get("movement_gravity")-- + 9.81 + + +local MOB_CAP = {} +MOB_CAP.hostile = 70 +MOB_CAP.passive = 10 +MOB_CAP.ambient = 15 +MOB_CAP.water = 15 + +-- Load main settings +local damage_enabled = minetest_settings:get_bool("enable_damage") +local disable_blood = minetest_settings:get_bool("mobs_disable_blood") +local mobs_drop_items = minetest_settings:get_bool("mobs_drop_items") ~= false +local mobs_griefing = minetest_settings:get_bool("mobs_griefing") ~= false +local spawn_protected = minetest_settings:get_bool("mobs_spawn_protected") ~= false +local remove_far = true +local difficulty = tonumber(minetest_settings:get("mob_difficulty")) or 1.0 +local show_health = false +local max_per_block = tonumber(minetest_settings:get("max_objects_per_block") or 64) +local mobs_spawn_chance = tonumber(minetest_settings:get("mobs_spawn_chance") or 2.5) + +-- pathfinding settings +local enable_pathfinding = true +local stuck_timeout = 3 -- how long before mob gets stuck in place and starts searching +local stuck_path_timeout = 10 -- how long will mob follow path before giving up + +-- default nodes +local node_ice = "mcl_core:ice" +local node_snowblock = "mcl_core:snowblock" +local node_snow = "mcl_core:snow" +mobs.fallback_node = minetest.registered_aliases["mapgen_dirt"] or "mcl_core:dirt" + +local mod_weather = minetest_get_modpath("mcl_weather") ~= nil +local mod_explosions = minetest_get_modpath("mcl_explosions") ~= nil +local mod_mobspawners = minetest_get_modpath("mcl_mobspawners") ~= nil +local mod_hunger = minetest_get_modpath("mcl_hunger") ~= nil +local mod_worlds = minetest_get_modpath("mcl_worlds") ~= nil +local mod_armor = minetest_get_modpath("mcl_armor") ~= nil +local mod_experience = minetest_get_modpath("mcl_experience") ~= nil + + +-- random locals I found +local los_switcher = false +local height_switcher = false + +-- Get translator +local S = minetest.get_translator("mcl_mobs") + +-- CMI support check +local use_cmi = minetest.global_exists("cmi") + + +-- Invisibility mod check +mobs.invis = {} +if minetest.global_exists("invisibility") then + mobs.invis = invisibility +end + + +-- creative check +function mobs.is_creative(name) + return minetest_is_creative_enabled(name) +end + + +local atan = function(x) + if not x or x ~= x then + return 0 + else + return math_atan(x) + end +end + + + + +-- Shows helpful debug info above each mob +local mobs_debug = minetest_settings:get_bool("mobs_debug", false) + +-- Peaceful mode message so players will know there are no monsters +if minetest_settings:get_bool("only_peaceful_mobs", false) then + minetest.register_on_joinplayer(function(player) + minetest.chat_send_player(player:get_player_name(), + S("Peaceful mode active! No monsters will spawn.")) + end) +end + + +local api_path = minetest.get_modpath(minetest.get_current_modname()).."/api/mob_functions/" + +--ignite all parts of the api +dofile(api_path .. "ai.lua") +dofile(api_path .. "animation.lua") +dofile(api_path .. "collision.lua") +dofile(api_path .. "environment.lua") +dofile(api_path .. "interaction.lua") +dofile(api_path .. "movement.lua") +dofile(api_path .. "set_up.lua") +dofile(api_path .. "attack_type_instructions.lua") +dofile(api_path .. "sound_handling.lua") +dofile(api_path .. "death_logic.lua") +dofile(api_path .. "mob_effects.lua") +dofile(api_path .. "projectile_handling.lua") +dofile(api_path .. "breeding.lua") +dofile(api_path .. "head_logic.lua") + + +mobs.spawning_mobs = {} + + + + +-- register mob entity +function mobs:register_mob(name, def) + + local collisionbox = def.collisionbox or {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25} + + -- Workaround for : + -- Increase upper Y limit to avoid mobs glitching through solid nodes. + -- FIXME: Remove workaround if it's no longer needed. + + if collisionbox[5] < 0.79 then + collisionbox[5] = 0.79 + end + + mobs.spawning_mobs[name] = true + + local function scale_difficulty(value, default, min, special) + if (not value) or (value == default) or (value == special) then + return default + else + return math_max(min, value * difficulty) + end + end + + minetest.register_entity(name, { + description = def.description, + use_texture_alpha = def.use_texture_alpha, + stepheight = def.stepheight or 0.6, + stepheight_backup = def.stepheight or 0.6, + name = name, + type = def.type, + attack_type = def.attack_type, + fly = def.fly, + fly_in = def.fly_in or {"air", "__airlike"}, + owner = def.owner or "", + order = def.order or "", + on_die = def.on_die, + spawn_small_alternative = def.spawn_small_alternative, + do_custom = def.do_custom, + jump_height = def.jump_height or 4, -- was 6 + rotate = def.rotate or 0, -- 0=front, 90=side, 180=back, 270=side2 + hp_min = scale_difficulty(def.hp_min, 5, 1), + hp_max = scale_difficulty(def.hp_max, 10, 1), + xp_min = def.xp_min or 1, + xp_max = def.xp_max or 5, + breath_max = def.breath_max or 6, + breathes_in_water = def.breathes_in_water or false, + physical = true, + collisionbox = collisionbox, + collide_with_objects = def.collide_with_objects or false, + selectionbox = def.selectionbox or def.collisionbox, + visual = def.visual, + visual_size = def.visual_size or {x = 1, y = 1}, + mesh = def.mesh, + makes_footstep_sound = def.makes_footstep_sound or false, + view_range = def.view_range or 16, + walk_velocity = def.walk_velocity or 1, + run_velocity = def.run_velocity or 2, + damage = scale_difficulty(def.damage, 0, 0), + light_damage = def.light_damage or 0, + sunlight_damage = def.sunlight_damage or 0, + water_damage = def.water_damage or 0, + lava_damage = def.lava_damage or 8, + fire_damage = def.fire_damage or 1, + suffocation = def.suffocation or true, + fall_damage = def.fall_damage or 1, + fall_speed = def.fall_speed or DEFAULT_FALL_SPEED, -- must be lower than -2 + drops = def.drops or {}, + armor = def.armor or 100, + on_rightclick = mobs.create_mob_on_rightclick(def.on_rightclick), + arrow = def.arrow, + shoot_interval = def.shoot_interval, + sounds = def.sounds or {}, + animation = def.animation, + jump = def.jump ~= false, + walk_chance = def.walk_chance or 50, + attacks_monsters = def.attacks_monsters or false, + group_attack = def.group_attack or false, + passive = def.passive or false, + knock_back = def.knock_back ~= false, + shoot_offset = def.shoot_offset or 0, + floats = def.floats or 1, -- floats in water by default + floats_on_lava = def.floats_on_lava or 0, + replace_rate = def.replace_rate, + replace_what = def.replace_what, + replace_with = def.replace_with, + replace_offset = def.replace_offset or 0, + on_replace = def.on_replace, + timer = 0, + state_timer = 0, + env_damage_timer = 0, + tamed = false, + pause_timer = 0, + gotten = false, + reach = def.reach or 3, + htimer = 0, + texture_list = def.textures, + child_texture = def.child_texture, + docile_by_day = def.docile_by_day or false, + time_of_day = 0.5, + fear_height = def.fear_height or 0, + runaway = def.runaway, + runaway_timer = 0, + pathfinding = def.pathfinding, + immune_to = def.immune_to or {}, + explosion_radius = def.explosion_radius, -- LEGACY + explosion_damage_radius = def.explosion_damage_radius, -- LEGACY + explosiontimer_reset_radius = def.explosiontimer_reset_radius, + explosion_timer = def.explosion_timer or 3, + allow_fuse_reset = def.allow_fuse_reset ~= false, + stop_to_explode = def.stop_to_explode ~= false, + custom_attack = def.custom_attack, + double_melee_attack = def.double_melee_attack, + dogshoot_switch = def.dogshoot_switch, + dogshoot_count = 0, + dogshoot_count_max = def.dogshoot_count_max or 5, + dogshoot_count2_max = def.dogshoot_count2_max or (def.dogshoot_count_max or 5), + attack_animals = def.attack_animals or false, + specific_attack = def.specific_attack, + runaway_from = def.runaway_from, + owner_loyal = def.owner_loyal, + facing_fence = false, + + _cmi_is_mob = true, + + pushable = def.pushable or true, + + --j4i stuff + yaw = 0, + automatic_face_movement_dir = def.rotate or 0, -- 0=front, 90=side, 180=back, 270=side2 + automatic_face_movement_max_rotation_per_sec = 360, --degrees + backface_culling = true, + walk_timer = 0, + stand_timer = 0, + current_animation = "", + gravity = GRAVITY, + swim = def.swim, + swim_in = def.swim_in or {mobs_mc.items.water_source, "mcl_core:water_flowing", mobs_mc.items.river_water_source}, + pitch_switch = "static", + jump_only = def.jump_only, + hostile = def.hostile, + neutral = def.neutral, + attacking = nil, + visual_size_origin = def.visual_size or {x = 1, y = 1, z = 1}, + punch_timer_cooloff = def.punch_timer_cooloff or 0.5, + death_animation_timer = 0, + hostile_cooldown = def.hostile_cooldown or 15, + tilt_fly = def.tilt_fly, + tilt_swim = def.tilt_swim, + fall_slow = def.fall_slow, + projectile_cooldown_min = def.projectile_cooldown_min or 2, + projectile_cooldown_max = def.projectile_cooldown_max or 6, + skittish = def.skittish, + + minimum_follow_distance = def.minimum_follow_distance or 0.5, --make mobs not freak out when underneath + + memory = 0, -- memory timer if chasing/following + fly_random_while_attack = def.fly_random_while_attack, + + --for spiders + always_climb = def.always_climb, + + --despawn mechanic variables + lifetimer_reset = 30, --30 seconds + lifetimer = 30, --30 seconds + + --breeding stuff + breed_timer = 0, + breed_lookout_timer = 0, + breed_distance = def.breed_distance or 1.5, --how far away mobs have to be to begin actual breeding + breed_lookout_timer_goal = 30, --30 seconds (this timer is for how long the mob looks for a mate) + breed_timer_cooloff = 5*60, -- 5 minutes (this timer is for how long the mob has to wait before being bred again) + bred = false, + follow = def.follow, --this item is also used for the breeding mechanism + follow_distance = def.follow_distance or 2, + baby_size = def.baby_size or 0.5, + baby = false, + grow_up_timer = 0, + grow_up_goal = 20*60, --in 20 minutes the mob grows up + special_breed_timer = 0, --this is used for the AHEM AHEM part of breeding + + backup_visual_size = def.visual_size, + backup_collisionbox = collisionbox, + backup_selectionbox = def.selectionbox or def.collisionbox, + + + --fire timer + burn_timer = 0, + + ignores_cobwebs = def.ignores_cobwebs, + breath = def.breath_max or 6, + + random_sound_timer_min = 3, + random_sound_timer_max = 10, + + + --head code variables + --defaults are for the cow's default + --because I don't know what else to set them + --to :P + + has_head = def.has_head or false, + head_bone = def.head_bone, + + --you must use these to adjust the mob's head positions + + --has_head is used as a logic gate (quick easy check) + has_head = def.has_head or false, + --head_bone is the actual bone in the model which the head + --is attached to for animation + head_bone = def.head_bone or "head", + + --this part controls the base position of the head calculations + --localized to the mob's visual yaw when gotten (self.object:get_yaw()) + --you can enable the debug in /mob_functions/head_logic.lua by uncommenting the + --particle spawner code + head_height_offset = def.head_height_offset or 1.0525, + head_direction_offset = def.head_direction_offset or 0.5, + + --this part controls the visual of the head + head_bone_pos_y = def.head_bone_pos_y or 3.6, + head_bone_pos_z = def.head_bone_pos_z or -0.6, + head_pitch_modifier = def.head_pitch_modifier or 0, + + --these variables are switches in case the model + --moves the wrong way + swap_y_with_x = def.swap_y_with_x or false, + reverse_head_yaw = def.reverse_head_yaw or false, + + --END HEAD CODE VARIABLES + + --end j4i stuff + + -- MCL2 extensions + teleport = mobs.teleport, + do_teleport = def.do_teleport, + spawn_class = def.spawn_class, + ignores_nametag = def.ignores_nametag or false, + rain_damage = def.rain_damage or 0, + glow = def.glow, + --can_despawn = can_despawn, + child = def.child or false, + texture_mods = {}, + shoot_arrow = def.shoot_arrow, + sounds_child = def.sounds_child, + explosion_strength = def.explosion_strength, + suffocation_timer = 0, + follow_velocity = def.follow_velocity or 2.4, + instant_death = def.instant_death or false, + fire_resistant = def.fire_resistant or false, + fire_damage_resistant = def.fire_damage_resistant or false, + ignited_by_sunlight = def.ignited_by_sunlight or false, + eye_height = def.eye_height or 1.5, + defuse_reach = def.defuse_reach or 4, + -- End of MCL2 extensions + + on_spawn = def.on_spawn, + + --on_blast = def.on_blast or do_tnt, + + on_step = mobs.mob_step, + + --do_punch = def.do_punch, + + on_punch = mobs.mob_punch, + + --on_breed = def.on_breed, + + --on_grown = def.on_grown, + + --on_detach_child = mob_detach_child, + + on_activate = function(self, staticdata, dtime) + self.object:set_acceleration(vector_new(0,-GRAVITY, 0)) + return mobs.mob_activate(self, staticdata, def, dtime) + end, + + get_staticdata = function(self) + return mobs.mob_staticdata(self) + end, + + --harmed_by_heal = def.harmed_by_heal, + }) + + if minetest_get_modpath("doc_identifier") ~= nil then + doc.sub.identifier.register_object(name, "basics", "mobs") + end + +end -- END mobs:register_mob function + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-- register arrow for shoot attack +function mobs:register_arrow(name, def) + + -- errorcheck + if not name or not def then + print("failed to register arrow entity") + return + end + + minetest.register_entity(name.."_entity", { + + physical = false, + visual = def.visual, + visual_size = def.visual_size, + textures = def.textures, + velocity = def.velocity, + hit_player = def.hit_player, + hit_node = def.hit_node, + hit_mob = def.hit_mob, + hit_object = def.hit_object, + drop = def.drop or false, -- drops arrow as registered item when true + collisionbox = {0, 0, 0, 0, 0, 0}, -- remove box around arrows + timer = 0, + switch = 0, + owner_id = def.owner_id, + rotate = def.rotate, + speed = def.speed or nil, + on_step = function(self) + + local vel = self.object:get_velocity() + + local pos = self.object:get_pos() + + if self.timer > 150 + or not mobs.within_limits(pos, 0) then + mcl_burning.extinguish(self.object) + self.object:remove(); + return + end + + -- does arrow have a tail (fireball) + if def.tail + and def.tail == 1 + and def.tail_texture then + + --do this to prevent clipping through main entity sprite + local pos_adjustment = vector_multiply(vector_normalize(vel), -1) + local divider = def.tail_distance_divider or 1 + pos_adjustment = vector_divide(pos_adjustment, divider) + local new_pos = vector_add(pos, pos_adjustment) + minetest.add_particle({ + pos = new_pos, + velocity = {x = 0, y = 0, z = 0}, + acceleration = {x = 0, y = 0, z = 0}, + expirationtime = def.expire or 0.25, + collisiondetection = false, + texture = def.tail_texture, + size = def.tail_size or 5, + glow = def.glow or 0, + }) + end + + if self.hit_node then + + local node = minetest_get_node(pos).name + + if minetest_registered_nodes[node].walkable then + + self.hit_node(self, pos, node) + + if self.drop == true then + + pos.y = pos.y + 1 + + self.lastpos = (self.lastpos or pos) + + minetest_add_item(self.lastpos, self.object:get_luaentity().name) + end + + self.object:remove(); + + return + end + end + + if self.hit_player or self.hit_mob or self.hit_object then + + for _,player in pairs(minetest_get_objects_inside_radius(pos, 1.5)) do + + if self.hit_player + and player:is_player() then + + if self.hit_player then + self.hit_player(self, player) + else + mobs.arrow_hit(self, player) + end + + self.object:remove(); + return + end + + --[[ + local entity = player:get_luaentity() + + if entity + and self.hit_mob + and entity._cmi_is_mob == true + and tostring(player) ~= self.owner_id + and entity.name ~= self.object:get_luaentity().name + and (self._shooter and entity.name ~= self._shooter:get_luaentity().name) then + + --self.hit_mob(self, player) + self.object:remove(); + return + end + ]]-- + + --[[ + if entity + and self.hit_object + and (not entity._cmi_is_mob) + and tostring(player) ~= self.owner_id + and entity.name ~= self.object:get_luaentity().name + and (self._shooter and entity.name ~= self._shooter:get_luaentity().name) then + + --self.hit_object(self, player) + self.object:remove(); + return + end + ]]-- + end + end + + self.lastpos = pos + end + }) +end + +-- Register spawn eggs + +-- Note: This also introduces the “spawn_egg” group: +-- * spawn_egg=1: Spawn egg (generic mob, no metadata) +-- * spawn_egg=2: Spawn egg (captured/tamed mob, metadata) +function mobs:register_egg(mob, desc, background, addegg, no_creative) + + local grp = {spawn_egg = 1} + + -- do NOT add this egg to creative inventory (e.g. dungeon master) + if no_creative == true then + grp.not_in_creative_inventory = 1 + end + + local invimg = background + + if addegg == 1 then + invimg = "mobs_chicken_egg.png^(" .. invimg .. + "^[mask:mobs_chicken_egg_overlay.png)" + end + + -- register old stackable mob egg + minetest.register_craftitem(mob, { + + description = desc, + inventory_image = invimg, + groups = grp, + + _doc_items_longdesc = S("This allows you to place a single mob."), + _doc_items_usagehelp = S("Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns."), + + on_place = function(itemstack, placer, pointed_thing) + + local pos = pointed_thing.above + + -- am I clicking on something with existing on_rightclick function? + local under = minetest_get_node(pointed_thing.under) + local def = minetest_registered_nodes[under.name] + if def and def.on_rightclick then + return def.on_rightclick(pointed_thing.under, under, placer, itemstack) + end + + if pos + --and within_limits(pos, 0) + and not minetest_is_protected(pos, placer:get_player_name()) then + + local name = placer:get_player_name() + local privs = minetest.get_player_privs(name) + if mod_mobspawners and under.name == "mcl_mobspawners:spawner" then + if minetest_is_protected(pointed_thing.under, name) then + minetest.record_protection_violation(pointed_thing.under, name) + return itemstack + end + if not privs.maphack then + minetest.chat_send_player(name, S("You need the “maphack” privilege to change the mob spawner.")) + return itemstack + end + mcl_mobspawners.setup_spawner(pointed_thing.under, itemstack:get_name()) + if not mobs.is_creative(name) then + itemstack:take_item() + end + return itemstack + end + + if not minetest_registered_entities[mob] then + return itemstack + end + + if minetest_settings:get_bool("only_peaceful_mobs", false) + and minetest_registered_entities[mob].type == "monster" then + minetest.chat_send_player(name, S("Only peaceful mobs allowed!")) + return itemstack + end + + local mob = minetest_add_entity(pos, mob) + minetest.log("action", "Mob spawned: "..name.." at "..minetest.pos_to_string(pos)) + local ent = mob:get_luaentity() + + -- don't set owner if monster or sneak pressed + --[[ + if ent.type ~= "monster" + and not placer:get_player_control().sneak then + ent.owner = placer:get_player_name() + ent.tamed = true + end + ]]-- + + -- set nametag + local nametag = itemstack:get_meta():get_string("name") + if nametag ~= "" then + if string.len(nametag) > MAX_MOB_NAME_LENGTH then + nametag = string.sub(nametag, 1, MAX_MOB_NAME_LENGTH) + end + ent.nametag = nametag + update_tag(ent) + end + + -- if not in creative then take item + if not mobs.is_creative(placer:get_player_name()) then + itemstack:take_item() + end + end + + return itemstack + end, + }) + +end + + diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua new file mode 100644 index 000000000..eda7e8871 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -0,0 +1,1153 @@ +local math_random = math.random +local math_pi = math.pi +local math_floor = math.floor +local math_round = math.round + +local vector_multiply = vector.multiply +local vector_add = vector.add +local vector_new = vector.new +local vector_distance = vector.distance + +local minetest_yaw_to_dir = minetest.yaw_to_dir +local minetest_get_item_group = minetest.get_item_group +local minetest_get_node = minetest.get_node +local minetest_line_of_sight = minetest.line_of_sight +local minetest_get_node_light = minetest.get_node_light + +local DOUBLE_PI = math.pi * 2 +local THIRTY_SECONDTH_PI = DOUBLE_PI * 0.03125 + + +--a simple helper function which is too small to move into movement.lua +local quick_rotate = function(self,dtime) + self.yaw = self.yaw + THIRTY_SECONDTH_PI + if self.yaw > DOUBLE_PI then + self.yaw = self.yaw - DOUBLE_PI + end +end + +--a simple helper function for rounding +--http://lua-users.org/wiki/SimpleRound +function round2(num, numDecimalPlaces) + return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num)) +end + + +--[[ + _ _ +| | | | +| | __ _ _ __ __| | +| | / _` | '_ \ / _` | +| |___| (_| | | | | (_| | +\_____/\__,_|_| |_|\__,_| +]]-- + +--this is basically reverse jump_check +local cliff_check = function(self,dtime) + --mobs will flip out if they are falling without this + if self.object:get_velocity().y ~= 0 then + return false + end + + local pos = self.object:get_pos() + local dir = minetest_yaw_to_dir(self.yaw) + local collisionbox = self.object:get_properties().collisionbox + local radius = collisionbox[4] + 0.5 + + dir = vector_multiply(dir,radius) + + local free_fall, blocker = minetest_line_of_sight( + {x = pos.x + dir.x, y = pos.y, z = pos.z + dir.z}, + {x = pos.x + dir.x, y = pos.y - self.fear_height, z = pos.z + dir.z}) + + return free_fall +end + + +-- state switching logic (stand, walk, run, attacks) +local land_state_list_wandering = {"stand", "walk"} + +local land_state_switch = function(self, dtime) + + --do math before sure not attacking, following, or running away so continue + --doing random walking for mobs if all states are not met + self.state_timer = self.state_timer - dtime + + --only run away + if self.skittish and self.state == "run" then + self.run_timer = self.run_timer - dtime + if self.run_timer > 0 then + return + end + --continue + end + + --ignore everything else if breeding + if self.breed_lookout_timer and self.breed_lookout_timer > 0 then + self.state = "breed" + return + --reset the state timer to get the mob out of + --the breed state + elseif self.state == "breed" then + self.state_timer = 0 + end + + --ignore everything else if following + if mobs.check_following(self) and + (not self.breed_lookout_timer or (self.breed_lookout_timer and self.breed_lookout_timer == 0)) and + (not self.breed_timer or (self.breed_timer and self.breed_timer == 0)) then + self.state = "follow" + return + --reset the state timer to get the mob out of + --the follow state - not the cleanest option + --but the easiest + elseif self.state == "follow" then + self.state_timer = 0 + end + + --only attack + if self.hostile and self.attacking then + self.state = "attack" + return + end + + --if finally reached here then do random wander + if self.state_timer <= 0 then + self.state_timer = math.random(4,10) + math.random() + self.state = land_state_list_wandering[math.random(1,#land_state_list_wandering)] + end + +end + +-- states are executed here +local land_state_execution = function(self,dtime) + + --[[ -- this is a debug which shows the timer and makes mobs breed 100 times faster + print(self.breed_timer) + if self.breed_timer > 0 then + self.breed_timer = self.breed_timer - (dtime * 100) + if self.breed_timer <= 0 then + self.breed_timer = 0 + end + end + ]]-- + + --no collisionbox exception + if not self.object:get_properties() then + return + end + + + --timer to time out looking for mate + if self.breed_lookout_timer and self.breed_lookout_timer > 0 then + self.breed_lookout_timer = self.breed_lookout_timer - dtime + --looking for mate failed + if self.breed_lookout_timer <= 0 then + self.breed_lookout_timer = 0 + end + end + + --cool off after breeding + if self.breed_timer and self.breed_timer > 0 then + self.breed_timer = self.breed_timer - dtime + --do this to skip the first check, using as switch + if self.breed_timer <= 0 then + self.breed_timer = 0 + end + end + + + local pos = self.object:get_pos() + local collisionbox = self.object:get_properties().collisionbox + --get the center of the mob + pos.y = pos.y + (collisionbox[2] + collisionbox[5] / 2) + local current_node = minetest_get_node(pos).name + local float_now = false + + --recheck if in water or lava + if minetest_get_item_group(current_node, "water") ~= 0 or minetest_get_item_group(current_node, "lava") ~= 0 then + float_now = true + end + + --make slow falling mobs fall slow + if self.fall_slow then + local velocity = self.object:get_velocity() + if velocity then + if velocity.y < 0 then + --lua is acting really weird so we have to help it + if round2(self.object:get_acceleration().y, 1) == -self.gravity then + self.object:set_acceleration(vector_new(0,0,0)) + mobs.mob_fall_slow(self) + end + else + if round2(self.object:get_acceleration().y, 1) == 0 then + self.object:set_acceleration(vector_new(0,-self.gravity,0)) + end + end + end + end + + --calculate fall damage + if self.fall_damage then + mobs.calculate_fall_damage(self) + end + + if self.state == "stand" then + + --do animation + mobs.set_mob_animation(self, "stand") + + --set the velocity of the mob + mobs.set_velocity(self,0) + + --animation fixes for explosive mobs + if self.attack_type == "explode" then + mobs.reverse_explosion_animation(self,dtime) + end + + mobs.lock_yaw(self) + elseif self.state == "follow" then + + --always look at players + mobs.set_yaw_while_following(self) + + --check distance + local distance_from_follow_person = vector_distance(self.object:get_pos(), self.following_person:get_pos()) + local distance_2d = mobs.get_2d_distance(self.object:get_pos(), self.following_person:get_pos()) + + --don't push the player if too close + --don't spin around randomly + if self.follow_distance < distance_from_follow_person and self.minimum_follow_distance < distance_2d then + mobs.set_mob_animation(self, "run") + mobs.set_velocity(self,self.run_velocity) + + if mobs.jump_check(self) == 1 then + mobs.jump(self) + end + else + mobs.set_mob_animation(self, "stand") + mobs.set_velocity(self,0) + end + + elseif self.state == "walk" then + + self.walk_timer = self.walk_timer - dtime + + --reset the walk timer + if self.walk_timer <= 0 then + + --re-randomize the walk timer + self.walk_timer = math.random(1,6) + math.random() + + --set the mob into a random direction + self.yaw = (math_random() * (math.pi * 2)) + end + + --do animation + mobs.set_mob_animation(self, "walk") + + --enable rotation locking + mobs.movement_rotation_lock(self) + + --check for nodes to jump over + local node_in_front_of = mobs.jump_check(self) + + if node_in_front_of == 1 then + + mobs.jump(self) + + --turn if on the edge of cliff + --(this is written like this because unlike + --jump_check which simply tells the mob to jump + --this requires a mob to turn, removing the + --ease of a full implementation for it in a single + --function) + elseif node_in_front_of == 2 or (self.fear_height ~= 0 and cliff_check(self,dtime)) then + --turn 45 degrees if so + quick_rotate(self,dtime) + --stop the mob so it doesn't fall off + mobs.set_velocity(self,0) + end + + --only move forward if path is clear + if node_in_front_of == 0 or node_in_front_of == 1 then + --set the velocity of the mob + mobs.set_velocity(self,self.walk_velocity) + end + + --animation fixes for explosive mobs + if self.attack_type == "explode" then + mobs.reverse_explosion_animation(self,dtime) + end + + elseif self.state == "run" then + + --do animation + mobs.set_mob_animation(self, "run") + + --enable rotation locking + mobs.movement_rotation_lock(self) + + --check for nodes to jump over + local node_in_front_of = mobs.jump_check(self) + + if node_in_front_of == 1 then + + mobs.jump(self) + + --turn if on the edge of cliff + --(this is written like this because unlike + --jump_check which simply tells the mob to jump + --this requires a mob to turn, removing the + --ease of a full implementation for it in a single + --function) + elseif node_in_front_of == 2 or (self.fear_height ~= 0 and cliff_check(self,dtime)) then + --turn 45 degrees if so + quick_rotate(self,dtime) + --stop the mob so it doesn't fall off + mobs.set_velocity(self,0) + end + + --only move forward if path is clear + if node_in_front_of == 0 or node_in_front_of == 1 then + --set the velocity of the mob + mobs.set_velocity(self,self.run_velocity) + end + + elseif self.state == "attack" then + + --execute mob attack type + if self.attack_type == "explode" then + + mobs.explode_attack_walk(self, dtime) + + elseif self.attack_type == "punch" then + + mobs.punch_attack_walk(self,dtime) + + elseif self.attack_type == "projectile" then + + mobs.projectile_attack_walk(self,dtime) + + end + elseif self.state == "breed" then + + mobs.breeding_effect(self) + + local mate = mobs.look_for_mate(self) + + --found a mate + if mate then + mobs.set_yaw_while_breeding(self,mate) + mobs.set_velocity(self, self.walk_velocity) + + --smoosh together basically + if vector_distance(self.object:get_pos(), mate:get_pos()) <= self.breed_distance then + mobs.set_mob_animation(self, "stand") + if self.special_breed_timer == 0 then + self.special_breed_timer = 2 --breeding takes 2 seconds + end + + self.special_breed_timer = self.special_breed_timer - dtime + if self.special_breed_timer <= 0 then + + --pop a baby out, it's a miracle! + local baby_pos = vector.divide(vector.add(self.object:get_pos(), mate:get_pos()), 2) + local baby_mob = minetest.add_entity(pos, self.name, minetest.serialize({baby = true, grow_up_timer = self.grow_up_goal, bred = true})) + + mobs.play_sound_specific(self,"item_drop_pickup") + + self.special_breed_timer = 0 + self.breed_lookout_timer = 0 + self.breed_timer = self.breed_timer_cooloff + + mate:get_luaentity().special_breed_timer = 0 + mate:get_luaentity().breed_lookout_timer = 0 + mate:get_luaentity().breed_timer = self.breed_timer_cooloff -- can reuse because it's the same mob + end + else + mobs.set_mob_animation(self, "walk") + end + --couldn't find a mate, just stand there until the player pushes it towards one + --or the timer runs out + else + mobs.set_mob_animation(self, "stand") + mobs.set_velocity(self,0) + end + + end + + if float_now then + mobs.float(self) + else + local acceleration = self.object:get_acceleration() + if acceleration and acceleration.y == 0 then + self.object:set_acceleration(vector_new(0,-self.gravity,0)) + end + end +end + + + + +--[[ + _____ _ +/ ___| (_) +\ `--.__ ___ _ __ ___ + `--. \ \ /\ / / | '_ ` _ \ +/\__/ /\ V V /| | | | | | | +\____/ \_/\_/ |_|_| |_| |_| +]]-- + + + +-- state switching logic (stand, walk, run, attacks) +local swim_state_list_wandering = {"stand", "swim"} + +local swim_state_switch = function(self, dtime) + self.state_timer = self.state_timer - dtime + if self.state_timer <= 0 then + self.state_timer = math.random(4,10) + math.random() + self.state = swim_state_list_wandering[math.random(1,#swim_state_list_wandering)] + end +end + + +--check if a mob needs to turn while swimming +local swim_turn_check = function(self,dtime) + + local pos = self.object:get_pos() + pos.y = pos.y + 0.1 + local dir = minetest_yaw_to_dir(self.yaw) + + local collisionbox = self.object:get_properties().collisionbox + local radius = collisionbox[4] + 0.5 + + vector_multiply(dir, radius) + + local test_dir = vector.add(pos,dir) + + local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0 + + return(green_flag_1) +end + +--this is to swap the built in engine acceleration modifier +local swim_physics_swapper = function(self,inside_swim_node) + + --should be swimming, gravity is applied, switch to floating + if inside_swim_node and self.object:get_acceleration().y ~= 0 then + self.object:set_acceleration(vector_new(0,0,0)) + --not be swim, gravity isn't applied, switch to falling + elseif not inside_swim_node and self.object:get_acceleration().y == 0 then + self.pitch = 0 + self.object:set_acceleration(vector_new(0,-self.gravity,0)) + end +end + + +local random_pitch_multiplier = {-1,1} +-- states are executed here +local swim_state_execution = function(self,dtime) + + local pos = self.object:get_pos() + + pos.y = pos.y + self.object:get_properties().collisionbox[5] + local current_node = minetest_get_node(pos).name + local inside_swim_node = false + + --quick scan everything to see if inside swim node + for _,id in pairs(self.swim_in) do + if id == current_node then + inside_swim_node = true + break + end + end + + --turn gravity on or off + swim_physics_swapper(self,inside_swim_node) + + --swim properly if inside swim node + if inside_swim_node then + + if self.state == "stand" then + + --do animation + mobs.set_mob_animation(self, "stand") + + mobs.set_swim_velocity(self,0) + + if self.tilt_swim then + mobs.set_static_pitch(self) + end + + mobs.lock_yaw(self) + + elseif self.state == "swim" then + + self.walk_timer = self.walk_timer - dtime + + --reset the walk timer + if self.walk_timer <= 0 then + + --re-randomize the walk timer + self.walk_timer = math.random(1,6) + math.random() + + --set the mob into a random direction + self.yaw = (math_random() * (math.pi * 2)) + + --create a truly random pitch, since there is no easy access to pitch math that I can find + self.pitch = math_random() * math.random(1,3) * random_pitch_multiplier[math_random(1,2)] + end + + --do animation + mobs.set_mob_animation(self, "walk") + + --do a quick turn to make mob continuously move + --if in a fish tank or something + if swim_turn_check(self,dtime) then + quick_rotate(self,dtime) + end + + mobs.set_swim_velocity(self,self.walk_velocity) + + --only enable tilt swimming if enabled + if self.tilt_swim then + mobs.set_dynamic_pitch(self) + end + + --enable rotation locking + mobs.movement_rotation_lock(self) + end + --flop around if not inside swim node + else + --do animation + mobs.set_mob_animation(self, "stand") + + mobs.flop(self) + + if self.tilt_swim then + mobs.set_static_pitch(self) + end + end + +end + + +--[[ +______ _ +| ___| | +| |_ | |_ _ +| _| | | | | | +| | | | |_| | +\_| |_|\__, | + __/ | + |___/ +]]-- + +-- state switching logic (stand, walk, run, attacks) +local fly_state_list_wandering = {"stand", "fly"} + +local fly_state_switch = function(self, dtime) + + if self.hostile and self.attacking then + self.state = "attack" + return + end + + self.state_timer = self.state_timer - dtime + if self.state_timer <= 0 then + self.state_timer = math.random(4,10) + math.random() + self.state = fly_state_list_wandering[math.random(1,#fly_state_list_wandering)] + end +end + + +--check if a mob needs to turn while flying +local fly_turn_check = function(self,dtime) + + local pos = self.object:get_pos() + pos.y = pos.y + 0.1 + local dir = minetest_yaw_to_dir(self.yaw) + + local collisionbox = self.object:get_properties().collisionbox + local radius = collisionbox[4] + 0.5 + + vector_multiply(dir, radius) + + local test_dir = vector.add(pos,dir) + + local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0 + + return(green_flag_1) +end + +--this is to swap the built in engine acceleration modifier +local fly_physics_swapper = function(self,inside_fly_node) + + --should be flyming, gravity is applied, switch to floating + if inside_fly_node and self.object:get_acceleration().y ~= 0 then + self.object:set_acceleration(vector_new(0,0,0)) + --not be fly, gravity isn't applied, switch to falling + elseif not inside_fly_node and self.object:get_acceleration().y == 0 then + self.pitch = 0 + self.object:set_acceleration(vector_new(0,-self.gravity,0)) + end +end + + +local random_pitch_multiplier = {-1,1} +-- states are executed here +local fly_state_execution = function(self,dtime) + local pos = self.object:get_pos() + pos.y = pos.y + 0.1 + local current_node = minetest_get_node(pos).name + local inside_fly_node = minetest_get_item_group(current_node, "solid") == 0 + + local float_now = false + --recheck if in water or lava + if minetest_get_item_group(current_node, "water") ~= 0 or minetest_get_item_group(current_node, "lava") ~= 0 then + inside_fly_node = false + float_now = true + end + + --turn gravity on or off + fly_physics_swapper(self,inside_fly_node) + + --fly properly if inside fly node + if inside_fly_node then + if self.state == "stand" then + + --do animation + mobs.set_mob_animation(self, "stand") + + mobs.set_fly_velocity(self,0) + + if self.tilt_fly then + mobs.set_static_pitch(self) + end + + mobs.lock_yaw(self) + + elseif self.state == "fly" then + + self.walk_timer = self.walk_timer - dtime + + --reset the walk timer + if self.walk_timer <= 0 then + + --re-randomize the walk timer + self.walk_timer = math.random(1,6) + math.random() + + --set the mob into a random direction + self.yaw = (math_random() * (math.pi * 2)) + + --create a truly random pitch, since there is no easy access to pitch math that I can find + self.pitch = math_random() * math.random(1,3) * random_pitch_multiplier[math_random(1,2)] + end + + --do animation + mobs.set_mob_animation(self, "walk") + + --do a quick turn to make mob continuously move + --if in a bird cage or something + if fly_turn_check(self,dtime) then + quick_rotate(self,dtime) + end + + if self.tilt_fly then + mobs.set_dynamic_pitch(self) + end + + mobs.set_fly_velocity(self,self.walk_velocity) + + --enable rotation locking + mobs.movement_rotation_lock(self) + + elseif self.state == "attack" then + + --execute mob attack type + --if self.attack_type == "explode" then + + --mobs.explode_attack_fly(self, dtime) + + --elseif self.attack_type == "punch" then + + --mobs.punch_attack_fly(self,dtime) + + if self.attack_type == "projectile" then + + mobs.projectile_attack_fly(self,dtime) + + end + end + else + --make the mob float + if self.floats and float_now then + mobs.set_velocity(self, 0) + + mobs.float(self) + + if self.tilt_fly then + mobs.set_static_pitch(self) + end + end + end +end + + +--[[ + ___ + |_ | + | |_ _ _ __ ___ _ __ + | | | | | '_ ` _ \| '_ \ +/\__/ / |_| | | | | | | |_) | +\____/ \__,_|_| |_| |_| .__/ + | | + |_| +]]-- + + +--check if a mob needs to turn while jumping +local jump_turn_check = function(self,dtime) + + local pos = self.object:get_pos() + pos.y = pos.y + 0.1 + local dir = minetest_yaw_to_dir(self.yaw) + + local collisionbox = self.object:get_properties().collisionbox + local radius = collisionbox[4] + 0.5 + + vector_multiply(dir, radius) + + local test_dir = vector.add(pos,dir) + + local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0 + + return(green_flag_1) +end + +-- state switching logic (stand, jump, run, attacks) +local jump_state_list_wandering = {"stand", "jump"} + +local jump_state_switch = function(self, dtime) + self.state_timer = self.state_timer - dtime + if self.state_timer <= 0 then + self.state_timer = math.random(4,10) + math.random() + self.state = jump_state_list_wandering[math.random(1,#jump_state_list_wandering)] + end +end + +-- states are executed here +local jump_state_execution = function(self,dtime) + + local pos = self.object:get_pos() + local collisionbox = self.object:get_properties().collisionbox + --get the center of the mob + pos.y = pos.y + (collisionbox[2] + collisionbox[5] / 2) + local current_node = minetest_get_node(pos).name + + local float_now = false + + --recheck if in water or lava + if minetest_get_item_group(current_node, "water") ~= 0 or minetest_get_item_group(current_node, "lava") ~= 0 then + float_now = true + end + + if self.state == "stand" then + + --do animation + mobs.set_mob_animation(self, "stand") + + --set the velocity of the mob + mobs.set_velocity(self,0) + + mobs.lock_yaw(self) + + elseif self.state == "jump" then + + self.walk_timer = self.walk_timer - dtime + + --reset the jump timer + if self.walk_timer <= 0 then + + --re-randomize the jump timer + self.walk_timer = math.random(1,6) + math.random() + + --set the mob into a random direction + self.yaw = (math_random() * (math.pi * 2)) + end + + --do animation + mobs.set_mob_animation(self, "walk") + + --enable rotation locking + mobs.movement_rotation_lock(self) + + --jumping mobs are more loosey goosey + if node_in_front_of == 1 then + quick_rotate(self,dtime) + end + + --only move forward if path is clear + mobs.jump_move(self,self.walk_velocity) + + elseif self.state == "run" then + + print("run") + + elseif self.state == "attack" then + + print("attack") + + end + + if float_now then + mobs.float(self) + end +end + + + + +--[[ +___ ___ _ _ _ +| \/ | (_) | | (_) +| . . | __ _ _ _ __ | | ___ __ _ _ ___ +| |\/| |/ _` | | '_ \ | | / _ \ / _` | |/ __| +| | | | (_| | | | | | | |___| (_) | (_| | | (__ +\_| |_/\__,_|_|_| |_| \_____/\___/ \__, |_|\___| + __/ | + |___/ +]]-- + +--the main loop +mobs.mob_step = function(self, dtime) + + --do not continue if non-existent + if not self or not self.object or not self.object:get_luaentity() then + self.object:remove() + return false + end + + + --DEBUG TIME! + --REMEMBER TO MOVE THIS AFTER DEATH CHECK + + --if self.has_head then + -- mobs.do_head_logic(self,dtime) + --end + + + + --if true then--DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG + -- return + --end + + --despawn mechanism + --don't despawned tamed or bred mobs + if not self.tamed and not self.bred then + self.lifetimer = self.lifetimer - dtime + if self.lifetimer <= 0 then + self.lifetimer = self.lifetimer_reset + if not mobs.check_for_player_within_area(self, 64) then + --print("removing in MAIN LOGIC!") + self.object:remove() + return + end + end + end + + --color modifier which coincides with the pause_timer + if self.old_health and self.health < self.old_health then + self.object:set_texture_mod("^[colorize:red:120") + --fix double death sound + if self.health > 0 then + mobs.play_sound(self,"damage") + end + end + self.old_health = self.health + + --do death logic (animation, poof, explosion, etc) + if self.health <= 0 or self.dead then + --play death sound once + if not self.played_death_sound then + self.dead = true + mobs.play_sound(self,"death") + self.played_death_sound = true + end + + mobs.death_logic(self, dtime) + + --this is here because the mob must continue to move + --while stunned before coming to a complete halt even during + --the death tilt + if self.pause_timer > 0 then + self.pause_timer = self.pause_timer - dtime + --perfectly reset pause_timer + if self.pause_timer < 0 then + self.pause_timer = 0 + end + end + + return + end + + mobs.random_sound_handling(self,dtime) + + --mobs drowning mechanic + if not self.breathes_in_water then + + local pos = self.object:get_pos() + + pos.y = pos.y + self.eye_height + + local node = minetest_get_node(pos).name + + if minetest_get_item_group(node, "water") ~= 0 then + self.breath = self.breath - dtime + + --reset breath when drowning + if self.breath <= 0 then + self.health = self.health - 4 + self.breath = 1 + self.pause_timer = 0.5 + end + + elseif self.breath < self.breath_max then + self.breath = self.breath + dtime + + --clean timer reset + if self.breath > self.breath_max then + self.breath = self.breath_max + end + end + end + + --set mobs on fire when burned by sunlight + if self.ignited_by_sunlight then + local pos = self.object:get_pos() + pos.y = pos.y + 0.1 + + if self.burn_timer > 0 then + self.burn_timer = self.burn_timer - dtime + + if self.burn_timer <= 0 then + self.health = self.health - 4 + self.burn_timer = 0 + end + end + + if self.burn_timer == 0 and minetest_get_node_light(pos) > 12 and minetest_get_node_light(pos, 0.5) == 15 then + mcl_burning.set_on_fire(self.object, 1) + self.burn_timer = 1 --1.7 seconds + self.pause_timer = 0.4 + end + end + + + + + + --baby grows up + if self.baby then + --print(self.grow_up_timer) + --catch missing timer + if not self.grow_up_timer then + self.grow_up_timer = self.grow_up_goal + end + + self.grow_up_timer = self.grow_up_timer - dtime + + --baby grows up! + if self.grow_up_timer <= 0 then + self.grow_up_timer = 0 + mobs.baby_grow_up(self) + end + end + + + + --do custom mob instructions + if self.do_custom then + -- when false skip going any further + if self.do_custom(self, dtime) == false then + --this needs to be here or the mob becomes immortal + if self.pause_timer > 0 then + self.pause_timer = self.pause_timer - dtime + --perfectly reset pause_timer + if self.pause_timer <= 0 then + self.pause_timer = 0 + self.object:set_texture_mod("") + end + end + --this overrides internal lua collision detection + return + end + end + + local attacking = nil + + --scan for players within eyesight + if self.hostile then + --true for line_of_sight is debug + attacking = mobs.detect_closest_player_within_radius(self,true,self.view_range,self.eye_height) + + --go get the closest player + if attacking then + + self.memory = 6 --6 seconds of memory + + --set initial punch timer + if self.attacking == nil then + if self.attack_type == "punch" then + self.punch_timer = -1 + end + end + self.attacking = attacking + + --no player in area + elseif self.memory > 0 then + --try to remember + self.memory = self.memory - dtime + --get if memory player is within viewing range + if self.attacking and self.attacking:is_player() then + local distance = vector_distance(self.object:get_pos(), self.attacking:get_pos()) + if distance > self.view_range then + self.memory = 0 + end + --out of viewing range, forget em + else + self.memory = 0 + end + + if self.memory <= 0 then + + --reset states when coming out of hostile state + if self.attacking ~= nil then + self.state_timer = -1 + end + + self.attacking = nil + self.memory = 0 + end + end + end + + --count down hostile cooldown timer when no players in range + if self.neutral and self.hostile and not attacking and self.hostile_cooldown_timer then + + self.hostile_cooldown_timer = self.hostile_cooldown_timer - dtime + + if self.hostile_cooldown_timer <= 0 then + self.hostile = false + self.hostile_cooldown_timer = 0 + end + end + + --mob is stunned after being hit + if self.pause_timer > 0 then + self.pause_timer = self.pause_timer - dtime + --don't break eye contact + if self.hostile and self.attacking then + mobs.set_yaw_while_attacking(self) + end + + --perfectly reset pause_timer + if self.pause_timer <= 0 then + self.pause_timer = 0 + self.object:set_texture_mod("") + end + + --stop walking mobs from falling through the water + if not self.jump_only and not self.swim and not self.fly then + local pos = self.object:get_pos() + local collisionbox = self.object:get_properties().collisionbox + --get the center of the mob + pos.y = pos.y + (collisionbox[2] + collisionbox[5] / 2) + local current_node = minetest_get_node(pos).name + + --recheck if in water or lava + if minetest_get_item_group(current_node, "water") ~= 0 or minetest_get_item_group(current_node, "lava") ~= 0 then + mobs.float(self) + end + end + + --stop projectile mobs from being completely disabled while stunned + if self.projectile_timer and self.projectile_timer > 0.01 then + self.projectile_timer = self.projectile_timer - dtime + if self.projectile_timer < 0.01 then + self.projectile_timer = 0.01 + end + end + + return -- don't allow collision detection + --do normal ai + else + --jump only (like slimes) + if self.jump_only then + jump_state_switch(self, dtime) + jump_state_execution(self, dtime) + --swimming + elseif self.swim then + swim_state_switch(self, dtime) + swim_state_execution(self, dtime) + --flying + elseif self.fly then + fly_state_switch(self, dtime) + fly_state_execution(self,dtime) + --regular mobs that walk around + else + land_state_switch(self, dtime) + land_state_execution(self,dtime) + end + end + + --do not continue if non-existent + if not self or not self.object or not self.object:get_luaentity() then + self.object:remove() + return false + end + + --make it so mobs do not glitch out when walking around/jumping + mobs.swap_auto_step_height_adjust(self) + + + -- can mob be pushed, if so calculate direction -- do this last (overrides everything) + if self.pushable then + mobs.collision(self) + end + + --overrides absolutely everything + --mobs get stuck in cobwebs like players + if not self.ignores_cobwebs then + + local pos = self.object:get_pos() + local node = pos and minetest_get_node(pos).name + + if node == "mcl_core:cobweb" then + + --fight the rest of the api + if self.object:get_acceleration().y ~= 0 then + self.object:set_acceleration(vector_new(0,0,0)) + end + + mobs.stick_in_cobweb(self) + + self.was_stuck_in_cobweb = true + + else + --do not override other functions + if self.was_stuck_in_cobweb == true then + --return the mob back to normal + self.was_stuck_in_cobweb = nil + if self.object:get_acceleration().y == 0 and not self.swim and not self.fly then + self.object:set_acceleration(vector_new(0,-self.gravity,0)) + end + end + end + end + + self.old_velocity = self.object:get_velocity() + self.old_pos = self.object:get_pos() +end diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua new file mode 100644 index 000000000..c26d33089 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua @@ -0,0 +1,259 @@ +local math_pi = math.pi +local math_floor = math.floor +local math_random = math.random +local HALF_PI = math_pi/2 + + +local vector_direction = vector.direction +local vector_distance = vector.distance +local vector_new = vector.new + +local minetest_dir_to_yaw = minetest.dir_to_yaw + +-- set defined animation +mobs.set_mob_animation = function(self, anim, fixed_frame) + + if not self.animation or not anim then + return + end + + if self.state == "die" and anim ~= "die" and anim ~= "stand" then + return + end + + + if (not self.animation[anim .. "_start"] or not self.animation[anim .. "_end"]) then + return + end + + --animations break if they are constantly set + --so we put this return gate to check if it is + --already at the animation we are trying to implement + if self.current_animation == anim then + return + end + + local a_start = self.animation[anim .. "_start"] + local a_end + + if fixed_frame then + a_end = a_start + else + a_end = self.animation[anim .. "_end"] + end + + self.object:set_animation({ + x = a_start, + y = a_end}, + self.animation[anim .. "_speed"] or self.animation.speed_normal or 15, + 0, self.animation[anim .. "_loop"] ~= false) + + + self.current_animation = anim +end + + + + +mobs.death_effect = function(pos, yaw, collisionbox, rotate) + local min, max + if collisionbox then + min = {x=collisionbox[1], y=collisionbox[2], z=collisionbox[3]} + max = {x=collisionbox[4], y=collisionbox[5], z=collisionbox[6]} + else + min = { x = -0.5, y = 0, z = -0.5 } + max = { x = 0.5, y = 0.5, z = 0.5 } + end + if rotate then + min = vector.rotate(min, {x=0, y=yaw, z=math_pi/2}) + max = vector.rotate(max, {x=0, y=yaw, z=math_pi/2}) + min, max = vector.sort(min, max) + min = vector.multiply(min, 0.5) + max = vector.multiply(max, 0.5) + end + + minetest_add_particlespawner({ + amount = 50, + time = 0.001, + minpos = vector.add(pos, min), + maxpos = vector.add(pos, max), + minvel = vector_new(-5,-5,-5), + maxvel = vector_new(5,5,5), + minexptime = 1.1, + maxexptime = 1.5, + minsize = 1, + maxsize = 2, + collisiondetection = false, + vertical = false, + texture = "mcl_particles_mob_death.png^[colorize:#000000:255", + }) + + minetest_sound_play("mcl_mobs_mob_poof", { + pos = pos, + gain = 1.0, + max_hear_distance = 8, + }, true) +end + + +--this allows auto facedir rotation while making it so mobs +--don't look like wet noodles flopping around +mobs.movement_rotation_lock = function(self) + + local current_engine_yaw = self.object:get_yaw() + local current_lua_yaw = self.yaw + + if current_engine_yaw > math.pi * 2 then + current_engine_yaw = current_engine_yaw - (math.pi * 2) + end + + if math.abs(current_engine_yaw - current_lua_yaw) <= 0.05 and self.object:get_properties().automatic_face_movement_dir then + self.object:set_properties{automatic_face_movement_dir = false} + elseif math.abs(current_engine_yaw - current_lua_yaw) > 0.05 and self.object:get_properties().automatic_face_movement_dir == false then + self.object:set_properties{automatic_face_movement_dir = self.rotate} + end +end + + +--this is used when a mob is chasing a player +mobs.set_yaw_while_attacking = function(self) + + if self.object:get_properties().automatic_face_movement_dir then + self.object:set_properties{automatic_face_movement_dir = false} + end + + --turn positions into pseudo 2d vectors + local pos1 = self.object:get_pos() + pos1.y = 0 + + local pos2 = self.attacking:get_pos() + pos2.y = 0 + + local new_direction = vector_direction(pos1,pos2) + local new_yaw = minetest_dir_to_yaw(new_direction) + + self.object:set_yaw(new_yaw) + self.yaw = new_yaw +end + +--this is used to unlock a mob's yaw after attacking +mobs.unlock_yaw = function(self) + if self.object:get_properties().automatic_face_movement_dir == false then + self.object:set_properties{automatic_face_movement_dir = self.rotate} + end +end + +--this is used to lock a mob's yaw when they're standing +mobs.lock_yaw = function(self) + if self.object:get_properties().automatic_face_movement_dir then + self.object:set_properties{automatic_face_movement_dir = false} + end +end + + +local calculate_pitch = function(self) + local pos = self.object:get_pos() + local pos2 = self.old_pos + + if pos == nil or pos2 == nil then + return false + end + + return(minetest_dir_to_yaw(vector_new(vector_distance(vector_new(pos.x,0,pos.z),vector_new(pos2.x,0,pos2.z)),0,pos.y - pos2.y)) + HALF_PI) +end + +--this is a helper function used to make mobs pitch rotation dynamically flow when flying/swimming +mobs.set_dynamic_pitch = function(self) + local pitch = calculate_pitch(self) + + if not pitch then + return + end + + local current_rotation = self.object:get_rotation() + + current_rotation.x = pitch + + self.object:set_rotation(current_rotation) + + self.pitch_switch = "dynamic" +end + +--this is a helper function used to make mobs pitch rotation reset when flying/swimming +mobs.set_static_pitch = function(self) + + if self.pitch_switch == "static" then + return + end + + local current_rotation = self.object:get_rotation() + + current_rotation.x = 0 + + self.object:set_rotation(current_rotation) + self.pitch_switch = "static" +end + +--this is a helper function for mobs explosion animation +mobs.handle_explosion_animation = function(self) + + --secondary catch-all + if not self.explosion_animation then + self.explosion_animation = 0 + end + + --the timer works from 0 for sense of a 0 based counting + --but this just bumps it up so it's usable in here + local explosion_timer_adjust = self.explosion_animation + 1 + + + local visual_size_modified = table.copy(self.visual_size_origin) + + visual_size_modified.x = visual_size_modified.x * (explosion_timer_adjust ^ 3) + visual_size_modified.y = visual_size_modified.y * explosion_timer_adjust + + self.object:set_properties({visual_size = visual_size_modified}) +end + + +--this is used when a mob is following player +mobs.set_yaw_while_following = function(self) + + if self.object:get_properties().automatic_face_movement_dir then + self.object:set_properties{automatic_face_movement_dir = false} + end + + --turn positions into pseudo 2d vectors + local pos1 = self.object:get_pos() + pos1.y = 0 + + local pos2 = self.following_person:get_pos() + pos2.y = 0 + + local new_direction = vector_direction(pos1,pos2) + local new_yaw = minetest_dir_to_yaw(new_direction) + + self.object:set_yaw(new_yaw) + self.yaw = new_yaw +end + +--this is used for when mobs breed +mobs.set_yaw_while_breeding = function(self, mate) + + if self.object:get_properties().automatic_face_movement_dir then + self.object:set_properties{automatic_face_movement_dir = false} + end + + --turn positions into pseudo 2d vectors + local pos1 = self.object:get_pos() + pos1.y = 0 + + local pos2 = mate:get_pos() + pos2.y = 0 + + local new_direction = vector_direction(pos1,pos2) + local new_yaw = minetest_dir_to_yaw(new_direction) + + self.object:set_yaw(new_yaw) + self.yaw = new_yaw +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/attack_type_instructions.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/attack_type_instructions.lua new file mode 100644 index 000000000..c973f3d1b --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/attack_type_instructions.lua @@ -0,0 +1,351 @@ +local vector_direction = vector.direction +local minetest_dir_to_yaw = minetest.dir_to_yaw +local vector_distance = vector.distance +local vector_multiply = vector.multiply +local math_random = math.random + +--[[ + _ _ _ _ +| | | | | | | | +| | | | __ _ _ __ __| | | | +| | | | / _` | '_ \ / _` | | | +|_| | |___| (_| | | | | (_| | |_| +(_) \_____/\__,_|_| |_|\__,_| (_) +]]-- + + + +--[[ + _____ _ _ +| ___| | | | | +| |____ ___ __ | | ___ __| | ___ +| __\ \/ / '_ \| |/ _ \ / _` |/ _ \ +| |___> <| |_) | | (_) | (_| | __/ +\____/_/\_\ .__/|_|\___/ \__,_|\___| + | | + |_| +]]-- + +mobs.explode_attack_walk = function(self,dtime) + + --this needs an exception + if self.attacking == nil or not self.attacking:is_player() then + self.attacking = nil + return + end + + mobs.set_yaw_while_attacking(self) + + local distance_from_attacking = vector_distance(self.object:get_pos(), self.attacking:get_pos()) + + --make mob walk up to player within 2 nodes distance then start exploding + if distance_from_attacking >= self.reach and + --don't allow explosion to cancel unless out of the reach boundary + not (self.explosion_animation ~= nil and self.explosion_animation > 0 and distance_from_attacking <= self.defuse_reach) then + + mobs.set_velocity(self, self.run_velocity) + mobs.set_mob_animation(self,"run") + + mobs.reverse_explosion_animation(self,dtime) + else + mobs.set_velocity(self,0) + + --this is the only way I can reference this without dumping extra data on all mobs + if not self.explosion_animation then + self.explosion_animation = 0 + end + + --play ignite sound + if self.explosion_animation == 0 then + mobs.play_sound(self,"attack") + end + + mobs.set_mob_animation(self,"stand") + + mobs.handle_explosion_animation(self) + + self.explosion_animation = self.explosion_animation + (dtime/2.5) + end + + --make explosive mobs jump + --check for nodes to jump over + --explosive mobs will just ride against walls for now + local node_in_front_of = mobs.jump_check(self) + if node_in_front_of == 1 then + mobs.jump(self) + end + + + --do biggening explosion thing + if self.explosion_animation and self.explosion_animation > self.explosion_timer then + mcl_explosions.explode(self.object:get_pos(), self.explosion_strength,{ drop_chance = 1.0 }) + self.object:remove() + end +end + + +--this is a small helper function to make working with explosion animations easier +mobs.reverse_explosion_animation = function(self,dtime) + + --if explosion animation was greater than 0 then reverse it + if self.explosion_animation ~= nil and self.explosion_animation > 0 then + self.explosion_animation = self.explosion_animation - dtime + if self.explosion_animation < 0 then + self.explosion_animation = 0 + end + end + + mobs.handle_explosion_animation(self) +end + + + + +--[[ +______ _ +| ___ \ | | +| |_/ / _ _ __ ___| |__ +| __/ | | | '_ \ / __| '_ \ +| | | |_| | | | | (__| | | | +\_| \__,_|_| |_|\___|_| |_| +]]-- + + + +mobs.punch_attack_walk = function(self,dtime) + + --this needs an exception + if self.attacking == nil or not self.attacking:is_player() then + self.attacking = nil + return + end + + local distance_from_attacking = mobs.get_2d_distance(self.object:get_pos(), self.attacking:get_pos()) + + if distance_from_attacking >= self.minimum_follow_distance then + mobs.set_velocity(self, self.run_velocity) + mobs.set_mob_animation(self, "run") + else + mobs.set_velocity(self, 0) + mobs.set_mob_animation(self, "stand") + end + + mobs.set_yaw_while_attacking(self) + + --make punchy mobs jump + --check for nodes to jump over + --explosive mobs will just ride against walls for now + local node_in_front_of = mobs.jump_check(self) + + if node_in_front_of == 1 then + mobs.jump(self) + end + + --mobs that can climb over stuff + if self.always_climb and node_in_front_of > 0 then + mobs.climb(self) + end + + + --auto reset punch_timer + if not self.punch_timer then + self.punch_timer = 0 + end + + if self.punch_timer > 0 then + self.punch_timer = self.punch_timer - dtime + end +end + +mobs.punch_attack = function(self) + + self.attacking:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = self.damage} + }, nil) + + self.punch_timer = self.punch_timer_cooloff + + + --knockback + local pos1 = self.object:get_pos() + pos1.y = 0 + local pos2 = self.attacking:get_pos() + pos2.y = 0 + local dir = vector_direction(pos1,pos2) + + dir = vector_multiply(dir,3) + + if self.attacking:get_velocity().y <= 1 then + dir.y = 5 + end + + self.attacking:add_velocity(dir) +end + + + + +--[[ +______ _ _ _ _ +| ___ \ (_) | | (_) | +| |_/ / __ ___ _ ___ ___| |_ _| | ___ +| __/ '__/ _ \| |/ _ \/ __| __| | |/ _ \ +| | | | | (_) | | __/ (__| |_| | | __/ +\_| |_| \___/| |\___|\___|\__|_|_|\___| + _/ | + |__/ +]]-- + + +mobs.projectile_attack_walk = function(self,dtime) + + --this needs an exception + if self.attacking == nil or not self.attacking:is_player() then + self.attacking = nil + return + end + + mobs.set_yaw_while_attacking(self) + + local distance_from_attacking = vector_distance(self.object:get_pos(), self.attacking:get_pos()) + + + if distance_from_attacking >= self.reach then + mobs.set_velocity(self, self.run_velocity) + mobs.set_mob_animation(self,"run") + else + mobs.set_velocity(self,0) + mobs.set_mob_animation(self,"stand") + end + + --do this to not load data into other mobs + if not self.projectile_timer then + self.projectile_timer = math_random(self.projectile_cooldown_min, self.projectile_cooldown_max) + end + + --run projectile timer + if self.projectile_timer > 0 then + self.projectile_timer = self.projectile_timer - dtime + + --shoot + if self.projectile_timer <= 0 then + --reset timer + self.projectile_timer = math_random(self.projectile_cooldown_min, self.projectile_cooldown_max) + mobs.shoot_projectile(self) + end + end + + --make shooty mobs jump + --check for nodes to jump over + --explosive mobs will just ride against walls for now + local node_in_front_of = mobs.jump_check(self) + if node_in_front_of == 1 then + mobs.jump(self) + end + +end + + + + + + + + + +--[[ + _ ______ _ _ +| | | ___| | | | +| | | |_ | |_ _ | | +| | | _| | | | | | | | +|_| | | | | |_| | |_| +(_) \_| |_|\__, | (_) + __/ | + |___/ +]]-- + + + + +--[[ +______ _ _ _ _ +| ___ \ (_) | | (_) | +| |_/ / __ ___ _ ___ ___| |_ _| | ___ +| __/ '__/ _ \| |/ _ \/ __| __| | |/ _ \ +| | | | | (_) | | __/ (__| |_| | | __/ +\_| |_| \___/| |\___|\___|\__|_|_|\___| + _/ | + |__/ +]]-- + +local random_pitch_multiplier = {-1,1} + +mobs.projectile_attack_fly = function(self, dtime) + + --this needs an exception + if self.attacking == nil or not self.attacking:is_player() then + self.attacking = nil + return + end + + --this is specifically for random ghast movement + if self.fly_random_while_attack then + + --enable rotation locking + mobs.movement_rotation_lock(self) + + self.walk_timer = self.walk_timer - dtime + + --reset the walk timer + if self.walk_timer <= 0 then + --re-randomize the walk timer + self.walk_timer = math.random(1,6) + math.random() + --set the mob into a random direction + self.yaw = (math_random() * (math.pi * 2)) + --create a truly random pitch, since there is no easy access to pitch math that I can find + self.pitch = math_random() * math.random(1,3) * random_pitch_multiplier[math_random(1,2)] + end + + mobs.set_fly_velocity(self, self.run_velocity) + + else + + mobs.set_yaw_while_attacking(self) + + local distance_from_attacking = vector_distance(self.object:get_pos(), self.attacking:get_pos()) + + if distance_from_attacking >= self.reach then + mobs.set_pitch_while_attacking(self) + mobs.set_fly_velocity(self, self.run_velocity) + mobs.set_mob_animation(self,"run") + else + mobs.set_pitch_while_attacking(self) + mobs.set_fly_velocity(self, 0) + mobs.set_mob_animation(self,"stand") + end + end + + + --do this to not load data into other mobs + if not self.projectile_timer then + self.projectile_timer = math_random(self.projectile_cooldown_min, self.projectile_cooldown_max) + end + + --run projectile timer + if self.projectile_timer > 0 then + self.projectile_timer = self.projectile_timer - dtime + + --shoot + if self.projectile_timer <= 0 then + + if self.fly_random_while_attack then + mobs.set_yaw_while_attacking(self) + self.walk_timer = 0 + end + --reset timer + self.projectile_timer = math_random(self.projectile_cooldown_min, self.projectile_cooldown_max) + mobs.shoot_projectile(self) + end + end +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/backup_code_api.lua similarity index 55% rename from mods/ENTITIES/mcl_mobs/api.lua rename to mods/ENTITIES/mcl_mobs/api/mob_functions/backup_code_api.lua index 3f635ece0..76c062a40 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/backup_code_api.lua @@ -1,118 +1,3 @@ - --- API for Mobs Redo: MineClone 2 Edition (MRM) - -mobs = {} -mobs.mod = "mrm" -mobs.version = "20210106" -- don't rely too much on this, rarely updated, if ever - -local MAX_MOB_NAME_LENGTH = 30 -local HORNY_TIME = 30 -local HORNY_AGAIN_TIME = 300 -local CHILD_GROW_TIME = 60*20 -local DEATH_DELAY = 0.5 -local DEFAULT_FALL_SPEED = -10 -local FLOP_HEIGHT = 5.0 -local FLOP_HOR_SPEED = 1.5 - -local MOB_CAP = {} -MOB_CAP.hostile = 70 -MOB_CAP.passive = 10 -MOB_CAP.ambient = 15 -MOB_CAP.water = 15 - --- Localize -local S = minetest.get_translator("mcl_mobs") - --- CMI support check -local use_cmi = minetest.global_exists("cmi") - - --- Invisibility mod check -mobs.invis = {} -if minetest.global_exists("invisibility") then - mobs.invis = invisibility -end - - --- creative check -function mobs.is_creative(name) - return minetest.is_creative_enabled(name) -end - - --- localize math functions -local pi = math.pi -local sin = math.sin -local cos = math.cos -local abs = math.abs -local min = math.min -local max = math.max -local atann = math.atan -local random = math.random -local floor = math.floor -local atan = function(x) - if not x or x ~= x then - return 0 - else - return atann(x) - end -end - - --- Load settings -local damage_enabled = minetest.settings:get_bool("enable_damage") -local disable_blood = minetest.settings:get_bool("mobs_disable_blood") -local mobs_drop_items = minetest.settings:get_bool("mobs_drop_items") ~= false -local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false -local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= false -local remove_far = true -local difficulty = tonumber(minetest.settings:get("mob_difficulty")) or 1.0 -local show_health = false -local max_per_block = tonumber(minetest.settings:get("max_objects_per_block") or 64) -local mobs_spawn_chance = tonumber(minetest.settings:get("mobs_spawn_chance") or 2.5) - --- Shows helpful debug info above each mob -local mobs_debug = minetest.settings:get_bool("mobs_debug", false) - --- Peaceful mode message so players will know there are no monsters -if minetest.settings:get_bool("only_peaceful_mobs", false) then - minetest.register_on_joinplayer(function(player) - minetest.chat_send_player(player:get_player_name(), - S("Peaceful mode active! No monsters will spawn.")) - end) -end - --- pathfinding settings -local enable_pathfinding = true -local stuck_timeout = 3 -- how long before mob gets stuck in place and starts searching -local stuck_path_timeout = 10 -- how long will mob follow path before giving up - --- default nodes -local node_ice = "mcl_core:ice" -local node_snowblock = "mcl_core:snowblock" -local node_snow = "mcl_core:snow" -mobs.fallback_node = minetest.registered_aliases["mapgen_dirt"] or "mcl_core:dirt" - -local mod_weather = minetest.get_modpath("mcl_weather") ~= nil -local mod_explosions = minetest.get_modpath("mcl_explosions") ~= nil -local mod_mobspawners = minetest.get_modpath("mcl_mobspawners") ~= nil -local mod_hunger = minetest.get_modpath("mcl_hunger") ~= nil -local mod_worlds = minetest.get_modpath("mcl_worlds") ~= nil -local mod_armor = minetest.get_modpath("mcl_armor") ~= nil -local mod_experience = minetest.get_modpath("mcl_experience") ~= nil - -----For Water Flowing: -local enable_physics = function(object, luaentity, ignore_check) - if luaentity.physical_state == false or ignore_check == true then - luaentity.physical_state = true - object:set_properties({ - physical = true - }) - object:set_velocity({x=0,y=0,z=0}) - object:set_acceleration({x=0,y=-9.81,z=0}) - end -end - local disable_physics = function(object, luaentity, ignore_check, reset_movement) if luaentity.physical_state == true or ignore_check == true then luaentity.physical_state = false @@ -126,629 +11,912 @@ local disable_physics = function(object, luaentity, ignore_check, reset_movement end end - --- play sound -local mob_sound = function(self, soundname, is_opinion, fixed_pitch) - - local soundinfo - if self.sounds_child and self.child then - soundinfo = self.sounds_child - elseif self.sounds then - soundinfo = self.sounds +----For Water Flowing: +local enable_physics = function(object, luaentity, ignore_check) + if luaentity.physical_state == false or ignore_check == true then + luaentity.physical_state = true + object:set_properties({ + physical = true + }) + object:set_velocity({x=0,y=0,z=0}) + object:set_acceleration({x=0,y=-9.81,z=0}) end - if not soundinfo then - return - end - local sound = soundinfo[soundname] - if sound then - if is_opinion and self.opinion_sound_cooloff > 0 then - return - end - local pitch - if not fixed_pitch then - local base_pitch = soundinfo.base_pitch - if not base_pitch then - base_pitch = 1 +end + +--[[ +local timer = 0 +minetest.register_globalstep(function(dtime) + timer = timer + dtime + if timer < 1 then return end + for _, player in pairs(minetest.get_connected_players()) do + local pos = player:get_pos() + for _, obj in pairs(minetest_get_objects_inside_radius(pos, 47)) do + local lua = obj:get_luaentity() + if lua and lua._cmi_is_mob then + lua.lifetimer = math.max(20, lua.lifetimer) + lua.despawn_immediately = false end - if self.child and (not self.sounds_child) then - -- Children have higher pitch - pitch = base_pitch * 1.5 - else - pitch = base_pitch + end + end + timer = 0 +end) +]]-- + +-- compatibility function for old entities to new modpack entities +function mobs:alias_mob(old_name, new_name) + + -- spawn egg + minetest.register_alias(old_name, new_name) + + -- entity + minetest.register_entity(":" .. old_name, { + + physical = false, + + on_step = function(self) + + if minetest_registered_entities[new_name] then + minetest_add_entity(self.object:get_pos(), new_name) end - -- randomize the pitch a bit - pitch = pitch + math.random(-10, 10) * 0.005 + + self.object:remove() end - minetest.sound_play(sound, { - object = self.object, - gain = 1.0, - max_hear_distance = self.sounds.distance, - pitch = pitch, - }, true) - self.opinion_sound_cooloff = 1 - end -end - --- Return true if object is in view_range -local function object_in_range(self, object) - if not object then - return false - end - local factor - -- Apply view range reduction for special player armor - if object:is_player() and mod_armor then - factor = armor:get_mob_view_range_factor(object, self.name) - end - -- Distance check - local dist - if factor and factor == 0 then - return false - elseif factor then - dist = self.view_range * factor - else - dist = self.view_range - end - - local p1, p2 = self.object:get_pos(), object:get_pos() - return p1 and p2 and (vector.distance(p1, p2) <= dist) -end - --- attack player/mob -local do_attack = function(self, player) - - if self.state == "attack" or self.state == "die" then - return - end - - self.attack = player - self.state = "attack" - - -- TODO: Implement war_cry sound without being annoying - --if random(0, 100) < 90 then - --mob_sound(self, "war_cry", true) - --end -end - - --- collision function borrowed amended from jordan4ibanez open_ai mod -local collision = function(self) - - local pos = self.object:get_pos() - local vel = self.object:get_velocity() - local x = 0 - local z = 0 - local width = -self.collisionbox[1] + self.collisionbox[4] + 0.5 - - for _,object in pairs(minetest.get_objects_inside_radius(pos, width)) do - - if object:is_player() - or (object:get_luaentity()._cmi_is_mob == true and object ~= self.object) then - - local pos2 = object:get_pos() - local vec = {x = pos.x - pos2.x, z = pos.z - pos2.z} - local force = (width + 0.5) - vector.distance( - {x = pos.x, y = 0, z = pos.z}, - {x = pos2.x, y = 0, z = pos2.z}) - - x = x + (vec.x * force) - z = z + (vec.z * force) - end - end - - return({x,z}) -end - --- move mob in facing direction -local set_velocity = function(self, v) - - local c_x, c_y = 0, 0 - - -- can mob be pushed, if so calculate direction - if self.pushable then - c_x, c_y = unpack(collision(self)) - end - - -- halt mob if it has been ordered to stay - if self.order == "stand" then - self.object:set_velocity({x = 0, y = 0, z = 0}) - return - end - - local yaw = (self.object:get_yaw() or 0) + self.rotate - - self.object:set_velocity({ - x = (sin(yaw) * -v) + c_x, - y = self.object:get_velocity().y, - z = (cos(yaw) * v) + c_y, }) end - - --- calculate mob velocity -local get_velocity = function(self) - - local v = self.object:get_velocity() - if v then - return (v.x * v.x + v.z * v.z) ^ 0.5 - end - - return 0 -end - -local function update_roll(self) - local is_Fleckenstein = self.nametag == "Fleckenstein" - local was_Fleckenstein = false - - local rot = self.object:get_rotation() - rot.z = is_Fleckenstein and pi or 0 - self.object:set_rotation(rot) - - local cbox = table.copy(self.collisionbox) - local acbox = self.object:get_properties().collisionbox - - if math.abs(cbox[2] - acbox[2]) > 0.1 then - was_Fleckenstein = true - end - - if is_Fleckenstein ~= was_Fleckenstein then - local pos = self.object:get_pos() - pos.y = pos.y + (acbox[2] + acbox[5]) - self.object:set_pos(pos) - end - - if is_Fleckenstein then - cbox[2], cbox[5] = -cbox[5], -cbox[2] - end - - self.object:set_properties({collisionbox = cbox}) -end - --- set and return valid yaw -local set_yaw = function(self, yaw, delay, dtime) - - if not yaw or yaw ~= yaw then - yaw = 0 - end - - delay = delay or 0 - - if delay == 0 then - if self.shaking and dtime then - yaw = yaw + (math.random() * 2 - 1) * 5 * dtime - end - self.object:set_yaw(yaw) - update_roll(self) - return yaw - end - - self.target_yaw = yaw - self.delay = delay - - return self.target_yaw -end - --- global function to set mob yaw -function mobs:yaw(self, yaw, delay, dtime) - set_yaw(self, yaw, delay, dtime) -end - -local add_texture_mod = function(self, mod) - local full_mod = "" - local already_added = false - for i=1, #self.texture_mods do - if mod == self.texture_mods[i] then - already_added = true - end - full_mod = full_mod .. self.texture_mods[i] - end - if not already_added then - full_mod = full_mod .. mod - table.insert(self.texture_mods, mod) - end - self.object:set_texture_mod(full_mod) -end -local remove_texture_mod = function(self, mod) - local full_mod = "" - local remove = {} - for i=1, #self.texture_mods do - if self.texture_mods[i] ~= mod then - full_mod = full_mod .. self.texture_mods[i] - else - table.insert(remove, i) - end - end - for i=#remove, 1 do - table.remove(self.texture_mods, remove[i]) - end - self.object:set_texture_mod(full_mod) -end - --- set defined animation -local set_animation = function(self, anim, fixed_frame) - if not self.animation or not anim then - return - end - if self.state == "die" and anim ~= "die" and anim ~= "stand" then +-- Spawn a child +function mobs:spawn_child(pos, mob_type) + local child = minetest_add_entity(pos, mob_type) + if not child then return end - self.animation.current = self.animation.current or "" + local ent = child:get_luaentity() + effect(pos, 15, "mcl_particles_smoke.png", 1, 2, 2, 15, 5) - if (anim == self.animation.current - or not self.animation[anim .. "_start"] - or not self.animation[anim .. "_end"]) and self.state ~= "die" then - return + ent.child = true + + local textures + -- using specific child texture (if found) + if ent.child_texture then + textures = ent.child_texture[1] end - self.animation.current = anim + -- and resize to half height + child:set_properties({ + textures = textures, + visual_size = { + x = ent.base_size.x * .5, + y = ent.base_size.y * .5, + }, + collisionbox = { + ent.base_colbox[1] * .5, + ent.base_colbox[2] * .5, + ent.base_colbox[3] * .5, + ent.base_colbox[4] * .5, + ent.base_colbox[5] * .5, + ent.base_colbox[6] * .5, + }, + selectionbox = { + ent.base_selbox[1] * .5, + ent.base_selbox[2] * .5, + ent.base_selbox[3] * .5, + ent.base_selbox[4] * .5, + ent.base_selbox[5] * .5, + ent.base_selbox[6] * .5, + }, + }) - local a_start = self.animation[anim .. "_start"] - local a_end - if fixed_frame then - a_end = a_start - else - a_end = self.animation[anim .. "_end"] - end - - self.object:set_animation({ - x = a_start, - y = a_end}, - self.animation[anim .. "_speed"] or self.animation.speed_normal or 15, - 0, self.animation[anim .. "_loop"] ~= false) + return child end --- above function exported for mount.lua -function mobs:set_animation(self, anim) - set_animation(self, anim) -end --- Returns true is node can deal damage to self -local is_node_dangerous = function(self, nodename) - local nn = nodename - if self.lava_damage > 0 then - if minetest.get_item_group(nn, "lava") ~= 0 then - return true - end - end - if self.fire_damage > 0 then - if minetest.get_item_group(nn, "fire") ~= 0 then - return true - end - end - if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].damage_per_second and minetest.registered_nodes[nn].damage_per_second > 0 then - return true - end - return false -end - - --- Returns true if node is a water hazard -local is_node_waterhazard = function(self, nodename) - local nn = nodename - if self.water_damage > 0 then - if minetest.get_item_group(nn, "water") ~= 0 then - return true - end - end - if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].drowning and minetest.registered_nodes[nn].drowning > 0 then - if self.breath_max ~= -1 then - -- check if the mob is water-breathing _and_ the block is water; only return true if neither is the case - -- this will prevent water-breathing mobs to classify water or e.g. sand below them as dangerous - if not self.breathes_in_water and minetest.get_item_group(nn, "water") ~= 0 then - return true - end - end - end - return false -end - - --- check line of sight (BrunoMine) -local line_of_sight = function(self, pos1, pos2, stepsize) - - stepsize = stepsize or 1 - - local s, pos = minetest.line_of_sight(pos1, pos2, stepsize) - - -- normal walking and flying mobs can see you through air - if s == true then - return true - end - - -- New pos1 to be analyzed - local npos1 = {x = pos1.x, y = pos1.y, z = pos1.z} - - local r, pos = minetest.line_of_sight(npos1, pos2, stepsize) - - -- Checks the return - if r == true then return true end - - -- Nodename found - local nn = minetest.get_node(pos).name - - -- Target Distance (td) to travel - local td = vector.distance(pos1, pos2) - - -- Actual Distance (ad) traveled - local ad = 0 - - -- It continues to advance in the line of sight in search of a real - -- obstruction which counts as 'normal' nodebox. - while minetest.registered_nodes[nn] - and minetest.registered_nodes[nn].walkable == false do - - -- Check if you can still move forward - if td < ad + stepsize then - return true -- Reached the target - end - - -- Moves the analyzed pos - local d = vector.distance(pos1, pos2) - - npos1.x = ((pos2.x - pos1.x) / d * stepsize) + pos1.x - npos1.y = ((pos2.y - pos1.y) / d * stepsize) + pos1.y - npos1.z = ((pos2.z - pos1.z) / d * stepsize) + pos1.z - - -- NaN checks - if d == 0 - or npos1.x ~= npos1.x - or npos1.y ~= npos1.y - or npos1.z ~= npos1.z then - return false - end - - ad = ad + stepsize - - -- scan again - r, pos = minetest.line_of_sight(npos1, pos2, stepsize) - - if r == true then return true end - - -- New Nodename found - nn = minetest.get_node(pos).name - - end - - return false -end - - --- are we flying in what we are suppose to? (taikedz) -local flight_check = function(self) - - local nod = self.standing_in - local def = minetest.registered_nodes[nod] - - if not def then return false end -- nil check - - local fly_in - if type(self.fly_in) == "string" then - fly_in = { self.fly_in } - elseif type(self.fly_in) == "table" then - fly_in = self.fly_in - else +-- feeding, taming and breeding (thanks blert2112) +function mobs:feed_tame(self, clicker, feed_count, breed, tame) + if not self.follow then return false end - for _,checknode in pairs(fly_in) do - if nod == checknode then - return true - elseif checknode == "__airlike" and def.walkable == false and - (def.liquidtype == "none" or minetest.get_item_group(nod, "fake_liquid") == 1) then - return true + -- can eat/tame with item in hand + if follow_holding(self, clicker) then + + -- if not in creative then take item + if not mobs.is_creative(clicker:get_player_name()) then + + local item = clicker:get_wielded_item() + + item:take_item() + + clicker:set_wielded_item(item) end - end - return false -end + mob_sound(self, "eat", nil, true) + -- increase health + self.health = self.health + 4 --- custom particle effects -local effect = function(pos, amount, texture, min_size, max_size, radius, gravity, glow, go_down) + if self.health >= self.hp_max then - radius = radius or 2 - min_size = min_size or 0.5 - max_size = max_size or 1 - gravity = gravity or -10 - glow = glow or 0 - go_down = go_down or false + self.health = self.hp_max - local ym - if go_down then - ym = 0 - else - ym = -radius - end - - minetest.add_particlespawner({ - amount = amount, - time = 0.25, - minpos = pos, - maxpos = pos, - minvel = {x = -radius, y = ym, z = -radius}, - maxvel = {x = radius, y = radius, z = radius}, - minacc = {x = 0, y = gravity, z = 0}, - maxacc = {x = 0, y = gravity, z = 0}, - minexptime = 0.1, - maxexptime = 1, - minsize = min_size, - maxsize = max_size, - texture = texture, - glow = glow, - }) -end - -local damage_effect = function(self, damage) - -- damage particles - if (not disable_blood) and damage > 0 then - - local amount_large = math.floor(damage / 2) - local amount_small = damage % 2 - - local pos = self.object:get_pos() - - pos.y = pos.y + (self.collisionbox[5] - self.collisionbox[2]) * .5 - - local texture = "mobs_blood.png" - -- full heart damage (one particle for each 2 HP damage) - if amount_large > 0 then - effect(pos, amount_large, texture, 2, 2, 1.75, 0, nil, true) - end - -- half heart damage (one additional particle if damage is an odd number) - if amount_small > 0 then - -- TODO: Use "half heart" - effect(pos, amount_small, texture, 1, 1, 1.75, 0, nil, true) - end - end -end - -mobs.death_effect = function(pos, yaw, collisionbox, rotate) - local min, max - if collisionbox then - min = {x=collisionbox[1], y=collisionbox[2], z=collisionbox[3]} - max = {x=collisionbox[4], y=collisionbox[5], z=collisionbox[6]} - else - min = { x = -0.5, y = 0, z = -0.5 } - max = { x = 0.5, y = 0.5, z = 0.5 } - end - if rotate then - min = vector.rotate(min, {x=0, y=yaw, z=pi/2}) - max = vector.rotate(max, {x=0, y=yaw, z=pi/2}) - min, max = vector.sort(min, max) - min = vector.multiply(min, 0.5) - max = vector.multiply(max, 0.5) - end - - minetest.add_particlespawner({ - amount = 50, - time = 0.001, - minpos = vector.add(pos, min), - maxpos = vector.add(pos, max), - minvel = vector.new(-5,-5,-5), - maxvel = vector.new(5,5,5), - minexptime = 1.1, - maxexptime = 1.5, - minsize = 1, - maxsize = 2, - collisiondetection = false, - vertical = false, - texture = "mcl_particles_mob_death.png^[colorize:#000000:255", - }) - - minetest.sound_play("mcl_mobs_mob_poof", { - pos = pos, - gain = 1.0, - max_hear_distance = 8, - }, true) -end - -local update_tag = function(self) - local tag - if mobs_debug then - tag = "nametag = '"..tostring(self.nametag).."'\n".. - "state = '"..tostring(self.state).."'\n".. - "order = '"..tostring(self.order).."'\n".. - "attack = "..tostring(self.attack).."\n".. - "health = "..tostring(self.health).."\n".. - "breath = "..tostring(self.breath).."\n".. - "gotten = "..tostring(self.gotten).."\n".. - "tamed = "..tostring(self.tamed).."\n".. - "horny = "..tostring(self.horny).."\n".. - "hornytimer = "..tostring(self.hornytimer).."\n".. - "runaway_timer = "..tostring(self.runaway_timer).."\n".. - "following = "..tostring(self.following) - else - tag = self.nametag - end - self.object:set_properties({ - nametag = tag, - }) - - update_roll(self) -end - --- drop items -local item_drop = function(self, cooked, looting_level) - - -- no drops if disabled by setting - if not mobs_drop_items then return end - - looting_level = looting_level or 0 - - -- no drops for child mobs (except monster) - if (self.child and self.type ~= "monster") then - return - end - - local obj, item, num - local pos = self.object:get_pos() - - self.drops = self.drops or {} -- nil check - - for n = 1, #self.drops do - local dropdef = self.drops[n] - local chance = 1 / dropdef.chance - local looting_type = dropdef.looting - - if looting_level > 0 then - local chance_function = dropdef.looting_chance_function - if chance_function then - chance = chance_function(looting_level) - elseif looting_type == "rare" then - chance = chance + (dropdef.looting_factor or 0.01) * looting_level + if self.htimer < 1 then + self.htimer = 5 end end - local num = 0 - local do_common_looting = (looting_level > 0 and looting_type == "common") - if random() < chance then - num = random(dropdef.min or 1, dropdef.max or 1) - elseif not dropdef.looting_ignore_chance then - do_common_looting = false + self.object:set_hp(self.health) + + update_tag(self) + + -- make children grow quicker + if self.child == true then + + -- deduct 10% of the time to adulthood + self.hornytimer = self.hornytimer + ((CHILD_GROW_TIME - self.hornytimer) * 0.1) + + return true end - if do_common_looting then - num = num + math.floor(math.random(0, looting_level) + 0.5) - end + -- feed and tame + self.food = (self.food or 0) + 1 + if self.food >= feed_count then - if num > 0 then - item = dropdef.name + self.food = 0 - -- cook items when true - if cooked then + if breed and self.hornytimer == 0 then + self.horny = true + end - local output = minetest.get_craft_result({ - method = "cooking", width = 1, items = {item}}) + if tame then - if output and output.item and not output.item:is_empty() then - item = output.item:get_name() + self.tamed = true + + if not self.owner or self.owner == "" then + self.owner = clicker:get_player_name() end end - -- add item if it exists - for x = 1, num do - obj = minetest.add_item(pos, ItemStack(item .. " " .. 1)) + -- make sound when fed so many times + mob_sound(self, "random", true) + end + + return true + end + + return false +end + +-- no damage to nodes explosion +function mobs:safe_boom(self, pos, strength) + minetest_sound_play(self.sounds and self.sounds.explode or "tnt_explode", { + pos = pos, + gain = 1.0, + max_hear_distance = self.sounds and self.sounds.distance or 32 + }, true) + local radius = strength + entity_physics(pos, radius) + effect(pos, 32, "mcl_particles_smoke.png", radius * 3, radius * 5, radius, 1, 0) +end + + +-- make explosion with protection and tnt mod check +function mobs:boom(self, pos, strength, fire) + self.object:remove() + if mod_explosions then + if mobs_griefing and not minetest_is_protected(pos, "") then + mcl_explosions.explode(pos, strength, { drop_chance = 1.0, fire = fire }, self.object) + else + mobs:safe_boom(self, pos, strength) + end + else + mobs:safe_boom(self, pos, strength) + end +end + +-- falling and fall damage +-- returns true if mob died +local falling = function(self, pos) + + if self.fly and self.state ~= "die" then + return + end + + if mcl_portals ~= nil then + if mcl_portals.nether_portal_cooloff(self.object) then + return false -- mob has teleported through Nether portal - it's 99% not falling + end + end + + -- floating in water (or falling) + local v = self.object:get_velocity() + + if v.y > 0 then + + -- apply gravity when moving up + self.object:set_acceleration({ + x = 0, + y = -10, + z = 0 + }) + + elseif v.y <= 0 and v.y > self.fall_speed then + + -- fall downwards at set speed + self.object:set_acceleration({ + x = 0, + y = self.fall_speed, + z = 0 + }) + else + -- stop accelerating once max fall speed hit + self.object:set_acceleration({x = 0, y = 0, z = 0}) + end + + if minetest_registered_nodes[node_ok(pos).name].groups.lava then + + if self.floats_on_lava == 1 then + + self.object:set_acceleration({ + x = 0, + y = -self.fall_speed / (max(1, v.y) ^ 2), + z = 0 + }) + end + end + + -- in water then float up + if minetest_registered_nodes[node_ok(pos).name].groups.water then + + if self.floats == 1 then + + self.object:set_acceleration({ + x = 0, + y = -self.fall_speed / (math_max(1, v.y) ^ 2), + z = 0 + }) + end + else + + end +end + + + + +-- find someone to runaway from +local runaway_from = function(self) + + if not self.runaway_from and self.state ~= "flop" then + return + end + + local s = self.object:get_pos() + local p, sp, dist + local player, obj, min_player + local type, name = "", "" + local min_dist = self.view_range + 1 + local objs = minetest_get_objects_inside_radius(s, self.view_range) + + for n = 1, #objs do + + if objs[n]:is_player() then + + if mobs.invis[ objs[n]:get_player_name() ] + or self.owner == objs[n]:get_player_name() + or (not object_in_range(self, objs[n])) then + type = "" + else + player = objs[n] + type = "player" + name = "player" end + else + obj = objs[n]:get_luaentity() - if obj and obj:get_luaentity() then + if obj then + player = obj.object + type = obj.type + name = obj.name or "" + end + end - obj:set_velocity({ - x = random(-10, 10) / 9, - y = 6, - z = random(-10, 10) / 9, - }) - elseif obj then - obj:remove() -- item does not exist + -- find specific mob to runaway from + if name ~= "" and name ~= self.name + and specific_runaway(self.runaway_from, name) then + + p = player:get_pos() + sp = s + + -- aim higher to make looking up hills more realistic + p.y = p.y + 1 + sp.y = sp.y + 1 + + dist = vector.distance(p, s) + + + -- choose closest player/mpb to runaway from + if dist < min_dist + and line_of_sight(self, sp, p, 2) == true then + min_dist = dist + min_player = player end end end - self.drops = {} + if min_player then + + local lp = player:get_pos() + local vec = { + x = lp.x - s.x, + y = lp.y - s.y, + z = lp.z - s.z + } + + local yaw = (atan(vec.z / vec.x) + 3 * math_pi / 2) - self.rotate + + if lp.x > s.x then + yaw = yaw + math_pi + end + + yaw = set_yaw(self, yaw, 4) + self.state = "runaway" + self.runaway_timer = 3 + self.following = nil + end end +-- specific runaway +local specific_runaway = function(list, what) + + -- no list so do not run + if list == nil then + return false + end + + -- found entity on list to attack? + for no = 1, #list do + + if list[no] == what then + return true + end + end + + return false +end + + +-- follow player if owner or holding item, if fish outta water then flop +local follow_flop = function(self) + + -- find player to follow + if (self.follow ~= "" + or self.order == "follow") + and not self.following + and self.state ~= "attack" + and self.order ~= "sit" + and self.state ~= "runaway" then + + local s = self.object:get_pos() + local players = minetest.get_connected_players() + + for n = 1, #players do + + if (object_in_range(self, players[n])) + and not mobs.invis[ players[n]:get_player_name() ] then + + self.following = players[n] + + break + end + end + end + + if self.type == "npc" + and self.order == "follow" + and self.state ~= "attack" + and self.order ~= "sit" + and self.owner ~= "" then + + -- npc stop following player if not owner + if self.following + and self.owner + and self.owner ~= self.following:get_player_name() then + self.following = nil + end + else + -- stop following player if not holding specific item, + -- mob is horny, fleeing or attacking + if self.following + and self.following:is_player() + and (follow_holding(self, self.following) == false or + self.horny or self.state == "runaway") then + self.following = nil + end + + end + + -- follow that thing + if self.following then + + local s = self.object:get_pos() + local p + + if self.following:is_player() then + + p = self.following:get_pos() + + elseif self.following.object then + + p = self.following.object:get_pos() + end + + if p then + + local dist = vector.distance(p, s) + + -- dont follow if out of range + if (not object_in_range(self, self.following)) then + self.following = nil + else + local vec = { + x = p.x - s.x, + z = p.z - s.z + } + + local yaw = (atan(vec.z / vec.x) + math_pi / 2) - self.rotate + + if p.x > s.x then yaw = yaw + math_pi end + + set_yaw(self, yaw, 2.35) + + -- anyone but standing npc's can move along + if dist > 3 + and self.order ~= "stand" then + + set_velocity(self, self.follow_velocity) + + if self.walk_chance ~= 0 then + set_animation(self, "run") + end + else + set_velocity(self, 0) + set_animation(self, "stand") + end + + return + end + end + end + + -- swimmers flop when out of their element, and swim again when back in + if self.fly then + local s = self.object:get_pos() + if not flight_check(self, s) then + + self.state = "flop" + self.object:set_acceleration({x = 0, y = DEFAULT_FALL_SPEED, z = 0}) + + local sdef = minetest_registered_nodes[self.standing_on] + -- Flop on ground + if sdef and sdef.walkable then + mob_sound(self, "flop") + self.object:set_velocity({ + x = math_random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED), + y = FLOP_HEIGHT, + z = math_random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED), + }) + end + + set_animation(self, "stand", true) + + return + elseif self.state == "flop" then + self.state = "stand" + self.object:set_acceleration({x = 0, y = 0, z = 0}) + set_velocity(self, 0) + end + end +end + + +-- npc, find closest monster to attack +local npc_attack = function(self) + + if self.type ~= "npc" + or not self.attacks_monsters + or self.state == "attack" then + return + end + + local p, sp, obj, min_player + local s = self.object:get_pos() + local min_dist = self.view_range + 1 + local objs = minetest_get_objects_inside_radius(s, self.view_range) + + for n = 1, #objs do + + obj = objs[n]:get_luaentity() + + if obj and obj.type == "monster" then + + p = obj.object:get_pos() + sp = s + + local dist = vector.distance(p, s) + + -- aim higher to make looking up hills more realistic + p.y = p.y + 1 + sp.y = sp.y + 1 + + if dist < min_dist + and line_of_sight(self, sp, p, 2) == true then + min_dist = dist + min_player = obj.object + end + end + end + + if min_player then + do_attack(self, min_player) + end +end + + +-- monster find someone to attack +local monster_attack = function(self) + + if self.type ~= "monster" + or not damage_enabled + or minetest_is_creative_enabled("") + or self.passive + or self.state == "attack" + or day_docile(self) then + return + end + + local s = self.object:get_pos() + local p, sp, dist + local player, obj, min_player + local type, name = "", "" + local min_dist = self.view_range + 1 + local objs = minetest_get_objects_inside_radius(s, self.view_range) + + for n = 1, #objs do + + if objs[n]:is_player() then + + if mobs.invis[ objs[n]:get_player_name() ] or (not object_in_range(self, objs[n])) then + type = "" + else + player = objs[n] + type = "player" + name = "player" + end + else + obj = objs[n]:get_luaentity() + + if obj then + player = obj.object + type = obj.type + name = obj.name or "" + end + end + + -- find specific mob to attack, failing that attack player/npc/animal + if specific_attack(self.specific_attack, name) + and (type == "player" or type == "npc" + or (type == "animal" and self.attack_animals == true)) then + + p = player:get_pos() + sp = s + + dist = vector.distance(p, s) + + -- aim higher to make looking up hills more realistic + p.y = p.y + 1 + sp.y = sp.y + 1 + + + -- choose closest player to attack + if dist < min_dist + and line_of_sight(self, sp, p, 2) == true then + min_dist = dist + min_player = player + end + end + end + + -- attack player + if min_player then + do_attack(self, min_player) + end +end + + +-- specific attacks +local specific_attack = function(list, what) + + -- no list so attack default (player, animals etc.) + if list == nil then + return true + end + + -- found entity on list to attack? + for no = 1, #list do + + if list[no] == what then + return true + end + end + + return false +end + + +-- dogfight attack switch and counter function +local dogswitch = function(self, dtime) + + -- switch mode not activated + if not self.dogshoot_switch + or not dtime then + return 0 + end + + self.dogshoot_count = self.dogshoot_count + dtime + + if (self.dogshoot_switch == 1 + and self.dogshoot_count > self.dogshoot_count_max) + or (self.dogshoot_switch == 2 + and self.dogshoot_count > self.dogshoot_count2_max) then + + self.dogshoot_count = 0 + + if self.dogshoot_switch == 1 then + self.dogshoot_switch = 2 + else + self.dogshoot_switch = 1 + end + end + + return self.dogshoot_switch +end + +-- path finding and smart mob routine by rnd, line_of_sight and other edits by Elkien3 +local smart_mobs = function(self, s, p, dist, dtime) + + local s1 = self.path.lastpos + + local target_pos = self.attack:get_pos() + + -- is it becoming stuck? + if math_abs(s1.x - s.x) + math_abs(s1.z - s.z) < .5 then + self.path.stuck_timer = self.path.stuck_timer + dtime + else + self.path.stuck_timer = 0 + end + + self.path.lastpos = {x = s.x, y = s.y, z = s.z} + + local use_pathfind = false + local has_lineofsight = minetest_line_of_sight( + {x = s.x, y = (s.y) + .5, z = s.z}, + {x = target_pos.x, y = (target_pos.y) + 1.5, z = target_pos.z}, .2) + + -- im stuck, search for path + if not has_lineofsight then + + if los_switcher == true then + use_pathfind = true + los_switcher = false + end -- cannot see target! + else + if los_switcher == false then + + los_switcher = true + use_pathfind = false + + minetest_after(1, function(self) + if not self.object:get_luaentity() then + return + end + if has_lineofsight then self.path.following = false end + end, self) + end -- can see target! + end + + if (self.path.stuck_timer > stuck_timeout and not self.path.following) then + + use_pathfind = true + self.path.stuck_timer = 0 + + minetest_after(1, function(self) + if not self.object:get_luaentity() then + return + end + if has_lineofsight then self.path.following = false end + end, self) + end + + if (self.path.stuck_timer > stuck_path_timeout and self.path.following) then + + use_pathfind = true + self.path.stuck_timer = 0 + + minetest_after(1, function(self) + if not self.object:get_luaentity() then + return + end + if has_lineofsight then self.path.following = false end + end, self) + end + + if math_abs(vector.subtract(s,target_pos).y) > self.stepheight then + + if height_switcher then + use_pathfind = true + height_switcher = false + end + else + if not height_switcher then + use_pathfind = false + height_switcher = true + end + end + + if use_pathfind then + -- lets try find a path, first take care of positions + -- since pathfinder is very sensitive + local sheight = self.collisionbox[5] - self.collisionbox[2] + + -- round position to center of node to avoid stuck in walls + -- also adjust height for player models! + s.x = math_floor(s.x + 0.5) + s.z = math_floor(s.z + 0.5) + + local ssight, sground = minetest_line_of_sight(s, { + x = s.x, y = s.y - 4, z = s.z}, 1) + + -- determine node above ground + if not ssight then + s.y = sground.y + 1 + end + + local p1 = self.attack:get_pos() + + p1.x = math_floor(p1.x + 0.5) + p1.y = math_floor(p1.y + 0.5) + p1.z = math_floor(p1.z + 0.5) + + local dropheight = 12 + if self.fear_height ~= 0 then dropheight = self.fear_height end + local jumpheight = 0 + if self.jump and self.jump_height >= 4 then + jumpheight = math.min(math.ceil(self.jump_height / 4), 4) + elseif self.stepheight > 0.5 then + jumpheight = 1 + end + self.path.way = minetest_find_path(s, p1, 16, jumpheight, dropheight, "A*_noprefetch") + + self.state = "" + do_attack(self, self.attack) + + -- no path found, try something else + if not self.path.way then + + self.path.following = false + + -- lets make way by digging/building if not accessible + if self.pathfinding == 2 and mobs_griefing then + + -- is player higher than mob? + if s.y < p1.y then + + -- build upwards + if not minetest_is_protected(s, "") then + + local ndef1 = minetest_registered_nodes[self.standing_in] + + if ndef1 and (ndef1.buildable_to or ndef1.groups.liquid) then + + minetest_set_node(s, {name = mobs.fallback_node}) + end + end + + local sheight = math.ceil(self.collisionbox[5]) + 1 + + -- assume mob is 2 blocks high so it digs above its head + s.y = s.y + sheight + + -- remove one block above to make room to jump + if not minetest_is_protected(s, "") then + + local node1 = node_ok(s, "air").name + local ndef1 = minetest_registered_nodes[node1] + + if node1 ~= "air" + and node1 ~= "ignore" + and ndef1 + and not ndef1.groups.level + and not ndef1.groups.unbreakable + and not ndef1.groups.liquid then + + minetest_set_node(s, {name = "air"}) + minetest_add_item(s, ItemStack(node1)) + + end + end + + s.y = s.y - sheight + self.object:set_pos({x = s.x, y = s.y + 2, z = s.z}) + + else -- dig 2 blocks to make door toward player direction + + local yaw1 = self.object:get_yaw() + math_pi / 2 + local p1 = { + x = s.x + math_cos(yaw1), + y = s.y, + z = s.z + math_sin(yaw1) + } + + if not minetest_is_protected(p1, "") then + + local node1 = node_ok(p1, "air").name + local ndef1 = minetest_registered_nodes[node1] + + if node1 ~= "air" + and node1 ~= "ignore" + and ndef1 + and not ndef1.groups.level + and not ndef1.groups.unbreakable + and not ndef1.groups.liquid then + + minetest_add_item(p1, ItemStack(node1)) + minetest_set_node(p1, {name = "air"}) + end + + p1.y = p1.y + 1 + node1 = node_ok(p1, "air").name + ndef1 = minetest_registered_nodes[node1] + + if node1 ~= "air" + and node1 ~= "ignore" + and ndef1 + and not ndef1.groups.level + and not ndef1.groups.unbreakable + and not ndef1.groups.liquid then + + minetest_add_item(p1, ItemStack(node1)) + minetest_set_node(p1, {name = "air"}) + end + + end + end + end + + -- will try again in 2 seconds + self.path.stuck_timer = stuck_timeout - 2 + elseif s.y < p1.y and (not self.fly) then + do_jump(self) --add jump to pathfinding + self.path.following = true + -- Yay, I found path! + -- TODO: Implement war_cry sound without being annoying + --mob_sound(self, "war_cry", true) + else + set_velocity(self, self.walk_velocity) + + -- follow path now that it has it + self.path.following = true + end + end +end + + + + + + -- check if mob is dead or only hurt local check_for_death = function(self, cause, cmi_cause) @@ -775,7 +943,7 @@ local check_for_death = function(self, cause, cmi_cause) -- play damage sound if health was reduced and make mob flash red. if damaged then add_texture_mod(self, "^[colorize:red:130") - minetest.after(.2, function(self) + minetest_after(.2, function(self) if self and self.object then remove_texture_mod(self, "^[colorize:red:130") end @@ -818,8 +986,8 @@ local check_for_death = function(self, cause, cmi_cause) local looting = mcl_enchanting.get_enchantment(wielditem, "looting") item_drop(self, cooked, looting) - if mod_experience and ((not self.child) or self.type ~= "animal") and (minetest.get_us_time() - self.xp_timestamp <= 5000000) then - mcl_experience.throw_experience(self.object:get_pos(), math.random(self.xp_min, self.xp_max)) + if mod_experience and ((not self.child) or self.type ~= "animal") and (minetest_get_us_time() - self.xp_timestamp <= 5000000) then + mcl_experience.throw_experience(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) end end end @@ -884,7 +1052,7 @@ local check_for_death = function(self, cause, cmi_cause) set_animation(self, "die") else local rot = self.object:get_rotation() - rot.z = pi/2 + rot.z = math_pi/2 self.object:set_rotation(rot) length = 1 + DEATH_DELAY set_animation(self, "stand", true) @@ -911,34 +1079,366 @@ local check_for_death = function(self, cause, cmi_cause) if length <= 0 then kill(self) else - minetest.after(length, kill, self) + minetest_after(length, kill, self) end return true end +local damage_effect = function(self, damage) + -- damage particles + if (not disable_blood) and damage > 0 then --- check if within physical map limits (-30911 to 30927) -local within_limits, wmin, wmax = nil, -30913, 30928 -within_limits = function(pos, radius) - if mcl_vars then - if mcl_vars.mapgen_edge_min and mcl_vars.mapgen_edge_max then - wmin, wmax = mcl_vars.mapgen_edge_min, mcl_vars.mapgen_edge_max - within_limits = function(pos, radius) - return pos - and (pos.x - radius) > wmin and (pos.x + radius) < wmax - and (pos.y - radius) > wmin and (pos.y + radius) < wmax - and (pos.z - radius) > wmin and (pos.z + radius) < wmax + local amount_large = math_floor(damage / 2) + local amount_small = damage % 2 + + local pos = self.object:get_pos() + + pos.y = pos.y + (self.collisionbox[5] - self.collisionbox[2]) * .5 + + local texture = "mobs_blood.png" + -- full heart damage (one particle for each 2 HP damage) + if amount_large > 0 then + effect(pos, amount_large, texture, 2, 2, 1.75, 0, nil, true) + end + -- half heart damage (one additional particle if damage is an odd number) + if amount_small > 0 then + -- TODO: Use "half heart" + effect(pos, amount_small, texture, 1, 1, 1.75, 0, nil, true) + end + end +end + + +-- custom particle effects +local effect = function(pos, amount, texture, min_size, max_size, radius, gravity, glow, go_down) + + radius = radius or 2 + min_size = min_size or 0.5 + max_size = max_size or 1 + gravity = gravity or -10 + glow = glow or 0 + go_down = go_down or false + + local ym + if go_down then + ym = 0 + else + ym = -radius + end + + minetest_add_particlespawner({ + amount = amount, + time = 0.25, + minpos = pos, + maxpos = pos, + minvel = {x = -radius, y = ym, z = -radius}, + maxvel = {x = radius, y = radius, z = radius}, + minacc = {x = 0, y = gravity, z = 0}, + maxacc = {x = 0, y = gravity, z = 0}, + minexptime = 0.1, + maxexptime = 1, + minsize = min_size, + maxsize = max_size, + texture = texture, + glow = glow, + }) +end + + +-- are we flying in what we are suppose to? (taikedz) +local flight_check = function(self) + + local nod = self.standing_in + local def = minetest_registered_nodes[nod] + + if not def then return false end -- nil check + + local fly_in + if type(self.fly_in) == "string" then + fly_in = { self.fly_in } + elseif type(self.fly_in) == "table" then + fly_in = self.fly_in + else + return false + end + + for _,checknode in pairs(fly_in) do + if nod == checknode then + return true + elseif checknode == "__airlike" and def.walkable == false and + (def.liquidtype == "none" or minetest_get_item_group(nod, "fake_liquid") == 1) then + return true + end + end + + return false +end + + +-- check line of sight (BrunoMine) +local line_of_sight = function(self, pos1, pos2, stepsize) + + stepsize = stepsize or 1 + + local s, pos = minetest_line_of_sight(pos1, pos2, stepsize) + + -- normal walking and flying mobs can see you through air + if s == true then + return true + end + + -- New pos1 to be analyzed + local npos1 = {x = pos1.x, y = pos1.y, z = pos1.z} + + local r, pos = minetest_line_of_sight(npos1, pos2, stepsize) + + -- Checks the return + if r == true then return true end + + -- Nodename found + local nn = minetest_get_node(pos).name + + -- Target Distance (td) to travel + local td = vector.distance(pos1, pos2) + + -- Actual Distance (ad) traveled + local ad = 0 + + -- It continues to advance in the line of sight in search of a real + -- obstruction which counts as 'normal' nodebox. + while minetest_registered_nodes[nn] + and minetest_registered_nodes[nn].walkable == false do + + -- Check if you can still move forward + if td < ad + stepsize then + return true -- Reached the target + end + + -- Moves the analyzed pos + local d = vector.distance(pos1, pos2) + + npos1.x = ((pos2.x - pos1.x) / d * stepsize) + pos1.x + npos1.y = ((pos2.y - pos1.y) / d * stepsize) + pos1.y + npos1.z = ((pos2.z - pos1.z) / d * stepsize) + pos1.z + + -- NaN checks + if d == 0 + or npos1.x ~= npos1.x + or npos1.y ~= npos1.y + or npos1.z ~= npos1.z then + return false + end + + ad = ad + stepsize + + -- scan again + r, pos = minetest_line_of_sight(npos1, pos2, stepsize) + + if r == true then return true end + + -- New Nodename found + nn = minetest_get_node(pos).name + + end + + return false +end + +-- Returns true if node is a water hazard +local is_node_waterhazard = function(self, nodename) + local nn = nodename + if self.water_damage > 0 then + if minetest_get_item_group(nn, "water") ~= 0 then + return true + end + end + if minetest_registered_nodes[nn] and minetest_registered_nodes[nn].drowning and minetest_registered_nodes[nn].drowning > 0 then + if self.breath_max ~= -1 then + -- check if the mob is water-breathing _and_ the block is water; only return true if neither is the case + -- this will prevent water-breathing mobs to classify water or e.g. sand below them as dangerous + if not self.breathes_in_water and minetest_get_item_group(nn, "water") ~= 0 then + return true end end end - return pos - and (pos.x - radius) > wmin and (pos.x + radius) < wmax - and (pos.y - radius) > wmin and (pos.y + radius) < wmax - and (pos.z - radius) > wmin and (pos.z + radius) < wmax + return false end +-- Returns true is node can deal damage to self +local is_node_dangerous = function(self, nodename) + local nn = nodename + if self.lava_damage > 0 then + if minetest_get_item_group(nn, "lava") ~= 0 then + return true + end + end + if self.fire_damage > 0 then + if minetest_get_item_group(nn, "fire") ~= 0 then + return true + end + end + if minetest_registered_nodes[nn] and minetest_registered_nodes[nn].damage_per_second and minetest_registered_nodes[nn].damage_per_second > 0 then + return true + end + return false +end + + +local add_texture_mod = function(self, mod) + local full_mod = "" + local already_added = false + for i=1, #self.texture_mods do + if mod == self.texture_mods[i] then + already_added = true + end + full_mod = full_mod .. self.texture_mods[i] + end + if not already_added then + full_mod = full_mod .. mod + table.insert(self.texture_mods, mod) + end + self.object:set_texture_mod(full_mod) +end + + +local remove_texture_mod = function(self, mod) + local full_mod = "" + local remove = {} + for i=1, #self.texture_mods do + if self.texture_mods[i] ~= mod then + full_mod = full_mod .. self.texture_mods[i] + else + table.insert(remove, i) + end + end + for i=#remove, 1 do + table.remove(self.texture_mods, remove[i]) + end + self.object:set_texture_mod(full_mod) +end + + +-- Return true if object is in view_range +local function object_in_range(self, object) + if not object then + return false + end + local factor + -- Apply view range reduction for special player armor + if not object then + return false + end + local factor + -- Apply view range reduction for special player armor + if object:is_player() and mod_armor then + local factors = mcl_armor.player_view_range_factors[object] + factor = factors and factors[self.name] + end + -- Distance check + local dist + if factor and factor == 0 then + return false + elseif factor then + dist = self.view_range * factor + else + dist = self.view_range + end + + local p1, p2 = self.object:get_pos(), object:get_pos() + return p1 and p2 and (vector.distance(p1, p2) <= dist) +end + +-- attack player/mob +local do_attack = function(self, player) + + if self.state == "attack" or self.state == "die" then + return + end + + self.attack = player + self.state = "attack" + + -- TODO: Implement war_cry sound without being annoying + --if math_random(0, 100) < 90 then + --mob_sound(self, "war_cry", true) + --end +end + + +-- play sound +local mob_sound = function(self, soundname, is_opinion, fixed_pitch) + local soundinfo + if self.sounds_child and self.child then + soundinfo = self.sounds_child + elseif self.sounds then + soundinfo = self.sounds + end + if not soundinfo then + return + end + local sound = soundinfo[soundname] + if sound then + if is_opinion and self.opinion_sound_cooloff > 0 then + return + end + local pitch + if not fixed_pitch then + local base_pitch = soundinfo.base_pitch + if not base_pitch then + base_pitch = 1 + end + if self.child and (not self.sounds_child) then + -- Children have higher pitch + pitch = base_pitch * 1.5 + else + pitch = base_pitch + end + -- randomize the pitch a bit + pitch = pitch + math_random(-10, 10) * 0.005 + end + minetest_sound_play(sound, { + object = self.object, + gain = 1.0, + max_hear_distance = self.sounds.distance, + pitch = pitch, + }, true) + self.opinion_sound_cooloff = 1 + end +end + + +local function update_roll(self) + local is_Fleckenstein = self.nametag == "Fleckenstein" + local was_Fleckenstein = false + + local rot = self.object:get_rotation() + rot.z = is_Fleckenstein and math_pi or 0 + self.object:set_rotation(rot) + + local cbox = table.copy(self.collisionbox) + local acbox = self.object:get_properties().collisionbox + + if math_abs(cbox[2] - acbox[2]) > 0.1 then + was_Fleckenstein = true + end + + if is_Fleckenstein ~= was_Fleckenstein then + local pos = self.object:get_pos() + pos.y = pos.y + (acbox[2] + acbox[5]) + self.object:set_pos(pos) + end + + if is_Fleckenstein then + cbox[2], cbox[5] = -cbox[5], -cbox[2] + end + + self.object:set_properties({collisionbox = cbox}) +end + + + -- is mob facing a cliff or danger local is_at_cliff_or_danger = function(self) @@ -950,23 +1450,23 @@ local is_at_cliff_or_danger = function(self) return false end local yaw = self.object:get_yaw() - local dir_x = -sin(yaw) * (self.collisionbox[4] + 0.5) - local dir_z = cos(yaw) * (self.collisionbox[4] + 0.5) + local dir_x = -math_sin(yaw) * (self.collisionbox[4] + 0.5) + local dir_z = math_cos(yaw) * (self.collisionbox[4] + 0.5) local pos = self.object:get_pos() local ypos = pos.y + self.collisionbox[2] -- just above floor - local free_fall, blocker = minetest.line_of_sight( + local free_fall, blocker = minetest_line_of_sight( {x = pos.x + dir_x, y = ypos, z = pos.z + dir_z}, {x = pos.x + dir_x, y = ypos - self.fear_height, z = pos.z + dir_z}) if free_fall then return true else - local bnode = minetest.get_node(blocker) + local bnode = minetest_get_node(blocker) local danger = is_node_dangerous(self, bnode.name) if danger then return true else - local def = minetest.registered_nodes[bnode.name] + local def = minetest_registered_nodes[bnode.name] if def and def.walkable then return false end @@ -985,18 +1485,18 @@ local is_at_water_danger = function(self) return false end local yaw = self.object:get_yaw() - local dir_x = -sin(yaw) * (self.collisionbox[4] + 0.5) - local dir_z = cos(yaw) * (self.collisionbox[4] + 0.5) + local dir_x = -math_sin(yaw) * (self.collisionbox[4] + 0.5) + local dir_z = math_cos(yaw) * (self.collisionbox[4] + 0.5) local pos = self.object:get_pos() local ypos = pos.y + self.collisionbox[2] -- just above floor - local free_fall, blocker = minetest.line_of_sight( + local free_fall, blocker = minetest_line_of_sight( {x = pos.x + dir_x, y = ypos, z = pos.z + dir_z}, {x = pos.x + dir_x, y = ypos - 3, z = pos.z + dir_z}) if free_fall then return true else - local bnode = minetest.get_node(blocker) + local bnode = minetest_get_node(blocker) local waterdanger = is_node_waterhazard(self, bnode.name) if waterdanger and (is_node_waterhazard(self, self.standing_in) or is_node_waterhazard(self, self.standing_on)) then @@ -1004,7 +1504,7 @@ local is_at_water_danger = function(self) elseif waterdanger and (is_node_waterhazard(self, self.standing_in) or is_node_waterhazard(self, self.standing_on)) == false then return true else - local def = minetest.registered_nodes[bnode.name] + local def = minetest_registered_nodes[bnode.name] if def and def.walkable then return false end @@ -1014,25 +1514,10 @@ local is_at_water_danger = function(self) return false end - --- get node but use fallback for nil or unknown -local node_ok = function(pos, fallback) - - fallback = fallback or mobs.fallback_node - - local node = minetest.get_node_or_nil(pos) - - if node and minetest.registered_nodes[node.name] then - return node - end - - return minetest.registered_nodes[fallback] -end - local function get_light(pos, tod) - if minetest.get_node_or_nil(pos) then - local lightfunc = minetest.get_natural_light or minetest.get_node_light - return lightfunc(pos, tod) + local ok, light = pcall(minetest.get_natural_light or minetest.get_node_light, pos, tod) + if ok then + return light else return 0 end @@ -1120,7 +1605,7 @@ local do_env_damage = function(self) self.object:set_velocity({x = 0, y = 0, z = 0}) end - local nodef = minetest.registered_nodes[self.standing_in] + local nodef = minetest_registered_nodes[self.standing_in] -- rain if self.rain_damage > 0 and mod_weather then @@ -1161,6 +1646,8 @@ local do_env_damage = function(self) self.health = self.health - self.lava_damage + mcl_burning.set_on_fire(self.object, 15) + effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil) if check_for_death(self, "lava", {type = "environment", @@ -1177,6 +1664,8 @@ local do_env_damage = function(self) self.health = self.health - self.fire_damage + mcl_burning.set_on_fire(self.object, 8) + effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil) if check_for_death(self, "fire", {type = "environment", @@ -1202,7 +1691,7 @@ local do_env_damage = function(self) if self.breath_max ~= -1 then local drowning = false if self.breathes_in_water then - if minetest.get_item_group(self.standing_in, "water") == 0 then + if minetest_get_item_group(self.standing_in, "water") == 0 then drowning = true end elseif nodef.drowning > 0 then @@ -1210,7 +1699,7 @@ local do_env_damage = function(self) end if drowning then - self.breath = math.max(0, self.breath - 1) + self.breath = math_max(0, self.breath - 1) effect(pos, 2, "bubble.png", nil, nil, 1, nil) if self.breath <= 0 then @@ -1228,7 +1717,7 @@ local do_env_damage = function(self) return true end else - self.breath = math.min(self.breath_max, self.breath + 1) + self.breath = math_min(self.breath_max, self.breath + 1) end end @@ -1294,13 +1783,13 @@ local do_jump = function(self) local nod = node_ok(pos) - if minetest.registered_nodes[nod.name].walkable == false then + if minetest_registered_nodes[nod.name].walkable == false then return false end -- where is front - local dir_x = -sin(yaw) * (self.collisionbox[4] + 0.5) - local dir_z = cos(yaw) * (self.collisionbox[4] + 0.5) + local dir_x = -math_sin(yaw) * (self.collisionbox[4] + 0.5) + local dir_z = math_cos(yaw) * (self.collisionbox[4] + 0.5) -- what is in front of mob? nod = node_ok({ @@ -1318,7 +1807,7 @@ local do_jump = function(self) }, "air") -- we don't attempt to jump if there's a stack of blocks blocking - if minetest.registered_nodes[nodTop.name].walkable == true then + if minetest_registered_nodes[nodTop.name].walkable == true then return false end @@ -1328,11 +1817,11 @@ local do_jump = function(self) end if self.walk_chance == 0 - or minetest.registered_items[nod.name].walkable then + or minetest_registered_items[nod.name].walkable then - if minetest.get_item_group(nod.name, "fence") == 0 - and minetest.get_item_group(nod.name, "fence_gate") == 0 - and minetest.get_item_group(nod.name, "wall") == 0 then + if minetest_get_item_group(nod.name, "fence") == 0 + and minetest_get_item_group(nod.name, "fence_gate") == 0 + and minetest_get_item_group(nod.name, "wall") == 0 then local v = self.object:get_velocity() @@ -1343,7 +1832,7 @@ local do_jump = function(self) self.object:set_velocity(v) -- when in air move forward - minetest.after(0.3, function(self, v) + minetest_after(0.3, function(self, v) if (not self.object) or (not self.object:get_luaentity()) or (self.state == "die") then return end @@ -1390,7 +1879,7 @@ local entity_physics = function(pos, radius) radius = radius * 2 - local objs = minetest.get_objects_inside_radius(pos, radius) + local objs = minetest_get_objects_inside_radius(pos, radius) local obj_pos, dist for n = 1, #objs do @@ -1400,7 +1889,7 @@ local entity_physics = function(pos, radius) dist = vector.distance(pos, obj_pos) if dist < 1 then dist = 1 end - local damage = floor((4 / dist) * radius) + local damage = math_floor((4 / dist) * radius) local ent = objs[n]:get_luaentity() -- punches work on entities AND players @@ -1480,14 +1969,14 @@ local breed = function(self) return end - -- horny animal can mate for HORNY_TIME seconds, - -- afterwards horny animal cannot mate again for HORNY_AGAIN_TIME seconds + -- horny animal can mate for BREED_TIME seconds, + -- afterwards horny animal cannot mate again for BREED_TIME_AGAIN seconds if self.horny == true - and self.hornytimer < HORNY_TIME + HORNY_AGAIN_TIME then + and self.hornytimer < BREED_TIME + BREED_TIME_AGAIN then self.hornytimer = self.hornytimer + 1 - if self.hornytimer >= HORNY_TIME + HORNY_AGAIN_TIME then + if self.hornytimer >= BREED_TIME + BREED_TIME_AGAIN then self.hornytimer = 0 self.horny = false end @@ -1495,13 +1984,13 @@ local breed = function(self) -- find another same animal who is also horny and mate if nearby if self.horny == true - and self.hornytimer <= HORNY_TIME then + and self.hornytimer <= BREED_TIME then local pos = self.object:get_pos() effect({x = pos.x, y = pos.y + 1, z = pos.z}, 8, "heart.png", 3, 4, 1, 0.1) - local objs = minetest.get_objects_inside_radius(pos, 3) + local objs = minetest_get_objects_inside_radius(pos, 3) local num = 0 local ent = nil @@ -1534,18 +2023,18 @@ local breed = function(self) if ent and canmate == true and ent.horny == true - and ent.hornytimer <= HORNY_TIME then + and ent.hornytimer <= BREED_TIME then num = num + 1 end -- found your mate? then have a baby if num > 1 then - self.hornytimer = HORNY_TIME + 1 - ent.hornytimer = HORNY_TIME + 1 + self.hornytimer = BREED_TIME + 1 + ent.hornytimer = BREED_TIME + 1 -- spawn baby - minetest.after(5, function(parent1, parent2, pos) + minetest_after(5, function(parent1, parent2, pos) if not parent1.object:get_luaentity() then return end @@ -1555,7 +2044,7 @@ local breed = function(self) -- Give XP if mod_experience then - mcl_experience.throw_experience(pos, math.random(1, 7)) + mcl_experience.throw_experience(pos, math_random(1, 7)) end -- custom breed function @@ -1572,7 +2061,7 @@ local breed = function(self) -- Use texture of one of the parents - local p = math.random(1, 2) + local p = math_random(1, 2) if p == 1 then ent_c.base_texture = parent1.base_texture else @@ -1595,7 +2084,6 @@ local breed = function(self) end end - -- find and replace what mob is looking for (grass, wheat etc.) local replace = function(self, pos) @@ -1603,7 +2091,7 @@ local replace = function(self, pos) or not self.replace_what or self.child == true or self.object:get_velocity().y ~= 0 - or random(1, self.replace_rate) > 1 then + or math_random(1, self.replace_rate) > 1 then return end @@ -1611,7 +2099,7 @@ local replace = function(self, pos) if type(self.replace_what[1]) == "table" then - local num = random(#self.replace_what) + local num = math_random(#self.replace_what) what = self.replace_what[num][1] or "" with = self.replace_what[num][2] or "" @@ -1624,7 +2112,7 @@ local replace = function(self, pos) pos.y = pos.y + y_offset - local node = minetest.get_node(pos) + local node = minetest_get_node(pos) if node.name == what then local oldnode = {name = what, param2 = node.param2} @@ -1638,7 +2126,7 @@ local replace = function(self, pos) if on_replace_return ~= false then if mobs_griefing then - minetest.set_node(pos, newnode) + minetest_set_node(pos, newnode) end end @@ -1662,650 +2150,24 @@ local day_docile = function(self) end -local los_switcher = false -local height_switcher = false --- path finding and smart mob routine by rnd, line_of_sight and other edits by Elkien3 -local smart_mobs = function(self, s, p, dist, dtime) +local mob_detach_child = function(self, child) - local s1 = self.path.lastpos - - local target_pos = self.attack:get_pos() - - -- is it becoming stuck? - if abs(s1.x - s.x) + abs(s1.z - s.z) < .5 then - self.path.stuck_timer = self.path.stuck_timer + dtime - else - self.path.stuck_timer = 0 + if self.driver == child then + self.driver = nil end - self.path.lastpos = {x = s.x, y = s.y, z = s.z} - - local use_pathfind = false - local has_lineofsight = minetest.line_of_sight( - {x = s.x, y = (s.y) + .5, z = s.z}, - {x = target_pos.x, y = (target_pos.y) + 1.5, z = target_pos.z}, .2) - - -- im stuck, search for path - if not has_lineofsight then - - if los_switcher == true then - use_pathfind = true - los_switcher = false - end -- cannot see target! - else - if los_switcher == false then - - los_switcher = true - use_pathfind = false - - minetest.after(1, function(self) - if not self.object:get_luaentity() then - return - end - if has_lineofsight then self.path.following = false end - end, self) - end -- can see target! - end - - if (self.path.stuck_timer > stuck_timeout and not self.path.following) then - - use_pathfind = true - self.path.stuck_timer = 0 - - minetest.after(1, function(self) - if not self.object:get_luaentity() then - return - end - if has_lineofsight then self.path.following = false end - end, self) - end - - if (self.path.stuck_timer > stuck_path_timeout and self.path.following) then - - use_pathfind = true - self.path.stuck_timer = 0 - - minetest.after(1, function(self) - if not self.object:get_luaentity() then - return - end - if has_lineofsight then self.path.following = false end - end, self) - end - - if math.abs(vector.subtract(s,target_pos).y) > self.stepheight then - - if height_switcher then - use_pathfind = true - height_switcher = false - end - else - if not height_switcher then - use_pathfind = false - height_switcher = true - end - end - - if use_pathfind then - -- lets try find a path, first take care of positions - -- since pathfinder is very sensitive - local sheight = self.collisionbox[5] - self.collisionbox[2] - - -- round position to center of node to avoid stuck in walls - -- also adjust height for player models! - s.x = floor(s.x + 0.5) - s.z = floor(s.z + 0.5) - - local ssight, sground = minetest.line_of_sight(s, { - x = s.x, y = s.y - 4, z = s.z}, 1) - - -- determine node above ground - if not ssight then - s.y = sground.y + 1 - end - - local p1 = self.attack:get_pos() - - p1.x = floor(p1.x + 0.5) - p1.y = floor(p1.y + 0.5) - p1.z = floor(p1.z + 0.5) - - local dropheight = 12 - if self.fear_height ~= 0 then dropheight = self.fear_height end - local jumpheight = 0 - if self.jump and self.jump_height >= 4 then - jumpheight = math.min(math.ceil(self.jump_height / 4), 4) - elseif self.stepheight > 0.5 then - jumpheight = 1 - end - self.path.way = minetest.find_path(s, p1, 16, jumpheight, dropheight, "A*_noprefetch") - - self.state = "" - do_attack(self, self.attack) - - -- no path found, try something else - if not self.path.way then - - self.path.following = false - - -- lets make way by digging/building if not accessible - if self.pathfinding == 2 and mobs_griefing then - - -- is player higher than mob? - if s.y < p1.y then - - -- build upwards - if not minetest.is_protected(s, "") then - - local ndef1 = minetest.registered_nodes[self.standing_in] - - if ndef1 and (ndef1.buildable_to or ndef1.groups.liquid) then - - minetest.set_node(s, {name = mobs.fallback_node}) - end - end - - local sheight = math.ceil(self.collisionbox[5]) + 1 - - -- assume mob is 2 blocks high so it digs above its head - s.y = s.y + sheight - - -- remove one block above to make room to jump - if not minetest.is_protected(s, "") then - - local node1 = node_ok(s, "air").name - local ndef1 = minetest.registered_nodes[node1] - - if node1 ~= "air" - and node1 ~= "ignore" - and ndef1 - and not ndef1.groups.level - and not ndef1.groups.unbreakable - and not ndef1.groups.liquid then - - minetest.set_node(s, {name = "air"}) - minetest.add_item(s, ItemStack(node1)) - - end - end - - s.y = s.y - sheight - self.object:set_pos({x = s.x, y = s.y + 2, z = s.z}) - - else -- dig 2 blocks to make door toward player direction - - local yaw1 = self.object:get_yaw() + pi / 2 - local p1 = { - x = s.x + cos(yaw1), - y = s.y, - z = s.z + sin(yaw1) - } - - if not minetest.is_protected(p1, "") then - - local node1 = node_ok(p1, "air").name - local ndef1 = minetest.registered_nodes[node1] - - if node1 ~= "air" - and node1 ~= "ignore" - and ndef1 - and not ndef1.groups.level - and not ndef1.groups.unbreakable - and not ndef1.groups.liquid then - - minetest.add_item(p1, ItemStack(node1)) - minetest.set_node(p1, {name = "air"}) - end - - p1.y = p1.y + 1 - node1 = node_ok(p1, "air").name - ndef1 = minetest.registered_nodes[node1] - - if node1 ~= "air" - and node1 ~= "ignore" - and ndef1 - and not ndef1.groups.level - and not ndef1.groups.unbreakable - and not ndef1.groups.liquid then - - minetest.add_item(p1, ItemStack(node1)) - minetest.set_node(p1, {name = "air"}) - end - - end - end - end - - -- will try again in 2 seconds - self.path.stuck_timer = stuck_timeout - 2 - elseif s.y < p1.y and (not self.fly) then - do_jump(self) --add jump to pathfinding - self.path.following = true - -- Yay, I found path! - -- TODO: Implement war_cry sound without being annoying - --mob_sound(self, "war_cry", true) - else - set_velocity(self, self.walk_velocity) - - -- follow path now that it has it - self.path.following = true - end - end end - --- specific attacks -local specific_attack = function(list, what) - - -- no list so attack default (player, animals etc.) - if list == nil then - return true - end - - -- found entity on list to attack? - for no = 1, #list do - - if list[no] == what then - return true - end - end - - return false -end - --- monster find someone to attack -local monster_attack = function(self) - - if self.type ~= "monster" - or not damage_enabled - or minetest.is_creative_enabled("") - or self.passive - or self.state == "attack" - or day_docile(self) then - return - end - - local s = self.object:get_pos() - local p, sp, dist - local player, obj, min_player - local type, name = "", "" - local min_dist = self.view_range + 1 - local objs = minetest.get_objects_inside_radius(s, self.view_range) - - for n = 1, #objs do - - if objs[n]:is_player() then - - if mobs.invis[ objs[n]:get_player_name() ] or (not object_in_range(self, objs[n])) then - type = "" - else - player = objs[n] - type = "player" - name = "player" - end - else - obj = objs[n]:get_luaentity() - - if obj then - player = obj.object - type = obj.type - name = obj.name or "" - end - end - - -- find specific mob to attack, failing that attack player/npc/animal - if specific_attack(self.specific_attack, name) - and (type == "player" or type == "npc" - or (type == "animal" and self.attack_animals == true)) then - - p = player:get_pos() - sp = s - - dist = vector.distance(p, s) - - -- aim higher to make looking up hills more realistic - p.y = p.y + 1 - sp.y = sp.y + 1 - - - -- choose closest player to attack - if dist < min_dist - and line_of_sight(self, sp, p, 2) == true then - min_dist = dist - min_player = player - end - end - end - - -- attack player - if min_player then - do_attack(self, min_player) - end -end - - --- npc, find closest monster to attack -local npc_attack = function(self) - - if self.type ~= "npc" - or not self.attacks_monsters - or self.state == "attack" then - return - end - - local p, sp, obj, min_player - local s = self.object:get_pos() - local min_dist = self.view_range + 1 - local objs = minetest.get_objects_inside_radius(s, self.view_range) - - for n = 1, #objs do - - obj = objs[n]:get_luaentity() - - if obj and obj.type == "monster" then - - p = obj.object:get_pos() - sp = s - - local dist = vector.distance(p, s) - - -- aim higher to make looking up hills more realistic - p.y = p.y + 1 - sp.y = sp.y + 1 - - if dist < min_dist - and line_of_sight(self, sp, p, 2) == true then - min_dist = dist - min_player = obj.object - end - end - end - - if min_player then - do_attack(self, min_player) - end -end - - --- specific runaway -local specific_runaway = function(list, what) - - -- no list so do not run - if list == nil then - return false - end - - -- found entity on list to attack? - for no = 1, #list do - - if list[no] == what then - return true - end - end - - return false -end - - --- find someone to runaway from -local runaway_from = function(self) - - if not self.runaway_from and self.state ~= "flop" then - return - end - - local s = self.object:get_pos() - local p, sp, dist - local player, obj, min_player - local type, name = "", "" - local min_dist = self.view_range + 1 - local objs = minetest.get_objects_inside_radius(s, self.view_range) - - for n = 1, #objs do - - if objs[n]:is_player() then - - if mobs.invis[ objs[n]:get_player_name() ] - or self.owner == objs[n]:get_player_name() - or (not object_in_range(self, objs[n])) then - type = "" - else - player = objs[n] - type = "player" - name = "player" - end - else - obj = objs[n]:get_luaentity() - - if obj then - player = obj.object - type = obj.type - name = obj.name or "" - end - end - - -- find specific mob to runaway from - if name ~= "" and name ~= self.name - and specific_runaway(self.runaway_from, name) then - - p = player:get_pos() - sp = s - - -- aim higher to make looking up hills more realistic - p.y = p.y + 1 - sp.y = sp.y + 1 - - dist = vector.distance(p, s) - - - -- choose closest player/mpb to runaway from - if dist < min_dist - and line_of_sight(self, sp, p, 2) == true then - min_dist = dist - min_player = player - end - end - end - - if min_player then - - local lp = player:get_pos() - local vec = { - x = lp.x - s.x, - y = lp.y - s.y, - z = lp.z - s.z - } - - local yaw = (atan(vec.z / vec.x) + 3 * pi / 2) - self.rotate - - if lp.x > s.x then - yaw = yaw + pi - end - - yaw = set_yaw(self, yaw, 4) - self.state = "runaway" - self.runaway_timer = 3 - self.following = nil - end -end - - --- follow player if owner or holding item, if fish outta water then flop -local follow_flop = function(self) - - -- find player to follow - if (self.follow ~= "" - or self.order == "follow") - and not self.following - and self.state ~= "attack" - and self.order ~= "sit" - and self.state ~= "runaway" then - - local s = self.object:get_pos() - local players = minetest.get_connected_players() - - for n = 1, #players do - - if (object_in_range(self, players[n])) - and not mobs.invis[ players[n]:get_player_name() ] then - - self.following = players[n] - - break - end - end - end - - if self.type == "npc" - and self.order == "follow" - and self.state ~= "attack" - and self.order ~= "sit" - and self.owner ~= "" then - - -- npc stop following player if not owner - if self.following - and self.owner - and self.owner ~= self.following:get_player_name() then - self.following = nil - end - else - -- stop following player if not holding specific item, - -- mob is horny, fleeing or attacking - if self.following - and self.following:is_player() - and (follow_holding(self, self.following) == false or - self.horny or self.state == "runaway") then - self.following = nil - end - - end - - -- follow that thing - if self.following then - - local s = self.object:get_pos() - local p - - if self.following:is_player() then - - p = self.following:get_pos() - - elseif self.following.object then - - p = self.following.object:get_pos() - end - - if p then - - local dist = vector.distance(p, s) - - -- dont follow if out of range - if (not object_in_range(self, self.following)) then - self.following = nil - else - local vec = { - x = p.x - s.x, - z = p.z - s.z - } - - local yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate - - if p.x > s.x then yaw = yaw + pi end - - set_yaw(self, yaw, 2.35) - - -- anyone but standing npc's can move along - if dist > 3 - and self.order ~= "stand" then - - set_velocity(self, self.follow_velocity) - - if self.walk_chance ~= 0 then - set_animation(self, "run") - end - else - set_velocity(self, 0) - set_animation(self, "stand") - end - - return - end - end - end - - -- swimmers flop when out of their element, and swim again when back in - if self.fly then - local s = self.object:get_pos() - if not flight_check(self, s) then - - self.state = "flop" - self.object:set_acceleration({x = 0, y = DEFAULT_FALL_SPEED, z = 0}) - - local sdef = minetest.registered_nodes[self.standing_on] - -- Flop on ground - if sdef and sdef.walkable then - mob_sound(self, "flop") - self.object:set_velocity({ - x = math.random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED), - y = FLOP_HEIGHT, - z = math.random(-FLOP_HOR_SPEED, FLOP_HOR_SPEED), - }) - end - - set_animation(self, "stand", true) - - return - elseif self.state == "flop" then - self.state = "stand" - self.object:set_acceleration({x = 0, y = 0, z = 0}) - set_velocity(self, 0) - end - end -end - - --- dogshoot attack switch and counter function -local dogswitch = function(self, dtime) - - -- switch mode not activated - if not self.dogshoot_switch - or not dtime then - return 0 - end - - self.dogshoot_count = self.dogshoot_count + dtime - - if (self.dogshoot_switch == 1 - and self.dogshoot_count > self.dogshoot_count_max) - or (self.dogshoot_switch == 2 - and self.dogshoot_count > self.dogshoot_count2_max) then - - self.dogshoot_count = 0 - - if self.dogshoot_switch == 1 then - self.dogshoot_switch = 2 - else - self.dogshoot_switch = 1 - end - end - - return self.dogshoot_switch -end - --- execute current state (stand, walk, run, attacks) --- returns true if mob has died -local do_states = function(self, dtime) - - local yaw = self.object:get_yaw() or 0 +function do_states(self) if self.state == "stand" then - if random(1, 4) == 1 then + if math_random(1, 4) == 1 then local lp = nil local s = self.object:get_pos() - local objs = minetest.get_objects_inside_radius(s, 3) + local objs = minetest_get_objects_inside_radius(s, 3) for n = 1, #objs do @@ -2323,11 +2185,11 @@ local do_states = function(self, dtime) z = lp.z - s.z } - yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate + yaw = (atan(vec.z / vec.x) + math_pi / 2) - self.rotate - if lp.x > s.x then yaw = yaw + pi end + if lp.x > s.x then yaw = yaw + math_pi end else - yaw = yaw + random(-0.5, 0.5) + yaw = yaw + math_random(-0.5, 0.5) end yaw = set_yaw(self, yaw, 8) @@ -2342,7 +2204,7 @@ local do_states = function(self, dtime) if self.walk_chance ~= 0 and self.facing_fence ~= true - and random(1, 100) <= self.walk_chance + and math_random(1, 100) <= self.walk_chance and is_at_cliff_or_danger(self) == false then set_velocity(self, self.walk_velocity) @@ -2361,19 +2223,19 @@ local do_states = function(self, dtime) and self.lava_damage > 0) or self.breath_max ~= -1 then - lp = minetest.find_node_near(s, 1, {"group:water", "group:lava"}) + lp = minetest_find_node_near(s, 1, {"group:water", "group:lava"}) elseif self.water_damage > 0 then - lp = minetest.find_node_near(s, 1, {"group:water"}) + lp = minetest_find_node_near(s, 1, {"group:water"}) elseif self.lava_damage > 0 then - lp = minetest.find_node_near(s, 1, {"group:lava"}) + lp = minetest_find_node_near(s, 1, {"group:lava"}) elseif self.fire_damage > 0 then - lp = minetest.find_node_near(s, 1, {"group:fire"}) + lp = minetest_find_node_near(s, 1, {"group:fire"}) end @@ -2387,12 +2249,12 @@ local do_states = function(self, dtime) -- If mob in or on dangerous block, look for land if is_in_danger then -- Better way to find shore - copied from upstream - lp = minetest.find_nodes_in_area_under_air( + lp = minetest_find_nodes_in_area_under_air( {x = s.x - 5, y = s.y - 0.5, z = s.z - 5}, {x = s.x + 5, y = s.y + 1, z = s.z + 5}, {"group:solid"}) - lp = #lp > 0 and lp[random(#lp)] + lp = #lp > 0 and lp[math_random(#lp)] -- did we find land? if lp then @@ -2402,10 +2264,10 @@ local do_states = function(self, dtime) z = lp.z - s.z } - yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate + yaw = (atan(vec.z / vec.x) + math_pi / 2) - self.rotate - if lp.x > s.x then yaw = yaw + pi end + if lp.x > s.x then yaw = yaw + math_pi end -- look towards land and move in that direction yaw = set_yaw(self, yaw, 6) @@ -2418,8 +2280,8 @@ local do_states = function(self, dtime) else -- Randomly turn - if random(1, 100) <= 30 then - yaw = yaw + random(-0.5, 0.5) + if math_random(1, 100) <= 30 then + yaw = yaw + math_random(-0.5, 0.5) yaw = set_yaw(self, yaw, 8) end end @@ -2427,9 +2289,9 @@ local do_states = function(self, dtime) yaw = set_yaw(self, yaw, 8) -- otherwise randomly turn - elseif random(1, 100) <= 30 then + elseif math_random(1, 100) <= 30 then - yaw = yaw + random(-0.5, 0.5) + yaw = yaw + math_random(-0.5, 0.5) yaw = set_yaw(self, yaw, 8) end @@ -2440,7 +2302,7 @@ local do_states = function(self, dtime) end if self.facing_fence == true or cliff_or_danger - or random(1, 100) <= 30 then + or math_random(1, 100) <= 30 then set_velocity(self, 0) self.state = "stand" @@ -2515,9 +2377,9 @@ local do_states = function(self, dtime) z = p.z - s.z } - yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate + yaw = (atan(vec.z / vec.x) + math_pi / 2) - self.rotate - if p.x > s.x then yaw = yaw + pi end + if p.x > s.x then yaw = yaw + math_pi end yaw = set_yaw(self, yaw, 0, dtime) @@ -2583,10 +2445,10 @@ local do_states = function(self, dtime) local pos = self.object:get_pos() if mod_explosions then - if mobs_griefing and not minetest.is_protected(pos, "") then + if mobs_griefing and not minetest_is_protected(pos, "") then mcl_explosions.explode(mcl_util.get_object_center(self.object), self.explosion_strength, { drop_chance = 1.0 }, self.object) else - minetest.sound_play(self.sounds.explode, { + minetest_sound_play(self.sounds.explode, { pos = pos, gain = 1.0, max_hear_distance = self.sounds.distance or 32 @@ -2611,9 +2473,9 @@ local do_states = function(self, dtime) and dist > self.reach then local p1 = s - local me_y = floor(p1.y) + local me_y = math_floor(p1.y) local p2 = p - local p_y = floor(p2.y + 1) + local p_y = math_floor(p2.y + 1) local v = self.object:get_velocity() if flight_check(self, s) then @@ -2674,7 +2536,7 @@ local do_states = function(self, dtime) return end - if abs(p1.x-s.x) + abs(p1.z - s.z) < 0.6 then + if math_abs(p1.x-s.x) + math_abs(p1.z - s.z) < 0.6 then -- reached waypoint, remove it from queue table.remove(self.path.way, 1) end @@ -2688,9 +2550,9 @@ local do_states = function(self, dtime) z = p.z - s.z } - yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate + yaw = (atan(vec.z / vec.x) + math_pi / 2) - self.rotate - if p.x > s.x then yaw = yaw + pi end + if p.x > s.x then yaw = yaw + math_pi end yaw = set_yaw(self, yaw, 0, dtime) @@ -2740,7 +2602,7 @@ local do_states = function(self, dtime) self.timer = 0 if self.double_melee_attack - and random(1, 2) == 1 then + and math_random(1, 2) == 1 then set_animation(self, "punch2") else set_animation(self, "punch") @@ -2793,9 +2655,9 @@ local do_states = function(self, dtime) z = p.z - s.z } - yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate + yaw = (atan(vec.z / vec.x) + math_pi / 2) - self.rotate - if p.x > s.x then yaw = yaw + pi end + if p.x > s.x then yaw = yaw + math_pi end yaw = set_yaw(self, yaw, 0, dtime) @@ -2806,8 +2668,8 @@ local do_states = function(self, dtime) if self.shoot_interval and self.timer > self.shoot_interval - and not minetest.raycast(p, self.attack:get_pos(), false, false):next() - and random(1, 100) <= 60 then + and not minetest_raycast(p, self.attack:get_pos(), false, false):next() + and math_random(1, 100) <= 60 then self.timer = 0 set_animation(self, "shoot") @@ -2816,16 +2678,16 @@ local do_states = function(self, dtime) mob_sound(self, "shoot_attack") -- Shoot arrow - if minetest.registered_entities[self.arrow] then + if minetest_registered_entities[self.arrow] then local arrow, ent local v = 1 if not self.shoot_arrow then self.firing = true - minetest.after(1, function() + minetest_after(1, function() self.firing = false end) - arrow = minetest.add_entity(p, self.arrow) + arrow = minetest_add_entity(p, self.arrow) ent = arrow:get_luaentity() if ent.velocity then v = ent.velocity @@ -2853,851 +2715,48 @@ local do_states = function(self, dtime) end --- falling and fall damage --- returns true if mob died -local falling = function(self, pos) - if self.fly and self.state ~= "die" then + +-- above function exported for mount.lua +function mobs:set_animation(self, anim) + set_animation(self, anim) +end + + +-- set defined animation +local set_animation = function(self, anim, fixed_frame) + if not self.animation or not anim then + return + end + if self.state == "die" and anim ~= "die" and anim ~= "stand" then return end - if mcl_portals ~= nil then - if mcl_portals.nether_portal_cooloff(self.object) then - return false -- mob has teleported through Nether portal - it's 99% not falling - end + self.animation.current = self.animation.current or "" + + if (anim == self.animation.current + or not self.animation[anim .. "_start"] + or not self.animation[anim .. "_end"]) and self.state ~= "die" then + return end - -- floating in water (or falling) - local v = self.object:get_velocity() + self.animation.current = anim - if v.y > 0 then - - -- apply gravity when moving up - self.object:set_acceleration({ - x = 0, - y = -10, - z = 0 - }) - - elseif v.y <= 0 and v.y > self.fall_speed then - - -- fall downwards at set speed - self.object:set_acceleration({ - x = 0, - y = self.fall_speed, - z = 0 - }) + local a_start = self.animation[anim .. "_start"] + local a_end + if fixed_frame then + a_end = a_start else - -- stop accelerating once max fall speed hit - self.object:set_acceleration({x = 0, y = 0, z = 0}) + a_end = self.animation[anim .. "_end"] end - if minetest.registered_nodes[node_ok(pos).name].groups.lava then - - if self.floats_on_lava == 1 then - - self.object:set_acceleration({ - x = 0, - y = -self.fall_speed / (max(1, v.y) ^ 2), - z = 0 - }) - end - end - - -- in water then float up - if minetest.registered_nodes[node_ok(pos).name].groups.water then - - if self.floats == 1 then - - self.object:set_acceleration({ - x = 0, - y = -self.fall_speed / (max(1, v.y) ^ 2), - z = 0 - }) - end - else - - -- fall damage onto solid ground - if self.fall_damage == 1 - and self.object:get_velocity().y == 0 then - - local d = (self.old_y or 0) - self.object:get_pos().y - - if d > 5 then - - local add = minetest.get_item_group(self.standing_on, "fall_damage_add_percent") - local damage = d - 5 - if add ~= 0 then - damage = damage + damage * (add/100) - end - damage = floor(damage) - if damage > 0 then - self.health = self.health - damage - - effect(pos, 5, "mcl_particles_smoke.png", 1, 2, 2, nil) - - if check_for_death(self, "fall", {type = "fall"}) then - return true - end - end - end - - self.old_y = self.object:get_pos().y - end - end + self.object:set_animation({ + x = a_start, + y = a_end}, + self.animation[anim .. "_speed"] or self.animation.speed_normal or 15, + 0, self.animation[anim .. "_loop"] ~= false) end -local teleport = function(self, target) - if self.do_teleport then - if self.do_teleport(self, target) == false then - return - end - end -end - - --- deal damage and effects when mob punched -local mob_punch = function(self, hitter, tflp, tool_capabilities, dir) - - -- custom punch function - if self.do_punch then - - -- when false skip going any further - if self.do_punch(self, hitter, tflp, tool_capabilities, dir) == false then - return - end - end - - -- error checking when mod profiling is enabled - if not tool_capabilities then - minetest.log("warning", "[mobs] Mod profiling enabled, damage not enabled") - return - end - - local is_player = hitter:is_player() - - if is_player then - -- is mob protected? - if self.protected and minetest.is_protected(self.object:get_pos(), hitter:get_player_name()) then - return - end - - -- set/update 'drop xp' timestamp if hitted by player - self.xp_timestamp = minetest.get_us_time() - end - - - -- punch interval - local weapon = hitter:get_wielded_item() - local punch_interval = 1.4 - - -- exhaust attacker - if mod_hunger and is_player then - mcl_hunger.exhaust(hitter:get_player_name(), mcl_hunger.EXHAUST_ATTACK) - end - - -- calculate mob damage - local damage = 0 - local armor = self.object:get_armor_groups() or {} - local tmp - - -- quick error check incase it ends up 0 (serialize.h check test) - if tflp == 0 then - tflp = 0.2 - end - - if use_cmi then - damage = cmi.calculate_damage(self.object, hitter, tflp, tool_capabilities, dir) - else - - for group,_ in pairs( (tool_capabilities.damage_groups or {}) ) do - - tmp = tflp / (tool_capabilities.full_punch_interval or 1.4) - - if tmp < 0 then - tmp = 0.0 - elseif tmp > 1 then - tmp = 1.0 - end - - damage = damage + (tool_capabilities.damage_groups[group] or 0) - * tmp * ((armor[group] or 0) / 100.0) - end - end - - if weapon then - local fire_aspect_level = mcl_enchanting.get_enchantment(weapon, "fire_aspect") - if fire_aspect_level > 0 then - mcl_burning.set_on_fire(self.object, fire_aspect_level * 4) - end - end - - -- check for tool immunity or special damage - for n = 1, #self.immune_to do - - if self.immune_to[n][1] == weapon:get_name() then - - damage = self.immune_to[n][2] or 0 - break - end - end - - -- healing - if damage <= -1 then - self.health = self.health - floor(damage) - return - end - - if use_cmi then - - local cancel = cmi.notify_punch(self.object, hitter, tflp, tool_capabilities, dir, damage) - - if cancel then return end - end - - if tool_capabilities then - punch_interval = tool_capabilities.full_punch_interval or 1.4 - end - - -- add weapon wear manually - -- Required because we have custom health handling ("health" property) - if minetest.is_creative_enabled("") ~= true - and tool_capabilities then - if tool_capabilities.punch_attack_uses then - -- Without this delay, the wear does not work. Quite hacky ... - minetest.after(0, function(name) - local player = minetest.get_player_by_name(name) - if not player then return end - local weapon = hitter:get_wielded_item(player) - local def = weapon:get_definition() - if def.tool_capabilities and def.tool_capabilities.punch_attack_uses then - local wear = floor(65535/tool_capabilities.punch_attack_uses) - weapon:add_wear(wear) - hitter:set_wielded_item(weapon) - end - end, hitter:get_player_name()) - end - end - - local die = false - - -- only play hit sound and show blood effects if damage is 1 or over; lower to 0.1 to ensure armor works appropriately. - if damage >= 0.1 then - - -- weapon sounds - if weapon:get_definition().sounds ~= nil then - - local s = random(0, #weapon:get_definition().sounds) - - minetest.sound_play(weapon:get_definition().sounds[s], { - object = self.object, --hitter, - max_hear_distance = 8 - }, true) - else - minetest.sound_play("default_punch", { - object = self.object, - max_hear_distance = 5 - }, true) - end - - damage_effect(self, damage) - - -- do damage - self.health = self.health - damage - - -- skip future functions if dead, except alerting others - if check_for_death(self, "hit", {type = "punch", puncher = hitter}) then - die = true - end - - -- knock back effect (only on full punch) - if not die - and self.knock_back - and tflp >= punch_interval then - - local v = self.object:get_velocity() - local r = 1.4 - min(punch_interval, 1.4) - local kb = r * 2.0 - local up = 2 - - -- if already in air then dont go up anymore when hit - if v.y ~= 0 - or self.fly then - up = 0 - end - - -- direction error check - dir = dir or {x = 0, y = 0, z = 0} - - -- check if tool already has specific knockback value - if tool_capabilities.damage_groups["knockback"] then - kb = tool_capabilities.damage_groups["knockback"] - else - kb = kb * 1.5 - end - - - local luaentity - if hitter then - luaentity = hitter:get_luaentity() - end - if hitter and is_player then - local wielditem = hitter:get_wielded_item() - kb = kb + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") - elseif luaentity and luaentity._knockback then - kb = kb + luaentity._knockback - end - - self.object:set_velocity({ - x = dir.x * kb, - y = dir.y * kb + up * 2, - z = dir.z * kb - }) - - self.pause_timer = 0.25 - end - end -- END if damage - - -- if skittish then run away - if not die and self.runaway == true and self.state ~= "flop" then - - local lp = hitter:get_pos() - local s = self.object:get_pos() - local vec = { - x = lp.x - s.x, - y = lp.y - s.y, - z = lp.z - s.z - } - - local yaw = (atan(vec.z / vec.x) + 3 * pi / 2) - self.rotate - - if lp.x > s.x then - yaw = yaw + pi - end - - yaw = set_yaw(self, yaw, 6) - self.state = "runaway" - self.runaway_timer = 0 - self.following = nil - end - - local name = hitter:get_player_name() or "" - - -- attack puncher and call other mobs for help - if self.passive == false - and self.state ~= "flop" - and (self.child == false or self.type == "monster") - and hitter:get_player_name() ~= self.owner - and not mobs.invis[ name ] then - - if not die then - -- attack whoever punched mob - self.state = "" - do_attack(self, hitter) - end - - -- alert others to the attack - local objs = minetest.get_objects_inside_radius(hitter:get_pos(), self.view_range) - local obj = nil - - for n = 1, #objs do - - obj = objs[n]:get_luaentity() - - if obj then - - -- only alert members of same mob or friends - if obj.group_attack - and obj.state ~= "attack" - and obj.owner ~= name then - if obj.name == self.name then - do_attack(obj, hitter) - elseif type(obj.group_attack) == "table" then - for i=1, #obj.group_attack do - if obj.name == obj.group_attack[i] then - do_attack(obj, hitter) - break - end - end - end - end - - -- have owned mobs attack player threat - if obj.owner == name and obj.owner_loyal then - do_attack(obj, self.object) - end - end - end - end -end - -local mob_detach_child = function(self, child) - - if self.driver == child then - self.driver = nil - end - -end - --- get entity staticdata -local mob_staticdata = function(self) - ---[[ - -- remove mob when out of range unless tamed - if remove_far - and self.can_despawn - and self.remove_ok - and ((not self.nametag) or (self.nametag == "")) - and self.lifetimer <= 20 then - - minetest.log("action", "Mob "..name.." despawns in mob_staticdata at "..minetest.pos_to_string(self.object.get_pos(), 1)) - mcl_burning.extinguish(self.object) - self.object:remove() - - return ""-- nil - end ---]] - self.remove_ok = true - self.attack = nil - self.following = nil - self.state = "stand" - - if use_cmi then - self.serialized_cmi_components = cmi.serialize_components(self._cmi_components) - end - - local tmp = {} - - for _,stat in pairs(self) do - - local t = type(stat) - - if t ~= "function" - and t ~= "nil" - and t ~= "userdata" - and _ ~= "_cmi_components" then - tmp[_] = self[_] - end - end - - return minetest.serialize(tmp) -end - - --- activate mob and reload settings -local mob_activate = function(self, staticdata, def, dtime) - - -- remove monsters in peaceful mode - if self.type == "monster" - and minetest.settings:get_bool("only_peaceful_mobs", false) then - mcl_burning.extinguish(self.object) - self.object:remove() - - return - end - - -- load entity variables - local tmp = minetest.deserialize(staticdata) - - if tmp then - for _,stat in pairs(tmp) do - self[_] = stat - end - end - - -- select random texture, set model and size - if not self.base_texture then - - -- compatiblity with old simple mobs textures - if type(def.textures[1]) == "string" then - def.textures = {def.textures} - end - - self.base_texture = def.textures[random(1, #def.textures)] - self.base_mesh = def.mesh - self.base_size = self.visual_size - self.base_colbox = self.collisionbox - self.base_selbox = self.selectionbox - end - - -- for current mobs that dont have this set - if not self.base_selbox then - self.base_selbox = self.selectionbox or self.base_colbox - end - - -- set texture, model and size - local textures = self.base_texture - local mesh = self.base_mesh - local vis_size = self.base_size - local colbox = self.base_colbox - local selbox = self.base_selbox - - -- specific texture if gotten - if self.gotten == true - and def.gotten_texture then - textures = def.gotten_texture - end - - -- specific mesh if gotten - if self.gotten == true - and def.gotten_mesh then - mesh = def.gotten_mesh - end - - -- set child objects to half size - if self.child == true then - - vis_size = { - x = self.base_size.x * .5, - y = self.base_size.y * .5, - } - - if def.child_texture then - textures = def.child_texture[1] - end - - colbox = { - self.base_colbox[1] * .5, - self.base_colbox[2] * .5, - self.base_colbox[3] * .5, - self.base_colbox[4] * .5, - self.base_colbox[5] * .5, - self.base_colbox[6] * .5 - } - selbox = { - self.base_selbox[1] * .5, - self.base_selbox[2] * .5, - self.base_selbox[3] * .5, - self.base_selbox[4] * .5, - self.base_selbox[5] * .5, - self.base_selbox[6] * .5 - } - end - - if self.health == 0 then - self.health = random (self.hp_min, self.hp_max) - end - if self.breath == nil then - self.breath = self.breath_max - end - - -- pathfinding init - self.path = {} - self.path.way = {} -- path to follow, table of positions - self.path.lastpos = {x = 0, y = 0, z = 0} - self.path.stuck = false - self.path.following = false -- currently following path? - self.path.stuck_timer = 0 -- if stuck for too long search for path - - -- Armor groups - -- immortal=1 because we use custom health - -- handling (using "health" property) - local armor - if type(self.armor) == "table" then - armor = table.copy(self.armor) - armor.immortal = 1 - else - armor = {immortal=1, fleshy = self.armor} - end - self.object:set_armor_groups(armor) - self.old_y = self.object:get_pos().y - self.old_health = self.health - self.sounds.distance = self.sounds.distance or 10 - self.textures = textures - self.mesh = mesh - self.collisionbox = colbox - self.selectionbox = selbox - self.visual_size = vis_size - self.standing_in = "ignore" - self.standing_on = "ignore" - self.jump_sound_cooloff = 0 -- used to prevent jump sound from being played too often in short time - self.opinion_sound_cooloff = 0 -- used to prevent sound spam of particular sound types - - self.texture_mods = {} - self.object:set_texture_mod("") - - self.v_start = false - self.timer = 0 - self.blinktimer = 0 - self.blinkstatus = false - - -- check existing nametag - if not self.nametag then - self.nametag = def.nametag - end - - -- set anything changed above - self.object:set_properties(self) - set_yaw(self, (random(0, 360) - 180) / 180 * pi, 6) - update_tag(self) - set_animation(self, "stand") - - -- run on_spawn function if found - if self.on_spawn and not self.on_spawn_run then - if self.on_spawn(self) then - self.on_spawn_run = true -- if true, set flag to run once only - end - end - - -- run after_activate - if def.after_activate then - def.after_activate(self, staticdata, def, dtime) - end - - if use_cmi then - self._cmi_components = cmi.activate_components(self.serialized_cmi_components) - cmi.notify_activate(self.object, dtime) - end -end - - --- main mob function -local mob_step = function(self, dtime) - - if not self.fire_resistant then - mcl_burning.tick(self.object, dtime, self) - end - - if use_cmi then - cmi.notify_step(self.object, dtime) - end - - local pos = self.object:get_pos() - local yaw = 0 - - if mobs_debug then - update_tag(self) - end - - if self.state == "die" then - return - end - - if self.jump_sound_cooloff > 0 then - self.jump_sound_cooloff = self.jump_sound_cooloff - dtime - end - if self.opinion_sound_cooloff > 0 then - self.opinion_sound_cooloff = self.opinion_sound_cooloff - dtime - end - if falling(self, pos) then - -- Return if mob died after falling - return - end - - -- smooth rotation by ThomasMonroe314 - - if self.delay and self.delay > 0 then - - local yaw = self.object:get_yaw() or 0 - - if self.delay == 1 then - yaw = self.target_yaw - else - local dif = abs(yaw - self.target_yaw) - - if yaw > self.target_yaw then - - if dif > pi then - dif = 2 * pi - dif -- need to add - yaw = yaw + dif / self.delay - else - yaw = yaw - dif / self.delay -- need to subtract - end - - elseif yaw < self.target_yaw then - - if dif > pi then - dif = 2 * pi - dif - yaw = yaw - dif / self.delay -- need to subtract - else - yaw = yaw + dif / self.delay -- need to add - end - end - - if yaw > (pi * 2) then yaw = yaw - (pi * 2) end - if yaw < 0 then yaw = yaw + (pi * 2) end - end - - self.delay = self.delay - 1 - if self.shaking then - yaw = yaw + (math.random() * 2 - 1) * 5 * dtime - end - self.object:set_yaw(yaw) - update_roll(self) - end - - -- end rotation - - -- run custom function (defined in mob lua file) - if self.do_custom then - - -- when false skip going any further - if self.do_custom(self, dtime) == false then - return - end - end - - -- knockback timer - if self.pause_timer > 0 then - - self.pause_timer = self.pause_timer - dtime - - return - end - - -- attack timer - self.timer = self.timer + dtime - - if self.state ~= "attack" then - - if self.timer < 1 then - return - end - - self.timer = 0 - end - - -- never go over 100 - if self.timer > 100 then - self.timer = 1 - end - - -- mob plays random sound at times - if random(1, 70) == 1 then - mob_sound(self, "random", true) - end - - -- environmental damage timer (every 1 second) - self.env_damage_timer = self.env_damage_timer + dtime - - if (self.state == "attack" and self.env_damage_timer > 1) - or self.state ~= "attack" then - - self.env_damage_timer = 0 - - -- check for environmental damage (water, fire, lava etc.) - if do_env_damage(self) then - return - end - - -- node replace check (cow eats grass etc.) - replace(self, pos) - end - - monster_attack(self) - - npc_attack(self) - - breed(self) - - if do_states(self, dtime) then - return - end - - if not self.object:get_luaentity() then - return false - end - - do_jump(self) - - runaway_from(self) - - if is_at_water_danger(self) and self.state ~= "attack" then - if random(1, 10) <= 6 then - set_velocity(self, 0) - self.state = "stand" - set_animation(self, "stand") - yaw = yaw + random(-0.5, 0.5) - yaw = set_yaw(self, yaw, 8) - end - end - - -- Add water flowing for mobs from mcl_item_entity - local p, node, nn, def - p = self.object:get_pos() - node = minetest.get_node_or_nil(p) - if node then - nn = node.name - def = minetest.registered_nodes[nn] - end - - -- Move item around on flowing liquids - if def and def.liquidtype == "flowing" then - - --[[ Get flowing direction (function call from flowlib), if there's a liquid. - NOTE: According to Qwertymine, flowlib.quickflow is only reliable for liquids with a flowing distance of 7. - Luckily, this is exactly what we need if we only care about water, which has this flowing distance. ]] - local vec = flowlib.quick_flow(p, node) - -- Just to make sure we don't manipulate the speed for no reason - if vec.x ~= 0 or vec.y ~= 0 or vec.z ~= 0 then - -- Minecraft Wiki: Flowing speed is "about 1.39 meters per second" - local f = 1.39 - -- Set new item moving speed into the direciton of the liquid - local newv = vector.multiply(vec, f) - self.object:set_acceleration({x = 0, y = 0, z = 0}) - self.object:set_velocity({x = newv.x, y = -0.22, z = newv.z}) - - self.physical_state = true - self._flowing = true - self.object:set_properties({ - physical = true - }) - return - end - elseif self._flowing == true then - -- Disable flowing physics if not on/in flowing liquid - self._flowing = false - enable_physics(self.object, self, true) - return - end - - --Mob following code. - follow_flop(self) - - if is_at_cliff_or_danger(self) then - set_velocity(self, 0) - self.state = "stand" - set_animation(self, "stand") - local yaw = self.object:get_yaw() or 0 - yaw = set_yaw(self, yaw + 0.78, 8) - end - - -- Despawning: when lifetimer expires, remove mob - if remove_far - and self.can_despawn == true - and ((not self.nametag) or (self.nametag == "")) - and self.state ~= "attack" - and self.following == nil then - - self.lifetimer = self.lifetimer - dtime - if self.despawn_immediately or self.lifetimer <= 0 then - minetest.log("action", "Mob "..self.name.." despawns in mob_step at "..minetest.pos_to_string(pos, 1)) - mcl_burning.extinguish(self.object) - self.object:remove() - elseif self.lifetimer <= 10 then - if math.random(10) < 4 then - self.despawn_immediately = true - else - self.lifetimer = 20 - end - end - end -end - - --- default function when mobs are blown up with TNT -local do_tnt = function(obj, damage) - - obj.object:punch(obj.object, 1.0, { - full_punch_interval = 1.0, - damage_groups = {fleshy = damage}, - }, nil) - - return false, true, {} -end - - -mobs.spawning_mobs = {} -- Code to execute before custom on_rightclick handling local on_rightclick_prefix = function(self, clicker) @@ -3735,642 +2794,201 @@ local create_mob_on_rightclick = function(on_rightclick) end end --- register mob entity -function mobs:register_mob(name, def) +-- set and return valid yaw +local set_yaw = function(self, yaw, delay, dtime) - mobs.spawning_mobs[name] = true - -local can_despawn -if def.can_despawn ~= nil then - can_despawn = def.can_despawn -elseif def.spawn_class == "passive" then - can_despawn = false -else - can_despawn = true -end - -local function scale_difficulty(value, default, min, special) - if (not value) or (value == default) or (value == special) then - return default - else - return max(min, value * difficulty) - end -end - -local collisionbox = def.collisionbox or {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25} --- Workaround for : --- Increase upper Y limit to avoid mobs glitching through solid nodes. --- FIXME: Remove workaround if it's no longer needed. -if collisionbox[5] < 0.79 then - collisionbox[5] = 0.79 -end - -minetest.register_entity(name, { - - use_texture_alpha = def.use_texture_alpha, - stepheight = def.stepheight or 0.6, - name = name, - type = def.type, - attack_type = def.attack_type, - fly = def.fly, - fly_in = def.fly_in or {"air", "__airlike"}, - owner = def.owner or "", - order = def.order or "", - on_die = def.on_die, - spawn_small_alternative = def.spawn_small_alternative, - do_custom = def.do_custom, - jump_height = def.jump_height or 4, -- was 6 - rotate = math.rad(def.rotate or 0), -- 0=front, 90=side, 180=back, 270=side2 - lifetimer = def.lifetimer or 57.73, - hp_min = scale_difficulty(def.hp_min, 5, 1), - hp_max = scale_difficulty(def.hp_max, 10, 1), - xp_min = def.xp_min or 0, - xp_max = def.xp_max or 0, - xp_timestamp = 0, - breath_max = def.breath_max or 15, - breathes_in_water = def.breathes_in_water or false, - physical = true, - collisionbox = collisionbox, - selectionbox = def.selectionbox or def.collisionbox, - visual = def.visual, - visual_size = def.visual_size or {x = 1, y = 1}, - mesh = def.mesh, - makes_footstep_sound = def.makes_footstep_sound or false, - view_range = def.view_range or 16, - walk_velocity = def.walk_velocity or 1, - run_velocity = def.run_velocity or 2, - damage = scale_difficulty(def.damage, 0, 0), - light_damage = def.light_damage or 0, - sunlight_damage = def.sunlight_damage or 0, - water_damage = def.water_damage or 0, - lava_damage = def.lava_damage or 8, - fire_damage = def.fire_damage or 1, - suffocation = def.suffocation or true, - fall_damage = def.fall_damage or 1, - fall_speed = def.fall_speed or DEFAULT_FALL_SPEED, -- must be lower than -2 - drops = def.drops or {}, - armor = def.armor or 100, - on_rightclick = create_mob_on_rightclick(def.on_rightclick), - arrow = def.arrow, - shoot_interval = def.shoot_interval, - sounds = def.sounds or {}, - animation = def.animation, - follow = def.follow, - jump = def.jump ~= false, - walk_chance = def.walk_chance or 50, - attacks_monsters = def.attacks_monsters or false, - group_attack = def.group_attack or false, - passive = def.passive or false, - knock_back = def.knock_back ~= false, - shoot_offset = def.shoot_offset or 0, - floats = def.floats or 1, -- floats in water by default - floats_on_lava = def.floats_on_lava or 0, - replace_rate = def.replace_rate, - replace_what = def.replace_what, - replace_with = def.replace_with, - replace_offset = def.replace_offset or 0, - on_replace = def.on_replace, - timer = 0, - env_damage_timer = 0, - tamed = false, - pause_timer = 0, - horny = false, - hornytimer = 0, - gotten = false, - health = 0, - reach = def.reach or 3, - htimer = 0, - texture_list = def.textures, - child_texture = def.child_texture, - docile_by_day = def.docile_by_day or false, - time_of_day = 0.5, - fear_height = def.fear_height or 0, - runaway = def.runaway, - runaway_timer = 0, - pathfinding = def.pathfinding, - immune_to = def.immune_to or {}, - explosion_radius = def.explosion_radius, -- LEGACY - explosion_damage_radius = def.explosion_damage_radius, -- LEGACY - explosiontimer_reset_radius = def.explosiontimer_reset_radius, - explosion_timer = def.explosion_timer or 3, - allow_fuse_reset = def.allow_fuse_reset ~= false, - stop_to_explode = def.stop_to_explode ~= false, - custom_attack = def.custom_attack, - double_melee_attack = def.double_melee_attack, - dogshoot_switch = def.dogshoot_switch, - dogshoot_count = 0, - dogshoot_count_max = def.dogshoot_count_max or 5, - dogshoot_count2_max = def.dogshoot_count2_max or (def.dogshoot_count_max or 5), - attack_animals = def.attack_animals or false, - specific_attack = def.specific_attack, - runaway_from = def.runaway_from, - owner_loyal = def.owner_loyal, - facing_fence = false, - _cmi_is_mob = true, - pushable = def.pushable or true, - - - -- MCL2 extensions - teleport = teleport, - do_teleport = def.do_teleport, - spawn_class = def.spawn_class, - ignores_nametag = def.ignores_nametag or false, - rain_damage = def.rain_damage or 0, - glow = def.glow, - can_despawn = can_despawn, - child = def.child or false, - texture_mods = {}, - shoot_arrow = def.shoot_arrow, - sounds_child = def.sounds_child, - explosion_strength = def.explosion_strength, - suffocation_timer = 0, - follow_velocity = def.follow_velocity or 2.4, - instant_death = def.instant_death or false, - fire_resistant = def.fire_resistant or false, - fire_damage_resistant = def.fire_damage_resistant or false, - ignited_by_sunlight = def.ignited_by_sunlight or false, - -- End of MCL2 extensions - - on_spawn = def.on_spawn, - - on_blast = def.on_blast or do_tnt, - - on_step = mob_step, - - do_punch = def.do_punch, - - on_punch = mob_punch, - - on_breed = def.on_breed, - - on_grown = def.on_grown, - - on_detach_child = mob_detach_child, - - on_activate = function(self, staticdata, dtime) - --this is a temporary hack so mobs stop - --glitching and acting really weird with the - --default built in engine collision detection - self.object:set_properties({ - collide_with_objects = false, - }) - return mob_activate(self, staticdata, def, dtime) - end, - - get_staticdata = function(self) - return mob_staticdata(self) - end, - - harmed_by_heal = def.harmed_by_heal, - -}) - -if minetest.get_modpath("doc_identifier") ~= nil then - doc.sub.identifier.register_object(name, "basics", "mobs") -end - -end -- END mobs:register_mob function - - --- register arrow for shoot attack -function mobs:register_arrow(name, def) - - if not name or not def then return end -- errorcheck - - minetest.register_entity(name, { - - physical = false, - visual = def.visual, - visual_size = def.visual_size, - textures = def.textures, - velocity = def.velocity, - hit_player = def.hit_player, - hit_node = def.hit_node, - hit_mob = def.hit_mob, - hit_object = def.hit_object, - drop = def.drop or false, -- drops arrow as registered item when true - collisionbox = {0, 0, 0, 0, 0, 0}, -- remove box around arrows - timer = 0, - switch = 0, - owner_id = def.owner_id, - rotate = def.rotate, - on_punch = function(self) - local vel = self.object:get_velocity() - self.object:set_velocity({x=vel.x * -1, y=vel.y * -1, z=vel.z * -1}) - end, - collisionbox = def.collisionbox or {0, 0, 0, 0, 0, 0}, - automatic_face_movement_dir = def.rotate - and (def.rotate - (pi / 180)) or false, - - on_activate = def.on_activate, - - on_step = def.on_step or function(self, dtime) - - self.timer = self.timer + 1 - - local pos = self.object:get_pos() - - if self.switch == 0 - or self.timer > 150 - or not within_limits(pos, 0) then - mcl_burning.extinguish(self.object) - self.object:remove(); - - return - end - - -- does arrow have a tail (fireball) - if def.tail - and def.tail == 1 - and def.tail_texture then - - minetest.add_particle({ - pos = pos, - velocity = {x = 0, y = 0, z = 0}, - acceleration = {x = 0, y = 0, z = 0}, - expirationtime = def.expire or 0.25, - collisiondetection = false, - texture = def.tail_texture, - size = def.tail_size or 5, - glow = def.glow or 0, - }) - end - - if self.hit_node then - - local node = node_ok(pos).name - - if minetest.registered_nodes[node].walkable then - - self.hit_node(self, pos, node) - - if self.drop == true then - - pos.y = pos.y + 1 - - self.lastpos = (self.lastpos or pos) - - minetest.add_item(self.lastpos, self.object:get_luaentity().name) - end - - self.object:remove(); - - return - end - end - - if self.hit_player or self.hit_mob or self.hit_object then - - for _,player in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do - - if self.hit_player - and player:is_player() then - - self.hit_player(self, player) - self.object:remove(); - return - end - - local entity = player:get_luaentity() - - if entity - and self.hit_mob - and entity._cmi_is_mob == true - and tostring(player) ~= self.owner_id - and entity.name ~= self.object:get_luaentity().name then - self.hit_mob(self, player) - self.object:remove(); - return - end - - if entity - and self.hit_object - and (not entity._cmi_is_mob) - and tostring(player) ~= self.owner_id - and entity.name ~= self.object:get_luaentity().name then - self.hit_object(self, player) - self.object:remove(); - return - end - end - end - - self.lastpos = pos - end - }) -end - - --- no damage to nodes explosion -function mobs:safe_boom(self, pos, strength) - minetest.sound_play(self.sounds and self.sounds.explode or "tnt_explode", { - pos = pos, - gain = 1.0, - max_hear_distance = self.sounds and self.sounds.distance or 32 - }, true) - local radius = strength - entity_physics(pos, radius) - effect(pos, 32, "mcl_particles_smoke.png", radius * 3, radius * 5, radius, 1, 0) -end - - --- make explosion with protection and tnt mod check -function mobs:boom(self, pos, strength, fire) - self.object:remove() - if mod_explosions then - if mobs_griefing and not minetest.is_protected(pos, "") then - mcl_explosions.explode(pos, strength, { drop_chance = 1.0, fire = fire }, self.object) - else - mobs:safe_boom(self, pos, strength) - end - else - mobs:safe_boom(self, pos, strength) - end -end - - --- Register spawn eggs - --- Note: This also introduces the “spawn_egg” group: --- * spawn_egg=1: Spawn egg (generic mob, no metadata) --- * spawn_egg=2: Spawn egg (captured/tamed mob, metadata) -function mobs:register_egg(mob, desc, background, addegg, no_creative) - - local grp = {spawn_egg = 1} - - -- do NOT add this egg to creative inventory (e.g. dungeon master) - if no_creative == true then - grp.not_in_creative_inventory = 1 + if not yaw or yaw ~= yaw then + yaw = 0 end - local invimg = background + delay = delay or 0 - if addegg == 1 then - invimg = "mobs_chicken_egg.png^(" .. invimg .. - "^[mask:mobs_chicken_egg_overlay.png)" + if delay == 0 then + if self.shaking and dtime then + yaw = yaw + (math_random() * 2 - 1) * 5 * dtime + end + self.yaw(yaw) + update_roll(self) + return yaw end - -- register old stackable mob egg - minetest.register_craftitem(mob, { - - description = desc, - inventory_image = invimg, - groups = grp, - - _doc_items_longdesc = S("This allows you to place a single mob."), - _doc_items_usagehelp = S("Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns."), - - on_place = function(itemstack, placer, pointed_thing) - - local pos = pointed_thing.above - - -- am I clicking on something with existing on_rightclick function? - local under = minetest.get_node(pointed_thing.under) - local def = minetest.registered_nodes[under.name] - if def and def.on_rightclick then - return def.on_rightclick(pointed_thing.under, under, placer, itemstack) - end - - if pos - and within_limits(pos, 0) - and not minetest.is_protected(pos, placer:get_player_name()) then - - local name = placer:get_player_name() - local privs = minetest.get_player_privs(name) - if mod_mobspawners and under.name == "mcl_mobspawners:spawner" then - if minetest.is_protected(pointed_thing.under, name) then - minetest.record_protection_violation(pointed_thing.under, name) - return itemstack - end - if not privs.maphack then - minetest.chat_send_player(name, S("You need the “maphack” privilege to change the mob spawner.")) - return itemstack - end - mcl_mobspawners.setup_spawner(pointed_thing.under, itemstack:get_name()) - if not mobs.is_creative(name) then - itemstack:take_item() - end - return itemstack - end - - if not minetest.registered_entities[mob] then - return itemstack - end - - if minetest.settings:get_bool("only_peaceful_mobs", false) - and minetest.registered_entities[mob].type == "monster" then - minetest.chat_send_player(name, S("Only peaceful mobs allowed!")) - return itemstack - end - - pos.y = pos.y - 0.5 - - local mob = minetest.add_entity(pos, mob) - minetest.log("action", "Mob spawned: "..name.." at "..minetest.pos_to_string(pos)) - local ent = mob:get_luaentity() - - -- don't set owner if monster or sneak pressed - if ent.type ~= "monster" - and not placer:get_player_control().sneak then - ent.owner = placer:get_player_name() - ent.tamed = true - end - - -- set nametag - local nametag = itemstack:get_meta():get_string("name") - if nametag ~= "" then - if string.len(nametag) > MAX_MOB_NAME_LENGTH then - nametag = string.sub(nametag, 1, MAX_MOB_NAME_LENGTH) - end - ent.nametag = nametag - update_tag(ent) - end - - -- if not in creative then take item - if not mobs.is_creative(placer:get_player_name()) then - itemstack:take_item() - end - end - - return itemstack - end, - }) + self.target_yaw = yaw + self.delay = delay + return self.target_yaw end --- No-op in MCL2 (capturing mobs is not possible). --- Provided for compability with Mobs Redo -function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, force_take, replacewith) - return false +-- global function to set mob yaw +function mobs:yaw(self, yaw, delay, dtime) + set_yaw(self, yaw, delay, dtime) end --- No-op in MCL2 (protecting mobs is not possible). -function mobs:protect(self, clicker) - return false -end +mob_step = function() + + --if self.state == "die" then + -- print("need custom die stop moving thing") + -- return + --end + + --if not self.fire_resistant then + -- mcl_burning.tick(self.object, dtime, self) + --end + + --if use_cmi then + --cmi.notify_step(self.object, dtime) + --end + + --local pos = self.object:get_pos() + --local yaw = 0 + + --if mobs_debug then + --update_tag(self) + --end --- feeding, taming and breeding (thanks blert2112) -function mobs:feed_tame(self, clicker, feed_count, breed, tame) - if not self.follow then - return false + + --if self.jump_sound_cooloff > 0 then + -- self.jump_sound_cooloff = self.jump_sound_cooloff - dtime + --end + + --if self.opinion_sound_cooloff > 0 then + -- self.opinion_sound_cooloff = self.opinion_sound_cooloff - dtime + --end + + --if falling(self, pos) then + -- Return if mob died after falling + -- return + --end + + + -- run custom function (defined in mob lua file) + --if self.do_custom then + + -- when false skip going any further + --if self.do_custom(self, dtime) == false then + -- return + --end + --end + + -- knockback timer + --if self.pause_timer > 0 then + + -- self.pause_timer = self.pause_timer - dtime + + -- return + --end + + -- attack timer + --self.timer = self.timer + dtime + + --[[ + if self.state ~= "attack" then + + if self.timer < 1 then + print("returning>>error code 1") + return + end + + self.timer = 0 end + ]]-- - -- can eat/tame with item in hand - if follow_holding(self, clicker) then + -- never go over 100 + --if self.timer > 100 then + -- self.timer = 1 + --end - -- if not in creative then take item - if not mobs.is_creative(clicker:get_player_name()) then + -- mob plays random sound at times + --if math_random(1, 70) == 1 then + -- mob_sound(self, "random", true) + --end - local item = clicker:get_wielded_item() + -- environmental damage timer (every 1 second) + --self.env_damage_timer = self.env_damage_timer + dtime - item:take_item() + --if (self.state == "attack" and self.env_damage_timer > 1) + --or self.state ~= "attack" then + -- + -- self.env_damage_timer = 0 + -- + -- -- check for environmental damage (water, fire, lava etc.) + -- if do_env_damage(self) then + -- return + -- end + -- + -- node replace check (cow eats grass etc.) + -- replace(self, pos) + --end - clicker:set_wielded_item(item) - end + --monster_attack(self) - mob_sound(self, "eat", nil, true) + --npc_attack(self) - -- increase health - self.health = self.health + 4 + --breed(self) - if self.health >= self.hp_max then + --do_jump(self) - self.health = self.hp_max + --runaway_from(self) - if self.htimer < 1 then - self.htimer = 5 - end - end - self.object:set_hp(self.health) + --if is_at_water_danger(self) and self.state ~= "attack" then + -- if math_random(1, 10) <= 6 then + -- set_velocity(self, 0) + -- self.state = "stand" + -- set_animation(self, "stand") + -- yaw = yaw + math_random(-0.5, 0.5) + -- yaw = set_yaw(self, yaw, 8) + -- end + --end - update_tag(self) - -- make children grow quicker - if self.child == true then - - -- deduct 10% of the time to adulthood - self.hornytimer = self.hornytimer + ((CHILD_GROW_TIME - self.hornytimer) * 0.1) - - return true - end - - -- feed and tame - self.food = (self.food or 0) + 1 - if self.food >= feed_count then - - self.food = 0 - - if breed and self.hornytimer == 0 then - self.horny = true - end - - if tame then - - self.tamed = true - - if not self.owner or self.owner == "" then - self.owner = clicker:get_player_name() - end - end - - -- make sound when fed so many times - mob_sound(self, "random", true) - end - - return true - end - - return false -end - --- Spawn a child -function mobs:spawn_child(pos, mob_type) - local child = minetest.add_entity(pos, mob_type) - if not child then + -- Add water flowing for mobs from mcl_item_entity + --[[ + local p, node, nn, def + p = self.object:get_pos() + node = minetest_get_node_or_nil(p) + if node then + nn = node.name + def = minetest_registered_nodes[nnenable_physicss if not on/in flowing liquid + self._flowing = false + enable_physics(self.object, self, true) return end - local ent = child:get_luaentity() - effect(pos, 15, "mcl_particles_smoke.png", 1, 2, 2, 15, 5) + --Mob following code. + follow_flop(self) - ent.child = true - local textures - -- using specific child texture (if found) - if ent.child_texture then - textures = ent.child_texture[1] + if is_at_cliff_or_danger(self) then + set_velocity(self, 0) + self.state = "stand" + set_animation(self, "stand") + local yaw = self.object:get_yaw() or 0 + yaw = set_yaw(self, yaw + 0.78, 8) end - -- and resize to half height - child:set_properties({ - textures = textures, - visual_size = { - x = ent.base_size.x * .5, - y = ent.base_size.y * .5, - }, - collisionbox = { - ent.base_colbox[1] * .5, - ent.base_colbox[2] * .5, - ent.base_colbox[3] * .5, - ent.base_colbox[4] * .5, - ent.base_colbox[5] * .5, - ent.base_colbox[6] * .5, - }, - selectionbox = { - ent.base_selbox[1] * .5, - ent.base_selbox[2] * .5, - ent.base_selbox[3] * .5, - ent.base_selbox[4] * .5, - ent.base_selbox[5] * .5, - ent.base_selbox[6] * .5, - }, - }) - - return child -end - - --- compatibility function for old entities to new modpack entities -function mobs:alias_mob(old_name, new_name) - - -- spawn egg - minetest.register_alias(old_name, new_name) - - -- entity - minetest.register_entity(":" .. old_name, { - - physical = false, - - on_step = function(self) - - if minetest.registered_entities[new_name] then - minetest.add_entity(self.object:get_pos(), new_name) - end + -- Despawning: when lifetimer expires, remove mob + if remove_far + and self.can_despawn == true + and ((not self.nametag) or (self.nametag == "")) + and self.state ~= "attack" + and self.following == nil then + self.lifetimer = self.lifetimer - dtime + if self.despawn_immediately or self.lifetimer <= 0 then + minetest.log("action", "Mob "..self.name.." despawns in mob_step at "..minetest.pos_to_string(pos, 1)) + mcl_burning.extinguish(self.object) self.object:remove() - end - }) - -end - - -local timer = 0 -minetest.register_globalstep(function(dtime) - timer = timer + dtime - if timer < 1 then return end - for _, player in pairs(minetest.get_connected_players()) do - local pos = player:get_pos() - for _, obj in pairs(minetest.get_objects_inside_radius(pos, 47)) do - local lua = obj:get_luaentity() - if lua and lua._cmi_is_mob then - lua.lifetimer = math.max(20, lua.lifetimer) - lua.despawn_immediately = false + elseif self.lifetimer <= 10 then + if math_random(10) < 4 then + self.despawn_immediately = true + else + self.lifetimer = 20 end end end - timer = 0 -end) + ]]-- + +end diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua new file mode 100644 index 000000000..5dc0b8884 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/breeding.lua @@ -0,0 +1,184 @@ +local minetest_get_objects_inside_radius = minetest.get_objects_inside_radius + +local vector_distance = vector.distance + +--check to see if someone nearby has some tasty food +mobs.check_following = function(self) -- returns true or false + + --ignore + if not self.follow then + self.following_person = nil + return(false) + end + + --hey look, this thing works for passive mobs too! + local follower = mobs.detect_closest_player_within_radius(self,true,self.view_range,self.eye_height) + + --check if the follower is a player incase they log out + if follower and follower:is_player() then + local stack = follower:get_wielded_item() + --safety check + if not stack then + self.following_person = nil + return(false) + end + + local item_name = stack:get_name() + --all checks have passed, that guy has some good looking food + if item_name == self.follow then + self.following_person = follower + return(true) + end + end + + --everything failed + self.following_person = nil + return(false) +end + +--a function which attempts to make mobs enter +--the breeding state +mobs.enter_breed_state = function(self,clicker) + + --do not breed if baby + if self.baby then + return(false) + end + + --do not do anything if looking for mate or + --if cooling off from breeding + if self.breed_lookout_timer > 0 or self.breed_timer > 0 then + return(false) + end + + --if this is caught, that means something has gone + --seriously wrong + if not clicker or not clicker:is_player() then + return(false) + end + + local stack = clicker:get_wielded_item() + --safety check + if not stack then + return(false) + end + + local item_name = stack:get_name() + --all checks have passed, that guy has some good looking food + if item_name == self.follow then + if not minetest.is_creative_enabled(clicker:get_player_name()) then + stack:take_item() + clicker:set_wielded_item(stack) + end + self.breed_lookout_timer = self.breed_lookout_timer_goal + self.bred = true + mobs.play_sound_specific(self,"mobs_mc_animal_eat_generic") + return(true) + end + + --everything failed + return(false) +end + + +--find the closest mate in the area +mobs.look_for_mate = function(self) + + local pos1 = self.object:get_pos() + pos1.y = pos1.y + self.eye_height + + local mates_in_area = {} + local winner_mate = nil + local mates_detected = 0 + local radius = self.view_range + + --get mates in radius + for _,mate in pairs(minetest_get_objects_inside_radius(pos1, radius)) do + + --look for a breeding mate + if mate and mate:get_luaentity() + and mate:get_luaentity()._cmi_is_mob + and mate:get_luaentity().name == self.name + and mate:get_luaentity().breed_lookout_timer > 0 + and mate:get_luaentity() ~= self then + + local pos2 = mate:get_pos() + + local distance = vector_distance(pos1,pos2) + + if distance <= radius then + if line_of_sight then + --must add eye height or stuff breaks randomly because of + --seethrough nodes being a blocker (like grass) + if minetest_line_of_sight( + vector_new(pos1.x, pos1.y, pos1.z), + vector_new(pos2.x, pos2.y + mate:get_properties().eye_height, pos2.z) + ) then + mates_detected = mates_detected + 1 + mates_in_area[mate] = distance + end + else + mates_detected = mates_detected + 1 + mates_in_area[mate] = distance + end + end + end + end + + + --return if there's no one near by + if mates_detected <= 0 then --handle negative numbers for some crazy error that could possibly happen + return nil + end + + --do a default radius max + local shortest_distance = radius + 1 + + --sort through mates and find the closest mate + for mate,distance in pairs(mates_in_area) do + if distance < shortest_distance then + shortest_distance = distance + winner_mate = mate + end + end + + return(winner_mate) + +end + +--make the baby grow up +mobs.baby_grow_up = function(self) + self.baby = nil + self.visual_size = self.backup_visual_size + self.collisionbox = self.backup_collisionbox + self.selectionbox = self.backup_selectionbox + self.object:set_properties(self) +end + +--makes the baby grow up faster with diminishing returns +mobs.make_baby_grow_faster = function(self,clicker) + if clicker and clicker:is_player() then + local stack = clicker:get_wielded_item() + --safety check + if not stack then + return(false) + end + + local item_name = stack:get_name() + --all checks have passed, that guy has some good looking food + if item_name == self.follow then + self.grow_up_timer = self.grow_up_timer - (self.grow_up_timer * 0.10) --take 10 percent off - diminishing returns + + if not minetest.is_creative_enabled(clicker:get_player_name()) then + stack:take_item() + clicker:set_wielded_item(stack) + end + + mobs.play_sound_specific(self,"mobs_mc_animal_eat_generic") + + return(true) + end + end + + return(false) +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/collision.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/collision.lua new file mode 100644 index 000000000..44f43f20f --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/collision.lua @@ -0,0 +1,140 @@ +local minetest_get_objects_inside_radius = minetest.get_objects_inside_radius + +local math_random = math.random +local vector_multiply = vector.multiply + +local vector_direction = vector.direction + +local integer_test = {-1,1} + +mobs.collision = function(self) + + local pos = self.object:get_pos() + + + if not self or not self.object or not self.object:get_luaentity() then + return + end + + --do collision detection from the base of the mob + local collisionbox = self.object:get_properties().collisionbox + + pos.y = pos.y + collisionbox[2] + + local collision_boundary = collisionbox[4] + + local radius = collision_boundary + + if collisionbox[5] > collision_boundary then + radius = collisionbox[5] + end + + local collision_count = 0 + + + local check_for_attack = false + + if self.attack_type == "punch" and self.hostile and self.attacking then + check_for_attack = true + end + + for _,object in ipairs(minetest_get_objects_inside_radius(pos, radius*1.25)) do + if object and object ~= self.object and (object:is_player() or (object:get_luaentity() and object:get_luaentity()._cmi_is_mob == true and object:get_luaentity().health > 0)) and + --don't collide with rider, rider don't collide with thing + (not object:get_attach() or (object:get_attach() and object:get_attach() ~= self.object)) and + (not self.object:get_attach() or (self.object:get_attach() and self.object:get_attach() ~= object)) then + --stop infinite loop + collision_count = collision_count + 1 + --mob cramming + if collision_count > 30 then + self.health = -20 + break + end + + local pos2 = object:get_pos() + + local object_collisionbox = object:get_properties().collisionbox + + pos2.y = pos2.y + object_collisionbox[2] + + local object_collision_boundary = object_collisionbox[4] + + + --this is checking the difference of the object collided with's possision + --if positive top of other object is inside (y axis) of current object + local y_base_diff = (pos2.y + object_collisionbox[5]) - pos.y + + local y_top_diff = (pos.y + collisionbox[5]) - pos2.y + + + local distance = vector.distance(vector.new(pos.x,0,pos.z),vector.new(pos2.x,0,pos2.z)) + + if distance <= collision_boundary + object_collision_boundary and y_base_diff >= 0 and y_top_diff >= 0 then + + local dir = vector.direction(pos,pos2) + + dir.y = 0 + + --eliminate mob being stuck in corners + if dir.x == 0 and dir.z == 0 then + --slightly adjust mob position to prevent equal length + --corner/wall sticking + dir.x = dir.x + ((math_random()/10)*integer_test[math.random(1,2)]) + dir.z = dir.z + ((math_random()/10)*integer_test[math.random(1,2)]) + end + + local velocity = dir + + --0.5 is the max force multiplier + local force = 0.5 - (0.5 * distance / (collision_boundary + object_collision_boundary)) + + local vel1 = vector.multiply(velocity, -1.5) + local vel2 = vector.multiply(velocity, 1.5) + + vel1 = vector.multiply(vel1, force * 10) + vel2 = vector.multiply(vel2, force) + + if object:is_player() then + vel2 = vector_multiply(vel2, 2.5) + + --integrate mob punching into collision detection + if check_for_attack and self.punch_timer <= 0 then + if object == self.attacking then + mobs.punch_attack(self) + end + end + end + + self.object:add_velocity(vel1) + object:add_velocity(vel2) + end + + end + end +end + + +--this is used for arrow collisions +mobs.arrow_hit = function(self, player) + + player:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = self._damage} + }, nil) + + + --knockback + local pos1 = self.object:get_pos() + pos1.y = 0 + local pos2 = player:get_pos() + pos2.y = 0 + local dir = vector_direction(pos1,pos2) + + dir = vector_multiply(dir,3) + + if player:get_velocity().y <= 1 then + dir.y = 5 + end + + player:add_velocity(dir) +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua new file mode 100644 index 000000000..fd95b60ef --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/death_logic.lua @@ -0,0 +1,154 @@ +local minetest_add_item = minetest.add_item +local minetest_sound_play = minetest.sound_play + +local math_pi = math.pi +local math_random = math.random +local math_floor = math.floor +local HALF_PI = math_pi / 2 + +local vector_new = vector.new + + +-- drop items +local item_drop = function(self, cooked, looting_level) + + looting_level = looting_level or 0 + + -- no drops for child mobs (except monster) + if (self.child and self.type ~= "monster") then + return + end + + local obj, item, num + local pos = self.object:get_pos() + + self.drops = self.drops or {} -- nil check + + for n = 1, #self.drops do + local dropdef = self.drops[n] + local chance = 1 / dropdef.chance + local looting_type = dropdef.looting + + if looting_level > 0 then + local chance_function = dropdef.looting_chance_function + if chance_function then + chance = chance_function(looting_level) + elseif looting_type == "rare" then + chance = chance + (dropdef.looting_factor or 0.01) * looting_level + end + end + + local num = 0 + local do_common_looting = (looting_level > 0 and looting_type == "common") + if math_random() < chance then + num = math_random(dropdef.min or 1, dropdef.max or 1) + elseif not dropdef.looting_ignore_chance then + do_common_looting = false + end + + if do_common_looting then + num = num + math_floor(math_random(0, looting_level) + 0.5) + end + + if num > 0 then + item = dropdef.name + + -- cook items when true + if cooked then + + local output = minetest_get_craft_result({ + method = "cooking", width = 1, items = {item}}) + + if output and output.item and not output.item:is_empty() then + item = output.item:get_name() + end + end + + -- add item if it exists + for x = 1, num do + obj = minetest_add_item(pos, ItemStack(item .. " " .. 1)) + end + + if obj and obj:get_luaentity() then + + obj:set_velocity({ + x = math_random(-10, 10) / 9, + y = 6, + z = math_random(-10, 10) / 9, + }) + elseif obj then + obj:remove() -- item does not exist + end + end + end + + self.drops = {} +end + + +mobs.death_logic = function(self, dtime) + self.death_animation_timer = self.death_animation_timer + dtime + + --get all attached entities and sort through them + local attached_entities = self.object:get_children() + if #attached_entities > 0 then + for _,entity in pairs(attached_entities) do + --kick the player off + if entity:is_player() then + mobs.detach(entity) + --kick mobs off + --if there is scaling issues, this needs an additional check + else + entity:set_detach() + end + end + end + + --stop mob from getting in the way of other mobs you're fighting + if self.object:get_properties().pointable then + self.object:set_properties({pointable = false}) + end + + --the final POOF of a mob despawning + if self.death_animation_timer >= 1.25 then + + item_drop(self,false,1) + + mobs.death_effect(self) + + mcl_experience.throw_experience(self.object:get_pos(), math_random(self.xp_min, self.xp_max)) + + self.object:remove() + + return + end + + --I'm sure there's a more efficient way to do this + --but this is the easiest, easier to work with 1 variable synced + --this is also not smooth + local death_animation_roll = self.death_animation_timer * 2 -- * 2 to make it faster + if death_animation_roll > 1 then + death_animation_roll = 1 + end + + local rot = self.object:get_rotation() --(no pun intended) + + rot.z = death_animation_roll * HALF_PI + + self.object:set_rotation(rot) + + mobs.set_mob_animation(self,"stand", true) + + + --flying and swimming mobs just fall down + if self.fly or self.swim then + if self.object:get_acceleration().y ~= -self.gravity then + self.object:set_acceleration(vector_new(0,-self.gravity,0)) + end + end + + --when landing allow mob to slow down and just fall if in air + if self.pause_timer <= 0 then + mobs.set_velocity(self,0) + end +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua new file mode 100644 index 000000000..7c709c09e --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/environment.lua @@ -0,0 +1,260 @@ +local minetest_line_of_sight = minetest.line_of_sight +local minetest_dir_to_yaw = minetest.dir_to_yaw +local minetest_yaw_to_dir = minetest.yaw_to_dir +local minetest_get_node = minetest.get_node +local minetest_get_item_group = minetest.get_item_group +local minetest_get_objects_inside_radius = minetest.get_objects_inside_radius +local minetest_get_node_or_nil = minetest.get_node_or_nil +local minetest_registered_nodes = minetest.registered_nodes +local minetest_get_connected_players = minetest.get_connected_players + +local vector_new = vector.new +local vector_add = vector.add +local vector_multiply = vector.multiply +local vector_distance = vector.distance + +local table_copy = table.copy + +local math_abs = math.abs + +-- default function when mobs are blown up with TNT +local do_tnt = function(obj, damage) + + obj.object:punch(obj.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = damage}, + }, nil) + + return false, true, {} +end + +--a fast function to be able to detect only players without using objects_in_radius +mobs.detect_closest_player_within_radius = function(self, line_of_sight, radius, object_height_adder) + + local pos1 = self.object:get_pos() + local players_in_area = {} + local winner_player = nil + local players_detected = 0 + + --get players in radius + for _,player in pairs(minetest.get_connected_players()) do + if player and player:get_hp() > 0 then + + local pos2 = player:get_pos() + + local distance = vector_distance(pos1,pos2) + + if distance <= radius then + if line_of_sight then + --must add eye height or stuff breaks randomly because of + --seethrough nodes being a blocker (like grass) + if minetest_line_of_sight( + vector_new(pos1.x, pos1.y + object_height_adder, pos1.z), + vector_new(pos2.x, pos2.y + player:get_properties().eye_height, pos2.z) + ) then + players_detected = players_detected + 1 + players_in_area[player] = distance + end + else + players_detected = players_detected + 1 + players_in_area[player] = distance + end + end + end + end + + + --return if there's no one near by + if players_detected <= 0 then --handle negative numbers for some crazy error that could possibly happen + return nil + end + + --do a default radius max + local shortest_distance = radius + 1 + + --sort through players and find the closest player + for player,distance in pairs(players_in_area) do + if distance < shortest_distance then + shortest_distance = distance + winner_player = player + end + end + + return(winner_player) +end + + +--check if a mob needs to jump +mobs.jump_check = function(self,dtime) + + local pos = self.object:get_pos() + pos.y = pos.y + 0.1 + local dir = minetest_yaw_to_dir(self.yaw) + + local collisionbox = self.object:get_properties().collisionbox + local radius = collisionbox[4] + 0.5 + + vector_multiply(dir, radius) + + --only jump if there's a node and a non-solid node above it + local test_dir = vector_add(pos,dir) + + local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0 + + test_dir.y = test_dir.y + 1 + + local green_flag_2 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") == 0 + + if green_flag_1 and green_flag_2 then + --can jump over node + return(1) + elseif green_flag_1 and not green_flag_2 then + --wall in front of mob + return(2) + end + + --nothing to jump over + return(0) +end + +-- a helper function to quickly turn neutral passive mobs hostile +local turn_hostile = function(self,detected_mob) + --drop in variables for attacking (stops crash) + detected_mob.punch_timer = 0 + --set to hostile + detected_mob.hostile = true + --hostile_cooldown timer is initialized here + detected_mob.hostile_cooldown_timer = detected_mob.hostile_cooldown + --set target to the same + detected_mob.attacking = self.attacking +end + +--allow hostile mobs to signal to other mobs +--to switch from neutal passive to neutral hostile +mobs.group_attack_initialization = function(self) + + --get basic data + local friends_list + + if self.group_attack == true then + friends_list = {self.name} + else + friends_list = table_copy(self.group_attack) + end + + local objects_in_area = minetest_get_objects_inside_radius(self.object:get_pos(), self.view_range) + + --get the player's name + local name = self.attacking:get_player_name() + + --re-use local variable + local detected_mob + + --run through mobs in viewing distance + for _,object in pairs(objects_in_area) do + if object and object:get_luaentity() then + detected_mob = object:get_luaentity() + -- only alert members of same mob or friends + if detected_mob._cmi_is_mob and detected_mob.state ~= "attack" and detected_mob.owner ~= name then + if detected_mob.name == self.name then + turn_hostile(self,detected_mob) + else + for _,id in pairs(friends_list) do + if detected_mob.name == id then + turn_hostile(self,detected_mob) + break + end + end + end + end + + --THIS NEEDS TO BE RE-IMPLEMENTED AS A GLOBAL HIT IN MOB_PUNCH!! + -- have owned mobs attack player threat + --if obj.owner == name and obj.owner_loyal then + -- do_attack(obj, self.object) + --end + end + end +end + +-- check if within physical map limits (-30911 to 30927) +-- within_limits, wmin, wmax = nil, -30913, 30928 +mobs.within_limits = function(pos, radius) + if mcl_vars then + if mcl_vars.mapgen_edge_min and mcl_vars.mapgen_edge_max then + wmin, wmax = mcl_vars.mapgen_edge_min, mcl_vars.mapgen_edge_max + within_limits = function(pos, radius) + return pos + and (pos.x - radius) > wmin and (pos.x + radius) < wmax + and (pos.y - radius) > wmin and (pos.y + radius) < wmax + and (pos.z - radius) > wmin and (pos.z + radius) < wmax + end + end + end + return pos + and (pos.x - radius) > wmin and (pos.x + radius) < wmax + and (pos.y - radius) > wmin and (pos.y + radius) < wmax + and (pos.z - radius) > wmin and (pos.z + radius) < wmax +end + +-- get node but use fallback for nil or unknown +mobs.node_ok = function(pos, fallback) + + fallback = fallback or mobs.fallback_node + + local node = minetest_get_node_or_nil(pos) + + if node and minetest_registered_nodes[node.name] then + return node + end + + return minetest_registered_nodes[fallback] +end + + +--a teleport functoin +mobs.teleport = function(self, target) + if self.do_teleport then + if self.do_teleport(self, target) == false then + return + end + end +end + +--a function used for despawning mobs +mobs.check_for_player_within_area = function(self, radius) + local pos1 = self.object:get_pos() + --get players in radius + for _,player in pairs(minetest_get_connected_players()) do + if player and player:get_hp() > 0 then + local pos2 = player:get_pos() + local distance = vector_distance(pos1,pos2) + if distance < radius then + --found a player + return(true) + end + end + end + --did not find a player + return(false) +end + + +--a simple helper function for mobs following +mobs.get_2d_distance = function(pos1,pos2) + pos1.y = 0 + pos2.y = 0 + return(vector_distance(pos1, pos2)) +end + +-- fall damage onto solid ground +mobs.calculate_fall_damage = function(self) + if self.old_velocity and self.old_velocity.y < -7 and self.object:get_velocity().y == 0 then + local vel = self.object:get_velocity() + if vel then + local damage = math_abs(self.old_velocity.y + 7) * 2 + self.pause_timer = 0.4 + self.health = self.health - damage + end + end +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua new file mode 100644 index 000000000..0fc94ffe6 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua @@ -0,0 +1,112 @@ +local vector_new = vector.new + + +--converts yaw to degrees +local degrees = function(yaw) + return(yaw*180.0/math.pi) +end + + +mobs.do_head_logic = function(self,dtime) + + local player = minetest.get_player_by_name("singleplayer") + + local look_at = player:get_pos() + look_at.y = look_at.y + player:get_properties().eye_height + + + + + local pos = self.object:get_pos() + + local body_yaw = self.object:get_yaw() + + local body_dir = minetest.yaw_to_dir(body_yaw) + + + pos.y = pos.y + self.head_height_offset + + local head_offset = vector.multiply(body_dir, self.head_direction_offset) + + pos = vector.add(pos, head_offset) + + + + + minetest.add_particle({ + pos = pos, + velocity = {x=0, y=0, z=0}, + acceleration = {x=0, y=0, z=0}, + expirationtime = 0.2, + size = 1, + texture = "default_dirt.png", + }) + + + local bone_pos = vector_new(0,0,0) + + + --(horizontal) + bone_pos.y = self.head_bone_pos_y + + --(vertical) + bone_pos.z = self.head_bone_pos_z + + --print(yaw) + + --local _, bone_rot = self.object:get_bone_position("head") + + --bone_rot.x = bone_rot.x + (dtime * 10) + --bone_rot.z = bone_rot.z + (dtime * 10) + + + local head_yaw + head_yaw = minetest.dir_to_yaw(vector.direction(pos,look_at)) - body_yaw + + if self.reverse_head_yaw then + head_yaw = head_yaw * -1 + end + + --over rotation protection + --stops radians from going out of spec + if head_yaw > math.pi then + head_yaw = head_yaw - (math.pi * 2) + elseif head_yaw < -math.pi then + head_yaw = head_yaw + (math.pi * 2) + end + + + local check_failed = false + --upper check + 90 degrees or upper math.radians (3.14/2) + if head_yaw > math.pi - (math.pi/2) then + head_yaw = 0 + check_failed = true + --lower check - 90 degrees or lower negative math.radians (-3.14/2) + elseif head_yaw < -math.pi + (math.pi/2) then + head_yaw = 0 + check_failed = true + end + + local head_pitch = 0 + + --DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG + --head_yaw = 0 + --DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG + + if not check_failed then + head_pitch = minetest.dir_to_yaw(vector.new(vector.distance(vector.new(pos.x,0,pos.z),vector.new(look_at.x,0,look_at.z)),0,pos.y-look_at.y))+(math.pi/2) + end + + if self.head_pitch_modifier then + head_pitch = head_pitch + self.head_pitch_modifier + end + + if self.swap_y_with_x then + self.object:set_bone_position(self.head_bone, bone_pos, vector_new(degrees(head_pitch),degrees(head_yaw),0)) + else + self.object:set_bone_position(self.head_bone, bone_pos, vector_new(degrees(head_pitch),0,degrees(head_yaw))) + end + + + --set_bone_position([bone, position, rotation]) +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/interaction.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/interaction.lua new file mode 100644 index 000000000..6b23d2fe7 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/interaction.lua @@ -0,0 +1,291 @@ +local minetest_after = minetest.after +local minetest_sound_play = minetest.sound_play +local minetest_dir_to_yaw = minetest.dir_to_yaw + +local math_floor = math.floor +local math_min = math.min +local math_random = math.random + +local vector_direction = vector.direction +local vector_multiply = vector.multiply + +local MAX_MOB_NAME_LENGTH = 30 + +mobs.feed_tame = function(self) + return nil +end + +-- Code to execute before custom on_rightclick handling +local on_rightclick_prefix = function(self, clicker) + + local item = clicker:get_wielded_item() + + -- Name mob with nametag + if not self.ignores_nametag and item:get_name() == "mcl_mobs:nametag" then + + local tag = item:get_meta():get_string("name") + if tag ~= "" then + if string.len(tag) > MAX_MOB_NAME_LENGTH then + tag = string.sub(tag, 1, MAX_MOB_NAME_LENGTH) + end + self.nametag = tag + + mobs.update_tag(self) + + if not mobs.is_creative(clicker:get_player_name()) then + item:take_item() + clicker:set_wielded_item(item) + end + return true + end + + end + return false +end + +-- I have no idea what this does +mobs.create_mob_on_rightclick = function(on_rightclick) + return function(self, clicker) + --don't allow rightclicking dead mobs + if self.health <= 0 then + return + end + local stop = on_rightclick_prefix(self, clicker) + if (not stop) and (on_rightclick) then + on_rightclick(self, clicker) + end + end +end + + +-- deal damage and effects when mob punched +mobs.mob_punch = function(self, hitter, tflp, tool_capabilities, dir) + + --don't do anything if the mob is already dead + if self.health <= 0 then + return + end + + --neutral passive mobs switch to neutral hostile + if self.neutral then + --drop in variables for attacking (stops crash) + self.attacking = hitter + self.punch_timer = 0 + self.hostile = true + --hostile_cooldown timer is initialized here + self.hostile_cooldown_timer = self.hostile_cooldown + + --initialize the group attack (check for other mobs in area, make them neutral hostile) + if self.group_attack then + mobs.group_attack_initialization(self) + end + end + + --turn skittish mobs away and RUN + if self.skittish then + + self.state = "run" + + self.run_timer = 5 --arbitrary 5 seconds + + local pos1 = self.object:get_pos() + pos1.y = 0 + local pos2 = hitter:get_pos() + pos2.y = 0 + + + local dir = vector_direction(pos2,pos1) + + local yaw = minetest_dir_to_yaw(dir) + + self.yaw = yaw + end + + + -- custom punch function + if self.do_punch then + -- when false skip going any further + if self.do_punch(self, hitter, tflp, tool_capabilities, dir) == false then + return + end + end + + --don't do damage until pause timer resets + if self.pause_timer > 0 then + return + end + + + -- error checking when mod profiling is enabled + if not tool_capabilities then + minetest.log("warning", "[mobs_mc] Mod profiling enabled, damage not enabled") + return + end + + + local is_player = hitter:is_player() + + + -- punch interval + local weapon = hitter:get_wielded_item() + + local punch_interval = 1.4 + + -- exhaust attacker + if mod_hunger and is_player then + mcl_hunger.exhaust(hitter:get_player_name(), mcl_hunger.EXHAUST_ATTACK) + end + + -- calculate mob damage + local damage = 0 + local armor = self.object:get_armor_groups() or {} + local tmp + + --calculate damage groups + for group,_ in pairs( (tool_capabilities.damage_groups or {}) ) do + damage = damage + (tool_capabilities.damage_groups[group] or 0) * ((armor[group] or 0) / 100.0) + end + + if weapon then + local fire_aspect_level = mcl_enchanting.get_enchantment(weapon, "fire_aspect") + if fire_aspect_level > 0 then + mcl_burning.set_on_fire(self.object, fire_aspect_level * 4) + end + end + + -- check for tool immunity or special damage + for n = 1, #self.immune_to do + if self.immune_to[n][1] == weapon:get_name() then + damage = self.immune_to[n][2] or 0 + break + end + end + + -- healing + if damage <= -1 then + self.health = self.health - math_floor(damage) + return + end + + if tool_capabilities then + punch_interval = tool_capabilities.full_punch_interval or 1.4 + end + + -- add weapon wear manually + -- Required because we have custom health handling ("health" property) + --minetest_is_creative_enabled("") ~= true --removed for now + if tool_capabilities then + if tool_capabilities.punch_attack_uses then + -- Without this delay, the wear does not work. Quite hacky ... + minetest_after(0, function(name) + local player = minetest.get_player_by_name(name) + if not player then return end + local weapon = hitter:get_wielded_item(player) + local def = weapon:get_definition() + if def.tool_capabilities and def.tool_capabilities.punch_attack_uses then + local wear = math_floor(65535/tool_capabilities.punch_attack_uses) + weapon:add_wear(wear) + hitter:set_wielded_item(weapon) + end + end, hitter:get_player_name()) + end + end + + + --if player is falling multiply damage by 1.5 + --critical hit + if hitter:get_velocity().y < 0 then + damage = damage * 1.5 + mobs.critical_effect(self) + end + + + -- only play hit sound and show blood effects if damage is 1 or over; lower to 0.1 to ensure armor works appropriately. + if damage >= 0.1 then + + minetest_sound_play("default_punch", { + object = self.object, + max_hear_distance = 16 + }, true) + + -- do damage + self.health = self.health - damage + + + --0.4 seconds until you can hurt the mob again + self.pause_timer = 0.4 + + --don't do knockback from a rider + for _,obj in pairs(self.object:get_children()) do + if obj == hitter then + return + end + end + + -- knock back effect + local velocity = self.object:get_velocity() + + --2d direction + local pos1 = self.object:get_pos() + pos1.y = 0 + local pos2 = hitter:get_pos() + pos2.y = 0 + + local dir = vector.direction(pos2,pos1) + + local up = 3 + + -- if already in air then dont go up anymore when hit + if velocity.y ~= 0 then + up = 0 + end + + + --0.75 for perfect distance to not be too easy, and not be too hard + local multiplier = 0.75 + + -- check if tool already has specific knockback value + local knockback_enchant = mcl_enchanting.get_enchantment(hitter:get_wielded_item(), "knockback") + if knockback_enchant and knockback_enchant > 0 then + multiplier = knockback_enchant + 1 --(starts from 1, 1 would be no change) + end + + --do this to sure you can punch a mob back when + --it's coming for you + if self.hostile then + multiplier = multiplier + 2 + end + + dir = vector_multiply(dir,multiplier) + + dir.y = up + + --add the velocity + self.object:add_velocity(dir) + + end +end + +--do internal per mob projectile calculations +mobs.shoot_projectile = function(self) + + local pos1 = self.object:get_pos() + --add mob eye height + pos1.y = pos1.y + self.eye_height + + local pos2 = self.attacking:get_pos() + --add player eye height + pos2.y = pos2.y + self.attacking:get_properties().eye_height + + --get direction + local dir = vector_direction(pos1,pos2) + + --call internal shoot_arrow function + self.shoot_arrow(self,pos1,dir) +end + +mobs.update_tag = function(self) + self.object:set_properties({ + nametag = self.nametag, + }) +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/mob_effects.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/mob_effects.lua new file mode 100644 index 000000000..847315ff1 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/mob_effects.lua @@ -0,0 +1,152 @@ +local minetest_add_particlespawner = minetest.add_particlespawner + +mobs.death_effect = function(self) + + local pos = self.object:get_pos() + local yaw = self.object:get_yaw() + local collisionbox = self.object:get_properties().collisionbox + + local min, max + + if collisionbox then + min = {x=collisionbox[1], y=collisionbox[2], z=collisionbox[3]} + max = {x=collisionbox[4], y=collisionbox[5], z=collisionbox[6]} + end + + minetest_add_particlespawner({ + amount = 50, + time = 0.0001, + minpos = vector.add(pos, min), + maxpos = vector.add(pos, max), + minvel = vector.new(-0.5,0.5,-0.5), + maxvel = vector.new(0.5,1,0.5), + minexptime = 1.1, + maxexptime = 1.5, + minsize = 1, + maxsize = 2, + collisiondetection = false, + vertical = false, + texture = "mcl_particles_mob_death.png", -- this particle looks strange + }) +end + +mobs.critical_effect = function(self) + + local pos = self.object:get_pos() + local yaw = self.object:get_yaw() + local collisionbox = self.object:get_properties().collisionbox + + local min, max + + if collisionbox then + min = {x=collisionbox[1], y=collisionbox[2], z=collisionbox[3]} + max = {x=collisionbox[4], y=collisionbox[5], z=collisionbox[6]} + end + + minetest_add_particlespawner({ + amount = 10, + time = 0.0001, + minpos = vector.add(pos, min), + maxpos = vector.add(pos, max), + minvel = vector.new(-1,1,-1), + maxvel = vector.new(1,3,1), + minexptime = 0.7, + maxexptime = 1, + minsize = 1, + maxsize = 2, + collisiondetection = false, + vertical = false, + texture = "heart.png^[colorize:black:255", + }) +end + +--when feeding a mob +mobs.feed_effect = function(self) + + local pos = self.object:get_pos() + local yaw = self.object:get_yaw() + local collisionbox = self.object:get_properties().collisionbox + + local min, max + + if collisionbox then + min = {x=collisionbox[1], y=collisionbox[2], z=collisionbox[3]} + max = {x=collisionbox[4], y=collisionbox[5], z=collisionbox[6]} + end + + minetest_add_particlespawner({ + amount = 10, + time = 0.0001, + minpos = vector.add(pos, min), + maxpos = vector.add(pos, max), + minvel = vector.new(-1,1,-1), + maxvel = vector.new(1,3,1), + minexptime = 0.7, + maxexptime = 1, + minsize = 1, + maxsize = 2, + collisiondetection = false, + vertical = false, + texture = "heart.png^[colorize:gray:255", + }) +end + +--hearts when tamed +mobs.tamed_effect = function(self) + local pos = self.object:get_pos() + local yaw = self.object:get_yaw() + local collisionbox = self.object:get_properties().collisionbox + + local min, max + + if collisionbox then + min = {x=collisionbox[1], y=collisionbox[2], z=collisionbox[3]} + max = {x=collisionbox[4], y=collisionbox[5], z=collisionbox[6]} + end + + minetest_add_particlespawner({ + amount = 30, + time = 0.0001, + minpos = vector.add(pos, min), + maxpos = vector.add(pos, max), + minvel = vector.new(-1,1,-1), + maxvel = vector.new(1,3,1), + minexptime = 0.7, + maxexptime = 1, + minsize = 1, + maxsize = 2, + collisiondetection = false, + vertical = false, + texture = "heart.png", + }) +end + +--hearts when breeding +mobs.breeding_effect = function(self) + local pos = self.object:get_pos() + local yaw = self.object:get_yaw() + local collisionbox = self.object:get_properties().collisionbox + + local min, max + + if collisionbox then + min = {x=collisionbox[1], y=collisionbox[2], z=collisionbox[3]} + max = {x=collisionbox[4], y=collisionbox[5], z=collisionbox[6]} + end + + minetest_add_particlespawner({ + amount = 2, + time = 0.0001, + minpos = vector.add(pos, min), + maxpos = vector.add(pos, max), + minvel = vector.new(-1,1,-1), + maxvel = vector.new(1,3,1), + minexptime = 0.7, + maxexptime = 1, + minsize = 1, + maxsize = 2, + collisiondetection = false, + vertical = false, + texture = "heart.png", + }) +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua new file mode 100644 index 000000000..9a5fd9ea1 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/movement.lua @@ -0,0 +1,391 @@ +local math_pi = math.pi +local math_sin = math.sin +local math_cos = math.cos +local math_random = math.random +local HALF_PI = math_pi / 2 +local DOUBLE_PI = math_pi * 2 + +-- localize vector functions +local vector_new = vector.new +local vector_length = vector.length +local vector_multiply = vector.multiply +local vector_distance = vector.distance +local vector_normalize = vector.normalize + +local minetest_yaw_to_dir = minetest.yaw_to_dir +local minetest_dir_to_yaw = minetest.dir_to_yaw + +local DEFAULT_JUMP_HEIGHT = 5 +local DEFAULT_FLOAT_SPEED = 4 +local DEFAULT_CLIMB_SPEED = 3 + + +mobs.stick_in_cobweb = function(self) + local current_velocity = self.object:get_velocity() + + local goal_velocity = vector_multiply(vector_normalize(current_velocity), 0.4) + + goal_velocity.y = -0.5 + + local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) + + --smooths out mobs a bit + if vector_length(new_velocity_addition) >= 0.0001 then + self.object:add_velocity(new_velocity_addition) + end +end + +--this is a generic float function +mobs.float = function(self) + + if self.object:get_acceleration().y ~= 0 then + self.object:set_acceleration(vector_new(0,0,0)) + end + + local current_velocity = self.object:get_velocity() + + local goal_velocity = { + x = 0, + y = DEFAULT_FLOAT_SPEED, + z = 0, + } + + local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) + + new_velocity_addition.x = 0 + new_velocity_addition.z = 0 + + --smooths out mobs a bit + if vector_length(new_velocity_addition) >= 0.0001 then + self.object:add_velocity(new_velocity_addition) + end +end + +--this is a generic climb function +mobs.climb = function(self) + + local current_velocity = self.object:get_velocity() + + local goal_velocity = { + x = 0, + y = DEFAULT_CLIMB_SPEED, + z = 0, + } + + local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) + + new_velocity_addition.x = 0 + new_velocity_addition.z = 0 + + --smooths out mobs a bit + if vector_length(new_velocity_addition) >= 0.0001 then + self.object:add_velocity(new_velocity_addition) + end +end + + + +--[[ + _ _ +| | | | +| | __ _ _ __ __| | +| | / _` | '_ \ / _` | +| |___| (_| | | | | (_| | +\_____/\__,_|_| |_|\__,_| +]] + + +-- move mob in facing direction +--this has been modified to be internal +--internal = lua (self.yaw) +--engine = c++ (self.object:get_yaw()) +mobs.set_velocity = function(self, v) + + local yaw = (self.yaw or 0) + + local current_velocity = self.object:get_velocity() + + local goal_velocity = { + x = (math_sin(yaw) * -v), + y = 0, + z = (math_cos(yaw) * v), + } + + + local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) + + if vector_length(new_velocity_addition) > vector_length(goal_velocity) then + vector.multiply(new_velocity_addition, (vector_length(goal_velocity) / vector_length(new_velocity_addition))) + end + + new_velocity_addition.y = 0 + + --smooths out mobs a bit + if vector_length(new_velocity_addition) >= 0.0001 then + self.object:add_velocity(new_velocity_addition) + end +end + + + +-- calculate mob velocity +mobs.get_velocity = function(self) + + local v = self.object:get_velocity() + + v.y = 0 + + if v then + return vector_length(v) + end + + return 0 +end + +--make mobs jump +mobs.jump = function(self, velocity) + + if self.object:get_velocity().y ~= 0 or not self.old_velocity or (self.old_velocity and self.old_velocity.y > 0) then + return + end + + --fallback velocity to allow modularity + velocity = velocity or DEFAULT_JUMP_HEIGHT + + self.object:add_velocity(vector_new(0,velocity,0)) +end + +--make mobs fall slowly +mobs.mob_fall_slow = function(self) + + local current_velocity = self.object:get_velocity() + + local goal_velocity = { + x = 0, + y = -2, + z = 0, + } + + + local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) + + new_velocity_addition.x = 0 + new_velocity_addition.z = 0 + + if vector_length(new_velocity_addition) > vector_length(goal_velocity) then + vector.multiply(new_velocity_addition, (vector_length(goal_velocity) / vector_length(new_velocity_addition))) + end + + new_velocity_addition.x = 0 + new_velocity_addition.z = 0 + + --smooths out mobs a bit + if vector_length(new_velocity_addition) >= 0.0001 then + self.object:add_velocity(new_velocity_addition) + end + +end + + +--[[ + _____ _ +/ ___| (_) +\ `--.__ ___ _ __ ___ + `--. \ \ /\ / / | '_ ` _ \ +/\__/ /\ V V /| | | | | | | +\____/ \_/\_/ |_|_| |_| |_| +]]-- + + + + +--make mobs flop +mobs.flop = function(self, velocity) + + if self.object:get_velocity().y ~= 0 or not self.old_velocity or (self.old_velocity and self.old_velocity.y > 0) then + return false + end + + mobs.set_velocity(self, 0) + + --fallback velocity to allow modularity + velocity = velocity or DEFAULT_JUMP_HEIGHT + + --create a random direction (2d yaw) + local dir = DOUBLE_PI * math_random() + + --create a random force value + local force = math_random(0,3) + math_random() + + --convert the yaw to a direction vector then multiply it times the force + local final_additional_force = vector_multiply(minetest_yaw_to_dir(dir), force) + + --place in the "flop" velocity to make the mob flop + final_additional_force.y = velocity + + self.object:add_velocity(final_additional_force) + + return true +end + + + +-- move mob in facing direction +--this has been modified to be internal +--internal = lua (self.yaw) +--engine = c++ (self.object:get_yaw()) +mobs.set_swim_velocity = function(self, v) + + local yaw = (self.yaw or 0) + local pitch = (self.pitch or 0) + + if v == 0 then + pitch = 0 + end + + local current_velocity = self.object:get_velocity() + + local goal_velocity = { + x = (math_sin(yaw) * -v), + y = pitch, + z = (math_cos(yaw) * v), + } + + + local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) + + if vector_length(new_velocity_addition) > vector_length(goal_velocity) then + vector.multiply(new_velocity_addition, (vector_length(goal_velocity) / vector_length(new_velocity_addition))) + end + + --smooths out mobs a bit + if vector_length(new_velocity_addition) >= 0.0001 then + self.object:add_velocity(new_velocity_addition) + end +end + +--[[ +______ _ +| ___| | +| |_ | |_ _ +| _| | | | | | +| | | | |_| | +\_| |_|\__, | + __/ | + |___/ +]]-- + +-- move mob in facing direction +--this has been modified to be internal +--internal = lua (self.yaw) +--engine = c++ (self.object:get_yaw()) +mobs.set_fly_velocity = function(self, v) + + local yaw = (self.yaw or 0) + local pitch = (self.pitch or 0) + + if v == 0 then + pitch = 0 + end + + local current_velocity = self.object:get_velocity() + + local goal_velocity = { + x = (math_sin(yaw) * -v), + y = pitch, + z = (math_cos(yaw) * v), + } + + + local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) + + if vector_length(new_velocity_addition) > vector_length(goal_velocity) then + vector.multiply(new_velocity_addition, (vector_length(goal_velocity) / vector_length(new_velocity_addition))) + end + + --smooths out mobs a bit + if vector_length(new_velocity_addition) >= 0.0001 then + self.object:add_velocity(new_velocity_addition) + end +end + +--a quick and simple pitch calculation between two vector positions +mobs.calculate_pitch = function(pos1, pos2) + + if pos1 == nil or pos2 == nil then + return false + end + + return(minetest_dir_to_yaw(vector_new(vector_distance(vector_new(pos1.x,0,pos1.z),vector_new(pos2.x,0,pos2.z)),0,pos1.y - pos2.y)) + HALF_PI) +end + +--make mobs fly up or down based on their y difference +mobs.set_pitch_while_attacking = function(self) + local pos1 = self.object:get_pos() + local pos2 = self.attacking:get_pos() + + local pitch = mobs.calculate_pitch(pos2,pos1) + + self.pitch = pitch +end + + + +--[[ + ___ + |_ | + | |_ _ _ __ ___ _ __ + | | | | | '_ ` _ \| '_ \ +/\__/ / |_| | | | | | | |_) | +\____/ \__,_|_| |_| |_| .__/ + | | + |_| +]]-- + +--special mob jump movement +mobs.jump_move = function(self, velocity) + + if self.object:get_velocity().y ~= 0 or not self.old_velocity or (self.old_velocity and self.old_velocity.y > 0) then + return + end + + --make the mob stick for a split second + mobs.set_velocity(self,0) + + --fallback velocity to allow modularity + jump_height = DEFAULT_JUMP_HEIGHT + + local yaw = (self.yaw or 0) + + local current_velocity = self.object:get_velocity() + + local goal_velocity = { + x = (math_sin(yaw) * -velocity), + y = jump_height, + z = (math_cos(yaw) * velocity), + } + + + local new_velocity_addition = vector.subtract(goal_velocity,current_velocity) + + if vector_length(new_velocity_addition) > vector_length(goal_velocity) then + vector.multiply(new_velocity_addition, (vector_length(goal_velocity) / vector_length(new_velocity_addition))) + end + + --smooths out mobs a bit + if vector_length(new_velocity_addition) >= 0.0001 then + self.object:add_velocity(new_velocity_addition) + end +end + +--make it so mobs do not glitch out and freak out +--when moving around over nodes +mobs.swap_auto_step_height_adjust = function(self) + local y_vel = self.object:get_velocity().y + + if y_vel == 0 and self.stepheight ~= self.stepheight_backup then + self.stepheight = self.stepheight_backup + elseif y_vel ~= 0 and self.stepheight ~= 0 then + self.stepheight = 0 + end +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua new file mode 100644 index 000000000..e7ae6ffbe --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/projectile_handling.lua @@ -0,0 +1,44 @@ +local GRAVITY = minetest.settings:get("movement_gravity")-- + 9.81 + +mobs.shoot_projectile_handling = function(arrow_item, pos, dir, yaw, shooter, power, damage, is_critical, bow_stack, collectable, gravity) + local obj = minetest.add_entity({x=pos.x,y=pos.y,z=pos.z}, arrow_item.."_entity") + if power == nil then + power = 19 + end + if damage == nil then + damage = 3 + end + + gravity = gravity or -GRAVITY + + local knockback + if bow_stack then + local enchantments = mcl_enchanting.get_enchantments(bow_stack) + if enchantments.power then + damage = damage + (enchantments.power + 1) / 4 + end + if enchantments.punch then + knockback = enchantments.punch * 3 + end + if enchantments.flame then + mcl_burning.set_on_fire(obj, math.huge) + end + end + obj:set_velocity({x=dir.x*power, y=dir.y*power, z=dir.z*power}) + obj:set_acceleration({x=0, y=gravity, z=0}) + obj:set_yaw(yaw-math.pi/2) + local le = obj:get_luaentity() + le._shooter = shooter + le._damage = damage + le._is_critical = is_critical + le._startpos = pos + le._knockback = knockback + le._collectable = collectable + + --play custom shoot sound + if shooter ~= nil and shooter.shoot_sound then + minetest.sound_play(shooter.shoot_sound, {pos=pos, max_hear_distance=16}, true) + end + + return obj +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua new file mode 100644 index 000000000..dfef98ee8 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/set_up.lua @@ -0,0 +1,226 @@ +local math_random = math.random + +local minetest_settings = minetest.settings + +-- get entity staticdata +mobs.mob_staticdata = function(self) + + --despawn mechanism + --don't despawned tamed or bred mobs + if not self.tamed and not self.bred then + if not mobs.check_for_player_within_area(self, 64) then + --print("removing SERIALIZED!") + self.object:remove() + return + end + end + + self.remove_ok = true + self.attack = nil + self.following = nil + + if use_cmi then + self.serialized_cmi_components = cmi.serialize_components(self._cmi_components) + end + + local tmp = {} + + for _,stat in pairs(self) do + + local t = type(stat) + + if t ~= "function" + and t ~= "nil" + and t ~= "userdata" + and _ ~= "_cmi_components" then + tmp[_] = self[_] + end + end + + return minetest.serialize(tmp) +end + + +-- activate mob and reload settings +mobs.mob_activate = function(self, staticdata, def, dtime) + + -- remove monsters in peaceful mode + if self.type == "monster" and minetest_settings:get_bool("only_peaceful_mobs", false) then + mcl_burning.extinguish(self.object) + self.object:remove() + return + end + + -- load entity variables + local tmp = minetest.deserialize(staticdata) + + if tmp then + for _,stat in pairs(tmp) do + self[_] = stat + end + end + + --set up wandering + if not self.wandering then + self.wandering = true + end + + --clear animation + self.current_animation = nil + + -- select random texture, set model and size + if not self.base_texture then + + -- compatiblity with old simple mobs textures + if type(def.textures[1]) == "string" then + def.textures = {def.textures} + end + + self.base_texture = def.textures[math_random(1, #def.textures)] + self.base_mesh = def.mesh + self.base_size = self.visual_size + self.base_colbox = self.collisionbox + self.base_selbox = self.selectionbox + end + + -- for current mobs that dont have this set + if not self.base_selbox then + self.base_selbox = self.selectionbox or self.base_colbox + end + + -- set texture, model and size + local textures = self.base_texture + local mesh = self.base_mesh + local vis_size = self.base_size + local colbox = self.base_colbox + local selbox = self.base_selbox + + -- specific texture if gotten + if self.gotten == true + and def.gotten_texture then + textures = def.gotten_texture + end + + -- specific mesh if gotten + if self.gotten == true + and def.gotten_mesh then + mesh = def.gotten_mesh + end + + -- set baby mobs to half size + if self.baby == true then + + vis_size = { + x = self.base_size.x * self.baby_size, + y = self.base_size.y * self.baby_size, + } + + if def.child_texture then + textures = def.child_texture[1] + end + + colbox = { + self.base_colbox[1] * self.baby_size, + self.base_colbox[2] * self.baby_size, + self.base_colbox[3] * self.baby_size, + self.base_colbox[4] * self.baby_size, + self.base_colbox[5] * self.baby_size, + self.base_colbox[6] * self.baby_size + } + selbox = { + self.base_selbox[1] * self.baby_size, + self.base_selbox[2] * self.baby_size, + self.base_selbox[3] * self.baby_size, + self.base_selbox[4] * self.baby_size, + self.base_selbox[5] * self.baby_size, + self.base_selbox[6] * self.baby_size + } + end + + --stop mobs from reviving + if not self.dead and not self.health then + self.health = math_random (self.hp_min, self.hp_max) + end + + + + if not self.random_sound_timer then + self.random_sound_timer = math_random(self.random_sound_timer_min,self.random_sound_timer_max) + end + + if self.breath == nil then + self.breath = self.breath_max + end + + -- pathfinding init + self.path = {} + self.path.way = {} -- path to follow, table of positions + self.path.lastpos = {x = 0, y = 0, z = 0} + self.path.stuck = false + self.path.following = false -- currently following path? + self.path.stuck_timer = 0 -- if stuck for too long search for path + + -- Armor groups + -- immortal=1 because we use custom health + -- handling (using "health" property) + local armor + if type(self.armor) == "table" then + armor = table.copy(self.armor) + armor.immortal = 1 + else + armor = {immortal=1, fleshy = self.armor} + end + self.object:set_armor_groups(armor) + self.old_y = self.object:get_pos().y + self.old_health = self.health + self.sounds.distance = self.sounds.distance or 10 + self.textures = textures + self.mesh = mesh + self.collisionbox = colbox + self.selectionbox = selbox + self.visual_size = vis_size + self.standing_in = "ignore" + self.standing_on = "ignore" + self.jump_sound_cooloff = 0 -- used to prevent jump sound from being played too often in short time + self.opinion_sound_cooloff = 0 -- used to prevent sound spam of particular sound types + + self.texture_mods = {} + + + self.v_start = false + self.timer = 0 + self.blinktimer = 0 + self.blinkstatus = false + + + --continue mob effect on server restart + if self.dead or self.health <= 0 then + self.object:set_texture_mod("^[colorize:red:120") + else + self.object:set_texture_mod("") + end + + + -- set anything changed above + self.object:set_properties(self) + + --update_tag(self) + --mobs.set_animation(self, "stand") + + -- run on_spawn function if found + if self.on_spawn and not self.on_spawn_run then + if self.on_spawn(self) then + self.on_spawn_run = true -- if true, set flag to run once only + end + end + + -- run after_activate + if def.after_activate then + def.after_activate(self, staticdata, def, dtime) + end + + if use_cmi then + self._cmi_components = cmi.activate_components(self.serialized_cmi_components) + cmi.notify_activate(self.object, dtime) + end +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/sound_handling.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/sound_handling.lua new file mode 100644 index 000000000..98d2644e8 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/sound_handling.lua @@ -0,0 +1,59 @@ +local math_random = math.random + + +--generic call for sound handler for mobs (data access) +mobs.play_sound = function(self,sound) + local soundinfo = self.sounds + + if not soundinfo then + return + end + + local play_sound = soundinfo[sound] + + if not play_sound then + return + end + + mobs.play_sound_handler(self, play_sound) +end + + +--generic sound handler for mobs +mobs.play_sound_handler = function(self, sound) + local pitch = (100 + math_random(-15,15) + math_random()) / 100 + local distance = self.sounds.distance or 16 + + minetest.sound_play(sound, { + object = self.object, + gain = 1.0, + max_hear_distance = distance, + pitch = pitch, + }, true) +end + + +--random sound timing handler +mobs.random_sound_handling = function(self,dtime) + + self.random_sound_timer = self.random_sound_timer - dtime + + --play sound and reset timer + if self.random_sound_timer <= 0 then + mobs.play_sound(self,"random") + self.random_sound_timer = math_random(self.random_sound_timer_min,self.random_sound_timer_max) + end +end + +--used for playing a non-mob internal sound at random pitches +mobs.play_sound_specific = function(self,soundname) + local pitch = (100 + math_random(-15,15) + math_random()) / 100 + local distance = self.sounds.distance or 16 + + minetest.sound_play(soundname, { + object = self.object, + gain = 1.0, + max_hear_distance = distance, + pitch = pitch, + }, true) +end \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/mount.lua b/mods/ENTITIES/mcl_mobs/api/mount.lua similarity index 92% rename from mods/ENTITIES/mcl_mobs/mount.lua rename to mods/ENTITIES/mcl_mobs/api/mount.lua index 9383ee067..8ee45f299 100644 --- a/mods/ENTITIES/mcl_mobs/mount.lua +++ b/mods/ENTITIES/mcl_mobs/api/mount.lua @@ -206,21 +206,30 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) -- move forwards if ctrl.up then - entity.v = entity.v + entity.accel / 10 + mobs.set_velocity(entity, entity.run_velocity) + + mobs.set_mob_animation(entity, moving_anim) -- move backwards elseif ctrl.down then - if entity.max_speed_reverse == 0 and entity.v == 0 then - return - end + mobs.set_velocity(entity, -entity.run_velocity) - entity.v = entity.v - entity.accel / 10 + mobs.set_mob_animation(entity, moving_anim) + + --halt + else + + mobs.set_velocity(entity, 0) + + mobs.set_mob_animation(entity, stand_anim) end - -- fix mob rotation + -- mob rotation entity.object:set_yaw(entity.driver:get_look_horizontal() - entity.rotate) + entity.yaw = entity.driver:get_look_horizontal() - entity.rotate + --[[ if can_fly then -- fly up @@ -244,32 +253,21 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) end else + ]]-- - -- jump - if ctrl.jump then + -- jump + if ctrl.jump then - if velo.y == 0 then - velo.y = velo.y + entity.jump_height - acce_y = acce_y + (acce_y * 3) + 1 - end - end - - end - end - - -- if not moving then set animation and return - if entity.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then - - if stand_anim then - mobs:set_animation(entity, stand_anim) + mobs.jump(entity) end - return + --end end + --[[ -- set moving animation if moving_anim then - mobs:set_animation(entity, moving_anim) + mobs:set_mob_animation(entity, moving_anim) end -- Stop! @@ -383,6 +381,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) end entity.v2 = v + ]]-- end @@ -390,6 +389,10 @@ end function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim) + if true then + print("succ") + return + end local ctrl = entity.driver:get_player_control() local velo = entity.object:get_velocity() local dir = entity.driver:get_look_dir() @@ -440,9 +443,9 @@ function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim) -- change animation if stopped if velo.x == 0 and velo.y == 0 and velo.z == 0 then - mobs:set_animation(entity, stand_anim) + mobs:set_mob_animation(entity, stand_anim) else -- moving animation - mobs:set_animation(entity, moving_anim) + mobs:set_mob_animation(entity, moving_anim) end end diff --git a/mods/ENTITIES/mcl_mobs/spawning.lua b/mods/ENTITIES/mcl_mobs/api/spawning.lua similarity index 67% rename from mods/ENTITIES/mcl_mobs/spawning.lua rename to mods/ENTITIES/mcl_mobs/api/spawning.lua index 210c6b9c6..ca4dc1e4f 100644 --- a/mods/ENTITIES/mcl_mobs/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/api/spawning.lua @@ -1,17 +1,30 @@ --lua locals -local get_node = minetest.get_node -local get_item_group = minetest.get_item_group -local get_node_light = minetest.get_node_light +local get_node = minetest.get_node +local get_item_group = minetest.get_item_group +local get_node_light = minetest.get_node_light local find_nodes_in_area_under_air = minetest.find_nodes_in_area_under_air -local new_vector = vector.new +local get_biome_name = minetest.get_biome_name +local get_objects_inside_radius = minetest.get_objects_inside_radius + + local math_random = math.random -local get_biome_name = minetest.get_biome_name +local math_floor = math.floor local max = math.max -local get_objects_inside_radius = minetest.get_objects_inside_radius + local vector_distance = vector.distance +local vector_new = vector.new +local vector_floor = vector.floor + +local table_copy = table.copy +local table_remove = table.remove + -- range for mob count -local aoc_range = 32 +local aoc_range = 48 + +--do mobs spawn? +local mobs_spawn = minetest.settings:get_bool("mobs_spawn", true) ~= false + --[[ THIS IS THE BIG LIST OF ALL BIOMES - used for programming/updating mobs @@ -153,28 +166,14 @@ Overworld regular: - -local mobs_spawn = minetest.settings:get_bool("mobs_spawn", true) ~= false --- count how many mobs of one type are inside an area - -local count_mobs = function(pos,mobtype) +-- count how many mobs are in an area +local count_mobs = function(pos) local num = 0 - local objs = get_objects_inside_radius(pos, aoc_range) - for n = 1, #objs do - local obj = objs[n]:get_luaentity() - if obj and obj.name and obj._cmi_is_mob then - -- count hostile mobs only - if mobtype == "hostile" then - if obj.spawn_class == "hostile" then - num = num + 1 - end - -- count passive mobs only - else - num = num + 1 - end + for _,object in pairs(get_objects_inside_radius(pos, aoc_range)) do + if object and object:get_luaentity() and object:get_luaentity()._cmi_is_mob then + num = num + 1 end end - return num end @@ -484,23 +483,23 @@ end local axis --inner and outer part of square donut radius -local inner = 1 -local outer = 65 +local inner = 15 +local outer = 64 local int = {-1,1} local position_calculation = function(pos) - pos = vector.floor(pos) + pos = vector_floor(pos) --this is used to determine the axis buffer from the player - axis = math.random(0,1) + axis = math_random(0,1) --cast towards the direction if axis == 0 then --x - pos.x = pos.x + math.random(inner,outer)*int[math.random(1,2)] - pos.z = pos.z + math.random(-outer,outer) + pos.x = pos.x + math_random(inner,outer)*int[math_random(1,2)] + pos.z = pos.z + math_random(-outer,outer) else --z - pos.z = pos.z + math.random(inner,outer)*int[math.random(1,2)] - pos.x = pos.x + math.random(-outer,outer) + pos.z = pos.z + math_random(inner,outer)*int[math_random(1,2)] + pos.x = pos.x + math_random(-outer,outer) end return(pos) end @@ -516,7 +515,7 @@ local decypher_limits_dictionary = { local function decypher_limits(posy) --local min_max_table = decypher_limits_dictionary[dimension] --return min_max_table[1],min_max_table[2] - posy = math.floor(posy) + posy = math_floor(posy) return posy - 32, posy + 32 end @@ -539,108 +538,169 @@ if mobs_spawn then local timer = 0 minetest.register_globalstep(function(dtime) timer = timer + dtime - if timer >= 8 then + if timer >= 10 then timer = 0 for _,player in pairs(minetest.get_connected_players()) do - for i = 1,math_random(3,8) do - repeat -- after this line each "break" means "continue" - local player_pos = player:get_pos() + -- after this line each "break" means "continue" + local do_mob_spawning = true + repeat + --don't need to get these variables more than once + --they happen in a single server step - local _,dimension = mcl_worlds.y_to_layer(player_pos.y) + local player_pos = player:get_pos() + local _,dimension = mcl_worlds.y_to_layer(player_pos.y) - if dimension == "void" or dimension == "default" then - break -- ignore void and unloaded area - end + if dimension == "void" or dimension == "default" then + break -- ignore void and unloaded area + end - local min,max = decypher_limits(player_pos.y) + local min,max = decypher_limits(player_pos.y) - local goal_pos = position_calculation(player_pos) + for i = 1,math_random(1,4) do + -- after this line each "break" means "continue" + local do_mob_algorithm = true + repeat - local spawning_position_list = find_nodes_in_area_under_air(new_vector(goal_pos.x,min,goal_pos.z), vector.new(goal_pos.x,max,goal_pos.z), {"group:solid", "group:water", "group:lava"}) + local goal_pos = position_calculation(player_pos) + + local spawning_position_list = find_nodes_in_area_under_air(vector_new(goal_pos.x,min,goal_pos.z), vector_new(goal_pos.x,max,goal_pos.z), {"group:solid", "group:water", "group:lava"}) + + --couldn't find node + if #spawning_position_list <= 0 then + break + end + + local spawning_position = spawning_position_list[math_random(1,#spawning_position_list)] + + --Prevent strange behavior --- this is commented out: /too close to player --fixed with inner circle + if not spawning_position then -- or vector_distance(player_pos, spawning_position) < 15 + break + end + + --hard code mob limit in area to 5 for now + if count_mobs(spawning_position) >= 5 then + break + end + + local gotten_node = get_node(spawning_position).name + + if not gotten_node or gotten_node == "air" then --skip air nodes + break + end + + local gotten_biome = minetest.get_biome_data(spawning_position) + + if not gotten_biome then + break --skip if in unloaded area + end + + gotten_biome = get_biome_name(gotten_biome.biome) --makes it easier to work with + + --add this so mobs don't spawn inside nodes + spawning_position.y = spawning_position.y + 1 + + --only need to poll for node light if everything else worked + local gotten_light = get_node_light(spawning_position) + + local is_water = get_item_group(gotten_node, "water") ~= 0 + local is_lava = get_item_group(gotten_node, "lava") ~= 0 + + local mob_def = nil + + --create a disconnected clone of the spawn dictionary + --prevents memory leak + local mob_library_worker_table = table_copy(spawn_dictionary) + + --grab mob that fits into the spawning location + --randomly grab a mob, don't exclude any possibilities + local repeat_mob_search = true + repeat + + --do not infinite loop + if #mob_library_worker_table <= 0 then + --print("breaking infinite loop") + break + end + + local skip = false + + --use this for removing table elements of mobs that do not match + local temp_index = math_random(1,#mob_library_worker_table) + + local temp_def = mob_library_worker_table[temp_index] + + --skip if something ridiculous happens (nil mob def) + --something truly horrible has happened if skip gets + --activated at this point + if not temp_def then + skip = true + end + + if not skip and (spawning_position.y < temp_def.min_height or spawning_position.y > temp_def.max_height) then + skip = true + end + + --skip if not correct dimension + if not skip and (temp_def.dimension ~= dimension) then + skip = true + end + + --skip if not in correct biome + if not skip and (not biome_check(temp_def.biomes, gotten_biome)) then + skip = true + end + + --don't spawn if not in light limits + if not skip and (gotten_light < temp_def.min_light or gotten_light > temp_def.max_light) then + skip = true + end + + --skip if not in correct spawning type + if not skip and (temp_def.type_of_spawning == "ground" and is_water) then + skip = true + end + + if not skip and (temp_def.type_of_spawning == "ground" and is_lava) then + skip = true + end + + --found a mob, exit out of loop + if not skip then + --minetest.log("warning", "found mob:"..temp_def.name) + --print("found mob:"..temp_def.name) + mob_def = table_copy(temp_def) + break + else + --minetest.log("warning", "deleting temp index "..temp_index) + --print("deleting temp index") + table_remove(mob_library_worker_table, temp_index) + end + + until repeat_mob_search == false --this is needed to sort through mobs randomly + + + --catch if went through all mobs and something went horribly wrong + --could not find a valid mob to spawn that fits the environment + if not mob_def then + break + end + + --adjust the position for water and lava mobs + if mob_def.type_of_spawning == "water" or mob_def.type_of_spawning == "lava" then + spawning_position.y = spawning_position.y - 1 + end + + --print("spawning: " .. mob_def.name) + + --everything is correct, spawn mob + minetest.add_entity(spawning_position, mob_def.name) - --couldn't find node - if #spawning_position_list <= 0 then break - end + until do_mob_algorithm == false --this is a safety catch + end - local spawning_position = spawning_position_list[math_random(1,#spawning_position_list)] - - --Prevent strange behavior/too close to player - if not spawning_position or vector_distance(player_pos, spawning_position) < 15 then - break - end - - local gotten_node = get_node(spawning_position).name - - if not gotten_node or gotten_node == "air" then --skip air nodes - break - end - - local gotten_biome = minetest.get_biome_data(spawning_position) - - if not gotten_biome then - break --skip if in unloaded area - end - - gotten_biome = get_biome_name(gotten_biome.biome) --makes it easier to work with - - --grab random mob - local mob_def = spawn_dictionary[math.random(1,#spawn_dictionary)] - - if not mob_def then - break --skip if something ridiculous happens (nil mob def) - end - - --skip if not correct dimension - if mob_def.dimension ~= dimension then - break - end - - --skip if not in correct biome - if not biome_check(mob_def.biomes, gotten_biome) then - break - end - - --add this so mobs don't spawn inside nodes - spawning_position.y = spawning_position.y + 1 - - if spawning_position.y < mob_def.min_height or spawning_position.y > mob_def.max_height then - break - end - - --only need to poll for node light if everything else worked - local gotten_light = get_node_light(spawning_position) - - --don't spawn if not in light limits - if gotten_light < mob_def.min_light or gotten_light > mob_def.max_light then - break - end - - local is_water = get_item_group(gotten_node, "water") ~= 0 - local is_lava = get_item_group(gotten_node, "lava") ~= 0 - - if mob_def.type_of_spawning == "ground" and is_water then - break - end - - if mob_def.type_of_spawning == "ground" and is_lava then - break - end - - --finally do the heavy check (for now) of mobs in area - if count_mobs(spawning_position, mob_def.spawn_class) >= mob_def.aoc then - break - end - - --adjust the position for water and lava mobs - if mob_def.type_of_spawning == "water" or mob_def.type_of_spawning == "lava" then - spawning_position.y = spawning_position.y - 1 - end - - --everything is correct, spawn mob - minetest.add_entity(spawning_position, mob_def.name) - until true --this is a safety catch - end + break + until do_mob_spawning == false --this is a performance catch end end end) diff --git a/mods/ENTITIES/mcl_mobs/init.lua b/mods/ENTITIES/mcl_mobs/init.lua index 69246b470..b0daba2c4 100644 --- a/mods/ENTITIES/mcl_mobs/init.lua +++ b/mods/ENTITIES/mcl_mobs/init.lua @@ -1,14 +1,16 @@ local path = minetest.get_modpath(minetest.get_current_modname()) +local api_path = path.."/api" + -- Mob API -dofile(path .. "/api.lua") +dofile(api_path .. "/api.lua") -- Spawning Algorithm -dofile(path .. "/spawning.lua") +dofile(api_path .. "/spawning.lua") -- Rideable Mobs -dofile(path .. "/mount.lua") +dofile(api_path .. "/mount.lua") -- Mob Items dofile(path .. "/crafts.lua") \ No newline at end of file diff --git a/mods/ENTITIES/mcl_mobs/lucky_block.lua b/mods/ENTITIES/mcl_mobs/lucky_block.lua deleted file mode 100644 index ea90de74a..000000000 --- a/mods/ENTITIES/mcl_mobs/lucky_block.lua +++ /dev/null @@ -1,8 +0,0 @@ - -if minetest.get_modpath("lucky_block") then - - lucky_block:add_blocks({ - {"dro", {"mcl_mobs:nametag"}, 1}, - {"lig"}, - }) -end diff --git a/mods/ENTITIES/mcl_mobs/sounds/attributes.txt b/mods/ENTITIES/mcl_mobs/sounds/attributes.txt new file mode 100644 index 000000000..1228dd9d7 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/sounds/attributes.txt @@ -0,0 +1,4 @@ + +default_punch.1 = https://freesound.org/people/Merrick079/sounds/566436/ +default_punch.2 = https://freesound.org/people/Merrick079/sounds/566435/ +default_punch.3 = https://freesound.org/people/Merrick079/sounds/566434/ diff --git a/mods/ENTITIES/mcl_mobs/sounds/default_punch.1.ogg b/mods/ENTITIES/mcl_mobs/sounds/default_punch.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4d7ba8015eb13ce415ea09f4223a427bc4d2e17d GIT binary patch literal 12658 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 S`{-i&1IxRgZZmRmas4kUnc?C9 literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mcl_mobs/sounds/default_punch.2.ogg b/mods/ENTITIES/mcl_mobs/sounds/default_punch.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c022d94f871345810b7d90ab953a01985e2d369b GIT binary patch literal 12801 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 A$^ZZW literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mcl_mobs/sounds/default_punch.3.ogg b/mods/ENTITIES/mcl_mobs/sounds/default_punch.3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4c5e3f9b301e682372399f6213210a42d86fc558 GIT binary patch literal 12943 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 PXqs;R;HFk+R_gd)JOC-$ literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mcl_mobs/sounds/default_punch.ogg b/mods/ENTITIES/mcl_mobs/sounds/default_punch.ogg deleted file mode 100644 index 28a500bf5759c8bb16ea780d100c8bbf1a7a2609..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5946 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 diff --git a/mods/ENTITIES/mcl_mobs/todo.txt b/mods/ENTITIES/mcl_mobs/todo.txt new file mode 100644 index 000000000..7598b14ed --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/todo.txt @@ -0,0 +1 @@ +--use vector.distance to count down mob despawn timer \ No newline at end of file diff --git a/mods/ENTITIES/mobs_mc/0_gameconfig.lua b/mods/ENTITIES/mobs_mc/0_gameconfig.lua index c92ccbba5..3476bee4c 100644 --- a/mods/ENTITIES/mobs_mc/0_gameconfig.lua +++ b/mods/ENTITIES/mobs_mc/0_gameconfig.lua @@ -81,7 +81,9 @@ mobs_mc.items = { gunpowder = "tnt:gunpowder", flint_and_steel = "fire:flint_and_steel", water_source = "default:water_source", + water_flowing = "default:water_flowing", river_water_source = "default:river_water_source", + water_flowing = "default:river_water_flowing", black_dye = "dye:black", poppy = "flowers:rose", dandelion = "flowers:dandelion_yellow", diff --git a/mods/ENTITIES/mobs_mc/1_items_default.lua b/mods/ENTITIES/mobs_mc/1_items_default.lua index b4abd4f9c..bdadbfdc5 100644 --- a/mods/ENTITIES/mobs_mc/1_items_default.lua +++ b/mods/ENTITIES/mobs_mc/1_items_default.lua @@ -516,8 +516,6 @@ end -- Evoker if c("totem") then - local hud_totem = {} - -- Totem of Undying minetest.register_craftitem("mobs_mc:totem", { description = S("Totem of Undying"), @@ -527,66 +525,8 @@ if c("totem") then inventory_image = "mcl_totems_totem.png", wield_image = "mcl_totems_totem.png", stack_max = 1, + groups = {combat_item=1}, }) - - minetest.register_on_leaveplayer(function(player) - hud_totem[player:get_player_name()] = nil - end) - - -- Save the player from death when holding totem of undying in hand - minetest.register_on_player_hpchange(function(player, hp_change) - local hp = player:get_hp() - -- Fatal damage? - if hp + hp_change <= 0 then - local wield = player:get_wielded_item() - if wield:get_name() == "mobs_mc:totem" then - local ppos = player:get_pos() - local pnname = minetest.get_node(ppos).name - -- Some exceptions when _not_ to save the player - for n=1, #mobs_mc.misc.totem_fail_nodes do - if pnname == mobs_mc.misc.totem_fail_nodes[n] then - return hp_change - end - end - -- Reset breath as well - if player:get_breath() < 11 then - player:set_breath(10) - end - if not minetest.is_creative_enabled(player:get_player_name()) then - wield:take_item() - player:set_wielded_item(wield) - end - -- Effects - minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) - - -- Big totem overlay - if not hud_totem[player:get_player_name()] then - hud_totem[player:get_player_name()] = player:hud_add({ - hud_elem_type = "image", - text = "mcl_totems_totem.png", - position = { x=0.5, y=1 }, - scale = { x=17, y=17 }, - offset = { x=0, y=-178 }, - z_index = 100, - }) - minetest.after(3, function(name) - local player = minetest.get_player_by_name(name) - if player and player:is_player() then - local name = player:get_player_name() - if hud_totem[name] then - player:hud_remove(hud_totem[name]) - hud_totem[name] = nil - end - end - end, player:get_player_name()) - end - - -- Set HP to exactly 1 - return -hp + 1 - end - end - return hp_change - end, true) end -- Rotten flesh diff --git a/mods/ENTITIES/mobs_mc/bat.lua b/mods/ENTITIES/mobs_mc/bat.lua index 677b96aad..70e084ee2 100644 --- a/mods/ENTITIES/mobs_mc/bat.lua +++ b/mods/ENTITIES/mobs_mc/bat.lua @@ -3,10 +3,14 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:bat", { + description = S("Bat"), type = "animal", spawn_class = "ambient", can_despawn = true, passive = true, + rotate = 270, + tilt_fly = true, + fly = true, hp_min = 6, hp_max = 6, collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.89, 0.25}, @@ -44,9 +48,7 @@ mobs:register_mob("mobs_mc:bat", { fall_damage = 0, view_range = 16, fear_height = 0, - jump = false, - fly = true, makes_footstep_sound = false, }) diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 847e2f4a5..146e8da70 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -11,12 +11,16 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:blaze", { + description = S("Blaze"), type = "monster", spawn_class = "hostile", hp_min = 20, hp_max = 20, xp_min = 10, xp_max = 10, + tilt_fly = false, + hostile = true, + rotate = 270, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.79, 0.3}, rotate = -180, visual = "mesh", @@ -35,7 +39,7 @@ mobs:register_mob("mobs_mc:blaze", { walk_velocity = .8, run_velocity = 1.6, damage = 6, - reach = 2, + reach = 4, -- don't want blaze getting too close pathfinding = 1, drops = { {name = mobs_mc.items.blaze_rod, @@ -63,7 +67,7 @@ mobs:register_mob("mobs_mc:blaze", { fall_speed = -2.25, light_damage = 0, view_range = 16, - attack_type = "dogshoot", + attack_type = "projectile", arrow = "mobs_mc:blaze_fireball", shoot_interval = 3.5, shoot_offset = 1.0, @@ -75,9 +79,18 @@ mobs:register_mob("mobs_mc:blaze", { fear_height = 0, glow = 14, fire_resistant = true, + eye_height = 0.75, + projectile_cooldown_min = 2, + projectile_cooldown_max = 3, + shoot_arrow = function(self, pos, dir) + -- 2-4 damage per arrow + local dmg = math.random(2,4) + mobs.shoot_projectile_handling("mobs_mc:blaze_fireball", pos, dir, self.object:get_yaw(), self.object, 7, dmg,nil,nil,nil,-0.4) + end, + do_custom = function(self) - if self.state == "attack" and vector.distance(self.object:get_pos(), self.attack:get_pos()) < 1.2 then - mcl_burning.set_on_fire(self.attack, 5) + if self.attacking and self.state == "attack" and vector.distance(self.object:get_pos(), self.attacking:get_pos()) < 1.2 then + mcl_burning.set_on_fire(self.attacking, 5) end local pos = self.object:get_pos() minetest.add_particle({ @@ -147,16 +160,19 @@ mobs:register_arrow("mobs_mc:blaze_fireball", { visual_size = {x = 0.3, y = 0.3}, textures = {"mcl_fire_fire_charge.png"}, velocity = 15, + speed = 5, + tail = 1, + tail_texture = "mobs_mc_spit.png^[colorize:black:255", --repurpose spit texture + tail_size = 2, + tail_distance_divider = 3, + _is_fireball = true, -- Direct hit, no fire... just plenty of pain hit_player = function(self, player) - if rawget(_G, "armor") and armor.last_damage_types then - armor.last_damage_types[player:get_player_name()] = "fireball" - end - mcl_burning.set_on_fire(player, 5, "blaze") + mcl_burning.set_on_fire(player, 5) player:punch(self.object, 1.0, { full_punch_interval = 1.0, - damage_groups = {fleshy = 5}, + damage_groups = {fleshy = self._damage}, }, nil) end, @@ -164,7 +180,7 @@ mobs:register_arrow("mobs_mc:blaze_fireball", { mcl_burning.set_on_fire(mob, 5) mob:punch(self.object, 1.0, { full_punch_interval = 1.0, - damage_groups = {fleshy = 5}, + damage_groups = {fleshy = self._damage}, }, nil) end, @@ -179,7 +195,9 @@ mobs:register_arrow("mobs_mc:blaze_fireball", { -- Node hit, make fire hit_node = function(self, pos, node) - if node.name == "air" then + if node.name ~= "air" then + local pos_above = table.copy(pos) + pos_above.y = pos_above.y + 1 minetest.set_node(pos_above, {name=mobs_mc.items.fire}) else local v = self.object:get_velocity() diff --git a/mods/ENTITIES/mobs_mc/chicken.lua b/mods/ENTITIES/mobs_mc/chicken.lua index 246bf216a..9146a012f 100644 --- a/mods/ENTITIES/mobs_mc/chicken.lua +++ b/mods/ENTITIES/mobs_mc/chicken.lua @@ -9,6 +9,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:chicken", { + description = S("Chicken"), type = "animal", spawn_class = "passive", @@ -17,7 +18,8 @@ mobs:register_mob("mobs_mc:chicken", { xp_min = 1, xp_max = 3, collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.69, 0.2}, - runaway = true, + skittish = true, + fall_slow = true, floats = 1, visual = "mesh", mesh = "mobs_mc_chicken.b3d", @@ -25,9 +27,10 @@ mobs:register_mob("mobs_mc:chicken", { {"mobs_mc_chicken.png"}, }, visual_size = {x=2.2, y=2.2}, - + rotate = 270, makes_footstep_sound = true, walk_velocity = 1, + run_velocity = 3, drops = { {name = mobs_mc.items.chicken_raw, chance = 1, @@ -63,14 +66,25 @@ mobs:register_mob("mobs_mc:chicken", { run_start = 0, run_end = 40, }, - follow = mobs_mc.follow.chicken, + follow = "mcl_farming:wheat_seeds", + breed_distance = 1.5, + baby_size = 0.5, + follow_distance = 2, view_range = 16, fear_height = 4, + --why do chickend breed if they lay eggs?? on_rightclick = function(self, clicker) - if mobs:feed_tame(self, clicker, 1, true, true) then return end - if mobs:protect(self, clicker) then return end - if mobs:capture_mob(self, clicker, 0, 60, 5, false, nil) then return end + --attempt to enter breed state + if mobs.enter_breed_state(self,clicker) then + return + end + + --make baby grow faster + if self.baby then + mobs.make_baby_grow_faster(self,clicker) + return + end end, do_custom = function(self, dtime) @@ -95,37 +109,83 @@ mobs:register_mob("mobs_mc:chicken", { gain = 1.0, max_hear_distance = 16, }, true) - end, - + end, + + --head code + has_head = true, + head_bone = "head", + + swap_y_with_x = false, + reverse_head_yaw = false, + + head_bone_pos_y = 1.675, + head_bone_pos_z = 0, + + head_height_offset = 0.55, + head_direction_offset = 0.0925, + + head_pitch_modifier = -math.pi/2, + --end head code }) --spawn mobs:spawn_specific( -"mobs_mc:chicken", -"overworld", +"mobs_mc:chicken", +"overworld", "ground", { -"FlowerForest", -"Swampland", -"Taiga", -"ExtremeHills", -"BirchForest", -"MegaSpruceTaiga", -"MegaTaiga", -"ExtremeHills+", -"Forest", -"Plains", -"ColdTaiga", -"SunflowerPlains", -"RoofedForest", -"MesaPlateauFM_grasstop", -"ExtremeHillsM", -"BirchForestM", + "FlowerForest_beach", + "Forest_beach", + "StoneBeach", + "ColdTaiga_beach_water", + "Taiga_beach", + "Savanna_beach", + "Plains_beach", + "ExtremeHills_beach", + "ColdTaiga_beach", + "Swampland_shore", + "JungleM_shore", + "Jungle_shore", + "MesaPlateauFM_sandlevel", + "MesaPlateauF_sandlevel", + "MesaBryce_sandlevel", + "Mesa_sandlevel", + "Mesa", + "FlowerForest", + "Swampland", + "Taiga", + "ExtremeHills", + "Jungle", + "Savanna", + "BirchForest", + "MegaSpruceTaiga", + "MegaTaiga", + "ExtremeHills+", + "Forest", + "Plains", + "Desert", + "ColdTaiga", + "IcePlainsSpikes", + "SunflowerPlains", + "IcePlains", + "RoofedForest", + "ExtremeHills+_snowtop", + "MesaPlateauFM_grasstop", + "JungleEdgeM", + "ExtremeHillsM", + "JungleM", + "BirchForestM", + "MesaPlateauF", + "MesaPlateauFM", + "MesaPlateauF_grasstop", + "MesaBryce", + "JungleEdge", + "SavannaM", }, -9, -minetest.LIGHT_MAX+1, -30, 17000, -3, +9, +minetest.LIGHT_MAX+1, +30, 17000, +3, mobs_mc.spawn_height.water, mobs_mc.spawn_height.overworld_max) diff --git a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua index 48fcc8197..0d6d31ffe 100644 --- a/mods/ENTITIES/mobs_mc/cow+mooshroom.lua +++ b/mods/ENTITIES/mobs_mc/cow+mooshroom.lua @@ -3,12 +3,14 @@ local S = minetest.get_translator("mobs_mc") local cow_def = { + description = S("Cow"), type = "animal", spawn_class = "passive", hp_min = 10, hp_max = 10, xp_min = 1, xp_max = 3, + rotate = 270, collisionbox = {-0.45, -0.01, -0.45, 0.45, 1.39, 0.45}, visual = "mesh", mesh = "mobs_mc_cow.b3d", @@ -19,6 +21,7 @@ local cow_def = { visual_size = {x=2.8, y=2.8}, makes_footstep_sound = true, walk_velocity = 1, + run_velocity = 3, drops = { {name = mobs_mc.items.beef_raw, chance = 1, @@ -31,7 +34,7 @@ local cow_def = { max = 2, looting = "common",}, }, - runaway = true, + skittish = true, sounds = { random = "mobs_mc_cow", damage = "mobs_mc_cow_hurt", @@ -43,15 +46,20 @@ local cow_def = { stand_speed = 25, walk_speed = 40, run_speed = 60, stand_start = 0, stand_end = 0, walk_start = 0, - walk_end = 40, run_start = 0, + walk_end = 40, run_start = 0, run_end = 40, }, - follow = mobs_mc.follow.cow, + --follow = mobs_mc.follow.cow, on_rightclick = function(self, clicker) - if mobs:feed_tame(self, clicker, 1, true, true) then return end - if mobs:protect(self, clicker) then return end - if self.child then + --attempt to enter breed state + if mobs.enter_breed_state(self,clicker) then + return + end + + --make baby grow faster + if self.baby then + mobs.make_baby_grow_faster(self,clicker) return end @@ -70,27 +78,49 @@ local cow_def = { end return end - mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) end, + breed_distance = 1.5, + baby_size = 0.5, + follow_distance = 2, follow = mobs_mc.items.wheat, view_range = 10, fear_height = 4, + + --head code + has_head = true, + head_bone = "head", + + swap_y_with_x = false, + reverse_head_yaw = false, + + head_bone_pos_y = 3.6, + head_bone_pos_z = -0.6, + + head_height_offset = 1.0525, + head_direction_offset = 0.5, + head_pitch_modifier = 0, + --end head code } mobs:register_mob("mobs_mc:cow", cow_def) -- Mooshroom local mooshroom_def = table.copy(cow_def) - +mooshroom_def.description = S("Mooshroom") mooshroom_def.mesh = "mobs_mc_cow.b3d" mooshroom_def.textures = { {"mobs_mc_mooshroom.png", "mobs_mc_mushroom_red.png"}, {"mobs_mc_mooshroom_brown.png", "mobs_mc_mushroom_brown.png" } } mooshroom_def.on_rightclick = function(self, clicker) - if mobs:feed_tame(self, clicker, 1, true, true) then return end - if mobs:protect(self, clicker) then return end - - if self.child then + --attempt to enter breed state + if mobs.enter_breed_state(self,clicker) then return end + + --make baby grow faster + if self.baby then + mobs.make_baby_grow_faster(self,clicker) + return + end + local item = clicker:get_wielded_item() -- Use shears to get mushrooms and turn mooshroom into cow if item:get_name() == mobs_mc.items.shears then @@ -138,8 +168,7 @@ mooshroom_def.on_rightclick = function(self, clicker) pos.y = pos.y + 0.5 minetest.add_item(pos, {name = mobs_mc.items.mushroom_stew}) end - end - mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) + end end mobs:register_mob("mobs_mc:mooshroom", mooshroom_def) @@ -147,50 +176,81 @@ mobs:register_mob("mobs_mc:mooshroom", mooshroom_def) -- Spawning mobs:spawn_specific( "mobs_mc:cow", -"overworld", +"overworld", "ground", { -"FlowerForest", -"Swampland", -"Taiga", -"ExtremeHills", -"BirchForest", -"MegaSpruceTaiga", -"MegaTaiga", -"ExtremeHills+", -"Forest", -"Plains", -"ColdTaiga", -"SunflowerPlains", -"RoofedForest", -"MesaPlateauFM_grasstop", -"ExtremeHillsM", -"BirchForestM", + "FlowerForest_beach", + "Forest_beach", + "StoneBeach", + "ColdTaiga_beach_water", + "Taiga_beach", + "Savanna_beach", + "Plains_beach", + "ExtremeHills_beach", + "ColdTaiga_beach", + "Swampland_shore", + "JungleM_shore", + "Jungle_shore", + "MesaPlateauFM_sandlevel", + "MesaPlateauF_sandlevel", + "MesaBryce_sandlevel", + "Mesa_sandlevel", + "Mesa", + "FlowerForest", + "Swampland", + "Taiga", + "ExtremeHills", + "Jungle", + "Savanna", + "BirchForest", + "MegaSpruceTaiga", + "MegaTaiga", + "ExtremeHills+", + "Forest", + "Plains", + "Desert", + "ColdTaiga", + "IcePlainsSpikes", + "SunflowerPlains", + "IcePlains", + "RoofedForest", + "ExtremeHills+_snowtop", + "MesaPlateauFM_grasstop", + "JungleEdgeM", + "ExtremeHillsM", + "JungleM", + "BirchForestM", + "MesaPlateauF", + "MesaPlateauFM", + "MesaPlateauF_grasstop", + "MesaBryce", + "JungleEdge", + "SavannaM", }, -9, -minetest.LIGHT_MAX+1, -30, -17000, -10, -mobs_mc.spawn_height.water, +9, +minetest.LIGHT_MAX+1, +30, +17000, +10, +mobs_mc.spawn_height.water, mobs_mc.spawn_height.overworld_max) mobs:spawn_specific( -"mobs_mc:mooshroom", -"overworld", +"mobs_mc:mooshroom", +"overworld", "ground", { "MushroomIslandShore", "MushroomIsland" }, -9, -minetest.LIGHT_MAX+1, -30, -17000, -5, -mobs_mc.spawn_height.overworld_min, +9, +minetest.LIGHT_MAX+1, +30, +17000, +5, +mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -- spawn egg diff --git a/mods/ENTITIES/mobs_mc/creeper.lua b/mods/ENTITIES/mobs_mc/creeper.lua index 0c884d569..4552d79d1 100644 --- a/mods/ENTITIES/mobs_mc/creeper.lua +++ b/mods/ENTITIES/mobs_mc/creeper.lua @@ -12,6 +12,8 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:creeper", { type = "monster", spawn_class = "hostile", + hostile = true, + rotate = 270, hp_min = 20, hp_max = 20, xp_min = 5, @@ -33,23 +35,39 @@ mobs:register_mob("mobs_mc:creeper", { explode = "tnt_explode", distance = 16, }, - makes_footstep_sound = true, + makes_footstep_sound = false, walk_velocity = 1.05, - run_velocity = 2.1, + run_velocity = 3.25, runaway_from = { "mobs_mc:ocelot", "mobs_mc:cat" }, attack_type = "explode", - + eye_height = 1.25, --hssssssssssss - explosion_strength = 3, - explosion_radius = 3.5, - explosion_damage_radius = 3.5, + explosion_strength = 10, + explosion_radius = 4, + explosion_damage_radius = 6, explosiontimer_reset_radius = 6, - reach = 3, - explosion_timer = 1.5, + reach = 1.5, + defuse_reach = 4, + explosion_timer = 0.3, allow_fuse_reset = true, stop_to_explode = true, + --head code + has_head = true, + head_bone = "head", + + swap_y_with_x = true, + reverse_head_yaw = true, + + head_bone_pos_y = 2.4, + head_bone_pos_z = 0, + + head_height_offset = 1.1, + head_direction_offset = 0, + head_pitch_modifier = 0, + --end head code + -- Force-ignite creeper with flint and steel and explode after 1.5 seconds. -- TODO: Make creeper flash after doing this as well. -- TODO: Test and debug this code. @@ -130,6 +148,7 @@ mobs:register_mob("mobs_mc:creeper", { }) mobs:register_mob("mobs_mc:creeper_charged", { + description = S("Creeper"), type = "monster", spawn_class = "hostile", hp_min = 20, @@ -142,12 +161,13 @@ mobs:register_mob("mobs_mc:creeper_charged", { mesh = "mobs_mc_creeper.b3d", --BOOM - + textures = { {"mobs_mc_creeper.png", "mobs_mc_creeper_charge.png"}, }, visual_size = {x=3, y=3}, + rotate = 270, sounds = { attack = "tnt_ignite", death = "mobs_mc_creeper_death", @@ -156,18 +176,19 @@ mobs:register_mob("mobs_mc:creeper_charged", { explode = "tnt_explode", distance = 16, }, - makes_footstep_sound = true, + makes_footstep_sound = false, walk_velocity = 1.05, run_velocity = 2.1, runaway_from = { "mobs_mc:ocelot", "mobs_mc:cat" }, attack_type = "explode", - explosion_strength = 6, - explosion_radius = 8, - explosion_damage_radius = 8, - explosiontimer_reset_radius = 6, - reach = 3, - explosion_timer = 1.5, + explosion_strength = 24, + explosion_radius = 12, + explosion_damage_radius = 18, + explosiontimer_reset_radius = 10, + reach = 1.5, + defuse_reach = 4, + explosion_timer = 0.3, allow_fuse_reset = true, stop_to_explode = true, @@ -254,8 +275,8 @@ mobs:register_mob("mobs_mc:creeper_charged", { }) mobs:spawn_specific( -"mobs_mc:creeper", -"overworld", +"mobs_mc:creeper", +"overworld", "ground", { "Mesa", @@ -398,12 +419,12 @@ mobs:spawn_specific( "ExtremeHillsM_underground", "JungleEdgeM_underground", }, -0, -7, -20, -16500, -2, -mobs_mc.spawn_height.overworld_min, +0, +7, +20, +16500, +2, +mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -- spawn eggs diff --git a/mods/ENTITIES/mobs_mc/ender_dragon.lua b/mods/ENTITIES/mobs_mc/ender_dragon.lua index a6f404275..2111105d3 100644 --- a/mods/ENTITIES/mobs_mc/ender_dragon.lua +++ b/mods/ENTITIES/mobs_mc/ender_dragon.lua @@ -5,16 +5,25 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:enderdragon", { + description = S("Ender Dragon"), type = "monster", spawn_class = "hostile", - pathfinding = 1, attacks_animals = true, walk_chance = 100, + rotate = 270, + tilt_fly = true, + hostile = true, + shoot_arrow = function(self, pos, dir) + -- 2-4 damage per arrow + local dmg = math.random(2,4) + mobs.shoot_projectile_handling("mobs_mc:dragon_fireball", pos, dir, self.object:get_yaw(), self.object, nil, dmg) + end, hp_max = 200, hp_min = 200, xp_min = 500, xp_max = 500, - collisionbox = {-2, 3, -2, 2, 5, 2}, + collisionbox = {-2, 0, -2, 2, 2, 2}, + eye_height = 1, physical = false, visual = "mesh", mesh = "mobs_mc_dragon.b3d", @@ -23,6 +32,7 @@ mobs:register_mob("mobs_mc:enderdragon", { }, visual_size = {x=3, y=3}, view_range = 35, + reach = 20, walk_velocity = 6, run_velocity = 6, can_despawn = false, @@ -46,7 +56,7 @@ mobs:register_mob("mobs_mc:enderdragon", { lava_damage = 0, fire_damage = 0, on_rightclick = nil, - attack_type = "dogshoot", + attack_type = "projectile", arrow = "mobs_mc:dragon_fireball", shoot_interval = 0.5, shoot_offset = -1.0, @@ -132,10 +142,11 @@ mobs:register_arrow("mobs_mc:dragon_fireball", { -- node hit, explode hit_node = function(self, pos, node) - mobs:boom(self, pos, 2) + --mobs:boom(self, pos, 2) + mcl_explosions.explode(self.object:get_pos(), 2,{ drop_chance = 1.0 }) end }) mobs:register_egg("mobs_mc:enderdragon", S("Ender Dragon"), "mobs_mc_spawn_icon_dragon.png", 0, true) -mcl_wip.register_wip_item("mobs_mc:enderdragon") +--mcl_wip.register_wip_item("mobs_mc:enderdragon") diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index 9c47e98fc..9ebc3d6fa 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -190,20 +190,22 @@ end local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false mobs:register_mob("mobs_mc:enderman", { + description = S("Enderman"), type = "monster", spawn_class = "passive", - passive = true, - pathfinding = 1, + neutral = true, hp_min = 40, hp_max = 40, xp_min = 5, xp_max = 5, + rotate = 270, collisionbox = {-0.3, -0.01, -0.3, 0.3, 2.89, 0.3}, visual = "mesh", mesh = "mobs_mc_enderman.b3d", textures = create_enderman_textures(), visual_size = {x=3, y=3}, makes_footstep_sound = true, + eye_height = 2.5, sounds = { -- TODO: Custom war cry sound war_cry = "mobs_sandmonster", @@ -212,8 +214,8 @@ mobs:register_mob("mobs_mc:enderman", { random = {name="mobs_mc_enderman_random", gain=0.5}, distance = 16, }, - walk_velocity = 0.2, - run_velocity = 3.4, + walk_velocity = 1, + run_velocity = 4, damage = 7, reach = 2, drops = { @@ -223,6 +225,22 @@ mobs:register_mob("mobs_mc:enderman", { max = 1, looting = "common"}, }, + + --head code + has_head = false, + head_bone = "head.low", + + swap_y_with_x = false, + reverse_head_yaw = false, + + head_bone_pos_y = 2.4, + head_bone_pos_z = 0, + + head_height_offset = 1.1, + head_direction_offset = 0, + head_pitch_modifier = 0, + --end head code + animation = select_enderman_animation("normal"), _taken_node = "", do_custom = function(self, dtime) @@ -281,8 +299,8 @@ mobs:register_mob("mobs_mc:enderman", { --self:teleport(nil) --self.state = "" --else - if self.attack then - local target = self.attack + if self.attacking then + local target = self.attacking local pos = target:get_pos() if pos ~= nil then if vector.distance(self.object:get_pos(), target:get_pos()) > 10 then @@ -330,7 +348,7 @@ mobs:register_mob("mobs_mc:enderman", { end -- Check to see if people are near by enough to look at us. for _,obj in pairs(minetest.get_connected_players()) do - + --check if they are within radius local player_pos = obj:get_pos() if player_pos then -- prevent crashing in 1 in a million scenario @@ -355,16 +373,21 @@ mobs:register_mob("mobs_mc:enderman", { local ender_eye_pos = vector.new(enderpos.x, enderpos.y + 2.75, enderpos.z) local eye_distance_from_player = vector.distance(ender_eye_pos, look_pos) look_pos = vector.add(look_pos, vector.multiply(look_dir, eye_distance_from_player)) - + --if looking in general head position, turn hostile if minetest.line_of_sight(ender_eye_pos, look_pos_base) and vector.distance(look_pos, ender_eye_pos) <= 0.4 then self.provoked = "staring" - self.attack = minetest.get_player_by_name(obj:get_player_name()) + self.state = "stand" + self.hostile = false break - else -- I'm not sure what this part does, but I don't want to break anything - jordan4ibanez + --begin attacking the player + else if self.provoked == "staring" then self.provoked = "broke_contact" - end + self.hostile = true + self.state = "attack" + self.attacking = obj + end end end @@ -429,7 +452,7 @@ mobs:register_mob("mobs_mc:enderman", { self.base_texture = create_enderman_textures(block_type, self._taken_node) self.object:set_properties({ textures = self.base_texture }) self.animation = select_enderman_animation("block") - mobs:set_animation(self, self.animation.current) + mobs.set_mob_animation(self, self.animation.current) if def.sounds and def.sounds.dug then minetest.sound_play(def.sounds.dug, {pos = take_pos, max_hear_distance = 16}, true) end @@ -452,7 +475,7 @@ mobs:register_mob("mobs_mc:enderman", { local def = minetest.registered_nodes[self._taken_node] -- Update animation accordingly (removes visible block) self.animation = select_enderman_animation("normal") - mobs:set_animation(self, self.animation.current) + mobs.set_mob_animation(self, self.animation.current) if def.sounds and def.sounds.place then minetest.sound_play(def.sounds.place, {pos = place_pos, max_hear_distance = 16}, true) end @@ -556,29 +579,29 @@ mobs:register_mob("mobs_mc:enderman", { water_damage = 8, view_range = 64, fear_height = 4, - attack_type = "dogfight", + attack_type = "punch", }) -- End spawn mobs:spawn_specific( -"mobs_mc:enderman", -"end", +"mobs_mc:enderman", +"end", "ground", { "End" }, -0, -minetest.LIGHT_MAX+1, -30, -3000, -12, -mobs_mc.spawn_height.end_min, +0, +minetest.LIGHT_MAX+1, +30, +3000, +12, +mobs_mc.spawn_height.end_min, mobs_mc.spawn_height.end_max) -- Overworld spawn mobs:spawn_specific( -"mobs_mc:enderman", -"overworld", +"mobs_mc:enderman", +"overworld", "ground", { "Mesa", @@ -721,28 +744,28 @@ mobs:spawn_specific( "ExtremeHillsM_underground", "JungleEdgeM_underground", }, -0, -7, -30, -19000, -2, -mobs_mc.spawn_height.overworld_min, +0, +7, +30, +19000, +2, +mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -- Nether spawn (rare) mobs:spawn_specific( -"mobs_mc:enderman", -"nether", +"mobs_mc:enderman", +"nether", "ground", { "Nether" }, -0, -7, -30, -27500, -4, -mobs_mc.spawn_height.nether_min, +0, +7, +30, +27500, +4, +mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max) -- spawn eggs diff --git a/mods/ENTITIES/mobs_mc/endermite.lua b/mods/ENTITIES/mobs_mc/endermite.lua index da3922a10..712086828 100644 --- a/mods/ENTITIES/mobs_mc/endermite.lua +++ b/mods/ENTITIES/mobs_mc/endermite.lua @@ -5,15 +5,19 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:endermite", { + description = S("Endermite"), type = "monster", spawn_class = "hostile", passive = false, + rotate = 270, + hostile = true, hp_min = 8, hp_max = 8, xp_min = 3, xp_max = 3, armor = {fleshy = 100, arthropod = 100}, group_attack = true, + attack_type = "punch", collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.29, 0.2}, visual = "mesh", mesh = "mobs_mc_endermite.b3d", diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 83a10bfc4..609110bdb 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -11,15 +11,20 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:ghast", { + description = S("Ghast"), type = "monster", spawn_class = "hostile", - pathfinding = 1, group_attack = true, + hostile = true, + fly_random_while_attack = true, hp_min = 10, hp_max = 10, + rotate = 270, xp_min = 5, xp_max = 5, - collisionbox = {-2, 5, -2, 2, 9, 2}, + reach = 20, + eye_height = 2.5, + collisionbox = {-2, 0, -2, 2, 4, 2}, visual = "mesh", mesh = "mobs_mc_ghast.b3d", textures = { @@ -35,8 +40,10 @@ mobs:register_mob("mobs_mc:ghast", { -- TODO: damage -- TODO: better death }, + walk_velocity = 1.6, run_velocity = 3.2, + drops = { {name = mobs_mc.items.gunpowder, chance = 1, min = 0, max = 2, looting = "common"}, {name = mobs_mc.items.ghast_tear, chance = 10/6, min = 0, max = 1, looting = "common", looting_ignore_chance = true}, @@ -47,22 +54,23 @@ mobs:register_mob("mobs_mc:ghast", { walk_start = 0, walk_end = 40, run_start = 0, run_end = 40, }, + fall_damage = 0, - view_range = 100, - attack_type = "dogshoot", - arrow = "mobs_mc:fireball", - shoot_interval = 3.5, - shoot_offset = -5, - dogshoot_switch = 1, - dogshoot_count_max =1, - passive = false, - jump = true, - jump_height = 4, + view_range = 28, + attack_type = "projectile", + arrow = "mobs_mc:ghast_fireball", floats=1, fly = true, makes_footstep_sound = false, - instant_death = true, fire_resistant = true, + projectile_cooldown_min = 5, + projectile_cooldown_max = 7, + shoot_arrow = function(self, pos, dir) + -- 2-4 damage per arrow + local dmg = math.random(2,4) + mobs.shoot_projectile_handling("mobs_mc:ghast_fireball", pos, dir, self.object:get_yaw(), self.object, 11, dmg,nil,nil,nil,-0.6) + end, + --[[ do_custom = function(self) if self.firing == true then self.base_texture = {"mobs_mc_ghast_firing.png"} @@ -72,53 +80,60 @@ mobs:register_mob("mobs_mc:ghast", { self.object:set_properties({textures=self.base_texture}) end end, + ]]-- }) mobs:spawn_specific( -"mobs_mc:ghast", -"nether", +"mobs_mc:ghast", +"nether", "ground", { "Nether" }, -0, -minetest.LIGHT_MAX+1, -30, -18000, -2, -mobs_mc.spawn_height.nether_min, +0, +minetest.LIGHT_MAX+1, +30, +18000, +2, +mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max) -- fireball (projectile) -mobs:register_arrow("mobs_mc:fireball", { +mobs:register_arrow("mobs_mc:ghast_fireball", { visual = "sprite", visual_size = {x = 1, y = 1}, textures = {"mcl_fire_fire_charge.png"}, velocity = 15, collisionbox = {-.5, -.5, -.5, .5, .5, .5}, + tail = 1, + tail_texture = "mobs_mc_spit.png^[colorize:black:255", --repurpose spit texture + tail_size = 5, + _is_fireball = true, hit_player = function(self, player) - if rawget(_G, "armor") and armor.last_damage_types then - armor.last_damage_types[player:get_player_name()] = "fireball" - end + --[[ player:punch(self.object, 1.0, { full_punch_interval = 1.0, damage_groups = {fleshy = 6}, }, nil) - mobs:boom(self, self.object:get_pos(), 1, true) + ]]-- + --mobs:boom(self, self.object:get_pos(), 1, true) + mcl_explosions.explode(self.object:get_pos(), 3,{ drop_chance = 1.0 }) end, hit_mob = function(self, mob) mob:punch(self.object, 1.0, { full_punch_interval = 1.0, - damage_groups = {fleshy = 6}, + damage_groups = {fleshy = self._damage}, }, nil) - mobs:boom(self, self.object:get_pos(), 1, true) + --mobs:boom(self, self.object:get_pos(), 1, true) + mcl_explosions.explode(self.object:get_pos(), 3,{ drop_chance = 1.0 }) end, hit_node = function(self, pos, node) - mobs:boom(self, pos, 1, true) + --mobs:boom(self, pos, 1, true) + mcl_explosions.explode(self.object:get_pos(), 3,{ drop_chance = 1.0 }) end }) diff --git a/mods/ENTITIES/mobs_mc/guardian.lua b/mods/ENTITIES/mobs_mc/guardian.lua index 13c857ea3..241ac3444 100644 --- a/mods/ENTITIES/mobs_mc/guardian.lua +++ b/mods/ENTITIES/mobs_mc/guardian.lua @@ -5,6 +5,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:guardian", { + description = S("Guardian"), type = "monster", spawn_class = "hostile", hp_min = 30, @@ -13,7 +14,7 @@ mobs:register_mob("mobs_mc:guardian", { xp_max = 10, breath_max = -1, passive = false, - attack_type = "dogfight", + attack_type = "punch", pathfinding = 1, view_range = 16, walk_velocity = 2, diff --git a/mods/ENTITIES/mobs_mc/guardian_elder.lua b/mods/ENTITIES/mobs_mc/guardian_elder.lua index 089f6e38f..4fb989e2f 100644 --- a/mods/ENTITIES/mobs_mc/guardian_elder.lua +++ b/mods/ENTITIES/mobs_mc/guardian_elder.lua @@ -7,6 +7,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:guardian_elder", { + description = S("Elder Guardian"), type = "monster", spawn_class = "hostile", hp_min = 80, @@ -15,7 +16,7 @@ mobs:register_mob("mobs_mc:guardian_elder", { xp_max = 10, breath_max = -1, passive = false, - attack_type = "dogfight", + attack_type = "punch", pathfinding = 1, view_range = 16, walk_velocity = 2, diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 938a6b6ac..461c60efd 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -83,10 +83,15 @@ end -- Horse local horse = { + description = S("Horse"), type = "animal", spawn_class = "passive", visual = "mesh", mesh = "mobs_mc_horse.b3d", + rotate = 270, + walk_velocity = 1, + run_velocity = 8, + skittish = true, visual_size = {x=3.0, y=3.0}, collisionbox = {-0.69825, -0.01, -0.69825, 0.69825, 1.59, 0.69825}, animation = { @@ -96,7 +101,7 @@ local horse = { walk_speed = 25, walk_start = 0, walk_end = 40, - run_speed = 60, + run_speed = 120, run_start = 0, run_end = 40, }, @@ -113,7 +118,8 @@ local horse = { fly = false, walk_chance = 60, view_range = 16, - follow = mobs_mc.follow.horse, + follow = "mcl_farming:wheat_item", + follow_distance = 3, passive = true, hp_min = 15, hp_max = 30, @@ -181,7 +187,7 @@ local horse = { -- if driver present and horse has a saddle allow control of horse if self.driver and self._saddle then - mobs.drive(self, "walk", "stand", false, dtime) + mobs.drive(self, "run", "stand", false, dtime) return false -- skip rest of mob functions end @@ -213,6 +219,21 @@ local horse = { local iname = item:get_name() local heal = 0 + --sneak click to breed the horse/feed it + if self.owner and self.owner == clicker:get_player_name() then + --attempt to enter breed state + if mobs.enter_breed_state(self,clicker) then + return + end + end + + --don't do any other logic with the baby + --make baby grow faster + if self.baby then + mobs.make_baby_grow_faster(self,clicker) + return + end + -- Taming self.temper = self.temper or (math.random(1,100)) @@ -238,6 +259,7 @@ local horse = { self.buck_off_time = 40 -- TODO how long does it take in minecraft? if self.temper > 100 then self.tamed = true -- NOTE taming can only be finished by riding the horse + mobs.tamed_effect(self) if not self.owner or self.owner == "" then self.owner = clicker:get_player_name() end @@ -252,6 +274,14 @@ local horse = { -- If nothing happened temper_increase = 0 and addition does nothing self.temper = self.temper + temper_increase + --give the player some kind of idea + --of what's happening with the horse's temper + if self.temper <= 100 then + mobs.feed_effect(self) + else + mobs.tamed_effect(self) + end + return end @@ -281,10 +311,6 @@ local horse = { return end - if mobs:protect(self, clicker) then - return - end - -- Make sure tamed horse is mature and being clicked by owner only if self.tamed and not self.child and self.owner == clicker:get_player_name() then @@ -356,9 +382,6 @@ local horse = { self.object:set_properties({stepheight = 1.1}) mobs.attach(self, clicker) - -- Used to capture horse - elseif not self.driver and iname ~= "" then - mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) end end end, @@ -418,6 +441,7 @@ mobs:register_mob("mobs_mc:horse", horse) -- Skeleton horse local skeleton_horse = table.copy(horse) +skeleton_horse.description = S("Skeleton Horse") skeleton_horse.breath_max = -1 skeleton_horse.armor = {undead = 100, fleshy = 100} skeleton_horse.textures = {{"blank.png", "mobs_mc_horse_skeleton.png", "blank.png"}} @@ -440,6 +464,7 @@ mobs:register_mob("mobs_mc:skeleton_horse", skeleton_horse) -- Zombie horse local zombie_horse = table.copy(horse) +zombie_horse.description = S("Zombie Horse") zombie_horse.breath_max = -1 zombie_horse.armor = {undead = 100, fleshy = 100} zombie_horse.textures = {{"blank.png", "mobs_mc_horse_zombie.png", "blank.png"}} @@ -464,6 +489,7 @@ mobs:register_mob("mobs_mc:zombie_horse", zombie_horse) -- Donkey local d = 0.86 -- donkey scale local donkey = table.copy(horse) +donkey.description = S("Donkey") donkey.textures = {{"blank.png", "mobs_mc_donkey.png", "blank.png"}} donkey.animation = { speed_normal = 25, @@ -494,6 +520,7 @@ mobs:register_mob("mobs_mc:donkey", donkey) -- Mule local m = 0.94 local mule = table.copy(donkey) +mule.description = S("Mule") mule.textures = {{"blank.png", "mobs_mc_mule.png", "blank.png"}} mule.visual_size = { x=horse.visual_size.x*m, y=horse.visual_size.y*m } mule.sounds = table.copy(donkey.sounds) @@ -515,35 +542,66 @@ mobs:spawn_specific( "overworld", "ground", { -"FlowerForest", -"Swampland", -"Taiga", -"ExtremeHills", -"BirchForest", -"MegaSpruceTaiga", -"MegaTaiga", -"ExtremeHills+", -"Forest", -"Plains", -"ColdTaiga", -"SunflowerPlains", -"RoofedForest", -"MesaPlateauFM_grasstop", -"ExtremeHillsM", -"BirchForestM", + "FlowerForest_beach", + "Forest_beach", + "StoneBeach", + "ColdTaiga_beach_water", + "Taiga_beach", + "Savanna_beach", + "Plains_beach", + "ExtremeHills_beach", + "ColdTaiga_beach", + "Swampland_shore", + "JungleM_shore", + "Jungle_shore", + "MesaPlateauFM_sandlevel", + "MesaPlateauF_sandlevel", + "MesaBryce_sandlevel", + "Mesa_sandlevel", + "Mesa", + "FlowerForest", + "Swampland", + "Taiga", + "ExtremeHills", + "Jungle", + "Savanna", + "BirchForest", + "MegaSpruceTaiga", + "MegaTaiga", + "ExtremeHills+", + "Forest", + "Plains", + "Desert", + "ColdTaiga", + "IcePlainsSpikes", + "SunflowerPlains", + "IcePlains", + "RoofedForest", + "ExtremeHills+_snowtop", + "MesaPlateauFM_grasstop", + "JungleEdgeM", + "ExtremeHillsM", + "JungleM", + "BirchForestM", + "MesaPlateauF", + "MesaPlateauFM", + "MesaPlateauF_grasstop", + "MesaBryce", + "JungleEdge", + "SavannaM", }, -0, -minetest.LIGHT_MAX+1, -30, -15000, -4, -mobs_mc.spawn_height.water+3, +0, +minetest.LIGHT_MAX+1, +30, +15000, +4, +mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) mobs:spawn_specific( -"mobs_mc:donkey", -"overworld", +"mobs_mc:donkey", +"overworld", "ground", { "Mesa", @@ -553,12 +611,12 @@ mobs:spawn_specific( "MesaPlateauF_grasstop", "MesaBryce", }, -0, -minetest.LIGHT_MAX+1, -30, -15000, -4, -mobs_mc.spawn_height.water+3, +0, +minetest.LIGHT_MAX+1, +30, +15000, +4, +mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) -- spawn eggs diff --git a/mods/ENTITIES/mobs_mc/iron_golem.lua b/mods/ENTITIES/mobs_mc/iron_golem.lua index 2ccee2d0a..48e573e13 100644 --- a/mods/ENTITIES/mobs_mc/iron_golem.lua +++ b/mods/ENTITIES/mobs_mc/iron_golem.lua @@ -12,11 +12,15 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:iron_golem", { + description = S("Iron Golem"), type = "npc", spawn_class = "passive", passive = true, + rotate = 270, hp_min = 100, - hp_max = 100, + hp_max = 100, + protect = true, + neutral = true, breath_max = -1, collisionbox = {-0.7, -0.01, -0.7, 0.7, 2.69, 0.7}, visual = "mesh", @@ -39,7 +43,7 @@ mobs:register_mob("mobs_mc:iron_golem", { reach = 3, group_attack = true, attacks_monsters = true, - attack_type = "dogfight", + attack_type = "punch", drops = { {name = mobs_mc.items.iron_ingot, chance = 1, diff --git a/mods/ENTITIES/mobs_mc/llama.lua b/mods/ENTITIES/mobs_mc/llama.lua index 8ff82b502..58f565ec1 100644 --- a/mods/ENTITIES/mobs_mc/llama.lua +++ b/mods/ENTITIES/mobs_mc/llama.lua @@ -25,8 +25,18 @@ local carpets = { } mobs:register_mob("mobs_mc:llama", { + description = S("Llama"), type = "animal", spawn_class = "passive", + rotate = 270, + neutral = true, + group_attack = true, + attack_type = "projectile", + shoot_arrow = function(self, pos, dir) + -- 2-4 damage per arrow + local dmg = 1 + mobs.shoot_projectile_handling("mobs_mc:spit", pos, dir, self.object:get_yaw(), self.object, nil, dmg) + end, hp_min = 15, hp_max = 30, xp_min = 1, @@ -49,7 +59,11 @@ mobs:register_mob("mobs_mc:llama", { walk_velocity = 1, run_velocity = 4.4, follow_velocity = 4.4, + breed_distance = 1.5, + baby_size = 0.5, + follow_distance = 2, floats = 1, + reach = 6, drops = { {name = mobs_mc.items.leather, chance = 1, @@ -82,7 +96,7 @@ mobs:register_mob("mobs_mc:llama", { look_start = 78, look_end = 108, }, - follow = mobs_mc.follow.llama, + follow = mobs_mc.items.hay_bale, view_range = 16, do_custom = function(self, dtime) @@ -125,30 +139,71 @@ mobs:register_mob("mobs_mc:llama", { return end - local item = clicker:get_wielded_item() - if item:get_name() == mobs_mc.items.hay_bale then - -- Breed with hay bale - if mobs:feed_tame(self, clicker, 1, true, false) then return end - else - -- Feed with anything else - if mobs:feed_tame(self, clicker, 1, false, true) then return end + --owner is broken for this + --we'll make the owner this guy + --attempt to enter breed state + if mobs.enter_breed_state(self,clicker) then + self.tamed = true + self.owner = clicker:get_player_name() + return + end + + --ignore other logic + --make baby grow faster + if self.baby then + mobs.make_baby_grow_faster(self,clicker) + return end - if mobs:protect(self, clicker) then return end + -- Make sure tamed llama is mature and being clicked by owner only if self.tamed and not self.child and self.owner == clicker:get_player_name() then + local item = clicker:get_wielded_item() + --safety catch + if not item then + return + end + + + + --put chest on carpeted llama + if self.carpet and not self.chest and item:get_name() == "mcl_chests:chest" then + if not minetest.is_creative_enabled(clicker:get_player_name()) then + item:take_item() + clicker:set_wielded_item(item) + end + + self.base_texture = table.copy(self.base_texture) + self.base_texture[1] = "mobs_mc_llama_chest.png" + self.object:set_properties({ + textures = self.base_texture, + }) + self.chest = true + + return --don't attempt to ride + end + + -- Place carpet - --[[ TODO: Re-enable this code when carpet textures arrived. - if minetest.get_item_group(item:get_name(), "carpet") == 1 and not self.carpet then + --TODO: Re-enable this code when carpet textures arrived. + if minetest.get_item_group(item:get_name(), "carpet") == 1 then + for group, carpetdata in pairs(carpets) do if minetest.get_item_group(item:get_name(), group) == 1 then if not minetest.is_creative_enabled(clicker:get_player_name()) then item:take_item() clicker:set_wielded_item(item) + + --shoot off old carpet + if self.carpet then + minetest.add_item(self.object:get_pos(), self.carpet) + end end + local substr = carpetdata[2] local tex_carpet = "mobs_mc_llama_decor_"..substr..".png" + self.base_texture = table.copy(self.base_texture) self.base_texture[2] = tex_carpet self.object:set_properties({ @@ -169,23 +224,21 @@ mobs:register_mob("mobs_mc:llama", { end end end - ]] - -- detatch player already riding llama - if self.driver and clicker == self.driver then + if self.carpet then + -- detatch player already riding llama + if self.driver and clicker == self.driver then - mobs.detach(clicker, {x = 1, y = 0, z = 1}) + mobs.detach(clicker, {x = 1, y = 0, z = 1}) - -- attach player to llama - elseif not self.driver then + -- attach player to llama + elseif not self.driver then - self.object:set_properties({stepheight = 1.1}) - mobs.attach(self, clicker) + self.object:set_properties({stepheight = 1.1}) + mobs.attach(self, clicker) + end end - -- Used to capture llama - elseif not self.driver and clicker:get_wielded_item():get_name() ~= "" then - mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) end end, @@ -229,13 +282,48 @@ mobs:spawn_specific( "MesaPlateauF_grasstop", "MesaBryce", }, -0, -minetest.LIGHT_MAX+1, -30, -15000, -5, -mobs_mc.spawn_height.water+15, +0, +minetest.LIGHT_MAX+1, +30, +15000, +5, +mobs_mc.spawn_height.water+15, mobs_mc.spawn_height.overworld_max) -- spawn eggs mobs:register_egg("mobs_mc:llama", S("Llama"), "mobs_mc_spawn_icon_llama.png", 0) + + +-- llama spit +mobs:register_arrow("mobs_mc:spit", { + visual = "sprite", + visual_size = {x = 0.3, y = 0.3}, + textures = {"mobs_mc_spit.png"}, + velocity = 1, + speed = 1, + tail = 1, + tail_texture = "mobs_mc_spit.png", + tail_size = 2, + tail_distance_divider = 4, + + hit_player = function(self, player) + if rawget(_G, "armor") and armor.last_damage_types then + armor.last_damage_types[player:get_player_name()] = "spit" + end + player:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = self._damage}, + }, nil) + end, + + hit_mob = function(self, mob) + mob:punch(self.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = _damage}, + }, nil) + end, + + hit_node = function(self, pos, node) + --does nothing + end +}) \ No newline at end of file diff --git a/mods/ENTITIES/mobs_mc/mod.conf b/mods/ENTITIES/mobs_mc/mod.conf index a3057faff..98f48b388 100644 --- a/mods/ENTITIES/mobs_mc/mod.conf +++ b/mods/ENTITIES/mobs_mc/mod.conf @@ -1,6 +1,6 @@ name = mobs_mc author = maikerumine description = Adds Minecraft-like monsters and animals. -depends = mcl_init, mcl_particles, mcl_mobs, mcl_wip, mcl_colors +depends = mcl_init, mcl_particles, mcl_mobs, mcl_wip optional_depends = default, mcl_tnt, mcl_bows, mcl_throwing, mcl_fishing, bones, mesecons_materials, mobs_mc_gameconfig, doc_items diff --git a/mods/ENTITIES/mobs_mc/models/attributes.txt b/mods/ENTITIES/mobs_mc/models/attributes.txt new file mode 100644 index 000000000..ec59e0f70 --- /dev/null +++ b/mods/ENTITIES/mobs_mc/models/attributes.txt @@ -0,0 +1 @@ +Ghast fixed by epCode - Thanks! \ No newline at end of file diff --git a/mods/ENTITIES/mobs_mc/models/mobs_mc_cat.b3d b/mods/ENTITIES/mobs_mc/models/mobs_mc_cat.b3d index 9ab4fc10ccbda15e9210e2702e858b35a1d76ff6..1a6ecbbe82a74536be40bd5a427822847acd00f0 100644 GIT binary patch literal 50977 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 literal 75074 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�Q8qBB1Q^sDY@biKYqJ-U@lAC_Us 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 jPPKMK(r>4X4tBojM)DN3x)TT diff --git a/mods/ENTITIES/mobs_mc/models/mobs_mc_creeper.b3d b/mods/ENTITIES/mobs_mc/models/mobs_mc_creeper.b3d index 54341579c7a4b4b9e9cde54d30469dad7c312f4d..e04ffc7b07334a928c0494deca10668e3c46db65 100644 GIT binary patch literal 139359 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 literal 44319 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 C@9nez diff --git a/mods/ENTITIES/mobs_mc/models/mobs_mc_ghast.b3d b/mods/ENTITIES/mobs_mc/models/mobs_mc_ghast.b3d index cebc037c05efdcf2343c4232099b12fffc4c5c89..ab34f334f8321e30f05ae4b53a946b4095587ef0 100644 GIT binary patch literal 69843 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 B-}e9j literal 75657 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 K`*f4PZ~q7I#d@y* diff --git a/mods/ENTITIES/mobs_mc/models/mobs_mc_mooshroom.b3d b/mods/ENTITIES/mobs_mc/models/mobs_mc_mooshroom.b3d index 725268ea9838cc579f732c857b0b31eb72b80fb7..c009839191e272db590eb0e08be0c90356b4acf6 100644 GIT binary patch literal 71850 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 literal 54175 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 literal 4732 zcma)=%X3s!5QjgNC_*rhpyC^RMB)Pj_`pYIVn`Ge2qpo1g8~W)q9noXNR_NZ!NQed z>7U@vDkeM2Dsf@C@{iDkR=JW`zdqe}&J2?~nW|gUo$s7q_v!9Cler@!TSsSl;W}Vs zV&CK@+&(=!eQeX<;AWs!ZNAb9y%rW07WRyfj&13M$rHy<9zA$!c4qqck)uWrf4jRX zZ^}r9?FIAX7^W$$S6q2jaW4IgYn}6?-=42;il6OweevPS9~<^om7jBC zNq=3zGkr0SFJ80#op>kxtUeLH4y&8ud;KE5^QF~S`DOLDI!AwW{)}IvAN9%N+nS~2 zm-?IOM~~}xePe#I{$%x~$S>=UbJZvD_VrCX<}cH?8mIG9@T@+5KFx1qJ{CLwzdw)H zb-uF~&lP8D%s0lBU&b^2+K~2(cMYtH{hpuZKXK`2+|Mtb^xJdIcO!nb-}UYO82ac#v1dVc&0Dr@iqTcw7(PYq@UF%;>Ubje$w~)MSSOt_+`9IKk8rBpDcd#$nT%B z`dfWiygoLc1#h2!qyJfcmP5LK%KDe|<9yflU-M1DGkvSEe?AoRk>%%H`n4g3S8SX6 zih9rYXDzRR^K0wKrDqO0FU)cP`<-dPTyuYijsx^tv8RuN>^7^mGVt-X@(&vBT zKaEg7up@D451e1?Jn6UR$}jQu`r>nyiDk7)#+94L?=EgJMAEou9R*%a+8~y&Il4jVrVg>j6N4%y>`^Dq4P49MZX57|f`p)e; zBI37lzeg6;Pv_76dsN)GU_SD*+&#aD;oLNq!sC34>6=ExPT!wa8|4uC!M(m>P4UZk znSRvYbUlZ|+}@qLzW89yTk|91rjhCU z{1^IdxawbU#fklT_xZK>#+(~Ve6Hg0iyUJ%8r<}k!aM1khU+Vi&eIw{xYaT7rub#N zOy6p!K9%%GYl3_Hrv92nbAMDn-5-n9N9SweZSpVXqfPv#{#cx>e)2;<&KLRFIxK&S zA3V-y>k@C8kI2t?>d(}~&dJ~PL)d>0>vyqUH@L6YjX)Q$47kaC*(-pXf#twT_hsJ# ztOB}$9`|MU0&9TPK%e`vZv$=x)&jS?FZ)j54qzQ{m;18s1?~av2JUlT_Wi&HU_J1F z`?C9ihkyrxhuxR`2rvL_1Rix?ww_Tu4m<`t;lAuGfSy+j0$bge{WS0tpa&1nxG(!T z;8|cB@Vxu7)z~56g)~6s%N_w<1crg_?#q4&7z0Lum))2B3a}H{0lezI>^*w!0qg?C z-IqN9yawzACf%34AJ_*>0SDZd{U-1R@H+68`?B8!-T~eQ4!SS({scG)oB&R_FZ(p`8Sp7E?Y`_Yz$`EWeD1#N{{gpW^S}TA diff --git a/mods/ENTITIES/mobs_mc/ocelot.lua b/mods/ENTITIES/mobs_mc/ocelot.lua index f3c8c87ae..e36abec77 100644 --- a/mods/ENTITIES/mobs_mc/ocelot.lua +++ b/mods/ENTITIES/mobs_mc/ocelot.lua @@ -27,9 +27,12 @@ end -- Ocelot local ocelot = { + description = S("Ocelot"), type = "animal", spawn_class = "passive", can_despawn = true, + rotate = 270, + skittish = true, hp_min = 10, hp_max = 10, xp_min = 1, @@ -42,7 +45,7 @@ local ocelot = { makes_footstep_sound = true, walk_chance = default_walk_chance, walk_velocity = 1, - run_velocity = 3, + run_velocity = 10, follow_velocity = 1, floats = 1, runaway = true, @@ -56,7 +59,7 @@ local ocelot = { }, animation = { speed_normal = 25, - run_speed = 50, + run_speed = 150, stand_start = 0, stand_end = 0, walk_start = 0, @@ -102,6 +105,7 @@ mobs:register_mob("mobs_mc:ocelot", ocelot) -- Cat local cat = table.copy(ocelot) +cat.description = S("Cat") cat.textures = {{"mobs_mc_cat_black.png"}, {"mobs_mc_cat_red.png"}, {"mobs_mc_cat_siamese.png"}} cat.can_despawn = false cat.owner = "" @@ -121,8 +125,6 @@ cat.sounds = { } cat.on_rightclick = function(self, clicker) if mobs:feed_tame(self, clicker, 1, true, false) then return end - if mobs:capture_mob(self, clicker, 0, 60, 5, false, nil) then return end - if mobs:protect(self, clicker) then return end if self.child then return end @@ -154,8 +156,8 @@ local base_spawn_chance = 5000 -- Spawn ocelot --they get the same as the llama because I'm trying to rework so much of this code right now -j4i mobs:spawn_specific( -"mobs_mc:ocelot", -"overworld", +"mobs_mc:ocelot", +"overworld", "ground", { "Jungle", @@ -163,12 +165,12 @@ mobs:spawn_specific( "JungleM", "JungleEdge", }, -0, -minetest.LIGHT_MAX+1, -30, -15000, -5, -mobs_mc.spawn_height.water+15, +0, +minetest.LIGHT_MAX+1, +30, +15000, +5, +mobs_mc.spawn_height.water+15, mobs_mc.spawn_height.overworld_max) --[[ mobs:spawn({ @@ -183,7 +185,7 @@ mobs:spawn({ max_height = mobs_mc.spawn_height.overworld_max, on_spawn = function(self, pos) Note: Minecraft has a 1/3 spawn failure rate. - In this mod it is emulated by reducing the spawn rate accordingly (see above). + In this mod it is emulated by reducing the spawn rate accordingly (see above). -- 1/7 chance to spawn 2 ocelot kittens if pr:next(1,7) == 1 then diff --git a/mods/ENTITIES/mobs_mc/parrot.lua b/mods/ENTITIES/mobs_mc/parrot.lua index 5efcb191b..de52c6252 100644 --- a/mods/ENTITIES/mobs_mc/parrot.lua +++ b/mods/ENTITIES/mobs_mc/parrot.lua @@ -12,6 +12,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:parrot", { + description = S("Parrot"), type = "npc", spawn_class = "passive", pathfinding = 1, @@ -19,11 +20,14 @@ mobs:register_mob("mobs_mc:parrot", { hp_max = 6, xp_min = 1, xp_max = 3, - collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.89, 0.25}, + tilt_fly = true, + collisionbox = {-0.25, 0, -0.25, 0.25, 0.9, 0.25}, + eye_height = 0.45, visual = "mesh", mesh = "mobs_mc_parrot.b3d", textures = {{"mobs_mc_parrot_blue.png"},{"mobs_mc_parrot_green.png"},{"mobs_mc_parrot_grey.png"},{"mobs_mc_parrot_red_blue.png"},{"mobs_mc_parrot_yellow_blue.png"}}, visual_size = {x=3, y=3}, + rotate = 270, walk_velocity = 3, run_velocity = 5, sounds = { @@ -84,8 +88,6 @@ mobs:register_mob("mobs_mc:parrot", { -- Feed to tame, but not breed if mobs:feed_tame(self, clicker, 1, false, true) then return end - if mobs:protect(self, clicker) then return end - if mobs:capture_mob(self, clicker, 0, 50, 80, false, nil) then return end end, }) @@ -93,7 +95,7 @@ mobs:register_mob("mobs_mc:parrot", { -- Parrots spawn rarely in jungles. TODO: Also check for jungle *biome* <- I'll get to this eventually -j4i mobs:spawn_specific( "mobs_mc:parrot", -"overworld", +"overworld", "ground", { "Jungle", @@ -101,12 +103,12 @@ mobs:spawn_specific( "JungleM", "JungleEdge", }, -0, -minetest.LIGHT_MAX+1, -7, -30000, -1, -mobs_mc.spawn_height.water+7, +0, +minetest.LIGHT_MAX+1, +7, +30000, +1, +mobs_mc.spawn_height.water+7, mobs_mc.spawn_height.overworld_max) -- spawn eggs diff --git a/mods/ENTITIES/mobs_mc/pig.lua b/mods/ENTITIES/mobs_mc/pig.lua index b7cdf1afe..d7433a092 100644 --- a/mods/ENTITIES/mobs_mc/pig.lua +++ b/mods/ENTITIES/mobs_mc/pig.lua @@ -3,9 +3,11 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:pig", { + description = S("Pig"), type = "animal", spawn_class = "passive", - runaway = true, + skittish = true, + rotate = 270, hp_min = 10, hp_max = 10, xp_min = 1, @@ -18,11 +20,30 @@ mobs:register_mob("mobs_mc:pig", { "mobs_mc_pig.png", -- base "blank.png", -- saddle }}, + + --head code + has_head = true, + head_bone = "head", + + swap_y_with_x = false, + reverse_head_yaw = false, + + head_bone_pos_y = 2.4, + head_bone_pos_z = 0, + + head_height_offset = 1.1, + head_direction_offset = 0, + head_pitch_modifier = 0, + --end head code + visual_size = {x=2.5, y=2.5}, makes_footstep_sound = true, walk_velocity = 1, run_velocity = 3, follow_velocity = 3.4, + breed_distance = 1.5, + baby_size = 0.5, + follow_distance = 2, drops = { {name = mobs_mc.items.porkchop_raw, chance = 1, @@ -49,7 +70,7 @@ mobs:register_mob("mobs_mc:pig", { run_start = 0, run_end = 40, }, - follow = mobs_mc.follow.pig, + follow = "mcl_farming:carrot_item", view_range = 8, do_custom = function(self, dtime) @@ -90,12 +111,17 @@ mobs:register_mob("mobs_mc:pig", { return end - local wielditem = clicker:get_wielded_item() - -- Feed pig - if wielditem:get_name() ~= mobs_mc.items.carrot_on_a_stick then - if mobs:feed_tame(self, clicker, 1, true, true) then return end + --attempt to enter breed state + if mobs.enter_breed_state(self,clicker) then + return + end + + --ignore other logic + --make baby grow faster + if self.baby then + mobs.make_baby_grow_faster(self,clicker) + return end - if mobs:protect(self, clicker) then return end if self.child then return @@ -103,6 +129,8 @@ mobs:register_mob("mobs_mc:pig", { -- Put saddle on pig local item = clicker:get_wielded_item() + local wielditem = item + if item:get_name() == mobs_mc.items.saddle and self.saddle ~= "yes" then self.base_texture = { "blank.png", -- baby @@ -163,10 +191,6 @@ mobs:register_mob("mobs_mc:pig", { inv:set_stack("main",self.driver:get_wield_index(), wielditem) end return - - -- Capture pig - elseif not self.driver and clicker:get_wielded_item():get_name() ~= "" then - mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) end end, @@ -183,33 +207,64 @@ mobs:register_mob("mobs_mc:pig", { }) mobs:spawn_specific( -"mobs_mc:pig", -"overworld", +"mobs_mc:pig", +"overworld", "ground", { -"FlowerForest", -"Swampland", -"Taiga", -"ExtremeHills", -"BirchForest", -"MegaSpruceTaiga", -"MegaTaiga", -"ExtremeHills+", -"Forest", -"Plains", -"ColdTaiga", -"SunflowerPlains", -"RoofedForest", -"MesaPlateauFM_grasstop", -"ExtremeHillsM", -"BirchForestM", + "FlowerForest_beach", + "Forest_beach", + "StoneBeach", + "ColdTaiga_beach_water", + "Taiga_beach", + "Savanna_beach", + "Plains_beach", + "ExtremeHills_beach", + "ColdTaiga_beach", + "Swampland_shore", + "JungleM_shore", + "Jungle_shore", + "MesaPlateauFM_sandlevel", + "MesaPlateauF_sandlevel", + "MesaBryce_sandlevel", + "Mesa_sandlevel", + "Mesa", + "FlowerForest", + "Swampland", + "Taiga", + "ExtremeHills", + "Jungle", + "Savanna", + "BirchForest", + "MegaSpruceTaiga", + "MegaTaiga", + "ExtremeHills+", + "Forest", + "Plains", + "Desert", + "ColdTaiga", + "IcePlainsSpikes", + "SunflowerPlains", + "IcePlains", + "RoofedForest", + "ExtremeHills+_snowtop", + "MesaPlateauFM_grasstop", + "JungleEdgeM", + "ExtremeHillsM", + "JungleM", + "BirchForestM", + "MesaPlateauF", + "MesaPlateauFM", + "MesaPlateauF_grasstop", + "MesaBryce", + "JungleEdge", + "SavannaM", }, -9, -minetest.LIGHT_MAX+1, -30, -15000, -8, -mobs_mc.spawn_height.overworld_min, +9, +minetest.LIGHT_MAX+1, +30, +15000, +8, +mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -- spawn eggs diff --git a/mods/ENTITIES/mobs_mc/polar_bear.lua b/mods/ENTITIES/mobs_mc/polar_bear.lua index 5d2853f6d..0476229b5 100644 --- a/mods/ENTITIES/mobs_mc/polar_bear.lua +++ b/mods/ENTITIES/mobs_mc/polar_bear.lua @@ -8,6 +8,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:polar_bear", { + description = S("Polar Bear"), type = "animal", spawn_class = "passive", runaway = false, @@ -30,14 +31,14 @@ mobs:register_mob("mobs_mc:polar_bear", { walk_velocity = 1.2, run_velocity = 2.4, group_attack = true, - attack_type = "dogfight", + attack_type = "punch", drops = { -- 3/4 chance to drop raw fish (poor approximation) {name = mobs_mc.items.fish_raw, chance = 2, min = 0, max = 2, - looting = "common",}, + looting = "common",}, -- 1/4 to drop raw salmon {name = mobs_mc.items.salmon_raw, chance = 4, diff --git a/mods/ENTITIES/mobs_mc/rabbit.lua b/mods/ENTITIES/mobs_mc/rabbit.lua index 74bdffcd8..90d5c27bf 100644 --- a/mods/ENTITIES/mobs_mc/rabbit.lua +++ b/mods/ENTITIES/mobs_mc/rabbit.lua @@ -3,11 +3,12 @@ local S = minetest.get_translator("mobs_mc") local rabbit = { + description = S("Rabbit"), type = "animal", spawn_class = "passive", passive = true, reach = 1, - + rotate = 270, hp_min = 3, hp_max = 3, xp_min = 1, @@ -61,8 +62,6 @@ local rabbit = { on_rightclick = function(self, clicker) -- Feed, tame protect or capture if mobs:feed_tame(self, clicker, 1, true, true) then return end - if mobs:protect(self, clicker) then return end - if mobs:capture_mob(self, clicker, 0, 50, 80, false, nil) then return end end, do_custom = function(self) -- Easter egg: Change texture if rabbit is named “Toast” @@ -83,6 +82,7 @@ mobs:register_mob("mobs_mc:rabbit", rabbit) -- The killer bunny (Only with spawn egg) local killer_bunny = table.copy(rabbit) +killer_bunny.description = S("Killer Bunny") killer_bunny.type = "monster" killer_bunny.spawn_class = "hostile" killer_bunny.attack_type = "dogfight" @@ -110,33 +110,64 @@ mobs:register_mob("mobs_mc:killer_bunny", killer_bunny) -- Different skins depending on spawn location <- we'll get to this when the spawning algorithm is fleshed out mobs:spawn_specific( -"mobs_mc:rabbit", -"overworld", +"mobs_mc:rabbit", +"overworld", "ground", { -"FlowerForest", -"Swampland", -"Taiga", -"ExtremeHills", -"BirchForest", -"MegaSpruceTaiga", -"MegaTaiga", -"ExtremeHills+", -"Forest", -"Plains", -"ColdTaiga", -"SunflowerPlains", -"RoofedForest", -"MesaPlateauFM_grasstop", -"ExtremeHillsM", -"BirchForestM", + "FlowerForest_beach", + "Forest_beach", + "StoneBeach", + "ColdTaiga_beach_water", + "Taiga_beach", + "Savanna_beach", + "Plains_beach", + "ExtremeHills_beach", + "ColdTaiga_beach", + "Swampland_shore", + "JungleM_shore", + "Jungle_shore", + "MesaPlateauFM_sandlevel", + "MesaPlateauF_sandlevel", + "MesaBryce_sandlevel", + "Mesa_sandlevel", + "Mesa", + "FlowerForest", + "Swampland", + "Taiga", + "ExtremeHills", + "Jungle", + "Savanna", + "BirchForest", + "MegaSpruceTaiga", + "MegaTaiga", + "ExtremeHills+", + "Forest", + "Plains", + "Desert", + "ColdTaiga", + "IcePlainsSpikes", + "SunflowerPlains", + "IcePlains", + "RoofedForest", + "ExtremeHills+_snowtop", + "MesaPlateauFM_grasstop", + "JungleEdgeM", + "ExtremeHillsM", + "JungleM", + "BirchForestM", + "MesaPlateauF", + "MesaPlateauFM", + "MesaPlateauF_grasstop", + "MesaBryce", + "JungleEdge", + "SavannaM", }, -9, -minetest.LIGHT_MAX+1, -30, -15000, -8, -mobs_mc.spawn_height.overworld_min, +9, +minetest.LIGHT_MAX+1, +30, +15000, +8, +mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) --[[ diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index d82df8cf9..1527fd6da 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -56,14 +56,20 @@ local gotten_texture = { "blank.png", "mobs_mc_sheep.png" } --mcsheep mobs:register_mob("mobs_mc:sheep", { + description = S("Sheep"), type = "animal", spawn_class = "passive", hp_min = 8, hp_max = 8, xp_min = 1, xp_max = 3, + skittish = true, + breed_distance = 1.5, + baby_size = 0.5, + follow_distance = 2, + follow = mobs_mc.items.wheat, collisionbox = {-0.45, -0.01, -0.45, 0.45, 1.29, 0.45}, - + rotate = 270, visual = "mesh", visual_size = {x=3, y=3}, mesh = "mobs_mc_sheepfur.b3d", @@ -72,6 +78,23 @@ mobs:register_mob("mobs_mc:sheep", { color = "unicolor_white", makes_footstep_sound = true, walk_velocity = 1, + run_velocity = 3, + + --head code + has_head = true, + head_bone = "head", + + swap_y_with_x = false, + reverse_head_yaw = false, + + head_bone_pos_y = 3.6, + head_bone_pos_z = -0.6, + + head_height_offset = 1.0525, + head_direction_offset = 0.5, + head_pitch_modifier = 0, + --end head code + drops = { {name = mobs_mc.items.mutton_raw, chance = 1, @@ -98,7 +121,6 @@ mobs:register_mob("mobs_mc:sheep", { walk_start = 0, walk_end = 40, run_start = 0, run_end = 40, }, - follow = mobs_mc.follow.sheep, view_range = 12, -- Eat grass @@ -194,8 +216,16 @@ mobs:register_mob("mobs_mc:sheep", { on_rightclick = function(self, clicker) local item = clicker:get_wielded_item() - if mobs:feed_tame(self, clicker, 1, true, true) then return end - if mobs:protect(self, clicker) then return end + --attempt to enter breed state + if mobs.enter_breed_state(self,clicker) then + return + end + + --make baby grow faster + if self.baby then + mobs.make_baby_grow_faster(self,clicker) + return + end if item:get_name() == mobs_mc.items.shears and not self.gotten and not self.child then self.gotten = true @@ -251,7 +281,6 @@ mobs:register_mob("mobs_mc:sheep", { end return end - if mobs:capture_mob(self, clicker, 0, 5, 70, false, nil) then return end end, on_breed = function(parent1, parent2) -- Breed sheep and choose a fur color for the child. @@ -308,30 +337,62 @@ mobs:spawn_specific( "overworld", "ground", { -"FlowerForest", -"Swampland", -"Taiga", -"ExtremeHills", -"BirchForest", -"MegaSpruceTaiga", -"MegaTaiga", -"ExtremeHills+", -"Forest", -"Plains", -"ColdTaiga", -"SunflowerPlains", -"RoofedForest", -"MesaPlateauFM_grasstop", -"ExtremeHillsM", -"BirchForestM", + "FlowerForest_beach", + "Forest_beach", + "StoneBeach", + "ColdTaiga_beach_water", + "Taiga_beach", + "Savanna_beach", + "Plains_beach", + "ExtremeHills_beach", + "ColdTaiga_beach", + "Swampland_shore", + "JungleM_shore", + "Jungle_shore", + "MesaPlateauFM_sandlevel", + "MesaPlateauF_sandlevel", + "MesaBryce_sandlevel", + "Mesa_sandlevel", + "Mesa", + "FlowerForest", + "Swampland", + "Taiga", + "ExtremeHills", + "Jungle", + "Savanna", + "BirchForest", + "MegaSpruceTaiga", + "MegaTaiga", + "ExtremeHills+", + "Forest", + "Plains", + "Desert", + "ColdTaiga", + "IcePlainsSpikes", + "SunflowerPlains", + "IcePlains", + "RoofedForest", + "ExtremeHills+_snowtop", + "MesaPlateauFM_grasstop", + "JungleEdgeM", + "ExtremeHillsM", + "JungleM", + "BirchForestM", + "MesaPlateauF", + "MesaPlateauFM", + "MesaPlateauF_grasstop", + "MesaBryce", + "JungleEdge", + "SavannaM", }, -0, -minetest.LIGHT_MAX+1, -30, -15000, -3, -mobs_mc.spawn_height.overworld_min, +0, +minetest.LIGHT_MAX+1, +30, +15000, +3, +mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -- spawn eggs mobs:register_egg("mobs_mc:sheep", S("Sheep"), "mobs_mc_spawn_icon_sheep.png", 0) + diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua index 8000d0937..9932c5add 100644 --- a/mods/ENTITIES/mobs_mc/shulker.lua +++ b/mods/ENTITIES/mobs_mc/shulker.lua @@ -10,11 +10,12 @@ local S = minetest.get_translator("mobs_mc") --################### -- animation 45-80 is transition between passive and attack stance - + mobs:register_mob("mobs_mc:shulker", { + description = S("Shulker"), type = "monster", spawn_class = "hostile", - attack_type = "shoot", + attack_type = "projectile", shoot_interval = 0.5, arrow = "mobs_mc:shulkerbullet", shoot_offset = 0.5, @@ -82,16 +83,16 @@ mobs:register_arrow("mobs_mc:shulkerbullet", { mobs:register_egg("mobs_mc:shulker", S("Shulker"), "mobs_mc_spawn_icon_shulker.png", 0) mobs:spawn_specific( -"mobs_mc:shulker", -"end", +"mobs_mc:shulker", +"end", "ground", { "End" }, -0, -minetest.LIGHT_MAX+1, -30, -5000, -2, -mobs_mc.spawn_height.end_min, +0, +minetest.LIGHT_MAX+1, +30, +5000, +2, +mobs_mc.spawn_height.end_min, mobs_mc.spawn_height.end_max) diff --git a/mods/ENTITIES/mobs_mc/silverfish.lua b/mods/ENTITIES/mobs_mc/silverfish.lua index 433211503..148c4c722 100644 --- a/mods/ENTITIES/mobs_mc/silverfish.lua +++ b/mods/ENTITIES/mobs_mc/silverfish.lua @@ -5,6 +5,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:silverfish", { + description = S("Silverfish"), type = "monster", spawn_class = "hostile", passive = false, @@ -43,7 +44,7 @@ mobs:register_mob("mobs_mc:silverfish", { run_start = 0, run_end = 20, }, view_range = 16, - attack_type = "dogfight", + attack_type = "punch", damage = 1, reach = 1, }) diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua index 05b829bcd..37b1fc6dd 100644 --- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua +++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua @@ -13,13 +13,18 @@ local mod_bows = minetest.get_modpath("mcl_bows") ~= nil local skeleton = { + description = S("Skeleton"), type = "monster", spawn_class = "hostile", + hostile = true, + rotate = 270, hp_min = 20, hp_max = 20, xp_min = 6, xp_max = 6, breath_max = -1, + eye_height = 1.5, + projectile_cooldown = 1.5, armor = {undead = 100, fleshy = 100}, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.98, 0.3}, pathfinding = 1, @@ -30,6 +35,22 @@ local skeleton = { "mcl_bows_bow_0.png", -- bow "mobs_mc_skeleton.png", -- skeleton } }, + + --head code + has_head = false, + head_bone = "head", + + swap_y_with_x = true, + reverse_head_yaw = true, + + head_bone_pos_y = 2.4, + head_bone_pos_z = 0, + + head_height_offset = 1.1, + head_direction_offset = 0, + head_pitch_modifier = 0, + --end head code + visual_size = {x=1, y=1}, makes_footstep_sound = true, textures = { @@ -42,7 +63,7 @@ local skeleton = { walk_velocity = 1.2, run_velocity = 2.4, damage = 2, - reach = 2, + reach = 3, drops = { {name = mobs_mc.items.arrow, chance = 1, @@ -74,6 +95,8 @@ local skeleton = { walk_speed = 15, walk_start = 40, walk_end = 60, + run_start = 40, + run_end = 60, run_speed = 30, shoot_start = 70, shoot_end = 90, @@ -85,13 +108,13 @@ local skeleton = { ignited_by_sunlight = true, view_range = 16, fear_height = 4, - attack_type = "dogshoot", + attack_type = "projectile", arrow = "mcl_bows:arrow_entity", shoot_arrow = function(self, pos, dir) if mod_bows then -- 2-4 damage per arrow - local dmg = math.max(4, math.random(2, 8)) - mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg) + local dmg = math.random(2,4) + mobs.shoot_projectile_handling("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg) end end, shoot_interval = 2, @@ -109,6 +132,7 @@ mobs:register_mob("mobs_mc:skeleton", skeleton) --################### local stray = table.copy(skeleton) +stray.description = S("Stray") stray.mesh = "mobs_mc_skeleton.b3d" stray.textures = { { diff --git a/mods/ENTITIES/mobs_mc/skeleton_wither.lua b/mods/ENTITIES/mobs_mc/skeleton_wither.lua index c089850f4..279a1d8cb 100644 --- a/mods/ENTITIES/mobs_mc/skeleton_wither.lua +++ b/mods/ENTITIES/mobs_mc/skeleton_wither.lua @@ -10,6 +10,7 @@ local S = minetest.get_translator("mobs_mc") --################### mobs:register_mob("mobs_mc:witherskeleton", { + description = S("Wither Skeleton"), type = "monster", spawn_class = "hostile", hp_min = 20, @@ -86,7 +87,7 @@ mobs:register_mob("mobs_mc:witherskeleton", { fire_damage = 0, light_damage = 0, view_range = 16, - attack_type = "dogfight", + attack_type = "punch", dogshoot_switch = 1, dogshoot_count_max =0.5, fear_height = 4, diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 6c8000a50..0cae6757d 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -56,17 +56,18 @@ end -- Slime local slime_big = { + description = S("Slime"), type = "monster", spawn_class = "hostile", - pathfinding = 1, group_attack = { "mobs_mc:slime_big", "mobs_mc:slime_small", "mobs_mc:slime_tiny" }, hp_min = 16, hp_max = 16, xp_min = 4, xp_max = 4, + rotate = 270, collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02}, visual_size = {x=12.5, y=12.5}, - textures = {{"mobs_mc_slime.png"}}, + textures = {{"mobs_mc_slime.png", "mobs_mc_slime.png"}}, visual = "mesh", mesh = "mobs_mc_slime.b3d", makes_footstep_sound = true, @@ -83,23 +84,21 @@ local slime_big = { drops = {}, -- TODO: Fix animations animation = { - speed_normal = 24, - speed_run = 48, - stand_start = 0, - stand_end = 23, - walk_start = 24, - walk_end = 47, - run_start = 48, - run_end = 62, - hurt_start = 64, - hurt_end = 86, - death_start = 88, - death_end = 118, + jump_speed = 17, + stand_speed = 17, + walk_speed = 17, + jump_start = 1, + jump_end = 20, + stand_start = 1, + stand_end = 20, + walk_start = 1, + walk_end = 20, }, fall_damage = 0, view_range = 16, - attack_type = "dogfight", + attack_type = "jump_punch", passive = false, + jump_only = true, jump = true, walk_velocity = 2.5, run_velocity = 2.5, @@ -158,8 +157,8 @@ local smin = mobs_mc.spawn_height.overworld_min local smax = mobs_mc.spawn_height.water - 23 mobs:spawn_specific( -"mobs_mc:slime_tiny", -"overworld", +"mobs_mc:slime_tiny", +"overworld", "ground", { "FlowerForest_underground", @@ -193,17 +192,17 @@ mobs:spawn_specific( "ExtremeHillsM_underground", "JungleEdgeM_underground", }, -0, -minetest.LIGHT_MAX+1, -30, -12000, -4, -smin, +0, +minetest.LIGHT_MAX+1, +30, +12000, +4, +smin, smax) mobs:spawn_specific( -"mobs_mc:slime_small", -"overworld", +"mobs_mc:slime_small", +"overworld", "ground", { "FlowerForest_underground", @@ -236,19 +235,19 @@ mobs:spawn_specific( "JungleM_underground", "ExtremeHillsM_underground", "JungleEdgeM_underground", -}, -0, -minetest.LIGHT_MAX+1, -30, -8500, -4, -smin, +}, +0, +minetest.LIGHT_MAX+1, +30, +8500, +4, +smin, smax) mobs:spawn_specific( -"mobs_mc:slime_big", -"overworld", -"ground", +"mobs_mc:slime_big", +"overworld", +"ground", { "FlowerForest_underground", "JungleEdge_underground", @@ -281,16 +280,17 @@ mobs:spawn_specific( "ExtremeHillsM_underground", "JungleEdgeM_underground", }, -0, -minetest.LIGHT_MAX+1, -30, -10000, -4, -smin, +0, +minetest.LIGHT_MAX+1, +30, +10000, +4, +smin, smax) -- Magma cube local magma_cube_big = { + description = S("Magma Cube"), type = "monster", spawn_class = "hostile", hp_min = 16, @@ -299,7 +299,7 @@ local magma_cube_big = { xp_max = 4, collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02}, visual_size = {x=12.5, y=12.5}, - textures = {{ "mobs_mc_magmacube.png" }}, + textures = {{ "mobs_mc_magmacube.png", "mobs_mc_magmacube.png" }}, visual = "mesh", mesh = "mobs_mc_magmacube.b3d", makes_footstep_sound = true, @@ -311,6 +311,7 @@ local magma_cube_big = { }, walk_velocity = 4, run_velocity = 4, + rotate = 270, damage = 6, reach = 3, armor = 53, @@ -322,27 +323,25 @@ local magma_cube_big = { }, -- TODO: Fix animations animation = { - speed_normal = 24, - speed_run = 48, - stand_start = 0, - stand_end = 23, - walk_start = 24, - walk_end = 47, - run_start = 48, - run_end = 62, - hurt_start = 64, - hurt_end = 86, - death_start = 88, - death_end = 118, + jump_speed = 20, + stand_speed = 20, + walk_speed = 20, + jump_start = 1, + jump_end = 40, + stand_start = 1, + stand_end = 1, + walk_start = 1, + walk_end = 40, }, water_damage = 0, lava_damage = 0, - fire_damage = 0, + fire_damage = 0, light_damage = 0, fall_damage = 0, view_range = 16, - attack_type = "dogfight", + attack_type = "jump_punch", passive = false, + jump_only = true, jump = true, jump_height = 8, walk_chance = 0, @@ -401,49 +400,49 @@ local mmin = mobs_mc.spawn_height.nether_min local mmax = mobs_mc.spawn_height.nether_max mobs:spawn_specific( -"mobs_mc:magma_cube_tiny", -"nether", +"mobs_mc:magma_cube_tiny", +"nether", "ground", { "Nether" }, -0, -minetest.LIGHT_MAX+1, -30, -15000, -4, -mmin, +0, +minetest.LIGHT_MAX+1, +30, +15000, +4, +mmin, mmax) mobs:spawn_specific( -"mobs_mc:magma_cube_small", -"nether", +"mobs_mc:magma_cube_small", +"nether", "ground", { "Nether" }, -0, -minetest.LIGHT_MAX+1, -30, -15500, -4, -mmin, +0, +minetest.LIGHT_MAX+1, +30, +15500, +4, +mmin, mmax) mobs:spawn_specific( -"mobs_mc:magma_cube_big", -"nether", +"mobs_mc:magma_cube_big", +"nether", "ground", { "Nether" -}, -0, -minetest.LIGHT_MAX+1, -30, -16000, -4, -mmin, +}, +0, +minetest.LIGHT_MAX+1, +30, +16000, +4, +mmin, mmax) --mobs:spawn_specific("mobs_mc:magma_cube_tiny", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 11000, 4, mmin, mmax) diff --git a/mods/ENTITIES/mobs_mc/snowman.lua b/mods/ENTITIES/mobs_mc/snowman.lua index 1ee88b362..93f91c330 100644 --- a/mods/ENTITIES/mobs_mc/snowman.lua +++ b/mods/ENTITIES/mobs_mc/snowman.lua @@ -21,6 +21,7 @@ local gotten_texture = { } mobs:register_mob("mobs_mc:snowman", { + description = S("Snow Golem"), type = "npc", spawn_class = "passive", passive = true, diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_villager.4.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_villager.4.ogg index 5c9ee492ba4d2315ab820b8149dcb5b73cfc62f6..acb236445e2b530640a1c98a54c81d20a9a3672a 100644 GIT binary patch delta 10470 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 delta 6045 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 VH)LA^=A2)@CS#00^Y{hu{{U-+GtvM6 diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_villager.5.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_villager.5.ogg index acb236445e2b530640a1c98a54c81d20a9a3672a..1ef7a522744a727da6082e2a3a1f2bf36fc77604 100644 GIT binary patch delta 6897 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 delta 10469 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 diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_villager.6.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_villager.6.ogg index 1ef7a522744a727da6082e2a3a1f2bf36fc77604..c2743fbcc640651eedc1529bbed4e3c209552fc1 100644 GIT binary patch delta 6778 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 N#6$A#Xzbz0cX-+2z~& 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 T_x)pGj^_u~7X2`NVI}xK*1vMu diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_villager_hurt.1.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_villager_hurt.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5c9ee492ba4d2315ab820b8149dcb5b73cfc62f6 GIT binary patch literal 10341 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 GB=|p_*fIA2 literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua index bb5e29eb1..6ade915ab 100644 --- a/mods/ENTITIES/mobs_mc/spider.lua +++ b/mods/ENTITIES/mobs_mc/spider.lua @@ -13,20 +13,26 @@ local S = minetest.get_translator("mobs_mc") -- Spider by AspireMint (fishyWET (CC-BY-SA 3.0 license for texture) local spider = { + description = S("Spider"), type = "monster", spawn_class = "hostile", passive = false, + hostile = true, + always_climb = true, docile_by_day = true, - attack_type = "dogfight", - pathfinding = 1, + attack_type = "punch", + punch_timer_cooloff = 0.5, + rotate = 270, damage = 2, reach = 2, hp_min = 16, hp_max = 16, + ignores_cobwebs = true, xp_min = 5, xp_max = 5, + eye_height = 0.475, armor = {fleshy = 100, arthropod = 100}, - collisionbox = {-0.7, -0.01, -0.7, 0.7, 0.89, 0.7}, + collisionbox = {-0.45, 0, -0.45, 0.45, 0.9, 0.45}, visual = "mesh", mesh = "mobs_mc_spider.b3d", textures = { @@ -43,7 +49,7 @@ local spider = { distance = 16, }, walk_velocity = 1.3, - run_velocity = 2.8, + run_velocity = 2.75, --spider can become extremely difficult if any higher jump = true, jump_height = 4, view_range = 16, @@ -72,6 +78,7 @@ mobs:register_mob("mobs_mc:spider", spider) -- Cave spider local cave_spider = table.copy(spider) +cave_spider.description = S("Cave Spider") cave_spider.textures = { {"mobs_mc_cave_spider.png^(mobs_mc_spider_eyes.png^[makealpha:0,0,0)"} } -- TODO: Poison damage -- TODO: Revert damage to 2 @@ -88,8 +95,8 @@ mobs:register_mob("mobs_mc:cave_spider", cave_spider) mobs:spawn_specific( -"mobs_mc:spider", -"overworld", +"mobs_mc:spider", +"overworld", "ground", { "Mesa", @@ -232,12 +239,12 @@ mobs:spawn_specific( "ExtremeHillsM_underground", "JungleEdgeM_underground", }, -0, -7, -30, -17000, -2, -mobs_mc.spawn_height.overworld_min, +0, +7, +30, +17000, +2, +mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max) -- spawn eggs diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua index cf794ea5b..55d4b05c3 100644 --- a/mods/ENTITIES/mobs_mc/squid.lua +++ b/mods/ENTITIES/mobs_mc/squid.lua @@ -7,6 +7,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:squid", { + description = S("Squid"), type = "animal", spawn_class = "water", can_despawn = true, @@ -16,6 +17,8 @@ mobs:register_mob("mobs_mc:squid", { xp_min = 1, xp_max = 3, armor = 100, + rotate = 270, + tilt_swim = true, -- FIXME: If the squid is near the floor, it turns black collisionbox = {-0.4, 0.0, -0.4, 0.4, 0.9, 0.4}, visual = "mesh", @@ -47,8 +50,7 @@ mobs:register_mob("mobs_mc:squid", { }, visual_size = {x=3, y=3}, makes_footstep_sound = false, - fly = true, - fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source }, + swim = true, breathes_in_water = true, jump = false, view_range = 16, diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_chest.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..e0715af9f02aa63fd68ee71dd0cdaa7fc5e32e1c GIT binary patch literal 20594 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 literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_brown.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..2c7c71c2fab2f79f9c1b419266b54e795463b4e8 GIT binary patch literal 6231 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 literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_cyan.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..83f7a8faa17d54d5e7402e7d6e94e18f50e27401 GIT binary patch literal 7612 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 U>2ijz0000KWK};wKAMLA52D%19smFU literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_gray.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..a4bd9cb1f022aded2813288511434b17ca173445 GIT binary patch literal 5236 zcma);Wm}Vh0zhB7q`Mp;F+f_RB}R7%k|H79U85UhGzij-#E^ERFv@|_B`F{&9Rs}2 z{cykEbDr}bPJ*ts3NaxAApiixYN`-@006=P0FcAS1pwgZ925!wgc3o9CO-Ps{wy9| z?)Hu@b}T-D9(F8t0gm-?f{kydY8~SBq|R|CvS00dQm1#Ve-|AJ{ndVh?mpn} zb%*eCr2e@z7t%3-6bTqH zuddKz_6xoDu!|jrS*3kNlYCt{KpiM_yPtK(ZH;lIytEFI5g>M73d=kPdYX2*u zMCdQPkG=Q41KM@_66BA9Q{iaX2YV@*|H###i!BHhA(R^k+<5I4xmHAb|47+f%!8l( zac3Aau4t0io?xvbiyxKX8M9?T-9H+J2&WSAXU$EM>zhwgukP1Kroaqz0Yu|hoNOZH zxH;S+lO-w`3ct~~x_yFqAcrZOzl=Lj%4Hg6gcHBOF_ECXVejlO(bFHT$TTe%H4dVG zF>9{z*{C*QCGFXpL_>1NpLSnnym&v0Iexwr3pykq=0o`X`Ft&_>=TuMd%}IKwHLZ z>CgL+;wy#AxJj#G8q4aTq|B5I(wUBZ$gf6xPOc$Atma&-_#{@Kq|AE9Y(#>=D>m=s zM>HRWt&qzKNh}?iJ#llv--y+h+mHA!jh8?hG|;#Lk-bOS5s6|nd3#ZDo7VB1(qWCl zc#V!B=(?4dmXTfiDUwv8POHX(>tw@z)vgkSFzQ?;C2iI74VDNWwJJx<41s)se>^I* z9re=W6&^fJlDv&_#@8$9@nBNSYxseS7vTHphks*>Mr~Yc1-->YFpAANdxmDHDJQM6 z_2fQqLin&A#LpKlnTU$)9kzzSG7azrLH@b=i8PF|NEPh-;qBn;mKI^h`Hz~gES+U% zCwkW!<8=Z_0BJPia;QylXv89X@Etc$dhYLF?tLAcEifW?NdM2#uhAaa+g8y|NQWI& z$`N1ipEqh;A&d!CTtON1$&V956amu12-mzxNOiJOe_qmL@kEdf$otpI!oFFdt>P^| zE3F9rzW|?JCYCbYBSpp&Z5@)}^(H4SEso#tXEQ&EZGI|T@?Ls5aWrzpG5*-+z$z>X z9J~r8f3p6D(t^e5pu+CJU9mJL?=b_Z33f56 zQ3Xux`!0<{`h3H^vlJvhNmkUqJ^7^Ouk(|>%6XEK5r;EVzzt%?#5_fI>#bXj_nxGi z)_Cp$DNwoZIxINd;HbwAPP<{26p8IAhm=5SltUEP7`4Rd#rj>Hy1sXyctZh zWeGL)4iEVirg?F06~VT{E#HXy%;_iNCoY(qTl?5r*az zY*dBwwTECg;xl;y*h+2P0QFePEb+Hy&cu5b?5~0H*`xZeV+<&Xp+-xvw=v}AvQ>EY z_WgfvbH8n;bGyEs;d@ut&q!{6S^oMxer1HWj?G$Z`1`B2ny`F{u`nMM%0wctLpCC> z(5;DlNxSgUAZuaXd{?rv&p5dkg>DphdKInvBVJcdN;7tJu5#eHO!5VrY6i5Y33VcPY_x(#;e ze~9RXAE7Xk$UL8L#Wg8xeNCpU6(l>IvmBOCN%!7DleOFG`ccNF6D(u2QK^`f`R+ZO zP_7zmBNtmmdCVu=P9AOX=SLJruEV;y?ucA>KHcXZ#iQaA*zfErd=cjYwQlZBdRENwIGUs&Pb~YG z7yQ}_)DR@;AoJ@>*tIqR)v?LD&oRvMMG{AfT;kOkGoU0j|5j>gKwkfHbQxoH- zRGK<}Cpt!mUJt+LA&?<*HOHM6U!PTVc{ZmOz^LzNR6=0waq$#Cn<8pdRGp@I%M~qhE#T!<|sj> zFGS2qDuR}u1ix$3edWe*sleBSv7FE4e=lSGL!-BrXVLT%y?6k}|4LIvrH4%E%Q`F) zi=u1Lm~EOEfQVf6MKauikFr;GDJG{&SGsd}8M4_!RA>ozK zmf*PXEaW?5hn%K(0Hy`@EJXLcFvD75)0^ogtNHWjupVbupFB>{&CUs>kMN8TktV9h z+?!?o)wo0<=c}gO1NT(TO5K&A#p<>%ss!6)E&lU&bD5yfW2d|O2WI%v9#5g4FRp9O zo%ap&qDf{T*1ZgKf~7rqevaG{Geo}V3M$xDY28U62iiqH@u|OY2}H1vF(gJX!~fxT zI4s&Nk=t2y_`5kH0USPYDZ(dMS)S#!-3Vq+TVwn5$>YR==ZOS(+t*v+ZqoQ<>a%-| zekrME2(+ERKr~j7nDKCO>5Yj0G``;pd<>Vqe|4ph(}l{e+BtlIx;TQo{B73N{FN=z z?>Kf{ma@UWyUVkLC=Y)xdTG3@0k=hs%yAA-8!>x7xdOFn>y= zK6}g6qwI+urL}Q8saeEqh;n%ST$i@JtL@4Bm9bGU+QnU#@$`=UB@t?ucOV)E>toAik&lk#QRg01 z&U{@+MFd{@;QyDjGc3WJuv7i*wuu}LgY7)&BVKQJ>shm!0GJN1%aUo=27B)p4#NxN zt*l?cFu^($x8WkYS0B$_R;{u1%Lw^YFR{6KyQm#$#|p-PPOQsV!*&&T`@9cLA8J5D z*MSo>|MgcsT09i^Ib(E&D=v<$Oq7ZEwXrI5gm?(9TwEjF()OBRe!3wD008bg4HXFR z@4pr!sxkloAn;Iq;|%~rl>ZF_$S#_T8%u+XbIp%|2F+##%S&Cx)W0J~zK=>hA6? zJ>VOE=eleP9?G_B)=zw)Wdr7zevxA*BvN;stzV0@mG*-||EXO2YRwg%aZ0jQ*j8k| zZ_LZf(%(NA6f{BI=3$|lGt9v}&nu{cLqeo^w|t0MQPPu>$7-rAYbVYuBOCW0 zkYQtHm3ig-H4AsMFUp&Nq zakh4{)@x<^Lg_gE={Vd3wb<2AN8cc4I2!O78=qi6`w7tB1y^3IG=+lMZ_mF*+C~0W zkS|5s6TAfzvIQsu$y))yb?x;tyBuNpw*4zOU+a^=Xnn!IzNch3A5fI|9=Ld9PjsdY z3)e;V_3?}E8oHjl_1~d-URC&b6cMtqny`c`hOfFAXD&L2K0G{xw#@Z}KHRl(mx+DU z(u>t|In@nq_&adN&!(!9x@FQC4ljD>NfmOSG9(9dFp8DlDJSV7uun~OC$YYac+n^^ zEZVn#A*6OKPJXDxyPn2WibEoTJrha&Yj)x4;JvQnVzXjdR$Bw9QSbdAXsvBe5=F7n zYxhY3*(ZZ_WHOWI7#Id`5Kr$uMab$dI4NcsfoG&9)uzLb%j8AgTXu&DelINI6S0XTe^CF00XPoYf6sPH%0 z6}TE}*GAAZ&VFFV6BnXh6Nd683MI{ke<-HD&vNfrbV=m0p~|H*_o-$ItiQZqh+*2x zQcE-mOM_(UgUbyF4-PO#O+cAjad1jaIco z)tk91b}s|GS$TEJ`u^e(m2)|Kr&t1*swzjnsop-%OvZ1w$JbT-_ zxmtsQOx!88?O~L0Ya{aS$s}fw=ZMUdQ0JPrEbsn!Pm3nXXLA(OM=z*-cP7J?>5K$ecwO2;6w#t+$o9G ziEe%j+l$>9DV=Y&V}7JZ3>_ZUzFM{6_h#}#5vj*|k>tyUvz|Ed!izanBncgQGv~M# zTl;D(w3^zIFYu+`*oJb#%-Cc3C`~=~FokFd_L-L2{v zGXl0lgwY0NmV8T;+;;52KK()m;?B53lPEqYEXN#yk{8wk)$Quoyv4_GKXe{mh{px86A*Q(4C8@bC%SN^nV&|Hup4ds;%R=OG$At)be`7rk z$G*2(U^tpI@N1|Ei1zB$k*oHse|7zU9voC`Sw12hPqDS^f6zc*=&PR&lDJ!7<_7x6 z#xNdF+VpC^7t$Rey4fcAp;Z2%+xJ#B3u~<<4q;93*R1oQ(amFH_UE4$JfT#XbLEy^ zKxuqYzd>e6>IpRO*`-z#Pa(%|#?^N;ffqeS;83ok&@XyC&?3lO1Nda8~Qco2mT zsMk&C_IBqCvK==Y=#KRFhCKvvl6)2lv{0-bfcFQVl?!)8zU0S%ZgswNYGt(HWQRfmexLV@>)G@ zeX=vG6Bx1ehM=Pk;v=nIq;}{Y%Numq3|nuO-h`?1O5?d-2R>aRX^Xx4&t}KK&(D?8 zS!tMwl~cm~&si6zvX0+n@kvkCZcENs)wa-j=|W!ThVBnfKfqL17wV+@jENt@Hd-4l zeQRT*X&-zDUnE1^*yOW}DvY(A4swf;_20>CUs3`+xkIYV5fncC+|-?m zk4?s?m(#a04YOCmkS+9kI8O*&=#$dv@_H zEfcs(`lyvY$oT#7lH_^eNB{pxHlhlTF6|Gl&3^klWpyn=7~N#J~J|7tF5qX;=@% zvC(@L4=vKf#f(cJyYL-OhS2?b5BTC%OStXNv?B>*alJVLPaMOf!r&iRX=jeUL%qJu zu!h?Cd)c0mnOnV@PdZITg=#hnBZoztJ-1m~O||p#fBLhI)+hBE%bQ3__SY=bpM(*z zj!m{JNro;gl}m1#2*Js3En0aJNDyaz4>a*t4wpq}3hfVNcE1(h4(@mUTkwIlOdau? zRaZXK`g~)`uYV(_UPDx&!mkkPpRS|3eOr!D^;F`E}lCd|gat@^dDztVl9Fy1~irT8IR@CoB~yq|@0!dkCPJ=O4b zCYyFmH_3{w*~k`UJhzttA`DWg=jPr|}vh zuEQToFs0Hu*TTP85QnqH6p8;_BpE0d9hlt$Qs zLrVi!@PsFe%=9~H3LGmNF3(R#jRTPqw?9sOlNh6?b`fA5}Q`bATC6Xbb=fw>48j3*?gH*G9o-K^%K-(0!l6M@40 zGTtM)dPxlbKdvwF#zm~k*!3!% zoC?Z1C`KD}*A4-6 z>j|OJw&a|=oGDl>>}I7C>)M{Gw!J>qnf*`%M322t;xE233IB@)uMD1)Xc}_)z+>E= zcj)(Nk5NKHmyXzF72mh4zNXQ!4sY)g{cd_!VS>u$2fE)o0{ugo4ga;x8U^xDCe=^x ze?}8Rao>LSaE{2_3kU))Ig!xi&~V?u??eN|X~Qr(SRlFD8}n(PyHE93>>n zWJa5f&#ER{SNJTC@|kS^okGC0FlMrhN75gS#=5g^TwcrCMq_Pib>&rhbw1`rz4Vx3 z?jV~Z!XZQLnAWRgCT=jO`&eKR3G2WiS7wwju} z;Cl;^E|Si7S0pLNxLLf}tyK?R8#QYhL_xgiS7uy&$6Mxhtx4uB9>!wo)MI$_Aw)R= zwGMh+n4^ZHq83Y>rkMDk!U@#NvSY zddA0#^n65$O-re4mIQE1Q|sAqPs>j?j7(P$akWP$OYW#*M#FiJJXSh^1 z93Is##aCu5QnKstw5PzawNI?Lt9D#*RZoI2=OH8QL6>t%8_B2vvoi@3(Ux#`Kks_E zS%1XHBwjXaBxY^5f%k7IXFiH(wrTQ)xTRBQ@e|qey*ZpuYoJG-)Dlue|-dzBun>I5f$r+8~JDqQAs_#VA3iXMY{i5R?>(mc9^?L3UJ?ADq{nH^%dt86VNhYl|BooX?oe{B)8NO+Ar`1#t z^V-7y={&^a!r=WgnQjns0$H$e*b)OpFo--U%jM;kO5*Z<8YDKqZ8`q5W7&t%p?-&+ zkm9{+8kLUtsE)SOGmOo7NwObnrAx#LIItLkEn}BH%ZnO260i8;YQ6Cmw9X)lJW>#1 z>-*B3lvs>T>vUH*@X1mZ8I+uVaHiFJleT0 zhSSC;lJ)!rDnIzk)|@N+l$_aF$dGVni+-!U#HhqqSq3%9#jKU}jokChw!DZ^V#lVu z&GBN&+BbOESB;@#_|g6{i@h4n$&KEP#a~r4z<4rFMr5_2^tQ5)*LzFM3sz+*MxkmU zjjbNLxR0-I%{VG;jU2DIcU_*0FDFjrz+y4N4jlsv%U=5%T(nsH~&qDELJtQ6n$<8I*V+b>}tmiy&_JUCH z!R9vo<7*+jIt!8O-j+&LCLds!^yNS#lVGXkKlz47@CEM~zcSf3=>q+@hx@l%!66KX z%aMHbx>AzxbC~1Nr1S3b!}{}I?NC&cP%haoSE-$cjM7{GG?6W!?-IY>+8tI5oK`MR!g^M#n$c~YZX1_#qdYNL}|8t@yU=>MVY?(df)7@41W z*;^BCwma$0PNh#bQRI84ggE)|9bs;j#9sWF7G&L4L=ej8T!^N94nM1!+DDMp-TB20 z&qRwvG1BL{Mm!lsCOsgBs#2>*PO8_5rtmIN;Tv1s@WHSRiv{#w`f<{jMY5wN~U15plI9=-2e@q}4)V9k6&zSw)ZI?}IyzG>iFiX&Z4LV{I zgIaj(UdFF*6ni`TRl{{o|65FZ8MW_itv`w8`ti)oJA~{AI@eK#bmCkm8vazV|G64K zQibZ1Q+8qmE%$8ZBgI02`9;IaS7Ku5%D7p*n>!oQC%sR>l`C5WaBc5J+BZ9V006xD zprN7&y!3p~sYEaC71*O{{NU7vX_Ri}zt>it~a~kNJ7(QhCtJ1mvwEjXtBz=vZ^W*!T4Bbk zsWgYt?KpCz__J0A%O<(M0|Q^yfog*6BvOtFp)ra|#@KbKC{A(d>sRjuFug>L-0zBclY*?-f2-t(6lp>CMPzy&&?Z}+whrc4Jtm& zMgUb8zkXdX<*Lkr-ntB@f;?jRt24JG3EKMd{@*b8+*#SO)qD>IJy2bkR&1`Wu)TcNK-*lNJ^C6FF{2T6 z*sWPI@9*|2bdf(rtQ`G!5Gh$A9wR7OJe&H_Bf-iLPR&Rkz=4zG4C$z0%< zwE1Vrd`0jdD)gx$OYcpuT?%M#h1l&EV@si#6AK;Imqe%jErk&@r~*{ZA;D;uw(BlJ zar6g!^{bmcClXUmfD!KVErFUl(!vlmZ6xMMhJLIbG43g6sI(kjt|#`>f#9OnB+<_plD(=~7Q@W_}$M z!I2-rgYT;u31iNm_30@ivu6l2qiQoMPDRzw^!(uaSuFjqhq-lzrz1j_sZRzsrhlRD zATydjCkC+A-qS4m5KA!<+eyMBJ8z%Eh^Q9Zj0w?Q@rNlreIb%s5?h6Ye}pyybS1@q z=3e`b&du3U^l>tXX}zUis&%iBSW|Ooa)xE< z7!_?Xk8<3RRD&pSUjFB9#=Z4*=(_^W>6!$h zACWn$SA5+6JOWSZYd+(8 z_Tbgkn5D{Vt!o~%wN&x)p961>N_G2=a3b2c#jNPAxvsmPoM=|e9D?GWX)pikp$d(9 zvM0(?{#DetV9<&ee7iSb^j3^lZ*E-#dV>{b-UQ+F_29Oabl0zY?^JS8m~$JC9|79Y zx0kUo^SwS*NGz~8J2o~{tTdfr{tDUDMH8$Z9#R8|2vT!+05v&DvB^6pRojyAn!4vS_u=B0I}QWx3TQ+ zN>3W`&J(Q(4HAa~9v@-M*(xA&NWRxdA zgTCTlpcC7qMwA@yNn8iekc{N&R}*NJ=ulq;UfIr1#d!z5^)2Co;U?EtQDwl^*n`ge<-52j&=D|*s4IC%Rb79QFMD%>N+axHMd(_K> z$zO)j4915N+nC5RRvK6Qn(?-d?xY};7cAg9z^KteE!is*-XE`~gW-0jWa=*dU zpo)ma)(0OY6@Zw6Dr!ZvH!!j_w=SD>y)J)Ko?-BDy{$eK?(B6HI3x^Ua+P$Aq+(n^ zGNU~m*y(M?_0$N!!w`{BAZ~mGO3U_NCvkYq zcz&KG9J;-W^1JYj)^PI&)&k8Wi~YGNyteqx3_n2U zBtR;od*LF0sWAh7p}N+tHD=`(i4$R&s+7!iP@EenE%Fg!zjUsn1e*HOViMB@ zeEB`te%i{4b;FCH^W}jXsYegZl$n)ryQ4JKmGG}RX~erIhhso zP@0#L{T@1^PCj5$y7#DI5b@~xbf_;9=u1-|5UBCF%Mj1j^|e(7f&}UBoJsss$Y9th zYuyx^Qqh3;M)xu2=_f#+@Aqd%=(UnJr1ORY+U}B=ACtrydHZszP$#=`JSoKYd-(lk z?_@G9|LqA3)oi+%?l)>!+QH`KX6W-db|aQSg_KkjQ_q{@J_yFYX&p11U-8rtg0g88 zzv=5^M|2UKbjbFrP*#Whx`8-rtL2%#qpDVw%yV10002gl(ZEa| zc-OV|KHrB|tcJP*HYPbH007uZin3Y&0E7YnAc>9&0Kn`*NC*I6oBHb*cxrv}fw;Q6 zSlc;TK|K9jtsqvucGdvkyRw&Km_{Ll6Se6VCxoOQDvCn_HFt)N6yvh$ws(29QgOLh z7>?Ge#wj7)ldvp>yaWyQ-s|TrXykj7(WQoX&8IRmi}k!D9`FqP3lx79cfPpuS(JHh zOKsN?%vvlK-b64ju1*nD-aOw-Z~C~0e7Nqp;QDmIY@PoEa2~WjuBqrT-L-Ay>KScUzuYb=&?%|Q* zX!v=~d*dwNL+_$VXTEMsbr;*asN}A3-{2HaAh<{VDaQP{jJh3!}IxZ_$=% z%GCSlFxz}HEuXJdp-g~J#N1vZ_m!VW_e9w9cGkhgxZ`$1p_o1y3GF+ri~^0tc<$h? zRC+rTf>~eB#On9&EOz6dL_UGNrX%N%-%oo+ikOStOJeC2K1d)`Rr<{^zb>e%!dDyo zYFa)zcb|;@UOj8O;&C{ueYyS@QCsP=aGB0ZQ&nt;u-ACbp%W_PogyO}<4bkBd80AC z>_Hsxg)d-V)W*$Ha)vwJu_)g)%_f0RPo;hRI=9m$_YvOp-$DqR%R@0YiKy3W{5V+a z&SN7uwFM#ETAa|WambYjzINOE_okg^$G+Xz<~J6_y3&)^n#E`gd~R5aRr`pSHH$Od zP$x(6Y-X58tC!=v)d{x&ZjFF`QqKC=nRO)Wrt;= zEH2Ksl7MAp))g$pkE>CC$iJEw{)rTjxhnEeZD<7b@7d>C_7Qx8ao?*!S;e{ZU%$@_%y$3%Lt5&A zIMItas+g?9rgjJdr_p^2%=IsF%H$Z_a~LJq&z+)7q%2T0UQ^7yo(R7)CgI>JY@M)X z%vi5cnCrh-2nMb38|RT}2I^WV4b2)588f@pQxLN_^RJwx@(GvP)8A_cOiX_%=CE7! z_*g@R8S-^)xtX_k({qGJgwMYw2@7?ozX2icXA7AfYNNViDE2!sPH8*n8j%o;I;bd6 zizVzlPu9>!#7>@A#%UoTPz-!-A&c$CYCb_k_7>fmAA=ZHv-YZ-Z+`}9>V3^z$!#Z! zb4`hu|B}{kU4S_D7K<H zF@RPjWiqX~3^mBT*IWu|Il>zFq>U0c)sNTW$IQ^r*7pg?!tnt59iGg^#|-^~7xV9L zS%gHfdQIi{RW|kYJ@`nd?AoG&rrVcj?^X=XLd5wF`@zVt=3j>vLkv6z&&$kl2Z|O* zwO^3plwS@b#cQ+^Zg5&&;@_>R#~_BFJ4ikzcr(!i+Mo;4@u4#k*0!o+Cg(v1C`v5t z-_a7KJc|z!RB_l(QA~uT?5wB@4%_Rp{S=v}%lsZd$HH(@B&8cE?KJ?1Zj7k};v5w0 z{|6k{uA*F!N;UhF)XmO6<7%Zj$`i8r{WisF@y0~9cGVCq#?3y9$FTRLdt76uuv0lm z;5-pr-`D)DSCs!Nm0?;*D(hli&4=pXyrM`p7ddxKl(}C!at^U4fMm7N&wXOy zU=A`zlXD0g`I8~_(m04F_6=QuF$>zRwcttAzSPD~g5#7VrX|NvL;B7&D$6JVk1ne7 z9e#jL{&&T&OM~y`qFQo80Qmo-E(P-l9dA*as(6&9x_jK#U}e|Lm7pM1`4uEE;u z96x3m#{ee~X2cRF4YlUL1AQu6)Zw8Jq!O+&TQ2MPp}(}B1Cd^e;Y96~w8kQBvmDgM zg<~^pr?+ogcFiEMWC2(iT0{(?H!+Z3@fQ6@%*#82qog*&!Alj?;zB6Jq;H&m~rp-L2EJOFp}sp_7{zH^=tb>%>uzBXhha? z9{5utjW42qp*_u*!A{N}rmUDC(YhN+>yEobtYW(B(-8|(?_dt`LT}%~i(&J6Me=uz zV_ULQz{igcC>d-!Z%IYZ!SWOGc3qFf;&q^FKu8DP=y z8N1`?5k0gpN7PVnfq}7hXW`b%76o`rTfjN_VLKL3r^w8)4#;;qW?(nz6b@-bCE;p+ zpzfhD>yvB79r2IM)-+!z{ELnw(dWw|eh9|m27Msk`U&ozP?f$qyu28m)}U=l!Kibd z@1aph80<%i!u8;zk&Men zm+X(0o^S#$jq)4rVC60(ND11wBus)UY`fEfm^hu8@IvJqQ2%0sgx8eId$unXtt4=e zOKFnDL#5hlQD+!viafbqIh-=$tb)HqR)ucOrDPcrO=EnzpZwh4vT~R9> zSWub3ao`ek;ERqA=yr6yIecfH@0_HnIxE~rb%DoAjpS3YOnMCfGG*N~m=o4*ho# z{4VfOH_3w`w2~u&d0M$vw5-)wD)u;P_pKUqAv}%96qSmBI*q&|JV25l$5ZUBVIvs5n#)8t2jziR|B3k_lurza{x5{aHw0?w6`Ty{oe8>=>w#OoBP z94QaSwCm^XXiwZ5uOhYAsC!o8_YTL`#-e zxFxOz89WKH!sMb_k31SblFr;9t(2rSe#xEZt$D$cb2QZOdMMUxXw_`gA79vwV;1auJO1+p)s8|EWi|~m`|1viln5UZ+`GGlL9$cq% zL>r9r%vpWNE=Q241>dI_{wNrX^f@+oZo{^3=C8h>cXputN(fs!O$!blgzhJ){K%cK zNfasx7jV@_u|5Dp_(F~Z@OZVzuj@XvF5HIql`=@GnyRnL(;a$*O5#k5d7^DM)`?cO zjH^Hi)LWW+Pwk6hu4i9PvlGvwCBmLIKcKkHD3s*Af;DLWW7PcbMIQh_k#;gN8cH%U z|LXg?6X>zlxVjdMZsOH zOfAdT9|u1yn2b~IQ;*_CTnex_u|#<+KWkt8pfzut9#*DkDyzZ&fUlsVRuxE#XdLy6 zZ_=y#wlDU86(JO4m3zb+o!Up21(Avjf2YhcD4(HMNQlL{lI(Mi+a4TigxRiawrd~> zCbwL~eL?H(Y`JVyde2IV)?q?eWKC7FVioY5s{n z-HUBx)XHmx+qMQ8_z>kdTDM!px_j04NEW0`OxgzaU+mh*dlU=;X6JP;Q3VB23T+9IpEezE5=mV4tGoolp>D$-3vKv)kV2C~9s^w9kUj8?zg*8+-`d5m%@@Y) zfccT)*VYI!NcbJ<3`+DMOr{kFRmxqSLqyADS_Kr-#|{9*VK*;ZK9eJB7r)*I-*#^- zYQGDfPmiHt?`g&1iO8M6r2w{YGEvT=0^6n7L{@r&UInV+Hs00#UUF>dgCXNb#2z?Q zb@fg3vqr?u1R%%vZC`C}2G-uhH331#(m5hAq^G3ujS;cifcX72mdk1sjK9H_9i6fk zV<7T>H50dbY&k&qy)VUpEW(E+?*C5#Q>+w4{Ym!k6H_ob|Z6J^MmLC#6# zGL*@&Ont{j&m+#ECwo}7qbV8F%3(3mb4W+n(r-LuVEUoxd6!QmxnvM9J}t+QPq4>6 zael4WJgkHjnaAyD8LrjZ?VtLT; zLF2Yw(G@5OxqmJClW>iAOFt^KZw!oYJ$Duhs$u0Y?svcI@WLBH@Diuw^o_d;ZsFvJ zIo>U#W{*XT$P)Ag*1cGWgx;Yx0J4qv9a4OQondn4`Ms|XA|P$Jqv9B5DT;aAjT1JU zxS}gucE$l5AD%n&5scsKhtd#wa||SJ0A(1Jj%GVyH%~Z${hP)C=3)8ezp4D%`_}uu zC?Y@MC*Db;@Z^v09!lqBb>h38H6ny;#E6l*?qv!{y>rMe{XwCAWgEJhwNT!A7ORMF zWi2@5I#c=BFjC__QGO8qNCFK)nRU=VLRp$kM3%_2xVwOK3!4gJQ_VClCNAo5(q9|m zLlJ7BcSr4E3NFL2raFzX#uln?;%WRbkaeVz!cwb?M=&l7gNLH)5Uf!xOyK~)zYCX; zvvJWO{GZ*oE5hOrLsN&QQPUp1FBcLoBTet@moL7CycQ11SYoW?n88sMQMQP;jyo~m zcMHT|DT2Ef%t*Z=Vx)OXH%=vc%4=K|*hD-HLpQchT@|Kfd`f&$FqcT3pN)b5OditE z1!*~Ld?-GQ!?v=Ensi`WOt3W;C=cisCW`Cw5w10VV0 zOtc^}yN86-@2~J4%#Nv$fc(ZQIelZoozB2T@hA@F4aH)xY7UCn-vfvU+Jp(jpRTbM zyGk7OcW>TaL-&AgVEj$m<((e)D}y{x(+8Jfl;T6C_At?w?^z2Bh$qIO+`?fB|Jbaj zQ1GL<7Q$rI`y$aC;48%_<$LZ2Jlqe1Gz# zK=An=k~*Qyaz|=OXV-@%v#2g3^R66hJE1`I=nwBOeWvleV!#b0aogJG$ls-9%`}@k z6k09h>lx)gxIoGtOknjMYob_;_i%)l^!>Nx(Ta7DrFixo2Q!_$Ce zkcm~2R_-#4M~e_21Zu| z8kWUEDI#dEYhcaBB#iIBWI%x}RZsbdT-B<9Bu7R|y1hqMdF(#GJmQML2ix>AK)oi|W;qdXr;$q$uMaEF*R3r1++>RI^d!jw?OdeS`zmADqQRI~^ zOVAs;A4HlN42sj^_52U!9ZF`^i?mNmZCvm3&HD^8GmUNUw?eg5KGoyt5#fG+lEz)D z`!q*UJtgsU6ygtC6mp?O${A$EyFq)s70FJeVt%nBEt2jU^*d&y+*0z2N#QUMdilD zHH(C{SIy7ozq|lyrzeA_%gftOlV^M_;;%gO9FnGA!K#FZeu@La>gj{2?*$-Ptk3o^ zh|mY6#kCoKY)sa${WF`}e}ezKjcDG8cBSF27`iVJ7nzhOTD2o)5 z7g<(`^sutVn$Y2GxHR+;j3{Ny>!8}!Kc8Dl_o+Tlw(2g|%P3o(`;+BL4crVZw)wq~ z^!Lk|7bUCBI25|q4Qk$Ek2TqxFEAI^TSb49_R7`K)|Owca}}uALvrsZ4@5Wn$)t@2 zDRad$jNtZ0j-;){^$qH%ddd72hWDoox%~e5;z~!PZ+ppZk|0sS{y;HLs4rrfilHj?9=6qC|c%4T8NmNiX!e{dG_1c98;_6y3 z&N(xo+TX}1Y0!-90Gx^vXAzw_BeS<)g3=@kDMUD$4a+C$s-jW%p4s_v~B%8qC~^gzv_woFu*if!E8~!4*!)!bk*g z$G)C^m;!ZP@ENw(W=i(ho0Q4i%~c}}p!$)Ra7s9bQKx<8@7OK(u_2w~Bj0$bp7a(O z&sv_0`_EyaO;rf#+Z$58yXoGBz7aJhrBtYR=&}D5<@=tO&0GlxvFPKk58K@(54SAx z*Ua4@e;28mQ{%rHiRhUvan{7!NjFINa%`)P_08uM>NvP_Lt+^%e5EG!(^iT9&GNSY z^XaDbTo73UWJM=Zn(Gu(Y!fLBMc;${y2sPyen5zhTU*0MKSJEL?_bxPeyE}|r1FoB zSqVDT>lHb`@h~*2TB2a|IqsgtUdB_I{x-ZC*Um3A=!NKT{Wc+nJv`r}LxaiEa%Q>p zdTrgKZn;?-gKqfopaF&^Q{dC$&q?d0JF3SX`pU@se2N%F*=Y}P{XfRez}uvs*D;n< zipF#2euyi(|20y zBY+gDxM*%vA&NpkSMptP*tK`;Ar!)J8cjGsU=bzl)gc>WKWZ3i!9R_=Wvu6|ge!=_bq zLu7!y!}&9anBG}WMwimNzK}$CLmW%6PFG}xH_Fne6tk1BCxO<~nJIf%@qp5pc8^i# z$Do9SJ4iN+F~_YsDVp0h`kTNsbJOIi$c=v?xi}Zdv$b*3Ki>pUxFk8nty5V(U#^<0 zchhb?U94H)QaQXs{NQ((?n*fA(?&6m4Lt}0<~A@*^2A|lV8{+q$LZ)2ZDq(vv5 zVF(^MIfs_>#jAEM*kj-y_TX;%yZ#$fvwdmnG+X|Dlaq zAcE7OEyBt2F$z9D{)r;M6PFHisIh4C6V|*5*2xkZLQs&V+5& zpQrn-x%Mhwa!V3MU*oYRoTNq|5MBIFF7eJB`NsqV6D~z3_}4iUe15&4`RE2`J1kCq o1i32@+7x;%82g%Hn004lJoVskCv|0H70rsPKh5!Hn literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_light_gray.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_light_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..929a6095072b637a445ab8dc122209208b262619 GIT binary patch literal 6354 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 O06;bL)iJ6LQU3$7V;0;1 literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_lime.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_lime.png new file mode 100644 index 0000000000000000000000000000000000000000..1507d6d7956e15fe5190684a3a34df54e1db2444 GIT binary patch literal 7388 zcma)Q4*~-?z zlHA?L#gg38+tvyI@LoO0(o3dl{}8d|gGLrC*uUojM|FrK(j&@VdRk>%R{rU$o4rDo zLTM&-P$1msN$!k1_A0PJn>)E65lmFIb@1u_YKi7?eM}j29 zXmekYmg|l{m+n_SwM>&bL7xEJ1MZo#*vFvpJTU)CKHd2JlOa}JR$J{a`SUpuRgaOQ zwoT1+=fKL1LQ$lKUl+IG>rr#8>uJyhP;&3(%@p~HiCn1pp>Ww$K(H9rX7yg;oF6UX z{^ZT3?4>C3v0~zu^~KBaBwGmC=vl&@5%U?7OwQ|FtlC%7SCU;-EEO`&7?a+pjWeuC zpSN7t0XRUL*OjK|UQ2zmyV$&UXGDH%{!Q=T_Y+f2>&t1^5LU0;&xc7>W2U>0;}c&f zB0tISiC=yR9|pNCEc1=D$)y^lEI_|8>E$(c4@Aeuom1~SOM9flK%$2@7j7>Bn`i?m zUfYX=gv?hdCOzw00nc=7UOyW@0@2Ha8lc9rj2X7NhktTA<>dJ4y3$CtAJ5XhzE{@M zYkk&r$_xi$isn;Tp>EkRZ3xj_FoDS+h)WOl0ErEs>i7cLzSrD(qPq{c%$l8t+NuM2SuFdtvNDCZ!%f!D+c=VT6o4O@@Y@ zt+e5Z}H$aWkp7#g^MZz z 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 IR>CyoKPhYZC;$Ke literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_magenta.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..809e645fb6a872106d5ffdd1a731c564bc79756a GIT binary patch literal 7352 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 O0F>m^WUHi2{r?YT1sOO1 literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_orange.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..ff17ff67c3f1903f27f80c44224f283c98803e23 GIT binary patch literal 7396 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 L23BoWhQR(0{x$~$ literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_pink.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_pink.png new file mode 100644 index 0000000000000000000000000000000000000000..7009e6efc5d29ab14705578dab4f9cfbc481f759 GIT binary patch literal 7732 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 literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_purple.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_purple.png new file mode 100644 index 0000000000000000000000000000000000000000..1de65a407fe7f0d6dc087c4dfe14713d1ebaad3c GIT binary patch literal 5790 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 U_kc8U0ssJLsOqRRDA~sT4^-J7A^-pY literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_red.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_red.png new file mode 100644 index 0000000000000000000000000000000000000000..645df4977956f4c49b3d7edc4ed1eb071958c5f8 GIT binary patch literal 6659 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 G*#7_m-jodh literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_white.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_llama_decor_white.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ae669dd830fe5a581a46f6dc7d3f07494b9748 GIT binary patch literal 6866 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 LNkvXXu0mjfiR>Ik literal 0 HcmV?d00001 diff --git a/mods/ENTITIES/mobs_mc/vex.lua b/mods/ENTITIES/mobs_mc/vex.lua index cccdebe7a..c23643cda 100644 --- a/mods/ENTITIES/mobs_mc/vex.lua +++ b/mods/ENTITIES/mobs_mc/vex.lua @@ -10,11 +10,12 @@ local S = minetest.get_translator("mobs_mc") --################### mobs:register_mob("mobs_mc:vex", { + description = S("Vex"), type = "monster", spawn_class = "hostile", pathfinding = 1, passive = false, - attack_type = "dogfight", + attack_type = "punch", physical = false, hp_min = 14, hp_max = 14, diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index d251ba823..154e9411f 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -516,7 +516,7 @@ local function show_trade_formspec(playername, trader, tradenum) "size[9,8.75]" .."background[-0.19,-0.25;9.41,9.49;mobs_mc_trading_formspec_bg.png]" ..disabled_img - .."label[4,0;"..F(minetest.colorize(mcl_colors.DARK_GRAY, S(profession))).."]" + .."label[4,0;"..F(minetest.colorize("#313131", S(profession))).."]" .."list[current_player;main;0,4.5;9,3;9]" .."list[current_player;main;0,7.74;9,1;]" ..b_prev..b_next @@ -927,6 +927,7 @@ end) --[=======[ MOB REGISTRATION AND SPAWNING ]=======] mobs:register_mob("mobs_mc:villager", { + description = S("Villager"), type = "npc", spawn_class = "passive", hp_min = 20, @@ -961,14 +962,18 @@ mobs:register_mob("mobs_mc:villager", { }, }, visual_size = {x=2.75, y=2.75}, + rotate = 270, + skittish = true, makes_footstep_sound = true, walk_velocity = 1.2, - run_velocity = 2.4, + run_velocity = 3, drops = {}, can_despawn = false, -- TODO: sounds sounds = { random = "mobs_mc_villager", + damage = "mobs_mc_villager_hurt", + death = "mobs_mc_villager_hurt", distance = 10, }, animation = { @@ -1075,8 +1080,8 @@ mobs:register_mob("mobs_mc:villager", { mobs:spawn_specific( -"mobs_mc:villager", -"overworld", +"mobs_mc:villager", +"overworld", "ground", { "FlowerForest", @@ -1096,12 +1101,12 @@ mobs:spawn_specific( "ExtremeHillsM", "BirchForestM", }, -0, -minetest.LIGHT_MAX+1, -30, -20, -4, -mobs_mc.spawn_height.water+1, +0, +minetest.LIGHT_MAX+1, +30, +20, +4, +mobs_mc.spawn_height.water+1, mobs_mc.spawn_height.overworld_max) -- spawn eggs diff --git a/mods/ENTITIES/mobs_mc/villager_evoker.lua b/mods/ENTITIES/mobs_mc/villager_evoker.lua index abe0e9ca2..f87483e2b 100644 --- a/mods/ENTITIES/mobs_mc/villager_evoker.lua +++ b/mods/ENTITIES/mobs_mc/villager_evoker.lua @@ -12,6 +12,7 @@ local S = minetest.get_translator("mobs_mc") local pr = PseudoRandom(os.time()*666) mobs:register_mob("mobs_mc:evoker", { + description = S("Evoker"), type = "monster", spawn_class = "hostile", physical = true, @@ -34,7 +35,7 @@ mobs:register_mob("mobs_mc:evoker", { walk_velocity = 0.2, run_velocity = 1.4, group_attack = true, - attack_type = "dogfight", + attack_type = "punch", -- Summon vexes custom_attack = function(self, to_attack) local r = pr:next(2,4) diff --git a/mods/ENTITIES/mobs_mc/villager_illusioner.lua b/mods/ENTITIES/mobs_mc/villager_illusioner.lua index 0bbe2a5f6..46b8760a1 100644 --- a/mods/ENTITIES/mobs_mc/villager_illusioner.lua +++ b/mods/ENTITIES/mobs_mc/villager_illusioner.lua @@ -7,9 +7,10 @@ local S = minetest.get_translator("mobs_mc") local mod_bows = minetest.get_modpath("mcl_bows") ~= nil mobs:register_mob("mobs_mc:illusioner", { + description = S("Illusioner"), type = "monster", spawn_class = "hostile", - attack_type = "shoot", + attack_type = "projectile", shoot_interval = 2.5, shoot_offset = 1.5, arrow = "mcl_bows:arrow_entity", @@ -17,7 +18,7 @@ mobs:register_mob("mobs_mc:illusioner", { if mod_bows then -- 1-4 damage per arrow local dmg = math.random(1, 4) - mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg) + mobs.shoot_projectile_handling("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg) end end, hp_min = 32, diff --git a/mods/ENTITIES/mobs_mc/villager_vindicator.lua b/mods/ENTITIES/mobs_mc/villager_vindicator.lua index 56b295066..7df54ef58 100644 --- a/mods/ENTITIES/mobs_mc/villager_vindicator.lua +++ b/mods/ENTITIES/mobs_mc/villager_vindicator.lua @@ -11,6 +11,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:vindicator", { + description = S("Vindicator"), type = "monster", spawn_class = "hostile", physical = false, @@ -36,7 +37,7 @@ mobs:register_mob("mobs_mc:vindicator", { reach = 2, walk_velocity = 1.2, run_velocity = 2.4, - attack_type = "dogfight", + attack_type = "punch", drops = { {name = mobs_mc.items.emerald, chance = 1, diff --git a/mods/ENTITIES/mobs_mc/villager_zombie.lua b/mods/ENTITIES/mobs_mc/villager_zombie.lua index b90823629..450710c49 100644 --- a/mods/ENTITIES/mobs_mc/villager_zombie.lua +++ b/mods/ENTITIES/mobs_mc/villager_zombie.lua @@ -26,8 +26,12 @@ local professions = { } mobs:register_mob("mobs_mc:villager_zombie", { + description = S("Zombie Villager"), type = "monster", spawn_class = "hostile", + hostile = true, + rotate = 270, + eye_height = 1.65, hp_min = 20, hp_max = 20, xp_min = 5, @@ -50,8 +54,8 @@ mobs:register_mob("mobs_mc:villager_zombie", { damage = 3, reach = 2, walk_velocity = 1.2, - run_velocity = 2.4, - attack_type = "dogfight", + run_velocity = 3.5, + attack_type = "punch", group_attack = true, drops = { {name = mobs_mc.items.rotten_flesh, diff --git a/mods/ENTITIES/mobs_mc/witch.lua b/mods/ENTITIES/mobs_mc/witch.lua index f9f9b8d1f..0c72d0018 100644 --- a/mods/ENTITIES/mobs_mc/witch.lua +++ b/mods/ENTITIES/mobs_mc/witch.lua @@ -13,6 +13,7 @@ local S = minetest.get_translator("mobs_mc") mobs:register_mob("mobs_mc:witch", { + description = S("Witch"), type = "monster", spawn_class = "hostile", hp_min = 26, @@ -33,7 +34,7 @@ mobs:register_mob("mobs_mc:witch", { run_velocity = 2.4, pathfinding = 1, group_attack = true, - attack_type = "dogshoot", + attack_type = "projectile", arrow = "mobs_mc:potion_arrow", shoot_interval = 2.5, shoot_offset = 1, diff --git a/mods/ENTITIES/mobs_mc/wither.lua b/mods/ENTITIES/mobs_mc/wither.lua index 2d53cc547..7c9072f43 100644 --- a/mods/ENTITIES/mobs_mc/wither.lua +++ b/mods/ENTITIES/mobs_mc/wither.lua @@ -10,6 +10,7 @@ local S = minetest.get_translator("mobs_mc") --################### mobs:register_mob("mobs_mc:wither", { + description = S("Wither"), type = "monster", spawn_class = "hostile", hp_max = 300, @@ -52,7 +53,7 @@ mobs:register_mob("mobs_mc:wither", { }, lava_damage = 0, fire_damage = 0, - attack_type = "dogshoot", + attack_type = "projectile", explosion_strength = 8, dogshoot_stop = true, arrow = "mobs_mc:wither_skull", diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua index b1c077d46..89a4b4629 100644 --- a/mods/ENTITIES/mobs_mc/wolf.lua +++ b/mods/ENTITIES/mobs_mc/wolf.lua @@ -19,16 +19,35 @@ end -- Wolf local wolf = { + description = S("Wolf"), type = "animal", spawn_class = "passive", can_despawn = true, + neutral = true, hp_min = 8, hp_max = 8, xp_min = 1, xp_max = 3, + rotate = 270, passive = false, group_attack = true, - collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.84, 0.3}, + + --head code + has_head = false, + head_bone = "head", + + swap_y_with_x = false, + reverse_head_yaw = false, + + head_bone_pos_y = 3.6, + head_bone_pos_z = -0.6, + + head_height_offset = 1.0525, + head_direction_offset = 0.5, + head_pitch_modifier = 0, + --end head code + + collisionbox = {-0.3, -0.00, -0.3, 0.3, 0.85, 0.3}, visual = "mesh", mesh = "mobs_mc_wolf.b3d", textures = { @@ -52,7 +71,7 @@ local wolf = { run_velocity = 3, damage = 4, reach = 2, - attack_type = "dogfight", + attack_type = "punch", fear_height = 4, follow = mobs_mc.follow.wolf, on_rightclick = function(self, clicker) @@ -74,6 +93,7 @@ local wolf = { dog:set_yaw(yaw) ent = dog:get_luaentity() ent.owner = clicker:get_player_name() + ent.tamed = true -- cornfirm taming minetest.sound_play("mobs_mc_wolf_bark", {object=dog, max_hear_distance=16}, true) -- Replace wolf @@ -138,20 +158,32 @@ dog.owner = "" -- TODO: Start sitting by default dog.order = "roam" dog.owner_loyal = true -dog.follow_velocity = 3.2 +dog.follow_velocity = 3.2 -- Automatically teleport dog to owner dog.do_custom = mobs_mc.make_owner_teleport_function(12) -dog.follow = mobs_mc.follow.dog dog.attack_animals = nil dog.specific_attack = nil +dog.breed_distance = 1.5 +dog.baby_size = 0.5 +dog.follow_distance = 2 +dog.follow = "mcl_mobitems:beef" + dog.on_rightclick = function(self, clicker) local item = clicker:get_wielded_item() - if mobs:protect(self, clicker) then + --owner is broken for this + --attempt to enter breed state + if mobs.enter_breed_state(self,clicker) then return - elseif item:get_name() ~= "" and mobs:capture_mob(self, clicker, 0, 2, 80, false, nil) then + end + + --make baby grow faster + if self.baby then + mobs.make_baby_grow_faster(self,clicker) return - elseif is_food(item:get_name()) then + end + + if is_food(item:get_name()) then -- Feed to increase health local hp = self.health local hp_add = 0 @@ -254,12 +286,12 @@ mobs:spawn_specific( "ExtremeHillsM", "BirchForestM", }, -0, -minetest.LIGHT_MAX+1, -30, -9000, -7, -mobs_mc.spawn_height.water+3, +0, +minetest.LIGHT_MAX+1, +30, +9000, +7, +mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max) mobs:register_egg("mobs_mc:wolf", S("Wolf"), "mobs_mc_spawn_icon_wolf.png", 0) diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua index 1be47848b..7d0fb1491 100644 --- a/mods/ENTITIES/mobs_mc/zombie.lua +++ b/mods/ENTITIES/mobs_mc/zombie.lua @@ -46,8 +46,11 @@ table.insert(drops_zombie, { }) local zombie = { + description = S("Zombie"), type = "monster", spawn_class = "hostile", + hostile = true, + rotate = 270, hp_min = 20, hp_max = 20, xp_min = 5, @@ -73,8 +76,25 @@ local zombie = { damage = "mobs_mc_zombie_hurt", distance = 16, }, - walk_velocity = .8, - run_velocity = 1.6, + + --head code + has_head = false, + head_bone = "Head", + + swap_y_with_x = true, + reverse_head_yaw = true, + + head_bone_pos_y = 2.4, + head_bone_pos_z = 0, + + head_height_offset = 1.1, + head_direction_offset = 0, + head_pitch_modifier = 0, + --end head code + + eye_height = 1.65, + walk_velocity = 1, + run_velocity = 3.5, damage = 3, reach = 2, fear_height = 4, @@ -92,7 +112,8 @@ local zombie = { ignited_by_sunlight = true, sunlight_damage = 2, view_range = 16, - attack_type = "dogfight", + attack_type = "punch", + punch_timer_cooloff = 0.5, harmed_by_heal = true, } @@ -102,6 +123,7 @@ mobs:register_mob("mobs_mc:zombie", zombie) -- A smaller and more dangerous variant of the zombie local baby_zombie = table.copy(zombie) +baby_zombie.description = S("Baby Zombie") baby_zombie.collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25} baby_zombie.xp_min = 12 baby_zombie.xp_max = 12 @@ -115,6 +137,7 @@ mobs:register_mob("mobs_mc:baby_zombie", baby_zombie) -- Husk. -- Desert variant of the zombie local husk = table.copy(zombie) +husk.description = S("Husk") husk.textures = { { "mobs_mc_empty.png", -- armor @@ -132,6 +155,7 @@ mobs:register_mob("mobs_mc:husk", husk) -- Baby husk. -- A smaller and more dangerous variant of the husk local baby_husk = table.copy(husk) +baby_husk.description = S("Baby Husk") baby_husk.collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25} baby_husk.xp_min = 12 baby_husk.xp_max = 12 diff --git a/mods/ENTITIES/mobs_mc/zombiepig.lua b/mods/ENTITIES/mobs_mc/zombiepig.lua index ebd8ce485..72a19f413 100644 --- a/mods/ENTITIES/mobs_mc/zombiepig.lua +++ b/mods/ENTITIES/mobs_mc/zombiepig.lua @@ -11,16 +11,20 @@ local S = minetest.get_translator("mobs_mc") local pigman = { + description = S("Zombie Pigman"), -- type="animal", passive=false: This combination is needed for a neutral mob which becomes hostile, if attacked type = "animal", passive = false, + neutral = true, + rotate = 270, spawn_class = "passive", + hostile_cooldown = 15, --seconds hp_min = 20, hp_max = 20, xp_min = 6, xp_max = 6, armor = {undead = 90, fleshy = 90}, - attack_type = "dogfight", + attack_type = "punch", group_attack = { "mobs_mc:pigman", "mobs_mc:baby_pigman" }, damage = 9, reach = 2, @@ -40,6 +44,22 @@ local pigman = { damage = "mobs_mc_zombiepig_hurt", distance = 16, }, + + --head code + has_head = false, + head_bone = "head", + + swap_y_with_x = true, + reverse_head_yaw = true, + + head_bone_pos_y = 2.4, + head_bone_pos_z = 0, + + head_height_offset = 1.1, + head_direction_offset = 0, + head_pitch_modifier = 0, + --end head code + jump = true, makes_footstep_sound = true, walk_velocity = .8, @@ -94,6 +114,7 @@ mobs:register_mob("mobs_mc:pigman", pigman) -- A smaller and more dangerous variant of the pigman local baby_pigman = table.copy(pigman) +baby_pigman.description = S("Baby Zombie Pigman") baby_pigman.collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25} baby_pigman.xp_min = 13 baby_pigman.xp_max = 13 @@ -112,33 +133,33 @@ mobs:register_mob("mobs_mc:baby_pigman", baby_pigman) -- Regular spawning in the Nether mobs:spawn_specific( -"mobs_mc:pigman", -"nether", +"mobs_mc:pigman", +"nether", "ground", { "Nether" }, -0, +0, minetest.LIGHT_MAX+1, -30, -6000, -3, -mobs_mc.spawn_height.nether_min, +30, +6000, +3, +mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max) -- Baby zombie is 20 times less likely than regular zombies mobs:spawn_specific( -"mobs_mc:baby_pigman", -"nether", +"mobs_mc:baby_pigman", +"nether", "ground", { "Nether" -}, -0, -minetest.LIGHT_MAX+1, -30, -100000, -4, -mobs_mc.spawn_height.nether_min, +}, +0, +minetest.LIGHT_MAX+1, +30, +100000, +4, +mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max) -- Spawning in Nether portals in the Overworld diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index 345f733d5..4a58866f9 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -11,7 +11,6 @@ of the license, or (at your option) any later version. local S = minetest.get_translator("lightning") -local has_mcl_death_msg = minetest.get_modpath("mcl_death_messages") local get_connected_players = minetest.get_connected_players local line_of_sight = minetest.line_of_sight local get_node = minetest.get_node @@ -139,48 +138,39 @@ lightning.strike = function(pos) for o=1, #objs do local obj = objs[o] local lua = obj:get_luaentity() - if obj:is_player() then - -- Player damage - if has_mcl_death_msg then - mcl_death_messages.player_damage(obj, S("@1 was struck by lightning.", obj:get_player_name())) - end - obj:set_hp(obj:get_hp()-5, { type = "punch", from = "mod" }) - -- Mobs - elseif lua and lua._cmi_is_mob then - -- pig → zombie pigman (no damage) - if lua.name == "mobs_mc:pig" then - local rot = obj:get_yaw() - obj:remove() - obj = add_entity(pos2, "mobs_mc:pigman") - obj:set_yaw(rot) + -- pig → zombie pigman (no damage) + if lua and lua.name == "mobs_mc:pig" then + local rot = obj:get_yaw() + obj:remove() + obj = add_entity(pos2, "mobs_mc:pigman") + obj:set_yaw(rot) -- mooshroom: toggle color red/brown (no damage) - elseif lua.name == "mobs_mc:mooshroom" then - if lua.base_texture[1] == "mobs_mc_mooshroom.png" then - lua.base_texture = { "mobs_mc_mooshroom_brown.png", "mobs_mc_mushroom_brown.png" } - else - lua.base_texture = { "mobs_mc_mooshroom.png", "mobs_mc_mushroom_red.png" } - end - obj:set_properties({textures = lua.base_texture}) - -- villager → witch (no damage) - elseif lua.name == "mobs_mc:villager" then - -- Witches are incomplete, this code is unused - -- TODO: Enable this code when witches are working. - --[[ - local rot = obj:get_yaw() - obj:remove() - obj = minetest.add_entity(pos2, "mobs_mc:witch") - obj:set_yaw(rot) - ]] - -- charged creeper - elseif lua.name == "mobs_mc:creeper" then - local rot = obj:get_yaw() - obj:remove() - obj = add_entity(pos2, "mobs_mc:creeper_charged") - obj:set_yaw(rot) - -- Other mobs: Just damage + elseif lua and lua.name == "mobs_mc:mooshroom" then + if lua.base_texture[1] == "mobs_mc_mooshroom.png" then + lua.base_texture = { "mobs_mc_mooshroom_brown.png", "mobs_mc_mushroom_brown.png" } else - obj:set_hp(obj:get_hp()-5, { type = "punch", from = "mod" }) + lua.base_texture = { "mobs_mc_mooshroom.png", "mobs_mc_mushroom_red.png" } end + obj:set_properties({textures = lua.base_texture}) + -- villager → witch (no damage) + elseif lua and lua.name == "mobs_mc:villager" then + -- Witches are incomplete, this code is unused + -- TODO: Enable this code when witches are working. + --[[ + local rot = obj:get_yaw() + obj:remove() + obj = minetest.add_entity(pos2, "mobs_mc:witch") + obj:set_yaw(rot) + ]] + -- charged creeper + elseif lua and lua.name == "mobs_mc:creeper" then + local rot = obj:get_yaw() + obj:remove() + obj = add_entity(pos2, "mobs_mc:creeper_charged") + obj:set_yaw(rot) + -- Other objects: Just damage + else + mcl_util.deal_damage(obj, 5, {type = "lightning_bolt"}) end end diff --git a/mods/ENVIRONMENT/lightning/mod.conf b/mods/ENVIRONMENT/lightning/mod.conf index b0d756318..346a4a0b9 100644 --- a/mods/ENVIRONMENT/lightning/mod.conf +++ b/mods/ENVIRONMENT/lightning/mod.conf @@ -2,5 +2,4 @@ name = lightning author = sofar description = A mod that adds thunder and lightning effects. depends = mcl_fire -optional_depends = mcl_death_messages diff --git a/mods/ENVIRONMENT/mcl_void_damage/init.lua b/mods/ENVIRONMENT/mcl_void_damage/init.lua index ee40ed702..24f7d0e4b 100644 --- a/mods/ENVIRONMENT/mcl_void_damage/init.lua +++ b/mods/ENVIRONMENT/mcl_void_damage/init.lua @@ -5,7 +5,6 @@ local pos_to_dim = mcl_worlds.pos_to_dimension local dim_change = mcl_worlds.dimension_change local is_in_void = mcl_worlds.is_in_void local get_spawn_pos = mcl_spawn.get_player_spawn_pos -local death_msg = mcl_death_messages.player_damage local send_chat = minetest.chat_send_player local get_connected = minetest.get_connected_players @@ -40,7 +39,6 @@ minetest.register_on_mods_loaded(function() end self._void_timer = 0 - local pos = obj:get_pos() local void, void_deadly = is_in_void(pos) if void_deadly then local ent = obj:get_luaentity() @@ -80,8 +78,7 @@ minetest.register_globalstep(function(dtime) elseif enable_damage and not is_immortal then -- Damage enabled, not immortal: Deal void damage (4 HP / 0.5 seconds) if player:get_hp() > 0 then - death_msg(player, S("@1 fell into the endless void.", player:get_player_name())) - player:set_hp(player:get_hp() - VOID_DAMAGE) + mcl_util.deal_damage(player, VOID_DAMAGE, {type = "out_of_world"}) end end end diff --git a/mods/ENVIRONMENT/mcl_void_damage/mod.conf b/mods/ENVIRONMENT/mcl_void_damage/mod.conf index 3f34fa5a1..1358e5217 100644 --- a/mods/ENVIRONMENT/mcl_void_damage/mod.conf +++ b/mods/ENVIRONMENT/mcl_void_damage/mod.conf @@ -1,4 +1,4 @@ name = mcl_void_damage author = Wuzzy description = Deal damage to entities stuck in the deep void -depends = mcl_worlds, mcl_death_messages +depends = mcl_worlds diff --git a/mods/HELP/doc/doc/init.lua b/mods/HELP/doc/doc/init.lua index 9057cda8e..029914a53 100644 --- a/mods/HELP/doc/doc/init.lua +++ b/mods/HELP/doc/doc/init.lua @@ -35,10 +35,10 @@ doc.FORMSPEC.ENTRY_HEIGHT = doc.FORMSPEC.ENTRY_END_Y - doc.FORMSPEC.ENTRY_START_ -- Internal helper variables local DOC_INTRO = S("This is the help.") -local COLOR_NOT_VIEWED = mcl_colors.AQUA -local COLOR_VIEWED = mcl_colors.WHITE -local COLOR_HIDDEN = mcl_colors.GRAY -local COLOR_ERROR = mcl_colors.RED +local COLOR_NOT_VIEWED = "#00FFFF" -- cyan +local COLOR_VIEWED = "#FFFFFF" -- white +local COLOR_HIDDEN = "#999999" -- gray +local COLOR_ERROR = "#FF0000" -- red local CATEGORYFIELDSIZE = { WIDTH = math.ceil(doc.FORMSPEC.WIDTH / 4), @@ -770,7 +770,7 @@ function doc.generate_entry_list(cid, playername) if name == nil or name == "" then name = S("Nameless entry (@1)", eid) if doc.entry_viewed(playername, cid, eid) then - viewedprefix = mcl_colors.RED + viewedprefix = "#FF4444" else viewedprefix = COLOR_ERROR end diff --git a/mods/HELP/doc/doc/mod.conf b/mods/HELP/doc/doc/mod.conf index 54064551b..0f65ddff7 100644 --- a/mods/HELP/doc/doc/mod.conf +++ b/mods/HELP/doc/doc/mod.conf @@ -2,4 +2,3 @@ name = doc author = Wuzzy description = A simple in-game documentation system which enables mods to add help entries based on templates. optional_depends = unified_inventory, sfinv_buttons, central_message, inventory_plus -depends = mcl_colors diff --git a/mods/HELP/doc/doc_items/locale/doc_items.de.tr b/mods/HELP/doc/doc_items/locale/doc_items.de.tr index 90747c38a..f14c99314 100644 --- a/mods/HELP/doc/doc_items/locale/doc_items.de.tr +++ b/mods/HELP/doc/doc_items/locale/doc_items.de.tr @@ -10,9 +10,9 @@ # Itemname (ca. 25%) @1 (ca. @2%)=@1 (ca. @2%) # List separator (e.g. “one, two, three”) -, =, +, =, # Final list separator (e.g. “One, two and three”) - and = und + and = und 1 second=1 Sekunde A transparent block, basically empty space. It is usually left behind after digging something.=Ein transparenter Block, praktisch leerer Raum. Er wird üblicherweise hinterlassen, nachdem man etwas ausgegraben hat. Air=Luft @@ -32,7 +32,7 @@ Item reference of items which are neither blocks, tools or weapons (esp. craftin Liquids can flow into this block and destroy it.=Flüssigkeiten können in diesen Block hereinfließen und ihn zerstören. Maximum stack size: @1=Maximale Stapelgröße: @1 Mining level: @1=Grabestufe: @1 -Mining ratings:=Grabewertungen: +Mining ratings:=Grabewertungen: • @1, rating @2: @3 s - @4 s=• @1, Wertung @2: @3 s - @4 s • @1, rating @2: @3 s=• @1, Wertung @2: @3 s Mining times:=Grabezeiten: @@ -76,9 +76,8 @@ This block connects to these blocks: @1.=Dieser Block verbindet sich mit den fol This block connects to this block: @1.=Dieser Block verbindet sich mit diesem Block: @1. This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=Dieser Block reduziert Ihren Atem und verursacht beim Ertrinken einen Schaden von @1 Trefferpunkt alle 2 Sekunden. This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=Dieser Block reduziert Ihren Atem und verursacht beim Ertrinken einen Schaden von @1 Trefferpunkten alle 2 Sekunden. -This block glows faintly. It is barely noticable.=Dieser Block leuchtet schwach. Es ist kaum merklich. This block is a light source with a light level of @1.=Dieser Block ist eine Lichtquelle mit einer Helligkeitsstufe von @1. -This block glows faintly with a light level of @1.=Dieser Block leuchtet schwach mit einer Helligkeitsstufe von @1. +This block glows faintly with a light level of @1.=Dieser Block leuchtet schwach mit einer Helligkeitsstufe von @1. This block is a building block for creating various buildings.=Dieser Block ist für den Bau diverser Gebäude vorgesehen. This block is a liquid with these properties:=Dieser Block ist eine Flüssigkeit mit folgenden Eigenschaften: This block is affected by gravity and can fall.=Dieser Block wird von der Schwerkraft beeinflusst und kann fallen. diff --git a/mods/HELP/doc/doc_items/locale/template.txt b/mods/HELP/doc/doc_items/locale/template.txt index 484e40ec1..77f107863 100644 --- a/mods/HELP/doc/doc_items/locale/template.txt +++ b/mods/HELP/doc/doc_items/locale/template.txt @@ -2,7 +2,7 @@ Using it as fuel turns it into: @1.= @1 seconds= # Item count times item name -%@1×@2= +@1×@2= # Itemname (25%) @1 (@2%)= # Itemname (<0.5%) diff --git a/mods/HELP/mcl_craftguide/init.lua b/mods/HELP/mcl_craftguide/init.lua index e10513bc3..d05d8b3d0 100644 --- a/mods/HELP/mcl_craftguide/init.lua +++ b/mods/HELP/mcl_craftguide/init.lua @@ -667,7 +667,7 @@ local function make_formspec(name) fs[#fs + 1] = fmt("label[%f,%f;%s]", sfinv_only and 6.3 or data.iX - 2.2, 0.22, - ESC(colorize(mcl_colors.DARK_GRAY, fmt("%s / %u", data.pagenum, data.pagemax)))) + ESC(colorize("#383838", fmt("%s / %u", data.pagenum, data.pagemax)))) fs[#fs + 1] = fmt([[ image_button[%f,0.12;0.8,0.8;craftguide_prev_icon.png;prev;] diff --git a/mods/HUD/awards/api.lua b/mods/HUD/awards/api.lua index 6601dd626..d795f0dca 100644 --- a/mods/HUD/awards/api.lua +++ b/mods/HUD/awards/api.lua @@ -447,7 +447,7 @@ function awards.getFormspec(name, to, sid) first = false if def.secret and not award.got then - formspec = formspec .. mcl_colors.DARK_GRAY..minetest.formspec_escape(S("(Secret Award)")) + formspec = formspec .. "#707070" .. minetest.formspec_escape(S("(Secret Award)")) else local title = award.name if def and def.title then @@ -456,7 +456,7 @@ function awards.getFormspec(name, to, sid) if award.got then formspec = formspec .. minetest.formspec_escape(title) else - formspec = formspec .. mcl_colors.GRAY.. minetest.formspec_escape(title) + formspec = formspec .. "#ACACAC" .. minetest.formspec_escape(title) end end end diff --git a/mods/HUD/awards/locale/awards.de.tr b/mods/HUD/awards/locale/awards.de.tr index 2fb04c4ca..489a19683 100644 --- a/mods/HUD/awards/locale/awards.de.tr +++ b/mods/HUD/awards/locale/awards.de.tr @@ -1,7 +1,7 @@ # textdomain:awards @1: @2=@1: @2 @1 (got)=@1 (erhalten) -@1’s awards:=Auszeichnungen von @1: +@1’s awards:=Auszeichnungen von @: (Secret Award)=(Geheime Auszeichnung) Achievement gotten!=Auszeichnung erhalten! Achievement gotten:=Auszeichnung erhalten: @@ -27,7 +27,6 @@ Awards=Auszeichnungen @1/@2 deaths=@1/@2 Tode @1/@2 dug=@1/@2 abgebaut @1/@2 game joins=@1/@2 Spielen beigetreten -@1/@2 lines of chat=@1/@2 Chatzeilen @1/@2 placed=@1/@2 platziert Die @1 times.=Sterben Sie @1 mal. Die.=Sterben Sie. @@ -58,3 +57,7 @@ Invalid action.=Ungültige Aktion. Player is not online.=Spieler ist nicht online. Done.=Fertig. Achievement “@1” does not exist.=Auszeichnung »@1« existiert nicht. +@1 has made the achievement @2=@1 hat die Auszeichnung @2 erhalten +Write something in chat.=Schreiben Sie etwas in den Chat. +Write @1 chat messages.=Schreiben Sie @1 Chatnachrichten. +@1/@2 chat messages=@1/@2 Chatnachrichten diff --git a/mods/HUD/awards/locale/template.txt b/mods/HUD/awards/locale/template.txt index a1505b349..ac6a1d752 100644 --- a/mods/HUD/awards/locale/template.txt +++ b/mods/HUD/awards/locale/template.txt @@ -6,12 +6,11 @@ @1/@2 game joins= @1/@2 placed= @1 (got)= -@1: @1= +@1: @2= @1’s awards:= (Secret Award)= = = -A Cat in a Pop-Tart?!= Achievement gotten!= Achievement gotten:= Achievement gotten: @1= @@ -28,9 +27,9 @@ Join the game.= List awards in chat (deprecated)= Place a block: @1= Place blocks: @1×@2= -Secret Achievement gotten!= -Secret Achievement gotten:= -Secret Achievement gotten: @1= +Secret achievement gotten!= +Secret achievement gotten:= +Secret achievement gotten: @1= Show details of an achievement= Show, clear, disable or enable your achievements= Get this achievement to find out what it is.= @@ -60,3 +59,5 @@ Player is not online.= Done.= Achievement “@1” does not exist.= @1 has made the achievement @2= +Mine a block: @1= +Mine blocks: @1×@2= diff --git a/mods/HUD/mcl_base_textures/textures/object_crosshair.png b/mods/HUD/mcl_base_textures/textures/object_crosshair.png index e5a400e951b3fc543b6e2baf007c24f0949229cc..8e94dcc6bef47196a2f5cd93226eec0e8a8c3a24 100644 GIT binary patch delta 127 zcmV-_0D%9N0gwTZ7#5sS~n hdHXr`S=^4CVti5C-Fe3aGXZAE1oN2T+Fn0VqShfdOU^Tm-HLt_yAs n++?_2aNFVTfx8gl=Aj7ySBelSJ^?t;00000NkvXXu0mjfQ8q3K diff --git a/mods/HUD/mcl_death_messages/init.lua b/mods/HUD/mcl_death_messages/init.lua index 8ca686701..9087c41e9 100644 --- a/mods/HUD/mcl_death_messages/init.lua +++ b/mods/HUD/mcl_death_messages/init.lua @@ -1,307 +1,247 @@ local S = minetest.get_translator("mcl_death_messages") -local N = function(s) return s end -local C = minetest.colorize -local color_skyblue = mcl_colors.AQUA - -local function get_tool_name(item) - local name = item:get_meta():get_string("name") - if name ~= "" then - return name - end - local def = item:get_definition() - return def._tt_original_description or def.description - end - -mcl_death_messages = {} - --- Death messages -local msgs = { - ["arrow"] = { - N("@1 was fatally hit by an arrow."), - N("@1 has been killed by an arrow."), +mcl_death_messages = { + assist = {}, + messages = { + in_fire = { + _translator = S, + plain = "@1 went up in flames", + assist = "@1 walked into fire whilst fighting @2", + }, + lightning_bolt = { + _translator = S, + plain = "@1 was struck by lightning", + assist = "@1 was struck by lightning whilst fighting @2", + }, + on_fire = { + _translator = S, + plain = "@1 burned to death", + assist = "@1 was burnt to a crisp whilst fighting @2", + }, + lava = { + _translator = S, + plain = "@1 tried to swim in lava", + assist = "@1 tried to swim in lava to escape @2" + }, + hot_floor = { + _translator = S, + plain = "@1 discovered the floor was lava", + assist = "@1 walked into danger zone due to @2", + }, + in_wall = { + _translator = S, + plain = "@1 suffocated in a wall", + assist = "@1 suffocated in a wall whilst fighting @2", + }, + drown = { + _translator = S, + plain = "@1 drowned", + assist = "@1 drowned whilst trying to escape @2", + }, + starve = { + _translator = S, + plain = "@1 starved to death", + assist = "@1 starved to death whilst fighting @2", + }, + cactus = { + _translator = S, + plain = "@1 was pricked to death", + assist = "@1 walked into a cactus whilst trying to escape @2", + }, + fall = { + _translator = S, + plain = "@1 hit the ground too hard", + assist = "@1 hit the ground too hard whilst trying to escape @2", + -- "@1 fell from a high place" -- for fall distance > 5 blocks + -- "@1 fell while climbing" + -- "@1 fell off some twisting vines" + -- "@1 fell off some weeping vines" + -- "@1 fell off some vines" + -- "@1 fell off scaffolding" + -- "@1 fell off a ladder" + }, + fly_into_wall = { + _translator = S, + plain = "@1 experienced kinetic energy", + assist = "@1 experienced kinetic energy whilst trying to escape @2", + }, + out_of_world = { + _translator = S, + plain = "@1 fell out of the world", + assist = "@1 didn't want to live in the same world as @2", + }, + generic = { + _translator = S, + plain = "@1 died", + assist = "@1 died because of @2", + }, + magic = { + _translator = S, + plain = "@1 was killed by magic", + assist = "@1 was killed by magic whilst trying to escape @2", + killer = "@1 was killed by @2 using magic", + item = "@1 was killed by @2 using @3", + }, + dragon_breath = { + _translator = S, + plain = "@1 was roasted in dragon breath", + killer = "@1 was roasted in dragon breath by @2", + }, + wither = { + _translator = S, + plain = "@1 withered away", + escape = "@1 withered away whilst fighting @2", + }, + wither_skull = { + _translator = S, + plain = "@1 was killed by magic", + killer = "@1 was shot by a skull from @2", + }, + anvil = { + _translator = S, + plain = "@1 was squashed by a falling anvil", + escape = "@1 was squashed by a falling anvil whilst fighting @2", + }, + falling_node = { + _translator = S, + plain = "@1 was squashed by a falling block", + assist = "@1 was squashed by a falling block whilst fighting @2", + }, + mob = { + _translator = S, + killer = "@1 was slain by @2", + item = "@1 was slain by @2 using @3", + }, + player = { + _translator = S, + killer = "@1 was slain by @2", + item = "@1 was slain by @2 using @3" + }, + arrow = { + _translator = S, + killer = "@1 was shot by @2", + item = "@1 was shot by @2 using @3", + }, + fireball = { + _translator = S, + killer = "@1 was fireballed by @2", + item = "@1 was fireballed by @2 using @3", + }, + thorns = { + _translator = S, + killer = "@1 was killed trying to hurt @2", + item = "@1 was killed by @3 trying to hurt @2", -- yes, the order is intentional: @1 @3 @2 + }, + explosion = { + _translator = S, + plain = "@1 blew up", + killer = "@1 was blown up by @2", + item = "@1 was blown up by @2 using @3", + -- "@1 was killed by [Intentional Game Design]" -- for exploding bed in nether or end + }, + cramming = { + _translator = S, + plain = "@1 was squished too much", + assist = "@1 was squashed by @2", -- surprisingly "escape" is actually the correct subtype + }, + fireworks = { + _translator = S, + plain = "@1 went off with a bang", + item = "@1 went off with a bang due to a firework fired from @3 by @2", -- order is intentional + }, + -- Missing snowballs: The Minecraft wiki mentions them but the MC source code does not. }, - ["arrow_name"] = { - N("@1 was shot by @2 using [@3]"), - }, - ["arrow_skeleton"] = { - N("@1 was shot by Skeleton."), - }, - ["arrow_stray"] = { - N("@1 was shot by Stray."), - }, - ["arrow_illusioner"] = { - N("@1 was shot by Illusioner."), - }, - ["arrow_mob"] = { - N("@1 was shot."), - }, - ["drown"] = { - N("@1 forgot to breathe."), - N("@1 drowned."), - N("@1 ran out of oxygen."), - }, - ["murder"] = { - N("@1 was slain by @2 using [@3]"), - }, - ["murder_hand"] = { - N("@1 was slain by @2"), - }, - ["murder_any"] = { - N("@1 was killed."), - }, - ["mob_kill"] = { - N("@1 was slain by a mob."), - }, - ["blaze_fireball"] = { - N("@1 was burned to death by a Blaze's fireball."), - N("@1 was fireballed by a Blaze"), - }, - ["fire_charge"] = { - N("@1 was burned by a fire charge."), - }, - ["ghast_fireball"] = { - N("A Ghast scared @1 to death."), - N("@1 has been fireballed by a Ghast."), - }, - ["fall"] = { - N("@1 fell from a high cliff."), - N("@1 took fatal fall damage."), - N("@1 fell victim to gravity."), - N("@1 hit the ground too hard.") - }, - - ["other"] = { - N("@1 died."), - } } -local mobkills = { - ["mobs_mc:zombie"] = N("@1 was slain by Zombie."), - ["mobs_mc:baby_zombie"] = N("@1 was slain by Baby Zombie."), - ["mobs_mc:blaze"] = N("@1 was burnt to a crisp while fighting Blaze."), - ["mobs_mc:slime"] = N("@1 was slain by Slime."), - ["mobs_mc:witch"] = N("@1 was slain by Witch using magic."), - ["mobs_mc:magma_cube_tiny"] = N("@1 was slain by Magma Cube."), - ["mobs_mc:magma_cube_small"] = N("@1 was slain by Magma Cube."), - ["mobs_mc:magma_cube_big"] = N("@1 was slain by Magma Cube."), - ["mobs_mc:wolf"] = N("@1 was slain by Wolf."), - ["mobs_mc:cat"] = N("@1 was slain by Cat."), - ["mobs_mc:ocelot"] = N("@1 was slain by Ocelot."), - ["mobs_mc:enderdragon"] = N("@1 was slain by Enderdragon."), - ["mobs_mc:wither"] = N("@1 was slain by Wither."), - ["mobs_mc:enderman"] = N("@1 was slain by Enderman."), - ["mobs_mc:endermite"] = N("@1 was slain by Endermite."), - ["mobs_mc:ghast"] = N("@1 was fireballed by a Ghast."), - ["mobs_mc:guardian_elder"] = N("@1 was slain by Elder Guardian."), - ["mobs_mc:guardian"] = N("@1 was slain by Guardian."), - ["mobs_mc:iron_golem"] = N("@1 was slain by Iron Golem."), - ["mobs_mc:polar_bear"] = N("@1 was slain by Polar Bear."), - ["mobs_mc:killer_bunny"] = N("@1 was slain by Killer Bunny."), - ["mobs_mc:shulker"] = N("@1 was slain by Shulker."), - ["mobs_mc:silverfish"] = N("@1 was slain by Silverfish."), - ["mobs_mc:skeleton"] = N("@1 was shot by Skeleton."), - ["mobs_mc:stray"] = N("@1 was shot by Stray."), - ["mobs_mc:slime_tiny"] = N("@1 was slain by Slime."), - ["mobs_mc:slime_small"] = N("@1 was slain by Slime."), - ["mobs_mc:slime_big"] = N("@1 was slain by Slime."), - ["mobs_mc:spider"] = N("@1 was slain by Spider."), - ["mobs_mc:cave_spider"] = N("@1 was slain by Cave Spider."), - ["mobs_mc:vex"] = N("@1 was slain by Vex."), - ["mobs_mc:evoker"] = N("@1 was slain by Evoker."), - ["mobs_mc:illusioner"] = N("@1 was slain by Illusioner."), - ["mobs_mc:vindicator"] = N("@1 was slain by Vindicator."), - ["mobs_mc:villager_zombie"] = N("@1 was slain by Zombie Villager."), - ["mobs_mc:husk"] = N("@1 was slain by Husk."), - ["mobs_mc:baby_husk"] = N("@1 was slain by Baby Husk."), - ["mobs_mc:pigman"] = N("@1 was slain by Zombie Pigman."), - ["mobs_mc:baby_pigman"] = N("@1 was slain by Baby Zombie Pigman."), -} - --- Select death message -local dmsg = function(mtype, ...) - local r = math.random(1, #msgs[mtype]) - return S(msgs[mtype][r], ...) -end - --- Select death message for death by mob -local mmsg = function(mtype, ...) - if mobkills[mtype] then - return S(mobkills[mtype], ...) - else - return dmsg("mob_kill", ...) +local function get_item_killer_message(obj, messages, reason) + if messages.item then + local wielded = mcl_util.get_wielded_item(reason.source) + local itemname = wielded:get_meta():get_string("name") + if itemname ~= "" then + itemname = "[" .. itemname .. "]" + if mcl_enchanting.is_enchanted(wielded:get_name()) then + itemname = minetest.colorize(mcl_colors.AQUA, itemname) + end + return messages._translator(messages.item, mcl_util.get_object_name(obj), mcl_util.get_object_name(reason.source), itemname) + end end end -local last_damages = { } +local function get_plain_killer_message(obj, messages, reason) + return messages.killer and messages._translator(messages.killer, mcl_util.get_object_name(obj), mcl_util.get_object_name(reason.source)) +end -minetest.register_on_dieplayer(function(player, reason) - -- Death message - local message = minetest.settings:get_bool("mcl_showDeathMessages") --Maybe cache the setting? - if message == nil then - message = true +local function get_killer_message(obj, messages, reason) + return reason.source and (get_item_killer_message(obj, messages, reason) or get_plain_killer_message(obj, messages, reason)) +end + +local function get_assist_message(obj, messages, reason) + if messages.assist and mcl_death_messages.assist[obj] then + return messages._translator(messages.assist, mcl_util.get_object_name(obj), mcl_death_messages.assist[obj].name) end - if message then - local name = player:get_player_name() - if not name then - return - end - local msg - if last_damages[name] then - -- custom message - msg = last_damages[name].message - elseif reason.type == "node_damage" then - local pos = player:get_pos() - -- Check multiple nodes because players occupy multiple nodes - -- (we add one additional node because the check may fail if the player was - -- just barely touching the node with the head) - local posses = { pos, {x=pos.x,y=pos.y+1,z=pos.z}, {x=pos.x,y=pos.y+2,z=pos.z}} - local highest_damage = 0 - local highest_damage_def = nil - -- Show message for node that dealt the most damage - for p=1, #posses do - local def = minetest.registered_nodes[minetest.get_node(posses[p]).name] - local dmg = def.damage_per_second - if dmg and dmg > highest_damage then - highest_damage = dmg - highest_damage_def = def - end - end - if highest_damage_def and highest_damage_def._mcl_node_death_message then - local field = highest_damage_def._mcl_node_death_message - local field_msg - if type(field) == "table" then - field_msg = field[math.random(1, #field)] - else - field_msg = field - end - local textdomain - if highest_damage_def.mod_origin then - textdomain = highest_damage_def.mod_origin - else - textdomain = "mcl_death_messages" - end - -- We assume the textdomain of the death message in the node definition - -- equals the modname. - msg = minetest.translate(textdomain, field_msg, name) - end - elseif reason.type == "drown" then - msg = dmsg("drown", name) - elseif reason.type == "punch" then - -- Punches - local hitter = reason.object +end - -- Player was slain by potions - if not hitter then return end - - local hittername, hittertype, hittersubtype, shooter - local hitter_toolname = get_tool_name(hitter:get_wielded_item()) +local function get_plain_message(obj, messages, reason) + if messages.plain then + return messages._translator(messages.plain, mcl_util.get_object_name(obj)) + end +end - -- Custom message - if last_damages[name] then - msg = last_damages[name].message - -- Unknown hitter - elseif hitter == nil then - msg = dmsg("murder_any", name) - -- Player - elseif hitter:is_player() then - hittername = hitter:get_player_name() - if hittername ~= nil then - if hitter_toolname == "" then - msg = dmsg("murder_hand", name, hittername) - else - msg = dmsg("murder", name, hittername, C(color_skyblue, hitter_toolname)) - end - else - msg = dmsg("murder_any", name) - end - -- Mob (according to Common Mob Interface) - elseif hitter:get_luaentity()._cmi_is_mob then - if hitter:get_luaentity().nametag and hitter:get_luaentity().nametag ~= "" then - hittername = hitter:get_luaentity().nametag - end - hittersubtype = hitter:get_luaentity().name - if hittername then - msg = dmsg("murder", name, hittername) - elseif hittersubtype ~= nil and hittersubtype ~= "" then - msg = mmsg(hittersubtype, name) - else - msg = dmsg("murder_any", name) - end - -- Arrow - elseif hitter:get_luaentity().name == "mcl_bows:arrow_entity" or hitter:get_luaentity().name == "mobs_mc:arrow_entity" and not killed_by_potion then - local shooter - if hitter:get_luaentity()._shooter then - shooter = hitter:get_luaentity()._shooter - end - local is_mob = false - local s_ent = shooter and shooter:get_luaentity() - if shooter == nil then - msg = dmsg("arrow", name) - elseif shooter:is_player() then - msg = dmsg("arrow_name", name, shooter:get_player_name(), C(color_skyblue, get_tool_name(shooter:get_wielded_item()))) - elseif s_ent and s_ent._cmi_is_mob then - if s_ent.nametag ~= "" then - msg = dmsg("arrow_name", name, shooter:get_player_name(), get_tool_name(shooter:get_wielded_item())) - elseif s_ent.name == "mobs_mc:skeleton" then - msg = dmsg("arrow_skeleton", name) - elseif s_ent.name == "mobs_mc:stray" then - msg = dmsg("arrow_stray", name) - elseif s_ent.name == "mobs_mc:illusioner" then - msg = dmsg("arrow_illusioner", name) - else - msg = dmsg("arrow_mob", name) - end - else - msg = dmsg("arrow", name) - end - -- Blaze fireball - elseif hitter:get_luaentity().name == "mobs_mc:blaze_fireball" then - if hitter:get_luaentity()._shot_from_dispenser then - msg = dmsg("fire_charge", name) - else - msg = dmsg("blaze_fireball", name) - end - -- Ghast fireball - elseif hitter:get_luaentity().name == "mobs_monster:fireball" then - msg = dmsg("ghast_fireball", name) - end - -- Falling - elseif reason.type == "fall" then - msg = dmsg("fall", name) - -- Other - elseif reason.type == "set_hp" then - if last_damages[name] then - msg = last_damages[name].message - end +local function get_fallback_message(obj, messages, reason) + return "mcl_death_messages.messages." .. reason.type .. " " .. mcl_util.get_object_name(obj) +end + +local function fallback_translator(s) + return s +end + +mcl_damage.register_on_death(function(obj, reason) + if not minetest.settings:get_bool("mcl_showDeathMessages", true) then + return + end + + local send_to + + if obj:is_player() then + send_to = true + end -- ToDo: add mob death messages for owned mobs, only send to owner (sent_to = "player name") + + + if send_to then + local messages = mcl_death_messages.messages[reason.type] or {} + messages._translator = messages._translator or fallback_translator + + local message = + get_killer_message(obj, messages, reason) or + get_assist_message(obj, messages, reason) or + get_plain_message(obj, messages, reason) or + get_fallback_message(obj, messages, reason) + + if send_to == true then + minetest.chat_send_all(message) + else + minetest.chat_send_player(send_to, message) end - if not msg then - msg = dmsg("other", name) - end - minetest.chat_send_all(msg) - last_damages[name] = nil end end) --- dmg_sequence_number is used to discard old damage events -local dmg_sequence_number = 0 -local start_damage_reset_countdown = function (player, sequence_number) - minetest.after(1, function(playername, sequence_number) - if last_damages[playername] and last_damages[playername].sequence_number == sequence_number then - last_damages[playername] = nil +mcl_damage.register_on_damage(function(obj, damage, reason) + if obj:get_hp() - damage > 0 then + if reason.source then + mcl_death_messages.assist[obj] = {name = mcl_util.get_object_name(reason.source), timeout = 5} + else + mcl_death_messages.assist[obj] = nil end - end, player:get_player_name(), sequence_number) -end - --- Send a custom death mesage when damaging a player via set_hp or punch. --- To be called directly BEFORE damaging a player via set_hp or punch. --- The next time the player dies due to a set_hp, the message will be shown. --- The player must die via set_hp within 0.1 seconds, otherwise the message will be discarded. -function mcl_death_messages.player_damage(player, message) - last_damages[player:get_player_name()] = { message = message, sequence_number = dmg_sequence_number } - start_damage_reset_countdown(player, dmg_sequence_number) - dmg_sequence_number = dmg_sequence_number + 1 - if dmg_sequence_number >= 65535 then - dmg_sequence_number = 0 end -end \ No newline at end of file +end) + +minetest.register_globalstep(function(dtime) + local new_assist = {} + + for obj, tbl in pairs(mcl_death_messages.assist) do + tbl.timeout = tbl.timeout - dtime + if (obj:is_player() or obj:get_luaentity()) and tbl.timeout > 0 then + new_assist[obj] = tbl + end + end +end) diff --git a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr index ffb567b8b..39235dff7 100644 --- a/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr +++ b/mods/HUD/mcl_death_messages/locale/mcl_death_messages.de.tr @@ -1,59 +1,58 @@ # textdomain: mcl_death_messages -@1 was fatally hit by an arrow.=@1 wurde tödlich von einem Pfeil getroffen. -@1 has been killed by an arrow.=@1 wurde von einem Pfeil getötet. -@1 was shot by an arrow from @2.=@1 wurde mit einem Pfeil von @2 abgeschossen. -@1 was shot by an arrow from a skeleton.=@1 wurde von einem Skelett mit Pfeil und Bogen abgeschossen. -@1 was shot by an arrow from a stray.=@1 wurde von einem Eiswanderer mit Pfeil und Bogen abgeschossen. -@1 was shot by an arrow from an illusioner.=@1 wurde von einem Illusionisten mit Pfeil und Bogen abgeschossen. -@1 was shot by an arrow.=@1 wurde mit einem Pfeil abgeschossen. -@1 forgot to breathe.=@1 vergaß, zu atmen. -@1 drowned.=@1 ertrank. -@1 ran out of oxygen.=@1 ging die Luft aus. -@1 was killed by @2.=@1 wurde von @2 getötet. -@1 was killed.=@1 wurde getötet. -@1 was killed by a mob.=@1 wurde von einem Mob getötet. -@1 was burned to death by a blaze's fireball.=@1 wurde von einem Feuerball einer Lohe zu Tode verbrannt. -@1 was killed by a fireball from a blaze.=@1 wurde von einem Feuerball einer Lohe getötet. -@1 was burned by a fire charge.=@1 wurde von einer Feuerkugel verbrannt. -A ghast scared @1 to death.=Ein Ghast hat @1 zu Tode erschrocken. -@1 has been fireballed by a ghast.=@1 wurde von einem Ghast mit einer Feuerkugel abgeschossen. -@1 fell from a high cliff.=@1 stürzte von einer hohen Klippe. -@1 took fatal fall damage.=@1 nahm tödlichen Fallschaden. -@1 fell victim to gravity.=@1 fiel der Schwerkraft zum Opfer. -@1 died.=@1 starb. -@1 was killed by a zombie.=@1 wurde von einem Zombie getötet. -@1 was killed by a baby zombie.=@1 wurde von einem Zombiebaby getötet. -@1 was killed by a blaze.=@1 wurde von einer Lohe getötet. -@1 was killed by a slime.=@1 wurde von einem Schleim getötet. -@1 was killed by a witch.=@1 wurde von einer Hexe getötet. -@1 was killed by a magma cube.=@1 wurde von einem Magmakubus getötet. -@1 was killed by a wolf.=@1 wurde von einem Wolf getötet. -@1 was killed by a cat.=@1 wurde von einer Katze getötet. -@1 was killed by an ocelot.=@1 wurde von einem Ozelot getötet. -@1 was killed by an ender dragon.=@1 wurde von einem Enderdrachen getötet. -@1 was killed by a wither.=@1 wurde von einem Wither getötet. -@1 was killed by an enderman.=@1 wurde von einem Enderman getötet. -@1 was killed by an endermite.=@1 wurde von einer Endermilbe getötet. -@1 was killed by a ghast.=@1 wurde von einem Ghast getötet. -@1 was killed by an elder guardian.=@1 wurde von einem Großen Wächter getötet. -@1 was killed by a guardian.=@1 wurde von einem Wächter getötet. -@1 was killed by an iron golem.=@1 wurde von einem Eisengolem getötet. -@1 was killed by a polar_bear.=@1 wurde von einem Eisbären getötet. -@1 was killed by a killer bunny.=@1 wurde von einem Killerkaninchen getötet. -@1 was killed by a shulker.=@1 wurde von einem Schulker getötet. -@1 was killed by a silverfish.=@1 wurde von einem Silberfischchen getötet. -@1 was killed by a skeleton.=@1 wurde von einem Skelett getötet. -@1 was killed by a stray.=@1 wurde von einem Eiswanderer getötet. -@1 was killed by a slime.=@1 wurde von einem Schleim getötet. -@1 was killed by a spider.=@1 wurde von einer Spinne getötet. -@1 was killed by a cave spider.=@1 wurde von einer Höhlenspinne getötet. -@1 was killed by a vex.=@1 wurde von einem Plagegeist getötet. -@1 was killed by an evoker.=@1 wurde von einem Magier getötet. -@1 was killed by an illusioner.=@1 wurde von einem Illusionisten getötet. -@1 was killed by a vindicator.=@1 wurde von einem Diener getötet. -@1 was killed by a zombie villager.=@1 wurde von einem Dorfbewohnerzombie getötet. -@1 was killed by a husk.=@1 wurde von einem Wüstenzombie getötet. -@1 was killed by a baby husk.=@1 wurde von einem Wüstenzombiebaby getötet. -@1 was killed by a zombie pigman.=@1 wurde von einem Schweinezombie getötet. -@1 was killed by a baby zombie pigman.=@1 wurde von einem Schweinezombiebaby getötet. -@1 was slain by @2.= +@1 went up in flames=@1 ging in Flammen auf +@1 walked into fire whilst fighting @2=@1 ist während eines Kampfes mit @2 in ein Feuer gelaufen +@1 was struck by lightning=@1 wurde von einem Blitz erschlagen +@1 was struck by lightning whilst fighting @2=@1 wurde während eines Kampfes mit @2 von einem Blitz erschlagen +@1 burned to death=@1 ist verbrannt +@1 was burnt to a crisp whilst fighting @2=@1 ist während eines Kampfes mit @2 verbrannt +@1 tried to swim in lava=@1 hat versucht, in Lava zu schwimmen +@1 tried to swim in lava to escape @2=@1 hat versucht, in Lava zu schwimmen, um @2 zu entkommen +@1 discovered the floor was lava=@1 hat festgestellt, dass der Boden Lava ist +@1 walked into danger zone due to @2=@1 ist wegen @2 in eine Gefahrenzone gelaufen +@1 suffocated in a wall=@1 ist in einer Mauer erstickt +@1 suffocated in a wall whilst fighting @2=@1 ist während eines Kampfes mit @2 in einer Mauer erstickt +@1 drowned=@1 ist ertrunken +@1 drowned whilst trying to escape @2=@1 ist während dem Versuch, @2 zu entkommen, ertrunken +@1 starved to death=@1 ist verhungert +@1 starved to death whilst fighting @2=@1 ist während eines Kampfes mit @2 verhungert +@1 was pricked to death=@1 wurde zu Tode gestochen +@1 walked into a cactus whilst trying to escape @2=@1 ist während dem Versuch, @2 zu entkommen, in einen Kaktus gelaufen +@1 hit the ground too hard=@1 ist zu hart auf dem Boden aufgetroffen +@1 hit the ground too hard whilst trying to escape @2=@1 ist während dem Versuch, @2 zu entkommen, zu hart auf dem Boden aufgetroffen +@1 experienced kinetic energy=@1 hat kinetische Energie erfahren +@1 experienced kinetic energy whilst trying to escape @2=@1 hat während dem Versuch, @2 zu entkommen, kinetische Energie erfahren +@1 fell out of the world=@1 ist aus der Welt gefallen +@1 didn't want to live in the same world as @2=@1 wollte nicht in der gleichen Welt wie @2 leben +@1 died=@1 ist gestorben +@1 died because of @2=@1 ist wegen @2 gestorben +@1 was killed by magic=@1 wurde von Magie getötet +@1 was killed by magic whilst trying to escape @2=@1 wurde während dem Versuch, @2 zu entkommen, von Magie getötet +@1 was killed by @2 using magic=@1 wurde von @2 mit Magie getötet +@1 was killed by @2 using @3=@1 wurde von @2 mit @3 getötet +@1 was roasted in dragon breath=@1 wurde in Drachenatem geröstet +@1 was roasted in dragon breath by @2=@1 wurde in Drachenatem von @2 geröstet +@1 withered away=@1 ist davon gewithert +@1 withered away whilst fighting @2=@1 ist während einem Kampf mit @2 davon gewithert +@1 was killed by magic=@1 wurde von Magie getötet +@1 was shot by a skull from @2=@1 wurde von einem Schädel von @2 erschossen +@1 was squashed by a falling anvil=@1 wurde von einem fallenden Amboss erquetscht +@1 was squashed by a falling anvil whilst fighting @2=@1 wurde während einem Kampf mit @2 von einem fallenden Amboss erquetscht +@1 was squashed by a falling block=@1 wurde von einem fallenden Block erquetscht +@1 was squashed by a falling block whilst fighting @2=@1 wurde während einem Kampf mit @2 von einem fallenden Block erquetscht +@1 was slain by @2=@1 wurde von @2 erschlagen +@1 was slain by @2 using @3=@1 wurde von @2 mit @3 erschlagen +@1 was slain by @2=@1 wurde von @2 erschlagen +@1 was slain by @2 using @3=@1 wurde von @2 mit @3 erschlagen +@1 was shot by @2=@1 wurde von @2 erschossen +@1 was shot by @2 using @3=@1 wurde von @2 mit @3 erschossen +@1 was fireballed by @2=@1 wurde von @2 gefeuerballt +@1 was fireballed by @2 using @3=@1 wurde von @2 mit @3 gefeuerballt +@1 was killed trying to hurt @2=@1 ist bei dem Versuch, @2 zu verletzten gestorben +@1 was killed by @3 trying to hurt @2=@1 ist bei dem Versuch, @2 zu verletzten, von @3 getötet worden +@1 blew up=@1 ist gesprengt worden +@1 was blown up by @2=@1 wurde von @2 gesprengt +@1 was blown up by @2 using @3=@1 wurde von @2 mit @3 gesprengt +@1 was squished too much=@1 war zu gequetscht +@1 was squashed by @2=@1 wurde von @2 erquetscht +@1 went off with a bang=@1 ging mit einem Knall ab +@1 went off with a bang due to a firework fired from @3 by @2=@1 ging mit einem Knall wegen eines Feuerwerks, das mit @3 von @2 gefeuert wurde, ab diff --git a/mods/HUD/mcl_death_messages/locale/template.txt b/mods/HUD/mcl_death_messages/locale/template.txt index d1e3b832b..67ba9fd1c 100644 --- a/mods/HUD/mcl_death_messages/locale/template.txt +++ b/mods/HUD/mcl_death_messages/locale/template.txt @@ -1,59 +1,58 @@ # textdomain: mcl_death_messages -@1 was fatally hit by an arrow.= -@1 has been killed with an arrow.= -@1 was shot by an arrow from @2.= -@1 was shot by an arrow from a skeleton.= -@1 was shot by an arrow from a stray.= -@1 was shot by an arrow from an illusioner.= -@1 was shot by an arrow.= -@1 forgot to breathe.= -@1 drowned.= -@1 ran out of oxygen.= -@1 was killed by @2.= -@1 was killed.= -@1 was killed by a mob.= -@1 was burned to death by a blaze's fireball.= -@1 was killed by a fireball from a blaze.= -@1 was burned by a fire charge.= -A ghast scared @1 to death.= -@1 has been fireballed by a ghast.= -@1 fell from a high cliff.= -@1 took fatal fall damage.= -@1 fell victim to gravity.= -@1 died.= -@1 was killed by a zombie.= -@1 was killed by a baby zombie.= -@1 was killed by a blaze.= -@1 was killed by a slime.= -@1 was killed by a witch.= -@1 was killed by a magma cube.= -@1 was killed by a wolf.= -@1 was killed by a cat.= -@1 was killed by an ocelot.= -@1 was killed by an ender dragon.= -@1 was killed by a wither.= -@1 was killed by an enderman.= -@1 was killed by an endermite.= -@1 was killed by a ghast.= -@1 was killed by an elder guardian.= -@1 was killed by a guardian.= -@1 was killed by an iron golem.= -@1 was killed by a polar_bear.= -@1 was killed by a killer bunny.= -@1 was killed by a shulker.= -@1 was killed by a silverfish.= -@1 was killed by a skeleton.= -@1 was killed by a stray.= -@1 was killed by a slime.= -@1 was killed by a spider.= -@1 was killed by a cave spider.= -@1 was killed by a vex.= -@1 was killed by an evoker.= -@1 was killed by an illusioner.= -@1 was killed by a vindicator.= -@1 was killed by a zombie villager.= -@1 was killed by a husk.= -@1 was killed by a baby husk.= -@1 was killed by a zombie pigman.= -@1 was killed by a baby zombie pigman.= -@1 was slain by @2.= +@1 went up in flames= +@1 walked into fire whilst fighting @2= +@1 was struck by lightning= +@1 was struck by lightning whilst fighting @2= +@1 burned to death= +@1 was burnt to a crisp whilst fighting @2= +@1 tried to swim in lava= +@1 tried to swim in lava to escape @2= +@1 discovered the floor was lava= +@1 walked into danger zone due to @2= +@1 suffocated in a wall= +@1 suffocated in a wall whilst fighting @2= +@1 drowned= +@1 drowned whilst trying to escape @2= +@1 starved to death= +@1 starved to death whilst fighting @2= +@1 was pricked to death= +@1 walked into a cactus whilst trying to escape @2= +@1 hit the ground too hard= +@1 hit the ground too hard whilst trying to escape @2= +@1 experienced kinetic energy= +@1 experienced kinetic energy whilst trying to escape @2= +@1 fell out of the world= +@1 didn't want to live in the same world as @2= +@1 died= +@1 died because of @2= +@1 was killed by magic= +@1 was killed by magic whilst trying to escape @2= +@1 was killed by @2 using magic= +@1 was killed by @2 using @3= +@1 was roasted in dragon breath= +@1 was roasted in dragon breath by @2= +@1 withered away= +@1 withered away whilst fighting @2= +@1 was killed by magic= +@1 was shot by a skull from @2= +@1 was squashed by a falling anvil= +@1 was squashed by a falling anvil whilst fighting @2= +@1 was squashed by a falling block= +@1 was squashed by a falling block whilst fighting @2= +@1 was slain by @2= +@1 was slain by @2 using @3= +@1 was slain by @2= +@1 was slain by @2 using @3= +@1 was shot by @2= +@1 was shot by @2 using @3= +@1 was fireballed by @2= +@1 was fireballed by @2 using @3= +@1 was killed trying to hurt @2= +@1 was killed by @3 trying to hurt @2= +@1 blew up= +@1 was blown up by @2= +@1 was blown up by @2 using @3= +@1 was squished too much= +@1 was squashed by @2= +@1 went off with a bang= +@1 went off with a bang due to a firework fired from @3 by @2= diff --git a/mods/HUD/mcl_experience/init.lua b/mods/HUD/mcl_experience/init.lua index df733e138..fd78534fc 100644 --- a/mods/HUD/mcl_experience/init.lua +++ b/mods/HUD/mcl_experience/init.lua @@ -263,34 +263,7 @@ function mcl_experience.add_experience(player, experience) local can = final_candidates[math.random(#final_candidates)] local stack, list, index, wear = can.stack, can.list, can.index, can.wear local unbreaking_level = mcl_enchanting.get_enchantment(stack, "unbreaking") - local uses - local armor_uses = minetest.get_item_group(stack:get_name(), "mcl_armor_uses") - if armor_uses > 0 then - uses = armor_uses - if unbreaking_level > 0 then - uses = uses / (0.6 + 0.4 / (unbreaking_level + 1)) - end - else - local def = stack:get_definition() - if def then - local fixed_uses = def._mcl_uses - if fixed_uses then - uses = fixed_uses - if unbreaking_level > 0 then - uses = uses * (unbreaking_level + 1) - end - end - end - if not uses then - local toolcaps = stack:get_tool_capabilities() - local groupcaps = toolcaps.groupcaps - for _, v in pairs(groupcaps) do - uses = v.uses - break - end - end - end - uses = uses or 0 + local uses = mcl_util.calculate_durability(stack) local multiplier = 2 * 65535 / uses local repair = experience * multiplier local new_wear = wear - repair diff --git a/mods/HUD/mcl_hbarmor/init.lua b/mods/HUD/mcl_hbarmor/init.lua index 89b2db7a8..9e5aa634b 100644 --- a/mods/HUD/mcl_hbarmor/init.lua +++ b/mods/HUD/mcl_hbarmor/init.lua @@ -1,9 +1,5 @@ local S = minetest.get_translator("mcl_hbarmor") -if (not armor) or (not armor.def) then - minetest.log("error", "[mcl_hbarmor] Outdated mcl_armor version. Please update your version of mcl_armor!") -end - local mcl_hbarmor = {} -- HUD statbar values @@ -60,11 +56,8 @@ end hb.register_hudbar("armor", 0xFFFFFF, S("Armor"), { icon = "hbarmor_icon.png", bgicon = "hbarmor_bgicon.png", bar = "hbarmor_bar.png" }, 0, 0, 20, mcl_hbarmor.autohide) function mcl_hbarmor.get_armor(player) - if not player or not armor.def then - return false - end local name = player:get_player_name() - local pts = armor:get_armor_points(player) + local pts = player:get_meta():get_int("mcl_armor:armor_points") if not pts then return false else diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index a69fcef5b..61ba39b10 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -7,7 +7,6 @@ local players = {} -- Containing all the items for each Creative Mode tab local inventory_lists = {} -local show_armor = minetest.get_modpath("mcl_armor") ~= nil local mod_player = minetest.get_modpath("mcl_player") ~= nil -- Create tables @@ -334,23 +333,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz if minetest.settings:get_bool("3d_player_preview", true) then player_preview = mcl_player.get_player_formspec_model(player, 3.9, 1.4, 1.2333, 2.4666, "") else - local img, img_player - if mod_player then - img_player = mcl_player.player_get_preview(player) - else - img_player = "player.png" - end - img = img_player - player_preview = "image[3.9,1.4;1.2333,2.4666;"..img.."]" - if show_armor and armor.textures[playername] and armor.textures[playername].preview then - img = armor.textures[playername].preview - local s1 = img:find("character_preview") - if s1 ~= nil then - s1 = img:sub(s1+21) - img = img_player..s1 - end - player_preview = "image[3.9,1.4;1.2333,2.4666;"..img.."]" - end + player_preview = "image[3.9,1.4;1.2333,2.4666;"..mcl_player.player_get_preview(player).."]" end -- Background images for armor slots (hide if occupied) @@ -373,10 +356,10 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz main_list = "list[current_player;main;0,3.75;9,3;9]".. mcl_formspec.get_itemslot_bg(0,3.75,9,3).. -- armor - "list[detached:"..playername.."_armor;armor;2.5,1.3;1,1;1]".. - "list[detached:"..playername.."_armor;armor;2.5,2.75;1,1;2]".. - "list[detached:"..playername.."_armor;armor;5.5,1.3;1,1;3]".. - "list[detached:"..playername.."_armor;armor;5.5,2.75;1,1;4]".. + "list[current_player;armor;2.5,1.3;1,1;1]".. + "list[current_player;armor;2.5,2.75;1,1;2]".. + "list[current_player;armor;5.5,1.3;1,1;3]".. + "list[current_player;armor;5.5,2.75;1,1;4]".. mcl_formspec.get_itemslot_bg(2.5,1.3,1,1).. mcl_formspec.get_itemslot_bg(2.5,2.75,1,1).. mcl_formspec.get_itemslot_bg(5.5,1.3,1,1).. @@ -442,7 +425,7 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz end local caption = "" if name ~= "inv" and filtername[name] then - caption = "label[0,1.2;"..F(minetest.colorize(mcl_colors.DARK_GRAY, filtername[name])).."]" + caption = "label[0,1.2;"..F(minetest.colorize("#313131", filtername[name])).."]" end formspec = "size[10,9.3]".. diff --git a/mods/HUD/mcl_inventory/init.lua b/mods/HUD/mcl_inventory/init.lua index e9da9486e..1744ec089 100644 --- a/mods/HUD/mcl_inventory/init.lua +++ b/mods/HUD/mcl_inventory/init.lua @@ -3,7 +3,6 @@ local F = minetest.formspec_escape mcl_inventory = {} -local show_armor = minetest.get_modpath("mcl_armor") ~= nil local mod_player = minetest.get_modpath("mcl_player") ~= nil local mod_craftguide = minetest.get_modpath("mcl_craftguide") ~= nil @@ -68,23 +67,7 @@ local function set_inventory(player, armor_change_only) if minetest.settings:get_bool("3d_player_preview", true) then player_preview = mcl_player.get_player_formspec_model(player, 1.0, 0.0, 2.25, 4.5, "") else - local img, img_player - if mod_player then - img_player = mcl_player.player_get_preview(player) - else - img_player = "player.png" - end - img = img_player - player_preview = "image[0.6,0.2;2,4;"..img.."]" - if show_armor and armor.textures[player_name] and armor.textures[player_name].preview then - img = armor.textures[player_name].preview - local s1 = img:find("character_preview") - if s1 ~= nil then - s1 = img:sub(s1+21) - img = img_player..s1 - end - player_preview = "image[1.1,0.2;2,4;"..img.."]" - end + player_preview = "image[1.1,0.2;2,4;"..mcl_player.player_get_preview(player).."]" end local armor_slots = {"helmet", "chestplate", "leggings", "boots"} @@ -99,20 +82,20 @@ local function set_inventory(player, armor_change_only) "background[-0.19,-0.25;9.41,9.49;crafting_formspec_bg.png]".. player_preview.. --armor - "list[detached:"..player_name.."_armor;armor;0,0;1,1;1]".. - "list[detached:"..player_name.."_armor;armor;0,1;1,1;2]".. - "list[detached:"..player_name.."_armor;armor;0,2;1,1;3]".. - "list[detached:"..player_name.."_armor;armor;0,3;1,1;4]".. + "list[current_player;armor;0,0;1,1;1]".. + "list[current_player;armor;0,1;1,1;2]".. + "list[current_player;armor;0,2;1,1;3]".. + "list[current_player;armor;0,3;1,1;4]".. mcl_formspec.get_itemslot_bg(0,0,1,1).. mcl_formspec.get_itemslot_bg(0,1,1,1).. mcl_formspec.get_itemslot_bg(0,2,1,1).. mcl_formspec.get_itemslot_bg(0,3,1,1).. armor_slot_imgs.. -- craft and inventory - "label[0,4;"..F(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,4;"..F(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. - "label[4,0.5;"..F(minetest.colorize(mcl_colors.DARK_GRAY, S("Crafting"))).."]".. + "label[4,0.5;"..F(minetest.colorize("#313131", S("Crafting"))).."]".. "list[current_player;craft;4,1;2,2]".. "list[current_player;craftpreview;7,1.5;1,1;]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. @@ -133,10 +116,10 @@ local function set_inventory(player, armor_change_only) "tooltip[__mcl_achievements;"..F(S("Achievements")).."]".. -- for shortcuts "listring[current_player;main]".. - "listring[current_player;craft]".. - "listring[current_player;main]".. - "listring[detached:"..player_name.."_armor;armor]" - + "listring[current_player;armor]".. + "listring[current_player;main]" .. + "listring[current_player;craft]" .. + "listring[current_player;main]" player:set_inventory_formspec(form) end @@ -176,18 +159,10 @@ minetest.register_on_joinplayer(function(player) player:hud_set_hotbar_image("mcl_inventory_hotbar.png") player:hud_set_hotbar_selected_image("mcl_inventory_hotbar_selected.png") - if show_armor then - local set_player_armor_original = armor.set_player_armor - local update_inventory_original = armor.update_inventory - armor.set_player_armor = function(self, player) - set_player_armor_original(self, player) - end - armor.update_inventory = function(self, player) - update_inventory_original(self, player) - set_inventory(player, true) - end - armor:set_player_armor(player) - armor:update_inventory(player) + local old_update_player = mcl_armor.update_player + mcl_armor.update_player = function(player, info) + old_update_player(player, info) + set_inventory(player, true) end -- In Creative Mode, the initial inventory setup is handled in creative.lua diff --git a/mods/HUD/mcl_inventory/mod.conf b/mods/HUD/mcl_inventory/mod.conf index edd6343c7..fa6b2c2f4 100644 --- a/mods/HUD/mcl_inventory/mod.conf +++ b/mods/HUD/mcl_inventory/mod.conf @@ -1,6 +1,6 @@ name = mcl_inventory author = BlockMen description = Adds the player inventory and creative inventory. -depends = mcl_init, mcl_formspec, mcl_colors +depends = mcl_init, mcl_formspec optional_depends = mcl_player, _mcl_autogroup, mcl_armor, mcl_brewing, mcl_potions, mcl_enchanting diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 1fd63cb4d..02ed70aed 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -13,12 +13,12 @@ local S = minetest.get_translator("mcl_dispensers") local setup_dispenser = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.74,9,1).. - "label[3,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Dispenser"))).."]".. + "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dispenser"))).."]".. "list[current_name;main;3,0.5;3,3;]".. mcl_formspec.get_itemslot_bg(3,0.5,3,3).. "listring[current_name;main]".. @@ -136,94 +136,32 @@ local dispenserdef = { -- Hardcoded dispensions -- -- Armor, mob heads and pumpkins - if igroups.armor_head or igroups.armor_torso or igroups.armor_legs or igroups.armor_feet then - local armor_type, armor_slot - local armor_dispensed = false - if igroups.armor_head then - armor_type = "armor_head" - armor_slot = 2 - elseif igroups.armor_torso then - armor_type = "armor_torso" - armor_slot = 3 - elseif igroups.armor_legs then - armor_type = "armor_legs" - armor_slot = 4 - elseif igroups.armor_feet then - armor_type = "armor_feet" - armor_slot = 5 - end + if igroups.armor then + local droppos_below = {x = droppos.x, y = droppos.y - 1, z = droppos.z} - local droppos_below = {x=droppos.x, y=droppos.y-1, z=droppos.z} - local dropnode_below = minetest.get_node(droppos_below) - -- Put armor on player or armor stand - local standpos - if dropnode.name == "mcl_armor_stand:armor_stand" then - standpos = droppos - elseif dropnode_below.name == "mcl_armor_stand:armor_stand" then - standpos = droppos_below - end - if standpos then - local dropmeta = minetest.get_meta(standpos) - local dropinv = dropmeta:get_inventory() - if dropinv:room_for_item(armor_type, dropitem) then - dropinv:add_item(armor_type, dropitem) - minetest.registered_nodes["mcl_armor_stand:armor_stand"].on_metadata_inventory_put(standpos) - stack:take_item() - inv:set_stack("main", stack_id, stack) - armor:play_equip_sound(dropitem, nil, standpos) - armor_dispensed = true - end - else - -- Put armor on nearby player - -- First search for player in front of dispenser (check 2 nodes) - local objs1 = minetest.get_objects_inside_radius(droppos, 1) - local objs2 = minetest.get_objects_inside_radius(droppos_below, 1) - local objs_table = {objs1, objs2} - local player - for oi=1, #objs_table do - local objs_inner = objs_table[oi] - for o=1, #objs_inner do - --[[ First player in list is the lucky one. The other player get nothing :-( - If multiple players are close to the dispenser, it can be a bit - -- unpredictable on who gets the armor. ]] - if objs_inner[o]:is_player() then - player = objs_inner[o] - break - end - end - if player then + for _, objs in ipairs({minetest.get_objects_inside_radius(droppos, 1), minetest.get_objects_inside_radius(droppos_below, 1)}) do + for _, obj in ipairs(objs) do + stack = mcl_armor.equip(stack, obj) + if stack:is_empty() then break end end - -- If player found, add armor - if player then - local ainv = minetest.get_inventory({type="detached", name=player:get_player_name().."_armor"}) - local pinv = player:get_inventory() - if ainv:get_stack("armor", armor_slot):is_empty() and pinv:get_stack("armor", armor_slot):is_empty() then - ainv:set_stack("armor", armor_slot, dropitem) - pinv:set_stack("armor", armor_slot, dropitem) - armor:set_player_armor(player) - armor:update_inventory(player) - armor:play_equip_sound(dropitem, player) - - stack:take_item() - inv:set_stack("main", stack_id, stack) - armor_dispensed = true - end + if stack:is_empty() then + break end + end -- Place head or pumpkin as node, if equipping it as armor has failed - if not armor_dispensed then - if igroups.head or iname == "mcl_farming:pumpkin_face" then - if dropnodedef.buildable_to then - minetest.set_node(droppos, {name = iname, param2 = node.param2}) - stack:take_item() - inv:set_stack("main", stack_id, stack) - end + if not stack:is_empty() then + if igroups.head or iname == "mcl_farming:pumpkin_face" then + if dropnodedef.buildable_to then + minetest.set_node(droppos, {name = iname, param2 = node.param2}) + stack:take_item() end end end + inv:set_stack("main", stack_id, stack) -- Spawn Egg elseif igroups.spawn_egg then -- Spawn mob diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/mod.conf b/mods/ITEMS/REDSTONE/mcl_dispensers/mod.conf index ac1b56c7d..13cdb5f5a 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/mod.conf +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/mod.conf @@ -1,3 +1,3 @@ name = mcl_dispensers -depends = mcl_init, mcl_formspec, mesecons, mcl_sounds, mcl_tnt, mcl_worlds, mcl_core, mcl_nether, mcl_armor_stand, mcl_armor, mcl_colors +depends = mcl_init, mcl_formspec, mesecons, mcl_sounds, mcl_tnt, mcl_worlds, mcl_core, mcl_nether, mcl_armor_stand, mcl_armor optional_depends = doc, screwdriver diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index 0d41c3552..715a85f3d 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -14,12 +14,12 @@ local S = minetest.get_translator("mcl_droppers") local setup_dropper = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.74,9,1).. - "label[3,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Dropper"))).."]".. + "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dropper"))).."]".. "list[current_name;main;3,0.5;3,3;]".. mcl_formspec.get_itemslot_bg(3,0.5,3,3).. "listring[current_name;main]".. diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua index b41d9c2fe..1bf968a82 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init_new.lua @@ -15,10 +15,10 @@ local setup_dropper = function(pos) -- Set formspec and inventory local form = "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;crafting_inventory_9_slots.png]".. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. "list[current_player;main;0,7.74;9,1;]".. - "label[3,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Dropper"))).."]".. + "label[3,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Dropper"))).."]".. "list[current_name;main;3,0.5;3,3;]".. "listring[current_name;main]".. "listring[current_player;main]" diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/mod.conf b/mods/ITEMS/REDSTONE/mcl_droppers/mod.conf index b5cf8f0b7..bbb1c19f2 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/mod.conf +++ b/mods/ITEMS/REDSTONE/mcl_droppers/mod.conf @@ -1,3 +1,3 @@ name = mcl_droppers -depends = mcl_init, mcl_formspec, mesecons, mcl_util, mcl_colors +depends = mcl_init, mcl_formspec, mesecons, mcl_util optional_depends = doc, screwdriver diff --git a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua index a0ecf354d..92c809785 100644 --- a/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_walllever/init.lua @@ -37,7 +37,6 @@ minetest.register_node("mesecons_walllever:wall_lever_off", { wield_image = "jeija_wall_lever.png", paramtype = "light", paramtype2 = "facedir", - drawtype = "mesh", mesh = "jeija_wall_lever_off.obj", sunlight_propagates = true, walkable = false, diff --git a/mods/ITEMS/mcl_anvils/init.lua b/mods/ITEMS/mcl_anvils/init.lua index 1845ed776..c3c238e7f 100644 --- a/mods/ITEMS/mcl_anvils/init.lua +++ b/mods/ITEMS/mcl_anvils/init.lua @@ -16,7 +16,7 @@ local function get_anvil_formspec(set_name) end return "size[9,8.75]".. "background[-0.19,-0.25;9.41,9.49;mcl_anvils_inventory.png]".. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. @@ -27,7 +27,7 @@ local function get_anvil_formspec(set_name) mcl_formspec.get_itemslot_bg(4,2.5,1,1).. "list[context;output;8,2.5;1,1;]".. mcl_formspec.get_itemslot_bg(8,2.5,1,1).. - "label[3,0.1;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Repair and Name"))).."]".. + "label[3,0.1;"..minetest.formspec_escape(minetest.colorize("#313131", S("Repair and Name"))).."]".. "field[3.25,1;4,1;name;;"..minetest.formspec_escape(set_name).."]".. "field_close_on_enter[name;false]".. "button[7,0.7;2,1;name_button;"..minetest.formspec_escape(S("Set Name")).."]".. diff --git a/mods/ITEMS/mcl_anvils/mod.conf b/mods/ITEMS/mcl_anvils/mod.conf index cbb5dc223..cd4fa02a8 100644 --- a/mods/ITEMS/mcl_anvils/mod.conf +++ b/mods/ITEMS/mcl_anvils/mod.conf @@ -1,5 +1,5 @@ name = mcl_anvils author = Wuzzy description = Anvils mods for MCL2 -depends = mcl_init, mcl_formspec, mcl_sounds, tt, mcl_enchanting, mcl_colors +depends = mcl_init, mcl_formspec, mcl_sounds, tt, mcl_enchanting optional_depends = mcl_core, screwdriver diff --git a/mods/ITEMS/mcl_armor/api.lua b/mods/ITEMS/mcl_armor/api.lua new file mode 100644 index 000000000..d58b5e666 --- /dev/null +++ b/mods/ITEMS/mcl_armor/api.lua @@ -0,0 +1,268 @@ +function mcl_armor.play_equip_sound(stack, obj, pos, unequip) + local def = stack:get_definition() + local estr = "equip" + if unequip then + estr = "unequip" + end + local snd = def.sounds and def.sounds["_mcl_armor_" .. estr] + if not snd then + -- Fallback sound + snd = { name = "mcl_armor_" .. estr .. "_generic" } + end + if snd then + local dist = 8 + if pos then + dist = 16 + end + minetest.sound_play(snd, {object = obj, pos = pos, gain = 0.5, max_hear_distance = dist}, true) + end +end + +function mcl_armor.on_equip(itemstack, obj) + local def = itemstack:get_definition() + mcl_armor.play_equip_sound(itemstack, obj) + if def._on_equip then + def._on_equip(obj, itemstack) + end + mcl_armor.update(obj) +end + +function mcl_armor.on_unequip(itemstack, obj) + local def = itemstack:get_definition() + mcl_armor.play_equip_sound(itemstack, obj, nil, true) + if def._on_unequip then + def._on_unequip(obj, itemstack) + end + mcl_armor.update(obj) +end + +function mcl_armor.equip(itemstack, obj, swap) + local def = itemstack:get_definition() + + if not def then + return itemstack + end + + local inv = mcl_util.get_inventory(obj, true) + + if not inv or inv:get_size("armor") == 0 then + return itemstack + end + + local element = mcl_armor.elements[def._mcl_armor_element or ""] + + if element then + local old_stack = inv:get_stack("armor", element.index) + + if swap or old_stack:is_empty() then + local new_stack + + if swap then + new_stack = itemstack + itemstack = old_stack + else + new_stack = itemstack:take_item() + end + + inv:set_stack("armor", element.index, new_stack) + mcl_armor.on_equip(new_stack, obj) + end + end + + return itemstack +end + +function mcl_armor.equip_on_use(itemstack, player, pointed_thing) + if not player or not player:is_player() then + return itemstack + end + + local new_stack = mcl_util.call_on_rightclick(itemstack, player, pointed_thing) + if new_stack then + return new_stack + end + + return mcl_armor.equip(itemstack, player) +end + +function mcl_armor.register_set(def) + local modname = minetest.get_current_modname() + local S = minetest.get_translator(modname) + local descriptions = def.descriptions or {} + local groups = def.groups or {} + local on_equip_callbacks = def.on_equip_callbacks or {} + local on_unequip_callbacks = def.on_unequip_callbacks or {} + local on_break_callbacks = def.on_break_callbacks or {} + local textures = def.textures or {} + local previews = def.previews or {} + local durabilities = def.durabilities or {} + local element_groups = def.element_groups or {} + + for name, element in pairs(mcl_armor.elements) do + local itemname = element.name .. "_" .. def.name + local itemstring = modname .. ":" .. itemname + + local groups = table.copy(groups) + groups["armor_" .. name] = 1 + groups["combat_armor_" .. name] = 1 + groups.armor = 1 + groups.combat_armor = 1 + groups.mcl_armor_points = def.points[name] + groups.mcl_armor_toughness = def.toughness + groups.mcl_armor_uses = (durabilities[name] or math.floor(def.durability * element.durability)) + 1 + groups.enchantability = def.enchantability + + for k, v in pairs(element_groups) do + groups[k] = v + end + + minetest.register_tool(itemstring, { + description = S(def.description .. " " .. (descriptions[name] or element.description)), + _doc_items_longdesc = mcl_armor.longdesc, + _doc_items_usagehelp = mcl_armor.usage, + inventory_image = modname .. "_inv_" .. itemname .. ".png", + _repair_material = def.repair_material or def.craft_material, + groups = groups, + sounds = { + _mcl_armor_equip = def.sound_equip or modname .. "_equip_" .. def.name, + _mcl_armor_unequip = def.sound_unequip or modname .. "_unequip_" .. def.name, + }, + on_place = mcl_armor.equip_on_use, + on_secondary_use = mcl_armor.equip_on_use, + _on_equip = on_equip_callbacks[name] or def.on_equip, + _on_unequip = on_unequip_callbacks[name] or def.on_unequip, + _on_break = on_break_callbacks[name] or def.on_break, + _mcl_armor_element = name, + _mcl_armor_texture = textures[name] or modname .. "_" .. itemname .. ".png", + _mcl_armor_preview = previews[name] or modname .. "_" .. itemname .. "_preview.png", + }) + + if def.craft_material then + minetest.register_craft({ + output = itemstring, + recipe = element.craft(def.craft_material), + }) + end + + if def.cook_material then + minetest.register_craft({ + type = "cooking", + output = def.cook_material, + recipe = itemstring, + cooktime = 10, + }) + end + end +end + +mcl_armor.protection_enchantments = { + flags = {}, + types = {}, + wildcard = {}, +} + +function mcl_armor.register_protection_enchantment(def) + local prot_def = {id = def.id, factor = def.factor} + if def.damage_flag then + local tbl = mcl_armor.protection_enchantments.flags[def.damage_flag] or {} + table.insert(tbl, prot_def) + mcl_armor.protection_enchantments.flags = tbl + elseif def.damage_type then + local tbl = mcl_armor.protection_enchantments.types[def.damage_type] or {} + table.insert(tbl, prot_def) + mcl_armor.protection_enchantments.types = tbl + else + table.insert(mcl_armor.protection_enchantments.wildcard, prot_def) + end + mcl_enchanting.enchantments[def.id] = { + name = def.name, + max_level = def.max_level or 4, + primary = def.primary or {combat_armor = true}, + secondary = {}, + disallow = {}, + incompatible = def.incompatible or {}, + weight = def.weight or 5, + description = def.description, + curse = false, + on_enchant = function() end, + requires_tool = false, + treasure = def.treasure or false, + power_range_table = def.power_range_table, + inv_combat_tab = true, + inv_tool_tab = false, + } +end + +function mcl_armor.update(obj) + local info = {points = 0, view_range_factors = {}} + + local inv = mcl_util.get_inventory(obj) + + if inv then + for i = 2, 5 do + local itemstack = inv:get_stack("armor", i) + + local itemname = itemstack:get_name() + if minetest.registered_aliases[itemname] then + itemname = minetest.registered_aliases[itemname] + end + + if not itemstack:is_empty() then + local def = itemstack:get_definition() + + local texture = def._mcl_armor_texture + + if texture then + if type(texture) == "function" then + texture = texture(obj, itemstack) + end + if texture then + info.texture = "(" .. texture .. ")" .. (info.texture and "^" .. info.texture or "") + end + end + + local preview = def._mcl_armor_preview + + if obj:is_player() and preview then + if type(preview) == "function" then + preview = preview(obj, itemstack) + end + if preview then + info.preview = "(player.png^[opacity:0^" .. def._mcl_armor_preview .. ")" .. (info.preview and "^" .. info.preview or "" ) + end + end + + info.points = info.points + minetest.get_item_group(itemname, "mcl_armor_points") + + local mob_range_mob = def._mcl_armor_mob_range_mob + + if mob_range_mob then + local factor = info.view_range_factors[mob_range_mob] + + if factor then + if factor > 0 then + info.view_range_factors[mob_range_mob] = factor * def._mcl_armor_mob_range_factor + end + else + info.view_range_factors[mob_range_mob] = def._mcl_armor_mob_range_factor + end + end + end + end + end + + info.texture = info.texture or "blank.png" + + if obj:is_player() then + info.preview = info.preview or "blank.png" + + mcl_armor.update_player(obj, info) + else + local luaentity = obj:get_luaentity() + + if luaentity.update_armor then + luaentity:update_armor(info) + end + end +end + diff --git a/mods/ITEMS/mcl_armor/armor.lua b/mods/ITEMS/mcl_armor/armor.lua deleted file mode 100644 index a35841fe2..000000000 --- a/mods/ITEMS/mcl_armor/armor.lua +++ /dev/null @@ -1,675 +0,0 @@ -local ARMOR_INIT_DELAY = 1 -local ARMOR_INIT_TIMES = 1 -local ARMOR_BONES_DELAY = 1 - -local skin_mod = nil - -local modpath = minetest.get_modpath(minetest.get_current_modname()) - -armor = { - timer = 0, - elements = {"head", "torso", "legs", "feet"}, - physics = {"jump","speed","gravity"}, - formspec = "size[8,8.5]image[2,0.75;2,4;armor_preview]" - .."list[current_player;main;0,4.5;8,4;]" - .."list[current_player;craft;4,1;3,3;]" - .."list[current_player;craftpreview;7,2;1,1;]" - .."listring[current_player;main]" - .."listring[current_player;craft]", - textures = {}, - default_skin = "character", - last_damage_types = {}, -} - -if minetest.get_modpath("mcl_skins") then - skin_mod = "mcl_skins" -elseif minetest.get_modpath("skins") then - skin_mod = "skins" -elseif minetest.get_modpath("simple_skins") then - skin_mod = "simple_skins" -elseif minetest.get_modpath("u_skins") then - skin_mod = "u_skins" -elseif minetest.get_modpath("wardrobe") then - skin_mod = "wardrobe" -end - -function armor.on_armor_use(itemstack, user, pointed_thing) - if not user or user:is_player() == false then - return itemstack - end - - -- Call on_rightclick if the pointed node defines it - if pointed_thing.type == "node" then - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack - end - end - end - - local name, player_inv, armor_inv = armor:get_valid_player(user, "[on_armor_use]") - if not name then - return itemstack - end - - local def = itemstack:get_definition() - local slot - if def.groups and def.groups.armor_head then - slot = 2 - elseif def.groups and def.groups.armor_torso then - slot = 3 - elseif def.groups and def.groups.armor_legs then - slot = 4 - elseif def.groups and def.groups.armor_feet then - slot = 5 - end - - if slot then - local itemstack_single = ItemStack(itemstack) - itemstack_single:set_count(1) - local itemstack_slot = armor_inv:get_stack("armor", slot) - if itemstack_slot:is_empty() then - armor_inv:set_stack("armor", slot, itemstack_single) - player_inv:set_stack("armor", slot, itemstack_single) - armor:set_player_armor(user) - armor:update_inventory(user) - armor:play_equip_sound(itemstack_single, user) - itemstack:take_item() - elseif itemstack:get_count() <= 1 and not mcl_enchanting.has_enchantment(itemstack_slot, "curse_of_binding") then - armor_inv:set_stack("armor", slot, itemstack_single) - player_inv:set_stack("armor", slot, itemstack_single) - armor:set_player_armor(user) - armor:update_inventory(user) - armor:play_equip_sound(itemstack_single, user) - itemstack = ItemStack(itemstack_slot) - end - end - - return itemstack -end - -armor.def = { - count = 0, -} - -armor.update_player_visuals = function(self, player) - if not player then - return - end - - local wielditem = player:get_wielded_item() - local def = wielditem:get_definition() - if def and def._mcl_toollike_wield then - player:set_bone_position("Wield_Item", vector.new(0,3.9,1.3), vector.new(90,0,0)) - elseif string.find(wielditem:get_name(), "mcl_bows:bow") then - player:set_bone_position("Wield_Item", vector.new(.5,4.5,-1.6), vector.new(90,0,20)) - else - player:set_bone_position("Wield_Item", vector.new(-1.5,4.9,1.8), vector.new(135,0,90)) - end - - local name = player:get_player_name() - if self.textures[name] then - mcl_player.player_set_textures(player, { - self.textures[name].skin, - self.textures[name].armor, - self.textures[name].wielditem, - }) - end -end - -armor.set_player_armor = function(self, player) - local name, player_inv = armor:get_valid_player(player, "[set_player_armor]") - if not name then - return - end - local armor_texture = "blank.png" - local armor_level = 0 - local mcl_armor_points = 0 - local items = 0 - local elements = {} - local textures = {} - local physics_o = {speed=1,gravity=1,jump=1} - local material = {type=nil, count=1} - local preview - for _,v in ipairs(self.elements) do - elements[v] = false - end - for i=1, 6 do - local stack = player_inv:get_stack("armor", i) - local item = stack:get_name() - if minetest.registered_aliases[item] then - item = minetest.registered_aliases[item] - end - if stack:get_count() == 1 then - local def = stack:get_definition() - for k, v in pairs(elements) do - if v == false then - local level = def.groups["armor_"..k] - if level then - local texture = def.texture or item:gsub("%:", "_") - local enchanted_addition = (mcl_enchanting.is_enchanted(item) and mcl_enchanting.overlay or "") - table.insert(textures, "("..texture..".png"..enchanted_addition..")") - preview = "(player.png^[opacity:0^"..texture.."_preview.png"..enchanted_addition..")"..(preview and "^"..preview or "") - armor_level = armor_level + level - items = items + 1 - mcl_armor_points = mcl_armor_points + (def.groups["mcl_armor_points"] or 0) - for kk,vv in ipairs(self.physics) do - local o_value = def.groups["physics_"..vv] - if o_value then - physics_o[vv] = physics_o[vv] + o_value - end - end - local mat = string.match(item, "%:.+_(.+)$") - if material.type then - if material.type == mat then - material.count = material.count + 1 - end - else - material.type = mat - end - elements[k] = true - end - end - end - end - end - preview = (armor:get_preview(name) or "character_preview.png")..(preview and "^"..preview or "") - if minetest.get_modpath("shields") then - armor_level = armor_level * 0.9 - end - if material.type and material.count == #self.elements then - armor_level = armor_level * 1.1 - end - if #textures > 0 then - armor_texture = table.concat(textures, "^") - end - local armor_groups = player:get_armor_groups() - armor_groups.fleshy = 100 - armor_groups.level = nil - if armor_level > 0 then - armor_groups.level = math.floor(armor_level / 20) - armor_groups.fleshy = 100 - armor_level - end - player:set_armor_groups(armor_groups) - -- Physics override intentionally removed because of possible conflicts - self.textures[name].armor = armor_texture - self.textures[name].preview = preview - self.def[name].count = items - self.def[name].level = armor_level - self.def[name].heal = mcl_armor_points - self.def[name].jump = physics_o.jump - self.def[name].speed = physics_o.speed - self.def[name].gravity = physics_o.gravity - self:update_player_visuals(player) -end - -armor.update_armor = function(self, player) - -- Legacy support: Called when armor levels are changed - -- Other mods can hook on to this function, see hud mod for example -end - -armor.get_armor_points = function(self, player) - local name, player_inv, armor_inv = armor:get_valid_player(player, "[get_armor_points]") - if not name then - return nil - end - local pts = 0 - for i=1, 6 do - local stack = player_inv:get_stack("armor", i) - if stack:get_count() > 0 then - local p = minetest.get_item_group(stack:get_name(), "mcl_armor_points") - if p then - pts = pts + p - end - end - end - return pts -end - --- Returns a change factor for a mob's view_range for the given player --- or nil, if there's no change. Certain armors (like mob heads) can --- affect the view range of mobs. -armor.get_mob_view_range_factor = function(self, player, mob) - local name, player_inv, armor_inv = armor:get_valid_player(player, "[get_mob_view_range_factor]") - if not name then - return - end - local factor - for i=1, 6 do - local stack = player_inv:get_stack("armor", i) - if stack:get_count() > 0 then - local def = stack:get_definition() - if def._mcl_armor_mob_range_mob == mob then - if not factor then - factor = def._mcl_armor_mob_range_factor - elseif factor == 0 then - return 0 - else - factor = factor * def._mcl_armor_mob_range_factor - end - end - end - end - return factor -end - -armor.get_player_skin = function(self, name) - local skin = nil - if skin_mod == "mcl_skins" then - skin = mcl_skins.skins[name] - elseif skin_mod == "skins" or skin_mod == "simple_skins" then - skin = skins.skins[name] - elseif skin_mod == "u_skins" then - skin = u_skins.u_skins[name] - elseif skin_mod == "wardrobe" then - skin = string.gsub(wardrobe.playerSkins[name], "%.png$","") - end - return skin or armor.default_skin -end - -armor.get_preview = function(self, name) - if skin_mod == "skins" then - return armor:get_player_skin(name).."_preview.png" - end -end - -armor.get_armor_formspec = function(self, name) - if not armor.textures[name] then - minetest.log("error", "mcl_armor: Player texture["..name.."] is nil [get_armor_formspec]") - return "" - end - if not armor.def[name] then - minetest.log("error", "mcl_armor: Armor def["..name.."] is nil [get_armor_formspec]") - return "" - end - local formspec = armor.formspec.."list[detached:"..name.."_armor;armor;0,1;2,3;]" - formspec = formspec:gsub("armor_preview", armor.textures[name].preview) - formspec = formspec:gsub("armor_level", armor.def[name].level) - formspec = formspec:gsub("mcl_armor_points", armor.def[name].heal) - return formspec -end - -armor.update_inventory = function(self, player) -end - -armor.get_valid_player = function(self, player, msg) - msg = msg or "" - if not player then - minetest.log("error", "mcl_armor: Player reference is nil "..msg) - return - end - local name = player:get_player_name() - if not name then - minetest.log("error", "mcl_armor: Player name is nil "..msg) - return - end - local pos = player:get_pos() - local player_inv = player:get_inventory() - local armor_inv = minetest.get_inventory({type="detached", name=name.."_armor"}) - if not pos then - minetest.log("error", "mcl_armor: Player position is nil "..msg) - return - elseif not player_inv then - minetest.log("error", "mcl_armor: Player inventory is nil "..msg) - return - elseif not armor_inv then - minetest.log("error", "mcl_armor: Detached armor inventory is nil "..msg) - return - end - return name, player_inv, armor_inv, pos -end - -armor.play_equip_sound = function(self, stack, player, pos, unequip) - local def = stack:get_definition() - local estr = "equip" - if unequip then - estr = "unequip" - end - local snd = def.sounds and def.sounds["_mcl_armor_"..estr] - if not snd then - -- Fallback sound - snd = { name = "mcl_armor_"..estr.."_generic" } - end - if snd then - local dist = 8 - if pos then - dist = 16 - end - minetest.sound_play(snd, {object=player, pos=pos, gain=0.5, max_hear_distance=dist}, true) - end -end - --- Register Player Model - -mcl_player.player_register_model("mcl_armor_character.b3d", { - animation_speed = 30, - textures = { - armor.default_skin..".png", - "blank.png", - "blank.png", - }, - animations = { - stand = {x=0, y=79}, - lay = {x=162, y=166}, - walk = {x=168, y=187}, - mine = {x=189, y=198}, - walk_mine = {x=200, y=219}, - sit = {x=81, y=160}, - sneak_stand = {x=222, y=302}, - sneak_mine = {x=346, y=365}, - sneak_walk = {x=304, y=323}, - sneak_walk_mine = {x=325, y=344}, - swim_walk = {x=368, y=387}, - swim_walk_mine = {x=389, y=408}, - swim_stand = {x=434, y=434}, - swim_mine = {x=411, y=430}, - run_walk = {x=440, y=459}, - run_walk_mine = {x=461, y=480}, - sit_mount = {x=484, y=484}, - die = {x=498, y=498}, - fly = {x=502, y=581}, - }, -}) - -mcl_player.player_register_model("mcl_armor_character_female.b3d", { - animation_speed = 30, - textures = { - armor.default_skin..".png", - "blank.png", - "blank.png", - }, - animations = { - stand = {x=0, y=79}, - lay = {x=162, y=166}, - walk = {x=168, y=187}, - mine = {x=189, y=198}, - walk_mine = {x=200, y=219}, - sit = {x=81, y=160}, - sneak_stand = {x=222, y=302}, - sneak_mine = {x=346, y=365}, - sneak_walk = {x=304, y=323}, - sneak_walk_mine = {x=325, y=344}, - swim_walk = {x=368, y=387}, - swim_walk_mine = {x=389, y=408}, - swim_stand = {x=434, y=434}, - swim_mine = {x=411, y=430}, - run_walk = {x=440, y=459}, - run_walk_mine = {x=461, y=480}, - sit_mount = {x=484, y=484}, - die = {x=498, y=498}, - fly = {x=502, y=581}, - }, -}) - --- Register Callbacks - -minetest.register_on_player_receive_fields(function(player, formname, fields) - local name = armor:get_valid_player(player, "[on_player_receive_fields]") - if not name then - return - end - if fields.armor then - return - end - for field, _ in pairs(fields) do - if string.find(field, "skins_set") then - minetest.after(0, function(name) - local player = minetest.get_player_by_name(name) - if not player then - return - end - local skin = armor:get_player_skin(name) - armor.textures[name].skin = skin..".png" - armor:set_player_armor(player) - end, player:get_player_name()) - end - end -end) - -minetest.register_on_joinplayer(function(player) - mcl_player.player_set_model(player, "mcl_armor_character.b3d") - local name = player:get_player_name() - local player_inv = player:get_inventory() - local armor_inv = minetest.create_detached_inventory(name.."_armor", { - on_put = function(inv, listname, index, stack, player) - player:get_inventory():set_stack(listname, index, stack) - armor:set_player_armor(player) - armor:update_inventory(player) - armor:play_equip_sound(stack, player) - end, - on_take = function(inv, listname, index, stack, player) - player:get_inventory():set_stack(listname, index, nil) - armor:set_player_armor(player) - armor:update_inventory(player) - armor:play_equip_sound(stack, player, nil, true) - end, - on_move = function(inv, from_list, from_index, to_list, to_index, count, player) - local plaver_inv = player:get_inventory() - local stack = inv:get_stack(to_list, to_index) - player_inv:set_stack(to_list, to_index, stack) - player_inv:set_stack(from_list, from_index, nil) - armor:set_player_armor(player) - armor:update_inventory(player) - armor:play_equip_sound(stack, player) - end, - allow_put = function(inv, listname, index, stack, player) - local iname = stack:get_name() - local g - local groupcheck - if index == 2 then - g = minetest.get_item_group(iname, "armor_head") - elseif index == 3 then - g = minetest.get_item_group(iname, "armor_torso") - elseif index == 4 then - g = minetest.get_item_group(iname, "armor_legs") - elseif index == 5 then - g = minetest.get_item_group(iname, "armor_feet") - end - -- Minor FIXME: If player attempts to place stack into occupied slot, this is rejected. - -- It would be better if 1 item is placed in exchanged for the item in the slot. - if g ~= 0 and g ~= nil and (inv:get_stack(listname, index):is_empty() or (inv:get_stack(listname, index):get_name() ~= stack:get_name()) and stack:get_count() <= 1) then - return 1 - else - return 0 - end - end, - allow_take = function(inv, listname, index, stack, player) - if mcl_enchanting.has_enchantment(stack, "curse_of_binding") and not minetest.settings:get_bool("creative") then - return 0 - end - return stack:get_count() - end, - allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) - return 0 - end, - }, name) - armor_inv:set_size("armor", 6) - player_inv:set_size("armor", 6) - for i=1, 6 do - local stack = player_inv:get_stack("armor", i) - armor_inv:set_stack("armor", i, stack) - end - armor.def[name] = { - count = 0, - level = 0, - heal = 0, - jump = 1, - speed = 1, - gravity = 1, - } - armor.textures[name] = { - skin = armor.default_skin..".png", - armor = "blank.png", - wielditem = "blank.png", - preview = armor.default_skin.."_preview.png", - } - if skin_mod == "mcl_skins" then - local skin = mcl_skins.skins[name] - if skin then - armor.textures[name].skin = skin..".png" - end - elseif skin_mod == "skins" then - local skin = skins.skins[name] - if skin and skins.get_type(skin) == skins.type.MODEL then - armor.textures[name].skin = skin..".png" - end - elseif skin_mod == "simple_skins" then - local skin = skins.skins[name] - if skin then - armor.textures[name].skin = skin..".png" - end - elseif skin_mod == "u_skins" then - local skin = u_skins.u_skins[name] - if skin and u_skins.get_type(skin) == u_skins.type.MODEL then - armor.textures[name].skin = skin..".png" - end - elseif skin_mod == "wardrobe" then - local skin = wardrobe.playerSkins[name] - if skin then - armor.textures[name].skin = skin - end - end - if minetest.get_modpath("player_textures") then - local filename = minetest.get_modpath("player_textures").."/textures/player_"..name - local f = io.open(filename..".png") - if f then - f:close() - armor.textures[name].skin = "player_"..name..".png" - end - end - for i=1, ARMOR_INIT_TIMES do - minetest.after(ARMOR_INIT_DELAY * i, function(name) - local player = minetest.get_player_by_name(name) - if not player then - return - end - armor:set_player_armor(player) - end, player:get_player_name()) - end -end) - -minetest.register_on_player_hpchange(function(player, hp_change, reason) - local name, player_inv, armor_inv = armor:get_valid_player(player, "[on_hpchange]") - if name and hp_change < 0 then - local damage_type = armor.last_damage_types[name] - armor.last_damage_types[name] = nil - - -- Armor doesn't protect from set_hp (commands like /kill), - if reason.type == "set_hp" then - return hp_change - end - - local regular_reduction = reason.type ~= "drown" and reason.type ~= "fall" and reason.other ~= "harming" and reason.other ~= "poison" - - local heal_max = 0 - local items = 0 - local armor_damage = math.max(1, math.floor(math.abs(hp_change)/4)) - - local total_points = 0 - local total_toughness = 0 - local epf = 0 - local thorns_damage = 0 - local thorns_damage_regular = 0 - for i=1, 6 do - local stack = player_inv:get_stack("armor", i) - if stack:get_count() > 0 then - local enchantments = mcl_enchanting.get_enchantments(stack) - local pts = stack:get_definition().groups["mcl_armor_points"] or 0 - local tough = stack:get_definition().groups["mcl_armor_toughness"] or 0 - total_points = total_points + pts - total_toughness = total_toughness + tough - - local protection_level = enchantments.protection or 0 - if protection_level > 0 then - epf = epf + protection_level * 1 - end - local blast_protection_level = enchantments.blast_protection or 0 - if blast_protection_level > 0 and damage_type == "explosion" then - epf = epf + blast_protection_level * 2 - end - local fire_protection_level = enchantments.fire_protection or 0 - if fire_protection_level > 0 and (damage_type == "burning" or damage_type == "fireball" or reason.type == "node_damage" and - (reason.node == "mcl_fire:fire" or reason.node == "mcl_core:lava_source" or reason.node == "mcl_core:lava_flowing")) then - epf = epf + fire_protection_level * 2 - end - local projectile_protection_level = enchantments.projectile_protection or 0 - if projectile_protection_level and (damage_type == "projectile" or damage_type == "fireball") then - epf = epf + projectile_protection_level * 2 - end - local feather_falling_level = enchantments.feather_falling or 0 - if feather_falling_level and reason.type == "fall" then - epf = epf + feather_falling_level * 3 - end - - local did_thorns_damage = false - local thorns_level = enchantments.thorns or 0 - if thorns_level then - if thorns_level > 10 then - thorns_damage = thorns_damage + thorns_level - 10 - did_thorns_damage = true - elseif thorns_damage_regular < 4 and thorns_level * 0.15 > math.random() then - local thorns_damage_regular_new = math.min(4, thorns_damage_regular + math.random(4)) - thorns_damage = thorns_damage + thorns_damage_regular_new - thorns_damage_regular - thorns_damage_regular = thorns_damage_regular_new - did_thorns_damage = true - end - end - - -- Damage armor - local use = stack:get_definition().groups["mcl_armor_uses"] or 0 - if use > 0 and regular_reduction then - local unbreaking_level = enchantments.unbreaking or 0 - if unbreaking_level > 0 then - use = use / (0.6 + 0.4 / (unbreaking_level + 1)) - end - local wear = armor_damage * math.floor(65536/use) - if did_thorns_damage then - wear = wear * 3 - end - stack:add_wear(wear) - end - - local item = stack:get_name() - armor_inv:set_stack("armor", i, stack) - player_inv:set_stack("armor", i, stack) - items = items + 1 - if stack:get_count() == 0 then - armor:set_player_armor(player) - armor:update_inventory(player) - end - end - end - local damage = math.abs(hp_change) - - if regular_reduction then - -- Damage calculation formula (from ) - damage = damage * (1 - math.min(20, math.max((total_points/5), total_points - damage / (2+(total_toughness/4)))) / 25) - end - damage = damage * (1 - (math.min(20, epf) / 25)) - damage = math.floor(damage+0.5) - - if reason.type == "punch" and thorns_damage > 0 then - local obj = reason.object - if obj then - local luaentity = obj:get_luaentity() - if luaentity then - local shooter = obj._shooter - if shooter then - obj = shooter - end - end - obj:punch(player, 1.0, { - full_punch_interval=1.0, - damage_groups = {fleshy = thorns_damage}, - }) - end - end - - hp_change = -math.abs(damage) - - armor.def[name].count = items - armor:update_armor(player) - end - return hp_change -end, true) diff --git a/mods/ITEMS/mcl_armor/damage.lua b/mods/ITEMS/mcl_armor/damage.lua new file mode 100644 index 000000000..f17033495 --- /dev/null +++ b/mods/ITEMS/mcl_armor/damage.lua @@ -0,0 +1,102 @@ +local function use_durability(obj, inv, index, stack, uses) + local def = stack:get_definition() + mcl_util.use_item_durability(stack, uses) + if stack:is_empty() and def and def._on_break then + stack = def._on_break(obj) or stack + end + inv:set_stack("armor", index, stack) +end + +mcl_damage.register_modifier(function(obj, damage, reason) + local flags = reason.flags + + if flags.bypasses_armor and flags.bypasses_magic then + return damage + end + + local uses = math.max(1, math.floor(damage / 4)) + + local points = 0 + local toughness = 0 + local enchantment_protection_factor = 0 + + local thorns_damage_regular = 0 + local thorns_damage_irregular = 0 + local thorns_pieces = {} + + local inv = mcl_util.get_inventory(obj) + + if inv then + for name, element in pairs(mcl_armor.elements) do + local itemstack = inv:get_stack("armor", element.index) + if not itemstack:is_empty() then + local itemname = itemstack:get_name() + local enchantments = mcl_enchanting.get_enchantments(itemstack) + + if not flags.bypasses_armor then + points = points + minetest.get_item_group(itemname, "mcl_armor_points") + toughness = toughness + minetest.get_item_group(itemname, "mcl_armor_toughness") + + use_durability(obj, inv, element.index, itemstack, uses) + end + + if not flags.bypasses_magic then + local function add_enchantments(tbl) + if tbl then + for _, enchantment in pairs(tbl) do + local level = enchantments[enchantment.id] + + if level and level > 0 then + enchantment_protection_factor = enchantment_protection_factor + level * enchantment.factor + end + end + end + end + + add_enchantments(mcl_armor.protection_enchantments.wildcard) + add_enchantments(mcl_armor.protection_enchantments.types[reason.type]) + + for flag, value in pairs(flags) do + if value then + add_enchantments(mcl_armor.protection_enchantments.flags[flag]) + end + end + end + + if reason.source and enchantments.thorns and enchantments.thorns > 0 then + local do_irregular_damage = enchantments.thorns > 10 + + if do_irregular_damage or thorns_damage_regular < 4 and math.random() < enchantments.thorns * 0.15 then + if do_irregular_damage then + thorns_damage_irregular = thorns_damage_irregular + throrns_level - 10 + else + thorns_damage_regular = math.min(4, thorns_damage_regular + math.random(4)) + end + end + + table.insert(thorns_pieces, {index = element.index, itemstack = itemstack}) + end + end + end + end + + -- https://minecraft.gamepedia.com/Armor#Damage_protection + damage = damage * (1 - math.min(20, math.max((points / 5), points - damage / (2 + (toughness / 4)))) / 25) + + -- https://minecraft.gamepedia.com/Armor#Enchantments + damage = damage * (1 - math.min(20, enchantment_protection_factor) / 25) + + local thorns_damage = thorns_damage_regular + thorns_damage_irregular + + if thorns_damage > 0 and reason.type ~= "thorns" and reason.source ~= obj then + mcl_util.deal_damage(reason.source, thorns_damage, {type = "thorns", direct = obj}) + + local thorns_item = thorns_pieces[math.random(#thorns_pieces)] + + use_durability(obj, inv, thorns_item.index, thorns_item.itemstack, 2) + end + + mcl_armor.update(obj) + + return math.floor(damage + 0.5) +end, 0) diff --git a/mods/ITEMS/mcl_armor/init.lua b/mods/ITEMS/mcl_armor/init.lua index df06ecd04..0f7725010 100644 --- a/mods/ITEMS/mcl_armor/init.lua +++ b/mods/ITEMS/mcl_armor/init.lua @@ -1,406 +1,68 @@ local S = minetest.get_translator("mcl_armor") -dofile(minetest.get_modpath(minetest.get_current_modname()).."/armor.lua") -dofile(minetest.get_modpath(minetest.get_current_modname()).."/alias.lua") - --- Regisiter Head Armor - -local longdesc = S("This is a piece of equippable armor which reduces the amount of damage you receive.") -local usage = S("To equip it, put it on the corresponding armor slot in your inventory menu.") - -minetest.register_tool("mcl_armor:elytra", { - description = S("Elytra"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_elytra.png", - groups = {armor_torso=1, mcl_armor_points=0, mcl_armor_uses=10, enchantability=0}, - _repair_material = "mcl_mobitems:leather", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_leather", - _mcl_armor_unequip = "mcl_armor_unequip_leather", +mcl_armor = { + longdesc = S("This is a piece of equippable armor which reduces the amount of damage you receive."), + usage = S("To equip it, put it on the corresponding armor slot in your inventory menu."), + elements = { + head = { + name = "helmet", + description = "Helmet", + durability = 0.6857, + index = 2, + craft = function(m) + return { + { m, m, m}, + { m, "", m}, + {"", "", ""}, + } + end, + }, + torso = { + name = "chestplate", + description = "Chestplate", + durability = 1.0, + index = 3, + craft = function(m) + return { + { m, "", m}, + { m, m, m}, + { m, m, m}, + } + end, + }, + legs = { + name = "leggings", + description = "Leggings", + durability = 0.9375, + index = 4, + craft = function(m) + return { + { m, m, m}, + { m, "", m}, + { m, "", m}, + } + end, + }, + feet = { + name = "boots", + description = "Boots", + durability = 0.8125, + index = 5, + craft = function(m) + return { + { m, "", m}, + { m, "", m}, + } + end, + } }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:helmet_leather", { - description = S("Leather Cap"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_helmet_leather.png", - groups = {armor_head=1, mcl_armor_points=1, mcl_armor_uses=56, enchantability=15}, - _repair_material = "mcl_mobitems:leather", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_leather", - _mcl_armor_unequip = "mcl_armor_unequip_leather", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:helmet_iron", { - description = S("Iron Helmet"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_helmet_iron.png", - groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=166, enchantability=9 }, - _repair_material = "mcl_core:iron_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_iron", - _mcl_armor_unequip = "mcl_armor_unequip_iron", - }, - - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:helmet_gold", { - description = S("Golden Helmet"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_helmet_gold.png", - groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=78, enchantability=25 }, - _repair_material = "mcl_core:gold_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_iron", - _mcl_armor_unequip = "mcl_armor_unequip_iron", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:helmet_diamond",{ - description = S("Diamond Helmet"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_helmet_diamond.png", - groups = {armor_head=1, mcl_armor_points=3, mcl_armor_uses=364, mcl_armor_toughness=2, enchantability=10 }, - _repair_material = "mcl_core:diamond", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_diamond", - _mcl_armor_unequip = "mcl_armor_unequip_diamond", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:helmet_chain", { - description = S("Chain Helmet"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_helmet_chain.png", - groups = {armor_head=1, mcl_armor_points=2, mcl_armor_uses=166, enchantability=12 }, - _repair_material = "mcl_core:iron_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_chainmail", - _mcl_armor_unequip = "mcl_armor_unequip_chainmail", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - --- Regisiter Torso Armor - -minetest.register_tool("mcl_armor:chestplate_leather", { - description = S("Leather Tunic"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_chestplate_leather.png", - groups = {armor_torso=1, mcl_armor_points=3, mcl_armor_uses=81, enchantability=15 }, - _repair_material = "mcl_mobitems:leather", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_leather", - _mcl_armor_unequip = "mcl_armor_unequip_leather", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:chestplate_iron", { - description = S("Iron Chestplate"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_chestplate_iron.png", - groups = {armor_torso=1, mcl_armor_points=6, mcl_armor_uses=241, enchantability=9 }, - _repair_material = "mcl_core:iron_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_iron", - _mcl_armor_unequip = "mcl_armor_unequip_iron", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:chestplate_gold", { - description = S("Golden Chestplate"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_chestplate_gold.png", - groups = {armor_torso=1, mcl_armor_points=5, mcl_armor_uses=113, enchantability=25 }, - _repair_material = "mcl_core:gold_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_iron", - _mcl_armor_unequip = "mcl_armor_unequip_iron", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:chestplate_diamond",{ - description = S("Diamond Chestplate"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_chestplate_diamond.png", - groups = {armor_torso=1, mcl_armor_points=8, mcl_armor_uses=529, mcl_armor_toughness=2, enchantability=10 }, - _repair_material = "mcl_core:diamond", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_diamond", - _mcl_armor_unequip = "mcl_armor_unequip_diamond", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:chestplate_chain", { - description = S("Chain Chestplate"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_chestplate_chain.png", - groups = {armor_torso=1, mcl_armor_points=5, mcl_armor_uses=241, enchantability=12 }, - _repair_material = "mcl_core:iron_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_chainmail", - _mcl_armor_unequip = "mcl_armor_unequip_chainmail", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - --- Regisiter Leg Armor - -minetest.register_tool("mcl_armor:leggings_leather", { - description = S("Leather Pants"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_leggings_leather.png", - groups = {armor_legs=1, mcl_armor_points=2, mcl_armor_uses=76, enchantability=15 }, - _repair_material = "mcl_mobitems:leather", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_leather", - _mcl_armor_unequip = "mcl_armor_unequip_leather", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:leggings_iron", { - description = S("Iron Leggings"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_leggings_iron.png", - groups = {armor_legs=1, mcl_armor_points=5, mcl_armor_uses=226, enchantability=9 }, - _repair_material = "mcl_core:iron_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_iron", - _mcl_armor_unequip = "mcl_armor_unequip_iron", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:leggings_gold", { - description = S("Golden Leggings"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_leggings_gold.png", - groups = {armor_legs=1, mcl_armor_points=3, mcl_armor_uses=106, enchantability=25 }, - _repair_material = "mcl_core:gold_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_iron", - _mcl_armor_unequip = "mcl_armor_unequip_iron", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:leggings_diamond",{ - description = S("Diamond Leggings"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_leggings_diamond.png", - groups = {armor_legs=1, mcl_armor_points=6, mcl_armor_uses=496, mcl_armor_toughness=2, enchantability=10 }, - _repair_material = "mcl_core:diamond", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_diamond", - _mcl_armor_unequip = "mcl_armor_unequip_diamond", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:leggings_chain", { - description = S("Chain Leggings"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_leggings_chain.png", - groups = {armor_legs=1, mcl_armor_points=4, mcl_armor_uses=226, enchantability=12 }, - _repair_material = "mcl_core:iron_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_chainmail", - _mcl_armor_unequip = "mcl_armor_unequip_chainmail", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) --- Regisiter Boots - -minetest.register_tool("mcl_armor:boots_leather", { - description = S("Leather Boots"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_boots_leather.png", - groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=66, enchantability=15 }, - _repair_material = "mcl_mobitems:leather", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_leather", - _mcl_armor_unequip = "mcl_armor_unequip_leather", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:boots_iron", { - description = S("Iron Boots"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_boots_iron.png", - groups = {armor_feet=1, mcl_armor_points=2, mcl_armor_uses=196, enchantability=9 }, - _repair_material = "mcl_core:iron_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_iron", - _mcl_armor_unequip = "mcl_armor_unequip_iron", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:boots_gold", { - description = S("Golden Boots"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_boots_gold.png", - groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=92, enchantability=25 }, - _repair_material = "mcl_core:gold_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_iron", - _mcl_armor_unequip = "mcl_armor_unequip_iron", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:boots_diamond",{ - description = S("Diamond Boots"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_boots_diamond.png", - groups = {armor_feet=1, mcl_armor_points=3, mcl_armor_uses=430, mcl_armor_toughness=2, enchantability=10 }, - _repair_material = "mcl_core:diamond", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_diamond", - _mcl_armor_unequip = "mcl_armor_unequip_diamond", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - -minetest.register_tool("mcl_armor:boots_chain", { - description = S("Chain Boots"), - _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usage, - inventory_image = "mcl_armor_inv_boots_chain.png", - groups = {armor_feet=1, mcl_armor_points=1, mcl_armor_uses=196, enchantability=12 }, - _repair_material = "mcl_core:iron_ingot", - sounds = { - _mcl_armor_equip = "mcl_armor_equip_chainmail", - _mcl_armor_unequip = "mcl_armor_unequip_chainmail", - }, - on_place = armor.on_armor_use, - on_secondary_use = armor.on_armor_use, -}) - --- Register Craft Recipies - -local craft_ingreds = { - leather = { "mcl_mobitems:leather" }, - iron = { "mcl_core:iron_ingot", "mcl_core:iron_nugget" }, - gold = { "mcl_core:gold_ingot", "mcl_core:gold_nugget" }, - diamond = { "mcl_core:diamond" }, - chain = { nil, "mcl_core:iron_nugget"} , + player_view_range_factors = {}, } -for k, v in pairs(craft_ingreds) do - -- material - local m = v[1] - -- cooking result - local c = v[2] - if m ~= nil then - minetest.register_craft({ - output = "mcl_armor:helmet_"..k, - recipe = { - {m, m, m}, - {m, "", m}, - {"", "", ""}, - }, - }) - minetest.register_craft({ - output = "mcl_armor:chestplate_"..k, - recipe = { - {m, "", m}, - {m, m, m}, - {m, m, m}, - }, - }) - minetest.register_craft({ - output = "mcl_armor:leggings_"..k, - recipe = { - {m, m, m}, - {m, "", m}, - {m, "", m}, - }, - }) - minetest.register_craft({ - output = "mcl_armor:boots_"..k, - recipe = { - {m, "", m}, - {m, "", m}, - }, - }) - end - if c ~= nil then - minetest.register_craft({ - type = "cooking", - output = c, - recipe = "mcl_armor:helmet_"..k, - cooktime = 10, - }) - minetest.register_craft({ - type = "cooking", - output = c, - recipe = "mcl_armor:chestplate_"..k, - cooktime = 10, - }) - minetest.register_craft({ - type = "cooking", - output = c, - recipe = "mcl_armor:leggings_"..k, - cooktime = 10, - }) - minetest.register_craft({ - type = "cooking", - output = c, - recipe = "mcl_armor:boots_"..k, - cooktime = 10, - }) - end -end +local modpath = minetest.get_modpath("mcl_armor") + +dofile(modpath .. "/api.lua") +dofile(modpath .. "/player.lua") +dofile(modpath .. "/damage.lua") +dofile(modpath .. "/register.lua") +dofile(modpath .. "/alias.lua") diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character.b3d b/mods/ITEMS/mcl_armor/models/mcl_armor_character.b3d index c8dce36a80df34cae8d810f3454d6e39b059bdcc..95f763eab25205397a85236cb0f610212481e585 100644 GIT binary patch literal 493300 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

-QaZ1aN16-%Ni39NkNzKERjHH`rI&7Iu?5ESQo&l}GF#37L+w3fSRyN8A|ot-EVC z4e4>39CZdf)-f-#)8S&7c(O0uN}?9Q!sq7qhI3l{H&Tc8b(2Z?{0fPBg&60)1mkj_ zLz{9%P|euUBx)LNa~)*-y4&HQ*DSiXa}9~Q2Vc%RF^6~<*5fpN>AjsqZA1)@-+4LA zA*?&MyK5xsCp`0;fK2y{S3ss`I?woJj2Y)9*5Bc~GDtwCTe!`P>yDB4M4cs6X~Yf^ zkm+Kb#QF;#NZF5l0+a_n0qI4iL{aS?2S`AsTlo3_UdV$ljB>F~Zr|031Y~*~kKaWO z`?|+3azK%rb`p^389XKt50cL)w@BSBeEk)W>GS#AlxvBM2^l+&yk^l3?=%vS=_5IB zcn)&!bk}%12*~s(uCJWO`1_D8<@$Rsr$cqmk$_Ck<2;v>_A=^=?;-_8=_DZ2vs~o5 z$0T%!?Y@x&WO^K*7gKW37jp=6LqMimc>Lz%x8rq|(5~(qNkFCxzs=0SZ?WEK^rv@w z5|HVh`AtBkd*(L*neLh21Z28reiM-CnS?cJp>wWGoR{&7IbS#{ zfqs9OK!8kVmaBZu%XdidNnX6;9Q977rC(|U$aEIfna3~I9Vyp1wxe^BDfF;PfJ|qZ zv-zCIe1kmqbv>$%mEsD-5g^lzU1%3iq7E#Y=K#bR#ss-?Y~a1LC!SvUrxLFfvk1Ac zFL>PN{H0#;bhd09@p`h1D*ViGf#H4AXy3&am8PEBM!e=M^fRunj7j&gMfs;t)iKG$ z>(VM055W7T)WMy1{@7%ibvKcC?OI3Xat;H#;V0L=9+4V-+b5ZLeOs;Nd_BXS05aXj zHo8U{wHOpjyaq0+7vIxPFz_13R>7J?PZuN-uanE$l>1ob0BJWlFVrbEnm0C?P)oPu z^G+^ns?EWgR;3KD9mH$$9<<~!X*^Rf>f3kLE-H9T zBVM<+sygS5HpGK5c3S;trL`%@p;BWqC}(W{``&Z?svj58^0nND}dy#jsucY(?%%-1U9+ zDupuc$C9XP{DQBkGS9oqO-V?gV)w1YYac^r^LG)sU&r4!>JWV1N((xtkf@LRp6iRf z9C+OAyL+id-Aif2Ybe9oa+~F}@9XndA`N@45+KuASUQj2>5g?ru07Je%TH>gH&qFc z>1^{pzWz#H_pwzUrO~A?RRUx>n{$N6j$EsuGx(+4Dw|cR{X``|rn7M?`5jrge{i>N z&4((*R?`TO>8#?v@2wbZwylIlJ-jsnWV)yM4Up-UKc{f}V!pu!?mC#tYxMXXjd+b| zO<%6B(Z|Mh=Zk_G75-HvUWZy#+F&34b5#0Zx<caPvG9KK=cG;Xv-F!6Sb+H-coV?(Zu_pa?rlUqH zo@gX$XT{z#r?q-P0V^dHN+w=k8`_KKSUKn2<*p1&q{+oK;x)MUTX0_J3msq!qkU_3 zOr>%i-ZyiDb8bqR z#-w7zZKcu`cM`8ZURaIimYmkf-j{dKfyLViHOiJJ`}sSW(GJG3ExDaYWe)8oUdLQK zIss>y^1a)AYy;OO)5D%S2(`|h<~Lpso$C_6=a|!;;OOEc%6(@y@tWx+i}}5)$%eJh zm;+3QVo8~rM!c>%^l=01ALMz7jA7}EMbU{ARV;yc?RCCI+-5Szy3dOr%B0Zr{o9Gx zXJ>uI=bJIdf**2`vqrA7lHarx0%SU4^IX2&y33u?D4D91+D3p(XUumu&UfTG>8|hb zR|zz|Qyc*@orTWiYZTUB=?73bwmYpf+Lu3#0GZBwlKCDcr}_5j>)mwa*JJ`@I`cj6 z{C1F?+}dBNbm5mc0%SVwz2ZFpHUlr>#;C*MHL>(@hhzd|IX1oX?jpiBc9=36SZG{le#_aco8%h7?k1Pg{)una(m+a9+9p zb@xT{W*V)_olJmCXHi?ZePte!>({WO|R`3-}&J z?rGh}Cf^GInI6%yA)iC?UBunTk{6KavA#AgSMH4Jxor%ki39Q-&*f7kDaI-_R5kMkm()U=I41xjtzg` zxJF4{K&Ef+`$Rh}T$$%{@&zE%S+Q|^{WXrwr~_o8_ZM)F*yN{iSgYS= zU+@AleNp^C%-{g$OU9NV;Ou8gE@~i+C3g{ zHi$D_K&I!ba+T+yNsgF=4n{jPTzZ~PCHzW&OwVlIlF#}78XF+fyBu7}<3YZg<}@}y zraxNm|^BW-3EuVev+-pGBocspJbWi;T$n^asR&hJPzHb{F zAk%M-y2I~f{@2(5neOS>0GS@P+QxPGFTVjY-P8F7$aGKb0LXOaI0w&ZUy|B9oqwAF zWIAIZJRXem*tnj(u98Y^4jm;xrZX19@A?>XH~c5}F!&yf?^%FMuUY>HU;E@<8U8TN zP0V+!CxA?6EQaTK<63Rx#TkF}dX)f~&K&3Kkc&9O-#7B&+cCaN05V!bL#^w* zq&mBH6Cl$W>&SJGeuGS-9roP*o_gnD4g3ZyP%N=p%zD9*MU(LT40y5oGzX38G z_Qm=j=P`6Jjt$@Z`|RCBfK2z)Z=!#XXMRJEA5Z-z`T%+6H_8pIzlnZA;yccN z`Azg3^2~3JzC_MFqO`5izHR!irA9~N3B8NLZcTH(lgaf|#yZ}~WG+O1qnnHN^VpF& zR?3$1;)kN~q=swc=z+xZh0ODa9itB2eKh)fnMR^dQVicuj?ZDwb@fC7wHlpBqL-5R zre>T&QeW&-A8$WKmUniO=(m)?@9D~KGwwP}`e{EkvTP>Nlc}RiE_9!7->{wJUm}h~ z-zHyf2jor6O?NwtU9p1>Y~Dknw^IhUFU~3?uTkFvFSgUp;~Plye>%qJ1>WZ&(|x|p ztaOM@)jmLu9#LEe`Hj_GhXos+QRiowB>G6z)a2d#?A8)|^ItjQC;>7ZcfT;_<(UF> zK;Du*4p=#bLQ_-%WID5m+>LiVsjrbY^2}$HGVoUdWIDK^gWPLKekpgkxGk6id_VZEHVC6*uWIF2du~){sKYRc_ z=?m~K?Q?{>e3VL}ht?_{5ArP2-50Ay9Hq8Nvq<#W5_d3iiih3ZH&T7?<>cta#p6Mq zBTAj+*s$+IesT2c;^#&+QDdFxnCE( z!QyzH#~jMe7v^nNexFP94`bYBOAOz$jPX#V)(*OVOe5Z7Y|(vg2i(zu4(@jF?;b~{ z>9HjGkeT@U03S;oq~9>-JN%tYex+iG_bO}Ix*o=6-0v89<$HkWXU2G}BhN!m`IGi- zS1F17ckL!e&ollWo6|Yhv-8KPNm>H&zGyM=oLB0L*fHAoeC9Fw*mRgg@3fu#Tn;*b z2S20D>b|#|$0YizWi&fb&v=Ijd@|Ny2fSavccKTIu&KI@@OY5>Gu(4G^4`0o(VWD1 zLQl8_B`kbBd)s>p#wYs54dL-1^N_oJo4-=2*6LUiz2$oRD`y#PR`JOmQV#z_y#HL( zNY0D-mfhG+lsQ6C%lDG#Q5WiRw+{BjezQ#MC1V}m^6&X*gm@P{^OCs^Ipv{c2^#(Lc`Av% zdQtqn1?L)4SEJ38A}T%pHi<;kO`t!x`x(;KUNqrH&n`2XG zg!gtr55J6uGr1ikFJv0!N;`-?e?#~gsqsA3$lHEX60chny#S+mOv)S}$0z-k+{I2G zYstj>1!ffCcYWkMhOSayjBV~;C#i1y5fVKGMLstASn^_Q1<&Y|`0Zvw-@(iZi}={G z^BZ{O8s+Fs$n{-s@P#pU7Oz+7v&S|P{R^A${Fc)>_=dL0q-<4*_c*kC!1svA^EfL; z>>Bl*uI(bV>t+&t5YKQO_H+SLPPcPqCzi z_00I5CH)3F1mCgp_aR5mMZWGBePNt$7uy{ouXoZ&^ksZE0CMHKKXfpzscpLcLN%xE zBhkAtjE`-VW6ncoX$SbYO3i)L_4`ypf5)g=yIo?^omct|Js?AOrf^=lo?%>aY>+GM zfIg9-U#0yk9$f6}SRc?!GVFwn^BT|Bv*Sg-$&Rh;oLBlSCtsi^Wz>AJM#+7(^qrg+ zQeX6~d>$6T-;a&)Yt%u`P4u=L*}J{JagB1%u`*|&|K+p6-TdEH-z{}Ok4*nMKYMh4 zo%hi^vxcvIGIv8)>0`uMv_++*`7{!}HV-+^C#BDfvD2YoGEJ`>N1`8RQ9j>r4^PH| zlnWn!I>N^9q>G-Nq5ORa`zYxL84u8b^fMGsMNr+18DUPyg0Hk?1;Jzew}jd7mw zLoWD0W$c7Ek0qRKh+d@MJM+9;bBs1S_e7qn{d>(f{g zJxzrUI}LkfDHryI4W{>xBhmLXhJU-2_iP~7xR%^HuF~vL@g#bq?&E%wcP-s@$h@CS zBYxRUqJQd6zMsrV-#^|{X<>eqM32?$+zxAVh@F^6NfbEHO1uwiSRqZGr(#U-nbE#~ zv{rfjo9NZLnx88h&v%Txh_RckRpR|zEerVfW8>W!>0{WeSrv`&ZIAbSRV&wp4mr&s z`K?3rh4t*NrRW_S<2=)qwl(VTmG^eqSNIHx{<0z_rG3F?jNeh+7x7vy(Sz2ryUn6c zt;pTRwNJ(lVjX*u?YmBp=w&PJ>B>A0KBIk?CuoFoN73&#hVM&c4gjxFZi~W+lyUoe z;yrOQ>hQhBmpSY`aUUILc%pCaR_-@>{{esBXosS8w@`tpCrR|yWft^M$tiDs*F2WL zZ;JlAp7~Am=oRN0*r&>QEd2(X;hs6p6ht52`+WVCc94FS^BC{aAjy?06=!MKI$gy(24qr%{Va{Vch22EIWM2)j zv(&Jcle~DpxP`ihDf>wDRQ8P5(RZ2exnwOD>|mTj$U%`)5=iuBX8i1GhhbhAb!b;N znev~}N%U_P=P>e}LB@oPGn~QTPPpjt%q-ZK80V0b3p>CD_&NGO^S!71&g&k(U+&7_ z^&-4i^sWReKQG2=uUyXeFgfx5>3xK5c^@J4w@xWm#-;YbT?g3f&+Zzb2X^)D zPr1!_# zU-SrX@kGd#@3GKXjt#sr&d^8vQAFo|)tS z(TkmNxyHSQ(HD1DYILAyB8h(OW%=F{>lt|5ZPsFpMoadqBzn4!)>_KVZ6p`JwLhP(coNtGnOtAI z<7DSIWvoi~2PcxiABf|;#+(J&(q^H}G&&xlQ|YKDaVF6G%&YD-8yK*aTUszs)I9V`CjNgHkpS6_Ck5S_Q`Lo?ql;AlSa9c z(@5YmG~s@e^8&g`9WdXp_uaH6nFNM|>-Sj93FExj?VUz(#cd>T9>RE>$@4ypO|DTG z+x=>ZMAhO+U_lh(`v*CPps!JfkQpk`?06D*5#n2@%vtXG9{4?xhHX+wU`nj!>x1Nl zOrs80+NiXwR3Zu7iK~1~m9gWl@9q?h$`sRxV^f5R`ve#pbam&QtgCc3Q6qt0v6|T+B+J$@8Y1L*SMA!WYuV0te$V-^b1x@(jXK;3(CBiL1QHk^ z`S?4I-1kAIkr&@LTld^S0w=_?{06WA-ABAj=QQV~-#Ffgr6Jcr&UyTOW2|TRY1I6- zN&=I_#(e=hNc$RjLmH^Gv=8D3-_d9CZ|?H@kh^`Cu2*SUdyNFP3FBwQIlW6q_f>g3 z2>g>V&N(FKC8+c<^5DFi2_!I5YC7jJ^u*7|8`Ug@;?E_Lz)`WepC!iMwCYzQ(cPZ17>%Boa6?O?aG1UUwZhe$+@{(b)Oea0UXo^4pX2 z#qcQ_VOJ>BDBTccEdz9TSp#=Ui~JnL2*E$*w5z~PDHW5b$? zF}d4eeOwZKKhjD9t0#-!8Ifx>_@Rfi@AD!l6!M8m0?&u>_pBI)T=#Xo)#5}#ybH`9 zUoO`;kEJgVzx&r{bjz-izy&J6Z6?<~89&eg^WyGKjUqc~B(Q@<@v#~26By-wd`P9N z)f#bpq0mGg>pA6?-(RZKlxf5_QsHpq;L7RQY7_Qilqb;uKKhZz$sh1vfg(;apZtvDGIZ8jO>Ei@TpqCF;KqV*+X zysaf;Oth?IOthn9jJKL(jPW*-j4|FKk}<~HKQhKdYe&X-+eTc%$NyoBiFS*OiB^h? zi8hIh{U3W@A0}hn#eXnfDtQSJ#VRbZJNN9)B0JMerRAwaJt$AoCZ!$}rHI&@Jl;tN zr6ge~?9A@0x7`?R-Xd*9sU#s$k;=;w_II80xxcgbecRcc>-X31`d#L__L*xvpU$4| z`JV4N-`Dd&2}B~4HzY#oLL!tUBtpqSA}%M$A1M_`L?{DDgc5&rg)$xHA(X}DI%1RB0_m6B9wk2LRlvwlx!kGIVK{MS|UOjB_fnaB0~8iB9t~F z;<82jK}jMaDK|t!Qc8%3q)ZSINeLh#lJY)8B&Bi$60R~5;hG{5t{@WOdLa?64ie#7AQ7(o z5#c%?5h&A%a1Dah-;6RfY(Z=|rGRCjw+BjtGfx{6_@JbRrzv5#dOV2*+(iI7%bJF&Pn# zz=&|XMTDa(B2cCi;mC;yl<7n`Dk8!$5D|`eh;V#EgrgZE9J>(VNQDT;B}6z1Ap)l| z5h&A%a6CbTqX#16Sb=b4K!oD}B5d^&VH=+aTl7TOeka1#IuW+biLfP3gzau3Y-JN+ zo0PFmdMy*C2XG(VQZ8K+nz+AOeX?mIuR(- zi9nf71j=+GP^J@sGMxyN=|rGRCjwBO*le%Z2PbBpMQMDZQrXcE-pEy_1s=l&uX#+k8`PR>pEbHN{NgfgA339($pGVccC_*)%+RQdJS z#NM6nZX=ZGG(4x%#Z3Q8QREh#s+G85$IewknI7Kg?rdO{T(b_1esAo2sl{d|DARW( zvt08&^d(c<9!lAtwZ3AL04UQ3CoxvFjd5n|&bgBlu37Z66O`$b+-WwsW*u5K+2uU5 zE+tDS)9Jg=9TzkGFBomRP@Ew@$_~}5k8ut;-c%FHbn50-I+WHnXWGG)n-V5zLYYoC zhm_42%etC%NbBL(s@I*B0LpYdne}D+mWE9kG(&qSdy5m4>3fqqny`%LAEoaT4?p9| zTrpP@%5*vzu^D6d@0)d~F}=O(_nGf$LYYqfZ0KLYYoCr7%|Y#l_+b`B80~am(!BJq@39 zf-=2ZNcAzd$!=d~{=C50Imex#OxInk?=Zu@c76Y>`>mFL-5IA)rqc&y%6+$kBiO6e zU7Ap)(|Ex~)Az^I?+1U0tD%81y<3@fnB1sh)_2`TXrN5@gvzpS_V-@bo(fa5K$*TQ zr>uVa>PS)6;r0Jy31vEk%k+n-?e1{BQ?rXElqJndKVRl}TQ_k~L{;?Zj`s+_6e1)AfQf^IP-XjhwUJ``8J}^w{znDAQxhZ=g(%Ex!q6dO71l zIR~(Raofye{?&d95*i+@rwL^`H7PT{{X5~!p#S@Z8Yt7d zOKvgGcg$n+jU_t*Z!Fp21Z8?``3;om<05jEzGk^6b0fRl zf)k6iZ6B`DgfgAx<=j=q9Oi|E4sGc1-2qUhcW~cZ#++c)PeIqk<+YtcnNDpjF^bz| zZrj4*WvE#W2eaH?*8k%iReiAr%JdmBhLjHW@wU2P!YWVT2@RC#4=4Z2WHWo)lG6IFN=obN z6v}k{cQ<3r`kHn4c1jPed3}!t%Jg5w4$<^|bIFdCXSVms63TRan#2dQT(h4|r$4fs zV?J_%GW|n7Owy6&^g zqwH-PoH5Gz-Rh}{piGB-&HiAv@3B48o!8y9E=wrWX;hhg@wcy5U{dO*PN7WKU$^LB zw^_TigDc0(8I%Re^moe40dM`Uk~Z+--I`FQ(@x8r*50;Lj+9l;w13YD%JiGv_Az9( zS@(VmR$aZIwN?D}R@Zx$%LZ;B?A>C~Xi`TFC#nrN>#8k;4Q>GZJ7CzVgy zH0++fQwlyPozZ2Zb`7>Pp*GzuD#XKX;YuflChug)*JGNi0!V z?q72s51Ug}YyaY&fKaB>$I=&OUpM>Yw^R0LlkV!R;hxL3h#l15=WjKS8hpHIp!W^$ z25=YV;AJt&EVusVlYt*jf1QZ?GBX9M^ktc5eb+2J7})a4Fb#KVUa|BWEucqOS&vemO`GdVLvJ0xpS`YVtCMK7))*G_Q>)J7Qau)6i1uoksFx%{hZs%pK zhx3+$v(eyp<$Zf-OPoYewze1en&FgO7w^2U% z(xRKS-c4N^DAUh~KSYz8{o7B@q!w?j63TQc68kE-_I`Wr$=3c_wHB)%Jkir zt>?|-t#zZK#5Wr~ogkFynky0~OOyNeM^oDTZ~XQTg)+TG6`7}++h*2b+x9jI#{!qy zfHFO{{3ev?XD*a!2gidI6At!xw2e@v2Udr*~_iOg}Is5~E6!yY=8ziAP@eauq1kTbHTt;b!%ntOe@vyPO6#Mggvf-=3DCH5(um9KZ*`jxYP`=(h!nNGjUxOhIwUS^Yz z`Zz~+t*wDFz3lNey-~$gJl;T=zD(A~%D(n-toAZNncl}@Gdou8Wr8xjrDZM6eP-^r zn_EBQYE^ZfCY0%vF5^P2v+Q=LbJuOMmkG*rf25CDp54AJ^BXvM{|uDrW$(4|UgqzQ z?R5%edO2}@!5!3`pWyzcNeDOuM*}-{B?sW=fI(;H*Cyr6dANX7Kv0CeaGCj8Z zCY0&Mn!(&}Yzrm#mm|YhZ8>Sp3On+L`UWG~6wH+j4%v zShKzpUTUuOdH<+}`=^E3YF|$EvDv;4^;@7-ty?F6JF4R>K6s`#abyRI|Jl)K@&m$a>plmt+whb`k+>8$!~MD=D_P2RcQg*&r{ z#2=KO*=@EYv^=rew`-iZSKHAd*N&ZepoMnmbk9WGz1@1*7&6;o(8bM(ryaQoxS#8> zto4*Fl)m40JD>Q%qMMz#!+R;ItiIU0C9rZ$LDkl{=Nnsole@s-!pIm>_A>WH@A9r(2j4-fv9eCgK;DBiXP^PbN-(%VXVcGnn#?ZzN z$-(PKZ`Fh{U0*J-@0BQWd-iLr&1h6nGbq!OdAtpZf_-Djy@5X+DNazPFOXO=(v%C$ zZ9DBq;W6(7W%@wr;s%;z?3if797PtNqW>?yEJbHCj=HI!L6 zDmNaK=?zlszHY`2ytp|~c%(>ElDjMw zQc7CiASlzxlDqAF@#T@>*^CEey4Bb1*z=B*z-dQrP*J9H+jz|LJj3q4RqEDBnziI! z7bw$fi4N>%+$Oue%R;TPXEYj{4a)RLH9|xo_*w-1uePQ;=Hk6tSops~}@dgF!3pI{eXLH+5IdX&Slg2w0opn%qD~vPy&M8MqHv0tLvcy@& zrd{r+>dk`A{05rw-bL(dmTQht5A|E%T2oLp32$OBms7FYZiiEj6phC+-pw44am?dF z^_#gb{&u7!y&qbhjkh)EH_lnCtG(aW7F5k%8d{!>_cyWio1#pQrQh(5C$@gWTc6na z4ex=biVn)Yc0c2Bxu#%35O0QJ8*g}5G(EDf!7|ww%>Iy^);DqB#m$NQ_GoZHO^NF& z{@QhzwPZ(TQrf{5@;>RnOc|Teus!=VUUlQj4y)u1lU~`a_Ro||{#JSO+2c+5+-W7= zISspPU)k*IKcDWY&1f`M!&|7qGAA(G%#8iK>F%sSAOANX@1^|ri2p`gGc9<_A&N9oLaPJ9?&tv7?)r=fV?zYGEn^txR)E-?oAaAq$*xyk(R@p+?;o|bz zt{(?n>y-Cf3){$fp~CXtH|xOj&d-~658#d0?#MnO%d}%_j&I?be)7|RyaPM1Rr*5N z%#OYEY+F~Y1^b*rnI4xDIr~yLv+o?xk^)=SJg9*(-51&KV;vZ0?&E)XuXg=8xuzzR z>491jQ`NpF%Qnls$9uJlZ7h`Oi4KWTj4drbT>I@B=fC?c$P&tQy{*LcAyKe*ZJ*+* z=h&kOWqP$yqJw$<%X+B37Ca7- zaiRK6^@oys{$y2+o*V08%JjNJc3W(wY^<>FbbB-yp6}O~GMz?!Bz??nQ!>r=t)1+t zg)*HQO538%`%=>SYCGp%9Tdv+TDMqYs=aL+yb0Q)`wKKsrq7i9l4$XvQvbyo?>`7- zx_^uKgPN~%KbZUC{XZPq-@X}HLYba^z_L%E`cAd&rT(1)S&cu;63TQMDsd;;zTBFE z35idn|D)kj?*Q3Th}IWPo`1}_s@M1|p-iv!`epuL*7wdCjkKkqR!*TzueDFwruxm^ zw&0{TU8DAPlIWV|VxabK8qSQ2WL;0ZjDC6wt4 z+sWL>+!to-DM#*#ddY7j3T67y7i6DS>1*%fyJj>>JmpA9V9NAZ^BYs9)6}PBeXRV< zZikD@Ur*@R!{0_I)5lhmb(V^$cI+uf?uUu_4HASheTE~FTUb|nzLuUuM7cI`NBh$K0!(LYZD`ocKdDeV=Lnp5`3mbqZy= zzn{cZWe3*TJm&Wgn3lD(x6>(<>4RrQ{7m8aTlxB?s}F0B+|Wc5%JgM(EaRAQX6(=F zM`|PI9M2NU^ko|aYmN_QfB2%drUegu?i9-O!cn5H+0V@SrZs#ri_hFanch;?P6}(c z@7537xt4@ltrE)gq7`y>ps@DX=Q#b6YxX@HZ!*^{o!L-=N-9;LYcm7 zaG7!Pn$K=@ZGL5#CY0&5-i+jKmS@-D>k8Ffw^nTs5Xy9Yk<6nwXEB!j%xs6pj=m6_ z?K~J@%5=KrtmRxp$yWXLdyi#Wm1ganLYc1j3h=sH^##i`x2?yKMS-J@9t|>OdaU`4 zDbxKo)fbzoG0!s1a&u0;u6_6L!!DsrzoARy+==_l-nJJ5j|7J|yKzq*Fxp=jfx#XXe+OU9&YLYdzFE|D8e-v%c$14%F5>=Md!{b=O= zI?rMF@0qL79Go^abZ*HQzDo+v)DNwSoN_uM*01t>R@qX~yo$=-}Ep z_iC3=rgu9lF-r9tquO0hi`%kpyO?GKQncl6H#n0GY<}q}_k+S04 zx)e>`(}$*r|0>_H+jm!Qr?#`VGfUpw7k0K_SqF1poOk55XqVQv1=kyxQK^yaPbwYk_FWokwXAF9lxAF$VBwuT zWlmuB2eWj%M_<(ln#%#pj~%OgcCxVFLKu=T9j-fyc5s%91* z86MB|58_&0lKG@L2bkrqDX6+ECGB7fu92|d_a`L>m~Cd(_mm?y^Ry!+p6e(~e0j3? zgTmT%IOa%Mnv~Wzo@*`iZgNTHp2~MvrdbEJ8OxP=3}>iJx!lL694YZ!v*Gs_tCX2z zxovCU=By<<;<@&N z^fmXJ*=Fkts>aV*a&J7>kf?iYwa9u?$uwiD)UC7Z2S>^hrcCd>zp2bM)Hx30%-9FA z-pSnC+u4FC({H^SYhKkhwyoK|$!P~Om%qF#o+;ChKG)MS-%)y~anZ3yIP=E=)8d&j z-FS@JyymZ+T+5C6?Ip=Dw$X z(*9W7Ac-l{-H-N_wSTmEb#}poCF=?%WGc#Z-aq?qls)M4juaQ~uQO$Oxcb|2XIiz* zuEXzjGL!aIos`6s>C`2~vj5BNDy?lyneOSmQQD@~^LDwaZA_W&o?0!YwkgW=SlY&v z>GaJVvL;je1a=)%+n6$ac(d-7ycw-+OqsrW|59n2iY0crs%=7<{^BTUo9YX@|Ehii zWx6iwV}-T*uj)6ZOy4%)TgzUBT?f@Rrc95u-bI+8&jqejnd5LWOf}?+n6#v*73%a>9N`Yl<9@i$L2kAv#<01Z&F%c z7bw&HvQNu<=8UnoEw9T1!3@XDBv7X7m(A_X@$8f%Wl7I|jkB3D-GA?4@n3b;Y`1S- zmj^OWJ90BYnNGU-jU!{tv5(J8k2z8TpiH-(sVSXRj5_Pcb@90f>fF@Im7wd=dKplTAIxu7;rZ2bnx^w|21Dbr)^H&CX>)^DIpkFDQ8nI2oefigX|elsZ3 zBlAhNE&C3CE8nSBcUJI}BPGa`=_mKUEO#YTZec9{D6GnbOqm`|tSW0gg=K#*%dOP) zwqWf?AJjmZu8R(8kCd@yxxG&GPn_Aebr6*4h&$?x%I*(C7v1a{U45|z%JhKDOQMap zKDDPMO?j$9HYn47v+RMeT(hq)TT$Qj=7SxApiEyVu|(->w?pBP;lYMS>jgoXj&oBL zOBidm!+`BtnZgcinMMU???h= zdNt__J<7iFu{|}C*A+|%fHGZ|wsF6ewk~{q$qv`*f(c2WOm85uq_jN{rpbDy{d?K2 zw7vnMOs9azRr~9#E9U|B9mXDttC2H$&Y&bvriU$aTE?2&_V})MllV*+l<8zyJK6mq ztw%VR*X4@rPCHTp4~}~(Nl~Vo??2de7YNA^IJKk~O4 zn?3tA4y-Ad5I{|@*v6aG{nCB6vJPraP>K#xTNt&$!mn3v}o^vtAJ||eX`_JGo_aztC7}Hzs6fEZ!)xT!BqgKZS2M@R@8+FKzip|XVg6*vA z(4*gi0N=IbT4j3TV~ITXRO495R@mDr=Vl(OlpC)o(|NqH+|u+NJ7-JK1eR9i`KEH#6I)5Ft@EqkNc8B&PQFSopw^@o?}e*HQ#CI)FT`` zboy%-*H`m@wkxr$yFPm==Vs2YoEwiCY_l!?%leviI56PaU{cyaC+f86@=hXJT<_KD zu3%Q<)-lFW7g?KACsvjV$kTD}$)_HdS=swI2U%yPqYe^>xizvLlOY!X2%r zTVl0c-=)Q&%r~p##-narXYn1iZeiKxwjDm*Gst(_P+P8|#7Wf`cDZlgv&{9s@&8Ja z`g27e$ofLff9-NV+}1Ry)}ZY!)Tj$5@x360Ww~ZM+_uit`P$L`Y34AEEJhq24u zOu3nBD&@vYt-Cc($-PW9=dxox#i7g#SLMcYJv_ZhZ^1^B`*Nk+%)6@O#-nDQCimCX zI?FDX-zon%V48-ydU&&~#wPb0za)^h@CCt!fvyhR<75a`SUccl{ll%MklXv z%znmrCHG*}+|0gJa^q1?@#JOW!aRmJKJl3kYA%Ll&yj7WbTwo1@Af4nj`_$Xbs7DY zWKO_seTD``{0q#)OK4D4C$H0Kt( zKb$)k%B+4i6wfsv5BzJplVi2of3Vx^nhLp@BP!;`bDhXSZHHi0jI#T~{TD--{z|#= zTuU}dxIquv!cX9yrICXi`#&%$zWW4f8p7$lD^_5Z}sM)Do*3wG0 z8W+6w=e0EIdg2Zz@9!v_S%(`v{z(ps`^3M zjIlRXTdplT@@W9|N_DAwP};r*+jn(ARTt0iQPVUm>saN#Dn=;#^8HCIt#1%@Pa8;$ z1hs#r^eDmRYWzk3wNaeWk(-5Dt=%K*A(qEjv%aSsxl;B9 z^<1}E)>(`-`_5@ciu21OMTt`L^-S#qj%Vh!ne~0Ba&Bhz%DM5V3me;AOVp0l<-AbI zwd;_Sb}-0yn~nOia!*&qK0EerM{bb!q)>x4w!6(no!ZD8hTEk2L-lcT+Cf)xTHhqp zvc)}JH9up#*$%uOt5SECOHrn?&D1=~j-9n+NAQFrC4ic^=_#By)p)b(@a2)BY`(LM zy17{EnfFV~{kE=Pg4}IJZC!teW2&;RU5COWMXruL{Mo3#8(Y7jM(;wIPnzc?W*s<| zbnM|zLLJ{ixkInwj$MaSj+7+62aQ_4vGto#4_N$x*Rl5a%dzCVBR7!C_kU%-I<|h3 zy23i%Lz-=7Zd=v5vv_|ph}y%k^#$q^<86tGXB>OYa`{bAyR^PR)G#iL>>IJY7-t^G zKMt6d#QS)ta~xa0p%!wH#3=K;+ANo24#z%4na*n*6;sVRaQyw#k>W~BJLpoB>9Jr@ zcNurQ&GQ|z9r*19-`hrQ=32QtF8*h%kL|w0cjA-M4!RU&II(@t=Z%Kla&S`S&bgE0xpwuz-Kdpj zosKaj(B>dts3VcwJx;F9h)A?-2V9L zc&;@*JZX&RYmVz?JLHdDn>oKjc0AW3AD9EI%7u2he>M+hKGuDGJl8CL;<=HLy`a*3 zyc=B* zMqBf?+L!KXxi8&i)R-5!YRzD`*;5Zc6F4y7+5qa%ha_hy`?AeA->W`;p?@cB<=-#3 zxK@4A(t+Y<(b`sNQFi7(xhvwOp1uB++?`QS%%-nBS>rF^R?fk>i$I;f(ya)2u|0=mqU%#W+LFG->!K$w# z@OjhS0o35{Eb9QagYpHlKfJi;W-a@-p8}}Uuge&U7W=Y#jSn0;-BUv?fA?j5VbFN|-g_Dz7mo<;#yLD$Bx$)p$s3rFalPQ! zhg%f{zy+~W?4V+l-M(Bqx?>N20DKYfU)2|OeYut*>nxlS`d`v-=DcYhZ>Jn7SywOE z=LGM>B02L>HsiLLu{W;lkahU<*IA%U|4sT>&B06Y$*h?NS~!KjLZ2sCCD-1zp8Xmp z79JU%$Q&1cG_NP|H<~}3?eJlyvtmxX@L&x7MdYe}v)gx9Z)f8Be~eoNt_<8kR(-)b znA`T{k>SqQ4=i;GpN77+%vds`(b%kY6Wav9xzSSmLD|>tXZ*I0$31vCE=Yb;S^~5v;NUEN^%0{(IBP4qBDEvz*{I`S`NAz1e1;9w|!9 zYW$%F{*z}dYhJtm&RVj=S@74&060>%$v9SRvtt*pO>zzSsfr6cDw88^<2I=uWe48p z;_(Ttm6MSQ9aiB`><%k}kV zE!m-g*JYXHA(iLt`hHzus_RcjZX&o}a3|6{HqH88^=&&ohjf7-W=mv!%ow{*b~%4z zkmnlUkV%)l?P&3V_scowv%%A51f6g|!PoU=OcKZ&xxS8vbYT(%EDY1m@z&QIDO6%d5J6ho3af=Qr zuG{7EynfD-9Zqodq)Q*Gb&K*f)fYUESm9ra z5i1-`F=B3Vk|0SLoC6LCIDklw&1AsZ}DBQ6)l& zR3el=B|>RaB9tv9LP=60lp7^NDN!Pn2_-@aP$HD~B)USMjt|P>5uxNAk(9Gz`c&ip zM;SUIl$ayp@^Sp((s2CYvTyw1l5YIra&7$KQf&M|nKdGmP$NQlG$Nz)8KJBh5lWU3 zp&S_zN{tbrj2ID0gb|_q7ZFN(5gBE>2qn3QP;QIp3Vk|0Ql^IKQ;pxHybKXZ=@>5A zXZ$;teBqCjb7A^a{7O=Wh3Qj`-=%yC)2AB0qwEQhlr&-bRO8>J6baL(8o#52NQCo` zr1S^Vr^=Brk(BHpA}Png^r^YWyx`E0{jj_+83PFny}=yOfDw z`c&h0Deu7asmAY8mVt<*GQ=KGpbLo~Sc@s`0x#Eob^v<9B%y z&h)9q?^o#4*&0N~Gf9#skW8Oy{5wBgW27rcX6~=O=#rF`n-c zp5_tpvpfFClRBnPHGaoaI3hfABjP7){4t)V5uTo1p-;a;pANscLZ1#hT%k{g9j?%) z!wy&I(_x1z^y#p}75a48;R<~^>@eB*o??7YHNK}A-_won*NpEO#`o*S_e|q^mhnB? z_r(^%MLh1Xjvg{7kdO%Jod9U{7(QEyeihb6-+HjX!jJ;Z& z_iBYc-M}8RW2tL1GZyseet+EPwf>2AtbWXb1${cO<1g9vi}kL}Ay;3_ItYEb(YApX zZ2J1&vtU7=4m+$Vy4%_|{fL1@+d!WV?Eb%Oa>ETznKOA|hlU1(%wbDWS0rcr;+wcj{R~-qRFV1j5uHHPi)&p*XK3)8*-ivm* z|5)?|eLD1A-Oq*%JK_z0SjufP=+phTj9%+^J@k-G->Vf?YzF#t=+Lr@O|D+Uz@lxS zPY2e~$!V2KwJma)KE1fuCpw(zXzRDI!ungVzMxN6a&0<9KiESK%J{@w)iw_2Ux}25m|0~t%XOXyr*a!M_VAmAc;!Y%< z>CM>Bgg)KCMvs#uSkR|K-{|p|B>sXv9oX{Xy3nT^eSFMki|e+0A@u16_EJq7wj>WN z;3Tegl2F@-v&h5kEuh1ATgI{tNna$Sp6wfj%8_%gAq%TR@*4+c*Y&I^;&r zZ!(VEpieI^?m!37r=xA<CmCP z{091TU>)V;A*N4{HNSyA9davovbC)wzeyj1J{@*Q>|)EYk$j9f4CvF*7ikYYW*b8) z&%Cm@cmd$42jTX6}Plwzon`~HpnZinr1${c?R{zqTTV@zo%qKyg z4nMnOpQq9gg_X8}J{@+b^P5cv|6K|zeGK|^==;Fmwwy%`6jt;V`gB9z3g>Kc^`9(r zd(fvthdCF#R(}Y;W5Ei2y3w|`?CT5vJ!%~wxe)Z}kUJye4y#-`q}DBx3qhZbw*6|) z7kX!f6*~xhx*_+n{6?MBI!p2!=+hy$y!;0GbYM%lYonXz_ClX-U@u*?+1I9n(5D;v z{(9DiEos{=oHvC&-HRg0Avf(ITRbbt0b*a!rvsbVCB&V_up?Mz2&T(__FK%WjB9Gz@Bl*pBJ7U}3jlx{_PLrf-Q{ zi4Q`buJrxIW(S+Tpihs@4nm)9V8`EX(;>3fLv8_mI^+)Y*szg)0~Yk@${(z8vcwj7Kdc*C7OV9OiFxc3)Ze8Am6$UX9w zHNV;SGI4(pbAsU$5FeuLWg7J9k^{<%lemWneOLFh#ni}J4||!os|c(s>K-2E_PEao z9a?s=#WP#Jz@0~6%gaN2FEZBrhP#tWu1$xM{3hcK_bY+DHF|!NT!=fEz_yKQ2jnc! zrvtmGUl&^rP?^kX zMtWGShs0)}PY3pJ7%@uuWECRbU*{#X>??yl9oT2S@L27jzpmtpeLibRIT4+tq1ya=x|wn)4M3F^c(2YfxYyP zEw}jZQ)@lJf<7Hsdw#=}59wpU3VphPZMn-j_dIy&1oy>8{rDp8W4F+!$A}gB^cb;1 zpB^Jt=+k4w3VnKvSf)=`Si8-LmfdXZ$u#A)Dd^Knx33)w`t;bapihqt3;Oifu%J(m zf(@@U+D6hg(5J_S1$}yKSkR}(hQ&Sc*s!=u9vc?-&11vjPI_!u+*^+gi@WWyVR8RG z3RYJ>iE)fO@&>lZ79VJV>SNgp!ae$Eax)ZG`~i3EqhVWGu(*$JU@zHp2rp`C=-4fn^DF=V_~siA`bN@8uSnh8{1!pY zji&ax!-|#q=DKg&*Mbe?;>ybRYhk2SRv15nI3EjYVu&yu*kMi?9Ju!pI#=G!;RPs^y#r-L7yHQ)}T)>-6tdc1|2}3 z9vc?)=~1xqDcJ)7eLApP2Xwc_9je*V@ZWg$U#3r2^QdtvlieytaqK%;oRNgz7slt- zdLSh9>Bf0%$J>BaYmq-ASe@mDgg)JfeeRY?B3G3epacIibdWW#8}#XjQMrY6too)a ztUr_W1${c&wsy#}kkVJa4~#S9`lW3`pKi$gWLe#aT#4)H5v<4+`gEgh3#YY?Vu!HU zLFm(sw%vNmhgKcpUR7-q9fUsJ(06X->qUo%9n!}t>{7lTCG_crzWa`^5V^{}e?{!; z&*Z)UeLCzgqv@I)iyhL(7;@3aLZ5D6)8?%bxe*=0y26Sbgg)KSq5Ytbta9V5SfNih zu&b*+Y_V?ze}*Af^mPk;x`BPLSAz&v^!ATdSg{$uOXD2N_u5X}8MN9rJj%d^MPGiq z##p{%_}~UBw#0u$ZiwHvF}CsOwf^q4Z;0r?Hm;z*qI6*Uy7>*9!tQF@%YrTG3%v#R z1;3M1`i9=lj_50L!y^s3By#yJox*kteJb|7ypN^dLj2y2vD`M=)=+#h8kXPWDeU68 zpINXKNwp1q%_Fq&81moJ(h{tsm(NksI+zUCyZR))28|aQ*cW`*KN* zl754I@g5P_TQ_5DM#hn@#t`J<%_8oiY`(LnO$RlOrJjKs?;6pzo*B0Ia3F#eU&q@= z=y3Ag$q~712ht<4g#FA7`gDx>fzy{q{0w7A#WTcIyrF~+?rd9}3`ek{1KwFe?k6WR zZE~&g7jH3vy({zIqA&Xn|5PKL^TkG@g(4U4HKD`kT}!QUX}mEmbnzX$>4Y5?zdb1; z7j08m_$1zaqAxbwRFW^mX6Xt`#5Tj*Q0QA;e#84w=&<3YlD3Hs5xKB0-k8RwFW#X7 z>+KJH)p$D*iR{1^U! z_qFJ^6&rg*d|j}Sae+R@8{F8&8{X-{zUFa^F{H*Z;yT{)0;?PGLH<6kgGzFtv<>fl zVF%raJF4I8aR+aLft`MLKzvCkrzCIMc#${&ym@y;9AWjAk%%(<-k zVh)bC;P9QBb|V)?>`<)oCi(*J#Uc0Y^O*Nt?hi8e4B<^Vu$^X1v5n2hyifWV@6Lh! z?}n&(Q}&?oHXYbu4@J$JA{X!1G3NEYSyB2;Vo3;Z++m01qv~1pjm*Iz7w_Pq!@R!B zEcT_a%CX27cq{LhG30(L!7`638AI>~yr+i_J6d3!rTT(MLW9(z5Pmfh!rcYNol-D*KaK+|lOrOqjW9c`h zPggoTof^%5{gMlrK3%o#u68B!Ngi`Wk+DfFIR`L(I%9cU?0gsd8Y-rm_CRD^$n@z- z-x))!a!cmFh!0GkuH?2o4SiWI$A=QR7;j9UuH=pxaGy2yEu5~_o02z~KAo{VHk&nl z+d2ndI91KTW$ncD=}K;mv9+yo(#P^ScP%WE5InLuuN{f2rc=;QL*hMFkA zme+5nn-W{Up|%RzR&~=vs~v1UiTW$CwGA~|kh^KeE0H;Yn^e6v(l#FVbYPkq7cw>t`gDnXcdn~p!%k6H*+)cO8MLip-g}m{2>B-&Si~LF zo&i=Hb6rHP*dcC$k}Eo(J`Hpz&v#J62K}aAH9Inwv&J*gAq4vL*z^T`dTe$8eLApB zP4?xsnbzGhw-@?!16!W|f<7H`%j-9TK0T&>1ATgIc3}E+)|dD2%Ii1Kr$dMG`VI8y zvGp71(__;Y^y#tL0rcs>me+4gpI*{$d&|rhOrNgSZ-WQh?g~>JzvsnqG<9<`eR`}| z(5FM+4MU!`jv-pB?nkvCdN2g~bYLgHQr(8lSJf$yKm`8?C7E9}%uDK>1RZ7uj*n(5OO_Lp^|Yk;vbIsJol#)0KVa4Cb}$09*IyyYKgRtB!_U}e>}PJKPggd( z@M1~Mf-R(vjWN{K&GhLC``MO~GZbKz9k|~f3^9E=V|kuh-q;lSbfaw(o?d0^x9|-Z z$EW0+7xd|{!_!;$Te0C?O`uEB0-oE0J{{OX{YxvBUNr8wyz(w%nLb_VkbY;b6{~MH zu=SI5#U>&5lh7OlRF4Lzgx&D?*E!Z=~8I0XXbg2oSg@QgEa_Os`7A)yK zjr%(p3t0!yrvn?F6|iDyl!1i~LZ7bWx~+066SXnx3;J}UZCCBH$UReBZ0M`M&H6HZ zx{|B^`v(h_Xf1Tm^*GiS^yx<1j(ujs?l7>$(l*ei8(7B*D^~x(f))C7g>Amtilvhl zEa=mXww?aKhOJ=Sr9vMweR@Rh9o9V?2kC~*fCYWJA@}#!EOIL=tRMHeK%Z{3?U#>A z#~N~lK3!oGW?HakiZfV;jTH9rJux@v(+#=#J4(kI{l@g^5xKLMTd=2;Tmvig=}K4x0yr)}7wz#iBrb};DEC0|hI zV^*v_(jr&r)0N!6Z83_*Sg@c^H{|a5)*{zIlpte14)xZ3Kq2&K%Z`4*Mv*Q8afDly29?T#p$bD~J>Daii z+_eOKx*>O;HAY3`8v24h-N1IUj-d$F&{ycw71p!eqQjZuVvJ+I+{<)>KHZS}fpxq^ zuzE4aR5#P7vs_*?P@hjrmm3#mKXWsEdIVdzxJ)e5r$_X?*&0(LI>hNBm+8|Z*jnqO z$OV?^(<3_k^5S#M1`$QhzA*3M58wAZCpC+h zK3!oi6*mzb7-z;_%IG3z9Za9jSU%6X{7$+dH{4au@|ixpL|@yxFWdcfp-)$RT+NQn z#5gwY6&v*Fh!1wT`eF+f^yyKs{)GxFaR>D2hVR(r`rlGm85f{WH|%@TcCT2UX`t&F|&?tqKb3KDT9lmb2nTplM9eU8G8~WPoiRt%Q=uwn<$ryDxhvHp1mR+o7c z=+mS41NFAZ1$}yywuNgetjy&=pANaYy+#5px7-~EeLApyyPr`l3l{Y0z{XvMU3(Me zsd{6cPYQjyfvsl8roYAO0A9B+)(!e}$Sv<)G3e7{!-76NHmpIPF5|d79YCKR8y58G zv0*`<9vc?)>9Ju!pB@|5pihs<4xmqu4Ga48*s!2aj}2?kr^lo(=+k4vf<8Sqtk9>& zhy{ImY;r-L9vc?)>9Ju!pB@_)^y!E@wTId31)bx)ppCq@!s8h9>5zNf`hTo@Ao_4) z4@BNWx=~X(HmpIPF1h8bX063R^rVt2=Wn1-huj;EBwFS$r%;E8_s`@_Cex>@{gNtE zx>~SAzZh+UT!TK{-)!_+|FFZ>cYs9c3M=n7L7$F!N&QQi|CmRmB9<38|<+=~9Sf@S)2-fLsIm%YDG`WAl5XTol#PiHL8 z`-(5iZ^nDxd4(dE>C;(XKKH+9!;U__Nc8QP_NUm4>C;(XKHp?4=A3GevQYf2!hwCF z1JkE7Hj2K6Pc|2<(5J`P$4sBDuth$cB^i0uN3;^}Si>2z)?@l~#&REjQjGhP5v;yg z-pA@qQFDOl)0NzlmrBmF7=OAr!^u9WzZK^9yl$pXS8^|0u)VGJ&xW5hYa;bEm_A*} z?SIbp7M#8ZcEhXko|oy<6?WU-_u9r=J?V=Bd7I>2Gt;Ll?D}uMvBeS}{A^8S!7_b1 zW4SM8{A9bYtPc>Z{?iG0tIYK2O74hXt@}n4o&s#+q0%;{PgmFnx7cDI@9mTB^KX5Q z*DWEYPgmHhzqg&a`;GH}`KLv$(5D;zurQ}`a-`4L*TOqQZrt3d(l((_H`+E~`@2?~ z>H7uSExjtALxw<~j@Y+gjBOo2Cn5Ky*F`Sq)8RYX5NkYBHGtAT{Fj_VqV7B7zS7qk zCmp2YO}yK+m~{YsI~=ssg>85IPx=`2>5$uP_f3|z zseU`q|0-!4=+l8cS>tmHR@GC`U#=!PfIc1A*#r7mu&OTA;JsBuF6h&N?Yb)7;*+Xg zP~7{K1q=Fg_*p1i)q+)Zw9@k@O5Oy0I_z+uV}?bCNWGxI&&}A+K%WjBZvXKbi(FMN zD7^h88E>FZ2ll03ldV`)FKEl(5+6XH4(!P}8!h(~DwEDN5`47&F7XG@rvtmDsJT_H zsu$GFA#aL7pAPK63;(iWRo$8Nv9gW@eL8G5{!#@iR@Jll260{J(+#;3i(j!}jhd*n z#=Ory3Ho&CP*_}YM+@Uq)er)HwrG-A-!0My+8+R*J-X!D9 zaulCQgg~Ee$n9zy$4YKBU2F#WbfxbXHh-|{3;J|mCl+6A)mPbps>!+=^y#o~^^1R6 z<=X5E`gF)0c)^z6RKFb`DZT^xbYRyM*=vNM_PKuZILU=VpKf4>@2F|fA>wEHvtkF( zr$cUe{tIpjV9Og9LZ2Svcw_o>#`0XFym2h_>4pyF#Rt%*L*GwRUbEPtB<`e1ED`#2 z1ADSYu?4H*8T~y&#wO^~A-B9Z3Ho#ue{DHH)w8*+rQ|ozr$es34)2{J`OT;UH)B8Y z8|c%4ZP~>d*HykaFff_h76N@bu;t|;rcaMGzcGEf>bGceTi&%)asY@4(8q~gtaaU$ zzUj^1T*C1e^y$#I?xT-d`@*op#1qJGpic*O+jeU{R`&I4ze=nIeLDK$sTZwzQ{}hx zzQ}K&Plw#2HQ%-AfZDM79qt$K(5UJe=`1v#1hb_L+<&FXRZ1gbuINv#{~=e zbm-gSYg?W->Sg->94q4j^y$DZJ7+zciPYizXo%!k(5C}i@vmR3I;i@dwT6ohpic*O z&V>wH+l<<<=TNf<^yz5ZTbFG4Sk)ul8J0LH^y!ApUdy=2DmPN+6!{JG>9FtVjdQG6 zRX;T;{670H=+mLYg~#mcETcB8k%xpn-N2TY-$0)Zx#eNOpA#Dv^y#r-L7yHQ7WC<{ zVL_iB8y58Gv0*`<9vc?)>9JvjK0QXP(5J_U75elTu|l67BUb3sW5f!5dW=}1Pmd8R z^yx8Tg+4t-tk9>&h!y(u7_ma19wV0N(_4)yp-<<`$Tc2~A60-RGI6E;O&3Z1r2oGN z({&%nNOT{FMsy!YM06hrLUbR6lx(~&Rbsq{7>pm16)_o`_OoU>=L?{GIgd)F0DB!F6P@Gryq42KmLs4Db zhl068D27XfLbpUHVoQVqwL~aBON7F*L?{}IK*1jrdnH04SF#bN>pm1$)qN%@3^5_a-x?xWgnIb{~DIyey zB0}LOA{2EZLct~?6k{Snp(P>|Q6fTtBq9_)B0^y!A`~qmLO~)T6dNK!At53Z2_ixP zAR-j^AwuCEA{6BzLctv(6w@I>p&TLXW@W_XVAMo&pALsCgAKvhXAJy=OAI$KFAH(nm4_%1x zh=qtBsPG4mPl)iagb0sD2=yj8{~Nd~gz2!?6~c7b;R<0o>~MuJ9d@`vm<~H!AxwuI zt`Mff4p#`%VTUV(>9fHrE1%2uUv;(r%I5mGmc#XWn;jvF+n>k>u3XrFzxk40qag!s z8`*8*+R0l--p1v_E949d#rd|nsr~k>$l)xn8;di1k8c~;VSdrXb&J}L>cE8Q)%U)U zbnfM=L)3DoU|BB9%qhv!#~k;;VWKiph7`H{Zgx%Iqkx%8xTxTZM6 zcW?Tj)P0>Nt*`g(s8l9QuN>Dk`K7qRB+A>Osf&;Nopmw8cPevj>iuu*S>Jy6=2Rw3 zpIpCf=x`zqVM?AG9xmjGEJ6!*(plUzM z9ep;#SLul6sXza|ycgSeJxrK>;WUM|J-WcH-}jARl`XFME5rBo^uC_-%CF`P?ex5d z3DZY>xFzS_VF@8Rx-TM^@mqe)@O>AW;^{o+y}Siaz2RZP^upPba<1_&3x$6>WWlcb zDZ^Li^it114L9YToSf}p!t{-CvqHW8IpZ$;c)A>pDx01AI>YC8f9x5);6PrJRiAs9 zFuig2aiQG(KZNwhP6xS7O5f@`GJFdc?DOnxU7Qy_{+ovh)7|?9hGzbFE=jLjY|-JR z4H>?E&z|-)|Kr;Hn^P-!nJ|61HphLm$^KCK4NY@cuCnj`V1}>nKb5_7wqgEDooafS zFn#7!Z)n(4^OOCTs%7)vSNi_7B*V9EPfhQ`y<6meU3i0+3Des)Y8_ftoSGAN{k4Ks zI(MI+;mfMs!28TWXa05X-t1+<^p!ieB=_#yI9WURh+Ozn*w<%f_`aCZ*y~Pjmw)Hf zR$eAdpW1MHXw}fG+zamjR_Rc4YKHHy^A_*FH+b^5j!pD3VfxFJjwY|@{FQrITytp~ z%jKWC6El4Go@ws==Wk#Bh!HL?6Q)-#`Xp54$B&YS-vO+$@5b>NzAitt@b0K|NB;H~ zle|or{+!7D-o0>a-E1Y(Ece3SzWkR*xV%i5K27wkSFXNHnEt`eEy@4sdwX*FCu_vl zStjejb|^I2fzK$kMy*3DiytZ1zI={h?>8lv`)$phn%#NZx&5lx3KM~4osL{jq_Xo((~JqS(Q_3j%&Dn=iVBrOql*X+xPkJ+%&17 z#8ee`IKSPKJ}7l>=Sl19d^;+Y3DX^t-@Yid-#EW@G4dM|rpJ=s_MfQkVZ!vX@*DdZ z=eJ>PydEY@FDt+8o!-~;c;#2~hIe}2!-VPOjSJ3i3!i$!!-VOdNq$>i>UgVnda36^ z!%caAP0sc(VY-atk*D31@VmukoZs$rf9!dA!GXM{t3LNIVfsyy-+n4Jzb#s@&+|j; z;=E6e|K?%B^s@5X)6bsvwEW}R{AQ_@yiAy0R(^ZppUU2fXB+0f+^MFQ3Dc)e^@fH& z^=k3~JufoX;P}UJGH*{!?|*u?$lqIdgO>@@IsSf7JTm9x&~=tr&G{`@yMcGWL1%v5 zcW?GGVR~6{{mUthy=~Lm<#(Lg%FBf5<>j}Y8$9{j#wL21FulAybn$Or{wpI~UM5U0 zE5CL9sfG8mN_XV%d@;$(gy}aHUlU4ty^niFT=Ph=EVe_1i5b2WM+%NU=g)Yvxt9sk z@A%CdYW~F{clcN}OU`=j-3*`m+q&LeE!*VxNoe9_!t|FKJCh%Lq-7{B%@LWya6at0 zEW@|)*tOmVZfTak`s4auCQR?1KPdFz-aR>b*RZrr<-(Q03}3i;6)&}Hl)rgsO)nFs zPi%iv_Q{{$&7q5@WPZjnxd3aIybRy=w0}IWcB`F#=Ob0TOqjmy+gTyce|EX`kAJhw z<<5PQ;j3}{sOO8ED)~FFKj&e>^x?;*<`mxWnLFKA!=l5mT^YXBefM~deRd|VyX&xr z3DXD9$PP_y+taO2#5`5$JL{VaU*}K5p3nc;pI5E*E)Nr?&;6ug=-I^ga>9DuB-T~U z2^t*8@NK*MLr`X_|CktKlPOlDX-J<Z~+|*R&GFs~?*4BPLU)EWwU99t-;tXHHrmY3G z0K)Xx@|zH*>vcHI86WFfZ}IJyuHv;`i)xj1CQMJCmae_|a%VTukOaF9)i!PIaC@C! z){S{*PX{JUf4FyF*Ly#uhsZy3rSb*-=C)1$>ebYu5%bpfJU2C!3DYx*hlSSOvcXLi zKa2DQW7%eBU)i5J%CH#|rqB6kNGKetn@oYPWL>Cyhx_6uqc48Fp_PXT)3r;%q~7mb z@1|{sBI`}Yb024R?c&)!Y*60U(;x9LVfyao>7gg2lpA^ z&RPBF^&xt@MnJWT_2rnFWQwVL&&A(ucTSbF>F)3d!E9X$X#e!vh`G?n#_nm1jYrT;pTwW$jzwNcGQ0qsX zDd`)US=RHsHvQSOHsw1$?#H+0B)Bq@X?=+uSYPv+m*)h04=DGR-8ug$o|{d5AF#B| zyq4y<2HzFh-urOQu%`|s)8U#Ho2fPWL%mz%?=HN-%lC5(BO{kLbPj9B=#|$_k#9M@9TM@ z@~e3xIz8{G&CV|kD1sw0}G(fs@JMz-;K_`cPM(T|0CJk>Qs z564B?##ps?)%V#3dEcL??%_LG`L5MT!{g2;QQe=VFBr!^yeD=kb8Tw3H}1Br$Lu@27D-PZl=^k&N$caj9hJ&=yQ+L%De3%G)k2j1d1P;p zq@BS*8^AP`S zH8xrH!skoYdUB7fjQqw&$7(N=@0!hf^l5F>#?s}+4;gUVm~Io-&e=NhHolM6r`Ic? zF?auzL;B_V4%#-b!+S*&*R5zfssrCyYw&rcq;peBx5ICj+spiS`k>SwJ5O5Qd;a=;j5Gv2l_?}&9{wx0QSBCHV>3uzY4gY1r^s>eU z?}6}IkH-ZQrk6F|%xgWq(^u9wR(qK|j``kStnq>G26Eil{>RX$ai@i`*5mtwZ{6r{ z_t6WIDdnt-{g8co-^5P_~^>{Cn3Dfg#*`2fYk~3=j{jagsW5RUT z<6CnQUGJ6}*Lkhi&RFX)VS4-5vO;YhZIj}E)w*_4`J%@LPyUv%iC!j5FDno6UZz^> zF=2Xn`Ax0$m@vKhJGZ#Iy?(u$>LPC{oBcc?!}mi%3vUI7Kflu?mzN3Cr@fXH`ts=d zO+?o@dTi;E=S0!&o;=^khzHq~)Uf(zE z^DF*xtCtDWzfIVkQ@7}eWO7^c+dXqKd{r@RbcQ?u*x)hmLv+t~3mEp@=agF!E7LD@bUa0A1!t|rv>x2fjZR@7N zA37PsKP>manhf8Z=N#Vb`)lV9>s7_egy~=2zA<^NHa#b!u7}LZfq@ zzk^ls>(n{tVZ!t~cPE6VKik7iOFLQe#S@=q_>RRL^*r$DnY>`aVGk3ge~^|Ma!hU) zqPevrb7j`yk*_j*UFmDjn4U^`awbp?Yu3Lvlx5$`wU-|EgyUK z*V~eJU-LB{CQP3@xqE2niPmoF-XJpHVeFnm8NMe+uJSnVU6D8NzIQ!LnEun^$3my; zbqeYGvMlSYs=sCU?riaBuy5b0Txv-t1x&%!eqzW3Mn^sG4CHZQqBD-RQ#4r@?0kmrXrQ@g+J}@kUoTun_4JEOQO%YrW#lJSSLu%WZLd5894ZeLV61u=nQC zQB+&}?_m-|#GqVM#sFayWk?5+bf>}~gK`nLq9~}Sh&UmFUIk6k3<^qQo&^juA_$}# zm83ffIH7`qf}$4@5oeS^L?+2w->Uj{PVZEA>izzBZ>{&JwR*L#_049Vz4zIts=DfY zmSq{82KEhy!%OoIO}Zu8 zUS6Yc%ZvAhujzdxglD&%wD39W*8avlIn@du%DpFi$(_H4@O-z_LI;0u?0&cLN8-7H z6W87m4nO{52+x4W()QZ_h>>>W-Gb{Y-5f4>=*tj*=}ubMZoG7~kw56Jf<*`0gbUxu z58;KMSlUB7vy7Y8?Cr4Nnv25?CQrvM&!x1?+oCT=8>_e6m3DgjrqIzJ(nA2I>vpMw z56zMvH9GWpFKyV_?xFE*cIN|_9!ooM)!oLCRp-*qZ+|U+c1uq_fa$uH@xq+D`mO%P zlYdk*{x^SV-pdnP#q&c7JA=7yF50Mm>1G;Om#y?R6ooA~^=^bsSg-nO*esj~yq zM*ouwV0zBk|FvGw;OT%;*1TXW#%>>DEWPXBX^p;E9JnlDTrPm=gXiAbdRWTPT%|@v zU6b9oCd){BqOY&cZ%YDIR!rCkV7fo|j_cI%$2KT6_;tpCew0(?60LLaoW&L}J@&n; z5d#ulf_B}Tm6Wx+c6aH_d4&;peckxA8#+WN!50BgPQRwJ@ zYUNwNbU&`+QJ$sjerel1Tkhg~0MnI9H~qcn=x>u5U;5kF_V>!q-_HXuU8w;v9O;sUuRjs^w`=)1MW3*JnFY9 z$^xdBXc=FOF)f&7pI-%dUA6?%^&K8LtW;CEMR)HmgiCB-n-j4_tKeyF?qL!caHohWC7FnVL7s2 zrLl4h{VyX27#F=$x$w|SL&JNA{x4(!)1$SV6J6dOWQ^LW3Ns(SGyM1LZ6OPo?yMdA zz%Zlkz&!=!YkR_{r_Kmj!1NL=#!tH)*F0rRZ#uOg_{ovbfvvSd)_W=?T0IWUzsNAI zu3xd>%CGMXZTh-yzV$9k>y}FG#Luk}Ep3-qPu9WQoLZ-7f%U#iiB`|sl=&IP!Rszb zYk&40Z;p3Mp7l;lX)XRHaqK9gg=bOPfd|ichi}Qtx89qH)?yCflk(ZUM%^Pv(k|KI z^L_nzO2~S*CRz)d(2mXPYs{^BxzVM~P+#7W|AwshZ=&PCSe$(SW}|+y+D6v;k-mS{ zyb!Y9(J9gD@txJApE2v%8b;djyM13i_H@X4kH=X%vF80o*WtgVb$B4jw`XMgkoB%l zw3fE3ee%GbZT-+CXYLp7P!Q)ElXJi?`%i?+iuP zFYQ{nE4c@P_ljm+J1P0>nueP;%>E+s+ZXh={gi2(>mLrUetb!w%V$U0;@zVTzYR&= zd(*g-pR4RZPcePKcmGc_jFqb^74$902|RUp&j!4owC$oNlCQk3T>Bvp4vlO$2fLr| z$uQP`SFzxhy8p_%W!~_Pc!%kch2CI#rzP!9{rE{#|9$OHhLL<}g@W_vPv`Bg+#?n5 zIo(q;IXL3SH`@6dUTONkvHkb&3}e?Ts^IhDC-S#1-I9uTp*mmQJlOTGN+})A?~aTO z{uW)5X(Y}*8$K{Jl;63imKX0!P5Eu3XMIMu6z`TROb`Um*UvY|G~UYmE1W&OeCVY= z`*`tA)gR9vNItiyeSKAh;6pb|^_0J? zL<=82?V4$Hd;8~bMp5t3eUGp3;@zz4em@*|;MyuFs(1CMu|0lkrqR3C!SMZOo(vUK zde@8hw+@~DmuGK&kCdCbzHe&bFJf`{-b~}rx&MXJjF&@8svh*>9j_kW=Ld#n&+ue_ zUe)xMF-v_c)2ROKp74{yUJV_tUF^ksV5>vR13lK(O&&4t_ed__@1y_CG{#lh89uOO zL+JL$FZJPFv8$$c@F;&$a&TSch`+GCG9%M?VeCiYW>;?sy*9445AT!tuXrjjG*mSu z)aackf3F^&X^g!8y>NEg&QQlCO?`OhEU{9bKxWfRQmPeKjA-FQg^8I)zx<-`%nJKM zU#w{B12FyhgR_G>C)}LU;m8(Ki(Ejv>cvdMH$N24yW!VR_eWBF0H$AZ$Bf{wzphBx zJ<8I;SFFo7PtG*vT)H_teB+5w=Eq%p0H$}Sd9P!gl-YOk+xmH^V18 z{1bY8@l8Iw1LrT?ox3&Z$CSOlpEF~|T&&2>G#)ArgqQ9p7rrm=79ZY|+wf;W?ucFU zJn3uxiPR+g_%u7y_;P7(c+962!nsHL`S32?fkAKO{!q6<`$?S>%}q2|lY6r>jnOS~ z!-K|E44`dd&Rk`6KA5;jhIMmOFck=w#ewkaf zTd$NuLrUzzhgY*Rjjm0D;eoTth4b#d#fSIy-aIxnc%WLflx~S7@kPx3m7QrkzT(aB z79Id|1W)ATHuPc z&!;?@yw!{^{(WfulQNCsmkYvUMji?+|G2#m?+B)UIxO(Qw^dU-Usa0A#n=g%#=O1n zgol5!JCxVGr4R2B)_p8HaIWR^DFen?HOYFoJ2TU0bm+ry>)*D9ru|*Vhj$I%SkTJj z|8_!3liM0a;tN04K9y+_m=N-%?Dpcl#`mv1 z7pVN(_>|qbA4J9myWX2Kjh?N33?KaUuF#3;8@+hyf@7|)oU(mLjffBM_stHO z#^4UWhsPgD4s|{=)r@a{ROcwh7G zrfI>4PgP9m^F;I-Fz&kyqvyy91*@9w&RbB}A{Fm+Zfo;oa+_=CwHuNiFgLMh|Mh>F zVdSr?Sn$@x-n=(P&gqEvKC8SnEcrlUMp@`=kH)?8e}foQf$unrt`YfSln2yWJnIR4}}9>gFzUXWsx|y7ZT^fWLX`Di*B0 z*qc{x=#fazt`!#8$40GK}dr>lYo?%v%lB$2|vm_F~*VS(}A zR!y1o?-P+Z1U>uN$WL~MHg|9712Da;KKb0pL!o6KxAy^M^FL55V-n*M6B>sqqUb+deFcnnPGGx-<=j z2hA!M-hB5hJ^<5)otPZNI@GmQIa3Rp_;4LM_Cba4vP1oR0H(WL-vCTMc6f4d+mvp} zjb>XuFuqtfN9E*(PkvS*-1B5VAAsqJsV@gFy17?M=dC4L=vQZF8ZZ742xt9RE_~g= zTYLbfk7#!yH?wZFl-?5(&GS^$1LjfZ>`Wtka#Q&0PyPulu645y!1VinpB~IR@_fqR zkII|%z}k6oa;C9m$=l()BY%Zjf7I0nV0zo8vx949-<)!8O@*j6;F6azja&BRhnGEg zIJBvS&j(<7`cK^gZO6{>R9kPI@4#2Av7b%MH2Tgd3{QFByU@FLdVBz;H?KV`aR1xo z+fS$!HhUk}`PmaPjRRZW32&&eCp0;ur4PXL?Bo{$+vYb*K6FL&TG+s!Y3%H`Equ+? z4?<1fXy5}d{m|z5fuAcrpR%*z5%XR#UY222!BmC4qZ-?HgRMQ7wdg#Az1QKTU zOi4U=aa29LGcwb-Z_H=m$40*v8vROTAAspqy1X0s`TiQos~^53N;~eMOk?yvUxvrj zpC1}t^)D}g=@U+W9cVMFN{V;9bxw;s;B)8Qna03^Z^Ca^o)o%$<5yk)(+l3e$n(QR zhf=n#Z5-7nTldX0ZVG%K9=-I@(CPtUFWzx~ty87osqvLlf{!Ic)#UL`na28Ezl6Jc zdW0Ia%kcu3-Z!I0@SP(sd#WT~ZfaR)i`!%xKUO;$ZgpAXP`A&fslEzjnw(>=TZrr&+8Mew$7E2V6B%(@n#-TqZFjqj(P3s2p! zAwTinOT7T5-}(Hk`XOjE z#Mt|1rtxae&EYmrFA4P7vS=fK=}vJ#d^6i;8Pmq(gg;!eBrv*Vcq4%6&)o5hX;=F2 z-$$~HexJS={?9v00(EzNwGqJdb1%+~@|QWDFeA(8w&v0BW&4%{u6yA4MgY_It<8(_ zmvvUWHp}Q*t9N+!;U$4%yUXVSm|nN)7p3eX4v&Pgj9q`<5T1W>NuXWJi*o@?ue;^j zD7%br&Xz2r?V5JspH43cj6G9*1AysX+b(kfA82=nZTE}1yVnDl?#AE2!(LhkV7i+) z_;0V(2EcR~U&aja?fdDA;alHX5~!NLt_^_cPI-gB$lEMCZ|&0)+5(uqdShB}LQdC| zqLbUB<~-_QS^fUrXHr`L(|eEl zHF?SnHQMj|dxu$*?5U{Vd+hq{wP;ma0Mlz#{yA`9UQWBK7GD+BqcAVlj!*@QzRC&g z?6m%ASdv|;XNAwOrLh|$GHn{c+!(J@aw3tLA!i) zB~$y|;XNAwOds>>IFG-{tc~SsSR1{w9^k|4whymPue1@s^eU=juxhAtO5&hI(=L6$ z*zUE*_EyW(jR2;%y#JbD?(D89+iKK~@F*kko+#K-0@r?kcuX(L%)Yv#LFgFc*Zl2p+J{Q3B<({F* z`q*d}bMwQ$ZwN0qxg^lK<;A%GrY9~PmW#2Cm^mk^pJ8rZyQW?E$J0v!@13c>0l@V8 zKAGq^HrU-}&&}KF?OqRHdX)yrrN#z7*h}^tUJ@AcI593>b%WI}X3y zR;vww=^Y+hSSoMOBEEe-eKCC7J4*tc^VhWjFukn2ZCkP=aNI~}3t;-}d()%F#+pPu zEVg^~=e2HW3t;-G{PJ?q)sy>pzHUOCJ)?WbA-NpgH^v+)t1!}zMOWA417x9uYgTDZ#yUiPb>2C7|V7gm>0Zexr z2LRLE<_*Afw|N6F-EH0gOn2)qfaz}IfPIPF<_&un9T=0H{7KzBPtw2zG3ys=A@(;q z)^mFB+BF4%5hJSMcVV*@a81@{>0N1ferEgqFXsL*{LXgR14(MpqwqJsywk5^-xFEJ zj{S2&zkK+7D)vdLw(O&JCoZq&DR`ny3hZHC;CsoG&r)w$n`JcF*vr>{=BQNcrL=JO zH-W=7HwC}A^g8nz@@#RIajrPa7@6>zx5Mbs#?xDdr1k&0ZK}E7(z(2L@AkRWGyl3p z9?TzVhom;}{jhb2k$vJ&T1u^D9kD0VPs{HNwmNz;@aQF%m|BkSo^S5;O?j}h@x;j{ z#;EhNH)G$XKi+KYx%IaS!DiLEKw8)99x$%jotTe3qIOQa%hPA=$HASWCY%03YxaoFEqy(H`Xue<0}mN@=FatE zAE}fz+XIy@e@vdJC{0)uiGNk_U~exM}u?UMcvu*`rcBeUjF(Z*IXu z*Y_$c_;y+W_N?;!HQtl>^b5fOKNNZJ??Vfp2L&n`Uw*W%V9-a&g%3O#D8Rl}nfo8} zynR!-P1D9yOySyQ#^U_tMz1$F7X0UyMuiLazgvL4uM(c@?-}0h*qepmot`n1M#Jvl#*ZFgW@W7A*exc^U=8cz?nv@rAa;(~$G3ktA@ z)-@L|2yS@&$9CCcuP}1~E%Mj*lb_QH&!!bVbkCN8Un?vsz&=|)e)djs(<8Gyo}Mq6 z_aDyKwYF;B+_b)bJy`hs#GwV-M)xiNFun2BZzcbCa?jx3zpXLzcDgvr)DJp*S=#2> z&lWy6HWYr?`(YTs^r2sE^wfGe$Fu$YhGs61Gx#y=bS+>1U{+!4`x=Jkwm1?3Fx~BZ z12BEt*6hH7tLFz*hsLH|#+Y++`~Eqh?>~G#6~Od+wq^%9-<1{I`d5WWJ-`Rf&88cB z`EHpxDiy%=-CME)uXbJ&OxpE@88gneQTE(?X3LPYJHKw53SfGxE!lzD&E^Jke`{mr z7+QSvxtUgLSw{fVXB1@zF0Q*dc<9T;G3Vw7=VxyQF#Tv@cHr6Xrv^v9b-6h=nYaJh zb8}^&hcW1vqC5c82Nh-q4kyhE9=f_HGB+#Ob91phHy>|tSw4X2n+vi7cb^*{966;~ zBo3&D9$E8!eZD`C*6q3njHbI2^8rl1x*$8S>-wDFp+(`ia}&Vy%y4#K()%@nhyFb0 zL4Hx^$Oq=;b@tpG@Ym~M0Mow?We1+vabxiKrRAc0(C4P-PHzE#>AgbPfkEDO!9!2H z8|fv8g;$%Kh2Ksq05E+;es*BRr3-?`hu1fA!MV)2InbV)0H$A=pB<=IZf@}ShIVo1 zCV=T<^Rff2HdYEA?_1aGI~W^2=?!WbH*DWo(7R^M!n@x7umHgHA2w$PY7|Wm9@@3h zoI{8$K6`?f8ry4MS~#IkalwGwiV6Ts@3%QSP-p!U!9!Ww&0d1I;nU^jpVMZHPAi;z zyr{stIi~=?^t`vT16QRD3?BD%He&`I;v4EWH*LZr4;HqqH?*Kj!#fH9O!q?j?_R+} zWA~Ub<2>%O`?9o4KO0kc{@zfy(UsqZ0Zd>0R(7E7;WoiT;e1mIn~3k2bG3Y(mS+_{ z^FYJUGnds01DKxpR(4> zn*X_~!~R~m0H#-bGdu9=xmCeKZQqOh<^vxh+H^|`VEWii*?|_z7Y7e*{L)$Lv9tiD zSKX8yc=+iXg2#uYMEOuo6t+%dwlTt z1m&!4V`%|Qe=(39_+(b|;K5C2qWq2c(CW`sp8dUY0ZgwJ$PWDTVnOg&^|sD-n_F7! z1-K|TJ1~1mFnH|bRnFQrmKMPD*16e%HZ@)g9_!W4S?jg50H$xt-W@N)2A!xK^d zs&jVUI#^l&)BA7C4*V~%aq!>+Ups3PEiHiQzir44G%C6|c&ta2C?6tr?Kl9KK668M z;O+Hq2M@kB)!DAC1u(t!hU~z-4c-bKJ7@K?NS)DNTMJ<0H!Cb&kp>w@Ydi#-@B&2rL=ZU0+{~J8`*&Y z3(EzMU1ZInQrbkTb^uHt{zi6S*R%D42g6n`p|)IkyMArE0H(KlBRkOV>|?=WdDeU@ zrM2r9!1UwmvID~x%?}>D@y#fIBX;ev0hqpSU3Q>@Z&vWwMF~-Hh-j~}`~@)m>2=wG z>b1)SkFBxltdtM7zW}E9S(hDnbMr&NV=r`cwrkHJ0Ml!)%MNTBG(LFjruuQU0H*Ih za5A8V)M@RXxZQmBf#)R;?R($X@1xAZy$8>3Y`p)CTmaKw2+j?>aE0Gfzg@t*X2AI@ zdUeV-zoebczrQf6Zp}c~8g~Q$OkZ7ZSn`h*i&75m*lxxQwSZbXm4CmH`pqu|uXmgl zsJ1CL0APCVmCcd|9)2sBuz!2hJH>rJ$}}F{_kOtBT}uK>ZVLwhOqb7tn>A*iU+d4W z1DO6q^Q>TlU!E-W{O>!Xvy5Jw#)TVtM&`HcRXZQR^qn`|+UEX=kC|HL0d{+hecBkC zIj&&!jweDBE~y;?Fn#Z5z1w_0{N7S_KT5dU_@wdqf~HUX7TTodgaAw*c1`y-OA`7< zw6uMyXD6f5f14FfZdxb&=Ns>Z08HOI#MkEPy1r6Aypq)3xc%wm!Xq~}4gc}==OF;o z2fW(0&5$uoOKD$C>S)ZkrFG%Dz0JZ^N9+m#m|mrNQkz2BU;8`)rVQe**&K=SL)a({Pfh? zA?#Orpx%3}yIj&QN(=p4Cq@}p-mxHU?y_>>3O{$r12Em+cv-u<~iPFOM^k+L6SIlo_ygKUR{I*Y|c>zrKH+cBE#0uL>Jv$!u+--D9 zKA(2}^=I>Q9!>C?!1PW3yY|3;upRxvwTyuohnJr=zI<$4+83kt<^AKCm1+Xh-(J;9 zy|wKP_zMj__?y{dvWy*b$NBEQ&F9w} zy|BmvrpJEPQh&DD0;W4_zj{8)Xnp9J@P>MG^Pg;Xd%gusch=4v_>9rG>(d3VB+dza zRMqnuDI9ud)v{1=4~$zztCi7$O5L9XgN02LqdLcquIy?gm zTfp>aEn~al{Q*YN^2&u3-b@Nt{QHBD1xzo|GH3W6)9G=eVdkcS8TaiA-TCXkLl!W- zM9Z<^d*b5fjOv4$6g=~BkI>Lfx8_^GbZ0H}PX${iA;;-c?w)4>(@SgN!>Iw!8He^> zlh*k4KHjcl>*ia)^b##J_#hT{zVfKCZQs_k%teR2k1e?>WC7EowT#1eWBV9;D%UjD z6ejyFt2--X0nF*RHEhE`j`}ZxrcSpS+vViF&TG*rZ_l3QT_0L^x{Cvw*zMpTO z9brvzsVn%vu;#MdXcrq61CeNA88!kpHuMp0~x;1!4E?KrXOur zGdS#`o`F_JhezErzqai_W7gr~f|a+O^6mcm#xV9&cB=(2J>%di&zQaglSiDJ5n1Qq zhqMb|`kUFqg2Vrq2G`GQ+Ydz|+kIelEIOkj0aaeuZ zDc@&b-x#)l>F#m?V7m2gjd@Pm0{=d9f&VV=FKmMOR#B<87BGD)PTTP;!D~`mMWwG8 zW@+15!1N(&luE#>d!>4HIdz~JwB^*oW+pJ*ziZ9O;$mzUwno}5uM$^5Ti*XeGXT?- zzrpLLij5Sdidw)|)Gq$U`lL65zva|r%>hi`QGAc*?_yj(mbR-@j_E`B!S$L0nBGCD z;2*``Mtmr-3EQfvxwaHFYz|=h$@gCf&Q7}`MX3{J%yb`)O}xC>(1uF`ThD&B0>JcO zadC1J^SvPJT@77}TeGlRKK+{J0H)(tOQj}7-dWLep_E!_jm_W80;apmF@Why<}D3A zF?FZs(d*wfYmz>|eiM5?h1nlGdjo*!Epo>PT3&fY%7zr|zfkf%1NMJ-)ZS0w_4XMZ z0Zd*C<=Z9K`(4YTG2?dBF|MfOwJwYPdIfa$}7w+HS&TM#&q*3`7idllHPqR-&R zQup_GF|Ynt8L0rKS3Nl=*ze&w!8-=mj69zTU$GCy=~Zv1{%7`{Jl`|#r2?4V{izwj zmRlADcJ7%Gw*$cRcLz_*-TK_Y z;F)hOikkD-Php?E9|-o&12DaQ`|-gA-x$H|PX{B{WUz~UM!28Ct3zjdu~BcE4&&R_ z{-k4Y?=|(J_Ep3FB{j9ZVF65E+sZiZeiA$?(g^ZenIdT!1P|{ zMM$9uk5{z0Zc#e#p$+p zJo~3-$i3aon6cLNc~Sq3PrU%97d05V@z<a_w#=e zH>Lm7J}MWS$KB^FG3POW=|isFk(=50qg?g*CUZ{*| z>Vdb7%wWMhtCvuVzEj!mJEL3qya1-xx^+&l|NH%dZQ{i z=~vybAo%W)I|D~+k2jwUrCs#NldIlN?K^uO9e1}+WbcXZ=LAt`QxK$k=j9g z*?+NLP{LOksQ{+8xGdfCPrtu|V}^Dy`wrp@+t@GY2W@Xy0MlF6m>9@BwKaKL`%feD z7+QV5poQ%-Is%yfuRA6O#x(2^Jlb%s88hY$dVOzL0MjQdzQI%R?Ec{KtH(z5U#o`H zYOJw2@7=x-!1OCjyQ6~%`=j?zfnDqu7L9Mmu@<-eQ6|SjKg7jzo5_eR!;>medhc}0xK$w5AK_t5z#Wfx7zC) z_6q_q{mL5_1P?y_a^Ps~Wu@|_?-vAMI_lx|8~*K4{R++VKITGS-wys!%?n`qqbsTh zdK7i?JlA$zWFEs`z0R;N6@cmS>X-WkjqX0u3pPbr^Md;Y0hnIaeB<7*0H(W{$BA!z z>IE>ptp33D4Z!qmRex_+{oU%pXX-`ohljrNptesLfa&|P>m^qk;Y;~^-{eyLOy3(8 zz;xLsS-;#@jr#=wnC>zAZ-M8&T~(s$m;IM}!vdJz%Ixb6Ql6L4p{qS}?)y@ZCde<8! zCihydQkutE->@GZfa&uOqy-NQYLjv<$9iwkn!o&eJm0}y!PpNE!1P%wrg)kk9v)0QjC+YC*G^pDxGxoe z>CHEv42I7oZECaOXk^agZ?L{$Z)2=)*xMMu^ubU4+%_ZF)RS;`$@`no$~}_-Oz%@? zTyS}EInRmjt3<^C>l^mx`lt4m{6AmH_4>*yRc-6U;E0|TgZp2e5YfUe*0%$}$=;jn zeZK%qKk?vaxt?WrBq#K^!PIhm+z)Svy`LC>>0=tr2)3@XDA4)NrsjG9Ek5i!b?yD| z08Ae=cTRA@)|Q*LWj$ot)%zJ(4p`sz{ZY*eVEXLg3xZvK_$E;OgY3vT7v_b&A0Dm) z08Agd{n5bxTHT+U(>oAVJ90lf0Mmot8lFj)eAMp5$Jpo2AGsF6bqn^x`)7RZybt$Q zPX#c2&-rVt1Bxdjd>&27X9_^TI?}rCqdWQ!l2ksd7pl8BcrLVKh{qXu& zd!GZC?sk0xFx{;d{2aGh0Mp%S0ZezR1u)&M7Ql43S^(4CY5`1ls|7IKtroy^w^{(x z-D&|$cdG?3-K`eDbhlan)7@$TOn0jVFx{;dz;w4-0Mp%S0ZezR1u)&M7QpmY8A{#w z=;)F6-qY`)2ZueW8vZcD(=c;y`hxlMjZ5t3?C?C#BU?84)-HLrFfbq~E#tw5y#L=~ zrYmJJ)0MKA=}KA5bfqk2x>6Q1T`7y1u9U@0SLy;Y-8wEX)2-wGjG3;K#Y|VqVx}u) zG1HZ@nCVJc%ygwJX1Y=qGhHcn%ygwJX1Y=qGhHc*nXc6TGt6|QEM~e=7BgKbiH;&}ir)ohx)p~D%ycUbcn=B( z-f_Z#_m^;7V5VDfz;pjN@Jv4rJg<)f&*J02bM`p!3_T7!ACCjizT?1i?KtqvIu1OK zjswq{zi+(k7iqC>}Z~2zKo>4fj^$y>ZDX27jSN zEa*c#Eqnko9a@Y{*TQG|im9yn$q8OC)19=szZe^024*_7dd#4eK7g6du~8c<$6%&27jkTj z*&Mrez)YuInPZNPIR-PGcBzH0PX28ab%lO9f0l&{c z>t-HcIKWqYm_`$IuzVH_>HqZygjP*c&Sr1^Qv+q#LvC%H$3uZd) zmbJctneOB-{GeU>0A{+A7JkrQu5Vzb$Lhb*E|}@ma%_x)o@3M*nCTo_SvdwXo&K^{ z(=L7B`UYk?eV~@{<=9x0c$ousWuMe@jF@4a2QyvzOCRLe@EbCGfL;0ktsY<2I+*Fu zqJCq=47os^ftk)Y=rNOa5nnLVWBJRN!3WGCFw>+e8Eg-j?2mg znCXpdyRl+MAHYm!P3l_s!CY``V5UnSP&@d@n1Pv2t+Y!ma|~uWw5WAm3%iUN>le)Q zvT^|}atvm=lMlLG#sSQ9YRif*nCZ~!y#zK9Gy02|!3QwYrIz);_;PGurZaE453o%w z{6#&0nJ(?p2Wpu&Fwpb#0A{+hOMmsTVQm33UD{>L=mYZxX1dhEUp;1A3&Bix@&Q_D7tHjs zV#cxI86Vn}anQ$xdcbo)^q2ii#+Tqn7cdUB(yB zCDE>|9mb4tz_UxREBhpDGY*^=c)kgC^)-M#P)i@cOpoOQwX_Rny7Yl|=`ZISnCa3k zwD>R%7#nIG%ycKMUT3t6XR@Hx;}FXSJhvsau!#?S;MnkN7qzkS1}*vnp8ul1)JnS; z8?<1iBWC*f8RMYG3~>N6oj%BVU@lk>V5ZY9wXy7inNEMHb@CT;2+VZp1LLd53}XW` zU23IW#th7Ksij>#4)6iY^jKQPf%O1pI^v-Bb;f~O))|=TZtEA!boijJZyX!#vUb2s zht|z}!!v!-2iS$r(k`C+i{%4j#(KcBfs6xl%=pqSV}|Dk8DI8EYMEo&1v8!6c(sna zftl{)FKp9a_Fpj5W7(y@@BwuOX1bGI#7+7OW;*T4IM4^g0d~Pmr(HQV`oQ%K%yejF zj`gvz9>7eeUFieuGQMD@BX6=lU~IY;{(_kYu4oC1TUEB&^q;0 z=>wSQ)XJDK7o788rnAjuLd(+YGp3y1DNU1BEB*XtVwFYOsAGUz%D+F1GK0IFwi8$zXp#?MDtrpC5 zw^}gM-D<&1cdG@Y)~y!LILEp^mN~}8D{i%5rn}XGneJALjk?@w!Ax%;`VMPdjt$Io zw^}gM-D<&1cdG?6-K`ePbhlbC)7@$TrFN?YGu^Eg%yhR}FwV5UnSSigF&hFvhzyZfg_*@ag2 z$?3@nUNF-WzsinitJ&j%Ubj0VIl&8N`uiVDiD=O$o$R9jf|;K6;<(8DRBEBu^Y&75 zf)~v60S~=su315dU)TjRy`e)K^m7=jL%6R2 zX1d$>f|>3%Z(ydo)#5!2w_3cb;Z}?HIoxXT&WBqq-V1T7#k(VJwRpe8trqW~xYgo4 z6}MV2)2Zb-4C)adeGXx6f|>4C3ud}oEtu(UwP2>Z)q4C3ud}o zEtu(UwP2>Z)q>vMBna)KA{ z8nQpo2iVl(i#Wh8-bbXCcA>+ZTdY0zikiebi_l`eQHy^cALb2q5eK~22!A;@vG)PT z#(F^CK~3V_M~)3~(DzBu-qw72=7@ow(YX_(O>ow)+FA= zME%OKLC=^`i}y7-Hq19Y4jdb_$OYc%WbNo$*j=dg^%wE{uVzaghGz*tvkem=|ECV{E8NeVs=x^s%AV!Axfym^bL~VUOY(0A{+|`37b>Vut=Z zOY7^f`>HmNQDWu3#W5)PGi~b8{I>zP{2l|T~;iT`=J#E|}?@o3eJ;`!F`t4w&iC zA`bKcGf=_J~rfImNqw0zhI`r2dA;oF8oD~!AxhJm9@TsneJ8#X1boYSaCp(!Ayr1ap1a% zaXHlknCWhP05hF-%NiS)>D2NZCYBFirn~h4%yhR}Fw^NnS^k2V4lU+6lQb{zCIz-eq?rt^G~c4OrY%yf>8F{2N1Y+$Ct2mKn7T0Ix2buiPZr4LS8j1A0m zXx-!u%yi~$xwg(@e6l9NOy}4bGx{LM24*_7I8Q|{p;nF!%yj0MJ~(MHHZaqfH^w*C zd;>GxZ5+T%=X{gBgmK{c1DNTInLgj(2gb(td2vnvW;(R`c?re_t$wbIv4NQmEziOA za~Pig@>~PVbjDZr0k&m)!AwW}>T3&q(DR1#9Wc|~`U_^d+co1t;ZsP!EI<#)`24=e3ykV~(w|T>ULT>%Vo`ub- zzu-%D{K&M6^;p;Hc5(d%X8L_IUn!Mi_)IPAVr*chkDa{1(XJj}oEw3eo_PH-M}Kv@ z$T67d-MYORi39!BeZYM#^gb}tFCS^;EmnN_>>`-yxBqu?#I94`P`?-(nCUyJ&N8*J z>VbV7%=CM|nj5#yU>A7{MBOyyYN}oB=(=<*ce|YA7B@I)Zu;<)=e2- z`oLa|ee4+DShddhVy`>;EA7%>Xc05)hsXHRU#DC^i#_u=hnNd$_1b|J`|3%%PH})1 zd+#x3v2ua=1}*mIW8TWjG4}9de5GCb%Xy4_{;1{H=r40YAFvl-ta+iw7dZwqonxb2 z#!T7;Gad0oozY)vX_x+jnNEMDmUdY?V5Z0FXS7Q#nCa*xPBlp_YX|VfSazikV5ZCZ zWqf5Wz)WX+88as>>H*Aj)+FQLq(v^kOm|}!S}@ZY2hNLFcEL<{V;BB{nNGW$o3zWA zvChCuXM8#5owV>5%=EJAf&Br@^jJRVxq!c5rqc(`H>a9}7R+>9KEs7V5ak)0=0}8wTv&A=@^@Sza*9x%yiVR z(|tL8Y={Gx>9C9YJB%6a>RRLt%yiBRsg?eMnGS6{e>pe7Opm3d57dI0E^{pXr54Qe zSaHz(#n`}1FUtq!0?c&!z`QZXy1zJwF`4Ni4zhOG&#+&qw9B#S{vvN+rc1lAv|y&o zvC#+JU)TjR-A&A(1vA~P4`8Od^#ROu83)E!@9T&!nCa4AIX1=@%yc*Yq8`9Zmv&>t z7tHinb{SvR4w&g~wP2>Z)qLBZna>hyVZi3?p6zCx?3%n>29@Prn}XG zneJ8#X1ZG~nCWh{V5Ym(f|>4C3ud}oEtu(UwP2>Z)qLBn8*74KF(v# zO|BPUro*njc2le0|3%-yp2}{uV5W1O*Uyd6r}VxKyI`jC-YeHw_CEa{KYA3H=@^^t zFSWGGv4NQme-Q`T<=Ci2kAht=)1k#V0sZB33Q`MZIK`inIH_qo7KPrKm`(+6pnYYY5^T`<#qSCos` zg}+=|bi0TdnCZ>$To*a#(zT2Oe?JB@ea*g~9mhs3d_Ww)OfR1_Gs>=09H0d={rsH! z&3ZtNoqRwX;4hfzhyQF4)a!v`V;rExeK|1G-R2m~bZU8j2hR_|=Q#s6_};7cWa0T1 zGt+)8+~ox`y{R})rFOQ^f|-urP*4v%=K_C_cHgz_{!+Nh3ubytTZr^U>)p9^<+!A$4e(k__k_+12cS!d8<9?>r10J~tO^SYbY zZ?Uvsrn8smKEUoQ+h5p49KcLRd=ax(?R#zXSC22^0A~7Cb}sb1(O*4pV5YaQ?Jm;n zLW?*s7Z@9u>FmF>i#n73LJMX(nz~=>y{{V+LkA zW5zn8R^|=Nbc_x0~V5ajK4C#Ze zg%4n+vp>i=FSTH%Bfh9JeO@rWh#CAvPX#lbcJ-J!2CWZnCZ;1TrU_0)ER0L%yjsRbyL?OZ`87%ftjwy48PUIS}(v%XHDuo zO1DcNz)a`7(0xE0*dM3`Gac{M!C$=|WSwDbV5YNnq+O1UcEL>N`+9mW(d|Nuz5`}@ ztn)M7F8U6b>8y3xOJtt}Go3Nhdz4c>fSFEzmx%S4J}_@!rX#*M_te)|*yVW?=LMMQ zto2x0#th&G*1BH5dX8xq%yjsGyp=UJFw>bg=>x|`AHYnfzj{6BF{2jD^k()t29@Prn}XGneJ8#X1ZG~nCWh{ zV5Ym(f|>4C3ud}oEtu(UwP2>Z)qLBZna>hyVZi3?p6zCx?3%n>29@P zrn}XGneJ8#X8JV|W_qs&hDIaPtJ}9jDk;Aa8vCJddgo^gXPs_XV9aRmyMRo$jtj_i z>$reSw~h-8wEH)2##B;NZX(H#o3; z4GwHgg9F>n;J}tLI4&U5tvFyS1{~OC0SC5Fz=7=%aA4~L9N5+X2evH0f$a!zV5{ zJQW8XJ;i~?N^#(kQ5<+26bByl#DT{+ao`b69C-W^2Oh1&fyX9s;E_lic-#>O9%aOV z#}si~K&D%9xPVNz;&1_(ZpGmOGTn;91!TGvhyQnx>3(Ch>4)DKV}Czue?Mn`XV~AF z_IH;3?YFSPnXZ(DOjpW6rYmJ3)0MK2=}KA1bfqk0x>6Q0T`3Ehu2ei^I_|&X=OWyH zJv`+d->5Dbg|(J$3s2qC8^4B`Kc(VlApBgTYk#w~S1#Qap0cO6Pa@NGE$#lxwkwh8 z)WVNnro7`D*(Ia!ily7aFYoE?lgM;k`>W7OWIDAN8~ue3@K++!b*=P4BGajbztRVZ zOs7`*fcQ#ex~|oIn7pUAPa@N)y-17M<#x;@GM!rZ`@5Yt=0YOVsfE9CY!aC+wWuB1 zmB@5x@spsQV`!0MiA<+mXpuM6Lrq&Nk?Fc!YH3#@(`i@F1?m^MkjQjuopLOZ>AIGA zqYo09PAz<(7GpzAN@O~kXE)1hVFWPBwuopzn_CXwmX>OQdV zNMyQ`mUSkP>AF_NK_b(sg}-uMNMt&-m~TJZHOcuVk?GXxIYvLjJeJ6GT`PT%$aGz+ z_cPS5M5gOn83&0>*R|5FM5a@#*CczjM5f2nN@O~)hw=dnbl>sqcu ztTTyB*R}M4>zhQT>ss1nO-f`swN5dU$nquZxWeKty6p@GTlkbc_ESM)H>x@BGYxP9GgU@Qwx8o<@zR(>Chr( z92?@mm`P+h?K=4@k?Fc!=9qRRGF`Vze_3Y|nNBVJ)z6hBGF{iwE`5;5bSEu+kjQjh z%N_;0)AscCNo2aNr4KxhlE`!?Equt{)7vMJ>D20T6Fy)bOJq8=dfw=RM5a@#*AC+# zk?GVr*_Ft2YGIf4Kp!MB9a^WFL>weCUAN2l(qD;8r&f;{e1KhvOs7^K8*?F%>C|Fu z?0sC{Br-joRwC1>l|EoSmdJE!^}KOx5}EF#Wy~Zp9oksAkjQl1E^|z~5}8h|J~q~a zM5a@Vyy-bctxIG&wN7>=GM!qz9yo_2GTljwvB3w4Os5t;=>8&a5}8gd@+NzUM5gOn zX;&iCowV$I5}B@R=>zLmBGajL8kL(AG>Jn3phrn$I<nUDqsmQBiA<*!K2VD_0KG&a)1hU| z)$KBG5}8gd?CSnvUPxp* zwXiGmCXwmXvd;ASmB@5zb$_{bOJur}mhqLybZTYZaE&98>D0mL^g$xi zsbw56->8+ybZVV^kjQjur4JaJM5a>k?Bra_CASBr`D-gOJq8==sWs3BG!3{OsCe#u0*C&>(tLAGTljweunEp ziA-mI(AREiB{H3Mr51BYBGakG*z{}2nR|NsBr=^^eQe0v^gX?O5}8gd?6R-JU)Yt% zbZT{fu?8R)5}6(^4icG8ySl%OnM9^LX}JzbWO_WUM5f2nN@RLGtwg5B(@JD|Jgr2g z>srnW#z7*}<7p)_J)Tw~)8lC+GCiJFBGcn(B{DspRwC2mX(ci}o>n5$<7p)_J)Tw~ z)8lC+GCiJFBGcn(B{DspRwC1NEqe)TQXCp08kLO%m zvm`QIw~O;%-L6EYJK3eb5}B^s{n5Veh8F9EM5gOn`io~fa4jN{>GT18@+ZwMv=W)F z+vT}E{gudcUCUm={wtB`&|*6>-3MrK{_u;yGVA`L9`ySU5}B_1z?d-(5}B^sGFBGajbzl;Ow0W~R+>D0ns&Ux03M5gQh%37DmbZT*4qQ?O~ zNMt&-GQOw>iA<*!{&H-5?n)xlsnzEN>p>#Zp=FPvU1;I2M5gO@dEN&tYF#4JowSHA z#wL;Jv9z!&k?HaLmB@5z5eLqB#z7*}bsxB1P%Dw?w99i(-djP;Br;vM%a|b!7@I_< z(=PngYZ5V&$aLNA4_g0)RwC1>m2(qXiA<-KHL0&d5}8h|lU<2SrxtdlzY>{FE#j-s zH~1@&>D0omjITtdLyKB>%9}){>vm;5NMt&-uq%72M5a>jCSrM5a4wVHY`; z$aLL@Bij26&`M-FwKB(uuSBLh`M`RR$aGyRd$mNS(+7PmgkAU`k?FK6wWu?ROs8Fp zO|J*US0dACSJou75}B@RIX96DJgX*=>AF_NK_b)XFUF?#NyI@S({;OCTNpEmOs5uh zS(7~1kjQl12fZfYLo0h5Wp1BFyNH?WlMd%zP?Fh zdOWQ}rpMDtWO_WUM5f2nN@RLGtwg5B(@JD|Jgr2g$J0t=dOWQ}rpMDtWO_WUM5f2n zN@RLGtwg5B(@JD|Jgr2g$J0t=dOWQ}rbEkhh`og8B@&tLq-9^1$aHAAWjK2Y?4nOf zWIFxD+O5xH%z24S*L{%vOd`{%gvM7-mB3|Br=^^^fPLCZZDDPx>oib ziA<*!{_1w&gG8o7%X3;eHi=B9U8k{0WIDA@W0S~qT`R{Xk?GVrjZGrcp^Y^*iA<+m zr?E+7I<-z?lgM;kE5|00>C`%nO(N5wjWsrjOs8F^u}Ne)wN7J`$aGyR$0m{K)H;n# zBGaLbH8zP%kEfN$bZQX?_{(!}^aqJdr@xGuu9e7i+C|LtUIM!knNGXV@?05n9_Mlr znXYSPd?hlSKEPl4fIf-yD2Ys`*2!OqOs5Y{agfM#YGv)9??_}ieLy|Pz9W(8)H>x& zBGc)ElfM#~PPIrP}j5a?VR+dMvxR*Cvta{7o1> z&~6R;yhI|?b-UE^d`BYFb*+9510N(ZUDxV%G3O;Rom%9ATKEgCM5gOn<_-ShoJ%6p zbuIf2$0m{Kx>mP~yh&ubuGRg8RwC1>MNPu4UJnwPPOY9d_DP9MkEMkV5}6*a9wai| z$u8q7k?Ha3S0dBn*_Ft2YMth$M5a?K=NoELBGYv(^Tx4BWO_WUM5f2mA{P>wPOUyR z`XG_%)aqm7y*7zV*R}fC;Dbb_>soytV=a`(bX}|4#e9>AF^rFZ`9rbZVVqCXwmX>OOF65}8h|9y9i8iA<+fx6AiBBr@Ge zOCKaMomwX!Br;vsa=n0E#7rX7snz}EJeJ6GT}!*Hb%{*ZwR){1#}b(yON)6Sk?GVr z-xSprKxR&O8lgM;x^*A6GI8T+xbowCU3#~+^Q!8r+ zxsb?oCoN+pk?GVr`5=+$)aqlSU5QMm7XHflCXwk*TGp>braNglk0ml)*Rpn4>k^r+ zYgrGpE0O6=TKX%I>D1~mqYo09u50Dol*n{yS(ChGKwp>0bSEvxCXwk*T8>R3(_?Aj zgG8o7%Q?ic!7l1oBGcp9mB@5mtLGSYB{H2_;_#lz#^jG$EoP$ebI<&OQXAjWVVOJv4o$PY$mdJEn%YFub(bpw1 z-AT)}MIzI6E!SAumB@5mtNVblNo2a73)*EIBr;vM%Qb-aJtZ>T$u9gwE+jHt*RsxV zuNdo)M5a64YeOz@-Y1diPFk*65}B_1z&OxfiA>k+QcJrMnXbo-xnPbZG96m{-i`Cg zFJAlH_x)$13U56$z2LUp$|sTOPTKyqRwC1(1-?_adz-D5$n9Mr%S0dA?MJ{AbN@O~9MrPu|%dri}NTw7aW^J zrpL1@k?FCtsGWuanNF>&NoXZ9UDq-ftOtoqr`9QE5}B@R_iF1K@+Oh#x|TjL7ZRE7 zq@}+SnNF>q3u+}Yomzct)JkN!u9bBrk?HaJgG8pouI#Ds0Wp)vblnF%X3$DxdMqvK zK_b(s)#n@QS0dBtuf7(--vPUoPa@N))#J+?OJq8IkXnpQBGcn(B{H2_c^(CSB{H2_ zCm$p-UDvW67&D1X*R?Wl5}6)PE0O8(v=W(4t)4gfE0O8YvY+YxqIM)Qopxo+pq0pU z+J%>T@^Ngbs{9Qz_hPSezfyi9`ePp0 z7fAt{j&BM5QD=@c!Qa0y^|n>fe+yf%Y5l#$I@;S5FE6R|o(|e`*q1Dr9(c9^pg&6a zn>5PYn_g4-HyAzP2od%C$0ZR>|qvEBYHIk^aord#Nm8#VQy)=FI!rbxD?PI7>3;n z%3s&E$uT7 z+IF^f=yE`RpvBlKDV1Ex2i3>co=pPu2Ygtwp8RV|**#_EM+KGt@+N@(P0X2mYKd&H_IosMO3Rfc_}uZw?n#q7>5x_fc`MP&OR`{_pJc*$8FvK{h_~=oodoQ)sDk}6@dOk{8jHb(AT=UYWbe>vYCSPtlq+j$J=k5UI#p?2c-2Y+s3K!4yw*?p(l zQb2#8#T+_ST)eSV?L_)n?WKVJut%M9(y~tu{&!RmDxSbb({*=Ta-um|7azKCF&Eqpkfc~)mo^|M{k@Zd0XaeXDdr4XA8=yaK*Ec|a z7+=TrBC@`!~Sveq|1f84G^fc`MPWvy?3{wS4W zoolEn4(kxtw|z-C5k-8hJ{fO4E^34mVWkGIMvroiS!8`%4(N|kIrjO(-=)@;vytmhaT+YJHzQR&+4u1JcUlJM5A)VX`PY|TFYJ4RE$cJ_^hc=#^PFJ#`NGm` zi*~IC=#Sg=4bUH@`j~c`R8Vh}@_}|YJlg=!AEnaG{=1>Lu=Ln$e^vE5jR5^|6^G%S zmI3-x65sUFxnO*|)?5bY5A$}gIIDDynYV;qjd8=4c25--I`nnk%WSk1&>z-WWvBHm zQfF5!1@y;l{Q~;qc3uGbLx0PfZ-D+lj5;f89s~NrIxDL`0Q$o?IIVB`y-YxVU>9@f z2fO#hx|a#)kJ~;8=nwnvcTPPua<6Uh3P69Diz<%yquAGnB?0=wm^rV7yf=7s8K6J3 zTh=-R=nu3wFDYw%1N4V>_dAY_*LpuE0s2F&vk&xl@G?MuO2+1NkCbuPmIUYzuVarn zu0y<+*<(4NKgb2fcA3)}5Lw^0F9-C8^;=n`m%d*eS>GzI0Q847`LkmjcrWwhazKBm zb-r)^sC}JvFbU8f)GumM`DdBeS$a)YG_Ox^-@e)kKz|^{97=Fp3%S09mI3<1d3?s< z9OfL)CkHoe0_YF4u&eyFN?+^wkJ;B`s~ZFQ!}(U*>0H?#vb04%Ed%t2@jdEro_el0 z3%9I-YSQ5(Kz~>}N*!)ms;~RIT6WXZ8w2{o`c*2ubf5H}v##H|c3lSO4}DN7yt0&C zHO12QYuXslAEo>&5Qn~w>)ToLTF+l^)KWlyc%AjXb6F1S+Zpp(&;M7b0sh17`i6gi zdCU0|3>ERapg#e(%7YymjcW?W-D(j$w^|gZTP>hJZnc2^xYYvsqm+L+=JDN**QWnA z;|mp_KW?>v{*J*63zdg2TiGcpN)dKqCRtxBlTP>hJ zZnc2^xYe4;a~TIff81&T{c)=W^vA6h&>y8buRu*c;*>XkZ#!=t8Up&GRCTkLs6#h7 z+&AiEYX>w0^hc==&EN9X-kTk?b#3i|L_mL3dNuQ&&BsoC$NvdhQ&6dd96*1RI&Jze z+38-8>TYX`8UXsE)H}=2`!4&jxK*jXqk5q|B4w`v`s4QA6`((eu(iHDvbvPr-^*Fg zDO6Dk(4UA_Wj8COHE#%>GD{55AM|z8t~yY9&6;G}O;>(Ee|Rq*zjI=Jg>8PT9Hq*s zgrM>(KcGJ)_raT&*5VF5;xJGtK!0Et_26iCFtiCl^^8)0{*?H;zqG$O_VXHvN&)&) z5{G9>#{s)*+i?K&r$qaB>G;;QhJZnc2^ zJbLlJ%xlQ?PWMy&MfjQ9Y)^pxxYYvs<5mmk54C59UHV$7TGxC4^vA6h(4XetZ8Cew zUCv{}DV#YrK!4n70sV2S1@yv&;=r*fMXi4&pg&3#HOJWgDK=7QliI(vu>ty{)G*Uu zrEXh8ZRFdZXpc=PK!23-uSPEDZ&Vx#8$`5#{xH6kl^?N*8DBtul$z9Bk8kAPH{(!0 zVi(XKUXwZdP%n}TK!5OCsCliYZY@1F711^Y^hc>}rj~Z;v*|;6-G~o>{wP({%vz5f z>=xCDXaW6Es*hQddM+a4OQ+Vq63`zE4taB`os#-3S_$ZnQaR@D$Bb{3zy8{cLsLM1 zlnS*#9Gu2hQtL%40sT>`=4-LEN=59h1oTI#XQJkt^BgK#3Fr^bAFP_pGHcRVt5yN} zqg1+C>-1OGmP;@30ni_%jz-l^R83}4t5yQ~qf~;aWj#b`iz8YE=nrbgI^S`~v7dQU z3eX>=I+*d*^Tzq6*AAdRO4YRIn}gj*O)3TGk5U6l#rM2@PFIq*^i_cVD7Db^LGKTd zI*ZI9e^Wqzl$vB}_1Y=XavuAe0{WwrH>&qVbeNmz><|8xfc_{o&&-?NOCoVl4I}dc z&>y9g>4UBc;wNqjf{<8ln1?Z1b>E_su+dUQa zz?!IN-cv*WO>YM159^HDD7z{tGB!YelhKm`jRFDe2m;w18v_#^j95wHL%A_z!GAapX21W0n31f|+2Qlju6_5wmg zRQmkiI%P5~;hyiC@5+0N&AzAKbM{_K*~H)RvMMY@e_+>t9pV_-#$+h0kqglutLqy? ze_$7Ll=3&g2VL1Eg6NM`ebDB7utX63vAVuN^apbv+CuqT zWfObFD!UN<3C0H2ufiH}5d9%akE+G0tRLk}LcUhOe6|Ao_#YMbQ=l>uU!-Hq|<0#6k4O>iP!J zAFEi1{wOT@`Jn2|e_TNH2iWS?V}C3}f0SMSy+$~@5d8rb^TV}#fas6HUdt{-f2{fd z(I17qmJbm9Q9fJ?3(+57QD@h}LiEQf7NS4OhilaXM1O!4-(*$&EL>Ya^v9|X5dBd; zTRV4V;Cep6%alHb^b=nwX1u&efRs4rD#{%b5m ze{il*on8O^FGPQcVt8Bl+g0;Jm0jlwi2kT}IfYfe@@JXNx37li57A1#Cm+uGA$l)lyj9um;=@AphbT>clZn0)unzh5%0?VSe~2bZY#1Mmn|*d6`h$0?c2D5< zZV>&k`fd>Y!Fn9r*TcOVM1SyZ{_R%XyFv5^XINscuKC>{`h$0a57%lpi2e|Dmu(To zu3x)B^hfPA{KrMOcZ2AUTIUtEx_5)<58e&+p!OP7HgVQg)ou{|vD$7B{Xx6=*KdGb zzjuS^k7~EDKKS)Xi2k76P`?UW-Mc~b$7-L1=#SO$2GJj@^#IWyqWK|htmYCjZt;x^ zi2e}G;r&;&8|uu5b#{|jBNw7SMD^r&dz_E?fO_y&jbn)Z5Ou14%p0A3b|Lzs>Q~L{ z0e1byJVbvm_hG-I_I>a*bUrh3A^Kz0Ux@x#tp|wysBawQgMUB!+xOjVxKgO@xGqCZx#5dAr_c4`uQ=ydn=5W7TQ z;FAe=60IQmQ)hOajliaD|C^uj2lz{ER}fw0ci0g9Nn4(`0scl_{v^b11nrh~)8Zid z6FYWE0_UTLre=43?%KO7F9mDhoXX`GaKTL>&=+BJ# z4{tL*)eU1e!-s|F&+fd3SHoXp+f5;M zBgsJ6SpiW*7DRvM{AZo8d+vh}yBEDWQj`mbuC{~dkC7(ofqtkJVwa348NXvJg6NNt zc1hU%rcWrATKljN{V~#Z2yFi~AwEPA4}B{j!^nc@Pi*-ctI>C;-$NmGFM7SwUp*G0 zKStVjye;VVE+JSlp7i+u(Vy6IL)cw2APjbb4-3&B+BQP?J7Ri>zhq4JVIlhCbl2r= zL46`a?b7=`EJS~dw3EW_$F;*?KlWiE`r~VhJ_|#9h$I8yf(7KHr4aow(*6?lFnDDM zHp&kR(I2P#I#CZ#H4pK@9}CeRr@OhpPHYl_z3A1EvR*)jHx{BlPIpI94`$yQu@L>C zZEZz8%)dLt-wS?rA^PKVw-t6h_lMXe<5ypuLG;JzjucpG8U}mThlS{m(>+LFht>^) zz3jt6^vCHYfh~^@#Zr`vmopYY^vCILAh5^24S6@BIzB8!e~h%>L_Nf>4#gVvd{~J7 zINi4hySul9VyTf23(+5^J5gZ6#XlHLeOQS8INcKkR@1_~TPq(HqCZY|ErA_eKMc05 z4-3&Br~7V!O*ocr=J2mhqG6@5Mp%2lqqbEXb%H8@s79M1P1buM+3>29LeP zzDVtj@a=)Nh^%-a4x&Fex94ji8KJTH%7^I0IEemOjR%M54^eqX>>u_Mg~_YyFUK(v zM1P1Xa)2f6!7#DH_xZ38{UJ)?JX(|%21|GOun_$rqc%V1IuOnWO7&qO`a|?2&snjB z&2vxkVIlg1ZwFpyu@8m%OYuG|M1P2`aPG12KD72>A^Jl!hu0aEhq3FMtBD}`LsZcb z{UJYG%rsq;YYP!Xe~517J{$~N58wK*5d9&eHLu^55k_b(qEY0-LiC4>{=Ci}4Hr93 z3w&6J{t$iKiPzcL!C~rbyblY}A2RIRhauteAq~3^3(+5<1-vcR)i%~ujU5@cXVms# zA^Jn~Ah&Cr9}?<=u~Ef?6GVTAX7PC1l%K-Ijt}%xDgOReYiN?=++h@mN5J{!m(1?!&UfNb?BBrh*EJVSiiPNpRV+k*tYRVh1I_`l#x@9zi>C$h?CP225dA^iE7rma zuQ%Mekvt1BIzjZuDi)$YD%P?gpEH8y5~H59o7M@UKgbus+Hyk}>;<0phqOR3r4RL;E{M`kj zKV*E`mG5_Ws$WoB5XrXa6%Wy$OWvqLVYh5m;64t2PwwT6C*vXdQ=4Wai#=jlD2Ej} zgU7@RsHa9|ncqu~M4Ay7YL6{yg-bTYGRH(lSG^_70PIJrrF0CKsYV^(agF zFlTkuo>RSJtn^`eJVbvkdc6g*9zxq#?LFzUE)e~(+Qtz5skdd7xF0fNLiYAVgL%%Y zYuE4&5dFzG*1oH#voL33#(g}O*6DnpBSe4d_G>TOcx1>P{372sQh{-JQ74H0{A!;k zu`NPgkJ5dB%XQN_qk4Y5n~hQM~ZXBk9)UhdsY+U*&}?k0hq+B^rMKZD+> zkoRO^zUPhK1$O$)ogw;TeC&|%J99$qQVj3E#&<`SLG)*Wrzt-R@_O|!*lq&*F`fJSK*es{f8KOV${nCinZ)7;T^ghSVnN>FqqCbz_ za8SmggvN6z4xqH>`@})?C#|F(|IUge3h_6R^G{KM@y*Z6A^H>lX(#SOcy71V+y|=o zGY6tSM&rgj&pk5SH>Bhzn6tEH97KN_RE*?y!}GEV-UH`9^_N5Rr{Iweyv`!1BE;W| zk_WEx=H77-{fRNU^ZrniU8DY-P7wVW^XNR;cLs)hOQRmp#;#kZ3=#i2h87XvVQ#Z)r$>K)b;QV@c1>5dC@NnI^o> z&W7O}@bM|MdTcpFf1E`(b8PJ}JQ#|X%2nPi4x&G^$`d&@Dh#i%;(m;s(kTw2KgpXq zaBM`FzN2`wdfwJ94x&Gmy}#pe3gNJ%_=3_#EraOKvWY9?{19f$E54u=J(ofBCwG%L zr}cVY45>38cXaK8%OLtQHbdknP?)odD9*u61$0~Fa)|!aS$0&M+0e33yNVyi-7*`Z zKXZ=WCu0P{U?uO2F>OI7i2kH~9wFbYXPCW)KXgNH$rG6oGAUifivO1Nd#tb{M1STSy6~o9|ncIo3EdZid+uSAFKTrqCZy01w?G|M|++VMENr+wFdhzmp1*S8)S%OLtwwqYk< zH>+FUux7=!XqpSrpBB+;IW~f_LdJ#Kml!i$ogwm?1?YkVJKd#~Tt1%zaClxoWaj111M1T4|dq}o%xV|H}VarBr>kQGK ziuJ$9F~2X2zmgkv#pY!Y{rS~&$ay_FbWT;gmRANYgXqs!E0TD-5tW71nc{|ZKKXHH zT;%!D z*lzdA{rbgFtl}g6>_|t5{fR**73vZb%5xP)%6XcKUT32{jrLL=#Nz_M1QPeA^Kw#3(+5| zScv{u#X|JQDi)$YRS ziiPNpRV+k*tYRVhV-*Y0pU$rd(I39+lZQ0biT&^bu^*>U8{vhYl@Uo1A0i>pLnOp^ zh@`L%3DF!PDTo6;9bSZx4UrV7At6A6gC|j>a12RN7!ranL_*AkNC>qMNf8zj0xLv9 zJcUTPDnw6+grEtL6e}SiL_#D)Mu>!f2$2*AAu0SpLezsu2zC&7aCi|y8$?n>gQP$P z3GoXeDQrPFRYSpv849AB@j<|aB*x5z1pWpSJtgV zd?G=HPb7%$i3Eu~ktC=mK|W6;h~uclBCTf37JWfEt4ctCP9)+BnXg+1i3Mh zATA~nq{Kv$aF_&{Fp(e%CXyt;BnWiy*=!;v~03lE9Wo zkkb-L;#m@;vP6K~hR2 z2}ntji;^S`B}ocOlJJuRnWw=7QK!KK38%pX!KT3^c_x#@m`svhGD&F31X-oQ1QDgd z1j(eqB!MK8sB!&49v z8cdK45(y$fMG{Do08m6Yq6p$X5~O^@Z~S@TWO^jnH&HkV9ue`#ZFQ3@qPckCq;o{X z3FU}Lki`)RA~+&J@8ilEVZ6j===Ejll$Qjll#djll%rjKKt% z43Qv;Ard4oM1tUjNRYP>31Su^LApXD2vrnWiXuWGNphkHOo#+I36UTkArhn_M1nAc z6d4E!q7RZJ9*UrYNRV%kB-S8Fnn5H8F^B}&g(9*bNm4;12q=gIxdch#2vVdFlJJ2f znS&x~AQB`DBncLX1bG5UVg!<;2P6p%NRky02_ga_K{B8S1c(GV0LjFEB9YWjBog+C zL^8fgv?mft^h6>-o=7CW6UoGO5=rYsA|ahfB%2e7L~@cz;v^Hmi9~WYkx1Mo5=q%a zBH@}yBvTWKL}?NF)mri9}!`k>pDx5_pM3axRfb zyd@GzwL~IemPjPS5{X1tB9X*OBob7KMDi)g#8M)WG)gidlw`6e$wW>fk)%m70h45M zCCS7|l1Y(7BH@u_G9$@EMUqK~q!J8CBoC5I3?!NKM>3(0WU?NSNW>$VWJfZAj%0Ei z$;3Azk<>;qVU0*6qY;TjGa`{hMlwN+NF;v|iNr3FNn0cnvWP^o70E;@B9SCTBod&A zL~;|!#3dq;ltd&Gj(9Q=3KE4-kOYK+1RoS6@1P(t2ZblyVEvbWMzRbF5@Aq~pdj%C1xY0+NEksuG6)J1Jy4Lufx;6su>Q+GBe4PnNfRhYh(JNI0}2uuP>`g6 zf&>H}co04jA;2C5!Sg5xj7LGxI|>5YQ4p+-f z9%N2L2p~s6a5xGAzflm>je>w}6a-_VAkZ2GLDVP+kVZl9GYSHmQ4q9@f`DWc1RJ9u zkQjvr31j`2e@1XG3Icag5R{98fLjy<)1n|y76n1DCu}wfjvYbXopAy z0_u1g@ZnpcEn=a01#7`M)Dj1O-7LC4}01O%z;KqTnJD1(%E{xIjeVmxEaU<)3k>hk^?`6kNuk;Gzu$muM)sAVb0B z7YZ)6P;hC5f(t1WTsEQLA_)bTL@2lbLc!$@3NCI?a4Ca=3l|hzrl8=W1O=BMD7fH2 z!Q}-CE+$ZL>41U@1r%Hspx`0^1&917IKW52;XDcs-cfLJro?)q2M461&3@XI6y-gE}u`x=Lq@yk9?-d=acgJlzcud zpCje-8TlL~pQGh-jC?*TpU=tX^YS@XK3|Z}aq{`1e7fW_T|P79^CkHlFQ5OF&zI%% z75SVXpPBOcs(k*Rd`^_l*W`1OeCqOP$mi?wIaxlZ$mdk~oF<=d$mewVoFShxX@PgU%>m0TllmK>|Jjm2rLxq zXf!e9uKfRNHF%>COOKg-IMH|*iL!y%^Io0p(qFUR-6*!ru7*M^y)k^~Ss{)P{d_3* z>dYR|(6P3D@{*%tg;+ZGxBF(FT@}nY*{idE+D>u|om+5I%VZ&z-T-z7ZTDf7?Y&oZ zc6jX$N7p*pS%tlYSb7s+%U0kLjEi0=yYF4mS=^2Fwcq;|EFJq|2QHRgpJTg)*j;)_ zXY+@pYODXaId;{jEx1@Ze>bCC9EoPe*dv{QIY*ITn7fWvlyGBt6w&~wG z>+NAS;Mh&L=v?Oi zZvBtz?CW7s{0KLpxe!aQ!?AC`hk(n&eMfXQY;42S2S?TF_u`g_fx?O$X-ewfEp+={It_b5Rcg*gjwA?CZ}vq%LY-)*+|PGh8e^l4FxYu!XyH zcAI%~s?C+uF~99lE|xBQm<%8IMXsuc;oEiAqtM3R?cd%)EM53;D#Y%fPjvR&`h?U@ zx9!Z?@vOnc(gk)U>NmjOtZh1Ds}oZ{?40R#)w9`fZy>PWhqe3c`h?WqJ7>C2)w9`f zw-E2EUt!nZ--JS2>ThwG?)mj?Hrzk(zC-aLc2zx0jL&p8ZD6zEjzah_F9eJFJ@|Qt z)Ja`4-IE*IY`Dj$sof4-XqmdVd!~C(BbyC(9he`8W}!a>^d0nv$Hz8IP41ED?sKEf zhWijc4-)ozfDMGTqV5Y&P7h)HE)po!F~Ak(}v1 z)68bW-HRA+$50Oe^Q0PYWyzWDPR(sL+|OKV91l&-beA@>*>Hy=+TuuvT{S->C1tuR zn%Zo*=i&1X-BRtmGd3a9o!!J{!(9-!TfqaRLgurMH`dpB^~iKLz0qdFeG#8i({_Z| z#XPxl?GDGm?wRg!jchjDDRHb({ro$nYo_~HLz@lvPTYrT=JnnY4IQte+0#n!VPkeM@(B6=LbUuh$8`zM&pw zW&LmI(V;>to!fPWuiwAgPI4T$fA7+k^@LbD?`N*?>)XM#I~)hr?pXTSn?fx8TI*Y* z&aJYaeX%_kOSihd;SP|uv4!;wn~ZCX3$?ysa^!aDM98?ncxzj@QEL=YwsiZ&XSrCq z7#AQXL8&5-$NKihiM?9teJn>y|CfuUi}_)G*!As9+$rtkOD}eqvAZD`OBeG_`1S43 zu&C5KwjNmOzH|#0OSihd;r>(D9S?s4)&Q(;2QRct{dVBOoLRfNa|O> zW=^f=M{}`sQD@c9>(jgg+V^cXjEkiUAHuJ1ST8o4H+0-x`?_VgkF9AP!us~c)zKZ- z6c}7AU0|=hzTsY1_{-ZZpdRl2L}!DxCZzt{In&*{zRiZa-{yS1xag|~wZ6q{*I9>7 zJyLhYWxB7_v)OPz+>T?{hScwuJ9TDj(Ji%6e5U)^1~wb+komZvomg7}f{z~fOlNC% zbxvJ*bEbP;Lz@lv%-3_fb8yua;P1$v11=l1YHS zYmVvc^2FMyKlaRY>rHGn+1-Z0shWE zqq7AMZ`MAQYb@^JMc)D0QXqETUpmVhzeIaKIn(`DGn)-}^}O#mi&0+zBDFXDt26Jf zZ)iu8GTo0fv)Q1H#IdfEzWG7bMeB1=XYSIyOBRY~I^V~Y@5A^Jm8^c~+C06(Um*V+9W zpU}E5Ia>0|^9za)f5EZFu6%^UDqrz5&*?0s#SHD11GP=<39|?>8XQY2Q4axvws%(Q zEdFSg_W9%O%(Cp`MTq0z>l@t!e-l)j!EWM7ofVwfqAg4AZT|X?w+OKwVhr)QI$&&O z|D>~>-S%k>QwEru8^#nP9z?X8(1r8&x8Q`%20r_PHrsUerx~02KgSaD%!Coeh;tEb(WZbXEnuGfqeN%*?OjsGu3BzJj~`u(SQxQh zwD7GLs@^7U)>+GW-BXvHUv1VpF|HW#GNK-k;30faZ5Lgjv#(e8OnpBp&-6|mUyPWV zy0Z@_UKIq2%M}h!&jy`k-ItWwdeH{+h0YU-5qBfzvsm;=j#WOKa_j8vKFO(H%-CqQ zab*@GHV1Zz_HiHl>$iA=&Su$@Qg1lD!TjaJ3B`!tX~wZ2^&(D&rtlpKboQyeXR3Ll z+jK^}T#OhWVHe-9RqqBrnrzY8kz2c^*7{?u8TV0oG2(!3;C3g%E??i2-RHOJtX1z$ zsY&T8P5qJQixDd%zTXD>?7}ASCqLEMdk?lwU9dRYoRau-G2)2?wr|My+r6LbY|Gl1 z)UmHDH1%GO7bE6KtjB!&jQm)z=@@ z*}u1*)}GFsX|l%7V#F@N?o}Zk&HK8-ul!zTGu`{OFH2uD+uWH@jQA$e&(?;_XCMEj zv$}T|Xm6hwWwz1kV z#=iL%_?1_6Hn*GM*!I)%lDWG_7a_Kb+wFPOXIJ?!#;dc_&KQTj-BsdFh%Z9?7q5pj zzRm}%7kj)qo4QH2d%kK_(y(9o7Q~3bhn35abW~Np@ZoQ-&Yrq!Qp&3D=N4B+4cdY@ zGEonzRIORSqr%ny1F>}2Epu0IH|P7gc8VU<2k~g!Zsqm--BdfkCj7l~lWyPgRVzno zzw$naS>xEpj)kp<@0~G@DcfC+9~0tJ5ZA`BF787}{m$!VILdxn?)Yx^=oG}hiFf-klxKjp{)HGj;`JPL&SwZ2JD+YyH-)(a3bg`a;D z(^qN(9(~@9SViGOoe(VM^}}Lb*P<7u+Y!$w){FUQi7PE)i6zOe*W%nOEZ|M1+Z<=Wx# zqwR?06nzrO@l|$#Z!PyF#~e$vqRbI?#Cr-Ku-6dZdTNe1yi;eV#C}J+uJvF$VnRhd z^ygTGgI(;SGQ~bh`*c!YJK{#=K1zmIR?TN>e>V4-H?;0M9d^W)3M~IN<$V%$h9CBQ zGsV77yVSsDNBpVW@A&q8@B_d6s{N$)?D%$e#HfmWl$k{2^zA3%FZQXsyY15&qzurs zm>4_aSVf(Ef_4kL|6P&XTRZTtHwCe-yp5fW1Lk%3fPHn>qgmQ#kGIp_&N-ffcvx=N zcm%|}A^Y{-EoNxl57gFve!@&a%q+K?*2ia85pS#SfLoRvb-XloK?>q(IX3pbfH@WK zhVP4MWnH!OE~^}8hKx-?>@Dv*F}>jf|87xjhwqk;Zm)Du0)Wblld)D9y#XSi1==Qtis@V#jCS^|7Uc!pKoD*={72W zSbBBXv$*GN^m_MRhgR9$PtGd9Bvu_3_q_8Czuukw+sLuTbFKgrv_ID0-(0WGY=x7% z&yRi7adc>MAtq>ltiQicd3E;S+$r7rcAn+W*`rB>p)mi4ysokGjyVmjK zr*jGsw_Y9g;8mS1Iz6@f$5GoIdj>BnL~Of1*53#0l?(e%>;BP*1CFvM+=YmL_qDOH zq_aPE{#BiQw&IudTRI+bOnRcA5Ha$YANFj}lPN0@`}b9yy}ad@^{1XHavXVnVIkt^ zVK=f#mt?9~(pkM5o~W}X$Iq-^5&Nj)_o2y!h_#2^{t53Ukuxg*d%>%-9Dfmk|x5ZL1ZBtN$EIy-QhjJe6Lng2tAa{$&AkTm?vJ32eoi;N-dGq&#UOa{c# zxxZxeB66?vuQPl9No-q2q>;1xea!M z(oEzcRQX#T;KPVE6WOqnk;dVD37)^7+dl(h>0-|XA6f*EU%~E(m|EO!-F5qCKrCJO zi?Su49#Z;GVn=I7bAKmvI4}cZ=~X^F7T^Qw!G1B?7}h>xYi5T7Ga!~;h5aGGF6y_{ zV^Ky{@@r=Ob^B)^f5K|JA;;oc*zD4IJQWXl7*??mOSg(eK8IB-az3nLA(k%MB2A>! z`TDKs7sl}8Htdy?N|HeW+B#!OUZUb_3tYVSJV-<^BAFEj816jo)XXsk} zSInWr#nP|N!kL)2fT)FUe!v_U(R?DK9SNS-v-_K=|I95x?osUQ!--z+350cX5(Krc zp8u+g{aQcIGj#GEb5CAl6ZuK|W*ttv;?;dvHLqTo>S7NZTJM?Ja*z2@-^M0#m?~yr zUhmVDXlel2+>47{tl^;bo}VIjo0D#9WFpUL-|WMQ=QuIb)SJ1VvOoU0)x{qEc%A3! z6Fbdqn;V+Qg{qu&IPq_eog84d?+-5a`u?>Z!?E2g-Cf^AzEmH+wj_7GEJ>e~zvFI5 zXJgN;@zh(s&0PE14JLA`oV*@N3nTqViQq?cuXHxP!5Ys!Sst_P@j52*uHZv$j+?;! zRdYnc|D-c-r`4W8Jxk29r)!zW&B_Xch276*q_YRKRi5leHk7a=Xgs+&ePZf8&;WJi8a0>jxhzLCzWK7w-n)9#vm>K9`ok z?w+*F6Z6=I=8z!=N|2YfWtQ+Ef}8=w94B7QU`>9@@r)Wf$NauvR|#_0a6d16sIm(` z*1Vg+Ql8E6M9@sL-3w+3^4rkYi8^&f8v~>K7`-fmwT{T~^r-i``OeGk66C<4|DqoJ z#|8dQ-o^~}NPf2G>Bi~igS&G|kSB+6A?ob0fOm^AGuZmc*`6lHMwov;I@%%LVV##TDyAtH~ z&G5ZjTEN&e-_Kyp=H+Q>!lOL5KBj24{i(8@qo+>*1GpH&tJ8Nm3SwOErwXS zh^vV2N;Hz&MIGQ5^LPfk@84yfapt(~G%G2Cy>(!@r_r0= z*f(U4v_mXi#LHFnb=Ai2T%W)Y(B<`>xVv_1^Y%5;kQ;if^=;VXJ=&hU#v1ZR(Z*og-CDg@ z8)-aO)vtb4-NJ73JQtgLW}WBDPP??aFUDxdXAReGz;^w@#YPQU=UM&14y}?JY7k2g z?hnd#`DqtB_3m2F?x~+@?{==QK`b5ZCi;WnTi;-Jc(ZiYWXl@QSKpUuE5EL*K`dSD zVG@07tg^e|_H=g3?$w?vOSfu;QFSzkrT66XZ_g0y(ihWN!R}Qa+vXx|qdQuISi1js z^Y3Q|K2B$?x2^P?X;r9gEhi0mx|sXK{43T%HTNC*GM$YoTHzV^S)TUy#q$n`r9URe zd~iRz=TbU*zbMz!Vb?0{#=d79$oExi0M=FWv$TGBTTh^2>{Ct>%|aT#oVk7b^r74K^wUH!rVv2_3W7j+99 ze#LKQu-bESJf~lJORL+d%mJ}<^asqp>fPWo>cY7+gT2u>$FpS4WNn_g(SaOg>>vEs z0N8~6H5)S6&Mn!VxVJL2?I)HwcpkHFPY}4i{Z^8}Mo!80*zWj`b|HJ717hjdTHltY z-LKu!a)tx>&}u!t;y0JT=Q}+aZ0D40&$J7@v|2Z(J0O<6+wa}{>mhA(20N6W?Qsoi ztIcdU(1E;aoW+a&Al5h4b{E!UFx%B^Puk{a?Y$vg9mu_Q%k?;Tj+(hBgU$R;j_1qo z4mgeuiEes(N!0(1HWw4KjFY`3p zZg*V2^fo*4yy0)~J_@!MJ)XfDo?GUb8c8)lAje(pfBo&E4||?YXT684 z_Oxv?!d#q?TLQ6kw6WS(!%t;bPf2HSx32Ld&N0kG<(?9VrDIRv^_C)LkJp3pRSXpH2uNFKDw~hv$8DPe5LYq33BdN%C$x9`;^_! zx478G1M58PcWpFFiX%eDhkM3dv8s&MCw{I|SA01(WOQ1UJ={H>L zM6*24u*%oX)7`h0VB-y}_|6jRJn9T*)jz)NVtrcYdG>d?(OjPTNC`H*=sRBT37@~J ze&3(%V%=}b^IW|2cX2_(q+;+E1lNPY9-if5*=_PXr=xQm_doK79oz=~c7ap%(ElwL zYuqZ&bIRLW`>t}D1N;ZUb*Ah#d&9-g)r<#qMmJ z=h^$_YOQI%^A7MRgtH6meG^@*W5Ya8i#xYzXV%x#z_sA-FEIGQKHBZK`gxwmChyU{ z%xkQHk0IEudN*aa`JLOe)9dSL;B2VL-@By0_4}Q7fY%||uBx}DZ@Ac9&GI})BW7r8 zB6m8#{owB}aLQj*zkhpsYrj@bbATTLcG1SFpDBM2&2q7vHhG@2(K(L$9{Ix#4v82! zjulqfMt``)uRnliLhMU$Rw2e4u=t^$rL@lTeAVSfb8+e;CE%hE=L9Ew=L8D-#~UtI z(JasNSmo>HZ{4?+fUg4Uu{zgKZGk7o#lS{+o?EwXFz*;0VL~h&{`&7d@oxC3@ittZ z!+`e!Sj=ZperFZ18;pfmI`&cGyL(ZH4-d$(=^PzlLM$EiEBu|svHtINT#n5@x^FFk zSUTQK*bUr+qt1G_&hzY(V-q|a=sQGrb%hA7st4FcTXefA&vWV0-^H66CKW?0eUPk& zOY+PHcwmpnHa-)bdn>Kjs4C$z#W4Ai+2;}ZB^^B8bfMqLM%P_-IQ(B zZfa~oEZy*}0ixa1`}y0&*o0U*=1J9V3J0Gtm#DE>uitqG#L}y4H~+D@Hgcx}d?%|`B4+}`(y=!ZYe1H7T)^M=Mvr50Zx(xoUeR)2if|@CEFC_GHvT98yFKzn zR`=P>oK9;`lrsUmGUyLP&aOmr04$*pxq#rUQ@f74!7rr)DOEn9N|m=4^VKssW#4^ z?PAWG@;t8}%(AsV!xF$16x?pAejC2+Vs|Cvc{&}+vT0{n0{Dc2{Z;*8+E^EBdpysx z?dvRC%Sx62vGm}2P(F08>tYX{+u(WTNS3Y5S(X4^qUzf1(S9#7?QEf^v^>k!|1XvR z?jp=*M1#5#E#rM%`Fpg-I94~e#PjT&g4{@QCO|Ab@u`yhiBI2Cu*tli$Id8!&qnuR z=c0R+{u$jX;aqgDTyP)-W0k+<<;nP!E?;xmT)5`42A-sm5%uyv8L=q&w(J)WL(cc8 zcxHW{%s&1;xis?hant+9agB2+eK~yNcc+IX*`^86ZRNwlv&s0CZn>OoZn&JSfp6*9 ztxc0!G{3)KXPg-j>(j`aj9=;9i~E>taUTtwOk+l0P23-If6}3PXZg92vb!<57k;HB z16!5s8Q97J-lnIV*+qM#9ZP0U9ZN3#@1tk6F^`@#!8PUSdo*e4)Atn2`+9Le8y_i8X5W-2m*%gz ztfB3|M|Jdu6G@*w+@ROliAw|OLD|iacEMQ{GdX$V>pwr4)ZzX>k^7-PCF586eZ?W| zn~Fmwc&!#C{*>71^S%Y&jW6PM(I-)7-&Q8$S2|GE1Gul6EPW^GyT>0%THpRNpAY`^ zyZ!4?+Lo_Jnc&Cje&B<|sr~yG99($RhebW8cDsA}7mk$aUzC7D>)=nv6aSoXPtp#% z5EKvBA9fFHlr%oPJQ1aKs0K2N6-Lbfj*?Vyx4P0Dx`X5PLy1G}=&iQA2 z=acYP_1{9-f5F$~Y`rJp<%1t2XEeGl2^i(WlJAo-HcIQAK5o`IeOv>lm(}qG-Y?80 z`@ZO#6fBnRKQiyK%ER}r+oM)mQnkPamUD<>mYHSXceG4_SwWgP4KjFtnpNm5=&S0(C(LH*7ld=(z1PfwW57{O>nt! ztn-1SV6pUF=aTU&t*Es?`?l5s6MSzx_Q3gTz7k7^znG_-* zINlb{u1QKP9eoVHb8>B|)g?BuPdnNO-Z&Ab`^5$&mL6=k@%#?v4f8u_;Fc5bc6?*7 zSi15Tz8&8-vv)WBmW z+W2xljYwSa9ZXA1W3k1&gHzW5KJ( zv1O0s2aBZ#W5K;A{GF5^ES4UO1wS9ROJ61ii=_u+!QsdIjxjAiSS&pl3!Xnw58og> zvc~!a7ohOLn;$He9&8tUfgI~RloTwM9*hO2ps+hADOfB$7z^G(?yoT=KUge17z=Jf zVYh5!uvmI97W{?WuJikR>bWqWPX=SbamekK{gh8ZV(GzH@E{6*XXaCMuNvzYT!|b@ z?{5qiONU+TAFy}8+5$dBfsNT1ES4UO1?QruhfVpxV(GzH@G=U!6Y_(_(u1+!ZWP#s ziNRv&!C3G+a;%Y`M0ElM=7X`|faLxfOOmL-5mIOV^#GnoKA#!u@`J_FgYAM#QusSJ zk$Q5D7~i@XjKx8@m?v*f3KmNb#^R7q#EBUNL|FlS=aV=mb03N?P59xY+4YB$8h9&3 zTkx^wyAQxzx%Y)9*hD*(PV16yPVSPgf!k7Gvk+q33mE*c4xJkM3TwQ6is!nEy-m8< zTLb^4@ZlhA@;p|x7UsR8v+H(F*{ZkhQ!=S_9|t%xQ4dz)*CCb;AB@jt*BI+w=hAiU zA(jpwM*R1!8nH)?M6`!kIqQ6qMDqb;%E{)7+5C*N5k_L+kp#zHI|b;jeMYw-8rxEEs~mJS~#cduKc-S<9D ziiKD@><&q*%IyoR3sDd4FJ5g2v2^(R?^e!(QEi{qotGgh`*d_P)W)Mr~SmU^m!Ke;9VcMTE&8c z)+!b}wN|mp?FIB~6F!JBIp3vOMjSn%&&3yauhG%GlItzsdTZWRl$bgNj1 zrCY^9EZr&=V(C_~5KFg;1wXM>EI5p#_v$Qu@`A1DFLzpY)8G-g;8eDX1@CfKez%D8k5Ic^ zV0Sp>l)D!#2RF0GA>~4FahP}19>V9ta9X~?)rO0ugNwuKEydn}=i~TeVfUSvvO4|w z)b(-Tc*a~UxF1of=BQ=&f`3x@@KT*d%fSQ9`5($4Tqm%>b~A<>OW!HDm;T-r$RQukaXs7WP5?;pT zj|6vhht=nJ{A6s1__z=?N4*Pv>)I4uSeM5XI|J^?U^_xksdG6MaA5!8ou1r+iyI@| zu&RFLe|I5im-A$or>;pN7SDXhPoCOV#|Y%%z@ z*Ln4%Uxf&97$3N=++V@Ty*vIq1h9i*L;ZZ<^#I;(t8EN!Z;mydE(jJ&Pl)No3NIv= z?i#Xs%itf1wt)W|>pU4<3Q3BktA5t3x1FW0=~4Rky)%n5|L9T#j&R|_gaV?GzW6@i zN3Oer{g4`0YTneUa^H`7(RxtG7MpuDoDw zyWU<54t2pN1`*8IfLN-37G|>HpFQOnIdHNWedL~E@T?0S0obh)dd9a)GuuQ~Z+H*S zz!%;&N7Q+!7+mav-w5+wTELy~6K7vz-`_}{LxVmrH{}j124B1I7sA9U$bspGmU+Zk*i_xj`F1%+Bd+dQ?@bn8T z`md1$jC!{lkLqk(^V3@5=$YnM=UFkh{6(E{4mO{^z~_ChvqAIrYcW}`nSXUpCQdjP+MXb1Sc>YUEHyggov-rmcMK6j-E+5*A{&Nt}8;_u8pue0QTZqo{8v@z53 zzb%6PfUw&$8DiK+<$gC_Dnxi zvZ?C_MbI%2{h>|)(G9-41NeX(=;85(PMd_n)- zIVt72@8=dTh#Is7x(e_&`qJ^_>crAdwcfvU#CHkJpuHe`7`c(0?E>0O@eqM8C?a}L zALuiPwwRj_v2^ub%HKOAUy#yo$X5`Y8_G!-}&(cLFYl(<(wn|XKkoo@CB9r zwA@j#dvpr4AOseD4DDRicY^tXpcf&qGm@29y7C$Q!JjV(ni2wwBI*}d*at6_KVJ}Z zCq$hE_FrJZcjeC)1Z|3N;{t07c(jg{&(ltN259SEh_OSzLi&Jn@PIxEey-~UKNsf< zg2qMgIL5yZpTYa}rsNCCzB9oN9gOPc2k?o3FKA@uOzmJ}ryW`uavk!W!>Bp~U(jgD z7xek~2kg+(5aR-KD(BkcKEMyf7xerq3$>J6AGbquqq=$0k5^5*FX?GJbUB3G*h1p- zNtIpjwY3y{ZCd|FpSMH1L+&;3EyCvq)ozL}DEg1JTCIiYcIbPEbrU$TUZ{6d{Bm1w zbZfDZFWaF3;=c|ln|L?y*3A~Yb(}8>-ht5Vl z)H=1_@daAe#YgPWKao5Fc(;IcsKJ*yD_R$m+UDWenv3~u{{6CmHP(JgXFuFipk0}ls2!PlAqAQ(V$AckI3PwK{;bXh ze>+b*?P{vUe!edSx-POF&~5>1*3bXwtZmMCt@h(*9eMp%r9k^d?qLcjNG$!Oi#ppA z&9r#OR!3&S)D-B$i1`6nA(pQC<*Ca$%O2Q3TYvFw$E@>rr9eYQ)We_x3KC1#uj=f_ z(YqWS-@Mx~)O&pjbY_Izm;wqCOHcFatg@To`1H>!_7$Tx^nn%)#~Qa3DzS9zx8TQK zug>Cck8w=>WtRQsRrmIRUXAbp=iu)J)WbjETHU1E*FJb9<>Wu^-q5rWSZ7b7TE4bW z?U#Pnq!ibWm--C&C+}A1-T+(E`i5Sz#F;V++BjCR(9f}og~pCmEOdCRVxiSz6$?Ed zt5|6MSj9pY$SM}vK~}NQ7qW_l29Z@Pbc(EEp=D$h3%w(&SZE?y#X>j9Di+#GR25zpk#Hp5E!TzVDy+kC*$paI4C@tE;Nh^xaj@ zJ!nv`gNwdwC60&;I_CIeuMu(61IPaJ;;{#I@7`0kd2=si{)uFicnr|k*x2YY?N|qP z@807tnMWLX@Q_QtXeCEobk>CP#=5)7f!zoH<#70rV}~6!L^tV#V~#s^|33Qv(Xp6L zmW!M;P$aWVq>Ix3q#;)(fwJ}Gnn#)2<#O@M*w!tJ*w)>L68SKd+lO19S7x?tvJX>V za9h)6B{JRAXWHVG<<%G5M}XJX^v#ql6Ss{1v0u{`+MHJwY)hf`nX+ZNzwWlC&C7I~ z^U8w#5O2S9#SSLW77JIZo> zbIaHV`=Z`*k=qCAab%wv_T7*xYhdiXGRB4fM_KUrQs(Bp<6-IxZtIqDeTD1u%FMP+ z_F>u*+}5Z9-B{RY}+uD48}%v^7N*)nm<+~aF_+#}dGZ8G;ECDPqozkxEd55KI?w#)Rk?mkT4 zy!%k0>(}kK8PnkL2(-^XZl=D_SefJN-`6~t{knWp=51^CYqkY>$2WAH1Ge#xxoKbU zSemi&`eEub`|!`Tz_vW2Ok2#oGx*#x_XBtTocn?6%?152W!|-5%FKPkJtw{UklU8v z_yzBY=H6t+nSPXc_a{>p=&%2*2%azIe$PGIoI_?GUYT1*pp0|Pl(}ON_`OkRA5q(y zac11z`U1y;GPm4}y|)j;Gvng7#cUhsTU1+2o7vVKdou=s>%%V#j7!0NnD%-56+GsqEcm=M+j`fkIft6;BhbEJTg=$|zXiuwY?Rb{aj?^owwrj|hxxb~{vYp;K&f`%g?zXuy_t;TZa9gjw za(%t!)#sJzZFBYc`zW-nX>+-Ez0f|>7OyO?zTiFrJil+ItU-^x2>r;lh4UbNV~x2-8N_Y%LpzxlZLcE4tnSLkc zn#r|AzjNv`)0X@)-4=gax6Qgtzt`sXgED_PQGpbjwoy$j#ymMfWUORi&ekMg(?_S3a z?CF<@%cHD!ubut-pV_vLU*>MxKz+K*eKt~`Tc-D+?^kA9UFM$Oep#r#z<%B9Jk&nQ z+-)0jZT9!!mgzR$Z>nhU(L0x$*PcS8xn+1`?NQefL$nda$p+_X=(MW4H-Ot)G8 zW;JaIwy)5B%^2jyCF9qp%XEEF+vfVF$Hml_8^4TS7TkxaPmfFfnCdc)r5=Oa@o-@_N_curt6zF?UwS~wtBxKN9y{5$A~hv4fUhRKFqeEzPbAd9uM}L ztIr?jg8QI-!M5bLnQh&%3iQoC4+8t}&zC@3{PQYMrt35P2=3RE1<&WEZE>%+P(O0* z)8pqK^FW&^%WbQVufAq@My*=)Zuxoc^`?K1zq0DErMWWRO?d|BvJ2d6P`|I5ZFQOX zJ$~3yd1cj-v-JJI{e2HFS7!F1%l_%sm%ptpV_W^~rY+t+T>Ze*=WXk12Bu8!SL+9+ zeY$T2`{A`uw^`Sx^#fC1t}XgENUklpzU9U$zi+xNl(B7aTul3-$62@8>?61>Wx4vi zG4RWB?ep8xP@sKoS?IW>a@(5YtII;;=kh}B3v6rldsvEN9%`RkmOD4}?~vh_-)sae_pxc5@?G#zQO*QG1c4VAKze`{qrC=R_6Q*wAr*T*p~eEd1K(6r@?-h zwgmS}nf{%aKYqEg+hs&TG`wGU1={Cso7=B@e0fLA8^8OewJ*=r=l3nJ z4?TYQZSluBun&EF^V{MdxAI*3{IPP|qT8qY=C;K@H~jN2u&q9?^4shm-$362?aMnx z-Wd30{xJ&d!#_rWF{OR(H51r}-uAD@g|_6j%^i=HspK!J{I|x<<@1mK2%Rv)y`8cL zwkjWZ?4n}cmEGT0lpXr)=JMZnSmTw6P_}Eu#pSEZ;AyNVDlhL?adG*}p|ZoD-CX`_ zU|V?XzCeZ5B(E(`Y; zUbw%Mh5I|t8Qf$al!fb~EL6qFJ|~Siqbyt>W#RfL3)eUJ*urJu{=y6Qm$Gnw zmwnT;KFY%NQ5LR`vT%Jz{n@m?l!g0CS-8KHh5Nf|T3M6vqbyt>W#RfL3)feEYvHnR zf8mAuOIf(T4ST1W?1Qp!eUydkqbywCVSQ3f`b$~3zm$dhOIf(TE7vrwkFs!ml!fb~ zEL>mmnZjk^{=y6Qm$Gnw>rZX^{y|x|KFY%NQ5LRm*hQ+z_)!+_FJzV%)@1xB3)e?kxIW6l_3b^O za9Oy&@WTD2EZpCRcNyMfAC!gbqbyt>W#Re`NDOb%U&_M$r7YZE%EJBa-sQ&f9S%Nx z;3?|OW&JB#m96~czp4Gsx}o8rx6XCThE=vIlNBpVPFk_9Av657RQCKE8oqjZaY|OM zEZORZ_m%8+^D@dldwOwdmEN}etgeR+>~zb8etqBk{En(9nzrnPolo(3r%rsmq08hu zQ1N?zU#X!M5ysPM0!i`Fm-w&6Ew>aUN~<_xso-m$_xZ`X~!;n|bMs zy82TZQ^9`BxTQYTa7trdn<;yL#s_)(VB2?Re2@x`3q09ybZM~7nHSHfqb%4K%BKJ0 zhO*!ouq|c5wtTzGOQ~5$hzjoG`(0j2$&|&V!EGlFsCCPN<4hUbGA<9ib?(3s>P>%4 zX-nIK4&3e;9j>}=+`%5;_KxfPRc)) z-~9Z}vNHq6ocb7-bGsfoFz#*3euHfZ9!t~a;4wG*HODeopE>5i{+h85_QM>bV4EqM z_m3OOf_>xoay)|L0&n>#jd^W`$N3U$3uPb9_<(cB9|N}iXvPP5V``3Na337=M~)B` z+?HcWS+LFKm>+k{@MEuUskLp^OR;VWw8*WWl2#(Jm54wq5}hZ#jfiY5BCSPaTQ5(# zjfiY7BHM|`4ql%0P9n0Sh_n@voxMEib|SK?i0mRF#a^EDZX(iNMB*Z{yO$^3Nklq| zNCy$=?Bz-CDI$CD1yMxy^75p+ipbs~k`R%7ygcdsMC5NGvag7A^YWw*6p;f&WPcGk z$jg)NDIz^Yq&xGKygcc?BEqt>-XhY^%abkmrA0r}1i^x$T za;%ppeS(M_FCxc@$cbK_^eG~8vWT1{A|t#!>C;8zG!Z#fM9%Q?q|X+Svqa=f5jn@p zlO8D|=ZVOebyNKN7)p7hfq@|1`y6p=+! z7m;_oJn8pE*Yy*CnB3fWTS|D@8wDVBqBeG$PXg&vzI6Rn~3}>BEN{pW-m|r zPZ9Y;M1E&kua_qsb3_~-298JzN9RemazwUrL|Qr`MP8otHjc>Fj!0`qWLqy!x{V{U zy(6-nBeH{+C%uy+vZEu?))Cp+%ad;Bi0tZ!?Ba+NdwJ5kIU?;Hk+>tWyO$^3$r0)3 zh;(p7I(vE2dpaU}I3isfk-fY;>8_5*-i}DZ5!uJflitq}`I{rMuOrgU%acCP5jnsS z+20X4$jg)N>4@}jM7ld7y}Uf>zK%#AN2IqS($CA2E^$N#I3oQWky0;DI^~FzIU-3% zM0t7AgB+28j!3y9GT6(L{<|YG#1T2z5gF>`Ngv{f40l9^IUx%=$S5yQ`X7$S1&+x1j>v^xp7dx(UYYF8A`JuW&>rI3nX6kt@AC>1!O3s~wT69Feq_ zCw)asWI{}2d`#rZn9h^FCMI%qOysJVNZQMjzAh$mZA>H+6Pf7cN#7U~xgjQUeN5yg zFHic`n8+6@D6S>RFlfE}5a!*X;?wH6VFHd@EOk_$-WO7WT z(#w;+FD5cACX$Vb-0$T{|0^c)U`*tJn8-t3o^(}AV{$jq3? zqh6jg_v+WT(rfImb40FnL^6)ZL`U2_=^Gu98yu1A9g&;7Jn35j^i)S=iX$@F5vla@r0;V?ra2;6N92AlPx@bu z$b*i^1CGc;UY>N7Bl55#GTjlG;pIs`;)u+0L}of7k9v91k2@l>9g)Wzk$-!6(sLb= zCmfMEj!3naC%wQCneT|qb3~r>@}!@3M4oa)7CIt}ygcbzM`W=hQsao!d3n-H9g!uD zNWCMn%*&Hr?ub0&h%`7N&w6>%&pRT|IU*|@kr%u?>6aXl7aft6j>yYip7g7Z$SaP> zDo13smnZ$2BeK>JS>uST^YWzsiDeCUXL?Bz*+>WF;eh-`2~KJ)UVzjQ>ta6~?LM85L!q`z@Q{^y8% z?TCEq%(iL{96Jn2?3k*#7PEn^}@UY_(eF_EofBCTU0+j@D@ZDJzZ$3(V^ ziR|FzN$(UB*)b;4HYT#OmnYpWCbDZxWS5vov6m;kTTG;VOe7u?+1<;N?i3U07!&Cb z6Y1>bN$(jG*&`;>B_^_$mnYpdCbD--BoPzY$IFx6FDCN0n8>~{k#1g|^no#v17afk z$3zbD@}zslM0&(Ty2nI%d3n-(Vc)XS4TA|`TpOysbb z$dO*2^f57!qhlgR#YB$v@}y6Qi5$&Vj}0qL@xC5q({d@{uvXw zC?;~TmnS_oCNd@_QV|om#LJVuEGBYkOk`Y4@hdf*Ym59fUyFkT`Rg9y*^pBb%W z(8cFYIAid|qsNWC_#)Zyt`ipMfE++iq|<*5+(j%h=*T06l=Ft~!H5iAfEHJ50G^MtlGW5daYaAT|I*2!J2~5F-Gh129cRm;i_p0Pz7J zN&o~3fH(mVApqh8K&SwS6aX;-AW{GX3xHSw5G4R&1wgm}h!y~G0w7ud1Pp+90T3ww z;srp+0Eid>u>v4s00a$ym;n$ifEPo@6*d5(20*+3h#CNa10ZeyL=1qq0T4QXyTZ#8 zHUJ_AK=1&F9RN`SAa($R4}j+(bAeI1x6M$#} z5Jv!_2|z#rh$jG%1R$OOgcN{?0uW08A__2JmJm|_q6t7u0SGGqQ3W8L07Mmlzyc6g z03r%NTmc9z0FebCrT|11fZzfUTL7X8Kx_dBF96X6Ag%yJ7k~f*5MKZy3qX7U2r&Q= z1|YToL>Pb|0}x{Xq6HvrKFAkF|p8-RcV5N`k?4M4mB2sr=|2O!n}L>z#i0}yinq76XI0SG$) zQ3oL207M;tzylC>03r@R+yMwX0FehE-~fajfXD+7cmP5UK;Qw0JpiExAm{*u9)Rcr z5PSf_4nXh$h(7?~2O#hOgdczi1Q37#LJvRy0*FBXAqXJ&0E8fbC26 z1Q3t_LJ>ef0*FZfAqgND0fZ!gs00v{0KySKPy&cc0Ab06_uzMhB~N4m2uuJW2_P^5 z#3q2y1Q3(}LK8rA0tik3VF@5O0mLVO@B|Q;0KyYMgaQaq0HFyWKmo)kfDi=`oB%=; zK$HRqQUKuzAV>kkDS$8q5TF3U6hNc`2vh(e3LsDc#43PL1rVeFLKQ%?0ti+BVG1Bv z0mLhSa0L*k0KyeO!~zId0HF#XU;)G|fRF_ctN=n5K-2;VS^(h+AZP)^Er75E5U>Ek z7C__z2wVUm3m|X-#4do)1rW3VLKi^v0tj9JVGAI50mLtW@C6XK0KykQ1Oo_Q0HF&Y zfC0oXfDi@{yZ}NNKokQAVgTU_Acz6PF@P`z5WoP!7(gTg2xI^u3?PsJ#4>_0KyqSL<0zD0HF*ZpaH}*fRF|d%m6|fKvV+=Y5?I3 zAgBSvHGr@N5QP9@5kNQsh(-W$2p}2(1SEiX1Q3Y;;t@bd0*FWeu?Qd{0R$z0m;?}w z0AdnASOSPj0PzSQDggv0fVcz@kpSWnKxhJpOaL(nATj|2CxF-l5S0L86F_(Zh)w`; z2_QNF1So*`1Q3}3;uAoK0*Fumu?ZkT0R$<47zGfW0AdtCm;#7W0PzVRN&y5afH(yZ zp#b6(K&S$UQ~)swAW{JYD}Y!95TyWO6+pNGh*kh`3Lshm1T27f1rVtK;uS#10*F`u zu?iq!0R%08m<1560AdzE*aC=J0PzYSY5@c;fVc$^u>j&0KK5Z?eI8$f&m2yp-r4j{GxL^yyT z2N2@`q8mVr0|;{fQ4S!!0Yo`~KnD=#03sYfoC64T0Fe$L#sNe+fM5p@>j0u0K&%4@ zcL322Xt7C)b^rknAl?B)I)Hcw5b^*b9zd)EhoJ1BiM6 zfe#?=0Yp52xCapW03shi%mavg0KpF+_5nmafY=8R{s5vMK->d}egFXwApQYFK7jZK z5CQ=rAVBN`h=2e=5FiEuL_dHS2oMGVq98#01BikEfe;`L0zQBNK8yiAk^w%D0X~EQ zK9B)EmH|GL0X~QUK9m7IngKqT0X~cYK9~VMo&i3b0X~ocKAZtQq5(dj0X~!gKA-_U zrU5>r0X~=kKBNIYssTQz0Y01oKBxgct^q!*0Y0DsKCA&gvH?D@0Y0PwKCl5kwgEo0 z0Y0b!KC}Tox&c180Y0n&KDYrsz5zbGfkTI!eC&tkXg!o$>R;%u?qX-QV{=XXv4N#^kZ8t8nZ1I9om+QR&C2g&$i{FdE0W)#cjE0=eAt*bz3eP zye-$AIN1ER2LD_~%eUpC_uF#$CSc3uyMZm2Zwt0uzCYM<`9@*Od>?Xv^h0p)HqhiMCw6H`;Rf zCTYuMLbffJZ=1GUzJJzma+z~v%Vl1YEtk1Vwp`{n*>af!Wy@ur zlr5LJRJL5^TiJ4%lV!_g-j*$wxm~tg=6~68nImS)WgeL=m$_!PT;`+Ma+$Mc%Vl1h zEtk1(wp`}N*>agfXUk=toh_HSc(z>T>)CRd(`Ub(_qVG-GeQcwGp;l z)=$`SSz}?#WgUhsm$e$UT-I~ga#{0X%Vk}NEtj<;wp`Yi*m7BeV#{TniY=G5EVf+M zyV!DB6JyI|-Ha`lwKcX}*5BB2S)*giWgU+#m$g2&T-F2Ga#=HE%Vk}WEtj=Nwp`XH z*>YLKWXolplP#CEP_|swOWAT+Q)SC#-IXnuwOO`Y)^FKzS>t8PWgVC;m$hQHT-KA> za#?d`%Vk}fEtj=xwp`Y?*>YI}XUk=soGq8Nbhcd9+u3qilV{6i-JUI%wSBf+*8kaZ zStDr6WgVd{m$inrT-GDna#^!z%Vk}oEtj>Awp=Fl+HzS#Y0D*;mo1mIn6_NjYua*I z(`n0P-KQ;=wV}3L){ok9Sz~I;WgV(5m$j<4T-LMNa#{0g%Vk}xEtj>kwp`ZN+HzTg zYs+wRtOWlgXxmvzIoT-Fxba#??D%VmwSEthr7wp`Xa+j3bCZOdiN zv@Mr))wW#LUfXh6pKZ%!4Yw_qb>6mI)`Ht|SubwOWlgy)mv!g1T-K)Ba#_D_%Vmwb zEthrhwp`ZA+j3b?Z_8!Py)Bn@`LI03d?VhPxCi8o-&B_@F_ zm$(JCTw)v8a*2On%OysFEtfb7wp?N@*m8--V9O1RVwu=-iFablB_@h3m$)gmTw<%(a*4lU%OysOEtfbh zwp?Pp*m8*nW6LFGj4hYAGPYb|&)9N_Ph-m^hK((kI5)OjV&T|wiI-!`C8mxom$*B& zTw?Rsa*5w#%O%E-Etfbzwp?Nb*>Z^|WXmPykS&+EL^*E5vI4O~{q?-WF3NGs8{j(L zzwcW1Y5!fzKC`}S*+>1*vX3IZku8@PNVZ(!B-wI_rDV$`-jXesm`t`@;x^fGiS1;| zCH|8wml#pDT;fRCa)~u%%OxI_Eti;8wp`*`*>Z_}Wy>W#mMxbUTDDx`Y}s;&#bwJS zUY9MGm|nJA;(pn3i4A7UC4QJKml$KVT;h<~a*0)D%O#$fEti;Qwp`+(*>Z`UX3HhM znk|Ou>i7jW#CH|Z(ml$=nT;kZ-a*1_k%OxJ3 zEti;iwp`-s*>Z`!XUio%pDmXdezsiV{MmAe1!&79UZ5?Pn1Z%k;ttw!iA`wBC4QkT zml%h(T;d?wa*35_%O#$oEti;!wp`*e+H#5AXv-zOqb-*hkhWanMA~wRC27kg-lXB~ z*Lr{VxBZ`uY4_jFOZIL5d$*EV9eNB>$FAd|B_jU9-LOEeR5wJ@h=Tm zN91badEmdd5F^u;OB_vGF0nRkxy0kN z+qUHrliQX{-0m>9u`%ub+tjj8`%NwT%=)oqAJU50-nLxgf7^125pK&Rj<_wCSmU-_ z;*r~OiCJ#TC9b(Gm)PgFTmtpla*3gC%O%dbEtgpAwp`-1+j5ENZp$U^yDgX4@U~py z$J=s=F>lKy4!tdxSoOAC;@R7BiFt3!B`&@#m)QBXT;l87a*4rj%XJMfL-T*5?q|gE zx8)M=-HJw7vBk6F5VQjT>L9+xp-XIa`C~i<>HlL%f(N_ zmW$_xEf-%7TQ1%mwp{!@Y`J)V*mCg+vE||=V#~#E#FmREi7gl35?e0bCbnGsPi(n( zq}X!tQL*LXwPMS~kHwaYXNxTtUl&_0-Y>RX{9$alc*xjt@tLvZ;zeW2#jnPeixIUg z7qjIH_S0s|d}kmoocAyI!9klV8|0fTGfB$b)brlSD2zS$xS>s!GYUfv^4erMqqNC# zMro7fjM65{8Kq5@GfJB*XOuQs&M0lNoKf0jIis}6az<&B<&4rM%NeCjmNQD5EN9df zlVy!9Cd(TC|4f!MN}DWalr~w;C~dNwQCm!wHMW>6Yy7`yvYb)cWI3a>$#O<%ljV%k zCd(P6O_noCn=EIPHd)RnZL*wE+GIJSw8?TtX_MuQ(k9CprA?MIN}DWalr~w;C~dNw zQQBlVqqNC#Mro7fjM65{8Kq5@GfJB*XOuQs&ZsRW%Nkoumi0JnF)TTGVqIBYRl*5k0nWLb~H7L#Q?4qHr?^*H>M z$+D-tN~^YCEXBdFyoxx_F1+f{X`66=X-unU(^nJc*@f0(3v<^urd2;@2jV=t z(0Xk?*L?iGt}(5??{tmN)tYWT*R*-{pJ}yj&T~Fj>%RG1Q}4Zhq*Y?)?TH`lLTkhM zTvPAEo6~CYh%%q6_2a_a*M3Q>y{{YVbG61?n7iwbX|?yQQ+%%0p$l`*-s1bG7E3&o$$4*!yX>XuHt5cwz3E zH`D6mi+1q2T01Yyox3)zR{z@G=W2buFt`7zv|97>o<3J=@P)Zgy^vPP`oH;Ht<&do z&6u6KBCQU3>Oh~Xwfuap8Hb~mr`7p$d-z;W?=N^=On)Y=l8^WFxtJ_RU2oJoGEgrj z%VBP?y$1%`i^+1BYud{=lm^BDljSHb zS&riJyf`uNyuf5Ric9??+UA}^m@GHPHUAG_vTX8&o^QPZ&o@k#qqwwpS)jd`EJtw} zhu(qb8z#$PZg6}z2F4eYSV> z4L{#7S&rgTuM>E_VX_>>J$*%56)ng;kGZI$xb-ij)uQ>i=e$|D$Oh(`H{&pLRa!mp zWbXF^Cd*OvzPL86ZeEr9U4qGS6!+IR)9SrFbH8^mSq^he8?Jjltrl*K`M(J;S&rhi z`XsHsY5kS|`wWxiFxMQn1HMYD%~!wbb1_+t;#O}=tM5C`_qmuXM{!U1F|C%ao8)sb zSq^he-&*~eRv)*y*ym!h9L0Tpb6P#vp~UB6vK+|Sxja%W}=K_=E=D538=GuVCauk=o zeLFeVH%ykpTrgcRfs&qqyOBJxrFv zTr+0j-=3H(M{)U0+clusV6q&=<+t)afpg8RpRp*@6hRJf6YwG14XP>}34kpV{-0-^|Cd*M=>JPr_xwAtf?mN0I z+-Ec}S#FLyIPk8A$#N8z_P!c;*TZBvipw~Z2F3xCehy)>9K{Vk-!NH@;!^LCf#)VB%VDl*?`bR2>e7X|cRfs&!(7we znitaQKZ|qkdYCLnaZ6XF)sfHV-t{n9j^Zv{n^re`n|s&8WI2la)|+Yd=!o3A9wy6C z+!NnVt7``5G;>Urqqyrfq}30fWZq>zex}fyr_d_x)ees-k9$|4xRa+)wJ{ObaFxRv<`$t-h zxoA6|i^+1BYwCUN&$JpeeTDx{hRJdi_lCx_YM6GF&&6ap%r$Lzi}%7dZG0{!%VDl* z!*4ttV7S#buk5;#c_ZdYCLX$6fSnk$0(!ndhtT4}zCyUZ7Y4#NtKj0+VIG z-oM~tvTV!6WZ9OB$+9gMlVw{jCd-e@&~^^Vim#y6L?7YfrE5gUNCst{IPb?zp)o%Z0eXdQaYTUNU`p{Zp7M z7vcun+xPtS$@N2fJdMe6Auja>#-VKZ@`|T1SuVt-UNgQQKeJ!ig&*DaG$zZ1xYQds zZe=S@z4vMFNO4dTvIRisC};+>-SBs zd&uXSdb#)g-02#BeD&Ihe6Fci|JDBw==BqJT)oC3pBrpL@O?$Sl@&-6N#!rburtJks==7#Il>s<D!5c_Ubh;(cEJK%S(DdL(e|HZZGbG`L91@BSkFHft^x8>$`V6q%l?}n9Wb;HJe{CY82j^b9m zomT4)+s5Z&vK+-N`aZ4B`n}3OA23;t;)btHOqQd#53IRT$*BI`XE$+8mZP`}?y68j zI##EC>)SdzxMOt!ljSI`b6b*@fevK+H+88_V6q&=9kcydRW|>TRM#_$vU9prCoox#;;uPptlIU9S*eYO6=e_a zQk}qLIf{GBkz>_)2hBj}IOqQd#mn|Qwe!Q_N)q8WR>~S5d6PPSVaZh}1 ztXh6)RqFmn(c=b5R``xIqmd{x3*BUtcWUDa!>dj7RpsaFpv z%HA-(DuKyzRK2~n8LM_#@kr|Dvu>)~IKC=@$#N9;&G*Krx)qP6UcRCz+jl}$0+Zz^ z?%L`xs{bpGrLvQYvPVy-N?@`a#hrNV7-KTYS?WI)- zOqQd#;pZDB%TZkFO?&m8+_5@=$#R%msJ)dPs}q_&a?6^)d@_N zqqwJd=kMC@4EQ2OLYR1~WV>B`{fz;%T$j~ic= zz+^d!`{Bk4HM7MNscocnw)XO>1SZQ-+zVftO_-2 z=G@f1`?byvx~wXJ$#N7o{CvY?*_MmRGTiCYrY$w|C(ZpVTrVceaL@eiw!h?Jvh3FT z+aZ6+#bg<7`It3J{;Ca_EW?#?Z`c177n5a|Tj1M4xNn#&yWAZn|7E?HEW>RWa>rk` z7n5a|d(YN?IS!aCyW9n3f62vU8E&TcQGdzxVl8BB>cwQ)w!N4vyIhNLz+@S&&G?#N zUu^JK#~71kx8BijH92ly-dmw2ZCjn%w@+*LnT5%++ulj5n;f^z_gAPV-+DXQ zsuP$jQ*WW`?Y$=})V3$gP5t-5j$JOET$R9N*=@r!O|Q+j4jQetf21yzy?5*Ec8}C0 zFj!+pbK+2vmTQz)# zEW@oh^a-D9?y2FvVX_>q*Kosq!(=(Cz2UxLvg~pTj6=9@m@K<(2#jx3-!NHrxfaI_ zlVz71I3J?=hRL$aEpVQN`-aIf+(PGXxNn#&!wp^+QGLT?8LrLshRL$qUW;+SWI2jE zdDLjt_14k^nOM{&dBi^*~nmwK0Y_3|Ez$#N7o z*k0ZtF>4Iej5mZP}gYJljR^cSnu4Q)9P<6 zGkdML^}6I)w+!!z$#Reztapan9?5)Aa!To=cMb1}$#N8T+#k9Pw?EXj{(pB2?}^EB z6!*{XG`CCt8THjS4DX4_a*!Kr@1&2@s(+izjBf{Ss=s5x@Sd0~2f4xa9<@%_+c8bxn=kQOqPS(V0+E^`&jzZ z(FMa7V6q(K2I~zRH}~4aWI2kfw{xG9ZfF8bmYd^l zynWSE6+diOx#8JUy|Aca=Khr%K0Pju$#Qetf5|(GWayq#WN4=; zm@GHP-MZ&Di|+1rMsbI|hh;HYZjL)}uGIAJxuJ5yPus^aS#FN|S!$b_^3mJ2D<8dG zJ4}|F<9`3*&Ncmyd8o2~&xa~8S#FLy;fRhk{TF;z+5g_pDlu7Zj(g9`U2FRHTwK|I zr^S_+EH}qJx4e6e3_Wa$3>`KFljY{P@i_x(`d2+uxgpg#j>&R!+;_JhT+=`Her5mV z?^R;5+#L5m=N?v5aq#Yy8;&?Rj>&R!-2LVqU$e5~AH^$A`=c0><>t8GeRFzE|FgfX z+%URzoVa?;asS@s{2Cd$%ajeTULD6|xjF9MgU8f-IP9gV9}atQDkjU#ac@20ikg)j zD~mfE-8+lPa&z1{bFQtq`^w{rJ3Mnp7L(=Xxcl#YV@?0%vnu;vH>(np<>t7ZC*NAr zf6wbHH?&E`F{zaZHw*<92Sdu%^r9-?r

8va!%gu2Qd3jOI%B!aqcX+sW7L(=XxV!me!*9|G|Fy@FXCd8rhZGjU9o?|yuTt|A?J zi+tFW+rgcaUMbS05|d@~-V)X_X>V};Iws3-Guu902G{(Kf)|{>zWV`ddSkK-cixjv zq=NObO>qADqS?>)!DJckzFq&O!u1B{uRlI+U|&p@;ohCPz~$=SS^6C(IDh@kQ*Y>t z$ue9x;WqGFE;xT3lV!L^b@@jVu9;tL=C6CPKQlEG_iw^wE?{u}Iws51J8yMu-Z;>v z@cea5mfiNA@~1n#!M=s(uVbzFLVJ-=>@ zTW|23Wd8cyQ&#x%*D+a!TXDhQJTBWXe|_(7|K-nL$7ETzL7KFe`RmK>KH8tZj>$6I z@=fELj2ZLSUmyR{A~Sy-lV!M>S=Z!UL$rbU>uuVtewz8~hd+MzLQIz7@}J=OYmTw` ze*lwZw_fksghQSD;8`owqP8lZ4QT2NBfBm_vm@J3e%RcxQp4*JcGTcJr05>?d8IxtW!SOZqdTsFM zHe<33m;Xfc&F5mWY+ElT%gwbnIJX&-Ww^oPX4*^Nf^(ZOS%zEaxY4)Z+-6Lc;Zj#b z-~3~N$#PV^;knJ2EJw9BJhvH>Ww?coTX=4>7oWJ`aSP9F#$;Ldt?6;oW2cWPz+^d! zyRjjyewo?JKgO6Wi)0=dH)K*n@sB0$S~+uVUNk(dE?AK*yKRI_J%2@ZFHDwgxtJ`& zJ!`^E4F_)S=GJSD@%Z!7s>NNmmtAsrX3FSQ*}X7XhTHdqV;kxdt@7IN^TTPi>7)^5 z?GBQu*S($H3zKEI`*mvFaL%eZ%S@g8ZCsyL4;{LF*~FbQQzm|p-3yatxD}nQU-nwf zK6%{NeoCu{JKmD4Y?+yI`kUFkFjeaLM~r@zvDX|UeY8q?~PtM4v7Mlw?-yp-Jw zlV!;KCw!ji?Q+KgljZ$76)D-jrhdq&*ZR**cy+I7U59(!Zo6-vO<}Tp#|d@i*ZglpLzsK!%n?3!r)yg%OqO5SWo`M--#^gs zSkd6T_U`}2aG!hk6&)2O%lGa1X8FOhpL4mv_U^r@#OIFvO`rZr=8k zg^ss=lWo3h$@YhKe?4vMQ-gVuK@}1VrXqYwY-aPJC%a2iGC*0pPw%xlu zzdmwDg~{@~C)cQXPp(-uYT>JSZRox7O5KL--tBp8rvWKUmTiwQCd$p|?$sw>V{7F(%7V+(#PI>ZUVJ ztb458&ha_zwvJ=69K~&9?e9%b)g51aM*QgFW8;`CM{!^IBdr#fwW_Z!-XXr=%hp*; zmZP}euvYoezV*A_`DFaKue)b4S&rf!@@rZ>cI7|nSKfJ3{N$rwn2O1A6!+a9)9Q$Q z@2>x&(~0qp9ruZ2vK+;IbW>U_zVP4mhfaAie#ppEi!oV_;y(X%TAe!j`T7o1CdS9? zJv2_B-YD*f&(i9%86Vb{A9#6ua@T$0#88joPW^9MId}Y8f5yyp@$4V_W-(cg;y&?C zT8$pjdPz;sq45EY@hm3GQQY_5NUP)C+iA(F$DWM8^TS8GVzL~?J$p@B9oMPDlBZ`( zjPLQo{7OugqqtYRoK~;@xYv?b=gf#tyXW>SCd*OW(_cud9n1Gy^4o$Z<2BC5yJE5& z#VucvR(0&YkqSb`R|GG zGPO?}ljSI`iPNB#u8VhUHz142auk>N4+lJT;F8nk&xlXE;)SW0EJtxoyr88Eo{V4U ze7q|r%TZi@PZArpbjYaq<`&;oVzL~?HE}SuoiQ<9^8NfuOqQd#CSK5nhbG4By6+Rm zWI2j^==*84c0`LMy=Q+M-*ecj#h5Hdarv$MdDpM&XLcJJKkDz_6l1a+#U;*2=7ZJs z^Y5#R@A})YEGElQTob>fs>?p{cQ&=oVzL~?HE~gn>M|-m@U43)Fo{GoQI#W7iq z;u3%7r1aIb>d+_Rf9^l87?b5FF3--B+FrGI+|*0sSN$|Dj>&R!ToE^XKpTe|$8cf~(@azi^zmZP{PUeG=5O5@pfed3rbM{yb7 zUprk>clB*I#~Z&GpT*}Pipz0(YtD0ZTi^afe9i$=i!oV_;&MLhz4P|<+r;;YuP@#q zj>&Qqm-B4Oh_d?PJ0FcNJnhtCOqQd#;qw=hdsniwzod444(%TZhtFK9sZjQAgyzc3Y(t!#SK5-Fj-tvk)Hzh(0M@e6(#pT%T3ihKNzY4ygs zN%h-Ks*8Wp^Uh*SmZP}D%WSj5#q~#bI59qG_k-e?EJtyP!@0aeN&PPEJI7nSxv3J9 z-zYBeJ-a%>qqxKkZQJRYx{bFz6d(KLQCUouqqw&=rqw$)UtV|P zZ4bpi`Qnf)Cd*OWcN^1c(C6FK-PP`Z_+IPgSK>tz#U*~~bCWNvozN~3Z?mqx5|ia9 zF87IJvzII$*Y~n`dA93ROqQGD2A^-3ET1+(WY~FUxgjnyynO1Hzub$Qz7ge+Z?Y`j zT0$}AAI8|jn06RL4r8`qj5Lf%hB3e}<`%}d!kAJR!wF+1VT>Y-34}3tFy;-$n8BDX z7()ePmSBt!jLCs9Ffir>#(2P(3K+uxV+LRX{hJ{ECP2RlzHb8So1pn7AifE9ZvxqS zLFzL~zd2`=4lbWjI&geO>7ei#r31caln&;eQ94k2M(H5z8KncPXOs?}o>4k5dPeD> z=NY8~nrD;_R-REh5P3%FAmbUO1Bhpo4i27CI^su0nFta_F*8vCID>!}MB4<&Ho>n= zU~3b!+61IF!KO_hX%i&c1b{ZdolW3o6O`EmTsFa!O`v2G1la^QHo=QcU}6(=*aQ?d z!GcX7U=!rm1n@P%c}?J56I9m(%r(JqO`uyZh;2sc0JRyVgU@D^4lJ8dUeH(*5Y_~H zHGy1BkX93b)dW{Hfm2OTR1@&j1T!^(N=*<_6JXQ?4>f^7P0&vh(9;C#G=VrxkWCXn z(*(yffiF!^OB1lt1fw*8CVi#v|E|e$M(F^58Kr~wWt0xgmr*+CUPkGFdKsmI40$=rGvp`ln(TkQ96iQM(F@;8Kq5@GfD?m z%P1W*Eu(Zmw2ach&N4~|GRr70NSSy6$ixdSCSKq$@q&Vh7w}8GU|!+{>Jl#qmv{lT z#0#Ef0%M66^om)pF1%n>;sv4-69LUcnlsVqOhh{qUBrAjSnAbdBFHs(c`rbc34UY( z8=0U*CLoasHe><`nIJ(X0FVjpV*>Y>pgbnvjtQn?0_B(>I3~c230`9Y)0m($CZLQ7 z7GnazctKt=N(XSsC>@+7qjcbvjM70>GD-(b$*A|;{$`X8bdpgzh)G8203{ivgO6mC z4lI&UI%r5n>3|>^rGtHBln&&PQ94LRM(F??8Kr}3WRwn^kx@D*Mn>s?7a664S!9$B zRFP3$5DM`EOo$geLcG8b;st#WFQ9{X!5YL1#2{Xfg)Jt_TJYXtvh0n+7L#RtW7}e~ ztjA%C$+8}YEhfu)9JZJ&>v7m(vaH8pi^;Mchb<<{dK|WxEbDRDVzR8qVT;MK9*4g+ zSO-UQUujcFAh*tRtD*`2j#JT|mOn=EG@(Hd~Z<(j(B#L%l-rgX`s zKWaCfH@`-kEc$vS|ZyiXLCMC10o2hksv~{C#TA z`tK(Gx>%bm`)%lDxcpV0q}AgK)+UG5A6Z}0X~$Y^vYdHD9}CSj<1pd9v`P*5CV9i3 z7uLV~PNFtvvYg*u>K*(>T3vTt%d+i;OswBwRKHqnvYb12sMGx0{*|;^{6yQbj>q0r zzbG}V)|f1NZE*W$+VJ=1(rV-}yO$mE{i8Ywy?d((3m9y~|eJyr8~g z#e`a8vh3BH$E}^8R(F>4D%TX#%YOyg{_Re4TUTxZN zeq&mFQ{J{Ty`rLSVUK+m>y=D?8{GSY8HX1e)9U)C(y6S`-KPxjzRQ_<{pTB8&WBY; zv`J1H-6DDK!;1!Z-|h_8t=IIA^XwFTo+URge|v!Uea~w{)ARS6>En_U*7ZsD+vd*! zIg{o5V_~j~cl33UeBz&NOT6!dUK^TTZ`%x6n7r+Sk;yxU?NQ==OElx)o)4zIT*tS~ zTbo?H?CRvK!97a6?~UH`Eq9)o`@^q&ze%1m;g;kZJC&E@OqTQ8%dz0TGfLlgk}r=t zyu|x%nRo8c2L74***`D8KUvcEl$(bxSt(WJ;a{atWc8*PKtKdl}f-m9$r1M`zdb{$`$ zzw7$-`p1~xi7ghU)w;*KmrZF=oqYd>aqet&77OU#p8EHLxsI+{lveSn`@c zrLaj2;Kmw_fYgD*Jd**`)JsOz!`DX^A#j&OG9A-SdI-9R780rPZwyHz$AHcS7>F zHV2mEOqO%!gQ<7n2WfTm1)nC58F+5;{BfO2w8^r$hVp;^R(+CIE4!^pwi$3lGTF9m zi7{FB&K>`EA9eTqDy^RSwkG*#?|#X(KQ|80Cd=ly<@asy#29t|+Fjb1R$q>|v-GW2+m~Lm^>h8T$#VX^#Pn}NV_Lmm^JYoAg~yk~4%xMT z&SbgiansxQpTNx=1T%jo@3{&0`k%MD^`OsgxaEsoN^jC8%YGZ?n*H;aHq5Jev*i6J zkFPyt_^vhDWZ8_F92D-`h7os`u5Yz{-D|C%t1%|a`r2%m7p#{ts~Whmbeq`dy59zO zU93%(O}!bPYmUWr4f`c4_L*I`)A1KA)+Wp57&o}jP1BCRF|PaU!fA`O$#Oo|w1abJ zK>X(9fv>fyPo7r4Seq=HHsp^P=j6WnoUCuCdVg`wWLX~z_HWw2xxVn*n&iyh{pvse zsd2G3SvGCRooBRzYv}oIYmz$*IHG>h4sC0V$+CAp%X{bL+C1`tPm@OtJh%S!OFGx) zOqSjIj(=Uyj=(ivKcdZnwKs1Onm)W&+3pX_ufKTj@wM7y+0-iw%(*~&1J6SDUC)>->w3%c z#y9+~mor(;9b;2>_+3w%EN8lUbLN`-CJ4Uk8I$GUu`u<9-}Q1P%e3Kcw_f@MKlrY9 zea~}hwaKzM7WwyT^V`V0>*Y+AsW<;OZTMYJn=Jd|+takw{FV#8>uHl^(*}J`8a}@f zZ<)6?`HJ_hr%jd(H&-wH<6V#6p0|H6vcAKxJ!*3%%Wix9>n-$~)_vF0Cd+<%eJ=I# zuJ@h(tz7@Ft^ZuCO_mM!%)Dn7zrjy!p^{fk>QH~(^0yajlV#K1a<^Xk#y|6}H)V8- z`T-9wTC7c$O}$LZ$>~PC>uod2eP^hQZ5ZX5F2tNWRI z7HX5_=IfpD(c}_oc~pOGvh26F$-C*`r_&`hukKb_cF6kvIg{nW z*mr<7S@y>_@4n9XPVJT{ZTMtX>3>&_8lX*7(7J4A3Ua zroCr2IUim__%jW!T@Q*Rv;JaSz{xKyv zljYp8F!hGt^^D2#Up$B0cRg*g?2m8M^UZzN(mA*7e2F$$&ecnw z%=ZA^_1^H_^**>^T!}GR_THua=NtXwIbZC(>wWOS=#retvU`mEXBPFF-w(X&{b$^$ z5^tWS_xqvTuNUs_-tUrkN*_wrPB^{9m@Mlyl)LZqW_!socG6!apQO2E#AA{<~9eGcymj=-#huw zizh!wtE2SqN%vjPn}6z!!}PpsKKQOz+O};;&SaVPHn^IY83*(Gmv_C_er_C)Gg)@I z{=E;rdDnaC|FHKSP*Gi9{OLo`OQMUxoC8jTH&z46w*=bV9yNL=f!|9k7b^_#V3-ITA}efDX0 z?%ij91~w3v$6g99fGktH5G($L`}LrjOT@P9w;s!fW&SpF#sTz&eg`PO^%!J%I~(gN zyYO3YVWHo8EU%W?U8VYc0l!YL_mrE|_TUrPwx=Bi#Q@=D0Jss}8N6EPki%z7^cOu#q*21B+ z)X>>&Lw9OJ4}@3VqvT~v!Mo{L@7<0+2ZBHIbCwAkv=O`XgW7~P9#L)&&E58HP5s@w zyRhAfXH9r$%X@8eKCc$q?BL@x$nSQGSeZ!U(At-;({Md^(}XiBHr#pM?V1?gEIFyXNP4yB40RZ?EV;0g!M0`m>p=FWi)86@0!8d}zY=J$`6=EM&Jm zu-bP4N=|xoMW!90@;B|O32&-#qU|TQAKOQoj|3=r>zOr}Hn$zO3D=Qi> zX)!NK+*nF#MzX1oAZ`VR*SbxC> z3R&j`eEWba#kH2fF zXwTD_@^_1>J}%U68G}0vH*?5xaX!F!0H>gs$U{8b%pl7x=sJm<1(#qigmD&K9%*hj zziV$6JlxFA@hJB&iaUk+xX}2u5AhprE`TgU+mLhoLSNH)A*GaVFvn)vG2C1LSyr^F znDKt2e;;x}mW#ei0=q6XW?^(#<1oeav>TqTv%$Hdu<7mM*t-s;;3%{UY;Kxi#J9>P zI|j`=YCoD>*$!uq?*7>>j@~~+`-6s$%Qp**_~Ua)j-|DZ+Q08s*$(HEZXNK6qcM|I zeKBdP5m)S;AHW%rN55e%$SNJ0#0a_EfaPIj0_< zYM3@m@qx#<+chJedn(Z}SAWP(vdi1yEL8dtt*UL@--%@-@r1{_9OdHn+jq?_Ylrhv z;oWphTi`GF;pQKSr&QSG=o0O)*T3Xphci`6kNLBFDievp>4; zZijPMH*am=&!C;fD8cS8OCs^d;toelzdd%n#nldHvre4q)13ANjRWtCpUjc?NdE*! zL=}sD=)ku&IKNf3P6&&G8ZP1SdnEp9#&*Zv(Mk58y-#g$#;fsoJ@;1`J3PKy-bUh_ z_;|t;`Wxr-UVuN#Ob-oPaTIYBGKX$E-!ogp}I$Y3Fd;PEMHaNRB+@n4B zLDg?#w?*MPF0l^Za&zq~rl#27e49MGJ-4g)0PO<1$#N9#XNhr)s2pkUlO1b=GjMf} zw2!0nP3^C@Jqjnyi*Z!BIMn{6{{|bJlWXfSjrB27`RkS$g|$&Jj+lrZ_I9>2UsU)3vMIuJfH5#MgUZ6#nSh zHpfK!#PsV68}9|k^2ej*^XD4Qn1LTFged&&={QHFWxt1{#Ec37$Z}@06R~^_@wEZ2 z-+4yi2?ygHQTKpQ+O5`TMYhr`(IBhk8WqaGm3 z7p83G{pQ?{K~H){;{2049shh1DUMFF=mE04v{#UymO|?Umk~9r;Iqb?{3Gp(|3rP zksK1*CkY(>)!?+KszR-Pd#9b#QIcn8# zhyxS7M1U+CyZ3YYz~cpWqn8-5-;pFo>6wSb%`Gd609p3F+?$VIRbNz}W5l1nPI9#9 zlr3(|sU!kq`2+Sh@n~{o5g^MRmi4@koqH_A?2p+--12pj|B3X%tIALfGoQ?G)!AC z&cN=4`$l|cb)q9{!9j6tv+^Q9mRq(HRQoa525ortNL*#_F2{+hnPS2jFA*Ti9vM2m z4>^4Ry}5lPZkN5&@#g0YF}0M32$1F5!vo&&0s1;-QY5x!?{N6;*(b^=ZX!UIFS=~x zeW4l;r+-}t_H?$<~>X5V&4uVcyL)0fZn09lrL z7VL$E$61$Gk$COCct_(SJH#s89_RtGoV1DiAUS=2I9zNNh1(vDbDXLXD+cVit_R5S zyenn5v$a|^cINer!sPxo$I`4VVubL!9w5sJe{Xzeodmo6Cr05U-))Y8xogGm-yYWk zWO<-p81G|cJb(_q>C2*U=~c0g`;)&Fy_#m~0kYigKHm#z%%FV`i?E-g@S@7Gj-OV| z6F1mpJwTRcea-hmIyb>4^xH0T6wcZk<7oD6lz8CsHa(nC&I;P(>109kf@!PoVI_ix~HM@JOSnjhm>^uk|sZxyKr$nu3e zr&jTS$01@*6h3E(aYXj6FD|LrOAnCc9Jd#-Zx!d6s~tJ){!}Gv;N{9 zYY0G=U&iyjuwXpEpQ$)G3jY|s%~AbOh~DF8LkK{YH+fuR>lt0w!7hA%7#M{sKHlb7 z>oPrLVorDvK$iFZ{3r8QZMT1D6yCEr&QYbug7n4hTc!hKIbr>ockF@>)9OdzQa$4x zhp%_GeLB{h4v^*SykqaI)!>8An@GIebGxH)XuNIyM;< z#c4YnKO?<;#Mj^10J7X|Xe{^Fxo^UlaEy$^fuHYm)UP|#{-Y+|29V{O`kDM$ysFn`^({Hp2#x z4cBK)wt(WY0`RYk}YDFO( zAj?JL06O^ow!(;G>LxqxyT$5z^t%@VkmXyZ)=s;i;d@KZZ;iNe?PSN@{6O(a-a9lBGg(a zYL~Z-+pW=Yzj!~XoCuKRlKkydIoWY?*-o*1_vd87{!F7@yCt6go{}9^G29V_w=gV`ga!<>( z_ZAs(ZuMlxfV{c(+if#!09oE}%;lZ?9cUlSi(ZwI9RY{T_6}oR>;PHL4SCq4@b4CA z8`$RaEu1}v0myQTt`f6buwQ^(u7zhd*~yjd09pQN$wD3n=NiR*_?XSju(2+7fGk(6 zwT6!~)%b zk{z$u+yuz7e$MwiX3pOXpgqs}_yL=n09oF6;d^J>ct1efKK|B-E7eYR+{q6VbMqGJ z0kXV!@@DoMUF`$R%?@mC?sU!417vx5wbjnHfnBf(*A0>phZUNe09hVbZUxsm+Xi|* zhhT2zC6yBavb^Z}bXD89ZQgGK*xUrj^4i(+Slc9}-+229+l9FakY(R1E1mtub>IW6 zC57iEK$fLXoqeI|x59HX(KSmCkmaKet}VF#1-nJ(CP0>p_8a$u_uCWJZva`|*mMhD z`&4b?a}(BTOGP0aAj>s2^6{V^lZEHz*3f=7fGmIheL=tRK7;FBwzu@pn`^(*Hp2#x z<+TS^@Em$)zrp=O(YXnbDnKkS~XU>-wXFj%kS-*eGE3-YiA zAj=*R%}ez6;rVEvJCCpiAj=`2HBiNYkF&$Bld#7ZdmN=MMEl%(gf#$JJ|e7*XKSkS z9ua(CFl5KebJ0Ev^RNaW%O&+&xp^OEd+NbFQtO3Y!(SGCpR$Okxoixdghi9XG+CRV=fGij7H$EN~PB7y7my#Xd zos0IVorg65SuWad+=sSaM%?GI+0pxav`_6vSObvd_w`%}Jp|t9DS8Csrw6 z2Vc^8Ymgmp4H5ye9D&wqz=v&59;)ohZvOBkwqCVuM|;)Q17unHvw8~Ht+@K7%5Jk# z{_rK;7a!MmSbW?DkmYRe@&ah>ugW;zqeI*FztZ8%S32T2Ge%53GsX^(wqDRZ#a~zUTw~x39Ugo`N3P|b6R+i- zvjb!~_hlO;zSXbRa@vLdh`6Z3BQEO5*Zm)fUfA^*BcluB`zK70?5%-=MV+Y7` zUYDne4+C<~JGBr8-fx{3AJ+#jK5hfZa?Y>2mGKbT^!?)@yH{;JK$bJdbyxh&JFm`_ z;Nz^r)*yS})*ule%V?yxAN28oKkhr@0RHmvo65#7K$cTH{gi$~?J5eO;bZ-$t2&q) zq}=^Wc8~j)M1U-R=zIgn^6UHt$~)HQCfc^*=H?H(UW))(?u!~K+6cFQl=pAo2YmV5 zbi04a{`TG_5g^OiOpDr4P!0E&w~fzDfGmf(G*tFY>3A2_b8sHBE^KZBWZA*B(Y2NR znA-NJJ- ze%EU|K$bhWQ-9ILE~-)slSau(O-&35_=>(mJ3k4GVY z(sEN{vHqsUc7QB*DZ~7=`Y1l|aR$Jo$8P?_y+uQ9Py-|bWI4MG@8c?p7GhS|Zskpl z?PWJL76G!{&4bxJe!f_L!PnF7n?-;uXL~TaQIO_Ff3p;hLt4&BdveZ65g^OmJel3s zS5n0XwR7SPz1KD0aa%d<*Y|Fy8>O+{KIefO@Fx7S#e|Im?UrFra^l zT7WEvm1TCTHYw2ufGj(>c2mjg1Juq$a3Y1%{w%R= z09k&?wbLq7ZFt8L?E+-EcO~8zYfAJNAj@{H?dx5lU4SgN ztjz4TrStfG^8z5t>$o;&U5P#bWcel6=0a*KoomI-H-Ib;t-^e$DZJw^-0#4>4$Mt} zEN61mS=G7a*q=20%Z9#*Lu8sr)`Dp0%Uo$R}Rgk z8s%G}U4SfKw|>FSNn|SfJluoB_f^v{+~90Wvf|kj`{Jv2M1U;U?DXq4xQ9XPSrDwh zuy_77b_gyTh{)96ezW_uw1@y%oUTFE+gwf&o8P(&<*qinV(gS4qL-W@a$Z}>D&Ar`J#hF(O{szA>VZH0| z)*`AQK3KXiO@S=uiZrJ;dbTRBc=$sT-t5`3ZTGUfMdPlkX$oXna$~u|Go0tU!S0HS zCfvD3%UxwGr9;d8=($IMEJwFs`Rie--0`wUP586co!eGVYY{r&>q>hR$a3aSZ9gP` z9U#jom#^%i+M7u{UNF{+=C4ET&&>HAG#~sw^49^fyx{ltG-vuh^4Ar}a)dzhw*Mo4 zokEs*4l?9B7tGC~`RfW~ndh&gC%Yl8poeSG{B?jVcY9Qh<#?BzzYdV)b|dF8ZOQrT z3S`-tzg}0B7hg1g9U#klr-ZSy1RGR2-bM4*8DzOFeV>)-9Fx#K$X_2?vmk$+LYBi4 z>HDE8DlO!%OTT2L{B~lay`%Y?01jEE+Igz850JlJ_S>wK+&kNCf4o`Z&mhb6tOmN+ zrf^@de})o0kiXuFLYB|cGYV)OuvdnW%r4n^4w+)S^f`ymE2|yS^keWDEZ19vP|u&W5(mlbDJq-+1WN#Uli&$CAXPFmf3Sp zRm_U!HZ#a_3#u(Sx0yngoj$1S78<`wZZn50vpv>X_W;(uqPfilkmdK!HzhnO$TDcv zZM$*GgwJfP#g3mK1+v^>^X_7w4aRjf;g<6@XCy4k+|Y8~=2(C%f2bB9%R6dV`Ez?^ zoI$(b3wB$~+njOe=iCj==WUJ!$nvPPL;O8XvD$=XVH;Y^+Z+p!<*>(XN9U%L zz++J0OMwpnSw^U#j?D|DFA8*Oe*vYwd8GHoEFPiWN;$p)$ntx&&VB>P^3M1M^uAj1 zR;{TTZ-1QnLPw5#zH@KiYy0*BWO-a-eL8-n#>)LVk8$ z9FNGK8%t$Q_QMjXt+;jcbz*kY(%ovdjnd+IO_p zRQ&0Q<&MX1zOwK43`qwdT6m@V%&wp6-T2cj({cE*5sp#4=GooOcS(mD>I>$S=60QH z3EYcU_nC#uh5I^seYM;^)Z^21fGoFM_l&izrt>)>#COP}+4yP|rw2kZ2?wfG)sa3?s zd5QMcrKh9=WH~SLMKjuOnX2(H?Ys$>esE2!{WjVD+U1*cfGjUNU5fjlYFmQcgdf~& z99r|5**^O0v~++h>s~)&J~UM2`ar#)?^tcv2FB^>09nopf6lbI&hY>~XPQm8yiN#R z|F_wmyJA{8K$b^FI9SYjJAWU;^S-uL6Mo?17kZ~mirtp?bvi(n-+tuE_KPs5U5Hzg zy(a9@qD^S|zY^`|=0~OjWV!G3Ox8B~JC?_HMurI=XxcP%)X)UGAbyz+kmbySyx*c# zF?)T`gqs-ZgyN+!_G;BfrUPWT`WZeR3hYALKL5ppXKnTl%^b1C{$tI7=>S>I*0{5_ z&xI2|C%JqPEpv98WXtODTg8uvxb*roOp&v80HmXl(= z*dCjy+{5tkkbKpIdv7=;dPmQ;|JzoR4v^(he_dx|y`YXE#3JUl2~YO3iav+O*vH<1u_KQTOqV$0poj`4rLZkiXsS z@tb`BSq{oL!`jwRWq0Ls6V^R7h}I=_?NOFL_5ozMYUT;%uibf04SaxlL58js#4Te> z*=KFsvkxH4v%-%tZG!V$5@^S~G2!vUj_8jrK4(j7y?!4+mJ<@Qm=EPta~|s1gtwIR z8?VIK4jdS}4(^&-Xy}}85M!tp^qaw3@3P-$Ywz1~A3&CSw`O|_icZA<8OVJ|?IC)_wm`z@@uDh^OD=vl`(!Q-#4OW$0o_g;W3Bh*mYTNcdo zcII|K+vpc1%4U7-zYvc~Q7t(CY(#1OsHbxbX}ALcJ?qFG%n8HW(nw#mx)YTcBq0#S0t6 zJFH$1K$eTnH{NGZpUacghF#gMQ3ybmi_T-vLL8v(*D_WcHm0K{1R%@rTOXiy^ix_p zTB#QVkmZ7PCsP>@d`uRt4GWOvg7u89CEQzKj_5Q}|1v#pu zhz(t*h5%%_@IC}F;BDh|>%8up#gm(+g#cvv1NJwuROIv!fGl^a!S^h>4{_U2Q+*Sy zsV*+4G%W-m%h85+_gK(Ft@eLut#;Av&g2k)ESEFBVtaSN?^y5|YQP838t`J!%LyR> zS$=vC?uV7%461b!YRg+`ZFzBP_mLq0Szd9R?{5Y7M&LuCn)PDz%YGpMS)OslmDfU2 z#jFCWg9h`>_UzGxwOW-+Ixu^^(%z{WO-0}d8RG6rvdw{oUodkwK-#<2p_l?!WhQH(l17z8L{sPm|djjq= zuo3FVP7%ute56n6xg!`L%iG4DVQp)uTKj;xaFj9^^wTs8f&sF8d^h)>%I&-!m8>%S)sz=EG~17T6PcZ6y7{ zhi^i*k1+=UWO>{6gY5VGG-X|f`z?qWFfCfP_tr1?dqqgA9bJQfMf1|H0UHnM_fEjd zNJ%q=B=&g|eCKIOAV8Ksy~*}BPm==xvix8B8&Z(Pk^)&C zF&&|vqsI>W^oz0MpiZC!g*4z7o&=U(J7+c@SqQbu&A|ctImg5LFS& z4>4zUV#h*h6Mw6YvRtZE#h72yzK)!q=TpUeFd?~D!gh6qNHVnC}|lX zN?JyUl9myoq-BICX&E6(T1JSHmJy<)WrQec86iqqMu?J@5u&7JgeYklAxc_Ch?15O zqNHVnC}|m?|B;sIxPepN@PQND@PX6W@PU)p@PSj+@PQN4@PX6N@PU)g@cF+-T9z=J z(uMmaIDrdSI9&@@I5`VfI28+5IPnTsIL!)IIH?L(IE4yVIAID`I6VqiI2j68IQ0ov zIME4LIIRg+IEe{YIAsY}I6(P$q2Z@sRy{ii3YgBX$82#Nd&mUDFe8|2?Dsn z=>WJw=098^s~@hAu@6_s#)m6p+QSvH=-~<(@^FRhcepB2eO6X1DU|^fh=G6Kn5>-AUhX6ka-Iq$f|`8WX!?`vSHx^nXd4GELQkHhAMm@ z`xHKqSqdM>8imjQNXs-1|06BaIQ);aOylrB(lU+1|47R;4*w%9(>VN(v`pjhKhiRd z!v~O-i8OO`GRn+XGGY1iSE16ZV0bor;g6tp?K1QhYEB{zkB&(}(QlP(T*zjJd$L2O z*&)yKO=QR4!9FcB^cG55mdJBIS2GHGrf9j{0GEpT3;8C}l$`RZn4z~Y(lUu2IM$2~ zKU9b=uhkKRH_%M$sh{t_8=yrtGI zTQ637Vj}1J4)$x4s<$xGGO3#oBS+L6t(>Ohc5A1~;zg4@ zyBVxJo#$2~NX zl(a078WkSMQopZMKAag`DzxV%6ZvFkrr+1w^cF^1CN<``S|a{jtW-t@yYTj5z=VpS zIprZ+MB`r&2Th(%wh^dPdEpOY&7qvo@PMOHJzg_XuZP8mOX;~tBYE-pE z1T9o)bAD+Y8g$%5hG*UP6E^BCjI>OijjCjf0-W;nI3f^YyiQ3w{3}k-f#l7b;FeeD@_)FhhJPX}RQn ztI?{O8TyTpmPz$Ft`_u>Q5ictX8qWB*ng|88O8%mDU?X{V#e8NHqI&@YG#IU#z@O0 zj^B;*ea+e(dJ7{hmpCuNuLYZ7UNF)!sZ-2+tHtKq;`N=(FyAO?x#W3VwQDak%wtAc zCSMh^J~U$M1Bx4HhV_AwmWiR5b!R18cQS^LG{d^XNXw*DG3!|aww|pEo?sqh(_0v6 znPeBUPG+%na_W=GW>_Z~X_>4mX8pa%*56hWW|(39rKIJO*Y(qLO=eiv8EKhhX1}{% z3}E|3r?qpQkWmKjI>-B8-xz7R#C82Iw!hK$s2{e!(RZyS??ZflW2EH|+TSQ?St1LzG_s@=**Bl= zru*hTw!bmbGP!f3z9nK3-H-V_L5kTYbm$=y>F|*5Z;*};_oCwm*S16mbf4#Y%jT3; zp&3U^Wc-hw=6}}eEws$NMABWVTJrSt{()^(E-t#`FV1knAB`+Ki;#nAloCh}d=dgk*#=`HMC zGzsrGF0#_i_c{zoi-!$j^s z^EHp#p|>#7GU<8WCPz%C^MY%S_dg-}-!YLYlS9n+cIz#av@8+X|7SVu`6$)BT=_>S zVp^VwO`S1yuKo7>8LDv#NwZEMBBPfVoAi(clTsd@_~ElXtG)`2qm z>8YaS_mjGmiDJ1ICK5Jakh#iUy@ipMi8anOHTTXi)jYm%FjzeH%0#+*jWSnH*IO8A znQSw^GNXs|ex0{%$pcR@>5YjTIX=NW-KMuN(lRlgOg2k->fZrkOs4+QTNBywCb9-xtod{WevsN=I7?y)TK{RxZD4C3K4-Qoxpo-AwOgGE0OgDk$ zDUd@4|AJGZJHZZop?$tDb$Cxje;k+XX6cmeCa_!va%1h~6ojIclZ=od3HQnif7jsw ze*XA}D{dBDuA4yf9VC);XOa5g=3njtBQ29F6L!c5HBwFvgUuKDCj8yMS{&gW zi0kwzZ3zx5EwCI7vTp0|GV-qOq^7}mzc^TneYOSS?gvU+eoQPausjaZ>B=K5N=Q?* z&<`*3O}OMqs%fBzj$j7I`#Ke)DpzpSK2=yB>tQ?f}QdLLX))Z@zYJuUvdJOxTxmWcOWhZ(Iosc2!GfnBkt5AKzs$J&dYmTB8O1x8vX zIprJ5XwG((-5-D{8e)=%gj5T0wXPxaesa)qX~-?EmSB0+dYT0!yZFKyd}cR z(!7b6z(~s^!uJ~)T^OwLp>N}MICQOu+b;96T<`8B(0mz*RGqj;Mt4J1+IsnI@p6lZ z|BdmotRLYeFw!!4?6OQod4f|5{W0_3w%Fex;vu`<$YaNQ36!)f5oyvQ8Qr3G`5da1 z-xja3h}d<@8~OVYUIHa8OC+qzH!`wQf4SDLaXUP8t%#R=@kT~HyaYyCCVN|aCZiA< z2Oi&(;qCCuAtF9d{f#`WiI+f0%M!`VXegs{>iEu0YKPlY7IBr>*RpumQ=p_}iG+3E zZ$`&YC~f0ovSoE2EXsO(q~dG&YMiIQNXtZ8_)`ipzH-I^`uOTzQ@L`BG6Ewllc@a{ zWt7`UHRm7q(c)ir2jT{QKamqHr3FS>CU|(Fj8Muh@Rj@9`5!Gd)(XTm-JZx-x|9|e zX_=IoD9I@EhO(aVH8pUGfZMMLz#sWPmNTxo3yic(&OZ@klpEq)C&A|xcLlt&P5{1V z`d7|c?k+IWGLZ-VZAK|06)lg$?cO@vW3NAUz4b`G-qBs4q-BZR^_yo#VRT*R{_g!r zho64okGmKj$&o1s!&1{PE!0kL2JhZUQ4MlY|*J;O}?t zL*Vbp7dl+S+aEu;`B45g+fAUPm$jKko)%Pe&Qc_N`?EMp`a$9#0PT zu)sWKq~#LVhtw1g3#<>6v@DTsC9FH)4LvPcc^(2IEt5=G&nD3IjL!?co=soqX_?o@ zQ=p_}^*YJtMXTyQSTF1Gj=wxDuuf9avPAY4T7S6~*5B5ZMeN_g%VN0eDKOHqYF+2! zAt$^Yo-stkk0ZP+)0=n+l(a07ZYAs&U6y%S-gfsAC~3Lmedt+?mj(7Amh<>Q`y0!P zByEfAZxA=WZ@&2cjl6M$m%wr-iAVcyWRzL3AH$g7`|*G;-pJRwdkHkZQX<`|e);E+<;2r$F;PCDQQW5)GQ6 z-rx9rl=-`t@|X8K1ey~nk>{T@)1p7(RQG4SGkvkKNeDi*>xB&WXN8NdG>cj1ZrQ(|d>=CMkoo^_Xu zP+z5@37tB5M*&GK#pR>~GxeC$j|n@v;D1yVYYE?$;S< zne=xNWE8De_AIXT{8zvoss-TsQ~#CWcL2?qmB`1>ZkUnxC`HT14*z{|BlnSP3Ue12 zX_?&rY_1s@3x2nN&p*fLaHX;S`1da#$$dTC1)6&+kxun)IQKU`cKGihvF0OLo9iYp z(lR-od`-2#L5%tDtRXia%AK>_1e(M9Vf!1+^OeYyZ!QadwpR)T9qzxuk87TXG@qZG zO%f8^4JWQ`v@p{02Wc5;`Gd5KwERI@Mq2(LEh8;|kQR=TC}&3QWhUj^z{>pt#1`U! zP-cC&esg?RJ)aD{Ky#cSzNZw3G5kNc&wxJ8xzjncvTVW+cAwENJLr*4Ny`$+Tapj( zUge$^;tSe2{n{J;jhKmN-U<|d+T?CiNXuZi_FF4L1DphM&_;B&8+v!O(88SZL=pK)KIYt^8&Odp1a`_dk5hGZ^w!&5ACs0(y~PI+@bn5QsxEt z3ffa$?iu#vjKF~#jN;|zu{Izr=jWRULYYYjMfiaZVg}lJ|L!sLx;zp4j+iaJ?mou` z7+M#_2he6Jc0mVzq&5B65ScXtySpwFuU{{3W29w*?m3bW3fl=9unT=+D&5r&Ju{IG z2N&DhBn%D!(lWJ6z^?NiypUb;)ODe~+w}4_=qwtC14#(&HG{vR_ zrjVAMamaJ7zo7lK%RR%soDqa#NV{Hm)+1a+*&i7g1bIx-&d~)v~a?O35ee3!? zHcDES2vYhjQ?U!}0$-+#^2AkN^e4mWjJDS_XV@rdSt4jno)w`S=UNRugl~Lf7&&Ap zktcm-KUOi>MoG&OLGI&qi1`aTup8UeZfH|(BI*08uHErst_?`b&~IU}8w7;Bm9YcQ z9zg3hu)QI8)J#&||7V+Jy1R{%mL<~ruWmYoqMh*tpKsmm96G{cA~j0KrC;3UklMl}aYdOe5z<>|sT=ir#X<1x8vXllO;fi{>7*WN~n%?-m6{S|-~D zj@1;+t9ZuZ>r3D336!*4e7`Bvi~T=%r$$N3#cTWgyT%K~P-lB-rH>hDnIsf?x5&rC z*yVbGk(NnRq4%aR*1_Jq)`G#i{46|WR4MK8^Fab5Evw!M!`c92 zz1y@TL&9z&-gLvHwMu>hB`vG-2|x?qfKzu2_d`bF>UoLUXR*x%Mp{)=`!gzyE+ z5UkCx$=VH#1xi|$NS@i+Fm@NKVuClwWKuOCIIozj@wy+lb7@N1q@Z!-_eA`gY@~W1U7dw7kmE(NM^N42fT$z%Vi?{1j!Od{s;%ss= zdB5h*HX#;DT9!ywG5%Jpx86|s?mco+&4PuJmL;;kP#hp;&^C_?*9^G*Xws&} zc5StWEiII^ERl!B#J9&wFYI{Jk9eQ|MH{rUo`sQ?Rs9BbVXXaqt}=dX=|dI|IWLbn zTFXL7%M$s0W+O}38=9}deHd1%9G=#vA1OWjs(iUkJqtafBayiWYg$sK7QAnquTkW z?%mN`sbB$iLA&94lELMBBTip0$vvX{1bRM6B9~@HCK+=;wR8^P7=vW>u-JBqNYmw`f{S7 z^D`qhRhcKtX?_Ad3nh{It^=)IYSvI`r@JN^Zq$#&XVd1%nP>b2dR|H*mo@~X9yT>| zwhh|nR(F@-QrAelC}O_+>q9?*o~e?^qx8X6?`u_^b|DU>wL1-BWF-E++yc3=w??4n zt|X$XJ;XZUXceax`Z%N84ny$wk@&%$1+t%yMxbZ2BvNk5P-};@%8C~Leu%}!kqHLF zfk^yv*g|<(4~;<2Z%O3t!C}_7iIo&B%pb73eBpM(v0IV&2iHaN$*~%Np7D}Mru%Sf zLJB=4559sv#2jykDj$Xa*}6zJ&(jF>9GFD1{YO}D9jvJGx9aUULym70ZsxaGzP?2x z(6eF^iReAj+Ua%$Ma%7u@{Kbr?G=R+_birMS~LPZPbQJaeMVWEH=$bI$CDOqGjy2{ zh5yhlk@eXcfu1>&NczXYsc$EjclrSSev=n#*tIYUSB+jG|M7=Lpy$#ga&t~_YQUv( zDj!ZxiZu+~5{0dAmdJhqV%!(6likd|R@42T$O?UYm2=>xRy@uC>RHwU8d z+xVrjv5Zy#(lTh{F9oNLu~RMdF?`9_F^2w!qi~~c6Xn&OS^-GQpv^iToLc`>ffnp0 zFOD(vKM;j0_)L_;%V-54ErZsh+*oT)McOtV-)k8$hK~E9aM0~MdGSU$H>{kGy;&8LA&hi5bI4H zoyXh<|6dafr;{VG(S5Y+VbBObS_W#RfSHMQ2T z-G)iIMqI7uQ2Ak;p8%v~(6)QIPB&pGU8`X%z<1f(-G-EdMjRb6M83GnPXN*~Xsh=5 z+&p+0cjbu*+uMv58Up(X_8_W zNXte2g?<2S_PHd3{DToEM@w?YDSiTwmO<;?=W}b|Qo3(~4!#d(CK>V*jkwu0Nr?lH zmO)!md@td-N_>H|4BC?VZF}lmrQd+G4BDdO0s4)Phv^;W$rXs70HkHm!Z;gLXqrYxIg^_AT5K|@9-e&xc7|Tf$QeW4`2ETKw4I`UBa!c*}Q=9Sa@En z@4Y~o7eHDDZAtTOdF6$28G}ZkXK*FbZPYMpUp9}qT^pOngU&8g<}p2|OV@|jSp|C` z#Gxu%ADXRNB=?du0zJzsk^Ad|Qr8t)cOVW&*t#=0Y_YQL(DS|$iHRF&UB%WjXcyS! z>)FiQ#d7m>jX=)?m%L7nny^G!C+WH2lGooJSC+^RZ)gO1wpb#)qk~gVuyq~c0N

~J~S`=egbRY_E^_?isE~6EIv<%vY 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 diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.b3d b/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.b3d index 59b867574058fb8df8952ec7fa6b10ff6c84aed6..1b4205344e2ca724be8fa876718a321e7ea83139 100644 GIT binary patch literal 493300 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%0D{ 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 C;@x@x literal 453135 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�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%0A%IlgHztH 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 diff --git a/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.blend b/mods/ITEMS/mcl_armor/models/mcl_armor_character_female.blend index 0c13aea2a0f5b8b33a3a8c3ed7067c496aee0357..828cd942cc229d07a8ed920dfe5eabeca002926e 100644 GIT binary patch delta 141130 zcmeFad3+Q_-ap>eT^$-oAdv(jnSmf6K@ucD5F~-&P)8005kUnd0vZK@a2YNW1a&+R zB1)lvf}qA*M4ceYA*kblg6n}RD(Je#^9#GK;tKM8eXgF#z_Y)7p8fv*dzx3Msp`-B zbJbm4U48WM`9J)4{<6$KZu$r39j~YD?0o#XnvHYb z7^dd0?>Ag8?{{g3<>Q7IZ`v?&wNeY#_Zwv|?|1o`o2Fg5M=cMH?Y_LK^z2PfUw*f8 zX5DbZ@(agbzv3d%va9r zii+isuRi*+4M~1YiZuh z*|R??DJi*d)BGhzly~i4y0GOr=@U|?07@?JwQr{*m;WMkm@rl}XC}~v zH}!m?#vFE4v$URnesl&V-86AZjmbz+gGYuR2%|2s)f7rRvZj9e%7$sP0Gb?z=Y8}z zq|3E$>4(#6q8n4x-<`&yVSC#$rAt&+u3trB;#wfOQAoMU(xFBEn;sJl%0Mtijc4Z zR0oG0JBVS~9|<8k&<#KL{;V3a?p&3b|KX4dARgH7;(oc7Wr^NT*%r$3ZXS&H!~M5Z z)R=xP8)cf3RMmhv>}b}wg_$5*OE;}bENkVdj{f$u4e{8C1&`Q#UZr_W< zitwh%Hm7A!(u79x5V2-&n#yr8$&_F1W@=zy8a7cm1(L_7urs{ZsSL^`Wr8fLo~<+U znZieWHJC~TYcIY@Krn?M>YmMjdQwSomxILCoktGPqlHp};WfzP>1PgEO2<~*)9g6ppA zO&Yg#!^l}(p?kYzN9kocQ=^&>XQ~hM-_wY4L|W_-Qp>vn!0KbKofhm_X55F3bwhE? z&!)UibuiPKt8^FLZpz2%X6>b&llm!TM@j@$q|$WN%x-edbdKkz=Ydl{U|IZR~37W6(D+!T|M#XyAa_6^U1$3!jqzMB>+AlQ1Ho4FUPst2T59h> z>0u_6Fm?*JU=Wh@Lucw#^JLe?4K>i3;b*9T9uI7=6+^muvV~Q$Y;P)n_U5al_Fj}7 z`I#)2u&gP`#tpH8Y_WRf<9+*_WQLGc=`cYH8atV#kG31hc zHa8w;VaeXQLAAsdyS-o^lLm@;$Q9|gc1Ddkc%~Zc;w`8N&C&!F`z}1A#tiSGhG>vk zzeWgAvR6bG@k*o@m<=_esBTY_ledLHlF*FCda^lSmf2jW?kLK;|KycPNJW~*P?9>Q ztGc78?Ar&iD#<0;C!_);=UK#(8qB)o+zvf=Ce|#0A}Qr6axuSkQ+EU-_YietQ=A%_ zS2Wuc_EeKo2X3I=7DBV}M-|ZcE8YmAoz%R3L(VFLkeXNg6{khRsM)@cB}2%~HvSai znHnsCre$&}+Z4tWY~txB(H5zh8tfo_e=U&ErZU zVRkmj#Skk=TBHY;s_sy#E-itfF`!6`DKH>g7*InrAnO-(VJcckF%XVYf?`E}Q4gZ?+EgdaaS8-a;rvCvNQi|rEU+F zy?k;k*^grbWJ5(gy!k|GD7D35MJ!K@ydmZ+ohl8q_s=i`3-QEkv6Kp(*^6 z7tr{NO3nZ^(?#`&ag2#EG}UVr6Jv=)zMveH^p}Wl1VS$9_!DX8oTFxHSXDBI&ry-| zn=H$!vaAn-mQ{xwVD-m6^xE!Qc`$j!BUl|HGyg_iR4>!H+Q~H!Jfs?#cIT-!srP?7 z4RfbWpIJ50;peHP%2c^Z+n1z7{~A_(($Z=+kv?_Lqn($i%iY?H=Cf*|3n#1Y%Dgs8 zJ(%Y4+EC5bQ8Z=^n!84;ruvLtvudL2MytlkjeP|(u#K0hRav+i26GEo6@vlc)lk$I zPF6XO&c95#E?H83ZKKJlQIZ{d5oJdk1u{9Mu|>-$bf@Dub$MD%Ej#W7Ag&&#a1`L_@S#TH3QOVxaheAb<&nz@AgtyIl(Ng$?{fi9-{Dm8xyc(2m3 z-eRrl`qLWPkz2k(@8*I2e!pp1u{$Vz-%z3p&*k{NUrnnqmyTDx(;}bK{4IQdr_a4j z?#2e`?Y({1Agf4^ThMtaQvdk!zU=ZuO*CVIN>!<{`WPC#z9!mnqUx=R!lzEh0ulRc zFKP_6whUTu*7#Mnz*{zv#LV6`tHxA6*0`A)*@HQFHT0zTQ(dDjcVj>hJ^WcpvC>Gp zu1w_*fnSxD6}2o}mGheS!nikK6s}Zy!zdK#;-_TkHP_!H(!=kA^ulXlK88P0dKjfI zoUD2)`VHbcO+?(kDL-Oae*U~H*5A!e?nZ4_3-PWv`2%#tBsIyUpXwSlM$ZCI?0qDq zL^c#W~~Xe$9P*By(aPfiVyEHQ7Goi~itsUWg|G}5K{NWrb@dt-=))VDjG3yf88TmaF4CDx=Yubx_M6-0 ztF~Fv5P+LCs09sz*)dezb=oIZzslusQ()~OmO)GXoOYTss z+ThPh%fBU;K&G40V-0&(hqQ^@sfKY6^x2*2a<}HrnhKQC*3>Lfxo+Ot8_E;ok&W3f zR+_BZnnQ3uEb&6~)71?+n=VcRS0fK-ZWs;?pGHDVBn&tVGZgzwQ?gW@)mZwyNBC)p z8MfBeX5~^fuqcu`1oLwAKOe4_rxgP~#l^CfJ?n?rg`ZBZF&WEXsS+In{lD2$pgeP+ zKxuR5c;%UK%al$ldycvw48gSC?dwX28RSJ6@|1)Ibm7Y_n5=WRDO4+6l7jsLW*f8AYU9*fyhopLMqUGtf&Y-0XiDg zJ-keHDiTtG_ROOGPgtG+o!~=-RG^Y4!tw;@>94R<7fFp;u9^jf%L&v!JU6Ar6fTEa zi8)ugTun-gZR7zDgfvdXUpr#n__o|%sIOs|kl2}$c<{Fl$N{dUDTA`Y`RLB6;I8wY;%B4B@s}7oBr`ui{ zu+LR8kSkxImf9Z$s|(Lg%e!?yJ~PA+M|fs}QK5#Cevawa#BPxzT!+Adfo)k4R{H_l zG7HbK3ry-tHOBrpX!f>Oq3Gi)Rae!vb^{HWBm^B`AS3am;)l%pRjEd2A3mUp%+vQP zPgzF&s!Cu$mD%v3R+d$BB`nNA-N_m@vHsdb__mJJG~}4#0k&txtWuFQ@554D9S?8q zSzcofuTsyL1MO80)46ZsZ1}Go46xJ9)1Rr9X1i-=nghF4JCnXa1)|H=s3l5UFHrmQ zJ+1AAN|km=iG^3HNojTCXc-ej$m)QG6ti)yTAqa(Ra#bvtEsmMlvp@fm715wQxk6Ia~;b< zT%{G~^E2`FfIsEs>W9^^v{+poj&Uiye7725hCHIqtL)e<-f4Q#gWhRB6D??CrZF*y21!-nSA zOX|Ed?`V=Arkd?r{@X5i@;`IIwjchb3-Zzv?r(d?_kdp)RG%adu*JRye&Ed=;2HA3 zJzLfA)PE+~KEq7driQz}?Cf$uXYF1cW z*V&EJV!tG*xEva$l*-V*U030vx@z^15;~#HY0oeC^H3O|L0x?s>N(U;h+o&{G^ne7 z-M6ez=$v&$TP!Qw&oA}y5^4^-q4Ju=2|}T{E&uV7Wu0Mue?d*xN2HLNwX0PRaKvSC zN3h|(Bkp8JfP=^p74Q3w_&@9jyji|mjW_qau6n9ev-@?`qHy)j-#7RBLf0PW7Rq{l zSMT3j+gq#yFTVs@gGIlGz0IjRf5#T>ev|cvYU_#K@w`QQno4@F&Y{p7Q#zU!F*VEe z&hc}#`(7stjF}fVhL!h?S-E`;+*~QkL@Jn0wT~G|hK>CA?yv^U4r`}R60<*jPzBziD zuKkqB|Jptjy0xHl-+4QK55*0GHZ?o(R;z+gXiUjXp|QJu=TiF{4y0VwO!ZHyPi%~D z+&yd@7){0n8Z>HbTJKiprv8v*+bYhZj;nV5zB%-Tu9aQ{^2lmuZ@GALQXZM1@2VDo zl{9a8>c!RC?y`k9~;3eN14b9jO)Ol%<WR7 z%!v0=7M--$xuwhFeY3F=KJn=lDFxAo5&rj(-PfrILRH$ zD{lk~C(No{0T$ymt{c|nO!CCD;GxWaZbpw;mUX&$zpu4F?uoy@F{kgfum0_oGoCC) zOMf0SZ0j%kdu-h>jXV*!;E|F)Qs?&V)@ty7&lA_b`^>f>9a?VhoqB*ag6N$QIp8MP{A1&H)=Huo4Xh4E(APz|8|3h5>Q=k4gk6H1U z(pf!!rKO8OGXEI3e@2Zt^)WR>!>{PIkEzT?8r)<`KUJ9;97sjx<=-0)Fb`a3r=^Ae z&Q6k>om^xKbXhRBN-<-eSM6YMsr7;M`J2tMhg7Rdm^;KB@%s2fING*og$NyEC5*N| z@ABDm)7y^RVp&x$&{(8C9vqoS|N8htd6rcL^$bVb+g1cOO=_FqNHg-il!a2e+BHkO zzvh9QP1m*^X?}e{&5n=f)cMpi!v3C)dtkMM=amOTF_tFT0|NLRn}YUMTjbI`IP&%!DM6aqJQ_fgu3 z*9m6S+0b%Uxn9l909>Um57zvR7AnKrX5!d1@48*sc$Ss!qO9+oQ8T9id&;^k@8g34 z2bNvi;CwpTi}gO5eiCYOs0sSJhC{x+bhe z{q0wEnf)nN)Ma~*NgbN@aZ0M0wnHth4tZ{**ELYhu*RMiP5Gx9;b>aj1O|5>Q;K$V_iyUuJ&+TO0~Tx8Utur|>HQ+eYJRSO670&!-+SUV>uNy1`ukVuHt z@J4PXyoRMlq4bXc$ZGx;AA0-H6${Go3R;o&PYiT5|6j( z3P=A+ISo50UrDAD+>sPwjr`2+3_B+%NkTGOvy!;G_o*xGoS-BLN#s-_L8vJ?#SUD| zDMGQ&BML#v)y7$in^{CZp%a{xF_d7QI>ioXD0TRz!Vu;uSFQ~iLa%`2!NYPcm$E0{ zV_W5tLWdbkuP-o#AnM+r{i(u9iUySyd>Mf$1aagketm&CNueMau&it5L8gBo2txw zrVvDSe|oP#WJy7!x>sGHGxM235M?Y=WJ!@G!!y9}B(1U+lB-0PAW#;`U<#2DQDle6 zlHyP83cee{6oSaUnKDph2_iuTQwU|i&S%RQKk^$aL z(khRulgJVT)k#D!g~*8H(HKi)NyQ>N&~l~_MED%aL6Id0vLgfD?qLc+MDobHB1cjE^)$lR}i@-V6Rph#F^4%dberR+U`>#ii;uPLh5bBKrujEE1e=5 zWHLtU-oeQ0^v0ruvF})y>j%+$BE^}UB9_pdHn+QNq8H@aHz}7AGDhl54W!XFr@E_@ ziwvVXTDl`tiRdMIM!N8*Kt>1L$w|L1g$Fa(1l!xifsc0LxWeNwJarI`y2G|yoUHD6@k8fS6@X}h&tub>0l=a+cd%Efpri?l$V{R^R?(7(0w7UxSH7x67Ycs6CepAoqwNskfG^~LKc#swy z+Sz{D(O{@KJl6d*TG!Pcr%S|V;=>q>s9-A|=Xt%x2^8Xi0`@Fo@tyquaNvJYhlBAZ47o<_7TE8Y__YOwh zu+M~0TX>?23pT)f=AY1Jz&ZD^x0rNibU%H zVaAr&!RX!R+BYf}wM%xvxIa0C8b{FOV|8Xb&iQ)HANYdDuhdAtaK2p}NX?2|gXVnU+bw=oX@MuS7pZcY;>;X8O6h~pIBost-4INj_MKi8b^br(Zgfi(^d5C zQFe1pFNNW>rR5m=GW!5dTf$$`E1IJ_Q=b%0rG9%KhvCj#xjMnL1@^hZ#88_b#@NMK z0`|wHJGRi%{4AKjGz~yBVg9mm4vkb0M)Ma*5)KhfY7nOd+nk)BBniop*~A5*=0}(X zNs^F+c^HOJoWBGmNl0oBlHCY3W3RAtMoN;9lzm526@mI!N@2Yzj?f7%_9?%&3?j^K zU@b{PlGlLD6lna~jz4AKFLZ*d*i5XEpDBS^ha?HfzGGw z4=6`*5XBUNsF+7ai7b&pxqyRnrVvE-R5}#Em&K)q5imGs3PI%Yyhdb6_K{XN;7pqN z#NbVN*pbAX(BevqkTj2B3XySy<04CBkXATXN zzQWu#!@+W<5JZ?umBH#}fiymNXZTFEk-bnlfak zkPML}rI-pf<{(puj9QNnB1>dY;YG`tLJ)Nv7gTm$0;JXk2M< zF6>2hVp}~|XBKnID;<5LfLda?#GzO)q)1g-T&XrTbz7KsCfMx*pYs5n!`NNaBZcqg zp07BQQ=}`3EQ2m+>_q76@pnR>hbZXB0b|NX=s>jBHFl+Pi5+(205`keaDvglmD!a_ zgJ2x0SBFyYJpeQ8EvI8KnXp(ihgN z8IT=N?qS?j9C(*C0;Nti+Df(?2Lez6*nTOvQj;XVs32cI*Del} zbNeLW<81dd=pWH;P7%!`Pl8@q^T2NSnP~UZY&SrnAI=B6IZ4pS7wkqZOKt?~P!yUB z#L;uAAQAL2)nDkhT{_z3g`4c1E)8_>R0GLk$x<=3euaKvkzE{kk4MxJ&R~-(Km^W$ zIYpEV&w}?_#x4dE;b(%0-VGE-Ceh$6U?L|88u`MM2cVR-(;|?yC~sq(&eVX2F1Zct z1f@>M+B@woF1Lqq@mVjj-QTyH)8aHN{VPz>PCU=|T1u-#UV3@s!#s>(-qgO^slJE&Li9qAmxBl`b ztTzjt;9?&TYvhNA$c&UEA&GoQBm$MIYf2{ml);$L39gQD$j_uLwR1*Fl8}TyA=Uzw zt7}T{`dTxc;3_zd{LBJiElEP+g=k?)pz&*qf`f!aYoQZd1us`2Kl3B9<|HAh<>NR6 zDpxyI-yuRLxa=^gg#66dWp+-9BngRMrdWhr?NoiOk&ecd$inPiX6F=0NtC|1EU*MO zEXXB=gK`8HOPN9t-t#;*=Q1sMju}K_45ko7AEGa#dH8>Jw3PFVVupyBpnNJ8D zD=~#2dPccsF(=Uq^VaNzMMkC&L=8^_M3z`ii0URPGoL905!pgAM3xj)LZBT?A&Bt1 zgb-O$wJCei4yF)94aY^6_=*syRT9E`k7S4}srFbtC_k7&Wc1{?FNF$5Gy$@vP3IF;D|a2k++BJ5Lr^bsqo^=fGNa|(Hs|9QVAIWWAG$IEyqQc zvUF@f}k1&BWex30FPZ6EJUOTp3uZygbbEq9qW%> zrC`)6gm6+5_7(@{>SpH1y>`dIMf9Gi$6;hH^^D$)ez(dg(lLhTW4E^gx>fj@*sTHx zh6MmILs!~Aq<+CeV+c*Z8}$Z_zcT)$JDKeJ?SmTS;IILhnXFaz52+#6Y4|M+%H)(R z+4wRP?%-0%fz|fG07NUT`0Wdr0l;V{(xEl>!2l=wT!t|ja)Z4pD;~5D1~}EH0xe*H z9?--reXV^^qjKeU=}Zj(x{Uno z@Gy*HfG-Tj&r;^j8aq%TdWzoRJRX>^{`D$4Ov3B+PihsEvKqT%z}iLI-Z%^|BE7@6 zgWfoU;1to@yBSN_V^GTAXF@59-NImiM29{BgEvkRbR7*qX_4o2^O7A9L@Lv&$#x2Pi!xp&px$_1It-$3GZY}t2ujnXGxM+5L*IHxOqSL34SK{DYBHg0hj1G zpM#$`Nzlj`>_;xgzJMZtve0lKj=pdZ5s29zuCoR z$nHSWIPcEE+Jx$P5 ze5q1B%krvV?q(jJuFuF4E;9CB30$FH$}-nAa+(HMh}@2G9AT#844o5{Bq2G%B*du{ zNF+%}vOgdd5o+!O5=j!0GC3p_^(krWPua;IjWr(vhEe zs=Il2_*iDpzF#I21MEs8psCoaBY@i(en%!L9y$i}Q+c=Jzz!aHueot6NGO z1e*xX6mSe%5Y;q)EFH6cNB5RpAeIE0JS8D2I4-gzKL~*jFp?1aI4-ip zS6Bq;u}Ts`8W3L=*H%W%)|ncb7#iLSdnvp`l##A7i@E)go;2LP{_tMd)^iga%ZxR? z^g6eN8JO;*7ea;eDjMUK54pU1xLe~evVod#uLfFS7zd}-L~5}EuJzzVh&FfYKqeDO zqaJ<)h#O9FpDBcMPH6Ao!Msf{dTtLGSw~0 zWd6_=!45+58H@l2ns*{GDsXzny?@6BON`?7QP%%)u?BU#hsGL1-! zTuM9OYevHkc+8OSy9V%}~?; z)Hm7ZJB!s-0Bx3*X=zJNDd|#O*p0+9#^-S<^8nt&BX5wiSPdfaM~f50GpP@~jG@4i zpgjjWi&a;GruIpIGN})}oT0#ypy46TV$~9%s++GZ)A_hDj01jz8$HxntZWkbWH>=2 zllssr7z!-e&=$@Hb-FK$34FkG1^^>AFWcDwFL-n(S2BSQn85&G#3y){yA4cLfwS7Y z+`%acFo6%4$pB!K09e-9S#93Qb4mhC-~(nc02n0z)}HCCHsRlOc6BI#s+qGV9CV7MN3G4$gI(nLPuXdm5&4i`Txo zuu~7O)qH$O)@R0GpV|INR3AmBd!fFXcLzF;_>B5g7q;zFmfZ)dqE}26*=NWMe1=!D zaiS$L{QMl}5tU{_t5RB2hcZjN_nC^D1)m$EeQx8JPSgyrt;<*Rbprn36YYw;Iy&#i zXT(6CQ7JPL^;!d?!}Hwb!84U*!Fg8_CSEP83p*8gJE@iRc{4Ac_f^bWlsyf2s|Cy( zj*9}`5GGzZ$a{a1-ptGAJ)U`s{_TNx#*OZBv$m%bPyu9;oXHIGnM`0NqG%p4X;aBe zOlpCXUvxrNFvw>zk(r1_oqsxU^;4@*6&*WNW zA{w0yOv)Dvll)e|B#%xF_n9!rXL21g5sgZK$-}dE%$$7A*E46)_Y2munaSp7UVlq?K#Zwhcle~9w!u82K&sGFf-Be=azG7DovlU&RtT{&M*2jsRA;_=W!SF z5XJt9JTADxxogEftxbB!37B>-sr()%lqp8~oR%^t(drm-y5dUbu8fU;P)YrmOX|mF z;Ue9;#|e!cv+!9iW0s<%lLH1$8Ry)k?lT4boz_Ob2C5~uyo~etR5Kq@F$MYDSnAwm zFJzBzzeVTwIH7Pc&}X!O8Hr-4$mp)CoV)C6|1h6l;S4&lOfkmiaU=5(rEWNFPK|l0 z&{-;(7QlB^t3#PZUUKd+*5_5pyhN|L!0VN+&Qg_QhIVsWm^&Y^JvwwP^bK^-$sHXt z@EKMyLs4=8Fx=hES*jefrl-@|JipdHNt3`ZpUpyMBl;}@HlKBOmfGL5zrR_bPOT0# zJF!_{sLyIPvl7j20aia2IZI7`q2rkiJ)LZG=mVW!a6;xW(&uyoa{>u8cs;bnPBBf+ zavm@vrZ&x}4&@Yh(;k2B9{!{b4*MA7GpS%Ez?_(DpXf9+BX865%<7&_uDP?FlV9L9 z_;pb|HVpIG%waabK0%kxy_^Tk{%qiIbJdOYI55KJFqb(1=L8OY&UPM9XH*w&UpM2-4)K87`E0PX!aL7xu$!C z)4V#=yuh25#F07p9B*QdASr?4!*}U<=7$m|*Sy@*DabcTTo~nZS;Sm`J8>zyz}cXR z&@D<o+2rVJ7y$H!~QR61d_*XTzyI5=M>QVy1x*KaG*;cB#)5@8Dv6WSFxz-%Gm9 zLVTgOFhfv=gsvR!Y%u!=I|ccTldw$dV{c_F@FZ-_Ma~BE!w{z+zey67X?<*jvA~nC zwIiGj=IBtTAU`7s%d|fBHpT)^!p1IkHmI}F%Po??OzeYiXD~1&@V=4G2GtwEr<}H? zUKTO2559xJz?8ssmpB_t@kLHS{>JO?uZLw?AA2`rfhS>)jB+-ZAtRiE{O6OfOzUG| znFJok0#Cx$jCU5RhfTo*r?vlm2W^(UsB*Ks8xPfen^@3rkp-XH0$;+{PH-06w;VHl z1~`M;4GR1qfEXNl$xAUU_{no#FIkd-Hs@mVVavvSt3yFE?P|vh;>}9SC-%nDIu0^1 z_g?MnY%fW|50`ii(%9ZD$%OY!lk-dns5vE z0#x~}?h{$zQ;KkQ>W{Hukq;k7H)~|UKY9{nS>AN8B;z)>*~siJH{jH_Y%P5#0I;>N z(~B1!Wf3ycj-P1q;-oA-%BpDnb>Y(M+-7Fl^^P|4uXD2UpLFUkLVm!HvN?=w=I2Q7 z`iqb&AEHIbmABQF^CBb@$s!~Xx4GTjpZPSgm)S3dwDh=rJ$^Q?Zrl1P{N*KFID;*N z8im2b&L+&6uA9uqlbsioG7GPFnq_%UG4FrU3>8CIKpc>k2TWmS@K#_>Yl@$M!*N+I zeT;TB*k=|lao@?D`vz|Ii*Ojb3JyK4UZF3m^iZsO-bLXii?MV=4#0t%NKk^!zcC<@j5B)CdE?{;=TgP^7u%4(ok6*oJk`0ZAH(WB@XxDAd$p4Kc8-h z2E^$bCB@+(7ve*M*H;1qIOSLpC=RhW1C16Z#=+vmI9Qw*2a6NqU~xR|8~Ea&%D9D= zvhYlYM2p}+hr~D>*^n5A^BNN4a3Vuu9FAj1h~t3^m2@sMWmzTVIq4VA!<3{vPD#q+ zl%zaPNy_7tdU*^28(0pU-|CmK2BbhGCqUzr=pu~-ahIi7UP7UnieQQ^2j8WmKPeyP^%1KeGK zg%SiL0zg1w90bJUDM<>XBq<;U;h`gymemvseWmgfd;&N%HlfhqQMTxEswMF_h*t@5 zXcrRWR7>LYR7>J<7wk_2P%(@XKp{!I4`m=R4tbmyr&1KhlLzB*@?bok2KFa1Xi|@1 znzRdWNN_^65e8Cg;&Eyj<8f*k<8f*k<8c@4w-OS7Wn!GFNgP16ARebu9*oBx z#^Y2-GTe8?OAISlXN0m6s=0HJQ?8f@um8p2b`!?(GCOeT^6g7-cUx1a62(Gl_( ztm>B1QbbtZO8%T-d;Xjugfwb+g*x_{=lza7?}i9`$Z{>S(^c!TCVn z2cLc{T&{Np<)-L_27o(IH+Wau^qlMT()SC(B@9RR1-{}(muKRip4>vF#9r_RKnvKCvl$lu(mLJ0S1GjQulbEGtY`nz^vj8Du``V7E837dq#jP_`gPyzZ<5uWw>VDuj2E3LfMP zjT&Paw^QLN4zNfuH?p67g=TNu?Vf7hy~)|4yTYR~_yTe2y*wj=kanrzFP!*REp`qD zn1gT(e@-0HIJ4kp=L20R%mOQznW3;|E}b}rA*edZ9JT7e%qQ4AGEdE^wxL~=+o0ScN?N-_C0sc{dn-__}N{ypZ%7*!~6M@9dLNz-RE}L zHudiE`>?b-L)<+p5`TY1X1;<>E>xUKCQR`gWX|Dg@4pE-CzgG1)fGN&s4 z*s&+JwtjV9pFdSJ-1glEy|;}>eWRab=1cppKl^V7-tL>)DkJpjKN{^Y>3?>!&GXex zfrfT4Y1`u5==QsvaoP>z=QnZR;$_CU%>Ihr6yyDf*+0{G-u&jcdd>LOnzZc1zt#CXE1VYP4{whrOGB;1uKNy1{^S42Xra95%v2}#*shy3TCY5L97IW8vQn@mFmFIQ!QVt+Ry z?gC`@$sV%Ut@J5Lxx{xQ9}mG|3PDudNeJO2-ed%vp~Mt|$h(UWB1@c07T}&frVvC# zQRa#)@iifEhaOW1qL$+#OI(lspdETih&qmoEXfH%;EO9sh_Fpsi7e5I+>b9SF@>)c zpWx=p;*v%Pe4U0V1QF(9EwUs(6J#)jAfzIQEXhGCht*A0mII$(rSF|HR=mSGfX6g( zJ(97k$8os?Qcof1qp)%voU2ba>$C0VfwkNZaTr@jFM5V+pgX}AG&n^%yT~JO=eBwJ zQ?qA-{bm572?G!W!aihxne!LuKbf=Jx!GyneJlt<>hSOvc6izM+l$T0N}X-qdDez) zT3KGdaaRuF^&;rrNFP}EI*kS5McdYPiqXf9n*qlw2bl5eoQ`J9D%&&Ts&vro-lNmZ z?Nz#w`8n6kHqXM1=c{xV*6e=P>_O2ilT-Y`!Ya6fgN2$d&SEp}Cauk$u}+{mlwaUI zd&T9VDL(uG;>3MvtC>A8rM*ULX1NW``vaW&<(XZ9H!yB4GGUOf!5U_Qn&1w#eFL2h za5#5OV_^Ibd=rG@XPMv$ zVU}0mM$b=NwMJLsND6o*$UHRF&d>7fX0OyEhr&m1AU(Iep|42kGT%oo#Be?To<3ym~9)<5X;8PjET!oh3<9(CJpaH<2o#$j4l| z1MdMeVK#K#X|_FV-)Ek`M|UybDQCN>YHK&tAkpk->3-^ZXMvs7EA%Mkn&D%0i$Yj3 z#ngl))3YoK|I&e)ojT32C~nkJH#3hvgn05rQkh*@R#Q_LZqN)D3uxVx)P!lJEFjUc zX=0qFo$>p$JQ9!7@<=>R%OmkPEh5I_DOV&3q~(z~0WFWjJcU z_^(!CoquN~Hfa$}R%YQspYfvFNmgoMK_tGYMH{>Ny~t4(lQ{eL-Oa>&||cOB+HINX&o|=fYy+N zK(l~&oEADIE=xo-EQQsB^Q8Hy*Fi(`!$UynVH2;y6w87a;^6=Sr7Wv!%17qGY`bOP z41VQ_!^l(I&AtfD4;}`=Dbo6cpMg6il}@f5dfi-@p$g1_&uxuw+n)*|b6+25S+RZ) zn)KDWWrMCMEv>F8ElozYYK^q!FK@ZoO(EH0>*4l6<-7^!em4w&goK{k+emTL%^d!R z&aNlf?CD^4K8cWfe$gTXN&wj0(yaT&T?OapcQyz5+YLK0XR$5z99z#C&{fvo+8)|v zw(oW`n-p4>bvCE3bIg>Ec5`!Nw_A)IIGhw%wO?yfe4iUomMMSNZDuO!RCb!Tj(aKy zX^?@xWMyG-`mv+Oj{{@JApvIi!X_=ML+uN^cZc39ogfT2L`Ts%@;vE`UNQ^E>s8=m zPi2}mw>WK0Xs@fy_D=TR0MiK$a~Mhu*lb2_bXJ+8tK59Ec9i>}#@xqO7XjtZ*&(A{ z$m#b?=|#F()2=Bmwtt|>2@y)7FLfK%zOXzuNYX*fH|vMl&~PhpCg`;nWY;TF!w zohxo=X5M?=d8+M2zfImY{juTOY9AQBEv?N%eean5mp*HXHuq_pzq!wnA6C5F@t9*C ze8D-j&o8H&KIdlV^S{_5i9cK<(*%6;|L z-yhumz@yduKYZMJb%klwKkAsy7u$nO=tU>>-;o%d`l9o&a@sgk%&M{OMH;F|@|4q5 zjj}I}uHNjVYS)_xuV&-C^UGJ9%k014yt5~tBfPH(4f?Y)DD2sWLJ#JfF#cV|@5dz` zS|?zcvy}le81N;YP=bjG)6l#IECGqv4beG4NfJIaeDE^y!=vjYNk~RFA}$D}qw6F| zNNV}$LWG(hw>dc@B}qtX*lL0LSITGpbP|q25jw$%w~(J1yWPogF^MLpLhWBEW3Y}x zV+oT}@v%&8!t8Uo#AB!xO}Lms5ZRezy>JrmkUsbl6;lWz(wq1c;c?j)S*U-dMY&E|F@?yG+9I;VyHqH^at#QYoeFy?CPaiUgK=e( zk$ZSGRX(|dttcefPW1%ODciNvX&-oqn{x?kxrf>UttB1F%1P4P#x}#Pu@mhlR=no? z7Jyhn7l%NY$pDIuDl2^5sZtsl;@JX#i0*#FS*aZfm<^G20@xVS|FRBeJnx zMvAj5EiMXcLUs%D&Rb5qU}PUZF5)o!3LEz-=!QoOaEjRGZ3ErLzU^#K0r;6GZBw{GcXPdmwwBjKi#~Hk zbaZ3mxgY9bcBbe{?XR&Ps?DQ%U6xK;lvZ+B%LkRm?&tN--SFw!q{CAMEX{Mc<4O7< zOibv9j+{Xf5lsD%Bnh9|PDDcdupg2nAqnRb2|}qKk|ZI?+c5*XP=wMaAS6jhDqbZL zf%;d`*Pc{QYoQaIluYDjjy2LbE++AUG;@_J*M0$iN}n&~S$d3EXDa7% zN$JEAKnv1LA&7l7^yE}HNlB!<$CF=~LJ;AX2qChh)L~JeaRpNdqUYO>Vo?=YB7+J6 z_TWq*h{&m%5FxUpm=OZU6-*(BeffkCSyJW`>|hE(#0m)E%i=nR<&J#C6oLrzClo}M zXhjHI!cO|g!oEA`vkW3jsu7h@^e$6~jL3t85LuFggh0!gLJ*@LCWOe6dP4|&g`X(| zQOj|WB@G=`3tCuDLX3WbWQZ*B6(LXtQ;3W@j*Bd51gQ$)_$Ubxev)Nyx|AzIpm&)< zWK?imWJ$Fq1U^hjLhR$X$nv#NnN)U@zKoLn4Ce=Pk`{pw zIKpKLu_MfJktO+owVy0cLhR$X$PyWZz;cy@=xOnJ&73an7d19m2bn^&l0H&oiFXMB zk6$$OqBQyx_R?Sx5j`8>K30Zk9>?X9vQ)3!!agAEZgKdzAw#zhtmomUgu7`-5!nNS z6B>SUk_;(g@4_t@ewqWP=-&bmO>z60#CtH2%!U)Ky9&M;wCzBKlO8Uad5UJz@Nr zS0dJkb+KC7fg)B*8zH5+e%ptqR!-F_YQ`6JzT=rhnyWB zgIIi2#VMjH-idzLN^ejaiO|D96umcBuTl+#)u(ju(YVuec8O>vn#Q)Uds$;CG~(v^ z4J^8MdwZ?TJE!S(!N{jP$mcNp3A^`G-@Tk7I^&(_*tVcE5}{{-C>m@J-#$TB@I2u! zump6WIn+VtmWYy~w8u(|F;bJHEs?T;HNgzc)5U?Gc&|8zvHh&+m%ev7MKq0k4odwa zPj65G_?b}7!v`piOn6!AbThk?{xraMgbA{TWf|arlxErmwrA1{^lutPqy2!2w(qQ0 zE79+J%(CdAGj)|+BIb(uIJkz9J-a~~E5GsOfg3fDPj%JBffU~G#bN9#w%|M8d`=O~ zBVWTE{1(K4Zu(RefOw)0zF`i4Gr=KtcC?^KFIE9g7e3y%M2GyMyL;%>D!@rXf=WR9 z1W-DUDz}$bN~3ak9u*+`^+WuO%7L@>n|d;Tzc%rs5SWG^g*e(Y3Oy5$e27CIpHw!0~r_o3G~BtZcY)~@J{rVbD+E< z5l+5f1tin~}UB}qssT+&&f za&=8Ti}i!8C95V(6J z2~o#!ktJG@XK=`xgvjCj<`lm_oFw;JC<=>|zA$|4BmBa9m_b$)+-fNA@Nm z_Ho>o#if$Gi-W@?gj6JvB}JbQa7?p?szyUSVK0hMHseAg*F$Oez2B%_$|Z`_GaBAr z0|gUy!92$!Jq}~)LTt;!?u9b6;1p@LA`aY%?}CA7V&e}$=zsu5CqhkJprgFuWCKfs zke*WEFWCySC(COa-wuMiUr-O+{lbFiS~M!v1c?UZX~Tv<9{cIlMy6V2g;x@CiY@koj4Y1ZAMv(1_Z?FQzLOW+muhms@# z=S1H=&bomHaZ^)C;>?K^GiObQ{A-tTvH!b|%1sb+Gy?B+Kb$0n+4=@O!D7%b-=mU+ zGpA3T1X9|&Bjjga<@rLo6?ipC{F$H6A6yG_Cy*QGpGIa}T{?O4)T^(qE^OQ2T>5GD zwpS(gp<`ynT6<8I_e2tR%qZNU1ajj1xCFFWYj@HEW=)@A)c0=h>X6$)vL7zUez=-i z+ANEzO!MA4yG?=jbdn4%W4;AXvjtEVeTj{l%osmw^0b*(PM9-g=G19Zs|)iQ45XiE zLW}KO?%)!^nU*$J{-TNsyp2gRS%xq38I}pU#AT+k%-K^bCQdf*wQW;XY?+PE_E}~N;^J(@lo@lbzkcG(>88ykPF{l%@knoNS<8-@TOPDqnVK_I zsu{PtLDT9`Mu8VilE?ggdC)pR=7Sz_c@5c&sng6)7dZv?g&6j!4r#lB#Y7sq`B~me zN$jz)!`uf!$gs(%3ojZxVpzWc=Uh4L;w!H=h3BfS?x?BLC(SUb4K_FSIOf^&43)~S zYrm4j7&?$>d6wH)l}KMCeG`rqaq>@nl=Mk5OsL=a$G5N5O|mlrpYuGDL$3k%FCKSL zy|W}qdMLVe((P*q!tHC!hOQH~uZ^4HG}IuGwy#A_x_u2(PqKY&S_957k8l`i z#3STp&;Y^2z6YmB`x8zjih9?$H3KQWhh9GU|7mMm50)*ucuhzb(HgI+Q~qmR{*%pa zEK6j^nzE zT`uYSf7)Nt_o2D>Zb~U{654e8;;r8=TDu>$u`YLNjm!l7EpX5aP z+4p|G=o#1RtF#;Gx0cqV zmfGLoVeoq%J&LDi$hDG}p|YFMYQR1Y!x9)RrW0HZ z$AzC<$*WaD$GCH?eGC+aawV@;37rV^Qppx%Xy(j>C-j^oBr%Q)G=A0pvX#&YE-#H( zBR~8eS5T6KB*G*JHEm|;oS-BLNiCBg)Lc4C=afj2kVyFvs9edP-a@6?I-TqgS)vtYBdz=~h1gNcagimK69QNMk`Q$q7gzW(n@4W4W{hH zl|QBst->4^S>h`~;N$HiL1fWVy%^tr&5G&dg^Du{^ICAw-sxZz{a_1|w4lBEoTzCH0LExCtT&QO9wSC6%8L zn1e}(Y-yc2U3^8g3v-YuL@Q~}MV90sAs`1eAZV3T*rNjQnFr_;=+j%=9mq^HcC`K~ zsj#hA2;n=W*eM*GtMl`dPvrj_k2oaEqLD%@2z@#%{-o6%9fmKJSG;J!5!rX^oGhV| zae@~B>f7e&{TdG9HyNMlU1vaA!b&P~gjq97psTK*RrQt`wLrhF;XHjhR^WNo2|^kL z;jfb%kDoE=kK@OKmSx?mEDJ-EvBxdWOgIu0$3tihOq83kR&>EK>x!Kww@Q!o-z~gc z!*Thf$P28<%d)nRmKUOf)i8u^b{-us&XoQ#$18-C%RgRxfA{1=XPMGRZe^JwyZ!;8 z=J{K7z=Q)T)pU7D<3pT8Sb;&#_U*3y)#0~7wHx%)u@|N+Ej;5De|@_ zowUqYpVuMgB`PK!54!g@-P+{d>=tx?Gl>hMd@hHXi)iMb4ywL~Rm2u{s%`$*rMeb* zr_m7_zHN;3Ilai7L@)nvQ1vI`lxCX;V!$c+_-97?oTAK0bZZcVbG0LSX-02enO?_> zcI#wiy2$$|$@R>{XIjflMNJJ%``xCOsvDuey3il0!A&-Ell3?4f3i(sYUXo3_o8P>2reW1}%l?+YC4@ zT%wmMZ4Td|TbLss!oeBuC7Fx06xIS$MU_(lSbdjXs(vsTcj*?UUC1fQd_RtZQw_N) zFV#7&R|2OQu3M@{@$rgTS>a|$ry4>-iJN&UZOi6!$1E$|inO7Y;mUc+dQ$2=JkRb$ zU)asNqy7}9XzHa(EZG}5FKZM{{;Dh)>+!qGyzG;)H;UlYdBb(6`tN57@v*g~M& zMh6jsI&=`>Z*wtcBOJzLA#!|W-fQu51@ZhrUUii72d}a${M(bT8kq~{4{{vN9|W3z z=lnr93QjIMhs-i>l)|SGS}0vv{|(#3BiG>7$iz6kCMPejx=DxDxqSRq{5~DO6_20v zV8THO1bj-Je`;OwA$0WaWc)rIza{ZBv!hheTf_hAjaq!&GeigTz=iSu;n{{Kd12N( zdYVczxphk8`^zHfKYvyBzx}3c{daqPQ(qiZ|B%9e_f=VO)xZ6wY$d;a97=o_*ZMEt zPWA=x+sr9Ru&jpMhWBy7ubr%wLdsRsJjO3Ui`=qT7xi*qNYl8!dk4yczr zW`F8>(_rR7NB2Q$!t5z>I>ixfu3e))(B(d{+!U7H8LSAh#&iDGK4p7m*MquH_W>A8 z&;m>)C{!DEaDpga&h^Z&vJ`Eq*69M>SLC^5AZ}L#9`K3U4|ECKUN~9JaO>92Twh}j zuGd2}cm`g$D%Nn)MYMc_9^A1+Jn!ek6*TgZ5m3D;yUc$fgatnH+iu;V@c41d@@CY} zj!1X1+7AoZ3tc5UvcfNnLa%1mQW!pKK5UMD%gsEUiNzV=GYMSp+TPLh{mmX^j=ig^ z^elGAu1-uUP_K~nV3u@^8DLq@ziOuK(XZ**0EN9Jfxq)e_n#ET4$+6=JP5&=-O{{9 zX}DsHAtVjP31=oF{W0@DU|5QKd-C7c8&iK~#t>36d}>WYG@9`zovH!=NZefV3nPFr zJ(wTzfj$`EWM9s&OosAsbI6zv^}zrq`(#I$4B$jI`6GR>JtzBQzcHC`bxwy*d`$mX z-*xIE{MESr{M9%J;Yu@w->7aUejI~Y`K;Ncz9voKyLt=v=|`)3cF&Rnwf!jwP}AH& zR5}Idt3T0?+LmqBe&cp+?|m7c@C}0|g>$PpACX;#xmNvWJtBxdD=q()cTI0>2M}V^ zr+RQ3NfI>XIc%6`u9ui)x9Prcz=Jji{;YLS2m~M(GBSHV)q{gl^rR?a(TClwP(;nK zFYHC;<^6iNz9C+fv2s9FKAns03$K5_)3Wvtu&fn3Eo;SqF@Me5)&Ef2feW6Sy|c|< zW|?N6>*w@Lzp{rnL1l*{$x+pYRdB2))I|Jfb9KnelfDbSiT2vw2k_Lu_*K={>N{n} z6Q6e)SY4QFrv1gPD3SI++6R320rNp_v1NfymJjPM3LZSD^Ybg~Hw}4DK8EjvNf_?I zRkXJ>4QXZEB-FhGEj6C#%0%K!uO|?XooKf)KYeZAZn}S^3w1Rdc8aYj+)Ze(W4$Pj zqRhb+E`H#9AXBRW!z}f}(;lPR4Om#wDmo0?ugb;0QD0 z2%pZ3%%X9ZaSMv(_q^wvx_$fV_s#b_|L6P1NA5XQ=e%|5)Lysxmi4avC;N5?(-$|t zl?H<+dA)0a=2}Tl1aSvplf>rt?Eaw@&3fm1_S^a2rLQ@|rWj|Qen|ma^(*c6pX}Sj ztX6&Q2eutC4ohDs-NSKnz-ErvA`RlDBZ2an0Ln-6# z=~Xtq*2?9FSbzD&r2K%Q#~unjgb$>Y+xWJs4ACNC@RJk8I7;Wh-Oh3PqcvG$^-0<} z8kbAkdi}Q{SI_LQNAM?9X`nY+1|>e3Q3#z;p4j6o(6R4AIokck9>HHs#Ui{&M2#wW z1p_z?!PiUgZHx^l-lPh!$WYm;t74j$v2OYkriZ0c;fWe_nNz!DDw6|w+@KiRfBowl zk2LF&`<&@rX3oFt@`VFVIq#x{=j&zDvc}_^rYGh5E}ugssMVeJ^u!kf!>zebzWc)R0k!lo(p2=! z)|DUMQaSZ2o4S>2*CofC(soVt#3k7~(8Vl2*wK3Gt&?{)eARmwK1TZKz;Nq}(KB1W z={#->;tQU9_l4U&zNKe6kBh<_k}S_2b~ccbwzg7#3k8P4etzZ`}%K# zcU@K9dt$>^y(hj^wsXfL-xamSM#jdjJ+=GReUG~@EFaliVb|VW^_Odtzkc$RVUy1K z{P|tK-P(QE)WZ+7%~^HSi#eY^H}Te3kBKYzW2AcHr8%yCI~B>Pi%;(Hl%-aYEAVHj zRn-Us{ptzx+jc)XYv*l0xwQ>h|M{xZ0zI!%@4tE5Q%iehO(12Z)OTxCtogY+jt1S( z|M<3fYyYrwVk);n&wM@n1%G|?g&Vf)==kjUs_>w))=|ggwXP12HUqO7eW>wxBzwnC zZjHV2=q&#FsQZOIw)zWuY^$FC>rjz?A}cFmqc#8Fjd?%YInQ=dU#iQS^=j8?2({A> zIO^q1N?C7y6O@!^eLv>o=knw+J_m2e4^Fq|<%@=SH`+{ZRs!FEp+Mhj@qMC1$?JOnkGM8l+I%9AzdZFeAz+P-X+ zNz1eYsao}R{&0~nRwae^(#ohK{KI#~G#cB4H))wPxX`Ht0~+nZo3uQe0~&E@ zrzS1as<@6(nTv$6%Cu~gmMKBj!0%jaXz;sI18-`z2wiRGS4hWTW|7HrxT7$C#`KJ$ zNGRzpwsv3Ge3V&tb8GDh#mQy-GQd3DlVpN% zvgBeyFB4?4!BOsY)(1IV@EhT*&{D2k6_*L*}R;4k_7)sqS<|5*CQ?)XR zA8)2nN%gEEr=qBB7k^tup2?YPXL1hgq+c9Lh%qyMDq`q|n=^-m`dUTceI9pb3j*|7 zp6&14YZaR?gONI&WeBTf*#O9xFe5`2U_uVOmZ7DTce08m&p>E7Fc2jN(_2;#c5WW( z@OZ?NU@5eWI*OH^G*GIEdg>`oMNxswcjXzM%htK)A*b{sZV55Axn~(4Jo83YU#keL z&jqP@l0B%kY@J2flQ093JX;chZp($ILB@m`nfSRZL%J>aXr5JU!i)?Vi6RGH%lO%RwM0DymL`me>#LtPYJTB#nY7+ar%oRY5Y z_cAZRlg~#H<@?#G_1A0j{U2Q?>oCvgDT(r*o}^Yis2{l0>D6_Jr4+6c$6t=FS!MUp z`z|#{*P~12=(--h)ET7bEp=R7yVS{%pTTyDJ(tJj){(AtL-{a7^GICv=pB>F7fElE zw#N-Tf)~p7*spd9^ve4}V@9~||HaDzooj-mf4e%Dc}kl%n9X&*Yl=r&iq7kpr~j{z zt{DB~tm}+_2wl)TyLt*b*+;wF-aWrv2X=OL0vUfJb>jn}JgbO6f2P-EfC`8QnkS%0 z%xCh*@nZ5vAw?$R>HjMx^v43|g65&;3p!Hup;sNBwI&iUw?6^41ONrV1MDS$NXQ3x z@`S84T>zWD)Y34xC4yE>!51jGX^5Ktt>pmir_CG~=fcx;RttO084Z|tRlfe8jRI^Y6h0OCfu(v z)^mirB!DEE9#XL&Aq7U-c3K8fQ-?KtgnM}aM$|l*{sIGdhDpuNfWf8lBiyS3Frwzc z93e1(XPAAbXTX$I_yFkxlLdI&oJ$0WWdz5qY5nwz=)a$(y4K@!(0*7Q6uKwJtb=C&G`C2D03qSZio2Yc-(yaKnp#ZS^3mP{47b>tSiZLK=+KbY9jv>%uga)r&eOCjcah z9#E42Apr)$ZPdAc7k6R*8@=-mZLJAS_@Vbj-Gkd8a7czPH~GmjXKlJ_SR=@)m#+Le zqh5%b2Xl|W0G?qkS?;Xu8Idtli&a|b9pkem4F51th@$Sn-79cNhT*Qc%voz4OnXaj z{SXc4y8w_VdO#Zm2njIIEtflMt^H{rYZPTLSW89G1G-OukN^YScZIXo+L;E@vx?Cc zgOy4YJ)rvq2njIIudZ~~TE9pGS;zcnMG!>~=m7yj0u1!RRnA(g(FZh|fbs)1N)$by z+is*O7A3$yuhlzitrb3?F$5Is97NFrY7`(Oz(7A)=5*JGuXfhcxM`IV%&#xoo>7-X z&4amJU;yvIWb1SLWv$e!RyqZ^zJvY-65PQ+6%cg~?hb)NG7NXga>v!Zu5s?r$#<+V zBit_n2%_O3+$jh^_8GLQC~KwObgffBU4b>2tO-^~(e<$I5-gy78f)Mxc> zjP)MzgBB?29^6KOLo!|tyX$0CR=sc5Ibdsc0eu=L*nmXcgS$`QkPO4!a=GK`!Q-+< z<2T6bZ?q@>aKx_u;m|5L9`5~ui}XA*v-PG})+(CS-XOjF4f?>P7<NT1yoTGzEuhREySJiYqLiKGbf?gv8ax@P@wp;|z-dQ-qcQTO1mj>mpCl3@#bYznQz&vU%_ z&g^@w;l13413^ER*9s3XZ^t!Cp2+(C4qQTB{ z7`Wy}J72%DFzc7P?F`$ov6+M4biAc!UK}c~kgXxJRpbh9_Lj{Sk=cmK+#sBPk&~y_ z-{{D7WtYiMG0gKq*+{=g_KPO;GC^j;h@(nw%Gfa4b5tl|lMdd(^b{2STR%yuVfxdX zoh$U67dr#=y7f+xessO#>gM%Mj_(39*dP~}jl(eL14_y6Vf zWY+)Yda^6IPW;IAW8^0D6Nw-BF$MpG!TjNK`S7bz_`m;6MS@RzrxWBm;0%vHGU)&6 zHx=IXWJ6w{c5V_hzp41Yz6CGg$a#13qYFnokmmot-GXN_WPbEvc)7AJ@gIM55tjSX zj6q@C7#8x^YrZed#Pd%a{PzYTKF#xmZKjTSH@2Ao{7BIM8wc=wfZx;!zOc zl<^x+em_7IZ5S@N$JwacAGC2f>j*cV-T|f4dXkh$np}o5fJrz}xK?jpXcyq(vr+oN z_nZM;-K!)mJUK0*cysdRte9SWpEFNxI)6O9QA)qcrUJoucBG`sf2+)ivWZ`Q`ttMV zom*Vpc;Xxdg=X6J?>$ozmlx=(k#x}m< z9I3YygnAYAm-qMbOiq&mKh3Lp5@I|YpMjY1uTs^sewR`85aq9WCo@l=`q1xuRWJ94 zRZoOXI;m5{5=w9DYf_2yjNdzhGH>3imjcC;3zR4-&{gZQ_Ka{}dgd9kZBE4~&?c$m zEKZ8-^-i$P;Hp0E>Z}|+V6QWX@7NPjqe^~4eFG%w+d_ToeO6d+{DV`#HE;JHyqdQ{ z48@ZTCCb#ildUDXe62ke$5IQV0{U+Fh2>lT}@Zr?AUv*r)@eQZQt7N&pN_Mv6 zzEl0nW_{tGo#8f78~*G}PqfXvwDp_yb(L?fc#;mD-nHlH9b3Ef-SMl6#dPZO$c~%G ze*e_U>d7qw>Ds;f&nS$Ie(~G3Ge6$D6Q?tuoq1_%EUM#2>+32vb?Lj~ z@KY=4VCowyp4{f>&E>uiac3Ui)O#n=78I zy645dtrfS;-tn9G;?`ePEN z?E`Hklhv+?qduNE_WmUk|B;oTuOn3>C#Es&T76aPn4e!*anoIED95{ASyPqB{YmA& z`(H&et4nVgyJth9I?}x01?ar|^8vA8-M?*X3b99yIdyOA=@TEU7{77Nj+^dUvt!D* zzf?u9+fdmw?5fs(_rI$3@@=1t9lUC5^$SlfsEp(_FQ{Dm*BfFxYe(*U__Eh)nnHVP z^nsJJKchpd!|wQP&W>9)epO?w(8cK#=Pz|`pPB0J$}rvA#F!5oj2x%N#E%1 z|K*%uqxl97s9vqxZqJ(CvO8wmwqE}?$BiT}=V{y{_%Qj=diUR)d7%&Rl_%%39+4&V z)^nJ?{2gazSGR^g)8V$Ql?7=|&Fq?X9FL}ugYP&Ep$|!Q)54r3{L;r6jGvC_CI1Ya zS?umw%Ug3Pe#T`&PETF_cV~OPNUW6g6G>|8AI|e#-P5@}rp`beU%l9xqPzXmd8wBP z|EZ{O{QLiO9ogKZ5urY^}bj=6OqxKeOf6*bX;4jH2le(Y@LTx|Ws z`NF1U(ZPqJMMdIi&-2D~%KL#&oxF%C)m*)Ek<~}%f98z0d*i1Ovp#bgLLU{=M_={p zr-#GNPmpiDYOZ}|%esS357$W{M9M-TQ}2vTTT+efSt#PvnFI$Sez-VFnh9n zCcw6a!wsQN1nlvi;jld)UH$k0JVi%_8%SorR5|M!lrF1H>R<} z(qL-o%yU=p=*{MiQ%aXC-6SAE+q&R^+72zrN z@jg$2_GNxOlG$7pZU}wubEkb#+UD^mz-AXA1bKJdhge||I2X;`z}h=C+z|T0=Sb&b z&*T<+I*KNR5H^phpwGNyz`WZQUe>Iw)58s+FMTd`F7Y6L)C=FA0WTyWg{pLlZaO>M zm6KsNQz}$1??D3P=Y|_XU-{f@Uz*PUD;FUDafGnVw_O;XVo&h76f~o40oweF!wsRY z{oY(AXszLvj^*J;EyqO&qqSY`L#wa|n86+cSmTx9hERvko%V8o9k?TWa&}A0wc&17 z{?$Ai!D=RnTZbV4?6aJt&q|_E@RMyQ=$)&>_fAP(4o4~#zmlJBJwH<`_?i5v#9t%v z3E^wnmqO2-)V{P?Z|w}{+d$F>p30tQ_k?R!FSaIFP8_tZc{n`WMhYCizPa9u2dxiW zWevBHvM#?cdmhK{eHhN5=* z<5D)$_?eo{&*VuGe~QGQu3_53xqNyZzp(Iy79&QMI1ZUZ%O41z<+u&LG62n9f<;^g6whTq(bU>tC^r|MdYs~^ zjF15?BZ}uTqG+-X`QkG2sV6C($_V-8wodV!If|y#$qm%jje3Q}(Nu)Hr3fqavAe^k zhQ9T8)bA|3%rwSpGRx6Ll&*OroG!--i;9$s5#nf!C+ekdhG$Pn9au;|`%V6XpYeb3 z(|wPhsdkC~K;l1=_)jGMQzW-}O*r2M5_g=dpGtR}pxGNpK?-Y4T7YQw2a@KxunzI; zE|6Rpu!y~VV_H24no9$gN^_NXGg8sUh1BE$#hvzQ@f4=?pxKj1Lh4D^ zm%WNaG*={~&7Hzg5?^5v$ps0MxS&QLnhOdfmm@6YHhnarxlM!Q)R6)15<36pB_0RO zi6dj&rr+#-g{h<P=X6Oc=qfm$*x>y!-L!NHGnNVk+fld=Nj~ArgP2#1EDDVG=)r96?_RZ0634 z;<+=UXd0A|6&{p~dWFT&lsIz8=zsH}gXYwcbM8qgo@*XOQ_UcU&|<@<9;f(OkB3K4 zUw7b&?1qr-Z>S?tptO_n%(dBrEGLBk?mSE}VmzScNh{w?h|gV}-4JpF2ScYb3dO=3 zMw8cM_i&vgLNJ>3(Mxa2p2BF{g_yQp$Qvn-K(J0pUFlrX>Mm$bp4>p|Rf=bIil!;@Q&6v2pIxE9 zY|cI{lP~tyFax@+QiHmXpvdcvYlD&ZhxF{)_i;|*wHG*hb3{f-}B}MaU z1ktoNu+ZmA&|DNSlUp;zb8Dt(UX37{HYO;V6Q^iO9GT+iML_3hkeoR3%F%V{Xpo#X zxqwE23)2|~$>q2M+U38^ZV0*l2Kl8l$fv_CJ9cM3V>xkza1+1n_t{gt;zNf)&5$~b z6olsQ$!-Wm1dVoHzeaIzhjHg#bQmr|d>sZ=2JSFSo0bma4-jm8E4v{S^;I#aBaQf* zw}F^K2qV&d=4~_Ty`5pus9ys4HY9hxo81uVB9OEo_{QrUTi*Eu-D46VJVi5T6&8`4 z*>@3r@L+aBD97)*!{WNXgZ@mV*9$IdZmH?+&U5o8 zXBJ}$Q7FcFTsye-rVA0`m;>eMNBg?TDar0qGPzPRdHhV}^E267;tM3cpTrkRd@+)v zt_(Y%wOU=Vj!-P7tIxhP;K7xdqMo=zP! zrw;pB{a=XZ)IoCU$QE~%pQhDa(40E5%j%!Cdg>rKb@BogWe1|UC_(D2S7eW%N_gNX zw;|Nc-y)AdA@aOuw2K!=2;enbqpzC)%`N+K#OEICHiWth4y~6;1gACJ(p>3cj~*f1 z>Chg%L94KcWUy-?Q&ZzMgnIaER;hp;3hT$_SiKu#{q))Mv-`Eoo9dQXP72XHH8Y^- zBhn@&5x;DP+YrhXRO-YA32IxoB{JK^izI~b!j6Ernx=7XNA%`7ZbPW2-(^EQm$kH= zLq0E-59f5KD!8bE&_e7Gk_Hqk&O2+ zWUM7_Lnz;*$?_F$L#UVEm&3&D zo#B>OSGkW^P7)#POG0B`5*Uqs&mnsLI=3Oz+waQ}z&UV7cx$-jgPYywEGLc-u77v< z{0N$XeuMbN2Dc&9$LB}q=>Iw2w>Bc*E~Gf$^itELP+<}2%l7Xfxbq&jAynY^?kF#n zmM`vgF|;DY=ShPIPm;}PPws={!JoMep}sy(I>&gBKU!d){2YcSA;sRM6xh3z0D1TC zh%VXcHiY{5y*oxq>G^QWQ`_7pEGLc-_U@fN?}CP<6S|&ws!{{+iNOloe>H2n+Yl=3 z-&lTB*Rn&c^flAe^>05yCjgGtGlzu6=%q8V-GqspEC&+eB5eN5N6fKC#y9OuypgXH zd4uCWVF-B>Z{(9AFE|Nhj;)#mjDS&S76k+3);{bl+L3^XH}WZwH#p`~;RfHtv;0|# z-GXlriK02?>M6i&_+7tv$ov@~^Qp~AHA=-oxItkT8F&OAQORj_=Y@*;HMq;CA3JKV-6 z*kREG{nShD>`4FqO2vO@)(j^;!Ly6wm-UD)&Ut}TZpKq@{n#q9iQ1WRFYX%O!IAW2 zo0-i0jeDm}a0g#;&vM*v#4hY7freqj9Jdk)?);tG5IF+A0vZmo_}1n ze4=L=$1l4ux;SSiCtZi9KKPX>5sEfOY3mJ$$HZrGzePw1l03<^Mku*HdR))qlUkDe4Bh{bYL%c z>39x$N21~<$af>0)I@YKo8NRlboM>;kEP8mjr-iUET?P`egLxUzuXU<=0zaqzvX^} zE@_Ya3;~Zv&}MxfTPV_(yzP#$EPU>FV`Hp8bxZT=#7_J{%N)%%$N1%FHZ@XLrSoIt ziO>r)~G{oVK3(XH$-m z6A6oP7?SbA+Ma#j7SA(Aj>F!a`fg$>3C0Yd&%(C0Esq7uGsa>2{4Vso<@18C&UnVe zHg4F^I%f1AJ>A!K=fo0C8#YvPV1{7zn9*m|01#e))f-9fEU!FAkIsvYq5n@KIplcJ zqIX;C7Cqdm)SlSOCx@QCe!EgH_Pn@l!J>y-M+~a18NW63^wpCnELOMZ;p!2CY7;dt zpZxta1j3qyiyp4tz58v-2`4;b$Aya?Zbg`>)sUON=;3Ph+U^%jj$hk7W5*>(__f_H zK+d?|;H8UhMwO9cPbZM@jH(|3=CqkGQ$JqYy}K%`+FDobp0UFe(>)vd#twJ3Rx4HO z8I7=@Tt!E9Z0qTNZ~dn8+gNB7>Xf3e*IO=m-#slaVLY8~CACx)qz(ouzrPu$n>JT+ z?gC(+=z3Mb*eqRuziK6Xfj`#Iz!-~vH zlSP=96NFLU<4agPli>wv5ZrGe5$QfC$BbwB!uG}9O;CsA1)?~`7_Xn9{wUL!AB1^* zkIxHU_u=!P7?|#(@Z%@R2?CJ}6ipbKJO1;!3hF-sVbsqU1JOu!@8E$6ktEI{AZm(G%1yK(2N7 z?s+wh&-ZTm=P4X!x{C2z6Wmw4wtM#u({hXpkqG(`B} zZ6*x5;;pt|_W|8wM(4GSp?-@i>*&Pjytc8U^I`ymDl5;}@xv}4r>%*4QFMfy$UPhS zwwW##ARCdX;r z-8+JE=%Y;7yHoom#9h0qzCma98ag+4G!i6}1RmRmO#}G7w7zQ?sS8#u@vSOe#IW`p-71Ioq#xn>rl@M~(X23F|u@RJ! zmxgTvh=h#`MXu$^9+4BQM1fK?vrH&8P3Di=PI{8A_%!|4KADmm-rdeqbi=0t@$o%- zX?||v>jQj~k4G=2+I<1|YYy;r0e)YA9~a>3_GTJT5a65AJf*Md(*g9?5dcgE;%m?C znUOjnU<=r+~%$WG*E{5myRav$P;J^C;F|(`ZGdkU{Dg5y-C3Cl)&~^a;x)fQB{lK| z0p3kydc-w36pywq$}F<>YFcmNC)E7c-0k%Y4|D`vSn!8T7ncQ!s6N2&dm*!x)CV%y zM7%FY?E!&gzys|8zWFDa9xFIIldlW#%>jNJ@je4O0s`(inSccWzAV6x3-C<=zOH8} zebd=^JegN|Io$$g0y^?C1q$*r`Pu+q7vNL9Gvzx1e7sL)d|jW?M21C80fB;oOog%l zzc0Yo_RW+}6=m}6%O+%`=PplV1{5q0@KPVep`S~1^9gdzCDA-j#oy2Qf@)O0|CA)z>f>?@c>^N;OqQ6`u}==0OkMzzA3;r z2l#CPJ{92i1^9L!PvcLAF93gT-+%`Kd|7}W7vSRozBa(urFkCz>eB)AmkjVt0lqoF zZwv5s{W3F<4Dj1LUdG>o!c2v60lq%KZwv4R#hLnL0X`n!>kTjIt9>Sb9iZ9+e7t{V z0<{6YF2E-Pd~<-`CcHQPrvd`|0(^Ub?+Ebj5t#-S1o*N5KaTnI_#Y1l)CTza0G|x- zO#!|+z;6riDdK&@@4kRQdw}l<@MUWc(KfItvf6c-d{cmL4)EKE_Zd)sT_!+BGLzqT zb0*&&;K!}cjE@KS+5o?A{h_59<9~ZVpd-N7-IAF=eSmKc@Y@1>D!}i% zjsWl8nrT2mfG-R1;{tpbM}l zmj(E70Y09=D$Voww=W$)f9(OjBfz^810D$QWdVL% zfRB5;jK8&B0RPnm`1$~!4Dd|>zB#~e3-Bq!OZsY`2@nI?1AIq-cP9lr5a7!K{I~!g z7v3BHYXbtQ$(af43-AR~GULkvd@{f{2l#!=r^o-=6EXqo1AJ3}PX+jn06*@;OuTr2 zuO;3${5Ayy+5>z?fUk>ZCQu*Xw*~lAfZs>F&w%!TKu3Ugr)DNt5a7!K{I~!g5Ad~9 zpX6J>O{J>~2qXi1Q-E&{@Y@1>D!}gx@a$F2KhFd~JZQ zo0iB-pgtgw4Dd|>zB#~e3-GA`zc0YICjtQ-0p6XSX<$KsFAMPF0(?Bc*9Q1RT_B)7 zz$XKIQ-E&{@Y@1>D!}i{f>?@c>_&!Q<mnfz$XKI z6L`J)_(+~Z?<(}%iy}of_Fwe|P}uC&8;&<&D<(yXZ0zXk@e>TSzsgYKCmU*ig`vh* z8)~i>dkDyc(sy~J$j0ul-d|~`zRNsns-ebvc!y#pZ0?DXA{%cH^dY2y_Xc`=I<`7e zoYhv}%%F&!gy@Mv(qSS1&ku<5L`vnez<_ckV&GRJ;CUXM~1L-t^0yvIiO&F zUhhX3QHMZbkDe*AWiIl8eR-y^BhSd#iq~^5ixg)eLvv?Gifrt@>kTIx7xbNOsQsr! zifrt)a~PR2_jF^_p;HXCe~xD!!pP7Sps*x_bf zqR2j`U?0cA7NQ6ld*EyfHoF;*D9R-^wDo@EmnhO8YQwZhp+o!Itb(0w4x~+Omc;Hg z=bb6wV27IRB8t4l6k@SoE!fzqW_MweT2uD08_kBLDeO42Lkv~u&^9#NfDLHQAGV%3 z44cjjh}~vQzQH~++e#Fb2~p&0Yzm8AM3UJ=kswi26ilHgu#3vJ5=BM96pDf=IFUAp z*~b(}K4!`jq`E?3RC+{FZ6Jy)G*qEO8@_BI1(JnCk%dgbLhN#~g+!5sOd(;W$U-8i ze25|oneqh5LJA`bi6RS$A`1;w=+K6&6g_Mp3yC5NnSzDb#$*eLA`6*9!c38cL~;#+ z3R%dMCrB1j7+FXZSx6LF$Qo#G*bik5q9~Rqs>9gqy9v*ZH9oi4%L@1Dof+#YJC^CyF)C=stadJeFF+`Cu zhAMPuXO96XkN}AyK&FsSY-h3miK4tS1^+Wewh~GHCyK0L$`hoLpfD;4qR2v`$U;LE zI<)h~7E&NtNEBJf6fDGc6I)0WS;!O;W{NB%k}M>OEM&?PBnv5wEF_97B#JCFRG~vV zV{9P>l7&Q(g-pRhYzMK0M3IF|Az`M-LL$jRqR2v~JVCOM!pK6R$U>sXLPHfgv~$H4 zQXpAK6j{g=EW~yVTSydH$P^N0iYz3OEF_97WXcmH3n`2&B#JB~iYzo#p+h@MY#{}b zg+!5sOu<5Ir?7=Yk%delVW!AJBFRFc$U>$(L9&p-$U>sXLZZk*L*axxQl_Ry6j?|V zS;!PD#C{B0NEBJf6cT2NEF_XFOb62L4X1*A8^*zoi{6lk6fs5fPYRY8{285Mz z@uL)ceE7+hQIBT#vGMPGORvheY#rNd+5CGPz4xxj;)MKe2dZtolrq2LsZsocob+#S zN-2>j{aY#*T;Q)%byrGt6Bpq0{QA+g^8o%o)6#7I;Dj!;Sskcb7AQX_>%o-Y<7F0quFEA&~GQUgV1j-}L<68;lQsWXH=q?GzbWcDbf z_6i+WTyRMD_v%QcUYCe^rPKKc9Eo=9HJpOjK>Nbt{;QV$C~Pbu{i zp`TDnZ58@*rPLKdzoV2opi6!c$xDn=iZ^>yscKY8-7X@3QA+()=#P|A9}C^hQmVUT zt3oMNDdGE-QvW6NY^BucLbofW-WM7b)Dm5o{%56*r@a4DDfKTATB?*OsACOC&GXwUmlTN;8#GvvlLnB6*2l zDWx70jEzdE2ZXjQr5q7opp;rD;rA$|?iKo=QtIDAk5WpN3;hfEi5hG~9^RGkyOpAg z6cPTVQtB&H!3J4M4VJ|2^a&kSN_{8F>y)DVxuA^7@&^fjRVnp5q1%*FFA6UD>YpC5D=Fw#e-AC9p;*wN}D!Q%c<-G>ZH!y?IL{ zPZ!)9$r*~@!x%Ya5*Jp(5Y*0}i_S|ZNxk~MNM2%#FL<$1>Jkw-pp^Q%&~GcH{wDNu zN~!0CMol$lOjb&rDB(9LrEV4)we}OC_rX-5lPrT>)>75gQdF%$|5+)z!xZ#(mG&2^ z@CTxdmWO*zA+ug7)gbf~-&z@$ZF@WUD-k7~R~!k_ZV+-i(Ys8ZF>QmRmZ;HpnWp}-gZ zph_EhwNmP*BGast`lZn5vP?KmtWTHlVoTA@5y%YM-s2LEzAs^f9`!|_Gk8ygzEFx9 z50ugO@oUjiRbnYsDn{e?p~eXGm8Xa<>iu~_qtnGr*uX(MIg9Bq-Q#w>uGtdFOI+*2 zuT9HP$9a|Lp6tWlsT4I4V4{5*d~~``iaa{wbA-N7DRq(1==LTE{hCth_e$vpnj;Q% z$0p)RrM!gEFqVkID@svEfP{NkO67?o&~8m)=$iSKhf?)xpFya@9}3QLrPO6YqsyLS zdMGs7BLx&g#Xm#{U9(ZZjbf9^eswJg$IpRc$(nn_y#ic z*;M7wATVASp`JeXKC2Yg)x&6End2=z(_*TTx_%9F| z6GXI2sNyCU(~)2}GKG!ia=yr1qm)9EfINn#PJICL1&k<01hW#f2#BCH8ZThxf^Gug z7>$fM7-C^H!oN~VeJwI*6&DMQDGDk+WH7>^m4QZ2@U@~TU#Y6|DPX9)PM2eN$H0U+ z4CFDITq-nPW}(F)90MO(9B7OznCF1TJch17QKbr(5u%ZS#t4P!6=;kgnCE~-V>I{} z^j34@E~TLejRQisB?eUmG^QhH1fVg$LF)sJQHJhTk&gd!3E!lY!i)ytm=>T;gT~Nx zqh9@sNM7!JN~!xL7z4|*dKQWZV-jjTq|u9GiUb;U3o{zfn8}!wFl3-oA{?_CR5;KW zGEm__qo>DA2lQP^(d-5^I&RFWK$lrc4Yj0*aI5t&NqDTK)UkT?Ly^2hg{2gJUJv=6 z=pKX~j+wU5BP^xLg|6~V_whZADH47HW`>e3ru&EkCc?~;0Luf!Aso~GX_gH506`=o z0A!T0egKbf$e8uSbW5oj5`Mm=)agPmvy?hp=!KS2rwENDz!gHD=UXbAWX(}(rcdDl zp=Vo4m54#7SxPOJ@QX0aN%%>YQYT9|5;|JKfj3<*dnA&V7>b@tL}povU;zMoPnB>i zNsbiN!75E-$%Ew!o?|ImTpW~CG;#|i&?qKD!#k#G zVM%IA9<|{zkq3=x2VE4aq2UEn3*fbcQAT+iWt2DH{8>uNRI`M=+$RIC85z_AQ+MGh z6At=9F#=_8Xk=E382MM^R#@8K2Xqxz5HB2SY{;NO85&+OWsl;3TOk7vLLW5hilNbF zkO_pNJ)FyD=1QsJpt2zXmBmy#v;d<3x0!I%1G9iH#^@uusMV(I5snN26TKSl@C1!+ z3*8l^g)?(U3p2{shoLVs3Q$HI6cA?Q@iah)2QXxYV$=YsO6hr&gyV_+*2rLQCIJQn zZX5+o@j@faC_tIxN~tp*FF+G4vwu{oj<=LTXAR$A9|m!t(RrIa8pxRN@o4|N`BX}Z zym>Q_HeLFO5!is~D>R;QNf=KfgPz)K*i5q&ZQvj?pp7nMjSMz;7$;Gxjn*Cnr6hc{ zwtgAOo4eLhYK_ROvy{4CXgqK5g|GI}tAxh$I-&72GSFS4=l?R2R}Kgxj%bq z?!@|#zd$tf>BwUGrV+j-qc^9lBlPyCBQ^Q*xg!X_bA(bP(vtg31h8Hd2!HRoR%9KRz27YJt+7 z&qYd({HkmWucGL0fQQB5oGye5UyPLKy5}P~85#j8zqY>j`AA9kfPntp^N|hR{dPv* zoUSiziIns(nZqAwJ@eT}Z+-H!k(`#7wnrYbkKA<_IprKN&DK?Ajj2w~*+w3!&f;{( zb#@+IeZ2%KHK6(ip*uT|sE%~M0`p>JsZrHkgf<|$V0)y<1&0`2uqzVF-*xybFM*wh z&*GR-+avw;P1_^Ud=msnBMO)?`34j*9^{_qBSpt$nwK^MrW*77W($%&aeJirNHE3` zT+HkUzf*P{p5Ai9i;>eqxJt81sX5iW!4CQyp`qocjm#51dAQYtgPtn7kTLWgpG+{V zsR>blkWoOweo#N{moc;-)UONLFJoxGOahF_C34`WO~U>JK>LCGw2}8G;5WkWA@Lk< zD*0XH_k=$&zY+c-@Voj)5U~=yl5=#jPv|r|&>QKvuS0V$WEh|%z zRaRo04p(l>>Q03k*Wt?h@8tsi@R?_;HVXaTGtXAtBQkz@f4E=Xk5hL3fXa^SYY89p zyswWWy7{szL33hYjL@oA&w2jAQxyq4bmR7_O+GqzWDg35Oi!U9Q#6usR=sl0^M3l# zQ!n*!4E<^Tt5wgO*I5Pke4d|pwd&97*}ApkpUa?)kUuw|jVF-%4dRvmF8BU$zr2To z+T?eO-(7yMh`TuVzFhiq5Bd?wF+5~)jPM7Ob7Oa*KhIBl1@3xE+yxK$ zY2!Hzb1}RElwl7$%J>E!rla_j9oIzu!w8HiD#p_gW}!D?6HGp*hsc{~jOIUt-z;-i z49=K}u9xX3K*3}D2B1-cK4{26ANY`kAutG=beP%#HxIL5d{GYbpeJQ=gl$1grk<9G zH8w@C*?`FkCf=A0VDgQL3?|>0h+qN^9^u$P!6Y7&7);J!1ZIH`TZ$%n%`%z8gnl%H zelAnPM`C4Uc15*@9I7=C&w5%w-=Fm%%m2Ej)td1B}25;Wk-9+$u{C7=>jAUTt8haf_vB zd4ks+SZ*{(QKCpO-Tk%f58*8a=EaX=6^Mj?B{_k`upDKEvV%bogaRhdFb4BvWe9C(Cd>Wa#WN()ciE}nx2;mJE?!IprFpa=i}p|+zoqgEq9 zBn%fr0g5OJc%e~T4%eggplsn8#KBW=HC&EXg`$Bx;!tE*_}#%pm7p?1j?iq-e9*jL zIdXuUAg5SzLIH{>dn_Z7BjgNajiP9gN`+>N=KHu59f}Csb9f1aZ9HIL&kva?K>Np* zHX^XajSWDQJ2nQf?F~UFARMozu=j_(YwY{s{Tk#T4<7s3*aHMG^q`M;$Uz_YNC$?% zAiPGKjPe990$>OL00clJgajdowea1trq#IS+)}DZ*1>mKd{AM7tc6j5vCh4RcQNUe z1J=UO2M#JC*3Ebok-$RvUWot@7Rwt22!IfT0un^R0D?U9kN^_8PxN3AeSg<#OWghlN7Nh-RM+X}x5Wo{WItOemq1>^Bhzf{}7WCiPZo;M;000C)tS2E4 zJ?LYT2Jw)CJaz~1gg$WKW#EoS`-dU~U;q+A1Oy-mU?c#`v6+T8i>)M7RBW_iOA#Av z(8WF)+B$ZQ(3ByMaKz&s8RVe{eeAtqcj-KoKQ`a6g$Mu$LIJ=~Kse&DBM4w506Fjo z#~v4eU@Q_u!jJ=xa3q8TVK}^jmW6#cY{xbQ8Y%3y{*g?hsghU{N{~-@ObaL2w#CA3IP;uU1I?5jkP(*hNAOHdw z?t~x|pa|>ngdF4n2w)@(J(D{CLl64EfuY72?1iFx$IdcjhG71O4OQe4JG9t<#Q=dl zZ1e$$Lw&%;Dz+&hhbD<|#6u3E< zPy{d%z<`7rjMGy90wBU+0DvG5J#4;04)VZ5f{=$E!VwQSq=OcN@dBImr=$F_WsLH} zR-nq~q+ zFZQ=#9hx4-Zal#w9Q6V~00c0)Q2+uM;fRMEZ~zE{AcusIAPho+1{eBx|BNFsqtX6x zJ_hd)ajpjM6LByHC$_Ntg17rP#Duq^c&m&zq&R|x|8YJDXCLso6|ZaYjuNkKQ7>?w z0q+^HtAbaZ*s#H=D!jIZad?M`V+E5i{^Qj(-mv2|9bRnWRXaRWz5 za99W@Jn+^Pr#%pd6IFNaqJ~}zhZ1n83&;IXVNfin zV5m?y!GkyIIP!)gAgIwebBKxw<8WpG^#R8Kk!w_JR6x{tcoT;zP;YQJ0cQpha2qNL za)X0gXgWAZfRmRfPn0*B8tMm*lf!8Y6bo{V^HeYjXRFXMP|i5@iHe6@;t&^d zj{{w3VQ88-^7aHu2Z`bU6e4l<2*-g?^D$E4OaY1q$JJ0?IJ$bU+=6o?I4XpuiB1S@ z6)gpa5mDiA3I}fiaP|XD3#Tm6bkSMC3ors_R&agps{MUzIKfbJY8yij~7R;grnD)H_&QA<$+~UWmj= zDYO6#OgQd~CWbJ$9~BGUKvTj_7uqt)6~?3Dp$P&UM|d#sU_3#6L5sjpkBW=l4+GwK zlt0=unh=)Ys8HB6K(B`;g6S8wTTmgfi-CHAB{%f2^2NxAB|ADPtP{~WVY31wB39He z0t-;|eprB_K44*rP6+GH1agOkAZjoco+xiDJkj}JrHUaI3sY1W%y!U3u}HyrNt)@( zCd77G1H2$RVLN2?^t^0Bw8~^=o4n?0L*khKJtv9)!0yGfqJVJBj&@2ofUq3fB|reg z?gr$s^@fD8W`I2OkO0<)FNz)vf*g2+!;q^n{{tX)J5sW(@`}9edsTKnUY1S9-^r%L zZ)B5Vx9s!0Bzn*X&TmB?;n)XyO~QeL-IU)84)CtW;sFZSKtjUU?SKLlkpOl>UKd3e z1Uc{shauP{0iby;$#o&?}w2E`3En$3@<1l(~+(CQkIsfA4L{gR;cCi zk0TFY8yc2izXf}zn1LD^OISl=B4=n!?hK8kkD;+tD&?qNE(~cE(9 z$Il{bvRtuO=>uOyhUw3~iWL3-`p=+9e8;$D@K{{ebPFA=XM7!*7n;Ra-JFlBZZ@A_ z<>$QDz7#Spp178$&~d*MGG7;WM2>Jcs-`0{tZS;BrRk|p`nPq0ZtaNttmyqOORJSy zRsGuT-Icq)EREq=efFBFLodEp*;w9Bf3hgMK;Qbg6V-NjJC z#tjK1r&f)*`#!5*Xw?`!^C2t03_>R2(CZ_JMs`ZB-ACDaG;w@Y|IuGp{V-ekk_oIa zQ2pG)$mT)E%I6FpbgVo*@4HBB?02=v zr3$d`DZY}1>;sLN{eNfQO`VZ`|G~7Koso^h#S-JI)K^jg;4_R0^2e5~o)XQ!>%M4p z5gb?YuiL5A@7b`Sn(2LQpmkFyI#?H5(Z5w1G=rY}fKg5U&7W7DKNY{=sbBcFHR-th zR75ek=^{2(5k0O=5zQ`ms>fba->8V5>akZp8H$z{*Oin?#q|HNP@T52q8n{Wsiq?` zu+SLmej-MG#Lt@LmuM>|Iw1>XUu;JQ=3XFGqO&tWMR0+hWk)~kWfVJpti-d}Am9Ge|G zq5hS&5rg~1CO*BqdeWaCtWs|ue)g2=O;wk@yrlK`GmfijT6jU_gB>GwBs(Ib=5Z6pp+Yd!bY}iMG9p{C5+3nv(;yqT)dX1cdzu26k%F9 zu+r*tti?Gm^5uDPJmscABI(Azc8N{?2C=JiqlLXp5Z-)Y9O0;~xzV)_lLzKo`8Gk! z>KR>W!xDY)9j75QsDESmF=2PG`ek!MFZpNa)WNYA`|niqe!s)r&E~qlzK+aJ;*L&C zMDD^}ow@nZ?fD{ssTGZfAm~MG=$|JjJH8kp|ij zz_|=#4}@a)2Vh;ZR7_dQQZ557kA7j3RgLdD`8F9)(=WQk{>z^pY1TE9qf_)>+oIWg zQR4i~(TAKQ-I;ixFgm;lxlHgPf>IX$kiR(PilXSI;?yj*C|=J`_iEo0*&VA#7Dr#| zW#o)IlBbEc3iY7=(MEdi7nhcFdEg}21IYL-$0Icj)+dp9ylpQ;Eh9~TjYw!tD}R8MA?|<&S5Y% zlN!tJfzdAd(~{`*p8HPJOH;-oa$h?kFIyQMUL^VkFICHUWTb~D+0K16I>Y`JU-~+j zjBa6S?zPcDMWSRtl4mjq8OI=x4vsc*=4uiKBzL3%sd+g%s7RCyNPM2S3E&K}{zwB- zQWl+IAEwJZ$40jZ1^0-O0ddb3_W+zh77sNb)=|;vPW*eykB)A!iE1o~4lFim1}1fm zcm?nbGh>*6IWR0b-Dzf+Dg(3sy6B)H(K0B>`QjEB#VEr^7?hnOqSKuen}8B0iu@v4 z1|@#J_yy>Ul5?~{*?e?#y3^k2Iff}XMzjoyyHFehbVm7TltEct9-ZzaulUUs&3f-C z(JeMn>=;oqFsVi27{D{k?qdwh{L#@F_EkWk91%r+5hVkXtP{Tg9Fx}~{q&eANzq2HBb@Fu6YBiU(JhR! z_oL|WBGED^W{4mgQIljK%H516Y5*P*vSd?qxQ#(Y&)O8tw}HheuRPJDoEt}3r4^Yh zIWaoSpYs9$;ewsh`?j5wj;a0ZR^AO)ahb}Y%Cw3_Z$_9*htgMfPIq5bIs)Fq^J2x^f1|Ya&%ZPW2WbKn9DPdk4`o<^xy~1q^>aNmD=A-OcDp z(V$A{TYA%U3)3qzQIiRVnRc1ukl2sIn@po`@M!*kDU+GlnTd={a0Z*wG)*Z8$PG9(`2OVGCIrR96ode4&I*Ut(wDub?conoK z#|EAlYaKZM)Xuzss-v9s*B>dv7@kM7LQ&TefiA2V~( zC1-UWyKqM5kSRxXcIndvFB&rbvT}1`*`);uJ8CC#hLt43y?fAZTqqQZxp{@1efsum z?Ke8sY1{UytgNh9WBKqNrBf>pjdjU#yTrN_4QcIKP@-oI36+9NW!zfxttrR&78czR;Lw|IJrS0UzaTkNgn z)O3&3u?wRkY|=Tf%UzrU3O`<;5V|~`C|Wwzy(G7izl5mpiBSp`!o$fY%#<5z$7H@jhBof}L36k6i9lj*GsjIu1 z`_SY%X$({JC%vLC=S#5ZyHabsw(>u&nwCZ{u_fvK}FE;ap9fkDVR2JtP7h8Pga8iDYnTeJ*H>Nar{&>1CTWi;K1UrRGOENX}%4~dpR zN!~6V0y?9lmquG(kIoQPOfCt8CYPdQK;n0bR{+i+frU|70;bS(nW+84ql1b>%b>V- zi(7!sD1n7hoOCHeM6q8)&A_Cz_yzC`6IdBFGYnQ~24+x^Xc?5`2Js8f86~hXYG++I zhA483Xc?6Fz2X?4GfKw7Xu1<0g%4#@mWU$9h?YTd?-R!W{l`~Eq)V$bqS!H_W?)kH zi(>%)qf4W9Rz{YH>N_qvs7SO7N^+Ap2I!onz|zPqrz~M_fT%;`ql1b>%b>&`6vqIa zQ36Y&GSa0QLliAvMa!VLTf{LyXOzIwsE%}L6~ZXAt`{`}lls~JYwz3RqbRcd=g~dW zGu=JYNha^fiwuxA#2|to1_r!QKqII`)(7#4{*;HH3#)6!T~`P7E})pwU0qSuHNFAG zh6n^iAu1@iijNBl7uQ8_0bf_yMeBafsmFANDERyB{p0>V+n*2Qba$QaId!T|)#;k* z)7&rs&tTG?jgrWW5hqY0;>;#blm+!DXBTkE$GC++41-HO8*Tec9jkUA9CkpY=8g=; zqMS>hG(FBO1n3N9^Y7%N(eL3I1bK0kU=%#yb1s3RJ;^Nu=nTd2DD)sakRUHx4?+?i zNQwlXz!CERYUOws8aW!Cg-?J6M+ioi{adg`ftiDx{cpjD0y;3+j)x(5ifT$RG7_G{ z6qst{qeS|%(30S@Z07uYNiZ7a^SQ=nZ!t@;nRE9+HA`h7$;dwjV@d>YaYgg(Nx=+u zD&klc13CZC^2&HfoBPFe9c0<_!8WotqFaIfu$YX22*yK+KHrPQn_KI~{*{!~`qLqMR^DlPwL>+sZQP!B&>BEmAAXcxPEju)GK% z9M;iRG0`ZBsrUmS6k^~A!YCXaIk!--yOW_YMUN3fHOP^Gku%GK)kOk9ASPEcM3f{E zQ$f^Nbt>ZEu#MFDeS_sif=$3Qt>qR51sP0_FlwyYfy_A0B84L)=MpH|I&LgbilL;1 zQQeFemSY)(R^n^|rh7fN62LQE^Gp?(IXII5(Kd0r05}6l3!^GdlodjX*@d$S znC@n8&GGmnlOf1T|1WNKXZWlmjC~0xjROH1TgA_9iXA>|@o4H{CK0T27 z{Da^)#)}<>=>mq~OaerEgBu3G)5EB3I|K;!7X-;40xO@KOQ3YW$?XE@tVXFYYT1Vp z1!6HoIXpC2UL?2#N^%>w3!pQUv@l8=42^`r7*ZIeaxQ_=^k;4s(21cq!l-+L;}|P; zT?9e1a3%qwy~E7{;0(kOL=gc3?TkA0h@pZ-f?dFMZ|C*_F$^vhM6m^CR0UfcDO_L{ zYyu|v9ybtZ$6(SIn30(+FpCN2B(}hecLJY+hjADI+w=jq7--309bpy3L>qE=>qwoDfI#|1;4<<=^hq>MJOiX z4vyPbm|t}HbU+p_;6m^ZKnMeikR*K}n1!z+zYE5c3Ss)}_u%ztzFG_~hiZ6B#Lb}n6{4kPkY;$jd_A~sa3SrV5ulY>0a}rz(UP!6 zi!DDb3j1jk5DgzK3HfQCu%E`l8Z9^dv`^4a`-F5_5(?6&8KecOitE7@MHbD-^wDg~ zN6RdY_K#>Z+w#+bEI%#G_S2j^jYe|(G%tspmu6|SG*d(Ta@|i$f*LIj_-Qd<`g~mr z>uXwyO2S>)*&2=HYBVoTqeUe_TAriP%tAl4@_jV3$j|;o{WP<{Pc!rUG&9Fftt=l6 zTRv)ey=`TFKP~b3XlYQRK!?5F#KQX66u-yQn3or%Ie7sZ$*Ix!+Gs56CE; z(kG(RtSmpx$q&$sh>zx$1ZhQakoGAH(nuMXk=2Wg5R;RYtI?pYBr?3-w!WH1;a|+J z(SDjnb5*cWX=_=oPBSz8)XGq4I76icF`f1=3eu9OMy;riW|eFBFSAUenWcW3S?s66 zUZE_NS`i=h2fT@Z$I}?o{U`(El=(H+@NP`(lThLP40;ac3x0EhDtaK@=8-E4}t4dqB z#;TGZ*4qXYL}-o?NGz<+Ysd@u+M-1!Eh{r=MZYkuIU$1%7?MeAhi1^4lPy{`%%YXU z!?a>}n8pT~w5&#l#s8u_@GdbZhXVe_;g!X-vM|yGpjo=FZBT85*7UPzZM8)!>%ug< z&`)zqHJV-Or&`!UgV_r8nI2kD8KC`!h5)oy8``&!_Q?t%NJCwO4sOV$4Gr0}eoz+G zbPx3#9%^JOG#F86Aj?aQLKQ(WqAIltR0Q!?M0gyWEBag1uX(6H=%GeL zrJ+0@4Hf!msMse#LS;T0$ngr0Qx-N_4JCceuKo>~)W}e20Qy>%LPG^U8ZPottB;=s zv%QSJkB{n59m5R@Aa8bYux(&GhlX-|%r~+WngRZjry{RWpwd9LmzpIi%J!KlUNzup ztcpjd74@U8Mvh9Y5pl=`5e5F0a}K)Etu)0!3-~jzh=IQGQ(wl zY8ITc9By>0bB%cp}bDx_s6hpDNlG!#&2(5KLF&_^>2 zjRt*Q&J*n)%JVlC4GOoNIHizQj?JPa4JNg8AGJ&<>qlNq5i(+>`Bi#b{du{x&+u?p zR}w?c0#8xroyjs+5MbxuUjP#dj6f16e4Pw1A~ z==Qkq=dg8dazR87C=kbxWu|_jap~07>sl|Jeff2DGp3OlmF|;CW3F2v14FvysVrVt zUquGCxpguiTi5evT+=%D^6Lg%JN>fDubDN#!AWMmqg2DkH2&l@liOOSL* zZ&l!@eNg?>$fZ*+pEY~NHLbHRzxcANTCbfx?Xo)5q=Ho;F*Rs;szeo3vOJ_`{U8r& z|G3wzSop_jpnZ44ifI^$^{)N3rgjcfAOC{-kw}{M-S{z+^;vqM$_k+AI!S!+K6GRq3} z`JS3$_M<3>Imb*c-hCZZw&UU5*L9GgrTSR4<1|>$n^&sOGPQGg4dE{nxz`~Q#$Q&t zzD$oP!+H2r&c3FSDAQGTO~g&kl}AQrdHI)D47Z{pG`AKCTwkyMI$LN6@ASf6gsBgK zrstoa|Evf}$Zx`LH9;jHnuJP`Z71jxi^L^Sq=MI%p^R+MCl-lIqKNhgLqS%u42p$OUW}c{@6RaAF zKI8Sc$Sq?$wdBZ&`URd^_(j-E*06i{*S>$Set|p4FS$G}()#c2Y_ka#*uX~c*Df2P zf94*@FMY>%d*Cf+kiU_yo4&#RKE1FWccCa`@j+Elu{dcxS&!s#AZ;sWc#HkDB|~Dk zuEsdrKg8bMZdOVhTH@9v9rm`9_2=C&eoGeR8c2->UNx)3etfw8yjy`=q;-TIF*uVp zd-(Mo_AMjeCPEHv)D=rXmXXc+=nMr5%xl%Z(qmj>DTr$>4y|MD%ntkEYXJ*xF+rl5 z11HSxu;)&Pn^>-XrXEohyn6Z#`lUftdu|AfSP6Z;rx_Nii<;m04qH(i+QA{Su~p88 zea!gs)nvBUH#uXIc+OnG1-Phz!!8dT8yp@2 z=dAe4v<|YnH}Jc;S-6lCc(#_9)59$AuIf4d-V(-aj|SHk zaZ7L^PHIC1~)}!}1!TGudnq}|b!7S*MY2ey@+$=(fL-UV&2Os^|6~hHMI^`KAy_jApK5C{02?=h|u2c$`Xe;M<) zFBjl&m7Xj{>6m?9J=D1nm*HcS4;!fe#bQzLLA_WdIz8P zpSM3Iz`^FgSDCy)Mc>9tLlD`1>vCVPFPvh4f;_`(a4*8A1|2XjH zy#Rd%U5S^M^7*;Y!^!{1_tQGa(1jrXdFasSEouDPy80&})RTHRoO>*eYkjbB^O#S0uMzE*4LITAod4amADQS<% zF3-WFa{OE>=>T`#(!-x5_$mLsMsytP@(BL$J$fu1TziRYE`&J1D|!c?x~X)P0Edwv z$uwW2$6_2zYR=DP4IJR5xAm&|@?HKe0SJ_dz+{g%Ghw%U z6=^-iou$rMDd!>1FO}uzQfY}-t4-+zj}7OjBphJo4g^R4NCVei=E@2o4)D@Dj#f4e z9L?Mbnxpe@FsV5|mo<>!s@4pK}|(HkCA zURy1_i}OqU__@^6f!F*>Z+JNGA|85M8lJY1>nHTQAT_~U&~qe(L~M|RbN1hRKA1IO zx55yRgGpuixlq~(KBH%!72vz_Z-y*0c);Hzf{(mkkEMfao4Dqp1`f?{?Hye0Ukdqh z@Bp)PBltD|=U`HEelBX@1i!C$@K)ciApsvA&^MYM2XAZr-O=D$H`iR$Kx&??J=GH& zUir>s&t-epNN?l(Qdxd3luqH*YKLy`F*G0^S5hbof4}VlaP+n`aP3vDtWa7iTdOI_ zV}gU3E7nPG<6u&AelBX@1kdXU&YmXW==oeW2Lm&7y)4Pxn58$((JULlEa;SJ;M(h4b0Nf``K>*{h2Nw*WfFVe*?-W>`wBFv zI!BjPaG>AUJ34r!h$+D?-H5*X4|*)d!34OrnX4{@IKZFk9X#DDwI{%FWuJbh9imV0_c`$;M$v9 zb0Ne5e$KJMq5G{waC{i!U{Z5_E^FWbpL%R?Fw0&9N4HD^*GhkZ(S@wRg<`H$wWlyJ zUIKyn7TFykmTnA*a^^aoiAV11aF-ed=g_t%A!JI4S<7zsUNpOv&fvrF?!a^w2I! z4IzU{;oj?@9Q-E%|EIwJ9`d98d3hYI@%&t>k>XG80si-aKZ*R<_-XuFEtfBFQvBLqf&Z%I;JhjMyu6gp&!rwI{^UO3 zKfGLzDNjT7QG6P^R>#E)m=wDOXU{+73-@AL9fK0g9#$X4r?G3zJm-^8!@+*H z?0d+LeUBHH()qd2!ojXB0`^r)q4A%QoiB}FJDZCaYNW(BJr6(Le)!Ue zlF!Ra`TSh!k>YP!1=WAQ6Pgd3ADu6aUptq}7dR>YWT$LC?O8eT^72wXKbLx>_`6?} z&DVtdC_jx~JCDm3I4OQ@jcmSTNHg!nUq8x}kQb zG)Y6!CUH%KMk%C*R1Id112gLB3n&Qk)PMbmx~7<8IRWpm}F|A8QU-`fNzCE4uYXe(&Y_TcqnvJ==S2 z{x0(DCcV~s&lUek+AcP-y|b^}M+W@Es3UYj1-kcUVS?3%c{mN~B5SG^@r@qE?oe{nvp= zx6cb#kj4E?#Zl@cSqh8=m}JWDtcuceI!=x+>1u~>C%{(?B;EPt2&CI9jhbkxz^Hi3 z^^34D*wU=NdmcITiCIBnxkh_IBjzl2xyHv`E=G5Lc_z~Bl}1%@Gmwzj9X`7uX)rZh zCo_CjorIW#Y*4cE%NC>og8VkmID;4it1v)~?Op#p+*aRA93lTxet~ zv#;D2UsxX@Q|5;X+y_Yb9^-Vo`4ibNzugNB!*&9tH4NYA!y4w{OkYs5MOnt#6hf5KxxEX0yW`d-_)>vkS z&#H+6#Y#+aptQsR9Z`Ifu*-sWij$O;F76?tS{z-hB9W0=fhLjsm&^(BKYruFujk{=DL4$39Ce}G-CFz@M+!KA_<`dvU8)#WU zgJpr{o!Gwl1o&Z&i#P{?g0!w`7%Et{svFi$e8| z-IouA3^B-jcm(<~+Z&cLX*0Yj#J7HdNl%8ptSidwzcz|SE3l{S4f(ue*C8|09#LQn zR=gLT@)m2`&M$Y$V(yQ~fFt2-<+;9l@LK6PW}bKaN=n7Bi}uZhRXV)6Kn4ALO>n`Wf$fj?(Zgk3G7^xakL!EB+|nys8*J%mSa$ zkTmED*P)dweoWa#4MJJ+;Sv2m$kT(3u`1uYCUxbz(wMG8Pcn4HJNvJV_WWVSFa2n< zaNNlDc7C~&%pYb9aDPM|g7fG4?jaYCFltf!fYEHSuuH}md-?QG++_4~t86bD3i~z) zpKN5me1ow5cKvxmSli>~({6j$RAZ&bd(HdXer!IvcyoAw`?D3){LZbi&1?@}V)V;V z@RI}}g6~!PCy8KN+8(~dsAd)5o7MhF=xk3LqQh^JVz(NgHYPc&BD-;>@vR#ohC#&IVP+OL#Q*SLEE_qD(Sq)tKLly)CFJE<#-jX-91(<|VaT{B z6+zf9Og5Ig?dBVdsGrRE!dT$#oVAw)0r$@gU5r71y{pYw>JEQ@B^TQ08Eq_YBlKRg zl+ZC|Ho5g}eO#WgT--L`Hij;p4WZHG&~&4QESME)AZ?cz`R(89ipsa&wHqgq1(}9w z@QroM4$I!r&&nV1#0l`J9r&ouNI{SM`G+G%kh4F~bC_{PZ`a2;3eFfM3T}Py_EC<4 zcI;N;E>G0uO2B7@#N3B8pZlIdqm|y3*ARC#?}yE6Z2IFgm=`@zHqc1s}rKiEuO)G>pbTV?1ymX`JCGHOWz`MV9hSMiQqnW!;|oIC)F)LY<7rhJLs$oseX>9VMcZWHeeEZgVOt213E@)_Sps~sQ z#+dk>(^ua?)=cH-GBf6%N#wa@xdSINvEf3koY83 zgIRl74VveNs)|3AYPk~oCEYpeZ%AVq5x#EylQGo|pS$D7KjJr^`viQG%eC|HKjOm^ zbQMPB(NUMXMlYJT9KOcof^I5k?54ZgjT&NwO(pM}D|KGPKU(ym&W6Bfvfw_WCVJYq zATYxB$y}~RL((`p%^*e%NnB{M(TOx?8mfZZJyX4zZ=QAZ=Btc4K1eJcDQM`;Kx1#l zvB^%l*Q%e zLIK_nCrKLm7+l9O4W4oAl}mr5H~rAKL{}Nh+|gpsudyq*T>pqGdsfMAv9A0IN4Gd> z=3Mw_8+HppW4BoMB<~hV@|BlXk}+Fm76m*jBHj! z<3SZ?)HgR81M)wO!=7jqpV%+y&RKsWbc0c6U*2u}+(Q;mGcw76*NnkHMaYoXjX~_% z&958vFohPWY$x@$*Ny5ys2$%U?bHtTN24H^dN{4_oI4U|GGl6}s(1s^tW4=BQD)@N zFG89e`gy3zK4FXTiARGl8}38n+IMd?rl}e@K0TaDo3_{VAK_C7%8s7G$LrI7#aAX zQD<-e591RLG!F^yGzQp%KQgAVHVW@F>O6OSN=p6$0r0H9*=>I@9_2a@-YaxY>=in1 z+$(fu8^l59yhh#S5?jAPXV{sI-DSaaBgZp$Bw4yiufhI8N@ws6bLuyu!?3`(F<^Fh zWguqXKQk0`<01?>aIaa%r7+SO3qmmU;EWzwnULw zE9p0Pb|Fm?ouNv%kNBeI*qoOqu;C@~QXKZCLx0;jcLOPjnze=XkGw3wU9OFi-d?>4 z1Pv(OB(YttS0(-Cg|A6DRr#+=TvuYVqz^CK3^MBMYm3a~3Tx}ZeH^WR2I=l&4uBi^ zr1=t~i8P;KDk|G9-&$@qDzFEh%xpI%*+)SN#boo$(Lmk zsWLm~Zs27~!F*C9*T$4a)tj6ey}e0l0alb6UHF>RsH*Vw_}*1qp~U8tLd!PC-DKG& zy+6Dhy=#)G*q;qFpXK&kexk7F8|B6sF@@D=wGLfGHcO5Qif}zq`^Q!Mpf~qlnB?WDG?XGmJ(4|e%tGD0S^WeG;}i%WnVVh ze2$x??(`mJS$BH6SrnDM+mNygytTmk+E-_YzSj2VQWj1pUX(N#2d+!wJa@@sESOHL zl{6R!t_wH(#d+o#QFs9YyIbO=xS*jc0S!w_Xe%kwwNcVwDy*!a(f!88_gk{PD;WQRAV@5grvXfdA zy4kL`%xArJa)r6n9sS_i;e2Qr6CW^bJklR;8WUf$q2*MzNjdn zME^2bU>%THUtD@XVpSC}8j)NFQ%IL04M^3+2jlynI*k`O6py@oKGKKl55+sqy7W{s zrC+GZzT!>uX1DjbM~~nyMA7jddg@7@)Zdh02OMnlrywHQKgL$bLNDf-|MgXk`yEL+YI&%efLM`rwfap?6kFs4F7rorfc%$&BuBT|u_I=1Sy9dgt6+CW34o zYz7p3D`(_e<}l`W{7oT<(r(68Hhafgrlm%YWWCM$vTID-KKE9n!R@YSDP}$19{8Ra zb34j4JIXbu%8~otH+MLSO?DKUoGNCo{Gf-&xn32aR*#S^zVXi{n&Gevimgz_rM>3%n5poJsryRSNzzes@2)J|}4KC!k^K<37a?^eOK6 zM?8SkKG7&BRwOHUm4E@S5-{jlZiQ?c~f(GXTnjD&7R26`Ki39wL9pGOQ zC}V>znZd;b5V#o7yei;Y{6IHj2e_H2N=UMTqX`&rGy&ty*kF;1W8B%K2Hq<(WO48} z!3zEcG^+}@oH)Sc*a0pFK=6|gdL2K|>v)m5xl$HcygGE0P?s9Z$8_rYE3J*q@E z-OucoSSx854dA*Q4J4H7B}v0*0N2T(w~Q(>;(9a3KF1&0>@WQO^M1TVK9yC1d0Kh! z9c+ZE>iSCcTv+h3r2)bX|aDVn^@du)FxDCGwhsG7| zt390yJRk+asME3NDG*p)d_anTxm<{bQAdb_QAb>dQD^Xt_o8|*>bzNS-dZ;5ykUio zZ`AQ-Y;cpd%uu!p!_18&<7>0}cm|n5W%P~Sk!*d{rAitG83xk(5K{z0jATrtXc%I+ zbT)&FqxTWUo3TMB;Ve|!5RBeq4=9D9lyp~E(lDS%wR;&(ieNZNshy%>IFV}qb4HWq zK}U}!{IyxfG(I{K>Qd=G{3&-6c#VzC^98`9`9&l;(~@z1Zd`m_vMFn zM1h|fdVIXk_+MdjZii7spy4ng0ALsqGz=pW42O}S*Dc}QVM1J=`VKx+ZLgjf-}&TA zYuGT-R2UlP5IM;qvZaT}7AXeCk(5YAqyBbjG~^87Pjft;3mS$Hpyd;2@>k_Do=B|z z0{sR?koT@!ARo`|C;Eq~w5YOt6?-gneJa(2q2a$W39~bf4Y^aY`H-|v(l9o_bvZV~ zb8csbN$i(~fw5sqU?n$9$H36IXv^X6xx@ofB8&}x{WyUVtBMau88A2q*)TW=c`!KK zcjCuq|;Cj63y@dB>@q>w}cH5!tJkVNQkJR?YPNV38RA|PP|5imazl8E9Ek_Z~c z5TO5=AqhSUuosfySzuk*Z{?C~)cAXj0c#4Di3qlR7wR!S_f3>z~rsHw$ z|23`6a!#aLn`e{wS8M-&+1e}#2)1@h2)@M5@=ii)H`p`%;Vp_i?E!O@hmGgfWue8M zpRkaJ!}`H{O*X8vwY}q6x)UpcY(y8UgDOM7;k=i%JIRD&Ib(vcoUI2QW9bfu@wRr< z)R3B{7U+Ixu}%ub5nN~*mYVjuS|^!s>=v44a83Uo7wg)mhBTGsVj20CSxyE{4H>L$ zA=OHo>tAiVNrwgG|Fvz)^5UemEu_8qSKEpa=6`M5@*G9rx4YUx846?{vQHlxj=Sw4 zw}cjX3zuJ%dW}cWupMjpMK_U)e`i&a=O-JB>_7e{RKk8BBqQF|x09v!gc`{7_w;O* z$GN#9q^K-ok$YQc7-?J-QWeNWL_S{~nq)6t6dIx^C#-1?kbx7z5#@u|+XHO7R%0A! z7H*D`G|0y?@CJ>2+5MsCxa_*eLVSM-{xZJqvCsf=>c@IEQ96#+hb1{m=>zGD?9W@n z#A6S7GSujaUj2C`Uw9Z57c__lnr)MVw{Gk+p9vLl`P*lQo${w%ALct9#4q!T%CaA& zq(WXJ`}5VIca`Yx&pk`NA|Ysy2eg#8$X@)Cv~|_I9`aVtOP8lAm@~$`E!3z$k|X=< zJs{~Hhtr%v)He%{1@NFBSQ+$hE(=-XovzSjyT%ZLubk+5;ULz z{bOh>{Sl%;P9u)iK8ydf?iv*rG@t?fV`wbjQQ6m_h71i}xZs(LAg~xJ0*me8K(N=J zl<~)2OgpqKH#~p=@N7lL2aveNR8*F@D22dN68!`OmYpbLXn2qUDTlxl-&Kz3gZ5=3 z!omfF`{j}7_;6vm53&SB?i<2`$^7x*paPkP&wBfoHy}9IsD4a%K1@_$14HgrXpy z5x67q*gNKg8$HMClwaK#76agMI3>%51g&uA9pRt?d5%(^$ydD4Gm++=dCCv;e(ZWY zA<{G9K?-C!N_i%Kv2YZ4qkL}==pR5sPrw972nJb=QjRHy!}eK>=8nmR!=nd{#5Ja> zV8WxB&j`2Tsf>PtQ?RT??i<2=$gpi;lX)jkTJ#fOSpK3k7@nT!_+W6?3nnT;lpDVY zXDX0_$X@tGc&y2D5bdVnfeIuRf~(_9g(dcZi;yjd7iH;!cGGZmAYr;(mRv`I~{mTi~9-U|3x#enWpaLm%_*Iru2d_e+9DbE$%DLrgt2(gM?Q&rb z9DCah)&@6Eg0uTpD@JzSWR)tA-p1ZN2X3+aHhAlAH(R9&WUhf*FS}Xl5xlczj#a8a zP8$33U-Z1Q1KA{YSo4(+ybvtfhw3zh8JM@WOm0XA&#oy=!`heL1mad3h?7vS+M*WZyz7n=ClP zR5GS`!8mte7BT4T25C)NXW2LX-imrf@{^-EFu@6r@{!|gd&EOlftRN{>4gJRnm9Sm zvX4As6?u7rlO7@h9bT6UlbG18PgpN{c@~qhXRIL#q$c54S#A=%iU~(rpRmriUwFp4 z#LLr;ls#iLkmlu!VOq=y^6(04v;uiTxKYK$I7|N_%3=bDhgVpq21?y77iRXb zm)TZ>o2T}0ueQdJx>c60K++ETlvQwxW$h5Rf-E5izsE9ixK~@v3Z&WKS6QA7_iAfw zU@CN0$e>~GUV}Y><-q8&PGXrc_+_3Nqsyu#XRNn^Eb9fo$I@Q3c3E{H3jH5dhpZN$ z`T#dsFvn6Amf57sijll8%?PPoWf=-&t^kb&xXI#QSgL|aA9|G0S$YayXz5KqPzZBS z@Ivcu?zNCVumJMXVX}$rSFI&H#l*6hkxQO`-KteE<%9Z~wS=dPz&kI$X4UX)5MRSB zmIDHBz5S|H!_zzb<#lTbPwJ53V)+{0*$kpEO9S3ow8g672^e140V4h~k z7r|LY-hNCyPR4JuF0BM6*9M7972FCpu}&xI_Rt_bqxkPEjT&4I~EK!)HH8FnDm3;7#xK*A4aJ@~nhB~r0q f(h~B^caP=}hm<9fl0brx+s*eZ+k7wM;Nt%V>1K>A delta 145468 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 Qzxms@ZRgv!bN6)qKS7nk#sB~S diff --git a/mods/ITEMS/mcl_armor/player.lua b/mods/ITEMS/mcl_armor/player.lua new file mode 100644 index 000000000..9dba0773c --- /dev/null +++ b/mods/ITEMS/mcl_armor/player.lua @@ -0,0 +1,169 @@ +mcl_player.player_register_model("mcl_armor_character.b3d", { + animation_speed = 30, + textures = { + "character.png", + "blank.png", + "blank.png", + }, + animations = { + stand = {x=0, y=79}, + lay = {x=162, y=166}, + walk = {x=168, y=187}, + mine = {x=189, y=198}, + walk_mine = {x=200, y=219}, + sit = {x=81, y=160}, + sneak_stand = {x=222, y=302}, + sneak_mine = {x=346, y=365}, + sneak_walk = {x=304, y=323}, + sneak_walk_mine = {x=325, y=344}, + swim_walk = {x=368, y=387}, + swim_walk_mine = {x=389, y=408}, + swim_stand = {x=434, y=434}, + swim_mine = {x=411, y=430}, + run_walk = {x=440, y=459}, + run_walk_mine = {x=461, y=480}, + sit_mount = {x=484, y=484}, + die = {x=498, y=498}, + fly = {x=502, y=581}, + }, +}) + +mcl_player.player_register_model("mcl_armor_character_female.b3d", { + animation_speed = 30, + textures = { + "character.png", + "blank.png", + "blank.png", + }, + animations = { + stand = {x=0, y=79}, + lay = {x=162, y=166}, + walk = {x=168, y=187}, + mine = {x=189, y=198}, + walk_mine = {x=200, y=219}, + sit = {x=81, y=160}, + sneak_stand = {x=222, y=302}, + sneak_mine = {x=346, y=365}, + sneak_walk = {x=304, y=323}, + sneak_walk_mine = {x=325, y=344}, + swim_walk = {x=368, y=387}, + swim_walk_mine = {x=389, y=408}, + swim_stand = {x=434, y=434}, + swim_mine = {x=411, y=430}, + run_walk = {x=440, y=459}, + run_walk_mine = {x=461, y=480}, + sit_mount = {x=484, y=484}, + die = {x=498, y=498}, + fly = {x=502, y=581}, + }, +}) + +function mcl_armor.update_player(player, info) + mcl_player.player_set_armor(player, info.texture, info.preview) + + local meta = player:get_meta() + meta:set_int("mcl_armor:armor_points", info.points) + + mcl_armor.player_view_range_factors[player] = info.view_range_factors +end + +local function is_armor_action(inventory_info) + return inventory_info.from_list == "armor" or inventory_info.to_list == "armor" or inventory_info.listname == "armor" +end + +local function limit_put(player, inventory, index, stack, count) + local def = stack:get_definition() + + if not def then + return 0 + end + + local element = def._mcl_armor_element + + if not element then + return 0 + end + + local element_index = mcl_armor.elements[element].index + + if index ~= 1 and index ~= element_index then + return 0 + end + + local old_stack = inventory:get_stack("armor", element_index) + + if old_stack:is_empty() or index ~= 1 and old_stack:get_name() ~= stack:get_name() and count <= 1 then + return count + else + return 0 + end +end + +local function limit_take(player, inventory, index, stack, count) + if mcl_enchanting.has_enchantment(stack, "curse_of_binding") and not minetest.is_creative_enabled(player:get_player_name()) then + return 0 + end + + return count +end + +minetest.register_allow_player_inventory_action(function(player, action, inventory, inventory_info) + if not is_armor_action(inventory_info) then + return + end + + if action == "put" then + return limit_put(player, inventory, inventory_info.index, inventory_info.stack, inventory_info.stack:get_count()) + elseif action == "take" then + return limit_take(player, inventory, inventory_info.index, inventory_info.stack, inventory_info.stack:get_count()) + else + if inventory_info.from_list ~= "armor" then + return limit_put(player, inventory, inventory_info.to_index, inventory:get_stack(inventory_info.from_list, inventory_info.from_index), inventory_info.count) + elseif inventory_info.to_list ~= "armor" then + return limit_take(player, inventory, inventory_info.from_index, inventory:get_stack(inventory_info.from_list, inventory_info.from_index), inventory_info.count) + else + return 0 + end + end +end) + +local function on_put(player, inventory, index, stack) + if index == 1 then + mcl_armor.equip(stack, player) + inventory:set_stack("armor", 1, nil) + else + mcl_armor.on_equip(stack, player) + end +end + +minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info) + if is_armor_action(inventory_info) then + if action == "put" then + on_put(player, inventory, inventory_info.index, inventory_info.stack) + elseif action == "take" then + mcl_armor.on_unequip(inventory_info.stack, player) + else + local stack = inventory:get_stack(inventory_info.to_list, inventory_info.to_index) + if inventory_info.to_list == "armor" then + on_put(player, inventory, inventory_info.to_index, stack) + elseif inventory_info.from_list == "armor" then + mcl_armor.on_unequip(stack, player) + end + end + end +end) + +minetest.register_on_joinplayer(function(player) + mcl_player.player_set_model(player, "mcl_armor_character.b3d") + player:get_inventory():set_size("armor", 5) + + minetest.after(1, function() + if player:is_player() then + mcl_armor.update(player) + end + end) +end) + +minetest.register_on_leaveplayer(function(player) + mcl_armor.player_view_range_factors[player] = nil +end) diff --git a/mods/ITEMS/mcl_armor/register.lua b/mods/ITEMS/mcl_armor/register.lua new file mode 100644 index 000000000..de17fd20d --- /dev/null +++ b/mods/ITEMS/mcl_armor/register.lua @@ -0,0 +1,205 @@ +local S = minetest.get_translator("mcl_armor") + +mcl_armor.register_set({ + name = "leather", + description = "Leather", + descriptions = { + head = "Cap", + torso = "Tunic", + legs = "Pants", + }, + durability = 80, + enchantability = 15, + points = { + head = 1, + torso = 3, + legs = 2, + feet = 1, + }, + craft_material = "mcl_mobitems:leather", +}) + +mcl_armor.register_set({ + name = "gold", + description = "Golden", + durability = 112, + enchantability = 25, + points = { + head = 2, + torso = 5, + legs = 3, + feet = 1, + }, + craft_material = "mcl_core:gold_ingot", + cook_material = "mcl_core:gold_nugget", + sound_equip = "mcl_armor_equip_iron", + sound_unequip = "mcl_armor_unequip_iron", +}) + +mcl_armor.register_set({ + name = "chain", + description = "Chain", + durability = 240, + enchantability = 12, + points = { + head = 2, + torso = 5, + legs = 4, + feet = 1, + }, + repair_material = "mcl_core:iron_ingot", + cook_material = "mcl_core:iron_nugget", +}) + +mcl_armor.register_set({ + name = "iron", + description = "Iron", + durability = 240, + enchantability = 9, + points = { + head = 2, + torso = 6, + legs = 5, + feet = 2, + }, + craft_material = "mcl_core:iron_ingot", + cook_material = "mcl_core:iron_nugget", +}) + +mcl_armor.register_set({ + name = "diamond", + description = "Diamond", + durability = 528, + enchantability = 10, + points = { + head = 3, + torso = 8, + legs = 6, + feet = 3, + }, + toughness = 2, + craft_material = "mcl_core:diamond", +}) + +mcl_armor.register_protection_enchantment({ + id = "projectile_protection", + name = S("Projectile Protection"), + description = S("Reduces projectile damage."), + power_range_table = {{1, 16}, {11, 26}, {21, 36}, {31, 46}, {41, 56}}, + incompatible = {blast_protection = true, fire_protection = true, protection = true}, + factor = 2, + damage_flag = "is_projectile", +}) + +mcl_armor.register_protection_enchantment({ + id = "blast_protection", + name = S("Blast Protection"), + description = S("Reduces explosion damage and knockback."), + power_range_table = {{5, 13}, {13, 21}, {21, 29}, {29, 37}}, + weight = 2, + incompatible = {fire_protection = true, protection = true, projectile_protection = true}, + factor = 2, + damage_flag = "is_explosion", +}) + +mcl_armor.register_protection_enchantment({ + id = "fire_protection", + name = S("Fire Protection"), + description = S("Reduces fire damage."), + power_range_table = {{5, 13}, {13, 21}, {21, 29}, {29, 37}}, + incompatible = {blast_protection = true, protection = true, projectile_protection = true}, + factor = 2, + damage_flag = "is_fire", +}) + +mcl_armor.register_protection_enchantment({ + id = "protection", + name = S("Protection"), + description = S("Reduces most types of damage by 4% for each level."), + power_range_table = {{1, 12}, {12, 23}, {23, 34}, {34, 45}}, + incompatible = {blast_protection = true, fire_protection = true, projectile_protection = true}, + factor = 1, +}) + +mcl_armor.register_protection_enchantment({ + id = "feather_falling", + name = S("Feather Falling"), + description = S("Reduces fall damage."), + power_range_table = {{5, 11}, {11, 17}, {17, 23}, {23, 29}}, + factor = 3, + primary = {combat_armor_feet = true}, + damage_type = "fall", +}) + +-- requires engine change +--[[mcl_enchanting.enchantments.aqua_affinity = { + name = S("Aqua Affinity"), + max_level = 1, + primary = {armor_head = true}, + secondary = {}, + disallow = {non_combat_armor = true}, + incompatible = {}, + weight = 2, + description = S("Increases underwater mining speed."), + curse = false, + on_enchant = function() end, + requires_tool = false, + treasure = false, + power_range_table = {{1, 41}}, + inv_combat_tab = true, + inv_tool_tab = false, +}]]-- + +mcl_enchanting.enchantments.curse_of_binding = { + name = S("Curse of Binding"), + max_level = 1, + primary = {}, + secondary = {armor_head = true, armor_torso = true, armor_legs = true, armor_feet = true}, + disallow = {}, + incompatible = {}, + weight = 1, + description = S("Item cannot be removed from armor slots except due to death, breaking or in Creative Mode."), + curse = true, + on_enchant = function() end, + requires_tool = false, + treasure = true, + power_range_table = {{25, 50}}, + inv_combat_tab = true, + inv_tool_tab = false, +} + +mcl_enchanting.enchantments.thorns = { + name = S("Thorns"), + max_level = 3, + primary = {combat_armor_chestplate = true}, + secondary = {combat_armor = true}, + disallow = {}, + incompatible = {}, + weight = 1, + description = S("Reflects some of the damage taken when hit, at the cost of reducing durability with each proc."), + curse = false, + on_enchant = function() end, + requires_tool = false, + treasure = false, + power_range_table = {{10, 61}, {30, 71}, {50, 81}}, + inv_combat_tab = true, + inv_tool_tab = false, +} + +-- Elytra + +minetest.register_tool("mcl_armor:elytra", { + description = S("Elytra"), + _doc_items_longdesc = mcl_armor.longdesc, + _doc_items_usagehelp = mcl_armor.usage, + inventory_image = "mcl_armor_inv_elytra.png", + groups = {armor = 1, non_combat_armor = 1, armor_torso = 1, non_combat_torso = 1, mcl_armor_uses = 10}, + sounds = { + _mcl_armor_equip = "mcl_armor_equip_leather", + _mcl_armor_unequip = "mcl_armor_unequip_leather", + }, + on_place = mcl_armor.equip_on_use, + on_secondary_use = mcl_armor.equip_on_use, + _mcl_armor_element = "torso", + _mcl_armor_texture = "mcl_armor_elytra.png" +}) diff --git a/mods/ITEMS/mcl_armor_stand/init.lua b/mods/ITEMS/mcl_armor_stand/init.lua index c451b6de1..870d567fc 100644 --- a/mods/ITEMS/mcl_armor_stand/init.lua +++ b/mods/ITEMS/mcl_armor_stand/init.lua @@ -1,84 +1,41 @@ local S = minetest.get_translator("mcl_armor_stand") -local elements = {"head", "torso", "legs", "feet"} - -local function get_stand_object(pos) - local object = nil - local objects = minetest.get_objects_inside_radius(pos, 0.5) or {} - for _, obj in pairs(objects) do - local ent = obj:get_luaentity() - if ent then - if ent.name == "mcl_armor_stand:armor_entity" then - -- Remove duplicates - if object then - obj:remove() - else - object = obj - end - end - end - end - return object +-- Spawn a stand entity +local function spawn_stand_entity(pos, node) + local luaentity = minetest.add_entity(pos, "mcl_armor_stand:armor_entity"):get_luaentity() + luaentity:update_rotation(node or minetest.get_node(pos)) + return luaentity end -local function update_entity(pos) - local node = minetest.get_node(pos) - local object = get_stand_object(pos) - if object then - if not string.find(node.name, "mcl_armor_stand:") then - object:remove() - return +-- Find a stand entity or spawn one +local function get_stand_entity(pos, node) + for _, obj in ipairs(minetest.get_objects_inside_radius(pos, 0)) do + local luaentity = obj:get_luaentity() + if luaentity and luaentity.name == "mcl_armor_stand:armor_entity" then + return luaentity end - else - object = minetest.add_entity(pos, "mcl_armor_stand:armor_entity") end - if object then - local texture = "blank.png" - local textures = {} - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local yaw = 0 - if inv then - for _, element in pairs(elements) do - local stack = inv:get_stack("armor_"..element, 1) - if stack:get_count() == 1 then - local item = stack:get_name() or "" - if minetest.registered_aliases[item] then - item = minetest.registered_aliases[item] - end - local def = stack:get_definition() or {} - local groups = def.groups or {} - if groups["armor_"..element] then - local texture = def.texture or item:gsub("%:", "_") - table.insert(textures, texture..".png") - end - end - end + return spawn_stand_entity(pos, node) +end + +-- Migrate the old inventory format +local function migrate_inventory(inv) + inv:set_size("armor", 5) + local lists = inv:get_lists() + for name, element in pairs(mcl_armor.elements) do + local listname = "armor_" .. name + local list = lists[listname] + if list then + inv:set_stack("armor", element.index, list[1]) + inv:set_size(listname, 0) end - if #textures > 0 then - texture = table.concat(textures, "^") - end - if node.param2 then - local rot = node.param2 % 4 - if rot == 1 then - yaw = 3 * math.pi / 2 - elseif rot == 2 then - yaw = math.pi - elseif rot == 3 then - yaw = math.pi / 2 - end - end - object:set_yaw(yaw) - object:set_properties({textures={texture}}) end end --- Drop all armor of the armor stand on the ground -local drop_armor = function(pos) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - for _, element in pairs(elements) do - local stack = inv:get_stack("armor_"..element, 1) +-- Drop all armor on the ground when it got destroyed +local function drop_inventory(pos) + local inv = minetest.get_meta(pos):get_inventory() + for _, stack in pairs(inv:get_list("armor")) do if not stack:is_empty() then local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} minetest.add_item(p, stack) @@ -111,136 +68,26 @@ minetest.register_node("mcl_armor_stand:armor_stand", { _mcl_hardness = 2, sounds = mcl_sounds.node_sound_wood_defaults(), on_construct = function(pos) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - for _, element in pairs(elements) do - inv:set_size("armor_"..element, 1) - end + spawn_stand_entity(pos) + end, + on_destruct = function(pos) + drop_inventory(pos) end, - -- Drop all armor on the ground when it got destroyed - on_destruct = drop_armor, - -- Put piece of armor on armor stand, or take one away on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local protname = clicker:get_player_name() + if minetest.is_protected(pos, protname) then minetest.record_protection_violation(pos, protname) return itemstack end - local inv = minetest.get_inventory({type = "node", pos = pos}) - if not inv then - return itemstack - end - - -- Check if player wields armor - local name = itemstack:get_name() - local list - for e=1, #elements do - local g = minetest.get_item_group(name, "armor_" .. elements[e]) - if g ~= nil and g ~= 0 then - list = "armor_" .. elements[e] - break - end - end - -- If player wields armor, put it on armor stand - local wielditem = clicker:get_wielded_item() - if list then - -- ... but only if the slot is free - local single_item = ItemStack(itemstack) - single_item:set_count(1) - if inv:is_empty(list) then - inv:add_item(list, single_item) - armor:play_equip_sound(single_item, nil, pos) - update_entity(pos) - itemstack:take_item() - return itemstack - end - end - - -- Take armor from stand if player has a free hand or wields the same armor type (if stackable) - for e=1, #elements do - local stand_armor = inv:get_stack("armor_" .. elements[e], 1) - if not stand_armor:is_empty() then - local pinv = clicker:get_inventory() - local taken = false - -- Empty hand - if wielditem:get_name() == "" then - pinv:set_stack("main", clicker:get_wield_index(), stand_armor) - taken = true - -- Stackable armor type (if not already full). This is the case for e.g. mob heads. - -- This is done purely for convenience. - elseif (wielditem:get_name() == stand_armor:get_name() and wielditem:get_count() < wielditem:get_stack_max()) then - wielditem:set_count(wielditem:get_count()+1) - pinv:set_stack("main", clicker:get_wield_index(), wielditem) - taken = true - end - if taken then - armor:play_equip_sound(stand_armor, nil, pos, true) - stand_armor:take_item() - inv:set_stack("armor_" .. elements[e], 1, stand_armor) - end - update_entity(pos) - return clicker:get_wielded_item() - end - end - update_entity(pos) - return itemstack - end, - after_place_node = function(pos) - minetest.add_entity(pos, "mcl_armor_stand:armor_entity") - end, - allow_metadata_inventory_take = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - else - return stack:get_count() - end - end, - allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local name = player:get_player_name() - if minetest.is_protected(pos, name) then - minetest.record_protection_violation(pos, name) - return 0 - end - local def = stack:get_definition() or {} - local groups = def.groups or {} - if groups[listname] then - return 1 - end - return 0 - end, - allow_metadata_inventory_move = function() - return 0 - end, - on_metadata_inventory_put = function(pos) - update_entity(pos) - end, - on_metadata_inventory_take = function(pos) - update_entity(pos) - end, - after_destruct = function(pos) - update_entity(pos) - end, - on_blast = function(pos, _, do_drop) - local object = get_stand_object(pos) - if object then - object:remove() - end - minetest.after(1, function(pos) - update_entity(pos) - end, pos) - minetest.remove_node(pos) - if do_drop then - minetest.add_item(pos, "mcl_armor_stand:armor_stand") - end + return mcl_armor.equip(itemstack, get_stand_entity(pos, node).object, true) end, on_rotate = function(pos, node, user, mode) if mode == screwdriver.ROTATE_FACE then node.param2 = (node.param2 + 1) % 4 minetest.swap_node(pos, node) - update_entity(pos) + get_stand_entity(pos, node):update_rotation(node) return true end return false @@ -248,50 +95,44 @@ minetest.register_node("mcl_armor_stand:armor_stand", { }) minetest.register_entity("mcl_armor_stand:armor_entity", { - physical = true, - visual = "mesh", - mesh = "3d_armor_entity.obj", - visual_size = {x=1, y=1}, - collisionbox = {-0.1,-0.4,-0.1, 0.1,1.3,0.1}, - pointable = false, - textures = {"blank.png"}, - pos = nil, - timer = 0, + initial_properties = { + physical = true, + visual = "mesh", + mesh = "3d_armor_entity.obj", + visual_size = {x=1, y=1}, + collisionbox = {-0.1,-0.4,-0.1, 0.1,1.3,0.1}, + pointable = false, + textures = {"blank.png"}, + timer = 0, + static_save = false, + }, on_activate = function(self) - local pos = self.object:get_pos() - self.object:set_armor_groups({immortal=1}) - if pos then - self.pos = vector.round(pos) - update_entity(pos) - end + self.object:set_armor_groups({immortal = 1}) + self.node_pos = vector.round(self.object:get_pos()) + self.inventory = minetest.get_meta(self.node_pos):get_inventory() + migrate_inventory(self.inventory) + mcl_armor.update(self.object) end, on_step = function(self, dtime) - if not self.pos then - return - end - self.timer = self.timer + dtime - if self.timer > 1 then - self.timer = 0 - local pos = self.object:get_pos() - if pos then - if vector.equals(vector.round(pos), self.pos) then - return - end - end - update_entity(self.pos) + if minetest.get_node(self.node_pos).name ~= "mcl_armor_stand:armor_stand" then self.object:remove() end end, + update_armor = function(self, info) + self.object:set_properties({textures = {info.texture}}) + end, + update_rotation = function(self, node) + self.object:set_yaw(minetest.dir_to_yaw(minetest.facedir_to_dir(node.param2))) + end, }) --- FIXME: Armor helper entity can get destroyed by /clearobjects minetest.register_lbm({ label = "Respawn armor stand entities", name = "mcl_armor_stand:respawn_entities", nodenames = {"mcl_armor_stand:armor_stand"}, run_at_every_load = true, action = function(pos, node) - update_entity(pos, node) + spawn_stand_entity(pos, node) end, }) @@ -304,7 +145,6 @@ minetest.register_craft({ } }) - -- Legacy handling minetest.register_alias("3d_armor_stand:armor_stand", "mcl_armor_stand:armor_stand") minetest.register_entity(":3d_armor_stand:armor_entity", { diff --git a/mods/ITEMS/mcl_armor_stand/models/3d_armor_entity.obj b/mods/ITEMS/mcl_armor_stand/models/3d_armor_entity.obj index 052f69255..37bc521e9 100644 --- a/mods/ITEMS/mcl_armor_stand/models/3d_armor_entity.obj +++ b/mods/ITEMS/mcl_armor_stand/models/3d_armor_entity.obj @@ -1,79 +1,132 @@ -# Blender v2.73 (sub 0) OBJ File: '3d_armor_entity_3.blend' +# Blender v2.92.0 OBJ File: '' # www.blender.org mtllib 3d_armor_entity.mtl +o Cube +v 1.000000 1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 -1.000000 -1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +vt 0.625000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.125000 0.500000 +vt 0.375000 0.500000 +vt 0.125000 0.750000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +usemtl Material +s off +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/4/2 7/6/2 8/7/2 +f 8/8/3 7/9/3 5/10/3 6/11/3 +f 6/12/4 2/13/4 4/5/4 8/14/4 +f 2/13/5 1/1/5 3/4/5 4/5/5 +f 6/11/6 5/10/6 1/1/6 2/13/6 o Player_Cube -v 2.200000 9.763893 1.200000 -v 2.200000 9.763893 -1.200000 +v 2.200000 9.763893 1.200001 v 2.200000 2.663871 1.200000 v 2.200000 2.663871 -1.200000 +v 2.200000 9.763893 -1.200000 v -2.200000 9.763893 -1.200000 -v -2.200000 9.763893 1.200000 -v -2.200000 2.663871 -1.200000 +v -2.200000 9.763893 1.200001 v -2.200000 2.663871 1.200000 -v 2.300000 13.863962 2.300000 -v 2.300000 13.863962 -2.300000 +v -2.200000 2.663871 -1.200000 +v 2.300000 13.863962 2.300001 v 2.300000 9.263885 2.300000 -v 2.300000 9.263885 -2.300000 -v -2.300000 13.863962 -2.300000 -v -2.300000 13.863962 2.300000 -v -2.300000 9.263885 -2.300000 +v 2.300000 9.263885 -2.299999 +v 2.300000 13.863962 -2.299999 +v -2.300000 13.863962 -2.299999 +v -2.300000 13.863962 2.300001 v -2.300000 9.263885 2.300000 +v -2.300000 9.263885 -2.299999 v -2.322686 2.473175 -1.300000 v -2.322686 2.473175 1.300000 v -4.713554 2.682348 1.300000 v -4.713554 2.682348 -1.300000 -v -1.686446 9.745432 -1.300000 -v -1.686446 9.745432 1.300000 +v -4.077313 9.954605 -1.299999 v -4.077313 9.954605 1.300000 -v -4.077313 9.954605 -1.300000 -v 4.077313 9.954605 -1.300000 -v 4.077313 9.954605 1.300000 +v -1.686446 9.745432 1.300000 +v -1.686446 9.745432 -1.299999 v 1.686446 9.745432 1.300000 -v 1.686446 9.745432 -1.300000 -v 4.713554 2.682348 -1.300000 -v 4.713554 2.682348 1.300000 v 2.322686 2.473175 1.300000 +v 4.713554 2.682348 1.300000 +v 4.077313 9.954605 1.300000 +v 1.686446 9.745432 -1.299999 v 2.322686 2.473175 -1.300000 +v 4.077313 9.954605 -1.299999 +v 4.713554 2.682348 -1.300000 +v 2.538733 2.980834 -1.210000 v 0.139099 2.938947 -1.200000 v 0.139099 2.938947 1.200000 -v 0.261266 -4.059988 1.200000 -v 0.261266 -4.059988 -1.200000 -v 2.660901 -4.018101 1.190000 -v 2.660901 -4.018101 -1.210000 v 2.538733 2.980834 1.190000 -v 2.538733 2.980834 -1.210000 -v -0.139099 2.938947 -1.200000 -v -0.139099 2.938947 1.200000 -v -0.261266 -4.059988 1.200000 -v -0.261266 -4.059988 -1.200000 +v 0.261266 -4.059988 -1.200000 +v 2.660901 -4.018101 -1.210000 +v 2.660901 -4.018101 1.190000 +v 0.261266 -4.059988 1.200000 v -2.538734 2.980834 -1.210000 v -2.538734 2.980834 1.190000 +v -0.139099 2.938947 1.200000 +v -0.139099 2.938947 -1.200000 +v -0.261266 -4.059988 1.200000 +v -0.261266 -4.059988 -1.200000 v -2.660901 -4.018101 -1.210000 v -2.660901 -4.018101 1.190000 +v 0.000000 -4.387500 -1.400000 +v 0.000000 -4.387500 1.400000 v -2.799999 -4.387500 1.390000 v -2.799999 -4.387500 -1.410000 v -2.800000 -0.812499 1.390000 v -2.800000 -0.812499 -1.410000 -v -0.000000 -4.387500 -1.400000 -v -0.000000 -4.387500 1.400000 -v -0.000000 -0.812499 1.400000 -v -0.000000 -0.812499 -1.400000 -v 2.800000 -0.812499 -1.410000 -v 2.800000 -0.812499 1.390000 -v 2.799999 -4.387500 -1.410000 -v 2.799999 -4.387500 1.390000 +v 0.000000 -0.812499 1.400000 +v 0.000000 -0.812499 -1.400000 +v 0.000000 -0.812499 -1.400000 v 0.000000 -4.387500 -1.400000 v 0.000000 -4.387500 1.400000 v 0.000000 -0.812499 1.400000 -v 0.000000 -0.812499 -1.400000 -v 2.267006 13.830965 2.267006 -v 2.267006 13.830965 -2.267006 +v 2.800000 -0.812499 -1.410000 +v 2.799999 -4.387500 -1.410000 +v 2.799999 -4.387500 1.390000 +v 2.800000 -0.812499 1.390000 +v 2.267006 13.830965 2.267007 +v 2.267006 13.830965 -2.267005 +v 2.267006 9.296881 -2.267005 v 2.267006 9.296881 2.267006 -v 2.267006 9.296881 -2.267006 -v -2.267006 13.830965 -2.267006 -v -2.267006 13.830965 2.267006 -v -2.267006 9.296881 -2.267006 +v -2.267006 13.830965 -2.267005 +v -2.267006 13.830965 2.267007 +v -2.267006 9.296881 -2.267005 v -2.267006 9.296881 2.267006 +v -4.168111 10.060661 1.681621 +v 1.741822 -5.305762 4.169018 +v 1.718504 -5.438008 3.407457 +v -6.641035 -3.963995 3.407457 +v 4.191429 8.586647 1.681621 +v -6.617718 -3.831752 4.169018 +v 4.168111 8.454401 0.920061 +v -4.191429 9.928415 0.920061 +v -4.191429 8.586648 1.681620 +v 6.617716 -3.831752 4.169018 +v 6.641035 -3.963997 3.407457 +v -1.718504 -5.438006 3.407457 +v 4.168111 10.060658 1.681621 +v -1.741822 -5.305762 4.169018 +v 4.191429 9.928414 0.920061 +v -4.168111 8.454404 0.920061 vt 0.250000 0.375000 vt 0.250000 0.000000 vt 0.312500 0.000000 @@ -81,6 +134,8 @@ vt 0.312500 0.375000 vt 0.437500 0.375000 vt 0.437500 0.500000 vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.375000 vt 0.562500 0.375000 vt 0.562500 0.500000 vt 0.437500 0.000000 @@ -97,97 +152,308 @@ vt 0.750000 1.000000 vt 0.625000 1.000000 vt 0.875000 0.750000 vt 0.875000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 0.750000 vt 0.750000 0.500000 +vt 0.875000 0.750000 vt 0.875000 0.500000 vt 1.000000 0.750000 vt 1.000000 0.500000 vt 0.750000 0.375000 +vt 0.750000 0.500000 vt 0.812500 0.500000 vt 0.812500 0.375000 vt 0.687500 0.375000 vt 0.687500 0.500000 +vt 0.750000 0.500000 +vt 0.750000 0.375000 +vt 0.687500 0.375000 +vt 0.625000 0.375000 +vt 0.625000 0.000000 vt 0.687500 0.000000 vt 0.750000 0.000000 +vt 0.687500 0.000000 +vt 0.812500 0.375000 vt 0.812500 0.000000 vt 0.875000 0.375000 vt 0.875000 0.000000 +vt 0.812500 0.375000 +vt 0.812500 0.000000 +vt 0.875000 0.000000 +vt 0.875000 0.375000 +vt 0.750000 0.375000 +vt 0.750000 0.000000 +vt 0.687500 0.375000 +vt 0.687500 0.000000 +vt 0.687500 0.375000 +vt 0.687500 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.375000 +vt 0.750000 0.500000 +vt 0.687500 0.500000 +vt 0.750000 0.375000 +vt 0.812500 0.375000 +vt 0.812500 0.500000 +vt 0.750000 0.500000 vt 0.125000 0.375000 vt 0.062500 0.375000 vt 0.062500 0.500000 vt 0.125000 0.500000 vt 0.187500 0.375000 +vt 0.125000 0.375000 +vt 0.125000 0.500000 vt 0.187500 0.500000 vt 0.000000 0.375000 vt 0.000000 0.000000 vt 0.062500 0.000000 +vt 0.062500 0.375000 +vt 0.250000 0.375000 +vt 0.250000 0.000000 +vt 0.187500 0.000000 +vt 0.187500 0.375000 +vt 0.125000 0.000000 +vt 0.062500 0.000000 +vt 0.187500 0.375000 vt 0.187500 0.000000 vt 0.125000 0.000000 -vt 0.437500 0.875000 -vt 0.437500 1.000000 -vt 0.375000 1.000000 -vt 0.375000 0.875000 -vt 0.250000 0.875000 -vt 0.312500 0.875000 -vt 0.312500 0.656250 -vt 0.250000 0.656250 -vt 0.500000 0.875000 -vt 0.437500 0.656250 -vt 0.500000 0.656250 -vt 0.375000 0.656250 -vt 0.312500 1.000000 -usemtl Armor +vt 0.125000 0.375000 +vt 0.125000 0.375000 +vt 0.125000 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.375000 +vt 0.187500 0.375000 +vt 0.125000 0.375000 +vt 0.125000 0.000000 +vt 0.187500 0.000000 +vt 0.062500 0.000000 +vt 0.125000 0.000000 +vt 0.250000 0.375000 +vt 0.187500 0.375000 +vt 0.187500 0.000000 +vt 0.250000 0.000000 +vt 0.000000 0.375000 +vt 0.062500 0.375000 +vt 0.062500 0.000000 +vt 0.000000 0.000000 +vt 0.187500 0.375000 +vt 0.187500 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.375000 +vt 0.381250 0.832812 +vt 0.381250 0.845312 +vt 0.375000 0.845312 +vt 0.375000 0.832812 +vt 0.362500 0.832812 +vt 0.368750 0.832812 +vt 0.368750 0.810938 +vt 0.362500 0.810938 +vt 0.387500 0.832812 +vt 0.381250 0.832812 +vt 0.381250 0.810938 +vt 0.387500 0.810938 +vt 0.375000 0.832812 +vt 0.368750 0.832812 +vt 0.368750 0.810938 +vt 0.375000 0.810938 +vt 0.381250 0.832812 +vt 0.375000 0.832812 +vt 0.375000 0.810938 +vt 0.381250 0.810938 +vt 0.375000 0.845312 +vt 0.368750 0.845312 +vt 0.381250 0.832812 +vt 0.381250 0.810938 +vt 0.375000 0.810938 +vt 0.375000 0.832812 +vt 0.375000 0.832812 +vt 0.375000 0.810938 +vt 0.368750 0.810938 +vt 0.368750 0.832812 +vt 0.387500 0.832812 +vt 0.387500 0.810938 +vt 0.381250 0.810938 +vt 0.381250 0.832812 +vt 0.362500 0.832812 +vt 0.362500 0.810938 +vt 0.368750 0.810938 +vt 0.368750 0.832812 +vt 0.381250 0.832812 +vt 0.375000 0.832812 +vt 0.375000 0.845312 +vt 0.381250 0.845312 +vt 0.368750 0.845312 +vt 0.375000 0.845312 +vt 0.500000 0.750000 +vt 0.625000 0.750000 +vt 0.625000 0.500000 +vt 0.500000 0.500000 +vt 0.750000 0.750000 +vt 0.625000 1.000000 +vt 0.750000 1.000000 +vt 0.875000 0.750000 +vt 0.750000 0.750000 +vt 0.750000 1.000000 +vt 0.875000 1.000000 +vt 0.750000 0.500000 +vt 0.875000 0.750000 +vt 0.875000 0.500000 +vt 1.000000 0.750000 +vt 1.000000 0.500000 +vt 0.032859 0.558649 +vt 0.032859 0.998468 +vt 0.362724 0.998468 +vt 0.362724 0.558649 +vt 0.032859 0.558649 +vt 0.362724 0.558649 +vt 0.362724 0.998468 +vt 0.032859 0.998468 +vt 0.039157 0.992309 +vt 0.039157 0.656118 +vt 0.060169 0.656118 +vt 0.060169 0.992309 +vt -0.003415 0.501261 +vt 0.368238 0.501261 +vt 0.368238 0.563203 +vt -0.003415 0.563203 +vt 0.368238 0.996797 +vt -0.003415 0.996797 +vt -0.003415 0.934855 +vt 0.368238 0.934855 +vt 0.394691 0.498800 +vt 0.394691 0.994336 +vt 0.363720 0.994336 +vt 0.363720 0.498800 +vt 0.032859 0.998468 +vt 0.032859 0.558649 +vt 0.362724 0.558649 +vt 0.362724 0.998468 +vt 0.032859 0.998468 +vt 0.362724 0.998468 +vt 0.362724 0.558649 +vt 0.032859 0.558649 +vt 0.039157 0.656118 +vt 0.039157 0.992309 +vt 0.060169 0.992309 +vt 0.060169 0.656118 +vt -0.003415 0.996797 +vt 0.368238 0.996797 +vt 0.368238 0.934855 +vt -0.003415 0.934855 +vt 0.368238 0.501261 +vt -0.003415 0.501261 +vt -0.003415 0.563203 +vt 0.368238 0.563203 +vt 0.394691 0.994336 +vt 0.394691 0.498800 +vt 0.363720 0.498800 +vt 0.363720 0.994336 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn -0.0872 -0.9962 0.0000 +vn 0.0872 0.9962 0.0000 +vn -0.9962 0.0872 0.0000 +vn 0.9962 -0.0872 0.0000 +vn -0.9962 -0.0872 0.0000 +vn 0.9962 0.0872 0.0000 +vn -0.0872 0.9962 0.0000 +vn 0.0872 -0.9962 0.0000 +vn -0.0175 0.9998 0.0000 +vn 0.0175 -0.9998 0.0000 +vn 0.9998 0.0175 0.0000 +vn 0.0042 0.0001 1.0000 +vn -0.0042 -0.0001 -1.0000 +vn -0.9998 -0.0175 0.0000 +vn 0.0175 0.9998 0.0000 +vn 0.9998 -0.0175 0.0000 +vn 0.0042 -0.0001 -1.0000 +vn -0.0042 0.0001 1.0000 +vn -0.9998 0.0175 0.0000 +vn -0.0175 -0.9998 0.0000 +vn -0.0036 -0.0000 1.0000 +vn 0.0036 0.0000 -1.0000 +vn -0.0036 0.0000 -1.0000 +vn 0.0036 -0.0000 1.0000 +vn 0.0302 0.1710 0.9848 +vn -0.0302 -0.1710 -0.9848 +vn 0.1710 0.9698 -0.1737 +vn 0.9848 -0.1736 0.0000 +vn -0.9848 0.1736 -0.0000 +vn -0.1710 -0.9698 0.1736 +vn -0.0302 0.1710 0.9848 +vn 0.0302 -0.1710 -0.9848 +vn -0.1710 0.9698 -0.1736 +vn 0.9848 0.1736 0.0000 +vn -0.9848 -0.1736 -0.0000 +vn 0.1710 -0.9698 0.1736 +usemtl None s off -f 1/1 3/2 4/3 2/4 -f 5/5 6/6 1/7 2/4 -f 8/6 7/5 4/8 3/9 -f 5/5 2/4 4/3 7/10 -f 7/10 8/11 6/12 5/5 -f 8/11 3/13 1/14 6/12 -f 9/15 11/16 12/17 10/18 -f 13/19 14/20 9/21 10/18 -f 12/22 11/23 16/20 15/19 -f 13/19 10/18 12/17 15/24 -f 14/22 13/19 15/24 16/25 -f 9/26 14/22 16/25 11/27 -f 17/28 18/24 19/29 20/30 -f 24/31 23/32 22/24 21/28 -f 23/31 24/14 20/13 19/33 -f 24/31 21/28 17/34 20/33 -f 21/28 22/30 18/35 17/34 -f 22/30 23/36 19/37 18/35 -f 27/30 31/35 30/37 26/36 -f 28/28 32/34 31/35 27/30 -f 25/31 29/33 32/34 28/28 -f 26/31 30/33 29/13 25/14 -f 25/31 28/28 27/24 26/32 -f 32/28 29/30 30/29 31/24 -f 40/38 33/39 34/40 39/41 -f 36/42 38/38 37/41 35/43 -f 39/44 37/45 38/46 40/39 -f 34/1 35/2 37/47 39/42 -f 40/38 38/48 36/46 33/39 -f 33/42 36/47 35/48 34/38 -f 45/38 46/41 42/40 41/39 -f 41/42 42/38 43/48 44/47 -f 45/38 41/39 44/46 47/48 -f 42/1 46/42 48/47 43/2 -f 46/44 45/39 47/46 48/45 -f 44/42 43/43 48/41 47/38 -f 53/49 54/50 49/51 50/52 -f 51/53 52/54 50/55 49/56 -f 55/57 51/49 49/58 54/59 -f 52/52 56/54 53/55 50/60 -f 56/49 55/52 54/60 53/58 -f 52/52 51/51 55/61 56/54 -f 64/49 61/58 62/60 63/52 -f 57/52 59/60 61/55 64/54 -f 63/57 62/59 60/58 58/49 -f 58/53 60/56 59/55 57/54 -f 61/49 59/52 60/51 62/50 -f 57/52 64/54 63/61 58/51 -f 65/15 66/18 68/17 67/16 -f 69/19 66/18 65/21 70/20 -f 68/22 71/19 72/20 67/23 -f 69/19 71/24 68/17 66/18 -f 70/22 72/25 71/24 69/19 -f 65/26 67/27 72/25 70/22 +f 9/15/7 10/16/7 11/17/7 12/18/7 +f 13/19/8 14/20/8 9/21/8 12/18/8 +f 15/22/9 16/23/9 11/24/9 10/25/9 +f 13/19/10 12/18/10 11/17/10 16/26/10 +f 16/26/11 15/27/11 14/28/11 13/19/11 +f 15/27/12 10/29/12 9/30/12 14/28/12 +f 17/31/7 18/32/7 19/33/7 20/34/7 +f 21/35/8 22/36/8 17/37/8 20/34/8 +f 19/38/9 18/39/9 23/40/9 24/41/9 +f 21/35/10 20/34/10 19/33/10 24/42/10 +f 22/43/11 21/35/11 24/42/11 23/44/11 +f 17/45/12 22/43/12 23/44/12 18/46/12 +f 25/47/13 26/48/13 27/49/13 28/50/13 +f 29/51/14 30/52/14 31/53/14 32/54/14 +f 30/55/15 29/56/15 28/57/15 27/58/15 +f 29/51/10 32/54/10 25/59/10 28/60/10 +f 32/54/16 31/61/16 26/62/16 25/59/16 +f 31/61/12 30/63/12 27/64/12 26/62/12 +f 33/65/12 34/66/12 35/67/12 36/68/12 +f 37/69/17 38/70/17 34/66/17 33/65/17 +f 39/71/10 40/72/10 38/70/10 37/69/10 +f 36/73/18 35/74/18 40/75/18 39/76/18 +f 39/71/19 37/69/19 33/77/19 36/78/19 +f 38/79/20 40/80/20 35/81/20 34/82/20 +f 41/83/21 42/84/21 43/85/21 44/86/21 +f 45/87/22 46/88/22 47/89/22 48/90/22 +f 44/91/23 47/92/23 46/93/23 41/94/23 +f 43/95/24 48/96/24 47/97/24 44/98/24 +f 41/83/25 46/99/25 45/100/25 42/84/25 +f 42/101/26 45/102/26 48/103/26 43/104/26 +f 49/105/27 50/106/27 51/107/27 52/108/27 +f 52/109/28 51/110/28 53/111/28 54/112/28 +f 49/105/29 52/108/29 54/113/29 55/114/29 +f 51/115/30 50/116/30 56/117/30 53/118/30 +f 50/119/31 49/120/31 55/121/31 56/122/31 +f 54/123/32 53/124/32 56/125/32 55/126/32 +f 57/127/9 58/128/9 59/129/9 60/130/9 +f 61/131/11 62/132/11 60/133/11 59/134/11 +f 63/135/33 61/136/33 59/137/33 58/138/33 +f 62/139/34 64/140/34 57/141/34 60/142/34 +f 64/143/7 63/144/7 58/145/7 57/146/7 +f 62/139/8 61/147/8 63/148/8 64/140/8 +f 65/149/11 66/150/11 67/151/11 68/152/11 +f 69/153/35 70/154/35 66/155/35 65/156/35 +f 68/157/36 67/158/36 71/159/36 72/160/36 +f 72/161/7 71/162/7 70/163/7 69/164/7 +f 66/165/9 70/166/9 71/167/9 67/168/9 +f 69/153/8 65/156/8 68/169/8 72/170/8 +f 73/171/11 74/172/11 75/173/11 76/174/11 +f 77/175/9 74/172/9 73/176/9 78/177/9 +f 75/178/8 79/179/8 80/180/8 76/181/8 +f 77/175/12 79/182/12 75/173/12 74/172/12 +f 78/183/7 80/184/7 79/182/7 77/175/7 +f 73/185/10 76/186/10 80/184/10 78/183/10 +f 85/187/37 81/188/37 86/189/37 82/190/37 +f 87/191/38 83/192/38 84/193/38 88/194/38 +f 81/195/39 85/196/39 87/197/39 88/198/39 +f 85/199/40 82/200/40 83/201/40 87/202/40 +f 86/203/41 81/204/41 88/205/41 84/206/41 +f 82/207/42 86/208/42 84/209/42 83/210/42 +f 93/211/43 89/212/43 94/213/43 90/214/43 +f 95/215/44 91/216/44 92/217/44 96/218/44 +f 89/219/45 93/220/45 95/221/45 96/222/45 +f 93/223/46 90/224/46 91/225/46 95/226/46 +f 94/227/47 89/228/47 96/229/47 92/230/47 +f 90/231/48 94/232/48 92/233/48 91/234/48 diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr index 3bf65629b..d5077dc75 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.de.tr @@ -22,7 +22,7 @@ Magenta=magenta Orange Banner=Orange Banner Orange=orange Purple Banner=Violettes Banner -Purple=violett +Violet=violett Brown Banner=Braunes Banner Brown=braun Pink Banner=Rosa Banner diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr index ee8772728..cadf37c37 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.fr.tr @@ -46,7 +46,7 @@ You can copy the pattern of a banner by placing two banners of the same color in @1 Per Bend Sinister=Division oblique (@1) @1 Flower Charge=Figure Fleur (@1) @1 Gradient=Dégradé (@1) -@1 Base Gradient=Dégradé de couleurs (@1) +@1 Base Gradient=Dégradé de couleurs (@1) @1 Per Fess Inverted=Division inverse (@1) @1 Per Fess=Division (@1) @1 Per Pale=Division (@1) @@ -73,5 +73,5 @@ You can copy the pattern of a banner by placing two banners of the same color in @1 Base Indented=Pied dentelé (@1)t @1 Chief Indented=Tête dentelée (@1) And one additional layer=Et une couche supplémentaire -And @1 additional layer(s)=Et @1 couche(s) supplémentaire(s) +And @1 additional layers=Et @1 couches supplémentaires Paintable decoration=Décoration à peindre diff --git a/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr b/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr index 01993ae2f..a6cee5a67 100644 --- a/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr +++ b/mods/ITEMS/mcl_banners/locale/mcl_banners.ru.tr @@ -73,5 +73,5 @@ You can copy the pattern of a banner by placing two banners of the same color in @1 Base Indented=@1 Инвертированный основной @1 Chief Indented=@1 Инвертированный главный And one additional layer=И один индивидуальный слой -And @1 additional layer(s)=И @1 дополнительный(х) слой(я,ёв) +And @1 additional layers=И @1 дополнительныйх слойёв Paintable decoration=Художественное украшение diff --git a/mods/ITEMS/mcl_banners/locale/template.txt b/mods/ITEMS/mcl_banners/locale/template.txt index 944a1a7ac..cb8ec0b0c 100644 --- a/mods/ITEMS/mcl_banners/locale/template.txt +++ b/mods/ITEMS/mcl_banners/locale/template.txt @@ -73,5 +73,5 @@ You can copy the pattern of a banner by placing two banners of the same color in @1 Base Indented= @1 Chief Indented= And one additional layer= -And @1 additional layer(s)= +And @1 additional layers= Paintable decoration= diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index a2df1bdf3..c0b25b1c5 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -1,23 +1,95 @@ local S = minetest.get_translator("mcl_beds") -local function destruct_bed(pos, oldnode) - local node = oldnode or minetest.get_node(pos) +local minetest_get_node = minetest.get_node +local minetest_get_node_or_nil = minetest.get_node_or_nil +local minetest_remove_node = minetest.remove_node +local minetest_facedir_to_dir = minetest.facedir_to_dir +local minetest_add_item = minetest.add_item +local vector_add = vector.add +local vector_subtract = vector.subtract + +local function get_bed_next_node(pos, node) + local node = node or minetest_get_node_or_nil(pos) if not node then return end - local dir = minetest.facedir_to_dir(node.param2) - local pos2, node2 + + local dir = minetest_facedir_to_dir(node.param2) + + local pos2, bottom if string.sub(node.name, -4) == "_top" then - pos2 = vector.subtract(pos, dir) - node2 = minetest.get_node(pos2) - if node2 and string.sub(node2.name, -7) == "_bottom" then - minetest.remove_node(pos2) - end - minetest.check_for_falling(pos) - elseif string.sub(node.name, -7) == "_bottom" then - minetest.add_item(pos, node.name) - pos2 = vector.add(pos, dir) - node2 = minetest.get_node(pos2) + pos2 = vector_subtract(pos, dir) + else + pos2 = vector_add(pos, dir) + bottom = true + end + + local node2 = minetest_get_node(pos2) + return pos2, node2, bottom, dir +end + +local function rotate(pos, node, user, mode, new_param2) + if mode ~= screwdriver.ROTATE_FACE then + return false + end + + local p, node2, bottom = get_bed_next_node(pos, node) + if not node2 then return end + + local name = node2.name + if not minetest.get_item_group(name, "bed") == 2 or not node.param2 == node2.param2 then return false end + + if bottom then + name = string.sub(name, 1, -5) + else + name = string.sub(name, 1, -8) + end + + if minetest.is_protected(p, user:get_player_name()) then + minetest.record_protection_violation(p, user:get_player_name()) + return false + end + + local new_dir, newp = minetest_facedir_to_dir(new_param2) + if bottom then + newp = vector_add(pos, new_dir) + else + newp = vector_subtract(pos, new_dir) + end + + local node3 = minetest_get_node_or_nil(newp) + if not node3 then return false end + + local node_def = minetest.registered_nodes[node3.name] + if not node_def or not node_def.buildable_to then return false end + + if minetest.is_protected(newp, user:get_player_name()) then + minetest.record_protection_violation(newp, user:get_player_name()) + return false + end + + node.param2 = new_param2 + -- do not remove_node here - it will trigger destroy_bed() + minetest.swap_node(p, {name = "air"}) + minetest.swap_node(pos, node) + minetest.swap_node(newp, {name = name .. (bottom and "_top" or "_bottom"), param2 = new_param2}) + + return true +end + + +local function destruct_bed(pos, oldnode) + local node = oldnode or minetest_get_node_or_nil(pos) + if not node then return end + + local pos2, node2, bottom = get_bed_next_node(pos, oldnode) + + if bottom then + minetest_add_item(pos, node.name) if node2 and string.sub(node2.name, -4) == "_top" then - minetest.remove_node(pos2) + minetest_remove_node(pos2) + end + else + if node2 and string.sub(node2.name, -7) == "_bottom" then + minetest_remove_node(pos2) end end end @@ -94,7 +166,7 @@ function mcl_beds.register_bed(name, def) local under = pointed_thing.under -- Use pointed node's on_rightclick function first, if present - local node = minetest.get_node(under) + local node = minetest_get_node(under) if placer and not placer:get_player_control().sneak then if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack @@ -102,7 +174,7 @@ function mcl_beds.register_bed(name, def) end local pos - local undername = minetest.get_node(under).name + local undername = minetest_get_node(under).name if minetest.registered_items[undername] and minetest.registered_items[undername].buildable_to then pos = under else @@ -115,13 +187,13 @@ function mcl_beds.register_bed(name, def) return itemstack end - local node_def = minetest.registered_nodes[minetest.get_node(pos).name] + local node_def = minetest.registered_nodes[minetest_get_node(pos).name] if not node_def or not node_def.buildable_to then return itemstack end local dir = minetest.dir_to_facedir(placer:get_look_dir()) - local botpos = vector.add(pos, minetest.facedir_to_dir(dir)) + local botpos = vector_add(pos, minetest_facedir_to_dir(dir)) if minetest.is_protected(botpos, placer:get_player_name()) and not minetest.check_player_privs(placer, "protection_bypass") then @@ -129,7 +201,7 @@ function mcl_beds.register_bed(name, def) return itemstack end - local botdef = minetest.registered_nodes[minetest.get_node(botpos).name] + local botdef = minetest.registered_nodes[minetest_get_node(botpos).name] if not botdef or not botdef.buildable_to then return itemstack end @@ -152,38 +224,7 @@ function mcl_beds.register_bed(name, def) return itemstack end, - on_rotate = function(pos, node, user, mode, new_param2) - local dir = minetest.facedir_to_dir(node.param2) - local p = vector.add(pos, dir) - local node2 = minetest.get_node_or_nil(p) - if not node2 or not minetest.get_item_group(node2.name, "bed") == 2 or - not node.param2 == node2.param2 then - return false - end - if minetest.is_protected(p, user:get_player_name()) then - minetest.record_protection_violation(p, user:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then - return false - end - local newp = vector.add(pos, minetest.facedir_to_dir(new_param2)) - local node3 = minetest.get_node_or_nil(newp) - local node_def = node3 and minetest.registered_nodes[node3.name] - if not node_def or not node_def.buildable_to then - return false - end - if minetest.is_protected(newp, user:get_player_name()) then - minetest.record_protection_violation(newp, user:get_player_name()) - return false - end - node.param2 = new_param2 - -- do not remove_node here - it will trigger destroy_bed() - minetest.set_node(p, {name = "air"}) - minetest.set_node(pos, node) - minetest.set_node(newp, {name = name .. "_top", param2 = new_param2}) - return true - end, + on_rotate = rotate, }) local node_box_top, selection_box_top, collision_box_top @@ -217,7 +258,7 @@ function mcl_beds.register_bed(name, def) mcl_beds.on_rightclick(pos, clicker, true) return itemstack end, - on_rotate = false, + on_rotate = rotate, after_destruct = destruct_bed, }) diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 545b03be7..ecd749603 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -88,7 +88,7 @@ local function lay_down(player, pos, bed_pos, state, skip) end for _, other_pos in pairs(mcl_beds.bed_pos) do - if vector.distance(bed_pos, other_pos) < 0.1 then + if vector.distance(bed_pos2, other_pos) < 0.1 then return false, S("This bed is already occupied!") end end @@ -170,7 +170,7 @@ local function lay_down(player, pos, bed_pos, state, skip) mcl_beds.player[name] = 1 mcl_beds.pos[name] = pos - mcl_beds.bed_pos[name] = bed_pos + mcl_beds.bed_pos[name] = bed_pos2 player_in_bed = player_in_bed + 1 -- physics, eye_offset, etc player:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = 0, z = 0}) @@ -303,7 +303,11 @@ function mcl_beds.on_rightclick(pos, player, is_top) local dim = mcl_worlds.pos_to_dimension(pos) if dim == "nether" or dim == "end" then -- Bed goes BOOM in the Nether or End. + local node = minetest.get_node(pos) + local dir = minetest.facedir_to_dir(node.param2) + minetest.remove_node(pos) + minetest.remove_node(string.sub(node.name, -4) == "_top" and vector.subtract(pos, dir) or vector.add(pos, dir)) if explosions_mod then mcl_explosions.explode(pos, 5, {drop_chance = 1.0, fire = true}) end diff --git a/mods/ITEMS/mcl_books/init.lua b/mods/ITEMS/mcl_books/init.lua index 5101994e9..95b45e69e 100644 --- a/mods/ITEMS/mcl_books/init.lua +++ b/mods/ITEMS/mcl_books/init.lua @@ -147,8 +147,8 @@ minetest.register_on_player_receive_fields(function ( player, formname, fields ) local formspec = "size[8,9]".. header.. "background[-0.5,-0.5;9,10;mcl_books_book_bg.png]".. - "field[0.75,1;7.25,1;title;"..minetest.formspec_escape(minetest.colorize(mcl_colors.BLACK, S("Enter book title:")))..";]".. - "label[0.75,1.5;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("by @1", name))).."]".. + "field[0.75,1;7.25,1;title;"..minetest.formspec_escape(minetest.colorize("#000000", S("Enter book title:")))..";]".. + "label[0.75,1.5;"..minetest.formspec_escape(minetest.colorize("#404040", S("by @1", name))).."]".. "button_exit[0.75,7.95;3,1;sign;"..minetest.formspec_escape(S("Sign and Close")).."]".. "tooltip[sign;"..minetest.formspec_escape(S("Note: The book will no longer be editable after signing")).."]".. "button[4.25,7.95;3,1;cancel;"..minetest.formspec_escape(S("Cancel")).."]" diff --git a/mods/ITEMS/mcl_bows/arrow.lua b/mods/ITEMS/mcl_bows/arrow.lua index cddae0869..a6f0c13db 100644 --- a/mods/ITEMS/mcl_bows/arrow.lua +++ b/mods/ITEMS/mcl_bows/arrow.lua @@ -69,6 +69,7 @@ local ARROW_ENTITY={ _stuckrechecktimer=nil,-- An additional timer for periodically re-checking the stuck status of an arrow _stuckin=nil, --Position of node in which arow is stuck. _shooter=nil, -- ObjectRef of player or mob who shot it + _is_arrow = true, _viscosity=0, -- Viscosity of node the arrow is currently in _deflection_cooloff=0, -- Cooloff timer after an arrow deflection, to prevent many deflections in quick succession @@ -108,7 +109,7 @@ local damage_particles = function(pos, is_critical) end ARROW_ENTITY.on_step = function(self, dtime) - mcl_burning.tick(self.object, dtime) + mcl_burning.tick(self.object, dtime, self) self._time_in_air = self._time_in_air + .001 @@ -254,9 +255,6 @@ ARROW_ENTITY.on_step = function(self, dtime) -- Punch target object but avoid hurting enderman. if not lua or lua.name ~= "mobs_mc:enderman" then - if obj:is_player() and rawget(_G, "armor") and armor.last_damage_types then - armor.last_damage_types[obj:get_player_name()] = "projectile" - end if self._in_player == false then damage_particles(self.object:get_pos(), self._is_critical) end diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 45912384e..2257fcc5e 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -59,6 +59,7 @@ mcl_bows.shoot_arrow = function(arrow_item, pos, dir, yaw, shooter, power, damag obj:set_yaw(yaw-math.pi/2) local le = obj:get_luaentity() le._shooter = shooter + le._source_object = shooter le._damage = damage le._is_critical = is_critical le._startpos = pos diff --git a/mods/ITEMS/mcl_brewing/init.lua b/mods/ITEMS/mcl_brewing/init.lua index 78ccd8ed9..617929ff7 100644 --- a/mods/ITEMS/mcl_brewing/init.lua +++ b/mods/ITEMS/mcl_brewing/init.lua @@ -4,8 +4,8 @@ local function active_brewing_formspec(fuel_percent, brew_percent) return "size[9,8.75]".. "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png]".. - "label[4,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Brewing Stand"))).."]".. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[4,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Brewing Stand"))).."]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.75;9,1;]".. @@ -35,8 +35,8 @@ end local brewing_formspec = "size[9,8.75]".. "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png]".. - "label[4,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Brewing Stand"))).."]".. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[4,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Brewing Stand"))).."]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.75;9,1;]".. diff --git a/mods/ITEMS/mcl_brewing/mod.conf b/mods/ITEMS/mcl_brewing/mod.conf index 160319c93..2c27c979e 100644 --- a/mods/ITEMS/mcl_brewing/mod.conf +++ b/mods/ITEMS/mcl_brewing/mod.conf @@ -1,4 +1,4 @@ name = mcl_brewing author = bzoss -depends = mcl_init, mcl_formspec, mcl_sounds, mcl_potions, mcl_mobitems, mcl_colors +depends = mcl_init, mcl_formspec, mcl_sounds, mcl_potions, mcl_mobitems optional_depends = mcl_core, doc, screwdriver diff --git a/mods/ITEMS/mcl_cauldrons/init.lua b/mods/ITEMS/mcl_cauldrons/init.lua index f4356d27b..62c45170c 100644 --- a/mods/ITEMS/mcl_cauldrons/init.lua +++ b/mods/ITEMS/mcl_cauldrons/init.lua @@ -47,7 +47,7 @@ minetest.register_node("mcl_cauldrons:cauldron", { description = S("Cauldron"), _tt_help = S("Stores water"), _doc_items_longdesc = S("Cauldrons are used to store water and slowly fill up under rain."), - _doc_items_usagehelp = S("Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water."), + _doc_items_usagehelp = S("Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water."), wield_image = "mcl_cauldrons_cauldron.png", inventory_image = "mcl_cauldrons_cauldron.png", use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr index 72432b04c..fe1d9aa81 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.de.tr @@ -1,7 +1,7 @@ # textdomain: mcl_cauldron Cauldron=Kessel -Cauldrons are used to store water and slowly fill up under rain.=Kessel werden benutzt, um Wasser zu lagern, im Regen werden sie langsam aufgefüllt. -Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water.=Platzieren Sie einen Wassereinmer in den Kessel, um ihn mit Wasser zu füllen. Platzieren Sie einen leeren Eimer auf einen vollen Kessel, um das Wasser aufzusammeln. Platzieren Sie eine Wasserflasche in den Kessel, um ihn zu einem Drittel mit Wasser zu füllen. +Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Kessel werden benutzt, um Wasser zu lagern, im Regen werden sie langsam aufgefüllt. Kessel können auch verwendet werden, um Banner abzuwaschen. +Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Platzieren Sie einen Wassereinmer in den Kessel, um ihn mit Wasser zu füllen. Platzieren Sie einen leeren Eimer auf einen vollen Kessel, um das Wasser aufzusammeln. Platzieren Sie eine Wasserflasche in den Kessel, um ihn zu einem Drittel mit Wasser zu füllen. Benutzen Sie ein bemaltes Banner auf den Kessel, um die oberste Schicht abzuwaschen. Cauldron (1/3 Water)=Kessel (1/3 Wasser) Cauldron (2/3 Water)=Kessel (2/3 Wasser) Cauldron (3/3 Water)=Kessel (3/3 Wasser) diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr index 5f7f9fc31..9748e61b4 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_cauldrons.es.tr @@ -1,10 +1,10 @@ # textdomain: mcl_cauldron Cauldron=Caldera Cauldrons are used to store water and slowly fill up under rain.=Los calderos se usan para almacenar agua y llenarse lentamente bajo la lluvia. -Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water.=Coloque un cubo de agua en el caldero para llenarlo con agua. Coloque un cubo vacío en un caldero lleno para recuperar el agua. Coloque una botella de agua en el caldero para llenar el caldero hasta un tercio con agua. Coloque una botella de vidrio en un caldero con agua para recuperar un tercio del agua. +Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water.=Coloque un cubo de agua en el caldero para llenarlo con agua. Coloque un cubo vacío en un caldero lleno para recuperar el agua. Coloque una botella de agua en el caldero para llenar el caldero hasta un tercio con agua. Coloque una botella de vidrio en un caldero con agua para recuperar un tercio del agua. Cauldron (1/3 Water)=Caldera (1/3 de agua) Cauldron (2/3 Water)=Caldera (2/3 de agua) Cauldron (3/3 Water)=Caldera (3/3 de agua) Cauldron (1/3 River Water)=Caldera (1/3 de agua de río) Cauldron (2/3 River Water)=Caldera (2/3 de agua de río) -Cauldron (3/3 River Water)=Caldera (3/3 de agua de río) \ No newline at end of file +Cauldron (3/3 River Water)=Caldera (3/3 de agua de río) diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr index 03b0e9be8..a241c5cb0 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.fr.tr @@ -1,7 +1,7 @@ # textdomain: mcl_cauldron Cauldron=Chaudrons Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Les chaudrons sont utilisés pour stocker l'eau et se remplissent lentement sous la pluie. Ils peuvent également être utilisés pour laver les bannières. -Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Placez une marmite d'eau dans le chaudron pour le remplir d'eau. Placez un seau vide sur un chaudron plein pour récupérer l'eau. Placez une bouteille d'eau dans le chaudron pour remplir le chaudron au tiers avec de l'eau. Placez une bouteille en verre dans un chaudron avec de l'eau pour récupérer un tiers de l'eau. Utilisez une bannière blasonnée sur un chaudron avec de l'eau pour laver sa couche supérieure. +Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Placez une marmite d'eau dans le chaudron pour le remplir d'eau. Placez un seau vide sur un chaudron plein pour récupérer l'eau. Placez une bouteille d'eau dans le chaudron pour remplir le chaudron au tiers avec de l'eau. Placez une bouteille en verre dans un chaudron avec de l'eau pour récupérer un tiers de l'eau. Utilisez une bannière blasonnée sur un chaudron avec de l'eau pour laver sa couche supérieure. Cauldron (1/3 Water)=Chaudron (1/3 d'eau) Cauldron (2/3 Water)=Chaudron (2/3 d'eau) Cauldron (3/3 Water)=Chaudron (3/3 d'eau) diff --git a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr index ff43a5775..6ecae1025 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr +++ b/mods/ITEMS/mcl_cauldrons/locale/mcl_chaudrons.ru.tr @@ -1,7 +1,7 @@ # textdomain: mcl_cauldron Cauldron=Котёл Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Котлы используются для хранения воды и медленного наполнения под дождём. Они также могут использоваться для промывания флагов. -Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Попытайтесь поместить ведро воды в котёл, чтобы наполнить его водой. Попытка поместить пустое ведро приведёт к освобождению котла. Поместите в котёл бутылку воды, чтобы наполнить его на треть. +Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Попытайтесь поместить ведро воды в котёл, чтобы наполнить его водой. Попытка поместить пустое ведро приведёт к освобождению котла. Поместите в котёл бутылку воды, чтобы наполнить его на треть. Cauldron (1/3 Water)=Котёл (1/3 воды) Cauldron (2/3 Water)=Котёл (2/3 воды) Cauldron (3/3 Water)=Котёл (3/3 воды) diff --git a/mods/ITEMS/mcl_cauldrons/locale/template.txt b/mods/ITEMS/mcl_cauldrons/locale/template.txt index b4385631a..5e18f3283 100644 --- a/mods/ITEMS/mcl_cauldrons/locale/template.txt +++ b/mods/ITEMS/mcl_cauldrons/locale/template.txt @@ -1,7 +1,7 @@ # textdomain: mcl_cauldron Cauldron= Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.= -Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.= +Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.= Cauldron (1/3 Water)= Cauldron (2/3 Water)= Cauldron (3/3 Water)= diff --git a/mods/ITEMS/mcl_chests/init.lua b/mods/ITEMS/mcl_chests/init.lua index 05a6d1818..824530eb3 100644 --- a/mods/ITEMS/mcl_chests/init.lua +++ b/mods/ITEMS/mcl_chests/init.lua @@ -475,10 +475,10 @@ minetest.register_node(small_name, { minetest.show_formspec(clicker:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, "size[9,8.75]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, name)).."]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. mcl_formspec.get_itemslot_bg(0,0.5,9,3).. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. @@ -624,12 +624,12 @@ minetest.register_node(left_name, { minetest.show_formspec(clicker:get_player_name(), "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, "size[9,11.5]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, name)).."]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]".. mcl_formspec.get_itemslot_bg(0,0.5,9,3).. "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,3.5;9,3;]".. mcl_formspec.get_itemslot_bg(0,3.5,9,3).. - "label[0,7;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,7.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,7.5,9,3).. "list[current_player;main;0,10.75;9,1;]".. @@ -773,12 +773,12 @@ minetest.register_node("mcl_chests:"..basename.."_right", { "mcl_chests:"..canonical_basename.."_"..pos.x.."_"..pos.y.."_"..pos.z, "size[9,11.5]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, name)).."]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. "list[nodemeta:"..pos_other.x..","..pos_other.y..","..pos_other.z..";main;0,0.5;9,3;]".. mcl_formspec.get_itemslot_bg(0,0.5,9,3).. "list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,3.5;9,3;]".. mcl_formspec.get_itemslot_bg(0,3.5,9,3).. - "label[0,7;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,7;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,7.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,7.5,9,3).. "list[current_player;main;0,10.75;9,1;]".. @@ -986,10 +986,10 @@ minetest.register_node("mcl_chests:ender_chest", { }) local formspec_ender_chest = "size[9,8.75]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Ender Chest"))).."]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Ender Chest"))).."]".. "list[current_player;enderchest;0,0.5;9,3;]".. mcl_formspec.get_itemslot_bg(0,0.5,9,3).. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. @@ -1107,10 +1107,10 @@ local function formspec_shulker_box(name) name = S("Shulker Box") end return "size[9,8.75]".. - "label[0,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, name)).."]".. + "label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", name)).."]".. "list[current_name;main;0,0.5;9,3;]".. mcl_formspec.get_itemslot_bg(0,0.5,9,3).. - "label[0,4.0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. diff --git a/mods/ITEMS/mcl_chests/locale/template.txt b/mods/ITEMS/mcl_chests/locale/template.txt index d680c24c9..1d947184b 100644 --- a/mods/ITEMS/mcl_chests/locale/template.txt +++ b/mods/ITEMS/mcl_chests/locale/template.txt @@ -24,7 +24,7 @@ Red Shulker Box= Grey Shulker Box= Black Shulker Box= A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.= -To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents.= +To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.= Shulker Box= Large Chest= Inventory= diff --git a/mods/ITEMS/mcl_chests/mod.conf b/mods/ITEMS/mcl_chests/mod.conf index 609b1fff9..0ff5129ca 100644 --- a/mods/ITEMS/mcl_chests/mod.conf +++ b/mods/ITEMS/mcl_chests/mod.conf @@ -1,3 +1,3 @@ name = mcl_chests -depends = mcl_init, mcl_formspec, mcl_core, mcl_sounds, mcl_end, mesecons, mcl_colors +depends = mcl_init, mcl_formspec, mcl_core, mcl_sounds, mcl_end, mesecons optional_depends = doc, screwdriver diff --git a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr index 57ef530a0..3d90dd5ae 100644 --- a/mods/ITEMS/mcl_core/locale/mcl_core.de.tr +++ b/mods/ITEMS/mcl_core/locale/mcl_core.de.tr @@ -202,20 +202,39 @@ Stained glass is a decorative and mostly transparent block which comes in variou Stick=Stock Sticks are a very versatile crafting material; used in countless crafting recipes.=Stöcke sind ein vielseitiges Material, sie werden in zahllosen Fertigungsrezepten gebraucht. Stone=Stein +Stripped Acacia Log=Entrindeter Akazienstamm +Stripped Acacia Wood=Entrindetes Akazienholz +Stripped Birch Log=Entrindeter Birkenstamm +Stripped Birch Wood=Entrindetes Birkenholz +Stripped Dark Oak Log=Entrindeter Schwarzeichenstamm +Stripped Dark Oak Wood=Entrindetes Schwarzeichenholz +Stripped Jungle Log=Entrindeter Dschungelbaumstamm +Stripped Jungle Wood=Entrindetes Dschungelholz +Stripped Oak Log=Entrindeter Eichenstamm +Stripped Oak Wood=Entrindetes Eichenholz +Stripped Spruce Log=Entrindeter Fichtenstamm +Stripped Spruce Wood=Entrindetes Fichtenholz Stone Bricks=Steinziegel Sugar=Zucker Sugar Canes=Zuckerrohr Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=Zuckerrohr ist eine Pflanze, die in der Herstellung gebraucht wird. Zuckerrohr wird in der Nähe von Wasser bis zu 3 zusätzliche Blöcke wachsen lassen, wenn sie sich neben Wasser befinden und auf einem Grasblock, auf Erde, Sand, roten Sand, Podsol oder grobe Erde platziert wurden. Wird ein Zuckerrohr abgebrochen, werden alle verbundenen Zuckerrohrblöcke ebenfalls abbrechen. Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Zuckerrohr kann nur auf Zuckerrohr platziert werden und auf Blöcken, auf denen Zuckerrohr wachsen würde. Sugar comes from sugar canes and is used to make sweet foods.=Zucker kommt von Zuckerrohr und wird benutzt, um süße Lebensmittel zu machen. +The stripped trunk of an acacia tree.=Der entrindete Stamm einer Akazie. +The stripped trunk of an birch tree.=Der entrindete Stamm einer Birke. +The stripped trunk of an dark oak tree.=Der entrindete Stamm einer Schwarzeiche. +The stripped trunk of an jungle tree.=Der entrindete Stamm eines Dschungelbaums. +The stripped trunk of an oak tree.=Der entrindete Stamm einer Eiche. +The stripped trunk of an spruce tree.=Der entrindete Stamm einer Fichte. The trunk of a birch tree.=Der Baumstamm einer Birke. The trunk of a dark oak tree.=Der Baumstamm einer Schwarzeiche. The trunk of a jungle tree.=Der Baumstamm eines Dschungelbaums. The trunk of a spruce tree.=Der Baumstamm einer Fichte. The trunk of an acacia.=Der Baumstamm einer Akazie. The trunk of an oak tree.=Der Baumstamm einer Eiche. -This block consists of a couple of loose stones and can't support itself.=Diser Block besteht aus ein paar losen Steinchen und kann sich nicht selbst tragen. +This block consists of a couple of loose stones and can't support itself.=Dieser Block besteht aus ein paar losen Steinchen und kann sich nicht selbst tragen. This is a decorative block surrounded by the bark of a tree trunk.=Dies ist ein dekorativer Block, der von der Rinde eines Baumstamms umgeben ist. +This is a decorative block.=Dies ist ein dekorativer Block. This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.=Ein ganzer Block aus Schnee. Schnee von dieser Dicke wird üblicherweise in Gebieten extremer Kälte gefunden. This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.=Dies ist ein Teil eines Kaktus, der für gewöhnlich in trockenen Gebieten wächst, vorallem Wüsten. Im Laufe der Zeit werden Kakteen auf bis zu 3 Blöcke hoch auf Sand oder rotem Sand wachsen. Ein Kaktus verletzt Lebewesen, die ihn berühren, er richtet jede halbe Sekunden 1 Schaden an. Wenn ein Kaktusblock bricht, werden alle Kaktusblöcke darüber auch abbrechen. This stone contains pure gold, a rare metal.=Dieser Stein enthält pures Gold, ein seltenes Metall. @@ -255,3 +274,4 @@ Slows down movement=Verlangsamt die Fortbewegung 2×2 saplings @= large tree=2×2 Setzlinge @= großer Baum Grows on sand or dirt next to water=Wächst auf Sand oder Erde neben Wasser Stackable=Stapelbar +Needs soil and water to grow=Braucht Nährboden und Wasser zum wachsen diff --git a/mods/ITEMS/mcl_core/locale/template.txt b/mods/ITEMS/mcl_core/locale/template.txt index f988435a3..31320c1c7 100644 --- a/mods/ITEMS/mcl_core/locale/template.txt +++ b/mods/ITEMS/mcl_core/locale/template.txt @@ -202,12 +202,30 @@ Stained glass is a decorative and mostly transparent block which comes in variou Stick= Sticks are a very versatile crafting material; used in countless crafting recipes.= Stone= +Stripped Acacia Log= +Stripped Acacia Wood= +Stripped Birch Log= +Stripped Birch Wood= +Stripped Dark Oak Log= +Stripped Dark Oak Wood= +Stripped Jungle Log= +Stripped Jungle Wood= +Stripped Oak Log= +Stripped Oak Wood= +Stripped Spruce Log= +Stripped Spruce Wood= Stone Bricks= Sugar= Sugar Canes= Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.= Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.= Sugar comes from sugar canes and is used to make sweet foods.= +The stripped trunk of an acacia tree.= +The stripped trunk of an birch tree.= +The stripped trunk of an dark oak tree.= +The stripped trunk of an jungle tree.= +The stripped trunk of an oak tree.= +The stripped trunk of an spruce tree.= The trunk of a birch tree.= The trunk of a dark oak tree.= The trunk of a jungle tree.= @@ -216,6 +234,7 @@ The trunk of an acacia.= The trunk of an oak tree.= This block consists of a couple of loose stones and can't support itself.= This is a decorative block surrounded by the bark of a tree trunk.= +This is a decorative block.= This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.= This is a piece of cactus commonly found in dry areas, especially deserts. Over time, cacti will grow up to 3 blocks high on sand or red sand. A cactus hurts living beings touching it with a damage of 1 HP every half second. When a cactus block is broken, all cactus blocks connected above it will break as well.= This stone contains pure gold, a rare metal.= diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 4696a629a..c49b685eb 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -203,7 +203,7 @@ S("• When lava is directly above water, the water turns into stone."), _mcl_node_death_message = lava_death_messages, post_effect_color = {a=245, r=208, g=73, b=10}, stack_max = 64, - groups = { lava=3, lava_source=1, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1, set_on_fire=15}, + groups = { lava=3, lava_source=1, liquid=2, destroys_items=1, not_in_creative_inventory=1, dig_by_piston=1, set_on_fire=15, fire_damage=1}, _mcl_blast_resistance = 100, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode _mcl_hardness = -1, diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index d2c5443d3..801810dbd 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -8,7 +8,7 @@ if mod_screwdriver then end -- Register tree trunk (wood) and bark -local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark) +local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark, stripped_varient) minetest.register_node("mcl_core:"..subname, { description = description_trunk, _doc_items_longdesc = longdesc, @@ -22,6 +22,7 @@ local register_tree_trunk = function(subname, description_trunk, description_bar on_rotate = on_rotate, _mcl_blast_resistance = 2, _mcl_hardness = 2, + _mcl_stripped_varient = stripped_varient, }) minetest.register_node("mcl_core:"..subname.."_bark", { @@ -37,6 +38,7 @@ local register_tree_trunk = function(subname, description_trunk, description_bar on_rotate = on_rotate, _mcl_blast_resistance = 2, _mcl_hardness = 2, + _mcl_stripped_varient = stripped_varient.."_bark", }) minetest.register_craft({ @@ -214,12 +216,12 @@ end --------------------- -register_tree_trunk("tree", S("Oak Wood"), S("Oak Bark"), S("The trunk of an oak tree."), "default_tree_top.png", "default_tree.png") -register_tree_trunk("darktree", S("Dark Oak Wood"), S("Dark Oak Bark"), S("The trunk of a dark oak tree."), "mcl_core_log_big_oak_top.png", "mcl_core_log_big_oak.png") -register_tree_trunk("acaciatree", S("Acacia Wood"), S("Acacia Bark"), S("The trunk of an acacia."), "default_acacia_tree_top.png", "default_acacia_tree.png") -register_tree_trunk("sprucetree", S("Spruce Wood"), S("Spruce Bark"), S("The trunk of a spruce tree."), "mcl_core_log_spruce_top.png", "mcl_core_log_spruce.png") -register_tree_trunk("birchtree", S("Birch Wood"), S("Birch Bark"), S("The trunk of a birch tree."), "mcl_core_log_birch_top.png", "mcl_core_log_birch.png") -register_tree_trunk("jungletree", S("Jungle Wood"), S("Jungle Bark"), S("The trunk of a jungle tree."), "default_jungletree_top.png", "default_jungletree.png") +register_tree_trunk("tree", S("Oak Wood"), S("Oak Bark"), S("The trunk of an oak tree."), "default_tree_top.png", "default_tree.png", "mcl_core:stripped_oak") +register_tree_trunk("darktree", S("Dark Oak Wood"), S("Dark Oak Bark"), S("The trunk of a dark oak tree."), "mcl_core_log_big_oak_top.png", "mcl_core_log_big_oak.png", "mcl_core:stripped_dark_oak") +register_tree_trunk("acaciatree", S("Acacia Wood"), S("Acacia Bark"), S("The trunk of an acacia."), "default_acacia_tree_top.png", "default_acacia_tree.png", "mcl_core:stripped_acacia") +register_tree_trunk("sprucetree", S("Spruce Wood"), S("Spruce Bark"), S("The trunk of a spruce tree."), "mcl_core_log_spruce_top.png", "mcl_core_log_spruce.png", "mcl_core:stripped_spruce") +register_tree_trunk("birchtree", S("Birch Wood"), S("Birch Bark"), S("The trunk of a birch tree."), "mcl_core_log_birch_top.png", "mcl_core_log_birch.png", "mcl_core:stripped_birch") +register_tree_trunk("jungletree", S("Jungle Wood"), S("Jungle Bark"), S("The trunk of a jungle tree."), "default_jungletree_top.png", "default_jungletree.png", "mcl_core:stripped_jungle") register_stripped_trunk("stripped_oak", S("Stripped Oak Log"), S("Stripped Oak Wood"), S("The stripped trunk of an oak tree."), "mcl_core_stripped_oak_top.png", "mcl_core_stripped_oak_side.png") register_stripped_trunk("stripped_acacia", S("Stripped Acacia Log"), S("Stripped Acacia Wood"), S("The stripped trunk of an acacia tree."), "mcl_core_stripped_acacia_top.png", "mcl_core_stripped_acacia_side.png") diff --git a/mods/ITEMS/mcl_crafting_table/init.lua b/mods/ITEMS/mcl_crafting_table/init.lua index 6df4c2544..cbf1cff34 100644 --- a/mods/ITEMS/mcl_crafting_table/init.lua +++ b/mods/ITEMS/mcl_crafting_table/init.lua @@ -2,7 +2,7 @@ local S = minetest.get_translator("mcl_crafting_table") local formspec_escape = minetest.formspec_escape local show_formspec = minetest.show_formspec local C = minetest.colorize -local text_color = mcl_colors.DARK_GRAY +local text_color = "#313131" local itemslot_bg = mcl_formspec.get_itemslot_bg mcl_crafting_table = {} diff --git a/mods/ITEMS/mcl_enchanting/enchantments.lua b/mods/ITEMS/mcl_enchanting/enchantments.lua index fa3bc3ed5..84327e3f6 100644 --- a/mods/ITEMS/mcl_enchanting/enchantments.lua +++ b/mods/ITEMS/mcl_enchanting/enchantments.lua @@ -10,25 +10,6 @@ local function increase_damage(damage_group, factor) end end --- requires engine change ---[[mcl_enchanting.enchantments.aqua_affinity = { - name = S("Aqua Affinity"), - max_level = 1, - primary = {armor_head = true}, - secondary = {}, - disallow = {non_combat_armor = true}, - incompatible = {}, - weight = 2, - description = S("Increases underwater mining speed."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{1, 41}}, - inv_combat_tab = true, - inv_tool_tab = false, -}]]-- - -- implemented via on_enchant and additions in mobs_mc; Slowness IV part unimplemented mcl_enchanting.enchantments.bane_of_arthropods = { name = S("Bane of Arthropods"), @@ -48,25 +29,6 @@ mcl_enchanting.enchantments.bane_of_arthropods = { inv_tool_tab = false, } --- implemented in mcl_armor -mcl_enchanting.enchantments.blast_protection = { - name = S("Blast Protection"), - max_level = 4, - primary = {armor_head = true, armor_torso = true, armor_legs = true, armor_feet = true}, - secondary = {}, - disallow = {non_combat_armor = true}, - incompatible = {fire_protection = true, protection = true, projectile_protection = true}, - weight = 2, - description = S("Reduces explosion damage and knockback."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{5, 13}, {13, 21}, {21, 29}, {29, 37}}, - inv_combat_tab = true, - inv_tool_tab = false, -} - -- requires missing MineClone2 feature --[[mcl_enchanting.enchantments.channeling = { name = S("Channeling"), @@ -86,25 +48,6 @@ mcl_enchanting.enchantments.blast_protection = { inv_tool_tab = false, }]]-- --- implemented in mcl_armor -mcl_enchanting.enchantments.curse_of_binding = { - name = S("Curse of Binding"), - max_level = 1, - primary = {}, - secondary = {armor_head = true, armor_torso = true, armor_legs = true, armor_feet = true}, - disallow = {}, - incompatible = {}, - weight = 1, - description = S("Item cannot be removed from armor slots except due to death, breaking or in Creative Mode."), - curse = true, - on_enchant = function() end, - requires_tool = false, - treasure = true, - power_range_table = {{25, 50}}, - inv_combat_tab = true, - inv_tool_tab = false, -} - -- implemented in mcl_death_drop mcl_enchanting.enchantments.curse_of_vanishing = { name = S("Curse of Vanishing"), @@ -164,24 +107,6 @@ mcl_enchanting.enchantments.efficiency = { inv_tool_tab = true, } --- implemented in mcl_armor -mcl_enchanting.enchantments.feather_falling = { - name = S("Feather Falling"), - max_level = 4, - primary = {armor_feet = true}, - secondary = {}, - disallow = {non_combat_armor = true}, - incompatible = {}, - weight = 5, - description = S("Reduces fall damage."),curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{5, 11}, {11, 17}, {17, 23}, {23, 29}}, - inv_combat_tab = true, - inv_tool_tab = false, -} - -- implemented in mcl_mobs and via register_on_punchplayer callback mcl_enchanting.enchantments.fire_aspect = { name = S("Fire Aspect"), @@ -207,31 +132,12 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, if wielditem then local fire_aspect_level = mcl_enchanting.get_enchantment(wielditem, "fire_aspect") if fire_aspect_level > 0 then - mcl_burning.set_on_fire(player, fire_aspect_level * 4, hitter:get_player_name()) + mcl_burning.set_on_fire(player, fire_aspect_level * 4) end end end end) --- implemented in mcl_armor -mcl_enchanting.enchantments.fire_protection = { - name = S("Fire Protection"), - max_level = 4, - primary = {armor_head = true, armor_torso = true, armor_legs = true, armor_feet = true}, - secondary = {}, - disallow = {non_combat_armor = true}, - incompatible = {blast_protection = true, protection = true, projectile_protection = true}, - weight = 5, - description = S("Reduces fire damage."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{10, 18}, {18, 26}, {26, 34}, {34, 42}}, - inv_combat_tab = true, - inv_tool_tab = false, -} - mcl_enchanting.enchantments.flame = { name = S("Flame"), max_level = 1, @@ -530,44 +436,6 @@ mcl_enchanting.enchantments.power = { inv_tool_tab = false, } --- implemented in mcl_armor -mcl_enchanting.enchantments.projectile_protection = { - name = S("Projectile Protection"), - max_level = 4, - primary = {armor_head = true, armor_torso = true, armor_legs = true, armor_feet = true}, - secondary = {}, - disallow = {non_combat_armor = true}, - incompatible = {blast_protection = true, fire_protection = true, protection = true}, - weight = 5, - description = S("Reduces projectile damage."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{1, 16}, {11, 26}, {21, 36}, {31, 46}, {41, 56}}, - inv_combat_tab = true, - inv_tool_tab = false, -} - --- implemented in mcl_armor -mcl_enchanting.enchantments.protection = { - name = S("Protection"), - max_level = 4, - primary = {armor_head = true, armor_torso = true, armor_legs = true, armor_feet = true}, - secondary = {}, - disallow = {non_combat_armor = true}, - incompatible = {blast_protection = true, fire_protection = true, projectile_protection = true}, - weight = 10, - description = S("Reduces most types of damage by 4% for each level."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{1, 12}, {12, 23}, {23, 34}, {34, 45}}, - inv_combat_tab = true, - inv_tool_tab = false, -} - -- implemented via minetest.calculate_knockback (together with the Knockback enchantment) and mcl_bows mcl_enchanting.enchantments.punch = { name = S("Punch"), @@ -739,25 +607,6 @@ mcl_enchanting.enchantments.soul_speed = { inv_tool_tab = false, }]]-- --- implemented in mcl_armor -mcl_enchanting.enchantments.thorns = { - name = S("Thorns"), - max_level = 3, - primary = {armor_head = true}, - secondary = {armor_torso = true, armor_legs = true, armor_feet = true}, - disallow = {non_combat_armor = true}, - incompatible = {}, - weight = 1, - description = S("Reflects some of the damage taken when hit, at the cost of reducing durability with each proc."), - curse = false, - on_enchant = function() end, - requires_tool = false, - treasure = false, - power_range_table = {{10, 61}, {30, 71}, {50, 81}}, - inv_combat_tab = true, - inv_tool_tab = false, -} - -- for tools & weapons implemented via on_enchant; for bows implemented in mcl_bows; for armor implemented in mcl_armor and mcl_tt; for fishing rods implemented in mcl_fishing mcl_enchanting.enchantments.unbreaking = { name = S("Unbreaking"), diff --git a/mods/ITEMS/mcl_enchanting/engine.lua b/mods/ITEMS/mcl_enchanting/engine.lua index 3243b7879..89fdc393d 100644 --- a/mods/ITEMS/mcl_enchanting/engine.lua +++ b/mods/ITEMS/mcl_enchanting/engine.lua @@ -6,6 +6,9 @@ function mcl_enchanting.is_book(itemname) end function mcl_enchanting.get_enchantments(itemstack) + if not itemstack then + return({}) + end return minetest.deserialize(itemstack:get_meta():get_string("mcl_enchanting:enchantments")) or {} end @@ -267,7 +270,8 @@ function mcl_enchanting.initialize() new_def.groups.not_in_creative_inventory = 1 new_def.groups.not_in_craft_guide = 1 new_def.groups.enchanted = 1 - new_def.texture = itemdef.texture or itemname:gsub("%:", "_") + new_def._mcl_armor_texture = new_def._mcl_armor_texture and new_def._mcl_armor_texture .. mcl_enchanting.overlay + new_def._mcl_armor_preview = new_def._mcl_armor_preview and new_def._mcl_armor_preview .. mcl_enchanting.overlay new_def._mcl_enchanting_enchanted_tool = new_name new_def.after_use = get_after_use_callback(itemdef) local register_list = register_item_list diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr index 582f0e59b..e1178e782 100644 --- a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.fr.tr @@ -1,18 +1,18 @@ # textdomain: mcl_enchanting Aqua Affinity=Affinité aquatique -Increases underwater mining speed.=Augmente la vitesse de minage sous-marine. +Increases underwater mining speed.=Augmente la vitesse de minage sous-marine. Bane of Arthropods=Fléau des arthropodes -Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Augmente les dégâts et applique la lenteur IV aux mobs arthropodes (araignées, araignées des cavernes, lépismes argentés et endermites). +Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Augmente les dégâts et applique la lenteur IV aux mobs arthropodes (araignées, araignées des cavernes, lépismes argentés et endermites). Blast Protection=Protection contre les explosions -Reduces explosion damage and knockback.=Réduit les dégâts d'explosion et de recul. +Reduces explosion damage and knockback.=Réduit les dégâts d'explosion et de recul. Channeling=Canalisation -Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.=Canalise un éclair vers une cible. Fonctionne uniquement pendant les orages et si la cible n'est pas obstruée par des blocs opaques. +Channels a bolt of lightning toward a target. Works only during thunderstorms and if target is unobstructed with opaque blocks.=Canalise un éclair vers une cible. Fonctionne uniquement pendant les orages et si la cible n'est pas obstruée par des blocs opaques. Curse of Binding=Malédiction du lien éterne Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.=L'objet ne peut pas être retiré des emplacements d'armure sauf en cas de mort, de rupture ou en mode créatif. Curse of Vanishing=Malédiction de disparition Item destroyed on death.=Objet détruit à la mort. Depth Strider=Agilité aquatique -Increases underwater movement speed.=Augmente la vitesse de déplacement sous l'eau. +Increases underwater movement speed.=Augmente la vitesse de déplacement sous l'eau. Efficiency=Efficacité Increases mining speed.=Augmente la vitesse de minage. Feather Falling=Chute amortie @@ -22,21 +22,21 @@ Sets target on fire.=Définit la cible en feu. Fire Protection=Protection contre le feu Reduces fire damage.=Reduit les dégats de feu. Flame=Flamme -Arrows set target on fire.=Les flèches mettent le feu à la cible. +Arrows set target on fire.=Les flèches mettent le feu à la cible. Fortune=Fortune Increases certain block drops.=Multiplie les items droppés Frost Walker=Semelles givrantes -Turns water beneath the player into frosted ice and prevents the damage from magma blocks.=Transforme l'eau sous le joueur en glace givrée et empêche les dommages causés par les blocs de magma. +Turns water beneath the player into frosted ice and prevents the damage from magma blocks.=Transforme l'eau sous le joueur en glace givrée et empêche les dommages causés par les blocs de magma. Impaling=Empalement -Trident deals additional damage to ocean mobs.=Trident inflige des dégâts supplémentaires aux mobs océaniques. +Trident deals additional damage to ocean mobs.=Trident inflige des dégâts supplémentaires aux mobs océaniques. Infinity=Infinité -Shooting consumes no regular arrows.=Le tir ne consomme pas de flèches standard. +Shooting consumes no regular arrows.=Le tir ne consomme pas de flèches standard. Knockback=Recul Increases knockback.=Augmente le recul. Looting=Butin -Increases mob loot.=Augmente le butin des mobs. +Increases mob loot.=Augmente le butin des mobs. Loyalty=Loyauté -Trident returns after being thrown. Higher levels reduce return time.=Trident revient après avoir été jeté. Des niveaux plus élevés réduisent le temps de retour. +Trident returns after being thrown. Higher levels reduce return time.=Trident revient après avoir été jeté. Des niveaux plus élevés réduisent le temps de retour. Luck of the Sea=Chance de la mer Increases rate of good loot (enchanting books, etc.)=Augmente le taux de bon butin (livres enchanteurs, etc.) Lure=Appât @@ -44,17 +44,17 @@ Decreases time until rod catches something.=Diminue le temps jusqu'à ce qu'un p Mending=Raccommodage Repair the item while gaining XP orbs.=Réparez l'objet tout en gagnant des points d'XP. Multishot=Tir multiple -Shoot 3 arrows at the cost of one.=Tirez sur 3 flèches au prix d'une. +Shoot 3 arrows at the cost of one.=Tirez sur 3 flèches au prix d'une. Piercing=Perforation -Arrows passes through multiple objects.=Les flèches traversent plusieurs objets. +Arrows passes through multiple objects.=Les flèches traversent plusieurs objets. Power=Puissance -Increases arrow damage.=Augmente les dégâts des flèches. +Increases arrow damage.=Augmente les dégâts des flèches. Projectile Protection=Protection contre les projectiles -Reduces projectile damage.=Réduit les dommages causés par les projectiles. +Reduces projectile damage.=Réduit les dommages causés par les projectiles. Protection=Protection -Reduces most types of damage by 4% for each level.=éduit la plupart des types de dégâts de 4% pour chaque niveau. +Reduces most types of damage by 4% for each level.=éduit la plupart des types de dégâts de 4% pour chaque niveau. Punch=Frappe -Increases arrow knockback.=Augmente le recul de la flèche. +Increases arrow knockback.=Augmente le recul de la flèche. Quick Charge=Charge rapide Decreases crossbow charging time.=Diminue le temps de chargement de l'arbalète. Respiration=Apnée @@ -66,18 +66,18 @@ Increases damage.=Augmente les dégâts. Silk Touch=Toucher de soie Mined blocks drop themselves.=Les blocs minés tombent d'eux-mêmes. Smite=Châtiment -Increases damage to undead mobs.=Augmente les dégâts infligés aux monstres morts-vivants. +Increases damage to undead mobs.=Augmente les dégâts infligés aux monstres morts-vivants. Soul Speed=Agilité des âmes -Increases walking speed on soul sand.=Augmente la vitesse de marche sur le sable de l'âme. +Increases walking speed on soul sand.=Augmente la vitesse de marche sur le sable de l'âme. Sweeping Edge=Affilage -Increases sweeping attack damage.=Augmente les dégâts de l'épée +Increases sweeping attack damage.=Augmente les dégâts de l'épée Thorns=Épines Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.=Reflète une partie des dégâts subis lors de la frappe, au prix d'une réduction de la durabilité à chaque déclenchement. Unbreaking=Solidité Increases item durability.=Augmente la durabilité des objets. Inventory=Inventaire -@1 × Lapis Lazuli=@1 × Lapis Lazuli -Enchantment levels: @1=Niveaux d'enchantement: @1 +@1 Lapis Lazuli=@1 Lapis Lazuli +@1 Enchantment Levels=@1 Niveaux d'enchantement Level requirement: @1=Niveau requis: @1 Enchant an item=Enchanter un objet []= [] @@ -85,16 +85,16 @@ Usage: /enchant []=Usage: /enchant []=Usage: /forceenchant [] The target item is not enchantable.=L'objet cible n'est pas enchantable. '@1' is not a valid number.='@1' n'est pas un nombre valide. -Enchanted Book=Livre enchanté +Enchanted Book=Livre enchanté Enchanting Table=Table d'enchantement Enchant=Enchantement diff --git a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.ru.tr b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.ru.tr index 6ea2038be..6cd1e1db6 100644 --- a/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.ru.tr +++ b/mods/ITEMS/mcl_enchanting/locale/mcl_enchanting.ru.tr @@ -2,7 +2,7 @@ Aqua Affinity=Родство с водой Increases underwater mining speed.=Увеличивает скорость добычи под водой. Bane of Arthropods=Бич членистоногих -Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Увеличивает урон и применяет Замедление IV к насекомым и членистоногим (паукам, пещерным паукам, чешуйницам и чешуйницам края). +Increases damage and applies Slowness IV to arthropod mobs (spiders, cave spiders, silverfish and endermites).=Увеличивает урон и применяет Замедление IV к насекомым и членистоногим (паукам, пещерным паукам, чешуйницам и чешуйницам края). Blast Protection=Взрывоустойчивость Reduces explosion damage and knockback.=Уменьшает урон и отдачу от взрывов. Channeling=Громовержец @@ -76,8 +76,8 @@ Reflects some of the damage taken when hit, at the cost of reducing durability w Unbreaking=Нерушимость Increases item durability.=Увеличивает прочность предмета. Inventory=Инвентарь -@1 × Lapis Lazuli=@1 × Ляпис-лазурь -Enchantment levels: @1=Уровень зачаровывания: @1 +@1 Lapis Lazuli=@1 Ляпис-лазурь +@1 Enchantment Levels=@1 Уровень зачаровывания Level requirement: @1=Требуемый уровень: @1 Enchant an item=Зачаровать предмет []=<игрок> <зачарование> [<уровень>] diff --git a/mods/ITEMS/mcl_enchanting/locale/template.txt b/mods/ITEMS/mcl_enchanting/locale/template.txt index f186ef37b..08fa82097 100644 --- a/mods/ITEMS/mcl_enchanting/locale/template.txt +++ b/mods/ITEMS/mcl_enchanting/locale/template.txt @@ -76,8 +76,8 @@ Reflects some of the damage taken when hit, at the cost of reducing durability w Unbreaking= Increases item durability.= Inventory= -@1 × Lapis Lazuli= -Enchantment levels: @1= +@1 Lapis Lazuli= +@1 Enchantment Levels= Level requirement: @1= Enchant an item= []= diff --git a/mods/ITEMS/mcl_farming/pumpkin.lua b/mods/ITEMS/mcl_farming/pumpkin.lua index 72b4e5412..8d234d586 100644 --- a/mods/ITEMS/mcl_farming/pumpkin.lua +++ b/mods/ITEMS/mcl_farming/pumpkin.lua @@ -111,12 +111,16 @@ pumpkin_face_base_def.description = S("Pumpkin") pumpkin_face_base_def._doc_items_longdesc = S("A pumpkin can be worn as a helmet. Pumpkins grow from pumpkin stems, which in turn grow from pumpkin seeds.") pumpkin_face_base_def._doc_items_usagehelp = nil pumpkin_face_base_def.tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face.png"} +pumpkin_face_base_def.groups.armor=1 +pumpkin_face_base_def.groups.non_combat_armor=1 pumpkin_face_base_def.groups.armor_head=1 +pumpkin_face_base_def.groups.non_combat_armor_head=1 pumpkin_face_base_def._mcl_armor_mob_range_factor = 0 pumpkin_face_base_def._mcl_armor_mob_range_mob = "mobs_mc:enderman" +pumpkin_face_base_def._mcl_armor_entry = "head" pumpkin_face_base_def.groups.non_combat_armor=1 if minetest.get_modpath("mcl_armor") then - pumpkin_face_base_def.on_secondary_use = armor.on_armor_use + pumpkin_face_base_def.on_secondary_use = mcl_armor.equip_on_use end -- Register stem growth diff --git a/mods/ITEMS/mcl_fireworks/config.txt b/mods/ITEMS/mcl_fireworks/config.txt deleted file mode 100644 index 5a12a1f52..000000000 --- a/mods/ITEMS/mcl_fireworks/config.txt +++ /dev/null @@ -1,2 +0,0 @@ -name = mcl_firework -author = NO11, j45 diff --git a/mods/ITEMS/mcl_fireworks/locale/template.txt b/mods/ITEMS/mcl_fireworks/locale/template.txt new file mode 100644 index 000000000..e66eb06a5 --- /dev/null +++ b/mods/ITEMS/mcl_fireworks/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: mcl_fireworks +Firework Rocket= +Flight Duration:= \ No newline at end of file diff --git a/mods/ITEMS/mcl_fireworks/register.lua b/mods/ITEMS/mcl_fireworks/register.lua index 08f07c5cb..6ab55442c 100644 --- a/mods/ITEMS/mcl_fireworks/register.lua +++ b/mods/ITEMS/mcl_fireworks/register.lua @@ -15,7 +15,9 @@ local function register_rocket(n, duration, force) local elytra = mcl_playerplus.elytra[user] if elytra.active and elytra.rocketing <= 0 then elytra.rocketing = duration - itemstack:take_item() + if not minetest.is_creative_enabled(user:get_player_name()) then + itemstack:take_item() + end minetest.sound_play("mcl_fireworks_rocket", {pos = user:get_pos()}) end return itemstack diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr index 3031e38d8..a110d5ffc 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.de.tr @@ -1,6 +1,6 @@ # textdomain: mcl_flowerpots Dandelion Flower Pot=Blumentopf mit Löwenzahn -Poppy Floer Pot=Blumentopf mit Mohn +Poppy Flower Pot=Blumentopf mit Mohn Blue Orchid Flower Pot=Blumentopf mit blauer Orchidee Allium Flower Pot=Blumentopf mit Sternlauch Azure Bluet Flower Pot=Blumentopf mit Porzellansternchen diff --git a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr index b303194b5..fd12b1b4f 100644 --- a/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr +++ b/mods/ITEMS/mcl_flowerpots/locale/mcl_flowerpots.es.tr @@ -1,6 +1,6 @@ # textdomain: mcl_flowerpots Dandelion Flower Pot=Maceta con diente de león -Poppy Floer Pot=Maceta con amapola +Poppy Flower Pot=Maceta con amapola Blue Orchid Flower Pot=Maceta con orquídeas azules Allium Flower Pot=Maceta con puerro Azure Bluet Flower Pot=Maceta con flor azul celeste @@ -22,4 +22,4 @@ Fern Flower Pot=Maceta con helecho Cactus Flower Pot=Maceta con cactus Flower Pot=Maceta Flower pots are decorative blocks in which flowers and other small plants can be placed.=Las macetas son bloques decorativos en los que se pueden colocar flores y otras plantas pequeñas. -Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.=Simplemente coloque una planta en la maceta. Las macetas pueden contener flores pequeñas (no más de 1 bloque), árboles jóvenes, helechos, arbustos muertos, hongos y cactus. Haga clic derecho en una planta en maceta para recuperar la planta. \ No newline at end of file +Just place a plant on the flower pot. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.=Simplemente coloque una planta en la maceta. Las macetas pueden contener flores pequeñas (no más de 1 bloque), árboles jóvenes, helechos, arbustos muertos, hongos y cactus. Haga clic derecho en una planta en maceta para recuperar la planta. diff --git a/mods/ITEMS/mcl_furnaces/init.lua b/mods/ITEMS/mcl_furnaces/init.lua index 02a104bc5..af2a60952 100644 --- a/mods/ITEMS/mcl_furnaces/init.lua +++ b/mods/ITEMS/mcl_furnaces/init.lua @@ -9,12 +9,12 @@ local LIGHT_ACTIVE_FURNACE = 13 local function active_formspec(fuel_percent, item_percent) return "size[9,8.75]".. - "label[0,4;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.74,9,1).. - "label[2.75,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Furnace"))).."]".. + "label[2.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Furnace"))).."]".. "list[current_name;src;2.75,0.5;1,1;]".. mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. "list[current_name;fuel;2.75,2.5;1,1;]".. @@ -38,12 +38,12 @@ local function active_formspec(fuel_percent, item_percent) end local inactive_formspec = "size[9,8.75]".. - "label[0,4;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,4.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,4.5,9,3).. "list[current_player;main;0,7.74;9,1;]".. mcl_formspec.get_itemslot_bg(0,7.74,9,1).. - "label[2.75,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Furnace"))).."]".. + "label[2.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Furnace"))).."]".. "list[current_name;src;2.75,0.5;1,1;]".. mcl_formspec.get_itemslot_bg(2.75,0.5,1,1).. "list[current_name;fuel;2.75,2.5;1,1;]".. diff --git a/mods/ITEMS/mcl_furnaces/mod.conf b/mods/ITEMS/mcl_furnaces/mod.conf index 99a1ad0bf..fe0b9c208 100644 --- a/mods/ITEMS/mcl_furnaces/mod.conf +++ b/mods/ITEMS/mcl_furnaces/mod.conf @@ -1,3 +1,3 @@ name = mcl_furnaces -depends = mcl_init, mcl_formspec, mcl_core, mcl_sounds, mcl_craftguide, mcl_achievements, mcl_particles, mcl_colors +depends = mcl_init, mcl_formspec, mcl_core, mcl_sounds, mcl_craftguide, mcl_achievements, mcl_particles optional_depends = doc, screwdriver diff --git a/mods/ITEMS/mcl_heads/init.lua b/mods/ITEMS/mcl_heads/init.lua index 55b2bf616..ec6a5638e 100644 --- a/mods/ITEMS/mcl_heads/init.lua +++ b/mods/ITEMS/mcl_heads/init.lua @@ -5,7 +5,7 @@ local mod_screwdriver = minetest.get_modpath("screwdriver") local equip_armor if minetest.get_modpath("mcl_armor") then - equip_armor = armor.on_armor_use + equip_armor = mcl_armor.equip_on_use end -- Heads system @@ -42,7 +42,7 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) { -0.25, -0.5, -0.25, 0.25, 0.0, 0.25, }, }, }, - groups = {handy=1, armor_head=1,non_combat_armor=1, head=1, deco_block=1, dig_by_piston=1 }, + groups = {handy = 1, armor = 1, armor_head = 1, non_combat_armor = 1, non_combat_armor_head = 1, head = 1, deco_block = 1, dig_by_piston = 1}, -- The head textures are based off the textures of an actual mob. tiles = { -- Note: bottom texture is overlaid over top texture to get rid of possible transparency. @@ -111,6 +111,7 @@ local function addhead(name, texture, desc, longdesc, rangemob, rangefactor) _mcl_armor_mob_range_mob = rangemob, _mcl_armor_mob_range_factor = rangefactor, + _mcl_armor_element = "head", _mcl_blast_resistance = 1, _mcl_hardness = 1, }) diff --git a/mods/ITEMS/mcl_hoppers/init.lua b/mods/ITEMS/mcl_hoppers/init.lua index e9f6ddf92..eaff8f83d 100644 --- a/mods/ITEMS/mcl_hoppers/init.lua +++ b/mods/ITEMS/mcl_hoppers/init.lua @@ -4,10 +4,10 @@ local S = minetest.get_translator("mcl_hoppers") local mcl_hoppers_formspec = "size[9,7]".. - "label[2,0;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Hopper"))).."]".. + "label[2,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Hopper"))).."]".. "list[current_name;main;2,0.5;5,1;]".. mcl_formspec.get_itemslot_bg(2,0.5,5,1).. - "label[0,2;"..minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Inventory"))).."]".. + "label[0,2;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]".. "list[current_player;main;0,2.5;9,3;9]".. mcl_formspec.get_itemslot_bg(0,2.5,9,3).. "list[current_player;main;0,5.74;9,1;]".. diff --git a/mods/ITEMS/mcl_hoppers/mod.conf b/mods/ITEMS/mcl_hoppers/mod.conf index 53f514f39..c89292f6b 100644 --- a/mods/ITEMS/mcl_hoppers/mod.conf +++ b/mods/ITEMS/mcl_hoppers/mod.conf @@ -1,4 +1,4 @@ name = mcl_hoppers description = It's just a clone of Minecraft hoppers, functions nearly identical to them minus mesecons making them stop and the way they're placed. -depends = mcl_core, mcl_formspec, mcl_sounds, mcl_util, mcl_colors +depends = mcl_core, mcl_formspec, mcl_sounds, mcl_util optional_depends = doc, screwdriver diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index 467054767..0a0e2b183 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -1,6 +1,5 @@ local S = minetest.get_translator("mcl_nether") -local mod_death_messages = minetest.get_modpath("mcl_death_messages") local mod_screwdriver = minetest.get_modpath("screwdriver") ~= nil local on_rotate if mod_screwdriver then @@ -111,10 +110,7 @@ minetest.register_node("mcl_nether:magma", { end -- Hurt players standing on top of this block if player:get_hp() > 0 then - if mod_death_messages then - mcl_death_messages.player_damage(player, S("@1 stood too long on a magma block.", player:get_player_name())) - end - player:set_hp(player:get_hp() - 1, { type = "punch", from = "mod" }) + mcl_util.deal_damage(player, 1, {type = "hot_floor"}) end end, _mcl_blast_resistance = 0.5, diff --git a/mods/ITEMS/mcl_nether/mod.conf b/mods/ITEMS/mcl_nether/mod.conf index 8bef6c6c9..f5ffa61ac 100644 --- a/mods/ITEMS/mcl_nether/mod.conf +++ b/mods/ITEMS/mcl_nether/mod.conf @@ -1,3 +1,3 @@ name = mcl_nether depends = mcl_core, mcl_sounds, mcl_util, walkover, doc_items, mcl_colors -optional_depends = mcl_death_messages, doc, screwdriver +optional_depends = doc, screwdriver diff --git a/mods/ITEMS/mcl_potions/functions.lua b/mods/ITEMS/mcl_potions/functions.lua index 211cf50b0..55a98ba9d 100644 --- a/mods/ITEMS/mcl_potions/functions.lua +++ b/mods/ITEMS/mcl_potions/functions.lua @@ -132,17 +132,10 @@ minetest.register_globalstep(function(dtime) if player:get_pos() then mcl_potions._add_spawner(player, "#225533") end if EF.poisoned[player].hit_timer >= EF.poisoned[player].step then - - if entity and entity._cmi_is_mob then - entity.health = math.max(entity.health - 1, 1) - EF.poisoned[player].hit_timer = 0 - elseif is_player then - player:set_hp( math.max(player:get_hp() - 1, 1), { type = "punch", other = "poison"}) - EF.poisoned[player].hit_timer = 0 - else -- if not player or mob then remove - EF.poisoned[player] = nil + if mcl_util.get_hp(player) - 1 > 0 then + mcl_util.deal_damage(player, 1, {type = "magic"}) end - + EF.poisoned[player].hit_timer = 0 end if EF.poisoned[player] and EF.poisoned[player].timer >= EF.poisoned[player].dur then @@ -351,37 +344,12 @@ minetest.register_globalstep(function(dtime) end) - -local is_fire_node = { ["mcl_core:lava_flowing"]=true, - ["mcl_core:lava_source"]=true, - ["mcl_fire:eternal_fire"]=true, - ["mcl_fire:fire"]=true, - ["mcl_nether:magma"]=true, - ["mcl_nether:nether_lava_source"]=true, - ["mcl_nether:nether_lava_flowing"]=true, - ["mcl_nether:nether_lava_source"]=true -} - -- Prevent damage to player with Fire Resistance enabled -minetest.register_on_player_hpchange(function(player, hp_change, reason) - - if EF.fire_proof[player] and hp_change < 0 then - -- This is a bit forced, but it assumes damage is taken by fire and avoids it - -- also assumes any change in hp happens between calls to this function - -- it's worth noting that you don't take damage from players in this case... - local player_info = mcl_playerinfo[player:get_player_name()] - - if is_fire_node[player_info.node_head] or is_fire_node[player_info.node_feet] or is_fire_node[player_info.node_stand] then - return 0 - else - return hp_change - end - - else - return hp_change +mcl_damage.register_modifier(function(obj, damage, reason) + if EF.fire_proof[obj] and not reason.flags.bypasses_magic and reason.flags.is_fire then + return 0 end - -end, true) +end, -50) @@ -603,21 +571,18 @@ function mcl_potions.make_invisible(player, toggle) return end - if minetest.get_modpath("mcl_armor") and player:is_player() then - armor.textures[playername].skin = skin_file - armor:update_player_visuals(player) - elseif not player:is_player() and minetest.get_modpath("mcl_armor") or not player:is_player() and not minetest.get_modpath("mcl_armor") then + if player:is_player() then + mcl_player.player_set_skin(player, "mobs_mc_empty.png") + elseif not player:is_player() then player:set_properties({visual_size = {x = 0, y = 0}}) end player:set_nametag_attributes({color = {a = 0}}) elseif EF.invisible[player] then -- show player - if minetest.get_modpath("mcl_armor") and player:is_player() then - skin_file = mcl_skins.skins[playername] .. ".png" - armor.textures[playername].skin = skin_file - armor:update_player_visuals(player) - elseif not player:is_player() and minetest.get_modpath("mcl_armor") or not player:is_player() and not minetest.get_modpath("mcl_armor") then + if player:is_player() then + mcl_skins.update_player_skin(player) + elseif not player:is_player() then player:set_properties({visual_size = EF.invisible[player].old_size}) end player:set_nametag_attributes({color = {r = 255, g = 255, b = 255, a = 255}}) @@ -724,12 +689,7 @@ function mcl_potions.healing_func(player, hp) hp = -1 end - if obj and obj._cmi_is_mob then - obj.health = obj.health + hp - elseif player:is_player() then - player:set_hp(player:get_hp() + hp, { type = "punch", other = "harming" }) - end - + mcl_util.deal_damage(player, -hp, {type = "magic"}) end end diff --git a/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr b/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr index 36f5280b9..34693d531 100644 --- a/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr +++ b/mods/ITEMS/mcl_potions/locale/mcl_potions.de.tr @@ -112,18 +112,3 @@ No effect=Keine Wirkung A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.=Ein werfbarer Trank, der bei Kollision zerbrechen wird, wo er allen nahen Spielern und Mobs einen Statuseffekt geben wird. This particular arrow is tipped and will give an effect when it hits a player or mob.=Diese Pfeilspitze dieses Pfeils in einem Trank getränkt und gibt einen Effekt, wenn er einen Spieler oder einen Mob trifft. - - - -##### not used anymore ##### - -Lingering Weakness Potion=Schwächeverweiltrank -Lingering Weakness Potion +=Schwächeverweiltrank + -Lingering Strength Potion=Stärkeverweiltrank -Lingering Strength Potion II=Stärkeverweiltrank II -Lingering Strength Potion +=Stärkeverweiltrank + -Weakness Splash Potion=Schwächewurftrank -Weakness Splash Potion +=Schwächewurftrank + -Strength Splash Potion=Stärkewurftrank -Strength Splash Potion II=Stärkewurftrank II -Strength Splash Potion +=Stärkewurftrank + diff --git a/mods/ITEMS/mcl_sponges/init.lua b/mods/ITEMS/mcl_sponges/init.lua index 75a99b0f1..147db6cc5 100644 --- a/mods/ITEMS/mcl_sponges/init.lua +++ b/mods/ITEMS/mcl_sponges/init.lua @@ -114,6 +114,19 @@ function place_wet_sponge(itemstack, placer, pointed_thing) if mcl_worlds.pos_to_dimension(pointed_thing.above) == "nether" then minetest.item_place_node(ItemStack("mcl_sponges:sponge"), placer, pointed_thing) + local pos = pointed_thing.above + for n = 0, 25 do + minetest.add_particle({ + pos = {x = pos.x + math.random(-1, 1)*math.random()/2, y = pos.y + 0.6, z = pos.z + math.random(-1, 1)*math.random()/2}, + velocity = {x = 0, y = math.random(), z = 0}, + acceleration = {x=0, y=0, z=0}, + expirationtime = math.random(), + collisiondetection = false, + vertical = false, + size = math.random(2, 5), + texture = "mcl_particles_sponge"..math.random(1, 5)..".png", + }) + end if not minetest.is_creative_enabled(name) then itemstack:take_item() end diff --git a/mods/ITEMS/mcl_tnt/mod.conf b/mods/ITEMS/mcl_tnt/mod.conf index 9d75a788c..2e90ddb80 100644 --- a/mods/ITEMS/mcl_tnt/mod.conf +++ b/mods/ITEMS/mcl_tnt/mod.conf @@ -1,3 +1,3 @@ name = mcl_tnt depends = mcl_explosions, mcl_particles -optional_depends = mcl_sounds, mcl_mobitems, mcl_death_messages, doc_identifier, mesecons +optional_depends = mcl_sounds, mcl_mobitems, doc_identifier, mesecons diff --git a/mods/ITEMS/mcl_totems/init.lua b/mods/ITEMS/mcl_totems/init.lua index b4ec3eb8d..499d7362d 100644 --- a/mods/ITEMS/mcl_totems/init.lua +++ b/mods/ITEMS/mcl_totems/init.lua @@ -1,5 +1,58 @@ --- Node is currently defined in mobs_mc. --- TODO: Add full item definition here when status effects become a thing. +local hud_totem = {} --- Add group for Creative Mode. -minetest.override_item("mobs_mc:totem", {groups = { combat_item=1}}) +minetest.register_on_leaveplayer(function(player) + hud_totem[player] = nil +end) + +-- Save the player from death when holding totem of undying in hand +mcl_damage.register_modifier(function(obj, damage, reason) + if obj:is_player() then + local hp = obj:get_hp() + if hp - damage <= 0 then + local wield = obj:get_wielded_item() + if wield:get_name() == "mobs_mc:totem" then + local ppos = obj:get_pos() + local pnname = minetest.get_node(ppos).name + -- Some exceptions when _not_ to save the player + for n=1, #mobs_mc.misc.totem_fail_nodes do + if pnname == mobs_mc.misc.totem_fail_nodes[n] then + return + end + end + -- Reset breath as well + if obj:get_breath() < 11 then + obj:set_breath(10) + end + + if not minetest.is_creative_enabled(obj:get_player_name()) then + wield:take_item() + obj:set_wielded_item(wield) + end + + -- Effects + minetest.sound_play({name = "mcl_totems_totem", gain=1}, {pos=ppos, max_hear_distance=16}, true) + + -- Big totem overlay + if not hud_totem[obj] then + hud_totem[obj] = obj:hud_add({ + hud_elem_type = "image", + text = "mcl_totems_totem.png", + position = { x=0.5, y=1 }, + scale = { x=17, y=17 }, + offset = { x=0, y=-178 }, + z_index = 100, + }) + minetest.after(3, function() + if obj:is_player() then + obj:hud_remove(hud_totem[obj]) + hud_totem[obj] = nil + end + end) + end + + -- Set HP to exactly 1 + return hp - 1 + end + end + end +end, 1000) diff --git a/mods/ITEMS/mcl_totems/mod.conf b/mods/ITEMS/mcl_totems/mod.conf index 70c5844c6..4ba94defc 100644 --- a/mods/ITEMS/mcl_totems/mod.conf +++ b/mods/ITEMS/mcl_totems/mod.conf @@ -1,2 +1,2 @@ name = mcl_totems -depends = mobs_mc +depends = mobs_mc, mcl_damage diff --git a/mods/MISC/mcl_commands/kill.lua b/mods/MISC/mcl_commands/kill.lua index 2de69e6a0..85754a0ec 100644 --- a/mods/MISC/mcl_commands/kill.lua +++ b/mods/MISC/mcl_commands/kill.lua @@ -1,5 +1,4 @@ local S = minetest.get_translator("mcl_commands") -local mod_death_messages = minetest.get_modpath("mcl_death_messages") local function handle_kill_command(suspect, victim) if minetest.settings:get_bool("enable_damage") == false then @@ -21,17 +20,8 @@ local function handle_kill_command(suspect, victim) if wield:get_name() == "mobs_mc:totem" then victimref:set_wielded_item("") end - if mod_death_messages then - local msg - if suspect == victim then - msg = S("@1 committed suicide.", victim) - else - msg = S("@1 was killed by @2.", victim, suspect) - end - mcl_death_messages.player_damage(victimref, msg) - end -- DIE! - victimref:set_hp(0) + victimref:set_hp(0, {_mcl_type = "out_of_world"}) -- Log if not suspect == victim then minetest.log("action", string.format("%s killed %s using /kill", suspect, victim)) @@ -56,4 +46,4 @@ minetest.register_chatcommand("kill", { return handle_kill_command(name, param) end end, -}) \ No newline at end of file +}) diff --git a/mods/MISC/mcl_commands/mod.conf b/mods/MISC/mcl_commands/mod.conf index d651fad7b..00d707098 100644 --- a/mods/MISC/mcl_commands/mod.conf +++ b/mods/MISC/mcl_commands/mod.conf @@ -1,4 +1,3 @@ name = mcl_commands author = Wuzzy description = MCL2 commands -optional_depends = mcl_death_messages diff --git a/mods/PLAYER/mcl_criticals/init.lua b/mods/PLAYER/mcl_criticals/init.lua new file mode 100644 index 000000000..27d09abb2 --- /dev/null +++ b/mods/PLAYER/mcl_criticals/init.lua @@ -0,0 +1,30 @@ +mcl_damage.register_modifier(function(obj, damage, reason) + if reason.type == "player" then + local hitter = reason.direct + if mcl_sprint.is_sprinting(hitter) then + obj:add_velocity(hitter:get_velocity()) + elseif (hitter:get_velocity() or hitter:get_player_velocity()).y < 0 then + local pos = mcl_util.get_object_center(obj) + minetest.add_particlespawner({ + amount = 15, + time = 0.1, + minpos = {x=pos.x-0.5, y=pos.y-0.5, z=pos.z-0.5}, + maxpos = {x=pos.x+0.5, y=pos.y+0.5, z=pos.z+0.5}, + minvel = {x=-0.1, y=-0.1, z=-0.1}, + maxvel = {x=0.1, y=0.1, z=0.1}, + minacc = {x=0, y=0, z=0}, + maxacc = {x=0, y=0, z=0}, + minexptime = 1, + maxexptime = 2, + minsize = 1.5, + maxsize = 1.5, + collisiondetection = false, + vertical = false, + texture = "mcl_particles_crit.png^[colorize:#bc7a57:127", + }) + minetest.sound_play("mcl_criticals_hit", {object = obj}) + -- the minecraft wiki is actually wrong about a crit dealing 150% damage, see minecraft source code + return damage + math.random(0, math.floor(damage * 1.5 + 2)) + end + end +end, -100) diff --git a/mods/PLAYER/mcl_criticals/mod.conf b/mods/PLAYER/mcl_criticals/mod.conf new file mode 100644 index 000000000..5b0b91330 --- /dev/null +++ b/mods/PLAYER/mcl_criticals/mod.conf @@ -0,0 +1,2 @@ +name = mcl_criticals +depends = mcl_damage diff --git a/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.0.ogg b/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.0.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8184d10768996a9faac5fcf83e29dc0f5c7445b9 GIT binary patch literal 10932 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 Kg8`8I*Z4np&^ERJ literal 0 HcmV?d00001 diff --git a/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.2.ogg b/mods/PLAYER/mcl_criticals/sounds/mcl_criticals_hit.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6d573b9f2877a7f66b3fe4b758dcfb63d32edac2 GIT binary patch literal 10130 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 literal 0 HcmV?d00001 diff --git a/mods/PLAYER/mcl_death_drop/API.md b/mods/PLAYER/mcl_death_drop/API.md index b19e2fd7c..3fc5163e5 100644 --- a/mods/PLAYER/mcl_death_drop/API.md +++ b/mods/PLAYER/mcl_death_drop/API.md @@ -7,8 +7,8 @@ Drop registered inventories on player death. * function(player): must return inventory * listname: string * drop: bool - * true: the entire list will be dropped - * false: items with curse_of_vanishing enchantement will be broken. + * true: the list will be dropped + * false: the list will only be cleared ## mcl_death_drop.registered_dropped_lists Table containing dropped list inventory, name and drop state. \ No newline at end of file diff --git a/mods/PLAYER/mcl_death_drop/init.lua b/mods/PLAYER/mcl_death_drop/init.lua index 90a2b0fbd..fca566a37 100644 --- a/mods/PLAYER/mcl_death_drop/init.lua +++ b/mods/PLAYER/mcl_death_drop/init.lua @@ -11,7 +11,6 @@ end mcl_death_drop.register_dropped_list("PLAYER", "main", true) mcl_death_drop.register_dropped_list("PLAYER", "craft", true) mcl_death_drop.register_dropped_list("PLAYER", "armor", true) -mcl_death_drop.register_dropped_list(function(player) return select(3, armor:get_valid_player(player)) end , "armor", false) minetest.register_on_dieplayer(function(player) local keep = minetest.settings:get_bool("mcl_keepInventory", false) @@ -50,7 +49,6 @@ minetest.register_on_dieplayer(function(player) inv:set_list(listname, {}) end end - armor:set_player_armor(player) - armor:update_inventory(player) + mcl_armor.update(player) end end) diff --git a/mods/PLAYER/mcl_hunger/hunger.lua b/mods/PLAYER/mcl_hunger/hunger.lua index 30ad10ac2..51d7fdaeb 100644 --- a/mods/PLAYER/mcl_hunger/hunger.lua +++ b/mods/PLAYER/mcl_hunger/hunger.lua @@ -1,5 +1,4 @@ local S = minetest.get_translator("mcl_hunger") -local mod_death_messages = minetest.get_modpath("mcl_death_messages") -- wrapper for minetest.item_eat (this way we make sure other mods can't break this one) minetest.do_item_eat = function(hp_change, replace_with_item, itemstack, user, pointed_thing) @@ -110,10 +109,7 @@ local function poisonp(tick, time, time_left, damage, exhaustion, name) -- Deal damage and exhaust player -- TODO: Introduce fatal poison at higher difficulties if player:get_hp()-damage > 0 then - if mod_death_messages then - mcl_death_messages.player_damage(player, S("@1 succumbed to the poison.", name)) - end - player:set_hp(player:get_hp()-damage) + mcl_util.deal_damage(player, damage, {type = "hunger"}) end mcl_hunger.exhaust(name, exhaustion) diff --git a/mods/PLAYER/mcl_hunger/init.lua b/mods/PLAYER/mcl_hunger/init.lua index c65206599..6b9998574 100644 --- a/mods/PLAYER/mcl_hunger/init.lua +++ b/mods/PLAYER/mcl_hunger/init.lua @@ -1,5 +1,4 @@ local S = minetest.get_translator("mcl_hunger") -local mod_death_messages = minetest.get_modpath("mcl_death_messages") mcl_hunger = {} @@ -159,10 +158,7 @@ minetest.register_globalstep(function(dtime) -- Damage hungry player down to 1 HP -- TODO: Allow starvation at higher difficulty levels if hp-1 > 0 then - if mod_death_messages then - mcl_death_messages.player_damage(player, S("@1 starved to death.", name)) - end - player:set_hp(hp-1) + mcl_util.deal_damage(player, 1, {type = "starve"}) end end end diff --git a/mods/PLAYER/mcl_hunger/mod.conf b/mods/PLAYER/mcl_hunger/mod.conf index 7795da7a2..99ab71ff3 100644 --- a/mods/PLAYER/mcl_hunger/mod.conf +++ b/mods/PLAYER/mcl_hunger/mod.conf @@ -2,4 +2,3 @@ name = mcl_hunger author = BlockMen description = Adds a simple hunger meachanic with satiation, food poisoning and different healing. depends = hudbars -optional_depends = mcl_death_messages diff --git a/mods/PLAYER/mcl_hunger/textures/hbhunger_bgicon.png b/mods/PLAYER/mcl_hunger/textures/hbhunger_bgicon.png index e02778a2702183d3a01039d42258c0cc956608b8..d21b1684786017be48a478eb8b15f6dd09153ea5 100644 GIT binary patch delta 141 zcmV;80CN9wssWHBe+h6%S#tmY3ljhU3ljkVnw%H_003M`L_t&-(~XeJ3cw%?1jpjh z()Is8vMG8`FIue7#~hd4fg}J(*=d;Vfr$wCnlxrU7o(Kfl;-iRxBwhhc_X%k18hp8 v^|CEJDb*g0ak|J$HGU&y@2?48MSv6Oh9~4Jahr_*0000<2SrXqu0mjf;Egy( delta 84 zcmZ3*STsS!&(hPyF{FYq`2ZUW3(Nn*27auYjJgVVM1J*$Hum-D$uJ-NpvAP=G08>q oKuAkKL#$w2e4>XySOX`6;dbM$1x|I*3=9kmp00i_>zopr0L>g6RR910 diff --git a/mods/PLAYER/mcl_hunger/textures/hbhunger_icon.png b/mods/PLAYER/mcl_hunger/textures/hbhunger_icon.png index 9c1bb63e48bb6b84c273202e9b4c8688a6aa1c70..3830fdfc3cf99855334cccf433ebcdb0859ac689 100644 GIT binary patch delta 192 zcmV;x06+hZ0nq`F8Gi-<007{T1`q%M010qNS#tmY3ljhU3ljkVnw%H_004tYL_t&- z(_>^{U|{Huu>H>f1*IzvGcuq7mhK4K|CTn|3^J;6FtPvW3YpM#g(iBUn9RVyz`(-5 zz`*e2;TyOBl8JD@2y>IHtT=;=ya)qK)8of4;qHT5_xSNk6gd+yOo9Pqx5RbyFo-Ld uGcw=<7mh6c|MJ1f{}?7=Qz$8;#sB~%S}pZqSGD8-0000p=fS?83{1OV2xClmkx diff --git a/mods/PLAYER/mcl_hunger/textures/mcl_hunger_icon_foodpoison.png b/mods/PLAYER/mcl_hunger/textures/mcl_hunger_icon_foodpoison.png index 141b4b44d80102989137051a2b991b8c4d4c2fd2..130601c8ef925bbe70bf63e1c7a12671bf20f3f6 100644 GIT binary patch delta 201 zcmV;)05<=P0onnO8Gi-<007{T1`q%M010qNS#tmY3ljhU3ljkVnw%H_004|hL_t&- z(_>^{U|o1sk@!Vq`!AECD`Z{}t7x86?$MU}FE#6*8ggvhtNjF`0pZfq{jA zfq~)O^A8LR3<3-c3=GI7!T}@9P5gY^3__9+h3}q!VEFjyD?;3TaO*yP`U*9X0lP^s zfb5pC7$*j+h!uES@SXauAVU%JD==rJ=@$vqdI`$@SfhE)ElMC6zGW4~`!URSg&! Xk_9xxj^2pQ2N~<>>gTe~DWM4f><1#- diff --git a/mods/PLAYER/mcl_player/init.lua b/mods/PLAYER/mcl_player/init.lua index 9df852502..6cf2f0014 100644 --- a/mods/PLAYER/mcl_player/init.lua +++ b/mods/PLAYER/mcl_player/init.lua @@ -88,22 +88,41 @@ function mcl_player.player_set_model(player, model_name) player_model[name] = model_name end -function mcl_player.player_set_textures(player, textures, preview) - local name = player:get_player_name() - player_textures[name] = textures - player:set_properties({textures = textures,}) - if preview then - player:get_meta():set_string("mcl_player:preview", preview) - end +local function set_texture(player, index, texture) + local textures = player_textures[player:get_player_name()] + textures[index] = texture + player:set_properties({textures = textures}) +end + +local function set_preview(player, field, preview) + player:get_meta():set_string("mcl_player:" .. field .. "_preview", preview) +end + +function mcl_player.player_set_skin(player, texture, preview) + set_texture(player, 1, texture) + set_preview(player, "skin", preview) +end + +function mcl_player.player_set_armor(player, texture, preview) + set_texture(player, 2, texture) + set_preview(player, "armor", preview) +end + +function mcl_player.player_set_wielditem(player, texture) + set_texture(player, 3, texture) end function mcl_player.player_get_preview(player) - local preview = player:get_meta():get_string("mcl_player:preview") - if preview == nil or preview == "" then - return "player.png" - else - return preview + local preview = player:get_meta():get_string("mcl_player:skin_preview") + if preview == "" then + preview = "player.png" end + local armor_preview = player:get_meta():set_string("mcl_player:armor_preview") + if armor_preview ~= "" then + preview = preview .. "^" .. armor_preview + end + return preview + end function mcl_player.get_player_formspec_model(player, x, y, w, h, fsname) @@ -129,8 +148,10 @@ end -- Update appearance when the player joins minetest.register_on_joinplayer(function(player) - mcl_player.player_attached[player:get_player_name()] = false + local name = player:get_player_name() + mcl_player.player_attached[name] = false mcl_player.player_set_model(player, "character.b3d") + player_textures[name] = {"blank.png", "blank.png", "blank.png"} --player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30) player:set_fov(86.1) -- see >>> end) @@ -222,62 +243,3 @@ minetest.register_globalstep(function(dtime) end end end) - --- Don't change HP if the player falls in the water or through End Portal: -minetest.register_on_player_hpchange(function(player, hp_change, reason) - if reason and reason.type == "fall" and player then - local pos = player:get_pos() - local node = minetest.get_node(pos) - local velocity = player:get_velocity() or player:get_player_velocity() or {x=0,y=-10,z=0} - local v_axis_max = math.max(math.abs(velocity.x), math.abs(velocity.y), math.abs(velocity.z)) - local step = {x = velocity.x / v_axis_max, y = velocity.y / v_axis_max, z = velocity.z / v_axis_max} - for i = 1, math.ceil(v_axis_max/5)+1 do -- trace at least 1/5 of the way per second - if not node or node.name == "ignore" then - minetest.get_voxel_manip():read_from_map(pos, pos) - node = minetest.get_node(pos) - end - if node then - if minetest.registered_nodes[node.name].walkable then - return hp_change - end - if minetest.get_item_group(node.name, "water") ~= 0 then - return 0 - end - if node.name == "mcl_portals:portal_end" then - if mcl_portals and mcl_portals.end_teleport then - mcl_portals.end_teleport(player) - end - return 0 - end - end - pos = vector.add(pos, step) - node = minetest.get_node(pos) - end - end - return hp_change -end, true) - -minetest.register_on_respawnplayer(function(player) - local pos = player:get_pos() - minetest.add_particlespawner({ - amount = 50, - time = 0.001, - minpos = vector.add(pos, 0), - maxpos = vector.add(pos, 0), - minvel = vector.new(-5,-5,-5), - maxvel = vector.new(5,5,5), - minexptime = 1.1, - maxexptime = 1.5, - minsize = 1, - maxsize = 2, - collisiondetection = false, - vertical = false, - texture = "mcl_particles_mob_death.png^[colorize:#000000:255", - }) - - minetest.sound_play("mcl_mobs_mob_poof", { - pos = pos, - gain = 1.0, - max_hear_distance = 8, - }, true) -end) diff --git a/mods/PLAYER/mcl_playerinfo/mod.conf b/mods/PLAYER/mcl_playerinfo/mod.conf index 9f2b0c4a5..25c05f03e 100644 --- a/mods/PLAYER/mcl_playerinfo/mod.conf +++ b/mods/PLAYER/mcl_playerinfo/mod.conf @@ -1,4 +1,4 @@ name = mcl_playerinfo author = TenPlus1 description = This is a helper mod for other mod to query the nodes around the player. -depends = mcl_init, mcl_core, mcl_particles, mcl_death_messages +depends = mcl_init, mcl_core, mcl_particles diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index ee2426713..9436ae94d 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -114,37 +114,6 @@ end local node_stand, node_stand_below, node_head, node_feet - -minetest.register_on_punchplayer(function(player, hitter, damage) - if hitter:is_player() then - if hitter:get_player_control().aux1 then - player:add_velocity(hitter:get_velocity()) - end - if hitter:get_velocity().y < -6 then - player:set_hp(player:get_hp() - (damage * math.random(0.50 , 0.75))) - local pos = player:get_pos() - minetest.add_particlespawner({ - amount = 15, - time = 0.1, - minpos = {x=pos.x-0.5, y=pos.y-0.5, z=pos.z-0.5}, - maxpos = {x=pos.x+0.5, y=pos.y+0.5, z=pos.z+0.5}, - minvel = {x=-0.1, y=-0.1, z=-0.1}, - maxvel = {x=0.1, y=0.1, z=0.1}, - minacc = {x=0, y=0, z=0}, - maxacc = {x=0, y=0, z=0}, - minexptime = 1, - maxexptime = 2, - minsize = 1.5, - maxsize = 1.5, - collisiondetection = false, - vertical = false, - texture = "mcl_particles_crit.png^[colorize:#bc7a57:127", - }) - end - end -end) - - minetest.register_globalstep(function(dtime) time = time + dtime @@ -166,6 +135,7 @@ minetest.register_globalstep(function(dtime) local parent = player:get_attach() local wielded = player:get_wielded_item() local player_velocity = player:get_velocity() or player:get_player_velocity() + local wielded_def = wielded:get_definition() local c_x, c_y = unpack(player_collision(player)) @@ -196,11 +166,11 @@ minetest.register_globalstep(function(dtime) and (fly_node == "air" or fly_node == "ignore") if elytra.active then - if player_velocity.x < (player_velocity_old.x - 10) or player_velocity.x > (player_velocity_old.x + 10) then - player:set_hp(player:get_hp() - (math.abs(player_velocity_old.x) * 0.2)) + if player_velocity.x < (player_velocity_old.x - 10) or player_velocity.x > (player_velocity_old.x + 10) and fly_node ~= "ignore" then + mcl_util.deal_damage(player, math.abs(player_velocity_old.x) * 0.2, {type = "fly_into_wall"}) end - if player_velocity.z < (player_velocity_old.z - 10) or player_velocity.z > (player_velocity_old.z + 10) then - player:set_hp(player:get_hp() - (math.abs(player_velocity_old.z) * 0.2)) + if player_velocity.z < (player_velocity_old.z - 10) or player_velocity.z > (player_velocity_old.z + 10) and fly_node ~= "ignore" then + mcl_util.deal_damage(player, math.abs(player_velocity_old.z) * 0.2, {type = "fly_into_wall"}) end mcl_player.player_set_animation(player, "fly") if player_velocity.y < -1.5 then @@ -247,7 +217,16 @@ minetest.register_globalstep(function(dtime) playerphysics.remove_physics_factor(player, "gravity", "mcl_playerplus:elytra") end + if wielded_def and wielded_def._mcl_toollike_wield then + player:set_bone_position("Wield_Item", vector.new(0,3.9,1.3), vector.new(90,0,0)) + elseif string.find(wielded:get_name(), "mcl_bows:bow") then + player:set_bone_position("Wield_Item", vector.new(.5,4.5,-1.6), vector.new(90,0,20)) + else + player:set_bone_position("Wield_Item", vector.new(-1.5,4.9,1.8), vector.new(135,0,90)) + end + player_velocity_old = player:get_velocity() or player:get_player_velocity() + -- controls right and left arms pitch when shooting a bow if string.find(wielded:get_name(), "mcl_bows:bow") and control.RMB and not control.LMB and not control.up and not control.down and not control.left and not control.right then player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) @@ -421,8 +400,7 @@ minetest.register_globalstep(function(dtime) -- Check privilege, too and (not check_player_privs(name, {noclip = true})) then if player:get_hp() > 0 then - mcl_death_messages.player_damage(player, S("@1 suffocated to death.", name)) - player:set_hp(player:get_hp() - 1) + mcl_util.deal_damage(player, 1, {type = "in_wall"}) end end @@ -437,8 +415,7 @@ minetest.register_globalstep(function(dtime) local dist_feet = vector.distance({x=pos.x, y=pos.y-1, z=pos.z}, near) if dist < 1.1 or dist_feet < 1.1 then if player:get_hp() > 0 then - mcl_death_messages.player_damage(player, S("@1 was prickled to death by a cactus.", name)) - player:set_hp(player:get_hp() - 1, { type = "punch", from = "mod" }) + mcl_util.deal_damage(player, 1, {type = "cactus"}) end end end @@ -545,3 +522,61 @@ minetest.register_on_leaveplayer(function(player) mcl_playerplus_internal[name] = nil mcl_playerplus.elytra[player] = nil end) + +-- Don't change HP if the player falls in the water or through End Portal: +mcl_damage.register_modifier(function(obj, damage, reason) + if reason.type == "fall" then + local pos = obj:get_pos() + local node = minetest.get_node(pos) + local velocity = obj:get_velocity() or obj:get_player_velocity() or {x=0,y=-10,z=0} + local v_axis_max = math.max(math.abs(velocity.x), math.abs(velocity.y), math.abs(velocity.z)) + local step = {x = velocity.x / v_axis_max, y = velocity.y / v_axis_max, z = velocity.z / v_axis_max} + for i = 1, math.ceil(v_axis_max/5)+1 do -- trace at least 1/5 of the way per second + if not node or node.name == "ignore" then + minetest.get_voxel_manip():read_from_map(pos, pos) + node = minetest.get_node(pos) + end + if node then + if minetest.registered_nodes[node.name].walkable then + return + end + if minetest.get_item_group(node.name, "water") ~= 0 then + return 0 + end + if node.name == "mcl_portals:portal_end" then + if mcl_portals and mcl_portals.end_teleport then + mcl_portals.end_teleport(obj) + end + return 0 + end + end + pos = vector.add(pos, step) + node = minetest.get_node(pos) + end + end +end, -200) + +minetest.register_on_respawnplayer(function(player) + local pos = player:get_pos() + minetest.add_particlespawner({ + amount = 50, + time = 0.001, + minpos = vector.add(pos, 0), + maxpos = vector.add(pos, 0), + minvel = vector.new(-5,-5,-5), + maxvel = vector.new(5,5,5), + minexptime = 1.1, + maxexptime = 1.5, + minsize = 1, + maxsize = 2, + collisiondetection = false, + vertical = false, + texture = "mcl_particles_mob_death.png^[colorize:#000000:255", + }) + + minetest.sound_play("mcl_mobs_mob_poof", { + pos = pos, + gain = 1.0, + max_hear_distance = 8, + }, true) +end) diff --git a/mods/PLAYER/mcl_playerplus/mod.conf b/mods/PLAYER/mcl_playerplus/mod.conf index 95121f8ea..6989957d7 100644 --- a/mods/PLAYER/mcl_playerplus/mod.conf +++ b/mods/PLAYER/mcl_playerplus/mod.conf @@ -1,5 +1,5 @@ name = mcl_playerplus author = TenPlus1 description = Adds some simple player-related gameplay effects: Hurt by touching a cactus, suffocation and more. -depends = mcl_init, mcl_core, mcl_particles, mcl_hunger, mcl_death_messages, playerphysics, mcl_playerinfo, mcl_weather, mcl_spawn, mcl_enchanting +depends = mcl_init, mcl_core, mcl_particles, mcl_hunger, playerphysics, mcl_playerinfo, mcl_weather, mcl_spawn, mcl_enchanting, mcl_damage diff --git a/mods/PLAYER/mcl_skins/init.lua b/mods/PLAYER/mcl_skins/init.lua index 297817fac..84f147da6 100644 --- a/mods/PLAYER/mcl_skins/init.lua +++ b/mods/PLAYER/mcl_skins/init.lua @@ -7,7 +7,6 @@ mcl_skins = { } local S = minetest.get_translator("mcl_skins") -local has_mcl_armor = minetest.get_modpath("mcl_armor") local has_mcl_inventory = minetest.get_modpath("mcl_inventory") -- load skin list and metadata @@ -115,10 +114,6 @@ mcl_skins.set_player_skin = function(player, skin_id) mcl_skins.previews[playername] = preview player:get_meta():set_string("mcl_skins:skin_id", tostring(skin_id)) mcl_skins.update_player_skin(player) - if has_mcl_armor then - armor.textures[playername].skin = skin_file - armor:update_player_visuals(player) - end if has_mcl_inventory then mcl_inventory.update_inventory_formspec(player) end @@ -134,7 +129,7 @@ mcl_skins.update_player_skin = function(player) return end local playername = player:get_player_name() - mcl_player.player_set_textures(player, { mcl_skins.skins[playername] .. ".png" }, mcl_skins.previews[playername] .. ".png" ) + mcl_player.player_set_skin(player, mcl_skins.skins[playername] .. ".png", mcl_skins.previews[playername] .. ".png") end -- load player skin on join @@ -239,7 +234,7 @@ end) mcl_skins.show_formspec = function(playername) local formspec = "size[7,8.5]" - formspec = formspec .. "label[2,2;" .. minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Select player skin:"))) .. "]" + formspec = formspec .. "label[2,2;" .. minetest.formspec_escape(minetest.colorize("#383838", S("Select player skin:"))) .. "]" .. "textlist[0,2.5;6.8,6;skins_set;" local meta @@ -267,7 +262,7 @@ mcl_skins.show_formspec = function(playername) if meta then if meta.name and meta.name ~= "" then - formspec = formspec .. "label[2,0.5;" .. minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Name: @1", meta.name))) .. "]" + formspec = formspec .. "label[2,0.5;" .. minetest.formspec_escape(minetest.colorize("#383838", S("Name: @1", meta.name))) .. "]" end end diff --git a/mods/PLAYER/mcl_skins/mod.conf b/mods/PLAYER/mcl_skins/mod.conf index 6ccbe98f1..657d3cc0e 100644 --- a/mods/PLAYER/mcl_skins/mod.conf +++ b/mods/PLAYER/mcl_skins/mod.conf @@ -2,4 +2,4 @@ name = mcl_skins author = TenPlus1 description = Mod that allows players to set their individual skins. depends = mcl_player -optional_depends = mcl_inventory, intllib, mcl_armor +optional_depends = mcl_inventory, intllib diff --git a/mods/PLAYER/wieldview/LICENSE.txt b/mods/PLAYER/mcl_wieldview/LICENSE.txt similarity index 100% rename from mods/PLAYER/wieldview/LICENSE.txt rename to mods/PLAYER/mcl_wieldview/LICENSE.txt diff --git a/mods/PLAYER/wieldview/README.txt b/mods/PLAYER/mcl_wieldview/README.txt similarity index 100% rename from mods/PLAYER/wieldview/README.txt rename to mods/PLAYER/mcl_wieldview/README.txt diff --git a/mods/PLAYER/mcl_wieldview/init.lua b/mods/PLAYER/mcl_wieldview/init.lua new file mode 100644 index 000000000..fc9ebc074 --- /dev/null +++ b/mods/PLAYER/mcl_wieldview/init.lua @@ -0,0 +1,118 @@ +mcl_wieldview = { + players = {} +} + +function mcl_wieldview.get_item_texture(itemname) + if itemname == "" then + return + end + + local def = minetest.registered_items[itemname] + if not def then + return + end + + local inv_image = def.inventory_image + if inv_image == "" then + return + end + + local texture = inv_image + + local transform = minetest.get_item_group(itemname, "wieldview_transform") + if transform then + -- This actually works with groups ratings because transform1, transform2, etc. + -- have meaning and transform0 is used for identidy, so it can be ignored + texture = texture .. "^[transform" .. transform + end + + return texture +end + +function mcl_wieldview.update_wielded_item(player) + if not player then + return + end + local itemstack = player:get_wielded_item() + local itemname = itemstack:get_name() + + local def = mcl_wieldview.players[player] + + if def.item == itemname then + return + end + + def.item = itemname + def.texture = mcl_wieldview.get_item_texture(itemname) or "blank.png" + + mcl_player.player_set_wielditem(player, def.texture) +end + +minetest.register_on_joinplayer(function(player) + mcl_wieldview.players[player] = {item = "", texture = "blank.png"} + + minetest.after(0, function() + if not player:is_player() then + return + end + + mcl_wieldview.update_wielded_item(player) + + local itementity = minetest.add_entity(player:get_pos(), "mcl_wieldview:wieldnode") + itementity:set_attach(player, "Hand_Right", vector.new(0, 1, 0), vector.new(90, 0, 45)) + itementity:get_luaentity().wielder = player + end) +end) + +minetest.register_on_leaveplayer(function(player) + mcl_wieldview.players[player] = nil +end) + +minetest.register_globalstep(function() + for _, player in pairs(minetest.get_connected_players()) do + mcl_wieldview.update_wielded_item(player) + end +end) + +minetest.register_entity("mcl_wieldview:wieldnode", { + initial_properties = { + hp_max = 1, + visual = "wielditem", + physical = false, + textures = {""}, + automatic_rotate = 1.5, + is_visible = true, + pointable = false, + collide_with_objects = false, + static_save = false, + collisionbox = {-0.21, -0.21, -0.21, 0.21, 0.21, 0.21}, + selectionbox = {-0.21, -0.21, -0.21, 0.21, 0.21, 0.21}, + visual_size = {x = 0.21, y = 0.21}, + }, + + itemstring = "", + + on_step = function(self) + if self.wielder:is_player() then + local def = mcl_wieldview.players[self.wielder] + local itemstring = def.item + + if self.itemstring ~= itemstring then + local itemdef = minetest.registered_items[itemstring] + self.object:set_properties({glow = itemdef and itemdef.light_source or 0}) + + -- wield item as cubic + if def.texture == "blank.png" then + self.object:set_properties({textures = {itemstring}}) + -- wield item as flat + else + self.object:set_properties({textures = {""}}) + end + + self.itemstring = itemstring + end + else + self.object:remove() + end + end, +}) diff --git a/mods/PLAYER/wieldview/mod.conf b/mods/PLAYER/mcl_wieldview/mod.conf similarity index 66% rename from mods/PLAYER/wieldview/mod.conf rename to mods/PLAYER/mcl_wieldview/mod.conf index 4cd2a6935..4b3097876 100644 --- a/mods/PLAYER/wieldview/mod.conf +++ b/mods/PLAYER/mcl_wieldview/mod.conf @@ -1,5 +1,4 @@ -name = wieldview +name = mcl_wieldview author = stujones11 description = Makes hand wielded items visible to other players. -depends = mcl_armor - +depends = mcl_player diff --git a/mods/PLAYER/wieldview/init.lua b/mods/PLAYER/wieldview/init.lua deleted file mode 100644 index 91b2cd721..000000000 --- a/mods/PLAYER/wieldview/init.lua +++ /dev/null @@ -1,131 +0,0 @@ -local update_time = tonumber(minetest.settings:get("wieldview_update_time")) -if not update_time then - update_time = 2 - minetest.settings:set("wieldview_update_time", tostring(update_time)) -end -local node_tiles = minetest.settings:get_bool("wieldview_node_tiles") -if not node_tiles then - node_tiles = false - minetest.settings:set("wieldview_node_tiles", "false") -end - -wieldview = { - wielded_item = {}, - transform = {}, -} - -dofile(minetest.get_modpath(minetest.get_current_modname()).."/transform.lua") - -wieldview.get_item_texture = function(self, item) - local texture = "blank.png" - if item ~= "" then - if minetest.registered_items[item] then - if minetest.registered_items[item].inventory_image ~= "" then - texture = minetest.registered_items[item].inventory_image - elseif node_tiles == true and minetest.registered_items[item].tiles - and type(minetest.registered_items[item].tiles[1]) == "string" - and minetest.registered_items[item].tiles[1] ~= "" then - texture = minetest.inventorycube(minetest.registered_items[item].tiles[1]) - end - end - -- Get item image transformation, first from group, then from transform.lua - local transform = minetest.get_item_group(item, "wieldview_transform") - if transform == 0 then - transform = wieldview.transform[item] - end - if transform then - -- This actually works with groups ratings because transform1, transform2, etc. - -- have meaning and transform0 is used for identidy, so it can be ignored - texture = texture.."^[transform"..tostring(transform) - end - end - return texture -end - -wieldview.update_wielded_item = function(self, player) - if not player then - return - end - local name = player:get_player_name() - local stack = player:get_wielded_item() - local item = stack:get_name() - if not item then - return - end - if self.wielded_item[name] then - if self.wielded_item[name] == item then - return - end - if not armor.textures[name] then - return - end - armor.textures[name].wielditem = self:get_item_texture(item) - armor:update_player_visuals(player) - end - self.wielded_item[name] = item -end - -minetest.register_on_joinplayer(function(player) - local name = player:get_player_name() - wieldview.wielded_item[name] = "" - minetest.after(0, function(target) - -- if the player left :is_player() will return nil - if not target:is_player() then - return - end - wieldview:update_wielded_item(target) - local itementity = minetest.add_entity(target:get_pos(), "wieldview:wieldnode") - itementity:set_attach(target, "Hand_Right", vector.new(0, 1, 0), vector.new(90, 0, 45)) - itementity:get_luaentity().wielder = name - end, player) -end) - -minetest.register_globalstep(function() - for _,player in pairs(minetest.get_connected_players()) do - wieldview:update_wielded_item(player) - end -end) - -minetest.register_entity("wieldview:wieldnode", { - initial_properties = { - hp_max = 1, - visual = "wielditem", - physical = false, - textures = {""}, - automatic_rotate = 1.5, - is_visible = true, - pointable = false, - collide_with_objects = false, - static_save = false, - collisionbox = {-0.21, -0.21, -0.21, 0.21, 0.21, 0.21}, - selectionbox = {-0.21, -0.21, -0.21, 0.21, 0.21, 0.21}, - visual_size = {x = 0.21, y = 0.21}, - }, - - itemstring = "", - - on_step = function(self) - local player = minetest.get_player_by_name(self.wielder) - if player then - local wielded = player:get_wielded_item() - local itemstring = wielded:get_name() - - if self.itemstring ~= itemstring then - local def = minetest.registered_items[itemstring] - self.object:set_properties({glow = def and def.light_source or 0}) - - -- wield item as cubic - if armor.textures[self.wielder].wielditem == "blank.png" then - self.object:set_properties({textures = {itemstring}}) - -- wield item as flat - else - self.object:set_properties({textures = {""}}) - end - - self.itemstring = itemstring - end - else - self.object:remove() - end - end, -}) diff --git a/mods/PLAYER/wieldview/transform.lua b/mods/PLAYER/wieldview/transform.lua deleted file mode 100644 index a19956796..000000000 --- a/mods/PLAYER/wieldview/transform.lua +++ /dev/null @@ -1,10 +0,0 @@ --- Wielded Item Transformations - http://dev.minetest.net/texture - -wieldview.transform = { - ["screwdriver:screwdriver"]="R90", - ["screwdriver:screwdriver1"]="R90", - ["screwdriver:screwdriver2"]="R90", - ["screwdriver:screwdriver3"]="R90", - ["screwdriver:screwdriver4"]="R90", -} -