extends Node3D # These next few functions are supposed to help with MAP stuff. var MapNumber: int = 0 @onready var MapGUI = get_node("GUI/Map") @export var AliveEnemies: Array # These are... other @export var Current: Texture @export var UnCurrent: Texture var Activities: Array @export var DoActivities: bool func _process(_delta): get_node("GUI/PlayerStats/Attack").text = str(Player.Attack) get_node("GUI/PlayerStats/Defence").text = str(Player.Heal) get_node("GUI/PlayerStats/Level").text = str(Player.Level) get_node("GUI/PlayerStats/Health").size.x = 300 * (Player.HP / Player.MaxHP) get_node("GUI/EnemyStats/Attack").text = str(Enemy.Attack) get_node("GUI/EnemyStats/Defence").text = str(Enemy.Heal) get_node("GUI/EnemyStats/Level").text = str(Enemy.Level) get_node("GUI/EnemyStats/Health").size.x = 300 * (Enemy.HP / Enemy.MaxHP) get_node("Add Points/Points Left").text = str(Player.PointsLeft) # Do the activities as soon as you leave :D if DoActivities == true && get_node("GUI/Map").visible == false: if Activities.size() == 0: DoActivities = false return if !get_node("Animator").is_playing() && Activities[0] == "Attack": get_node("Animator").play("Attack") Activities.remove_at(0) if !get_node("Animator").is_playing() && Activities[0] == "Heal": get_node("Animator").play("Heal") Player.HP = Player.HP + (Player.Heal * randf_range(1, 8)) if Player.HP >= Player.MaxHP: Player.HP = Player.MaxHP Activities.remove_at(0) if !get_node("Animator").is_playing() && Activities[0] == "Enemy": Enemy.EnemyTakeTurn() Activities.remove_at(0) func _ready(): randomize() # Load the tasks var List = GlobalVars.LoadList("user://Tasks") while List.size() != 0: var text = List[0] List.remove_at(0) var difficulty = List[0] List.remove_at(0) SummonLabel(1, text, int(difficulty), "Task GUI/ScrollContainer/Task List") # Load the dailies List = GlobalVars.LoadList("user://Daily") var List2 = GlobalVars.LoadList("user://DoneDaily") GlobalVars.Date = GlobalVars.LoadSingle("user://Date") if GlobalVars.Date != Time.get_date_dict_from_system().day: GlobalVars.SaveSingle(Time.get_date_dict_from_system().day, "user://Date") Activities.append("Enemy") List.append_array(List2) List2 = [] while List.size() != 0: var text = List[0] List.remove_at(0) var difficulty = List[0] List.remove_at(0) SummonLabel(2, text, int(difficulty), "Task GUI/ScrollContainer2/Daily List") while List2.size() != 0: var text = List2[0] List2.remove_at(0) var difficulty = List2[0] List2.remove_at(0) var node = SLabel.instantiate() node.set("Type", 2) node.set("Difficulty", difficulty) get_node("Task GUI/ScrollContainer2/Daily List").add_child(node) node.get_node("Number").text = str(difficulty) node.text = text node.get_node("Check").text = "[X]" # Stat stuff next var Things: Array = GlobalVars.LoadList("user://Stats") # this stops a wierd bug from happening if Things.size() == 0: Enemy.SpawnEnemy() GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft) Things = GlobalVars.LoadList("user://Stats") AliveEnemies[0] = int(Things[0]) AliveEnemies[1] = int(Things[1]) AliveEnemies[2] = int(Things[2]) AliveEnemies[3] = int(Things[3]) AliveEnemies[4] = int(Things[4]) AliveEnemies[5] = int(Things[5]) Player.HP = float(Things[6]) Player.MaxHP = float(Things[7]) Player.Attack = float(Things[8]) Player.Heal = float(Things[9]) Player.Level = int(Things[10]) Enemy.HP = float(Things[11]) Enemy.MaxHP = float(Things[12]) Enemy.Attack = float(Things[13]) Enemy.Heal = float(Things[14]) Enemy.Level = int(Things[15]) Player.Experience = int(Things[16]) Player.PointsLeft = int(Things[17]) if Player.PointsLeft != 0: get_node("GUI/Points").visible = true ChangeMap(0) DoActivities = true func SummonLabel(Type: int, Text: String, Difficulty: int, ChildNode: NodePath): var node = SLabel.instantiate() node.set("Type", Type) node.set("Difficulty", Difficulty) get_node(ChildNode).add_child(node) node.text = Text node.get_node("Number").text = str(Difficulty) func ChangeMap(MapThing: int): # we need to make sure that these if MapThing == MapNumber + 1 || MapThing == MapNumber - 1: get_node("GUI/Map/Map0" + str(MapThing)).texture_normal = Current get_node("GUI/Map/Map0" + str(MapNumber)).texture_normal = UnCurrent MapNumber = MapThing if AliveEnemies[MapNumber] == 1: get_node("Enemy").visible = true MapGUI.visible = false # Spawning enemies if Enemy.HP <= 0: Enemy.SpawnEnemy() GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft) else: get_node("Enemy").visible = false MapGUI.visible = true # This is an animation function, made at the end of the round to calculate damage. func FinalizeRound(): GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft) if Enemy.HP <= 0: get_node("Enemy").visible = false MapGUI.visible = true AliveEnemies[MapNumber] = 0 Player.Experience = Player.Experience + (10 * Enemy.Level) print("player experience") # Give points while Player.Experience >= 10: Player.Experience = Player.Experience - 10 Player.PointsLeft = Player.PointsLeft + 100 get_node("GUI/Points").visible = true GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft) # Once we are done, be done with it! if MapNumber == 5: AliveEnemies[0] = 1 AliveEnemies[1] = 1 AliveEnemies[2] = 1 AliveEnemies[3] = 1 AliveEnemies[4] = 1 AliveEnemies[5] = 1 # Temporary stuff so that way it works. Player.HP = Player.MaxHP Enemy.HP = Enemy.MaxHP GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft) get_tree().change_scene_to_file("res://Menu Stuffs/Main Menu.tscn") # Death of player if Player.HP <= 0: AliveEnemies[0] = 1 AliveEnemies[1] = 1 AliveEnemies[2] = 1 AliveEnemies[3] = 1 AliveEnemies[4] = 1 AliveEnemies[5] = 1 # Temporary stuff so that way it works. Player.HP = Player.MaxHP Enemy.HP = Enemy.MaxHP GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft) get_tree().change_scene_to_file("res://Menu Stuffs/Main Menu.tscn") # These next functions are related to the tasks. # It is usually a lot of button pushing. var SLabel = preload("res://Tasks Stuffs/Task/s_label.tscn") func _on_task_opener_pressed(): if !get_node("Animator").is_playing(): get_node("Animator").play("Task Show") func _on_task_closer_pressed(): if !get_node("Animator").is_playing(): get_node("Animator").play("Task Hide") # Save everything in the task area var children = get_node("Task GUI/ScrollContainer/Task List").get_children() var stringies: PackedStringArray = [] for i in children: stringies.append(i.text) stringies.append(str(i.get("Difficulty"))) GlobalVars.SaveList(stringies, "user://Tasks") # Save everything in the dailies area children = get_node("Task GUI/ScrollContainer2/Daily List").get_children() stringies = [] var stringies2: PackedStringArray = [] for i in children: if i.get_node("Check").text == "[X]": stringies2.append(i.text) stringies2.append(str(i.get("Difficulty"))) else: stringies.append(i.text) stringies.append(str(i.get("Difficulty"))) GlobalVars.SaveList(stringies, "user://Daily", stringies2, "user://DoneDaily") _on_task_close_requested() _on_daily_window_close_requested() func _on_add_task_pressed(): get_node("Task GUI/Task Window").popup() func _on_del_task_pressed(): var children = get_node("Task GUI/ScrollContainer/Task List").get_children() if get_node("Task GUI/Add Task/Del Task").button_pressed == true: for i in children: i.get_node("Delete").visible = true else: for i in children: i.get_node("Delete").visible = false func _on_add_daily_pressed(): get_node("Task GUI/Daily Window").popup() func _on_del_daily_pressed(): var children = get_node("Task GUI/ScrollContainer2/Daily List").get_children() if get_node("Task GUI/Add Daily/Del Daily").button_pressed == true: for i in children: i.get_node("Delete").visible = true else: for i in children: i.get_node("Delete").visible = false func _on_back_pressed(): get_tree().change_scene_to_file("res://Menu Stuffs/Scene/Main Menu.tscn") # Stuff about the windows. func _on_task_close_requested(): get_node("Task GUI/Task Window").visible = false get_node("Task GUI/Task Window/TaskEdit").text = "" get_node("Task GUI/Task Window/HSlider").value = 0 func Confirm1(): var text = get_node("Task GUI/Task Window/TaskEdit").text var difficulty = get_node("Task GUI/Task Window/HSlider").value if text != "": SummonLabel(1, text, int(difficulty), "Task GUI/ScrollContainer/Task List") _on_task_close_requested() func _on_daily_window_close_requested(): get_node("Task GUI/Daily Window").visible = false get_node("Task GUI/Daily Window/DailyEdit").text = "" get_node("Task GUI/Daily Window/HSlider").value = 0 func Confirm2(): var text = get_node("Task GUI/Daily Window/DailyEdit").text var difficulty = get_node("Task GUI/Daily Window/HSlider").value if text != "": SummonLabel(2, text, int(difficulty), "Task GUI/ScrollContainer2/Daily List") _on_daily_window_close_requested() # Add points screen func _on_points_pressed(): get_node("Add Points").visible = true func _on_strength_pressed(): Player.Attack = Player.Attack + 1 PointsOut() func _on_heal_pressed(): Player.Heal = Player.Heal + 1 PointsOut() func _on_health_pressed(): Player.MaxHP = Player.MaxHP + 10 PointsOut() func PointsOut(): Player.PointsLeft = Player.PointsLeft - 1 if Player.PointsLeft == 0: get_node("Add Points").visible = false get_node("GUI/Points").visible = false GlobalVars.SaveStats(AliveEnemies, Player.HP, Player.MaxHP, Player.Attack, Player.Heal, Player.Level, Enemy.HP, Enemy.MaxHP, Enemy.Attack, Enemy.Heal, Enemy.Level, Player.Experience, Player.PointsLeft)