1
0

Added spawn eggs with mobs (patch committed by Luksor)

git-svn-id: http://mc-server.googlecode.com/svn/trunk@979 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
madmaxoft@gmail.com 2012-10-19 18:30:46 +00:00
parent 2a197705ac
commit 1b4b905f75
12 changed files with 471 additions and 2 deletions

View File

@ -726,6 +726,14 @@
RelativePath="..\source\Mobs\AggressiveMonster.h"
>
</File>
<File
RelativePath="..\source\Mobs\Blaze.cpp"
>
</File>
<File
RelativePath="..\source\Mobs\Blaze.h"
>
</File>
<File
RelativePath="..\source\Mobs\Cavespider.cpp"
>
@ -774,6 +782,14 @@
RelativePath="..\source\Mobs\Ghast.h"
>
</File>
<File
RelativePath="..\source\Mobs\Magmacube.cpp"
>
</File>
<File
RelativePath="..\source\Mobs\Magmacube.h"
>
</File>
<File
RelativePath="..\source\Mobs\Monster.cpp"
>
@ -782,6 +798,22 @@
RelativePath="..\source\Mobs\Monster.h"
>
</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"
>
@ -854,6 +886,14 @@
RelativePath="..\source\Mobs\Squid.h"
>
</File>
<File
RelativePath="..\source\Mobs\Villager.cpp"
>
</File>
<File
RelativePath="..\source\Mobs\Villager.h"
>
</File>
<File
RelativePath="..\source\Mobs\Wolf.cpp"
>

View File

@ -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);

49
source/Mobs/Blaze.cpp Normal file
View File

@ -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 );
}

14
source/Mobs/Blaze.h Normal file
View File

@ -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 );
};

49
source/Mobs/Magmacube.cpp Normal file
View File

@ -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 );
}

14
source/Mobs/Magmacube.h Normal file
View File

@ -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 );
};

56
source/Mobs/Mooshroom.cpp Normal file
View File

@ -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 );
}

14
source/Mobs/Mooshroom.h Normal file
View File

@ -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 );
};

45
source/Mobs/Ocelot.cpp Normal file
View File

@ -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 );
}

14
source/Mobs/Ocelot.h Normal file
View File

@ -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 );
};

45
source/Mobs/Villager.cpp Normal file
View File

@ -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 );
}

14
source/Mobs/Villager.h Normal file
View File

@ -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 );
};