Fixed Looting segment fault - a_Killer can be NULL
This commit is contained in:
parent
748a9c60b3
commit
b15ca0055b
@ -19,7 +19,7 @@ cBlaze::cBlaze(void) :
|
||||
|
||||
void cBlaze::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
if (a_Killer->IsPlayer() || a_Killer->IsA("cWolf"))
|
||||
if (a_Killer != NULL && (a_Killer->IsPlayer() || a_Killer->IsA("cWolf")))
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
AddRandomDropItem(a_Drops, 0, 1 + LootingLevel, E_ITEM_BLAZE_ROD);
|
||||
|
@ -31,9 +31,13 @@ void cCavespider::Tick(float a_Dt, cChunk & a_Chunk)
|
||||
|
||||
void cCavespider::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_STRING);
|
||||
if (a_Killer->IsPlayer() || a_Killer->IsA("cWolf"))
|
||||
if (a_Killer != NULL && (a_Killer->IsPlayer() || a_Killer->IsA("cWolf")))
|
||||
{
|
||||
AddRandomUncommonDropItem(a_Drops, 33.0f, E_ITEM_SPIDER_EYE);
|
||||
}
|
||||
|
@ -48,7 +48,11 @@ void cChicken::Tick(float a_Dt, cChunk & a_Chunk)
|
||||
|
||||
void cChicken::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_FEATHER);
|
||||
AddRandomDropItem(a_Drops, 1, 1, IsOnFire() ? E_ITEM_COOKED_CHICKEN : E_ITEM_RAW_CHICKEN);
|
||||
}
|
||||
|
@ -21,7 +21,11 @@ cCow::cCow(void) :
|
||||
|
||||
void cCow::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_LEATHER);
|
||||
AddRandomDropItem(a_Drops, 1, 3 + LootingLevel, IsOnFire() ? E_ITEM_STEAK : E_ITEM_RAW_BEEF);
|
||||
}
|
||||
|
@ -39,7 +39,11 @@ void cCreeper::Tick(float a_Dt, cChunk & a_Chunk)
|
||||
|
||||
void cCreeper::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_GUNPOWDER);
|
||||
|
||||
if ((a_Killer != NULL) && (a_Killer->IsProjectile()))
|
||||
|
@ -21,7 +21,11 @@ cEnderman::cEnderman(void) :
|
||||
|
||||
void cEnderman::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 1 + LootingLevel, E_ITEM_ENDER_PEARL);
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,11 @@ cGhast::cGhast(void) :
|
||||
|
||||
void cGhast::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_GUNPOWDER);
|
||||
AddRandomDropItem(a_Drops, 0, 1 + LootingLevel, E_ITEM_GHAST_TEAR);
|
||||
}
|
||||
|
@ -140,7 +140,11 @@ void cHorse::OnRightClicked(cPlayer & a_Player)
|
||||
|
||||
void cHorse::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_LEATHER);
|
||||
if (m_bIsSaddled)
|
||||
{
|
||||
|
@ -24,7 +24,11 @@ cMooshroom::cMooshroom(void) :
|
||||
|
||||
void cMooshroom::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_LEATHER);
|
||||
AddRandomDropItem(a_Drops, 1, 3 + LootingLevel, IsOnFire() ? E_ITEM_STEAK : E_ITEM_RAW_BEEF);
|
||||
}
|
||||
|
@ -21,7 +21,11 @@ cPig::cPig(void) :
|
||||
|
||||
void cPig::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 1, 3 + LootingLevel, IsOnFire() ? E_ITEM_COOKED_PORKCHOP : E_ITEM_RAW_PORKCHOP);
|
||||
if (m_bIsSaddled)
|
||||
{
|
||||
|
@ -20,7 +20,11 @@ cSkeleton::cSkeleton(bool IsWither) :
|
||||
|
||||
void cSkeleton::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
if (IsWither())
|
||||
{
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_BONE);
|
||||
|
@ -20,7 +20,11 @@ cSlime::cSlime(int a_Size) :
|
||||
|
||||
void cSlime::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
if (GetSize() == 1)
|
||||
{
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_SLIMEBALL);
|
||||
|
@ -18,9 +18,13 @@ cSpider::cSpider(void) :
|
||||
|
||||
void cSpider::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_STRING);
|
||||
if (a_Killer->IsPlayer() || a_Killer->IsA("cWolf"))
|
||||
if (a_Killer != NULL && (a_Killer->IsPlayer() || a_Killer->IsA("cWolf")))
|
||||
{
|
||||
AddRandomUncommonDropItem(a_Drops, 33.0f, E_ITEM_SPIDER_EYE);
|
||||
}
|
||||
|
@ -21,7 +21,11 @@ cSquid::cSquid(void) :
|
||||
void cSquid::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
// Drops 0-3 Ink Sacs
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 3 + LootingLevel, E_ITEM_DYE, E_META_DYE_BLACK);
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,11 @@ cWitch::cWitch(void) :
|
||||
|
||||
void cWitch::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
MTRand r1;
|
||||
int DropTypeCount = (r1.randInt() % 3) + 1;
|
||||
for (int i = 0; i < DropTypeCount; i++)
|
||||
|
@ -23,7 +23,11 @@ cZombie::cZombie(bool a_IsVillagerZombie) :
|
||||
|
||||
void cZombie::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 2 + LootingLevel, E_ITEM_ROTTEN_FLESH);
|
||||
cItems RareDrops;
|
||||
RareDrops.Add(cItem(E_ITEM_IRON));
|
||||
|
@ -19,7 +19,11 @@ cZombiePigman::cZombiePigman(void) :
|
||||
|
||||
void cZombiePigman::GetDrops(cItems & a_Drops, cEntity * a_Killer)
|
||||
{
|
||||
int LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
int LootingLevel = 0;
|
||||
if (a_Killer != NULL)
|
||||
{
|
||||
LootingLevel = a_Killer->GetEquippedWeapon().m_Enchantments.GetLevel(E_ENCHANTMENT_LOOTING);
|
||||
}
|
||||
AddRandomDropItem(a_Drops, 0, 1 + LootingLevel, E_ITEM_ROTTEN_FLESH);
|
||||
AddRandomDropItem(a_Drops, 0, 1 + LootingLevel, E_ITEM_GOLD_NUGGET);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user