Extensive work on VFX for the guild, assets for the world, and portrait variance. Work on quests. Extra work on User Flow completion and file saving.
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
class_name Adventurer extends Node
|
||||
|
||||
class Appearance extends Resource:
|
||||
var hair_color : String
|
||||
var hair_type : int
|
||||
var skin_color : String
|
||||
var eye_color : String
|
||||
var eye_type : int
|
||||
|
||||
enum Gender{
|
||||
MASC,
|
||||
@@ -17,12 +23,11 @@ var max_energy : int = 1
|
||||
var level : int = 1
|
||||
var exp : int = 0
|
||||
var job : JobData
|
||||
var appearance : Appearance
|
||||
var stats : StatBlock
|
||||
var gold : int = 0
|
||||
var quest : Quest
|
||||
var weapon : Weapon
|
||||
var armor : Armor
|
||||
var accessory : Accessory
|
||||
var equipment : Array = [null, null, null]
|
||||
var inventory : Dictionary[Vector2, Item] = {}
|
||||
var inventory_size : Vector2i = Vector2i(3,2)
|
||||
var inventory_count : int = 0
|
||||
@@ -45,7 +50,7 @@ func generate() -> void:
|
||||
stats.CHA = randi_range(job.min_CHA, job.max_CHA)
|
||||
stats.FAI = randi_range(job.min_FAI, job.max_FAI)
|
||||
stats.LUK = randi_range(job.min_LUK, job.max_LUK)
|
||||
|
||||
generate_appearance()
|
||||
max_life = stats.STR * 10 + stats.CHA * 10
|
||||
max_energy = stats.INT * 10 + stats.FAI * 10
|
||||
life = max_life
|
||||
@@ -64,7 +69,6 @@ func gain_level() -> void:
|
||||
level += 1
|
||||
#TODO: Make stats improve based on job
|
||||
Game.notice("%s has reached level %d!" % [full_name(), level])
|
||||
#TODO: Make Sideview display level up
|
||||
changed.emit()
|
||||
levelled.emit()
|
||||
|
||||
@@ -115,6 +119,50 @@ func pickup_item(item : Item) -> void:
|
||||
inventory_count+=1
|
||||
changed.emit()
|
||||
|
||||
func equip_item(from : Vector2, slot : Item.Slots) -> void:
|
||||
if !inventory.has(from):
|
||||
printerr("Cannot equip item from %s, it is empty!" % [from])
|
||||
|
||||
var itm = inventory[from]
|
||||
if !itm.can_equip_slot(slot):
|
||||
printerr("Cannot equip item from %s to %s, it is the wrong type!" % [from, Item.slot_name(slot)])
|
||||
|
||||
if !job.can_equip(itm):
|
||||
printerr("Cannot equip item from %s to %s, %s cannot equip it!" % [from, Item.slot_name(slot), job.name])
|
||||
|
||||
if equipment[slot] != null:
|
||||
inventory[from] = equipment[slot]
|
||||
remove_stats_from_item(itm)
|
||||
else:
|
||||
inventory.erase(from)
|
||||
equipment[slot] = itm
|
||||
apply_stats_from_item(itm)
|
||||
#Apply Stats from
|
||||
|
||||
func remove_stats_from_item(itm : Item) -> void:
|
||||
stats.STR -= stats.STR
|
||||
stats.DEX-= stats.DEX
|
||||
stats.INT-= stats.INT
|
||||
stats.CHA-= stats.CHA
|
||||
stats.FAI-= stats.FAI
|
||||
stats.LUK-= stats.LUK
|
||||
stats.PATK-= stats.PATK
|
||||
stats.MATK-= stats.MATK
|
||||
stats.PDEF-= stats.PDEF
|
||||
stats.MDEF-= stats.MDEF
|
||||
|
||||
func apply_stats_from_item(itm : Item) -> void:
|
||||
stats.STR += stats.STR
|
||||
stats.DEX+= stats.DEX
|
||||
stats.INT+= stats.INT
|
||||
stats.CHA+= stats.CHA
|
||||
stats.FAI+= stats.FAI
|
||||
stats.LUK+= stats.LUK
|
||||
stats.PATK+= stats.PATK
|
||||
stats.MATK+= stats.MATK
|
||||
stats.PDEF+= stats.PDEF
|
||||
stats.MDEF+= stats.MDEF
|
||||
|
||||
func move_item(from : Vector2, to: Vector2) -> void:
|
||||
if !inventory.has(from):
|
||||
printerr("Cannot move item from %s to %s, %s is empty!" % [from, to, from])
|
||||
@@ -126,3 +174,14 @@ func move_item(from : Vector2, to: Vector2) -> void:
|
||||
inventory.erase(from)
|
||||
inventory[to] = itm
|
||||
changed.emit()
|
||||
|
||||
func generate_appearance(features=null) -> void:
|
||||
if features == null:
|
||||
appearance = Appearance.new()
|
||||
#TODO: Handle different types of hair and eyes
|
||||
appearance.hair_color = AdventurerPortrait.random_color(ColorVariant.Types.HAIR)
|
||||
#appearance.hair_type = randi_range(0,len(job.portrait.hair_types) - 1)
|
||||
appearance.eye_color = AdventurerPortrait.random_color(ColorVariant.Types.EYES)
|
||||
#appearance.eye_type = randi_range(0,len(job.portrait.eye_types) - 1)
|
||||
appearance.skin_color = AdventurerPortrait.random_color(ColorVariant.Types.SKIN)
|
||||
changed.emit()
|
||||
|
||||
Reference in New Issue
Block a user