From 8438def87e40e43fd66d38dbf8cc287cea7de29b Mon Sep 17 00:00:00 2001 From: Bond-009 Date: Sat, 3 Feb 2018 12:24:19 +0100 Subject: Add Zombie Villagers --- src/Mobs/Villager.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src/Mobs/Villager.cpp') diff --git a/src/Mobs/Villager.cpp b/src/Mobs/Villager.cpp index 9558ba536..eca8ed2b6 100644 --- a/src/Mobs/Villager.cpp +++ b/src/Mobs/Villager.cpp @@ -107,6 +107,26 @@ void cVillager::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) + +void cVillager::KilledBy(TakeDamageInfo & a_TDI) +{ + super::KilledBy(a_TDI); + + // TODO: 0% chance on Easy, 50% chance on Normal and 100% chance on Hard + if (GetRandomProvider().RandBool(0.5) && (a_TDI.Attacker != nullptr) && (a_TDI.Attacker->IsMob())) + { + eMonsterType MonsterType = (static_cast(a_TDI.Attacker)->GetMobType()); + if ((MonsterType == mtZombie) || (MonsterType == mtZombieVillager)) + { + m_World->SpawnMob(GetPosX(), GetPosY(), GetPosZ(), mtZombieVillager, false); + } + } +} + + + + + //////////////////////////////////////////////////////////////////////////////// // Farmer functions: @@ -203,7 +223,17 @@ bool cVillager::IsBlockFarmable(BLOCKTYPE a_BlockType) { return true; } + default: return false; } - return false; } + + + + +cVillager::eVillagerType cVillager::GetRandomProfession() +{ + int Profession = GetRandomProvider().RandInt(cVillager::eVillagerType::vtMax - 1); + + return static_cast(Profession); +} -- cgit v1.2.3