123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- extends KinematicBody2D
- var motion = Vector2()
- var dir = Vector2()
- export var speed = 500
- var attackrange = 80
- signal dieproxy
- var exppt = 0
- var currentxp = 0
- var totalxp = 0
- var nextxp = 100
- var lv = 1
- var menbros = {
- 'braco_bruto':{
- 'img':load('res://leg3.png'),
- 'range': 0.75,
- 'dmg':1.25,
- 'atkspeed':1.0,
- },
- 'menbro_chicote':{
- 'img':load('res://leg2.png'),
- 'range': 1.25,
- 'dmg':0.75,
- 'atkspeed':1.25,
- },
- 'o_corredor':{
- 'img':load('res://leg.png'),
- 'hp': 0.75,
- 'dmg':0.75,
- 'speed':1.5,
- }
- }
- var corpo = {
- 'carapaca_firme':{
- 'hp':1.5,
- },
- 'metabolismo_avancado':{
- 'regen':1.05,
- 'regen_time':7.0,
- },
- 'cerebro_avantajado':{
- 'xpmult':1.25,
- },
- 'escama_reflexiva':{
- 'react_dmg' : 1.0,
- },
- }
- var apendice = {
- 'olhos_admirantes':{
- 'camzoom' : 1.5,
- },
- }
- var dict = {
- 'a': menbros.braco_bruto,
- 'b': menbros.braco_bruto,
- 'c': menbros.braco_bruto,
- 'd': corpo.escama_reflexiva,
- 'e': apendice.olhos_admirantes,
- }
- func get_stat(arg):
- var buff = 1.0
- for x in dict.values():
- if x.has(arg):
- buff *= x[arg]
- return buff
- func _ready():
-
- self.speed = get_stat('speed') * 200
- self.xpmult = get_stat('xpmult')
- $hitbox.dmg = get_stat('dmg') * 10
- $Health.reactive_dmg = get_stat('dmg') * get_stat('react_dmg')
- $hitbox.apc = get_stat('atkspeed')
- $Health.regen = get_stat('regen') - 1
- $Health.health = get_stat('hp') * 50
- $Health.health_max = get_stat('hp') * 50
- $Camera2D.zoom.x = get_stat('camzoom')
- $Camera2D.zoom.y = get_stat('camzoom')
- $Health._ready()
- self.attackrange = get_stat('range') * 80
-
- for x in get_node("Icon").get_children():
- for y in x.get_children():
- for z in y.get_children():
- z.queue_free()
- var sprite = Sprite.new()
- sprite.texture = dict[y.name].img
- y.add_child(sprite)
- func _physics_process(delta):
-
- move_and_slide(motion * speed)
- $hitbox.position = dir * attackrange
- $Icon.rotation = atan2(motion.y,motion.x)
- $AnimationPlayer.playback_speed = motion.length() * speed / 100 * 1.5
- func _input(event):
- if event is InputEventScreenDrag or event is InputEventScreenTouch and event.is_pressed():
- dir = (event.position - get_global_transform_with_canvas().origin).normalized()
- motion = dir
- # else:
- # motion *= .8
-
- func _on_Health_die():
- emit_signal('dieproxy')
- pass # Replace with function body.
- var xpmult = 1.0
- func _on_hitbox_gotxp(arg):
- totalxp += arg * xpmult
- currentxp += arg * xpmult
- if currentxp > nextxp:
- currentxp -= nextxp
- nextxp *= 1.5
- lv += 1
- print(lv)
- $CanvasLayer/VBoxContainer/Label.set_text(str(currentxp))
- $CanvasLayer/VBoxContainer/Label3.set_text('Lv.'+str(lv))
- $CanvasLayer/VBoxContainer/Label/ProgressBar2.set_value( currentxp )
- $CanvasLayer/VBoxContainer/Label/ProgressBar2.set_max( nextxp )
- pass # Replace with function body.
|