aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/Monster.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/Monster.cpp')
-rw-r--r--Minecraft.World/Monster.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/Minecraft.World/Monster.cpp b/Minecraft.World/Monster.cpp
index 174a706c..ad19a36d 100644
--- a/Minecraft.World/Monster.cpp
+++ b/Minecraft.World/Monster.cpp
@@ -46,7 +46,7 @@ shared_ptr<Entity> Monster::findAttackTarget()
#endif
shared_ptr<Player> player = level->getNearestAttackablePlayer(shared_from_this(), 16);
- if (player != NULL && canSee(player) ) return player;
+ if (player != nullptr && canSee(player) ) return player;
return shared_ptr<Player>();
}
@@ -60,7 +60,14 @@ bool Monster::hurt(DamageSource *source, float dmg)
if (sourceEntity != shared_from_this())
{
- attackTarget = sourceEntity;
+ if (sourceEntity->instanceof(eTYPE_PLAYER))
+ {
+ if (!dynamic_pointer_cast<Player>(sourceEntity)->abilities.invulnerable)
+ {
+ attackTarget = sourceEntity;
+ }
+ }
+ else attackTarget = sourceEntity;
}
return true;
}
@@ -75,7 +82,7 @@ bool Monster::hurt(DamageSource *source, float dmg)
*/
bool Monster::doHurtTarget(shared_ptr<Entity> target)
{
- float dmg = (float) getAttribute(SharedMonsterAttributes::ATTACK_DAMAGE)->getValue();
+ float dmg = static_cast<float>(getAttribute(SharedMonsterAttributes::ATTACK_DAMAGE)->getValue());
int knockback = 0;