1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- extends Node2D
- export var health_max = 0
- onready var health = health_max
- signal die
- signal damage(dmg)
- export(NodePath) var progressbar
- export(NodePath) var text
- var regen = 0.0
- var regen_time = 7
- var reactive_dmg = 0.0
- var hpmult = 1.0
- var buff = 0
- export var xpparticles = false
- var xp = preload("res://effects/xp.tscn")
- var xporbs = 5
- var once = true
- var chance = 0.0
- var invutime = 2.5
- var vulnerable = true
- func _physics_process(delta):
- $Label.text = str(health)
- buff += 1
- if fmod(buff,regen_time*60) == 00:
- _damage(-regen * health_max ,'',self)
- func _damage(dmg, effect, caller):
- if health > health_max: health = health_max
- if vulnerable:
- health -= dmg * hpmult
- health = min(health,health_max)
- emit_signal('damage', dmg)
- if health <= 0 and once:
- once = false
- emit_signal('die')
- if xpparticles: xpanim(caller)
- yield(Timergen.createtime(self,1.0),'timeout')
- caller._expgain(get_parent().exppt)
- effect_processor(effect)
- if has_node(progressbar):
- get_node(progressbar).set_value( health )
- get_node(progressbar).set_max( health_max )
- get_node(text).set_text( str(int(health)) )
- if dmg > 0 :
- invutime()
- print(get_parent().name + ' entity health is : ' + str(health))
- func xpanim(caller):
- for x in xporbs:
- var new = xp.instance()
- new.caller = caller.get_parent()
- get_parent().get_parent().add_child(new)
- new.glob_pos = global_position
- func invutime():
- if randf() < chance:
- vulnerable = false
- print('invunerability')
- get_parent().modulate.b = 10
- yield(Timergen.createtime(self,invutime),'timeout')
- print('vunerability')
- vulnerable = true
- get_parent().modulate.b = 1
- else:
- get_parent().modulate = Color(10,10,10)
- yield(Timergen.createtime(self,0.1),'timeout')
- get_parent().modulate = Color(1,1,1)
- func _expgain(arg):
- pass
- func _ready():
- if has_node(progressbar):
- get_node(progressbar).set_value( health )
- get_node(progressbar).set_max( health_max )
- get_node(text).set_text( str(health_max) )
- func effect_processor(effect):
- pass
|