mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-06 09:56:06 +00:00
Added strength, weakness, resistance effects, fixed entity area
This commit is contained in:
@ -21,6 +21,7 @@
|
||||
|
||||
namespace pocketmine\event\entity;
|
||||
|
||||
use pocketmine\entity\Effect;
|
||||
use pocketmine\entity\Entity;
|
||||
|
||||
class EntityDamageByEntityEvent extends EntityDamageEvent{
|
||||
@ -41,6 +42,17 @@ class EntityDamageByEntityEvent extends EntityDamageEvent{
|
||||
$this->damager = $damager;
|
||||
$this->knockBack = $knockBack;
|
||||
parent::__construct($entity, $cause, $damage);
|
||||
$this->addAttackerModifiers($damager);
|
||||
}
|
||||
|
||||
protected function addAttackerModifiers(Entity $damager){
|
||||
if($damager->hasEffect(Effect::STRENGTH)){
|
||||
$this->setDamage($this->getDamage(self::MODIFIER_BASE) * 0.3 * ($damager->getEffect(Effect::STRENGTH)->getAmplifier() + 1), self::MODIFIER_STRENGTH);
|
||||
}
|
||||
|
||||
if($damager->hasEffect(Effect::WEAKNESS)){
|
||||
$this->setDamage(-($this->getDamage(self::MODIFIER_BASE) * 0.2 * ($damager->getEffect(Effect::WEAKNESS)->getAmplifier() + 1)), self::MODIFIER_WEAKNESS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
namespace pocketmine\event\entity;
|
||||
|
||||
use pocketmine\entity\Effect;
|
||||
use pocketmine\entity\Entity;
|
||||
use pocketmine\event\Cancellable;
|
||||
|
||||
@ -29,6 +30,9 @@ class EntityDamageEvent extends EntityEvent implements Cancellable{
|
||||
|
||||
const MODIFIER_BASE = 0;
|
||||
const MODIFIER_ARMOR = 1;
|
||||
const MODIFIER_STRENGTH = 2;
|
||||
const MODIFIER_WEAKNESS = 3;
|
||||
const MODIFIER_RESISTANCE = 4;
|
||||
|
||||
const CAUSE_CONTACT = 0;
|
||||
const CAUSE_ENTITY_ATTACK = 1;
|
||||
@ -76,6 +80,10 @@ class EntityDamageEvent extends EntityEvent implements Cancellable{
|
||||
if(!isset($this->modifiers[self::MODIFIER_BASE])){
|
||||
throw new \InvalidArgumentException("BASE Damage modifier missing");
|
||||
}
|
||||
|
||||
if($entity->hasEffect(Effect::DAMAGE_RESISTANCE)){
|
||||
$this->setDamage(-($this->getDamage(self::MODIFIER_BASE) * 0.20 * ($entity->getEffect(Effect::DAMAGE_RESISTANCE)->getAmplifier() + 1)), self::MODIFIER_RESISTANCE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -118,9 +126,6 @@ class EntityDamageEvent extends EntityEvent implements Cancellable{
|
||||
* @throws \UnexpectedValueException
|
||||
*/
|
||||
public function setDamage($damage, $type = self::MODIFIER_BASE){
|
||||
if(!isset($this->modifiers[$type])){
|
||||
throw new \UnexpectedValueException($type . " is not applicable to " . $this->getEntity());
|
||||
}
|
||||
$this->modifiers[$type] = $damage;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user