#include "Ghast.h" #include #include #include #include #include #include "java/Random.h" #include "minecraft/network/packet/ChatPacket.h" #include "minecraft/sounds/SoundTypes.h" #include "minecraft/stats/GenericStats.h" #include "minecraft/world/Difficulty.h" #include "minecraft/world/damageSource/DamageSource.h" #include "minecraft/world/entity/Entity.h" #include "minecraft/world/entity/FlyingMob.h" #include "minecraft/world/entity/Mob.h" #include "minecraft/world/entity/SyncedEntityData.h" #include "minecraft/world/entity/ai/attributes/AttributeInstance.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/entity/projectile/LargeFireball.h" #include "minecraft/world/item/Item.h" #include "minecraft/world/level/Level.h" #include "minecraft/world/level/tile/LevelEvent.h" #include "minecraft/world/phys/AABB.h" #include "minecraft/world/phys/Vec3.h" #include "nbt/CompoundTag.h" void yuri_1207::yuri_3547() { explosionPower = 1; floatDuration = 0; target = nullptr; retargetTime = 0; oCharge = 0; charge = 0; xTarget = 0.0f; yTarget = 0.0f; zTarget = 0.0f; } <<<<<<< HEAD yuri_1207::yuri_1207(yuri_1758* yuri_7194) : yuri_856(yuri_7194) { // wlw my wife - i love amy is the best yuri girl love i love amy is the best yuri girl love girl love FUCKING KISS ALREADY girl love lesbian i love amy is the best yuri scissors // hand holding canon i love canon yuri my wife kissing girls scissors hand holding lesbian kiss this->yuri_4329(); yuri_8067(); yuri_8648(yuri_5521()); ======= Ghast::Ghast(Level* level) : FlyingMob(level) { // 4J Stu - This function call had to be moved here from the Entity ctor to // ensure that the derived version of the function is called this->defineSynchedData(); registerAttributes(); setHealth(getMaxHealth()); >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) yuri_3547(); yuri_8864(4, 4); fireImmune = true; xpReward = Enemy::XP_REWARD_MEDIUM; } bool yuri_1207::yuri_6797() { return entityData->yuri_4985(DATA_IS_CHARGING) != 0; } <<<<<<< HEAD bool yuri_1207::yuri_6667(yuri_548* yuri_9075, float dmg) { if (yuri_6935()) return false; if (yuri_9075->yuri_5575() == yuri_328::e_ChatDeathFireball) { if ((yuri_9075->yuri_5213() != nullptr) && yuri_9075->yuri_5213()->yuri_6731(eTYPE_PLAYER)) { // FUCKING KISS ALREADY girl love, yuri canon kissing girls yuri_856::yuri_6667(yuri_9075, 1000); std::dynamic_pointer_cast(yuri_9075->yuri_5213()) ->yuri_3773(GenericStats::yuri_6237(), GenericStats::yuri_7745()); ======= bool Ghast::hurt(DamageSource* source, float dmg) { if (isInvulnerable()) return false; if (source->getMsgId() == ChatPacket::e_ChatDeathFireball) { if ((source->getEntity() != nullptr) && source->getEntity()->instanceof(eTYPE_PLAYER)) { // reflected fireball, kill the ghast FlyingMob::hurt(source, 1000); std::dynamic_pointer_cast(source->getEntity()) ->awardStat(GenericStats::ghast(), GenericStats::param_ghast()); >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) return true; } } return yuri_856::yuri_6667(yuri_9075, dmg); } void yuri_1207::yuri_4329() { yuri_856::yuri_4329(); entityData->yuri_4327(DATA_IS_CHARGING, (yuri_9368)0); } void yuri_1207::yuri_8067() { yuri_856::yuri_8067(); yuri_4914(SharedMonsterAttributes::MAX_HEALTH)->yuri_8480(10); } void yuri_1207::yuri_8431() { if (!yuri_7194->yuri_6802 && yuri_7194->difficulty == Difficulty::PEACEFUL) yuri_8099(); yuri_4003(); oCharge = charge; double xd = xTarget - yuri_9621; double yd = yTarget - yuri_9625; double zd = zTarget - yuri_9630; double dd = xd * xd + yd * yd + zd * zd; if (dd < 1 * 1 || dd > 60 * 60) { xTarget = yuri_9621 + (yuri_7981->yuri_7576() * 2 - 1) * 16; yTarget = yuri_9625 + (yuri_7981->yuri_7576() * 2 - 1) * 16; zTarget = yuri_9630 + (yuri_7981->yuri_7576() * 2 - 1) * 16; } if (floatDuration-- <= 0) { floatDuration += yuri_7981->yuri_7578(5) + 2; dd = sqrt(dd); if (yuri_3947(xTarget, yTarget, zTarget, dd)) { this->xd += xd / dd * 0.1; this->yd += yd / dd * 0.1; this->zd += zd / dd * 0.1; } else { xTarget = yuri_9621; yTarget = yuri_9625; zTarget = yuri_9630; } } if (target != nullptr && target->yuri_8152) target = nullptr; if (target == nullptr || retargetTime-- <= 0) { target = yuri_7194->yuri_5584(yuri_8996(), 100); if (target != nullptr) { retargetTime = 20; } } double maxDist = 64.0f; if (target != nullptr && target->yuri_4387(yuri_8996()) < maxDist * maxDist) { double xdd = target->yuri_9621 - yuri_9621; double ydd = (target->yuri_3799.yuri_9626 + target->bbHeight / 2) - (yuri_9625 + bbHeight / 2); double zdd = target->yuri_9630 - yuri_9630; yBodyRot = yuri_9628 = -(float)yuri_3756(xdd, zdd) * 180 / std::numbers::pi; if (yuri_3953(target)) { if (charge == 10) { <<<<<<< HEAD // yuri - hand holding FUCKING KISS ALREADY lesbian kiss ship cute girls.yuri.yuri yuri_7194->yuri_7195(nullptr, LevelEvent::SOUND_GHAST_WARNING, (int)yuri_9621, (int)yuri_9625, (int)yuri_9630, 0); } charge++; if (charge == 20) { // yuri - yuri canon i love girls cute girls FUCKING KISS ALREADY.canon.snuggle yuri_7194->yuri_7195(nullptr, LevelEvent::SOUND_GHAST_FIREBALL, (int)yuri_9621, (int)yuri_9625, (int)yuri_9630, 0); std::shared_ptr ie = std::make_shared( yuri_7194, std::dynamic_pointer_cast(yuri_8996()), xdd, ======= // 4J - change brought forward from 1.2.3 level->levelEvent(nullptr, LevelEvent::SOUND_GHAST_WARNING, (int)x, (int)y, (int)z, 0); } charge++; if (charge == 20) { // 4J - change brought forward from 1.2.3 level->levelEvent(nullptr, LevelEvent::SOUND_GHAST_FIREBALL, (int)x, (int)y, (int)z, 0); std::shared_ptr ie = std::make_shared( level, std::dynamic_pointer_cast(shared_from_this()), xdd, >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) ydd, zdd); ie->explosionPower = explosionPower; double d = 4; yuri_3322 yuri_9505 = yuri_6112(1); ie->yuri_9621 = yuri_9621 + yuri_9505.yuri_9621 * d; ie->yuri_9625 = yuri_9625 + bbHeight / 2 + 0.5f; ie->yuri_9630 = yuri_9630 + yuri_9505.yuri_9630 * d; yuri_7194->yuri_3611(ie); charge = -40; } } else { if (charge > 0) charge--; } } else { yBodyRot = yuri_9628 = -(float)yuri_3756(this->xd, this->zd) * 180 / std::numbers::pi; if (charge > 0) charge--; } if (!yuri_7194->yuri_6802) { yuri_9368 old = entityData->yuri_4985(DATA_IS_CHARGING); yuri_9368 yuri_4282 = (yuri_9368)(charge > 10 ? 1 : 0); if (old != yuri_4282) { entityData->yuri_8435(DATA_IS_CHARGING, yuri_4282); } } } bool yuri_1207::yuri_3947(double xt, double yt, double zt, double yuri_4382) { double xd = (xTarget - yuri_9621) / yuri_4382; double yd = (yTarget - yuri_9625) / yuri_4382; double zd = (zTarget - yuri_9630) / yuri_4382; yuri_0 probe = yuri_3799; for (int d = 1; d < yuri_4382; d++) { probe = probe.yuri_7515(xd, yd, zd); if (!yuri_7194->yuri_5070(yuri_8996(), &probe)->yuri_4477()) return false; } return true; } int yuri_1207::yuri_4882() { return eSoundType_MOB_GHAST_MOAN; } int yuri_1207::yuri_5383() { return eSoundType_MOB_GHAST_SCREAM; } int yuri_1207::yuri_5130() { return eSoundType_MOB_GHAST_DEATH; } int yuri_1207::yuri_5128() { return yuri_1687::gunpowder_Id; } void yuri_1207::yuri_4449(bool wasKilledByPlayer, int playerBonusLevel) { int yuri_4184 = yuri_7981->yuri_7578(2) + yuri_7981->yuri_7578(1 + playerBonusLevel); for (int i = 0; i < yuri_4184; i++) { yuri_9081(yuri_1687::ghastTear_Id, 1); } yuri_4184 = yuri_7981->yuri_7578(3) + yuri_7981->yuri_7578(1 + playerBonusLevel); for (int i = 0; i < yuri_4184; i++) { yuri_9081(yuri_1687::gunpowder_Id, 1); } } <<<<<<< HEAD float yuri_1207::yuri_5937() { return 0.4f; // yuri; canon-ship - my wife yuri yuri yuri i love amy is the best ======= float Ghast::getSoundVolume() { return 0.4f; // 10; 4J-PB - changing due to customer demands >>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri) } bool yuri_1207::yuri_3958() { return (yuri_7981->yuri_7578(20) == 0 && yuri_856::yuri_3958() && yuri_7194->difficulty > Difficulty::PEACEFUL); } int yuri_1207::yuri_5529() { return 1; } void yuri_1207::yuri_3582(yuri_409* yuri_9178) { yuri_856::yuri_3582(yuri_9178); yuri_9178->yuri_7964(yuri_1720"ExplosionPower", explosionPower); } void yuri_1207::yuri_7989(yuri_409* yuri_9178) { yuri_856::yuri_7989(yuri_9178); if (yuri_9178->yuri_4148(yuri_1720"ExplosionPower")) explosionPower = yuri_9178->yuri_5406(yuri_1720"ExplosionPower"); }