I'm still new so this is probably quite bad code
extends Node2D
var spell_selected
var battle_menu_number = 1
var battle_spell_select = 1
var battle_state
enum {
neutral,
fight,
healing,
attacking,
enemy_attacking,
won_battle,
out_of_battle
}
var battle_key
onready var Player
onready var Enemy
onready var Menu
onready var Spell_Code
onready var spell1
var at_start_of_battle = true
var select_battle_option = true
var attacked: bool
var spell_in_use
var damage = 0
var enemy_attacked = false
var health = 60
func _process(delta):
if health <= 0:
health = 0
if health == 0:
battle_state = won_battle
get_tree().change_scene(get_node("/root/Node2D").data_to_save["scene_path"])
if get_tree().current_scene.filename == "res://battlesystem.tscn":
if at_start_of_battle == true:
battle_state = neutral
at_start_of_battle = false
Player = get_node("/root/Node2D/KinematicBody2D")
Enemy = get_node("/root/Node2D/KinematicBody2D2")
Menu = get_node("/root/Node2D/CanvasLayer3/NinePatchRect")
Spell_Code = get_node("/root/Node2D/Node2D3")
spell1 = get_node("/root/Node2D/RichTextLabel2")
Player.movement_state = Player.player_in_battle
match battle_state:
neutral:
if battle_menu_number == 1:
if Input.is_action_just_pressed("ui_enter"):
battle_state = fight
fight:
spell1.visible = true
spell1.text = Menu.down_key_spell["name"]
if battle_spell_select == 1:
if Input.is_action_just_pressed("ui_enter"):
select_battle_option = false
spell_in_use = Menu.down_key_spell
battle_key = "ui_downarrow"
battle_state = attacking
elif battle_spell_select == 1:
if Input.is_action_just_pressed("ui_enter"):
select_battle_option = false
spell_in_use = Menu.up_key_spell
battle_state = attacking
battle_key = "ui_uparrow"
elif battle_spell_select == 3:
if Input.is_action_just_pressed("ui_enter"):
select_battle_option = false
spell_in_use = Menu.left_key_spell
battle_state = attacking
battle_key = "ui_leftarrow"
elif battle_spell_select == 4:
if Input.is_action_just_pressed("ui_enter"):
select_battle_option = false
spell_in_use = Menu.right_key_spell
battle_state = attacking
battle_key = "ui_rightarrow"
attacking:
if Player.position == Vector2(381, 197):
Spell_Code.spells = spell_in_use["effect"]
if attacked == false:
Player.position = Player.position.move_toward(Vector2(381, 197), 6)
else:
Player.position = Player.position.move_toward(Vector2(225, 198), 6)
if attacked == true:
if Player.position == Vector2(225, 198):
if damage > 0:
if Enemy.bonus > 0: # bonus = extra damage to enemy if attacks are timed correctly
damage += Enemy.bonus
Enemy.bonus = 0
health -= damage
Enemy.bonus = 0
damage = 0
else:
health -= damage
damage = 0
if health > 0:
battle_state = enemy_attacking
enemy_attacking:
if enemy_attacked == false:
Enemy.position = Enemy.position.move_toward(Vector2(-157, -1), 6)
if Enemy.position == Vector2(-157, -1):
Player.health -= 15
enemy_attacked = true
if enemy_attacked == true:
Enemy.position = Enemy.position.move_toward(Vector2(0, 0), 6)
if Enemy.position == Vector2(0, 0):
enemy_attacked = false
attacked = false
battle_state = neutral
won_battle:
Enemy.dead = true
out_of_battle:
pass
func _on_AnimationPlayer2_animation_finished(anim_name):
attacked = true
func _ready():
battle_state = out_of_battle