From f86f67907cf3812c09ad10166677e9c91b1f1198 Mon Sep 17 00:00:00 2001 From: STRWarrior Date: Mon, 25 Nov 2013 20:04:39 +0100 Subject: Implented SendExperienceOrb in ClientHandle. --- source/Mobs/Monster.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source/Mobs') diff --git a/source/Mobs/Monster.cpp b/source/Mobs/Monster.cpp index 8a5717e27..f250e1757 100644 --- a/source/Mobs/Monster.cpp +++ b/source/Mobs/Monster.cpp @@ -7,6 +7,7 @@ #include "../ClientHandle.h" #include "../World.h" #include "../Entities/Player.h" +#include "../Entities/ExpOrb.h" #include "../Defines.h" #include "../MonsterConfig.h" #include "../MersenneTwister.h" @@ -258,6 +259,9 @@ void cMonster::KilledBy(cEntity * a_Killer) { m_World->BroadcastSoundEffect(m_SoundDeath, (int)(GetPosX() * 8), (int)(GetPosY() * 8), (int)(GetPosZ() * 8), 1.0f, 0.8f); } + // ToDo: Proper Exp per mob. + cExpOrb * ExpOrb = new cExpOrb(GetPosX(), GetPosY(), GetPosZ(), 1); + ExpOrb->Initialize(m_World); m_DestroyTimer = 0; } -- cgit v1.2.3 From dd76700d8d0491f385efee1a539462501cb41ad4 Mon Sep 17 00:00:00 2001 From: STRWarrior Date: Mon, 25 Nov 2013 21:03:26 +0100 Subject: Added cWorld::SpawnExperienceOrb function. Most mobs now give proper Exp. --- source/Mobs/Monster.cpp | 53 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) (limited to 'source/Mobs') diff --git a/source/Mobs/Monster.cpp b/source/Mobs/Monster.cpp index f250e1757..a74881978 100644 --- a/source/Mobs/Monster.cpp +++ b/source/Mobs/Monster.cpp @@ -259,9 +259,56 @@ void cMonster::KilledBy(cEntity * a_Killer) { m_World->BroadcastSoundEffect(m_SoundDeath, (int)(GetPosX() * 8), (int)(GetPosY() * 8), (int)(GetPosZ() * 8), 1.0f, 0.8f); } - // ToDo: Proper Exp per mob. - cExpOrb * ExpOrb = new cExpOrb(GetPosX(), GetPosY(), GetPosZ(), 1); - ExpOrb->Initialize(m_World); + int Exp; + switch (m_MobType) + { + // Animals + case cMonster::mtChicken: + case cMonster::mtCow: + case cMonster::mtHorse: + case cMonster::mtPig: + case cMonster::mtSheep: + case cMonster::mtSquid: + case cMonster::mtMooshroom: + case cMonster::mtOcelot: + case cMonster::mtWolf: + { + Exp = m_World->GetTickRandomNumber(2) + 1; + } + + // Monsters + case cMonster::mtCaveSpider: + case cMonster::mtCreeper: + case cMonster::mtEnderman: + case cMonster::mtGhast: + case cMonster::mtSilverfish: + case cMonster::mtSkeleton: + case cMonster::mtSpider: + case cMonster::mtWitch: + case cMonster::mtZombie: + case cMonster::mtZombiePigman: + case cMonster::mtSlime: + case cMonster::mtMagmaCube: + { + Exp = 6 + (m_World->GetTickRandomNumber(2)); + } + + // Bosses + case cMonster::mtEnderDragon: + { + Exp = 12000; + } + case cMonster::mtWither: + { + Exp = 50; + } + + default: + { + Exp = 0; + } + } + m_World->SpawnExperienceOrb(GetPosX(), GetPosY(), GetPosZ(), Exp); m_DestroyTimer = 0; } -- cgit v1.2.3 From 18b5ccbc0836dbfb4adcff76dbfbde340bcabbc1 Mon Sep 17 00:00:00 2001 From: STRWarrior Date: Mon, 25 Nov 2013 21:43:43 +0100 Subject: Fixed Details Xoft gave. Increased the range where orbs (should) track you. Blazes give 10 xp now. --- source/Mobs/Monster.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'source/Mobs') diff --git a/source/Mobs/Monster.cpp b/source/Mobs/Monster.cpp index a74881978..091623c8a 100644 --- a/source/Mobs/Monster.cpp +++ b/source/Mobs/Monster.cpp @@ -259,7 +259,7 @@ void cMonster::KilledBy(cEntity * a_Killer) { m_World->BroadcastSoundEffect(m_SoundDeath, (int)(GetPosX() * 8), (int)(GetPosY() * 8), (int)(GetPosZ() * 8), 1.0f, 0.8f); } - int Exp; + int Reward; switch (m_MobType) { // Animals @@ -273,7 +273,7 @@ void cMonster::KilledBy(cEntity * a_Killer) case cMonster::mtOcelot: case cMonster::mtWolf: { - Exp = m_World->GetTickRandomNumber(2) + 1; + Reward = m_World->GetTickRandomNumber(2) + 1; } // Monsters @@ -290,25 +290,29 @@ void cMonster::KilledBy(cEntity * a_Killer) case cMonster::mtSlime: case cMonster::mtMagmaCube: { - Exp = 6 + (m_World->GetTickRandomNumber(2)); + Reward = 6 + (m_World->GetTickRandomNumber(2)); + } + case cMonster::mtBlaze: + { + Reward = 10; } // Bosses case cMonster::mtEnderDragon: { - Exp = 12000; + Reward = 12000; } case cMonster::mtWither: { - Exp = 50; + Reward = 50; } default: { - Exp = 0; + Reward = 0; } } - m_World->SpawnExperienceOrb(GetPosX(), GetPosY(), GetPosZ(), Exp); + m_World->SpawnExperienceOrb(GetPosX(), GetPosY(), GetPosZ(), Reward); m_DestroyTimer = 0; } -- cgit v1.2.3