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:
parent
2a197705ac
commit
1b4b905f75
@ -726,6 +726,14 @@
|
|||||||
RelativePath="..\source\Mobs\AggressiveMonster.h"
|
RelativePath="..\source\Mobs\AggressiveMonster.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\source\Mobs\Blaze.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\source\Mobs\Blaze.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\source\Mobs\Cavespider.cpp"
|
RelativePath="..\source\Mobs\Cavespider.cpp"
|
||||||
>
|
>
|
||||||
@ -774,6 +782,14 @@
|
|||||||
RelativePath="..\source\Mobs\Ghast.h"
|
RelativePath="..\source\Mobs\Ghast.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\source\Mobs\Magmacube.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\source\Mobs\Magmacube.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\source\Mobs\Monster.cpp"
|
RelativePath="..\source\Mobs\Monster.cpp"
|
||||||
>
|
>
|
||||||
@ -782,6 +798,22 @@
|
|||||||
RelativePath="..\source\Mobs\Monster.h"
|
RelativePath="..\source\Mobs\Monster.h"
|
||||||
>
|
>
|
||||||
</File>
|
</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
|
<File
|
||||||
RelativePath="..\source\Mobs\PassiveAggressiveMonster.cpp"
|
RelativePath="..\source\Mobs\PassiveAggressiveMonster.cpp"
|
||||||
>
|
>
|
||||||
@ -854,6 +886,14 @@
|
|||||||
RelativePath="..\source\Mobs\Squid.h"
|
RelativePath="..\source\Mobs\Squid.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\source\Mobs\Villager.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\source\Mobs\Villager.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\source\Mobs\Wolf.cpp"
|
RelativePath="..\source\Mobs\Wolf.cpp"
|
||||||
>
|
>
|
||||||
|
@ -22,6 +22,11 @@
|
|||||||
#include "../Mobs/Cavespider.h"
|
#include "../Mobs/Cavespider.h"
|
||||||
#include "../Mobs/Ghast.h"
|
#include "../Mobs/Ghast.h"
|
||||||
#include "../Mobs/Zombiepigman.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;
|
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->Initialize(a_World);
|
||||||
Monster->TeleportTo(a_BlockX + 0.5, a_BlockY, a_BlockZ + 0.5);
|
Monster->TeleportTo(a_BlockX + 0.5, a_BlockY, a_BlockZ + 0.5);
|
||||||
a_World->BroadcastSpawn(*Monster);
|
a_World->BroadcastSpawn(*Monster);
|
||||||
|
49
source/Mobs/Blaze.cpp
Normal file
49
source/Mobs/Blaze.cpp
Normal 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
14
source/Mobs/Blaze.h
Normal 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
49
source/Mobs/Magmacube.cpp
Normal 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
14
source/Mobs/Magmacube.h
Normal 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
56
source/Mobs/Mooshroom.cpp
Normal 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
14
source/Mobs/Mooshroom.h
Normal 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
45
source/Mobs/Ocelot.cpp
Normal 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
14
source/Mobs/Ocelot.h
Normal 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
45
source/Mobs/Villager.cpp
Normal 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
14
source/Mobs/Villager.h
Normal 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 );
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user