bacteria.gd 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. extends KinematicBody2D
  2. var motion = Vector2()
  3. var dir = Vector2()
  4. export var speed = 500
  5. var attackrange = 80
  6. signal dieproxy
  7. var exppt = 0
  8. var currentxp = 0
  9. var totalxp = 0
  10. var nextxp = 100
  11. var lv = 1
  12. var menbros = {
  13. 'braco_bruto':{
  14. 'img':load('res://leg3.png'),
  15. 'range': 0.75,
  16. 'dmg':1.25,
  17. 'atkspeed':1.0,
  18. },
  19. 'menbro_chicote':{
  20. 'img':load('res://leg2.png'),
  21. 'range': 1.25,
  22. 'dmg':0.75,
  23. 'atkspeed':1.25,
  24. },
  25. 'o_corredor':{
  26. 'img':load('res://leg.png'),
  27. 'hp': 0.75,
  28. 'dmg':0.75,
  29. 'speed':1.5,
  30. }
  31. }
  32. var corpo = {
  33. 'carapaca_firme':{
  34. 'hp':1.5,
  35. },
  36. 'metabolismo_avancado':{
  37. 'regen':1.05,
  38. 'regen_time':7.0,
  39. },
  40. 'cerebro_avantajado':{
  41. 'xpmult':1.25,
  42. },
  43. 'escama_reflexiva':{
  44. 'react_dmg' : 1.0,
  45. },
  46. }
  47. var apendice = {
  48. 'olhos_admirantes':{
  49. 'camzoom' : 1.5,
  50. },
  51. }
  52. var dict = {
  53. 'a': menbros.braco_bruto,
  54. 'b': menbros.braco_bruto,
  55. 'c': menbros.braco_bruto,
  56. 'd': corpo.escama_reflexiva,
  57. 'e': apendice.olhos_admirantes,
  58. }
  59. func get_stat(arg):
  60. var buff = 1.0
  61. for x in dict.values():
  62. if x.has(arg):
  63. buff *= x[arg]
  64. return buff
  65. func _ready():
  66. self.speed = get_stat('speed') * 200
  67. self.xpmult = get_stat('xpmult')
  68. $hitbox.dmg = get_stat('dmg') * 10
  69. $Health.reactive_dmg = get_stat('dmg') * get_stat('react_dmg')
  70. $hitbox.apc = get_stat('atkspeed')
  71. $Health.regen = get_stat('regen') - 1
  72. $Health.health = get_stat('hp') * 50
  73. $Health.health_max = get_stat('hp') * 50
  74. $Camera2D.zoom.x = get_stat('camzoom')
  75. $Camera2D.zoom.y = get_stat('camzoom')
  76. $Health._ready()
  77. self.attackrange = get_stat('range') * 80
  78. for x in get_node("Icon").get_children():
  79. for y in x.get_children():
  80. for z in y.get_children():
  81. z.queue_free()
  82. var sprite = Sprite.new()
  83. sprite.texture = dict[y.name].img
  84. y.add_child(sprite)
  85. func _physics_process(delta):
  86. move_and_slide(motion * speed)
  87. $hitbox.position = dir * attackrange
  88. $Icon.rotation = atan2(motion.y,motion.x)
  89. $AnimationPlayer.playback_speed = motion.length() * speed / 100 * 1.5
  90. func _input(event):
  91. if event is InputEventScreenDrag or event is InputEventScreenTouch and event.is_pressed():
  92. dir = (event.position - get_global_transform_with_canvas().origin).normalized()
  93. motion = dir
  94. # else:
  95. # motion *= .8
  96. func _on_Health_die():
  97. emit_signal('dieproxy')
  98. pass # Replace with function body.
  99. var xpmult = 1.0
  100. func _on_hitbox_gotxp(arg):
  101. totalxp += arg * xpmult
  102. currentxp += arg * xpmult
  103. if currentxp > nextxp:
  104. currentxp -= nextxp
  105. nextxp *= 1.5
  106. lv += 1
  107. print(lv)
  108. $CanvasLayer/VBoxContainer/Label.set_text(str(currentxp))
  109. $CanvasLayer/VBoxContainer/Label3.set_text('Lv.'+str(lv))
  110. $CanvasLayer/VBoxContainer/Label/ProgressBar2.set_value( currentxp )
  111. $CanvasLayer/VBoxContainer/Label/ProgressBar2.set_max( nextxp )
  112. pass # Replace with function body.