summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--VC2008/MCServer.vcproj40
-rw-r--r--source/Items/ItemSpawnEgg.h119
-rw-r--r--source/Mobs/Blaze.cpp49
-rw-r--r--source/Mobs/Blaze.h14
-rw-r--r--source/Mobs/Magmacube.cpp49
-rw-r--r--source/Mobs/Magmacube.h14
-rw-r--r--source/Mobs/Mooshroom.cpp56
-rw-r--r--source/Mobs/Mooshroom.h14
-rw-r--r--source/Mobs/Ocelot.cpp45
-rw-r--r--source/Mobs/Ocelot.h14
-rw-r--r--source/Mobs/Villager.cpp45
-rw-r--r--source/Mobs/Villager.h14
12 files changed, 471 insertions, 2 deletions
diff --git a/VC2008/MCServer.vcproj b/VC2008/MCServer.vcproj
index 88fa40b65..83596b82c 100644
--- a/VC2008/MCServer.vcproj
+++ b/VC2008/MCServer.vcproj
@@ -727,6 +727,14 @@
>
</File>
<File
+ RelativePath="..\source\Mobs\Blaze.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Blaze.h"
+ >
+ </File>
+ <File
RelativePath="..\source\Mobs\Cavespider.cpp"
>
</File>
@@ -775,6 +783,14 @@
>
</File>
<File
+ RelativePath="..\source\Mobs\Magmacube.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Magmacube.h"
+ >
+ </File>
+ <File
RelativePath="..\source\Mobs\Monster.cpp"
>
</File>
@@ -783,6 +799,22 @@
>
</File>
<File
+ RelativePath="..\source\Mobs\Mooshroom.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Mooshroom.h"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Ocelot.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Ocelot.h"
+ >
+ </File>
+ <File
RelativePath="..\source\Mobs\PassiveAggressiveMonster.cpp"
>
</File>
@@ -855,6 +887,14 @@
>
</File>
<File
+ RelativePath="..\source\Mobs\Villager.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Villager.h"
+ >
+ </File>
+ <File
RelativePath="..\source\Mobs\Wolf.cpp"
>
</File>
diff --git a/source/Items/ItemSpawnEgg.h b/source/Items/ItemSpawnEgg.h
index fb040c6ea..974129d6f 100644
--- a/source/Items/ItemSpawnEgg.h
+++ b/source/Items/ItemSpawnEgg.h
@@ -22,6 +22,11 @@
#include "../Mobs/Cavespider.h"
#include "../Mobs/Ghast.h"
#include "../Mobs/Zombiepigman.h"
+#include "../Mobs/Villager.h"
+#include "../Mobs/Ocelot.h"
+#include "../Mobs/Mooshroom.h"
+#include "../Mobs/Magmacube.h"
+#include "../Mobs/Blaze.h"
@@ -53,8 +58,118 @@ public:
cMonster * Monster = NULL;
- Monster = new cZombie();
-
+ switch (a_Item->m_ItemDamage)
+ {
+ case E_META_SPAWN_EGG_BLAZE:
+ {
+ Monster = new cBlaze();
+ break;
+ }
+ case E_META_SPAWN_EGG_CAVE_SPIDER:
+ {
+ Monster = new cCavespider();
+ break;
+ }
+ case E_META_SPAWN_EGG_CHICKEN:
+ {
+ Monster = new cChicken();
+ break;
+ }
+ case E_META_SPAWN_EGG_COW:
+ {
+ Monster = new cCow();
+ break;
+ }
+ case E_META_SPAWN_EGG_CREEPER:
+ {
+ Monster = new cCreeper();
+ break;
+ }
+ case E_META_SPAWN_EGG_ENDERMAN:
+ {
+ Monster = new cEnderman();
+ break;
+ }
+ case E_META_SPAWN_EGG_GHAST:
+ {
+ Monster = new cGhast();
+ break;
+ }
+ case E_META_SPAWN_EGG_MAGMA_CUBE:
+ {
+ Monster = new cMagmacube();
+ break;
+ }
+ case E_META_SPAWN_EGG_MOOSHROOM:
+ {
+ Monster = new cMooshroom();
+ break;
+ }
+ case E_META_SPAWN_EGG_OCELOT:
+ {
+ Monster = new cOcelot();
+ break;
+ }
+ case E_META_SPAWN_EGG_PIG:
+ {
+ Monster = new cPig();
+ break;
+ }
+ case E_META_SPAWN_EGG_SHEEP:
+ {
+ Monster = new cSheep();
+ break;
+ }
+ case E_META_SPAWN_EGG_SILVERFISH:
+ {
+ Monster = new cSilverfish();
+ break;
+ }
+ case E_META_SPAWN_EGG_SKELETON:
+ {
+ Monster = new cSkeleton();
+ break;
+ }
+ case E_META_SPAWN_EGG_SLIME:
+ {
+ Monster = new cSlime();
+ break;
+ }
+ case E_META_SPAWN_EGG_SPIDER:
+ {
+ Monster = new cSpider();
+ break;
+ }
+ case E_META_SPAWN_EGG_SQUID:
+ {
+ Monster = new cSquid();
+ break;
+ }
+ case E_META_SPAWN_EGG_VILLAGER:
+ {
+ Monster = new cVillager();
+ break;
+ }
+ case E_META_SPAWN_EGG_WOLF:
+ {
+ Monster = new cWolf();
+ break;
+ }
+ case E_META_SPAWN_EGG_ZOMBIE:
+ {
+ Monster = new cZombie();
+ break;
+ }
+ case E_META_SPAWN_EGG_ZOMBIE_PIGMAN:
+ {
+ Monster = new cZombiepigman();
+ break;
+ }
+ default:
+ {
+ return false;
+ }
+ }
Monster->Initialize(a_World);
Monster->TeleportTo(a_BlockX + 0.5, a_BlockY, a_BlockZ + 0.5);
a_World->BroadcastSpawn(*Monster);
diff --git a/source/Mobs/Blaze.cpp b/source/Mobs/Blaze.cpp
new file mode 100644
index 000000000..c3e68518f
--- /dev/null
+++ b/source/Mobs/Blaze.cpp
@@ -0,0 +1,49 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "Blaze.h"
+
+
+
+
+
+cBlaze::cBlaze()
+{
+ m_MobType = 61;
+ GetMonsterConfig("Blaze");
+}
+
+
+
+
+
+cBlaze::~cBlaze()
+{
+}
+
+
+
+
+
+bool cBlaze::IsA( const char* a_EntityType )
+{
+ if( strcmp( a_EntityType, "cBlaze" ) == 0 ) return true;
+ return cMonster::IsA( a_EntityType );
+}
+
+
+
+
+
+void cBlaze::KilledBy( cEntity* a_Killer )
+{
+ cItems Drops;
+ AddRandomDropItem(Drops, 0, 1, E_ITEM_BLAZE_ROD);
+ m_World->SpawnItemPickups(Drops, m_Pos.x, m_Pos.y, m_Pos.z);
+
+ cMonster::KilledBy( a_Killer );
+}
+
+
+
+
diff --git a/source/Mobs/Blaze.h b/source/Mobs/Blaze.h
new file mode 100644
index 000000000..bd722d529
--- /dev/null
+++ b/source/Mobs/Blaze.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "AggressiveMonster.h"
+
+class cBlaze : public cAggressiveMonster
+{
+public:
+ cBlaze();
+ ~cBlaze();
+
+ virtual bool IsA( const char* a_EntityType );
+
+ virtual void KilledBy( cEntity* a_Killer );
+};
diff --git a/source/Mobs/Magmacube.cpp b/source/Mobs/Magmacube.cpp
new file mode 100644
index 000000000..d73041baf
--- /dev/null
+++ b/source/Mobs/Magmacube.cpp
@@ -0,0 +1,49 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "Magmacube.h"
+
+
+
+
+
+cMagmacube::cMagmacube()
+{
+ m_MobType = 62;
+ GetMonsterConfig("Magmacube");
+}
+
+
+
+
+
+cMagmacube::~cMagmacube()
+{
+}
+
+
+
+
+
+bool cMagmacube::IsA( const char* a_EntityType )
+{
+ if( strcmp( a_EntityType, "cMagmacube" ) == 0 ) return true;
+ return cMonster::IsA( a_EntityType );
+}
+
+
+
+
+
+void cMagmacube::KilledBy( cEntity* a_Killer )
+{
+ cItems Drops;
+ AddRandomDropItem(Drops, 0, 1, E_ITEM_MAGMA_CREAM);
+ m_World->SpawnItemPickups(Drops, m_Pos.x, m_Pos.y, m_Pos.z);
+
+ cMonster::KilledBy( a_Killer );
+}
+
+
+
+
diff --git a/source/Mobs/Magmacube.h b/source/Mobs/Magmacube.h
new file mode 100644
index 000000000..1a36ef2c1
--- /dev/null
+++ b/source/Mobs/Magmacube.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "AggressiveMonster.h"
+
+class cMagmacube : public cAggressiveMonster
+{
+public:
+ cMagmacube();
+ ~cMagmacube();
+
+ virtual bool IsA( const char* a_EntityType );
+
+ virtual void KilledBy( cEntity* a_Killer );
+};
diff --git a/source/Mobs/Mooshroom.cpp b/source/Mobs/Mooshroom.cpp
new file mode 100644
index 000000000..f70349e97
--- /dev/null
+++ b/source/Mobs/Mooshroom.cpp
@@ -0,0 +1,56 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "Mooshroom.h"
+
+
+
+
+
+// TODO: Milk Cow
+
+
+
+
+
+cMooshroom::cMooshroom()
+{
+ m_MobType = 96;
+ GetMonsterConfig("Mooshroom");
+}
+
+
+
+
+
+cMooshroom::~cMooshroom()
+{
+}
+
+
+
+
+
+bool cMooshroom::IsA( const char* a_EntityType )
+{
+ if( strcmp( a_EntityType, "cMooshroom" ) == 0 ) return true;
+ return cMonster::IsA( a_EntityType );
+}
+
+
+
+
+
+void cMooshroom::KilledBy( cEntity* a_Killer )
+{
+ cItems Drops;
+ AddRandomDropItem(Drops, 0, 2, E_ITEM_LEATHER);
+ AddRandomDropItem(Drops, 1, 3, (GetMetaData() == BURNING) ? E_ITEM_STEAK : E_ITEM_RAW_BEEF);
+ m_World->SpawnItemPickups(Drops, m_Pos.x, m_Pos.y, m_Pos.z);
+
+ cMonster::KilledBy( a_Killer );
+}
+
+
+
+
diff --git a/source/Mobs/Mooshroom.h b/source/Mobs/Mooshroom.h
new file mode 100644
index 000000000..ea8ed5b08
--- /dev/null
+++ b/source/Mobs/Mooshroom.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "PassiveMonster.h"
+
+class cMooshroom : public cPassiveMonster
+{
+public:
+ cMooshroom();
+ ~cMooshroom();
+
+ virtual bool IsA( const char* a_EntityType );
+
+ virtual void KilledBy( cEntity* a_Killer );
+};
diff --git a/source/Mobs/Ocelot.cpp b/source/Mobs/Ocelot.cpp
new file mode 100644
index 000000000..ec50a9656
--- /dev/null
+++ b/source/Mobs/Ocelot.cpp
@@ -0,0 +1,45 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "Ocelot.h"
+
+
+
+
+
+cOcelot::cOcelot()
+{
+ m_MobType = 98;
+ GetMonsterConfig("Ocelot");
+}
+
+
+
+
+
+cOcelot::~cOcelot()
+{
+}
+
+
+
+
+
+bool cOcelot::IsA( const char* a_EntityType )
+{
+ if( strcmp( a_EntityType, "cOcelot" ) == 0 ) return true;
+ return cMonster::IsA( a_EntityType );
+}
+
+
+
+
+
+void cOcelot::KilledBy( cEntity* a_Killer )
+{
+ cMonster::KilledBy( a_Killer );
+}
+
+
+
+
diff --git a/source/Mobs/Ocelot.h b/source/Mobs/Ocelot.h
new file mode 100644
index 000000000..87571022f
--- /dev/null
+++ b/source/Mobs/Ocelot.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "PassiveMonster.h"
+
+class cOcelot : public cPassiveMonster
+{
+public:
+ cOcelot();
+ ~cOcelot();
+
+ virtual bool IsA( const char* a_EntityType );
+
+ virtual void KilledBy( cEntity* a_Killer );
+};
diff --git a/source/Mobs/Villager.cpp b/source/Mobs/Villager.cpp
new file mode 100644
index 000000000..65b2ac5b5
--- /dev/null
+++ b/source/Mobs/Villager.cpp
@@ -0,0 +1,45 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "Villager.h"
+
+
+
+
+
+cVillager::cVillager()
+{
+ m_MobType = 120;
+ GetMonsterConfig("Villager");
+}
+
+
+
+
+
+cVillager::~cVillager()
+{
+}
+
+
+
+
+
+bool cVillager::IsA( const char* a_EntityType )
+{
+ if( strcmp( a_EntityType, "cVillager" ) == 0 ) return true;
+ return cMonster::IsA( a_EntityType );
+}
+
+
+
+
+
+void cVillager::KilledBy( cEntity* a_Killer )
+{
+ cMonster::KilledBy( a_Killer );
+}
+
+
+
+
diff --git a/source/Mobs/Villager.h b/source/Mobs/Villager.h
new file mode 100644
index 000000000..02272378b
--- /dev/null
+++ b/source/Mobs/Villager.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "PassiveMonster.h"
+
+class cVillager : public cPassiveMonster
+{
+public:
+ cVillager();
+ ~cVillager();
+
+ virtual bool IsA( const char* a_EntityType );
+
+ virtual void KilledBy( cEntity* a_Killer );
+};