diff options
author | luksor111@gmail.com <luksor111@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-11-01 11:56:47 +0100 |
---|---|---|
committer | luksor111@gmail.com <luksor111@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-11-01 11:56:47 +0100 |
commit | 77064aa486822be1ba593e171725c811e6987981 (patch) | |
tree | d55e4fb8d15aedc31c6fe605cd8637f24e91624f | |
parent | Pickups no longer crash clients. (diff) | |
download | cuberite-77064aa486822be1ba593e171725c811e6987981.tar cuberite-77064aa486822be1ba593e171725c811e6987981.tar.gz cuberite-77064aa486822be1ba593e171725c811e6987981.tar.bz2 cuberite-77064aa486822be1ba593e171725c811e6987981.tar.lz cuberite-77064aa486822be1ba593e171725c811e6987981.tar.xz cuberite-77064aa486822be1ba593e171725c811e6987981.tar.zst cuberite-77064aa486822be1ba593e171725c811e6987981.zip |
-rw-r--r-- | VC2008/MCServer.vcproj | 16 | ||||
-rw-r--r-- | source/Mobs/Bat.cpp | 45 | ||||
-rw-r--r-- | source/Mobs/Bat.h | 14 | ||||
-rw-r--r-- | source/Mobs/Witch.cpp | 55 | ||||
-rw-r--r-- | source/Mobs/Witch.h | 14 | ||||
-rw-r--r-- | source/World.cpp | 4 |
6 files changed, 148 insertions, 0 deletions
diff --git a/VC2008/MCServer.vcproj b/VC2008/MCServer.vcproj index c4a0dbb73..fc93c2604 100644 --- a/VC2008/MCServer.vcproj +++ b/VC2008/MCServer.vcproj @@ -727,6 +727,14 @@ >
</File>
<File
+ RelativePath="..\source\Mobs\Bat.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Bat.h"
+ >
+ </File>
+ <File
RelativePath="..\source\Mobs\Blaze.cpp"
>
</File>
@@ -895,6 +903,14 @@ >
</File>
<File
+ RelativePath="..\source\Mobs\Witch.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\source\Mobs\Witch.h"
+ >
+ </File>
+ <File
RelativePath="..\source\Mobs\Wolf.cpp"
>
</File>
diff --git a/source/Mobs/Bat.cpp b/source/Mobs/Bat.cpp new file mode 100644 index 000000000..4cc74ec2b --- /dev/null +++ b/source/Mobs/Bat.cpp @@ -0,0 +1,45 @@ +
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "Bat.h"
+
+
+
+
+
+cBat::cBat()
+{
+ m_MobType = 65;
+ GetMonsterConfig("Bat");
+}
+
+
+
+
+
+cBat::~cBat()
+{
+}
+
+
+
+
+
+bool cBat::IsA( const char* a_EntityType )
+{
+ if( strcmp( a_EntityType, "cBat" ) == 0 ) return true;
+ return cMonster::IsA( a_EntityType );
+}
+
+
+
+
+
+void cBat::KilledBy( cEntity* a_Killer )
+{
+ cMonster::KilledBy( a_Killer );
+}
+
+
+
+
diff --git a/source/Mobs/Bat.h b/source/Mobs/Bat.h new file mode 100644 index 000000000..94ae595d0 --- /dev/null +++ b/source/Mobs/Bat.h @@ -0,0 +1,14 @@ +#pragma once
+
+#include "PassiveMonster.h"
+
+class cBat : public cPassiveMonster
+{
+public:
+ cBat();
+ ~cBat();
+
+ virtual bool IsA( const char* a_EntityType );
+
+ virtual void KilledBy( cEntity* a_Killer );
+};
diff --git a/source/Mobs/Witch.cpp b/source/Mobs/Witch.cpp new file mode 100644 index 000000000..02d1de4fe --- /dev/null +++ b/source/Mobs/Witch.cpp @@ -0,0 +1,55 @@ +
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include "Witch.h"
+
+
+
+
+
+cWitch::cWitch()
+{
+ m_MobType = 66;
+ GetMonsterConfig("Witch");
+}
+
+
+
+
+
+cWitch::~cWitch()
+{
+}
+
+
+
+
+
+bool cWitch::IsA( const char* a_EntityType )
+{
+ if( strcmp( a_EntityType, "cWitch" ) == 0 ) return true;
+ return cMonster::IsA( a_EntityType );
+}
+
+
+
+
+
+void cWitch::KilledBy( cEntity* a_Killer )
+{
+ cItems Drops;
+ AddRandomDropItem(Drops, 0, 6, E_ITEM_GLASS_BOTTLE);
+ AddRandomDropItem(Drops, 0, 6, E_ITEM_GLOWSTONE_DUST);
+ AddRandomDropItem(Drops, 0, 6, E_ITEM_GUNPOWDER);
+ AddRandomDropItem(Drops, 0, 6, E_ITEM_REDSTONE_DUST);
+ AddRandomDropItem(Drops, 0, 6, E_ITEM_SPIDER_EYE);
+ AddRandomDropItem(Drops, 0, 6, E_ITEM_STICK);
+ AddRandomDropItem(Drops, 0, 6, E_ITEM_SUGAR);
+ m_World->SpawnItemPickups(Drops, m_Pos.x, m_Pos.y, m_Pos.z);
+
+ cMonster::KilledBy( a_Killer );
+}
+
+
+
+
diff --git a/source/Mobs/Witch.h b/source/Mobs/Witch.h new file mode 100644 index 000000000..303aa7595 --- /dev/null +++ b/source/Mobs/Witch.h @@ -0,0 +1,14 @@ +#pragma once
+
+#include "AggressiveMonster.h"
+
+class cWitch : public cAggressiveMonster
+{
+public:
+ cWitch();
+ ~cWitch();
+
+ virtual bool IsA( const char* a_EntityType );
+
+ virtual void KilledBy( cEntity* a_Killer );
+};
diff --git a/source/World.cpp b/source/World.cpp index bd77b7f5f..198f32395 100644 --- a/source/World.cpp +++ b/source/World.cpp @@ -23,6 +23,7 @@ #include "Simulator/RedstoneSimulator.h" // Mobs: +#include "Mobs/Bat.h" #include "Mobs/Blaze.h" #include "Mobs/Cavespider.h" #include "Mobs/Chicken.h" @@ -41,6 +42,7 @@ #include "Mobs/Spider.h" #include "Mobs/Squid.h" #include "Mobs/Villager.h" +#include "Mobs/Witch.h" #include "Mobs/Wolf.h" #include "Mobs/Zombie.h" #include "Mobs/Zombiepigman.h" @@ -2196,6 +2198,7 @@ int cWorld::SpawnMob(double a_PosX, double a_PosY, double a_PosZ, int a_EntityTy switch (a_EntityType) { + case E_ENTITY_TYPE_BAT: Monster = new cBat(); break; case E_ENTITY_TYPE_BLAZE: Monster = new cBlaze(); break; case E_ENTITY_TYPE_CAVE_SPIDER: Monster = new cCavespider(); break; case E_ENTITY_TYPE_CHICKEN: Monster = new cChicken(); break; @@ -2214,6 +2217,7 @@ int cWorld::SpawnMob(double a_PosX, double a_PosY, double a_PosZ, int a_EntityTy case E_ENTITY_TYPE_SPIDER: Monster = new cSpider(); break; case E_ENTITY_TYPE_SQUID: Monster = new cSquid(); break; case E_ENTITY_TYPE_VILLAGER: Monster = new cVillager(); break; + case E_ENTITY_TYPE_WITCH: Monster = new cWitch(); break; case E_ENTITY_TYPE_WOLF: Monster = new cWolf(); break; case E_ENTITY_TYPE_ZOMBIE: Monster = new cZombie(); break; case E_ENTITY_TYPE_ZOMBIE_PIGMAN: Monster = new cZombiepigman(); break; |