21 lines
638 B
GDScript
21 lines
638 B
GDScript
extends Object
|
|
|
|
func apply_damage(damage_dealer: Entity, damage_receiver: Entity, weapon: Weapon ):
|
|
var damage = weapon.get_damage() + damage_dealer.get_damage()
|
|
var armor = damage_receiver.get_armor()
|
|
var damage_percent = 90*( pow(MathUtils.e, 0.03*armor))
|
|
|
|
var damage_after_armor = damage * damage_percent
|
|
if damage_after_armor < 1 :
|
|
damage_after_armor = 1
|
|
|
|
var shield = damage_receiver.get_shield()
|
|
if shield > 0:
|
|
damage_receiver.reduce_shield(damage_after_armor)
|
|
else:
|
|
damage_receiver.reduce_health(damage_after_armor)
|
|
|
|
for effect in weapon.get_hit_effects():
|
|
effect.apply_effect(damage_dealer,damage_receiver)
|
|
|