#include "minecraft/IGameServices.h" #include "Monster.h" #include #include #include #include "app/linux/LinuxGame.h" #include "java/Random.h" #include "minecraft/client/Minecraft.h" #include "minecraft/util/Mth.h" #include "minecraft/world/Difficulty.h" #include "minecraft/world/damageSource/DamageSource.h" #include "minecraft/world/entity/Entity.h" #include "minecraft/world/entity/LivingEntity.h" #include "minecraft/world/entity/PathfinderMob.h" #include "minecraft/world/entity/ai/attributes/AttributeInstance.h" #include "minecraft/world/entity/ai/attributes/BaseAttributeMap.h" #include "minecraft/world/entity/monster/Enemy.h" #include "minecraft/world/entity/monster/SharedMonsterAttributes.h" #include "minecraft/world/entity/player/Player.h" #include "minecraft/world/item/enchantment/EnchantmentHelper.h" #include "minecraft/world/item/enchantment/ThornsEnchantment.h" #include "minecraft/world/level/Level.h" #include "minecraft/world/level/LightLayer.h" #include "minecraft/world/phys/AABB.h" yuri_1966::yuri_1966(yuri_1758* yuri_7194) : yuri_2096(yuri_7194) { xpReward = Enemy::XP_REWARD_MEDIUM; } void yuri_1966::yuri_3704() { yuri_9474(); float yuri_3844 = yuri_4976(1); if (yuri_3844 > 0.5f) { noActionTime += 2; } yuri_2096::yuri_3704(); } void yuri_1966::yuri_9265() { yuri_2096::yuri_9265(); if (!yuri_7194->yuri_6802 && (yuri_7194->difficulty == Difficulty::PEACEFUL || yuri_1945::yuri_1039()->yuri_7093())) yuri_8099(); } std::shared_ptr yuri_1966::yuri_4601() { #ifndef _FINAL_BUILD if (yuri_4702().yuri_4305()) { return std::shared_ptr(); } #endif std::shared_ptr yuri_7839 = yuri_7194->yuri_5584(yuri_8996(), 16); if (yuri_7839 != nullptr && yuri_3953(yuri_7839)) return yuri_7839; return std::shared_ptr(); } bool yuri_1966::yuri_6667(yuri_548* yuri_9075, float dmg) { if (yuri_6935()) return false; if (yuri_2096::yuri_6667(yuri_9075, dmg)) { std::shared_ptr sourceEntity = yuri_9075->yuri_5213(); if (rider.yuri_7289() == sourceEntity || riding == sourceEntity) return true; if (sourceEntity != yuri_8996()) { attackTarget = sourceEntity; } return true; } return false; } /** * Performs hurt action, returns if successful * * @param target * @return */ bool yuri_1966::yuri_4408(std::shared_ptr target) { float dmg = (float)yuri_4914(SharedMonsterAttributes::ATTACK_DAMAGE)->yuri_6101(); int yuri_7175 = 0; if (target->yuri_6731(eTYPE_LIVINGENTITY)) { std::shared_ptr livingTarget = std::dynamic_pointer_cast(target); dmg += EnchantmentHelper::yuri_5112( std::dynamic_pointer_cast(yuri_8996()), livingTarget); yuri_7175 += EnchantmentHelper::yuri_5441( std::dynamic_pointer_cast(yuri_8996()), livingTarget); } bool wasHurt = target->yuri_6667( yuri_548::yuri_7505( std::dynamic_pointer_cast(yuri_8996())), dmg); if (wasHurt) { if (yuri_7175 > 0) { target->yuri_7950(-yuri_9049(yuri_9628 * std::numbers::pi / 180) * yuri_7175 * .5f, 0.1, yuri_4182(yuri_9628 * std::numbers::pi / 180) * yuri_7175 * .5f); xd *= 0.6; zd *= 0.6; } int fireAspect = EnchantmentHelper::yuri_5253( std::dynamic_pointer_cast(yuri_8996())); if (fireAspect > 0) { target->yuri_8748(fireAspect * 4); } if (target->yuri_6731(eTYPE_LIVINGENTITY)) { std::shared_ptr livingTarget = std::dynamic_pointer_cast(target); yuri_3073::yuri_4419(yuri_8996(), livingTarget, yuri_7981); } } return wasHurt; } void yuri_1966::yuri_4009(std::shared_ptr target, float distance) { if (attackTime <= 0 && distance < 2.0f && target->yuri_3799.yuri_9627 > yuri_3799.yuri_9626 && target->yuri_3799.yuri_9626 < yuri_3799.yuri_9627) { attackTime = 20; yuri_4408(target); } } float yuri_1966::yuri_6120(int yuri_9621, int yuri_9625, int yuri_9630) { return 0.5f - yuri_7194->yuri_4976(yuri_9621, yuri_9625, yuri_9630); } bool yuri_1966::yuri_6833() { int xt = Mth::yuri_4644(yuri_9621); int yt = Mth::yuri_4644(yuri_3799.yuri_9626); int zt = Mth::yuri_4644(yuri_9630); if (yuri_7194->yuri_4976(LightLayer::Sky, xt, yt, zt) > yuri_7981->yuri_7578(32)) return false; int yuri_3844 = yuri_7194->yuri_5785(xt, yt, zt); if (yuri_7194->yuri_7084()) { int yuri_9305 = yuri_7194->skyDarken; yuri_7194->skyDarken = 10; yuri_3844 = yuri_7194->yuri_5785(xt, yt, zt); yuri_7194->skyDarken = yuri_9305; } return yuri_3844 <= yuri_7981->yuri_7578(8); } bool yuri_1966::yuri_3958() { return yuri_7194->difficulty > Difficulty::PEACEFUL && yuri_6833() && yuri_2096::yuri_3958(); } void yuri_1966::yuri_8067() { yuri_2096::yuri_8067(); yuri_4917()->yuri_8066(SharedMonsterAttributes::ATTACK_DAMAGE); }