123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- extends KinematicBody2D
- var motion = Vector2(0,1)
- var dir = Vector2(0,1)
- export var speed = 200
- var attackrange = 80
- signal dieproxy
- var exppt = 0
- var currentxp = 0
- var totalxp = 0
- var nextxp = 25
- var lv = 1
- func get_stat(arg):
- var buff = 1.0
- for x in Powerups.dict.values():
- if x.has(arg):
- buff *= x[arg]
- print(arg +" stat is : "+ str(buff))
- return buff
- func _load():
- self.speed = get_stat('speed') * 200
- self.xpmult = get_stat('xpmult')
- $hitbox.dmg = get_stat('dmg') * 10
- $hitbox.critical_chance = get_stat('critical_chance') - 1.0
- $hitbox.critical_dmg = get_stat('critical_dmg')
- $Health.reactive_dmg = get_stat('dmg') * get_stat('react_dmg')
- $Health.hpmult = get_stat('hppickup')
- $Health.chance = (get_stat('invunerabilitychance') - 1.0)
- $Health.chance += ((get_stat('invunerabilitychancemult') - 1.0)*self.speed/100)
- $Health.invutime = get_stat('invunerabilitytime')
- $hitbox.hpsteal = get_stat('hpsteal')
- $hitbox.stealhp = get_stat('stealhp')
- $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()
- print('real invu chance is : ' + str($Health.chance))
- 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.hframes = 2
- sprite.texture = Powerups.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
- func _on_Health_die():
- emit_signal('dieproxy')
- pass # Replace with function body.
- var xpmult = 1.0
- signal level_up
- signal menuclose
- func _on_hitbox_gotxp(arg):
- totalxp += arg * xpmult
- currentxp += arg * xpmult
- while currentxp > nextxp:
- currentxp -= nextxp
- emit_signal("level_up")
- nextxp += 5
- lv += 1
- print(lv)
- $CanvasLayer/VBoxContainer/Label.set_text(str(int(currentxp)))
- $CanvasLayer/VBoxContainer/Label3.set_text('Lv.'+str(lv))
- $CanvasLayer/ProgressBar2.set_value( currentxp )
- $CanvasLayer/ProgressBar2.set_max( nextxp )
- yield(get_parent().get_node("PowerUpControl"),"close_menu")
- yield(Timergen.createtime(self,0.01677),'timeout')
- pass # Replace with function body.
|