#include "stdafx.h" #include "net.minecraft.world.level.h" #include "net.minecraft.world.h" #include "net.minecraft.world.item.h" #include "..\Minecraft.Client\Textures.h" #include "LavaSlime.h" #include "SoundTypes.h" LavaSlime::LavaSlime(Level *level) : Slime(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 // 4J Stu - The Slime ctor has already called this, and as we don't override it here don't need to call it //this->defineSynchedData(); // 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 health = getMaxHealth(); this->textureIdx = TN_MOB_LAVA; // 4J was "/mob/lava.png"; fireImmune = true; walkingSpeed = .2f; } bool LavaSlime::canSpawn() { return level->difficulty > Difficulty::PEACEFUL && level->isUnobstructed(bb) && level->getCubes(shared_from_this(), bb)->empty() && !level->containsAnyLiquid(bb); } int LavaSlime::getArmorValue() { return getSize() * 3; } int LavaSlime::getLightColor(float a) { return 15 << 20 | 15 << 4; } float LavaSlime::getBrightness(float a) { return 1.0f; } ePARTICLE_TYPE LavaSlime::getParticleName() { return eParticleType_flame; } shared_ptr LavaSlime::createChild() { return shared_ptr( new LavaSlime(level) ); } int LavaSlime::getDeathLoot() { // 4J-PB - brought forward the magma cream drops return Item::magmaCream_Id; } void LavaSlime::dropDeathLoot(bool wasKilledByPlayer, int playerBonusLevel) { int loot = getDeathLoot(); if (loot > 0 && getSize() > 1) { int count = random->nextInt(4) - 2; if (playerBonusLevel > 0) { count += random->nextInt(playerBonusLevel + 1); } for (int i = 0; i < count; i++) { spawnAtLocation(loot, 1); } } } bool LavaSlime::isOnFire() { return false; } int LavaSlime::getJumpDelay() { return Slime::getJumpDelay() * 4; } void LavaSlime::decreaseSquish() { targetSquish = targetSquish * 0.90f; } void LavaSlime::jumpFromGround() { yd = 0.42f + getSize() * .1f; this->hasImpulse = true; } void LavaSlime::causeFallDamage(float distance) { } bool LavaSlime::isDealsDamage() { return true; } int LavaSlime::getAttackDamage() { return Slime::getAttackDamage() + 2; } int LavaSlime::getHurtSound() { return eSoundType_MOB_SLIME; } int LavaSlime::getDeathSound() { return eSoundType_MOB_SLIME; } int LavaSlime::getSquishSound() { if (getSize() > 1) { return eSoundType_MOB_MAGMACUBE_BIG; } return eSoundType_MOB_MAGMACUBE_SMALL; } bool LavaSlime::isInLava() { // hack that makes the lava slimes move freely on the bottom of the lava // oceans return false; } bool LavaSlime::doPlayLandSound() { return true; }