mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-10 20:08:01 +00:00
Implemented critical hits (#1929)
This commit is contained in:
parent
cbbed6a6c1
commit
ad8d67137e
@ -2411,6 +2411,10 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
|||||||
$ev->setCancelled();
|
$ev->setCancelled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!$this->isSprinting() and !$this->isFlying() and $this->fallDistance > 0 and !$this->hasEffect(Effect::BLINDNESS) and !$this->isInsideOfWater()){
|
||||||
|
$ev->setDamage($ev->getFinalDamage() / 2, EntityDamageEvent::MODIFIER_CRITICAL);
|
||||||
|
}
|
||||||
|
|
||||||
$target->attack($ev);
|
$target->attack($ev);
|
||||||
|
|
||||||
if($ev->isCancelled()){
|
if($ev->isCancelled()){
|
||||||
@ -2420,6 +2424,16 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($ev->getDamage(EntityDamageEvent::MODIFIER_CRITICAL) > 0){
|
||||||
|
$pk = new AnimatePacket();
|
||||||
|
$pk->action = AnimatePacket::ACTION_CRITICAL_HIT;
|
||||||
|
$pk->entityRuntimeId = $target->getId();
|
||||||
|
$this->server->broadcastPacket($target->getViewers(), $pk);
|
||||||
|
if($target instanceof Player){
|
||||||
|
$target->dataPacket($pk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if($this->isSurvival()){
|
if($this->isSurvival()){
|
||||||
if($heldItem->useOn($target)){
|
if($heldItem->useOn($target)){
|
||||||
$this->inventory->setItemInHand($heldItem);
|
$this->inventory->setItemInHand($heldItem);
|
||||||
|
@ -39,6 +39,7 @@ class EntityDamageEvent extends EntityEvent implements Cancellable{
|
|||||||
public const MODIFIER_RESISTANCE = 4;
|
public const MODIFIER_RESISTANCE = 4;
|
||||||
public const MODIFIER_ABSORPTION = 5;
|
public const MODIFIER_ABSORPTION = 5;
|
||||||
public const MODIFIER_ARMOR_ENCHANTMENTS = 6;
|
public const MODIFIER_ARMOR_ENCHANTMENTS = 6;
|
||||||
|
public const MODIFIER_CRITICAL = 7;
|
||||||
|
|
||||||
public const CAUSE_CONTACT = 0;
|
public const CAUSE_CONTACT = 0;
|
||||||
public const CAUSE_ENTITY_ATTACK = 1;
|
public const CAUSE_ENTITY_ATTACK = 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user