105 lines
3.1 KiB
GDScript
105 lines
3.1 KiB
GDScript
extends Node3D
|
|
|
|
var Swapper = false
|
|
|
|
var HP: float = 100
|
|
var MaxHP: float = 100
|
|
var Attack: float = 10
|
|
var Heal: float = 2
|
|
var Level: int = 1
|
|
|
|
var Experience: float = 0
|
|
var PointsLeft: int = 0
|
|
|
|
@export_node_path("Node3D") var EnemyPath
|
|
|
|
@onready var InventoryWeapons = get_tree().get_current_scene().get_node("InventoryGUI/Weapons/HFlowContainer")
|
|
@onready var InventoryHelmets = get_tree().get_current_scene().get_node("InventoryGUI/Helmet/HFlowContainer")
|
|
@onready var InventoryArmours = get_tree().get_current_scene().get_node("InventoryGUI/Armor/HFlowContainer")
|
|
|
|
@export_node_path("Control") var InventoryGUI
|
|
@export_category("Equipment")
|
|
@export_node_path("Sprite3D") var Weapon
|
|
@export_node_path("Sprite3D") var Helmet
|
|
@export_node_path("Sprite3D") var Armour
|
|
@export var Weapons: Array[CompressedTexture2D]
|
|
@export var Helmets: Array[CompressedTexture2D]
|
|
@export var Armours: Array[CompressedTexture2D]
|
|
@export var WeaponRotation: Array[Vector3]
|
|
@export var WeaponPosition: Array[Vector3]
|
|
|
|
func _ready():
|
|
# stop from loading in the menu
|
|
if InventoryWeapons == null:
|
|
return
|
|
|
|
var stringies = GlobalVars.LoadList("user://Items")
|
|
var Number = 0
|
|
# stops a bug from happening
|
|
if stringies.size() == 0:
|
|
GlobalVars.SaveItems()
|
|
stringies = GlobalVars.LoadList("user://Items")
|
|
# loading the invenstory stuff
|
|
while Number != GlobalVars.HelmetOwned.size():
|
|
GlobalVars.HelmetOwned[Number] = int(stringies[0])
|
|
stringies.remove_at(0)
|
|
Number = Number + 1
|
|
Number = 0
|
|
while Number != GlobalVars.WeaponsOwned.size():
|
|
GlobalVars.WeaponsOwned[Number] = int(stringies[0])
|
|
stringies.remove_at(0)
|
|
Number = Number + 1
|
|
Number = 0
|
|
while Number != GlobalVars.ArmourOwned.size():
|
|
GlobalVars.ArmourOwned[Number] = int(stringies[0])
|
|
stringies.remove_at(0)
|
|
Number = Number + 1
|
|
# now, load the fun stuff.
|
|
Number = 0
|
|
var Children = InventoryHelmets.get_children()
|
|
Children.remove_at(0)
|
|
stringies = GlobalVars.LoadList("user://Items")
|
|
for i in GlobalVars.HelmetOwned:
|
|
if i == 0:
|
|
Children[0].visible = false
|
|
Children.remove_at(0)
|
|
Children = InventoryWeapons.get_children()
|
|
Children.remove_at(0)
|
|
for i in GlobalVars.WeaponsOwned:
|
|
if i == 0:
|
|
Children[0].visible = false
|
|
Children.remove_at(0)
|
|
Children = InventoryArmours.get_children()
|
|
Children.remove_at(0)
|
|
for i in GlobalVars.ArmourOwned:
|
|
if i == 0:
|
|
Children[0].visible = false
|
|
Children.remove_at(0)
|
|
|
|
# This function is a animation thing. Within Attack
|
|
func DealEnemyDamage():
|
|
Enemy.HP -= Attack * randf_range(1, 8)
|
|
if Swapper == false:
|
|
get_node(EnemyPath).get_node("Damage").set("emitting", true)
|
|
else:
|
|
get_node(EnemyPath).get_node("Damage2").set("emitting", true)
|
|
Swapper = !Swapper
|
|
|
|
# This is the place for inventory stuff!
|
|
|
|
func InventoryShow():
|
|
get_node(InventoryGUI).visible = true
|
|
|
|
func InventoryHide():
|
|
get_node(InventoryGUI).visible = false
|
|
|
|
func UpdateWeapon(Thing: int):
|
|
get_node(Weapon).texture = Weapons[Thing]
|
|
get_node(Weapon).rotation_degrees = WeaponRotation[Thing]
|
|
get_node(Weapon).position = WeaponPosition[Thing]
|
|
|
|
func UpdateHelmet(Thing: int):
|
|
get_node(Helmet).texture = Helmets[Thing]
|
|
|
|
func UpdateArmour(Thing: int):
|
|
get_node(Armour).texture = Armours[Thing]
|