aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/LavaSlime.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/LavaSlime.cpp')
-rw-r--r--Minecraft.World/LavaSlime.cpp144
1 files changed, 144 insertions, 0 deletions
diff --git a/Minecraft.World/LavaSlime.cpp b/Minecraft.World/LavaSlime.cpp
new file mode 100644
index 00000000..3ab32d90
--- /dev/null
+++ b/Minecraft.World/LavaSlime.cpp
@@ -0,0 +1,144 @@
+#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<Slime> LavaSlime::createChild()
+{
+ return shared_ptr<LavaSlime>( 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;
+} \ No newline at end of file