summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--VC2008/MCServer.vcproj56
-rw-r--r--source/BlockID.h89
-rw-r--r--source/Mobs/EnderDragon.cpp27
-rw-r--r--source/Mobs/EnderDragon.h25
-rw-r--r--source/Mobs/Giant.cpp27
-rw-r--r--source/Mobs/Giant.h25
-rw-r--r--source/Mobs/Horse.cpp26
-rw-r--r--source/Mobs/Horse.h25
-rw-r--r--source/Mobs/IronGolem.cpp26
-rw-r--r--source/Mobs/IronGolem.h25
-rw-r--r--source/Mobs/Magmacube.cpp8
-rw-r--r--source/Mobs/Magmacube.h10
-rw-r--r--source/Mobs/Monster.h44
-rw-r--r--source/Mobs/SnowGolem.cpp26
-rw-r--r--source/Mobs/SnowGolem.h25
-rw-r--r--source/Mobs/Wither.cpp26
-rw-r--r--source/Mobs/Wither.h25
-rw-r--r--source/Mobs/Zombiepigman.cpp26
-rw-r--r--source/Mobs/Zombiepigman.h7
-rw-r--r--source/World.cpp20
20 files changed, 473 insertions, 95 deletions
diff --git a/VC2008/MCServer.vcproj b/VC2008/MCServer.vcproj
index 2a84c416d..ace82b010 100644
--- a/VC2008/MCServer.vcproj
+++ b/VC2008/MCServer.vcproj
@@ -964,6 +964,14 @@
>
</File>
<File
+ RelativePath="..\source\Mobs\EnderDragon.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\EnderDragon.h"
+ >
+ </File>
+ <File
RelativePath="..\source\Mobs\Enderman.cpp"
>
</File>
@@ -980,11 +988,35 @@
>
</File>
<File
- RelativePath="..\source\Mobs\Magmacube.cpp"
+ RelativePath="..\source\Mobs\Giant.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Giant.h"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Horse.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Horse.h"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\IronGolem.cpp"
>
</File>
<File
- RelativePath="..\source\Mobs\Magmacube.h"
+ RelativePath="..\source\Mobs\IronGolem.h"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\MagmaCube.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\MagmaCube.h"
>
</File>
<File
@@ -1060,6 +1092,14 @@
>
</File>
<File
+ RelativePath="..\source\Mobs\SnowGolem.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\SnowGolem.h"
+ >
+ </File>
+ <File
RelativePath="..\source\Mobs\Spider.cpp"
>
</File>
@@ -1092,6 +1132,14 @@
>
</File>
<File
+ RelativePath="..\source\Mobs\Wither.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Wither.h"
+ >
+ </File>
+ <File
RelativePath="..\source\Mobs\Wolf.h"
>
</File>
@@ -1104,11 +1152,11 @@
>
</File>
<File
- RelativePath="..\source\Mobs\Zombiepigman.cpp"
+ RelativePath="..\source\Mobs\ZombiePigman.cpp"
>
</File>
<File
- RelativePath="..\source\Mobs\Zombiepigman.h"
+ RelativePath="..\source\Mobs\ZombiePigman.h"
>
</File>
</Filter>
diff --git a/source/BlockID.h b/source/BlockID.h
index 7971b4f84..c2bf8dbdf 100644
--- a/source/BlockID.h
+++ b/source/BlockID.h
@@ -323,17 +323,17 @@ enum ENUM_ITEM_ID
E_ITEM_BOOK_AND_QUILL = 386,
E_ITEM_WRITTEN_BOOK = 387,
E_ITEM_EMERALD = 388,
- // TODO: missing an item: item frame
+ E_ITEM_ITEM_FRAME = 389,
E_ITEM_FLOWER_POT = 390,
E_ITEM_CARROT = 391,
E_ITEM_POTATO = 392,
E_ITEM_BAKED_POTATO = 393,
E_ITEM_POISONOUS_POTATO = 394,
- // TODO: missing an item: empty map
+ E_ITEM_EMPTY_MAP = 395,
E_ITEM_GOLDEN_CARROT = 396,
E_ITEM_HEAD = 397,
E_ITEM_CARROT_ON_STICK = 398,
- // TODO: missing an item: nether star
+ E_ITEM_NETHER_STAR = 399,
E_ITEM_PUMPKIN_PIE = 400,
E_ITEM_FIREWORK_ROCKET = 401,
E_ITEM_FIREWORK_STAR = 402,
@@ -607,35 +607,60 @@ enum
// E_ITEM_SPAWN_EGG metas:
// See also cMonster::eType, since monster type and spawn egg meta are the same
- E_META_SPAWN_EGG_CREEPER = 50,
- E_META_SPAWN_EGG_SKELETON = 51,
- E_META_SPAWN_EGG_SPIDER = 52,
- E_META_SPAWN_EGG_ZOMBIE = 54,
- E_META_SPAWN_EGG_GIANT = 53,
- E_META_SPAWN_EGG_SLIME = 55,
- E_META_SPAWN_EGG_GHAST = 56,
- E_META_SPAWN_EGG_ZOMBIE_PIGMAN = 57,
- E_META_SPAWN_EGG_ENDERMAN = 58,
- E_META_SPAWN_EGG_CAVE_SPIDER = 59,
- E_META_SPAWN_EGG_SILVERFISH = 60,
- E_META_SPAWN_EGG_BLAZE = 61,
- E_META_SPAWN_EGG_MAGMA_CUBE = 62,
- E_META_SPAWN_EGG_ENDER_DRAGON = 63,
- E_META_SPAWN_EGG_WITHER = 64,
- E_META_SPAWN_EGG_BAT = 65,
- E_META_SPAWN_EGG_WITCH = 66,
- E_META_SPAWN_EGG_PIG = 90,
- E_META_SPAWN_EGG_SHEEP = 91,
- E_META_SPAWN_EGG_COW = 92,
- E_META_SPAWN_EGG_CHICKEN = 93,
- E_META_SPAWN_EGG_SQUID = 94,
- E_META_SPAWN_EGG_WOLF = 95,
- E_META_SPAWN_EGG_MOOSHROOM = 96,
- E_META_SPAWN_EGG_SNOW_GOLEM = 97,
- E_META_SPAWN_EGG_OCELOT = 98,
- E_META_SPAWN_EGG_IRON_GOLEM = 99,
- E_META_SPAWN_EGG_HORSE = 100,
- E_META_SPAWN_EGG_VILLAGER = 120,
+ E_META_SPAWN_EGG_PICKUP = 1,
+ E_META_SPAWN_EGG_EXPERIENCE_ORB = 2,
+ E_META_SPAWN_EGG_LEASH_KNOT = 8,
+ E_META_SPAWN_EGG_PAINTING = 9,
+ E_META_SPAWN_EGG_ARROW = 10,
+ E_META_SPAWN_EGG_SNOWBALL = 11,
+ E_META_SPAWN_EGG_FIREBALL = 12,
+ E_META_SPAWN_EGG_SMALL_FIREBALL = 13,
+ E_META_SPAWN_EGG_ENDER_PEARL = 14,
+ E_META_SPAWN_EGG_EYE_OF_ENDER = 15,
+ E_META_SPAWN_EGG_SPLASH_POTION = 16,
+ E_META_SPAWN_EGG_EXP_BOTTLE = 17,
+ E_META_SPAWN_EGG_ITEM_FRAME = 18,
+ E_META_SPAWN_EGG_WITHER_SKULL = 19,
+ E_META_SPAWN_EGG_PRIMED_TNT = 20,
+ E_META_SPAWN_EGG_FALLING_BLOCK = 21,
+ E_META_SPAWN_EGG_FIREWORK = 22,
+ E_META_SPAWN_EGG_BOAT = 41,
+ E_META_SPAWN_EGG_MINECART = 42,
+ E_META_SPAWN_EGG_MINECART_CHEST = 43,
+ E_META_SPAWN_EGG_MINECART_FURNACE = 44,
+ E_META_SPAWN_EGG_MINECART_TNT = 45,
+ E_META_SPAWN_EGG_MINECART_HOPPER = 46,
+ E_META_SPAWN_EGG_MINECART_SPAWNER = 47,
+ E_META_SPAWN_EGG_CREEPER = 50,
+ E_META_SPAWN_EGG_SKELETON = 51,
+ E_META_SPAWN_EGG_SPIDER = 52,
+ E_META_SPAWN_EGG_GIANT = 53,
+ E_META_SPAWN_EGG_ZOMBIE = 54,
+ E_META_SPAWN_EGG_SLIME = 55,
+ E_META_SPAWN_EGG_GHAST = 56,
+ E_META_SPAWN_EGG_ZOMBIE_PIGMAN = 57,
+ E_META_SPAWN_EGG_ENDERMAN = 58,
+ E_META_SPAWN_EGG_CAVE_SPIDER = 59,
+ E_META_SPAWN_EGG_SILVERFISH = 60,
+ E_META_SPAWN_EGG_BLAZE = 61,
+ E_META_SPAWN_EGG_MAGMA_CUBE = 62,
+ E_META_SPAWN_EGG_ENDER_DRAGON = 63,
+ E_META_SPAWN_EGG_WITHER = 64,
+ E_META_SPAWN_EGG_BAT = 65,
+ E_META_SPAWN_EGG_WITCH = 66,
+ E_META_SPAWN_EGG_PIG = 90,
+ E_META_SPAWN_EGG_SHEEP = 91,
+ E_META_SPAWN_EGG_COW = 92,
+ E_META_SPAWN_EGG_CHICKEN = 93,
+ E_META_SPAWN_EGG_SQUID = 94,
+ E_META_SPAWN_EGG_WOLF = 95,
+ E_META_SPAWN_EGG_MOOSHROOM = 96,
+ E_META_SPAWN_EGG_SNOW_GOLEM = 97,
+ E_META_SPAWN_EGG_OCELOT = 98,
+ E_META_SPAWN_EGG_IRON_GOLEM = 99,
+ E_META_SPAWN_EGG_HORSE = 100,
+ E_META_SPAWN_EGG_VILLAGER = 120,
+ E_META_SPAWN_EGG_ENDER_CRYSTAL = 200,
} ;
diff --git a/source/Mobs/EnderDragon.cpp b/source/Mobs/EnderDragon.cpp
new file mode 100644
index 000000000..64f2bedfa
--- /dev/null
+++ b/source/Mobs/EnderDragon.cpp
@@ -0,0 +1,27 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "EnderDragon.h"
+
+
+
+
+
+cEnderDragon::cEnderDragon(void) :
+ // TODO: Vanilla source says this, but is it right? Dragons fly, they don't stand
+ super("EnderDragon", 63, "mob.enderdragon.hit", "mob.enderdragon.end", 16.0, 8.0)
+{
+}
+
+
+
+
+
+void cEnderDragon::GetDrops(cItems & a_Drops, cEntity * a_Killer)
+{
+ return;
+}
+
+
+
+
diff --git a/source/Mobs/EnderDragon.h b/source/Mobs/EnderDragon.h
new file mode 100644
index 000000000..77177edfe
--- /dev/null
+++ b/source/Mobs/EnderDragon.h
@@ -0,0 +1,25 @@
+
+#pragma once
+
+#include "AggressiveMonster.h"
+
+
+
+
+
+class cEnderDragon :
+ public cAggressiveMonster
+{
+ typedef cAggressiveMonster super;
+
+public:
+ cEnderDragon(void);
+
+ CLASS_PROTODEF(cEnderDragon);
+
+ virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
+} ;
+
+
+
+
diff --git a/source/Mobs/Giant.cpp b/source/Mobs/Giant.cpp
new file mode 100644
index 000000000..a02758a43
--- /dev/null
+++ b/source/Mobs/Giant.cpp
@@ -0,0 +1,27 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "Giant.h"
+
+
+
+
+
+cGiant::cGiant(void) :
+ // TODO: The size is only a guesstimate, measure in vanilla and fix the size values here
+ super("Giant", 53, "mob.zombie.hurt", "mob.zombie.death", 2.0, 13.5)
+{
+}
+
+
+
+
+
+void cGiant::GetDrops(cItems & a_Drops, cEntity * a_Killer)
+{
+ AddRandomDropItem(a_Drops, 10, 50, E_ITEM_ROTTEN_FLESH);
+}
+
+
+
+
diff --git a/source/Mobs/Giant.h b/source/Mobs/Giant.h
new file mode 100644
index 000000000..356dd4352
--- /dev/null
+++ b/source/Mobs/Giant.h
@@ -0,0 +1,25 @@
+
+#pragma once
+
+#include "AggressiveMonster.h"
+
+
+
+
+
+class cGiant :
+ public cAggressiveMonster
+{
+ typedef cAggressiveMonster super;
+
+public:
+ cGiant(void);
+
+ CLASS_PROTODEF(cGiant);
+
+ virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
+} ;
+
+
+
+
diff --git a/source/Mobs/Horse.cpp b/source/Mobs/Horse.cpp
new file mode 100644
index 000000000..05ac73c15
--- /dev/null
+++ b/source/Mobs/Horse.cpp
@@ -0,0 +1,26 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "Horse.h"
+
+
+
+
+
+cHorse::cHorse(void) :
+ super("Horse", 100, "mob.horse.hit", "mob.horse.death", 1.4, 1.6)
+{
+}
+
+
+
+
+
+void cHorse::GetDrops(cItems & a_Drops, cEntity * a_Killer)
+{
+ AddRandomDropItem(a_Drops, 0, 2, E_ITEM_LEATHER);
+}
+
+
+
+
diff --git a/source/Mobs/Horse.h b/source/Mobs/Horse.h
new file mode 100644
index 000000000..a568fbbe3
--- /dev/null
+++ b/source/Mobs/Horse.h
@@ -0,0 +1,25 @@
+
+#pragma once
+
+#include "AggressiveMonster.h"
+
+
+
+
+
+class cHorse :
+ public cAggressiveMonster
+{
+ typedef cAggressiveMonster super;
+
+public:
+ cHorse(void);
+
+ CLASS_PROTODEF(cHorse);
+
+ virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
+} ;
+
+
+
+
diff --git a/source/Mobs/IronGolem.cpp b/source/Mobs/IronGolem.cpp
new file mode 100644
index 000000000..42d312c23
--- /dev/null
+++ b/source/Mobs/IronGolem.cpp
@@ -0,0 +1,26 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "IronGolem.h"
+
+
+
+
+
+cIronGolem::cIronGolem(void) :
+ super("IronGolem", 99, "mob.IronGolem.hit", "mob.IronGolem.death", 1.4, 2.9)
+{
+}
+
+
+
+
+
+void cIronGolem::GetDrops(cItems & a_Drops, cEntity * a_Killer)
+{
+ AddRandomDropItem(a_Drops, 0, 5, E_ITEM_IRON);
+}
+
+
+
+
diff --git a/source/Mobs/IronGolem.h b/source/Mobs/IronGolem.h
new file mode 100644
index 000000000..0f2298061
--- /dev/null
+++ b/source/Mobs/IronGolem.h
@@ -0,0 +1,25 @@
+
+#pragma once
+
+#include "AggressiveMonster.h"
+
+
+
+
+
+class cIronGolem :
+ public cAggressiveMonster
+{
+ typedef cAggressiveMonster super;
+
+public:
+ cIronGolem(void);
+
+ CLASS_PROTODEF(cIronGolem);
+
+ virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
+} ;
+
+
+
+
diff --git a/source/Mobs/Magmacube.cpp b/source/Mobs/Magmacube.cpp
index 0b9b57e3c..7d553758e 100644
--- a/source/Mobs/Magmacube.cpp
+++ b/source/Mobs/Magmacube.cpp
@@ -1,14 +1,14 @@
#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
-#include "Magmacube.h"
+#include "MagmaCube.h"
-cMagmacube::cMagmacube(int a_Size) :
- super("Magmacube", 62, "mob.magmacube.big", "mob.magmacube.big", 0.6 * a_Size, 0.6 * a_Size),
+cMagmaCube::cMagmaCube(int a_Size) :
+ super("MagmaCube", 62, "mob.MagmaCube.big", "mob.MagmaCube.big", 0.6 * a_Size, 0.6 * a_Size),
m_Size(a_Size)
{
}
@@ -17,7 +17,7 @@ cMagmacube::cMagmacube(int a_Size) :
-void cMagmacube::GetDrops(cItems & a_Drops, cEntity * a_Killer)
+void cMagmaCube::GetDrops(cItems & a_Drops, cEntity * a_Killer)
{
AddRandomDropItem(a_Drops, 0, 1, E_ITEM_MAGMA_CREAM);
}
diff --git a/source/Mobs/Magmacube.h b/source/Mobs/Magmacube.h
index e4df4f33d..80a1d0701 100644
--- a/source/Mobs/Magmacube.h
+++ b/source/Mobs/Magmacube.h
@@ -7,22 +7,22 @@
-class cMagmacube :
+class cMagmaCube :
public cAggressiveMonster
{
typedef cAggressiveMonster super;
public:
- /// Creates a magmacube of the specified size; size is 1 .. 3, with 1 being the smallest
- cMagmacube(int a_Size);
+ /// Creates a MagmaCube of the specified size; size is 1 .. 3, with 1 being the smallest
+ cMagmaCube(int a_Size);
- CLASS_PROTODEF(cMagmacube);
+ CLASS_PROTODEF(cMagmaCube);
virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
protected:
- /// Size of the magmacube, 1 .. 3, with 1 being the smallest
+ /// Size of the MagmaCube, 1 .. 3, with 1 being the smallest
int m_Size;
} ;
diff --git a/source/Mobs/Monster.h b/source/Mobs/Monster.h
index 484e32c65..b2676f5b1 100644
--- a/source/Mobs/Monster.h
+++ b/source/Mobs/Monster.h
@@ -26,34 +26,36 @@ public:
/// This identifies individual monster type, as well as their network type-ID
enum eType
{
+ mtBat = E_META_SPAWN_EGG_BAT,
+ mtBlaze = E_META_SPAWN_EGG_BLAZE,
+ mtCaveSpider = E_META_SPAWN_EGG_CAVE_SPIDER,
+ mtChicken = E_META_SPAWN_EGG_CHICKEN,
+ mtCow = E_META_SPAWN_EGG_COW,
mtCreeper = E_META_SPAWN_EGG_CREEPER,
- mtSkeleton = E_META_SPAWN_EGG_SKELETON,
- mtSpider = E_META_SPAWN_EGG_SPIDER,
- mtGiant = E_META_SPAWN_EGG_GIANT,
- mtZombie = E_META_SPAWN_EGG_ZOMBIE,
- mtSlime = E_META_SPAWN_EGG_SLIME,
- mtGhast = E_META_SPAWN_EGG_GHAST,
- mtZombiePigman = E_META_SPAWN_EGG_ZOMBIE_PIGMAN,
+ mtEnderDragon = E_META_SPAWN_EGG_ENDER_DRAGON,
mtEnderman = E_META_SPAWN_EGG_ENDERMAN,
- mtCaveSpider = E_META_SPAWN_EGG_CAVE_SPIDER,
- mtSilverfish = E_META_SPAWN_EGG_SILVERFISH,
- mtBlaze = E_META_SPAWN_EGG_BLAZE,
+ mtGhast = E_META_SPAWN_EGG_GHAST,
+ mtGiant = E_META_SPAWN_EGG_GIANT,
+ mtHorse = E_META_SPAWN_EGG_HORSE,
+ mtIronGolem = E_META_SPAWN_EGG_IRON_GOLEM,
mtMagmaCube = E_META_SPAWN_EGG_MAGMA_CUBE,
- mtEnderDragon = E_META_SPAWN_EGG_ENDER_DRAGON,
- mtWither = E_META_SPAWN_EGG_WITHER,
- mtBat = E_META_SPAWN_EGG_BAT,
- mtWitch = E_META_SPAWN_EGG_WITCH,
+ mtMooshroom = E_META_SPAWN_EGG_MOOSHROOM,
+ mtOcelot = E_META_SPAWN_EGG_OCELOT,
mtPig = E_META_SPAWN_EGG_PIG,
mtSheep = E_META_SPAWN_EGG_SHEEP,
- mtCow = E_META_SPAWN_EGG_COW,
- mtChicken = E_META_SPAWN_EGG_CHICKEN,
- mtSquid = E_META_SPAWN_EGG_SQUID,
- mtWolf = E_META_SPAWN_EGG_WOLF,
- mtMooshroom = E_META_SPAWN_EGG_MOOSHROOM,
+ mtSilverfish = E_META_SPAWN_EGG_SILVERFISH,
+ mtSkeleton = E_META_SPAWN_EGG_SKELETON,
+ mtSlime = E_META_SPAWN_EGG_SLIME,
mtSnowGolem = E_META_SPAWN_EGG_SNOW_GOLEM,
- mtOcelot = E_META_SPAWN_EGG_OCELOT,
- mtIronGolem = E_META_SPAWN_EGG_IRON_GOLEM,
+ mtSpider = E_META_SPAWN_EGG_SPIDER,
+ mtSquid = E_META_SPAWN_EGG_SQUID,
mtVillager = E_META_SPAWN_EGG_VILLAGER,
+ mtWitch = E_META_SPAWN_EGG_WITCH,
+ mtWither = E_META_SPAWN_EGG_WITHER,
+ mtWolf = E_META_SPAWN_EGG_WOLF,
+ mtZombie = E_META_SPAWN_EGG_ZOMBIE,
+ mtZombiePigman = E_META_SPAWN_EGG_ZOMBIE_PIGMAN,
+
} ;
// tolua_end
diff --git a/source/Mobs/SnowGolem.cpp b/source/Mobs/SnowGolem.cpp
new file mode 100644
index 000000000..51125542d
--- /dev/null
+++ b/source/Mobs/SnowGolem.cpp
@@ -0,0 +1,26 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "SnowGolem.h"
+
+
+
+
+
+cSnowGolem::cSnowGolem(void) :
+ super("SnowGolem", 97, "", "", 0.4, 1.8)
+{
+}
+
+
+
+
+
+void cSnowGolem::GetDrops(cItems & a_Drops, cEntity * a_Killer)
+{
+ AddRandomDropItem(a_Drops, 0, 5, E_ITEM_SNOWBALL);
+}
+
+
+
+
diff --git a/source/Mobs/SnowGolem.h b/source/Mobs/SnowGolem.h
new file mode 100644
index 000000000..d1344adfd
--- /dev/null
+++ b/source/Mobs/SnowGolem.h
@@ -0,0 +1,25 @@
+
+#pragma once
+
+#include "AggressiveMonster.h"
+
+
+
+
+
+class cSnowGolem :
+ public cAggressiveMonster
+{
+ typedef cAggressiveMonster super;
+
+public:
+ cSnowGolem(void);
+
+ CLASS_PROTODEF(cSnowGolem);
+
+ virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
+} ;
+
+
+
+
diff --git a/source/Mobs/Wither.cpp b/source/Mobs/Wither.cpp
new file mode 100644
index 000000000..8b77284c8
--- /dev/null
+++ b/source/Mobs/Wither.cpp
@@ -0,0 +1,26 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "Wither.h"
+
+
+
+
+
+cWither::cWither(void) :
+ super("Wither", 64, "mob.wither.hurt", "mob.wither.death", 0.9, 4.0)
+{
+}
+
+
+
+
+
+void cWither::GetDrops(cItems & a_Drops, cEntity * a_Killer)
+{
+ AddRandomDropItem(a_Drops, 1, 1, E_ITEM_NETHER_STAR);
+}
+
+
+
+
diff --git a/source/Mobs/Wither.h b/source/Mobs/Wither.h
new file mode 100644
index 000000000..56effc6bb
--- /dev/null
+++ b/source/Mobs/Wither.h
@@ -0,0 +1,25 @@
+
+#pragma once
+
+#include "AggressiveMonster.h"
+
+
+
+
+
+class cWither :
+ public cAggressiveMonster
+{
+ typedef cAggressiveMonster super;
+
+public:
+ cWither(void);
+
+ CLASS_PROTODEF(cWither);
+
+ virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
+} ;
+
+
+
+
diff --git a/source/Mobs/Zombiepigman.cpp b/source/Mobs/Zombiepigman.cpp
index 09b44816f..1aea006a6 100644
--- a/source/Mobs/Zombiepigman.cpp
+++ b/source/Mobs/Zombiepigman.cpp
@@ -1,15 +1,15 @@
#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
-#include "Zombiepigman.h"
+#include "ZombiePigman.h"
#include "../World.h"
-cZombiepigman::cZombiepigman(void) :
- super("Zombiepigman", 57, "mob.zombiepig.zpighurt", "mob.zombiepig.zpigdeath", 0.6, 1.8)
+cZombiePigman::cZombiePigman(void) :
+ super("ZombiePigman", 57, "mob.zombiepig.zpighurt", "mob.zombiepig.zpigdeath", 0.6, 1.8)
{
}
@@ -17,23 +17,7 @@ cZombiepigman::cZombiepigman(void) :
-void cZombiepigman::Tick(float a_Dt, cChunk & a_Chunk)
-{
- super::Tick(a_Dt, a_Chunk);
-
- // TODO Same as noticed in cSkeleton AND Do they really burn by sun?? :D In the neather is no sun :D
- if ((GetWorld()->GetTimeOfDay() < (12000 + 1000)) && !IsOnFire())
- {
- // Burn for 10 ticks, then decide again
- StartBurning(10);
- }
-}
-
-
-
-
-
-void cZombiepigman::GetDrops(cItems & a_Drops, cEntity * a_Killer)
+void cZombiePigman::GetDrops(cItems & a_Drops, cEntity * a_Killer)
{
AddRandomDropItem(a_Drops, 0, 1, E_ITEM_ROTTEN_FLESH);
AddRandomDropItem(a_Drops, 0, 1, E_ITEM_GOLD_NUGGET);
@@ -45,7 +29,7 @@ void cZombiepigman::GetDrops(cItems & a_Drops, cEntity * a_Killer)
-void cZombiepigman::KilledBy(cEntity * a_Killer)
+void cZombiePigman::KilledBy(cEntity * a_Killer)
{
super::KilledBy(a_Killer);
diff --git a/source/Mobs/Zombiepigman.h b/source/Mobs/Zombiepigman.h
index fe8c6d047..67991d56a 100644
--- a/source/Mobs/Zombiepigman.h
+++ b/source/Mobs/Zombiepigman.h
@@ -7,17 +7,16 @@
-class cZombiepigman :
+class cZombiePigman :
public cPassiveAggressiveMonster
{
typedef cPassiveAggressiveMonster super;
public:
- cZombiepigman(void);
+ cZombiePigman(void);
- CLASS_PROTODEF(cZombiepigman);
+ CLASS_PROTODEF(cZombiePigman);
- virtual void Tick(float a_Dt, cChunk & a_Chunk) override;
virtual void GetDrops(cItems & a_Drops, cEntity * a_Killer = NULL) override;
virtual void KilledBy(cEntity * a_Killer) override;
} ;
diff --git a/source/World.cpp b/source/World.cpp
index 7be83168c..6ec3825cf 100644
--- a/source/World.cpp
+++ b/source/World.cpp
@@ -35,8 +35,12 @@
#include "Mobs/Cow.h"
#include "Mobs/Creeper.h"
#include "Mobs/Enderman.h"
+#include "Mobs/EnderDragon.h"
#include "Mobs/Ghast.h"
-#include "Mobs/Magmacube.h"
+#include "Mobs/Giant.h"
+#include "Mobs/Horse.h"
+#include "Mobs/IronGolem.h"
+#include "Mobs/MagmaCube.h"
#include "Mobs/Mooshroom.h"
#include "Mobs/Ocelot.h"
#include "Mobs/Pig.h"
@@ -44,13 +48,15 @@
#include "Mobs/Silverfish.h"
#include "Mobs/Skeleton.h"
#include "Mobs/Slime.h"
+#include "Mobs/SnowGolem.h"
#include "Mobs/Spider.h"
#include "Mobs/Squid.h"
#include "Mobs/Villager.h"
#include "Mobs/Witch.h"
+#include "Mobs/Wither.h"
#include "Mobs/Wolf.h"
#include "Mobs/Zombie.h"
-#include "Mobs/Zombiepigman.h"
+#include "Mobs/ZombiePigman.h"
#include "OSSupport/MakeDir.h"
#include "MersenneTwister.h"
@@ -2588,8 +2594,12 @@ int cWorld::SpawnMob(double a_PosX, double a_PosY, double a_PosZ, cMonster::eTyp
case cMonster::mtCow: Monster = new cCow(); break;
case cMonster::mtCreeper: Monster = new cCreeper(); break;
case cMonster::mtEnderman: Monster = new cEnderman(); break;
+ case cMonster::mtEnderDragon: Monster = new cEnderDragon(); break;
case cMonster::mtGhast: Monster = new cGhast(); break;
- case cMonster::mtMagmaCube: Monster = new cMagmacube(Size); break;
+ case cMonster::mtGiant: Monster = new cGiant(); break;
+ case cMonster::mtHorse: Monster = new cHorse(); break;
+ case cMonster::mtIronGolem: Monster = new cIronGolem(); break;
+ case cMonster::mtMagmaCube: Monster = new cMagmaCube(Size); break;
case cMonster::mtMooshroom: Monster = new cMooshroom(); break;
case cMonster::mtOcelot: Monster = new cOcelot(); break;
case cMonster::mtPig: Monster = new cPig(); break;
@@ -2597,13 +2607,15 @@ int cWorld::SpawnMob(double a_PosX, double a_PosY, double a_PosZ, cMonster::eTyp
case cMonster::mtSilverfish: Monster = new cSilverfish(); break;
case cMonster::mtSkeleton: Monster = new cSkeleton(); break;
case cMonster::mtSlime: Monster = new cSlime(Size); break;
+ case cMonster::mtSnowGolem: Monster = new cSnowGolem(); break;
case cMonster::mtSpider: Monster = new cSpider(); break;
case cMonster::mtSquid: Monster = new cSquid(); break;
case cMonster::mtVillager: Monster = new cVillager(); break;
case cMonster::mtWitch: Monster = new cWitch(); break;
+ case cMonster::mtWither: Monster = new cWither(); break;
case cMonster::mtWolf: Monster = new cWolf(); break;
case cMonster::mtZombie: Monster = new cZombie(); break;
- case cMonster::mtZombiePigman: Monster = new cZombiepigman(); break;
+ case cMonster::mtZombiePigman: Monster = new cZombiePigman(); break;
default:
{