diff options
Diffstat (limited to 'Minecraft.World/Monster.cpp')
| -rw-r--r-- | Minecraft.World/Monster.cpp | 13 |
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; |
