summaryrefslogtreecommitdiff
path: root/scripts/entities
diff options
context:
space:
mode:
authorMatheus <matheus.guedes.mg.m@gmail.com>2025-09-09 19:09:34 -0300
committerMatheus <matheus.guedes.mg.m@gmail.com>2025-09-09 19:09:34 -0300
commitc6bbb834f7758027c0df338f1520f34fad3befea (patch)
tree1818cd23c24be16fbe19b16dd0a510874d440d83 /scripts/entities
parentf1b51bed52ffbd90b5b7cc8dcfc6f0484bbbeb3c (diff)
Organização
Diffstat (limited to 'scripts/entities')
-rw-r--r--scripts/entities/Entity.cs108
-rw-r--r--scripts/entities/Entity.cs.uid1
-rw-r--r--scripts/entities/EntityDefinition.cs20
-rw-r--r--scripts/entities/EntityDefinition.cs.uid1
-rw-r--r--scripts/entities/actions/Action.cs44
-rw-r--r--scripts/entities/actions/Action.cs.uid1
-rw-r--r--scripts/entities/actions/BumpAction.cs32
-rw-r--r--scripts/entities/actions/BumpAction.cs.uid1
-rw-r--r--scripts/entities/actions/DirectionalAction.cs30
-rw-r--r--scripts/entities/actions/DirectionalAction.cs.uid1
-rw-r--r--scripts/entities/actions/DropAction.cs13
-rw-r--r--scripts/entities/actions/DropAction.cs.uid1
-rw-r--r--scripts/entities/actions/ItemAction.cs17
-rw-r--r--scripts/entities/actions/ItemAction.cs.uid1
-rw-r--r--scripts/entities/actions/MeleeAction.cs48
-rw-r--r--scripts/entities/actions/MeleeAction.cs.uid1
-rw-r--r--scripts/entities/actions/MovementAction.cs26
-rw-r--r--scripts/entities/actions/MovementAction.cs.uid1
-rw-r--r--scripts/entities/actions/PickUpAction.cs34
-rw-r--r--scripts/entities/actions/PickUpAction.cs.uid1
-rw-r--r--scripts/entities/actions/WaitAction.cs104
-rw-r--r--scripts/entities/actions/WaitAction.cs.uid1
-rw-r--r--scripts/entities/actors/AI/BaseAI.cs41
-rw-r--r--scripts/entities/actors/AI/BaseAI.cs.uid1
-rw-r--r--scripts/entities/actors/AI/HostileEnemyAI.cs76
-rw-r--r--scripts/entities/actors/AI/HostileEnemyAI.cs.uid1
-rw-r--r--scripts/entities/actors/Actor.cs215
-rw-r--r--scripts/entities/actors/Actor.cs.uid1
-rw-r--r--scripts/entities/actors/ActorDefinition.cs30
-rw-r--r--scripts/entities/actors/ActorDefinition.cs.uid1
-rw-r--r--scripts/entities/actors/Enemy.cs57
-rw-r--r--scripts/entities/actors/Enemy.cs.uid1
-rw-r--r--scripts/entities/actors/EnemyDefinition.cs11
-rw-r--r--scripts/entities/actors/EnemyDefinition.cs.uid1
-rw-r--r--scripts/entities/actors/Inspector.cs40
-rw-r--r--scripts/entities/actors/Inspector.cs.uid1
-rw-r--r--scripts/entities/actors/Inventory.cs39
-rw-r--r--scripts/entities/actors/Inventory.cs.uid1
-rw-r--r--scripts/entities/actors/Player.cs24
-rw-r--r--scripts/entities/actors/Player.cs.uid1
-rw-r--r--scripts/entities/actors/PlayerDefinition.cs8
-rw-r--r--scripts/entities/actors/PlayerDefinition.cs.uid1
-rw-r--r--scripts/entities/items/ConsumableItem.cs37
-rw-r--r--scripts/entities/items/ConsumableItem.cs.uid1
-rw-r--r--scripts/entities/items/ConsumableItemDefinition.cs7
-rw-r--r--scripts/entities/items/ConsumableItemDefinition.cs.uid1
-rw-r--r--scripts/entities/items/HealingConsumable.cs28
-rw-r--r--scripts/entities/items/HealingConsumable.cs.uid1
-rw-r--r--scripts/entities/items/HealingConsumableDefinition.cs11
-rw-r--r--scripts/entities/items/HealingConsumableDefinition.cs.uid1
50 files changed, 0 insertions, 1125 deletions
diff --git a/scripts/entities/Entity.cs b/scripts/entities/Entity.cs
deleted file mode 100644
index 85a3156..0000000
--- a/scripts/entities/Entity.cs
+++ /dev/null
@@ -1,108 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Defino aqui que o jogo irá desenhar
-/// atores em cima de itens e itens acima de corpos.
-/// </summary>
-public enum EntityType
-{
- CORPSE,
- ITEM,
- ACTOR
-};
-
-/// <summary>
-/// Classe para elementos móveis que o jogador pode interagir.
-/// </summary>
-public abstract partial class Entity : Sprite2D {
- /// <summary>
- /// A definição da entidade possui caracterísitcas padrões que definem
- /// a entidade em questão.
- /// </summary>
- private EntityDefinition definition;
-
- private EntityType type;
- /// <summary>
- /// Usado para definir a camada da entidade no mapa.
- /// </summary>
- public EntityType Type {
- get => type;
- set {
- type = value;
- ZIndex = (int) type;
- }
- }
-
- /// <summary>
- /// É conveniente ter acesso ao mapa dentro da entidade. Isto porque ela existe dentro
- /// do mapa, então é necessário ter acesso à algumas informações.
- /// </summary>
- public MapData Map_Data { get; set; }
-
- private Vector2I gridPosition = Vector2I.Zero;
- /// <summary>
- /// Posição da entidade no mapa do jogo. Diferentemente de Position, GridPosition tem como formato
- /// os tiles do mapa.
- /// </summary>
- public Vector2I GridPosition {
- set {
- gridPosition = value;
- // O sistema de coordenadas do Godot é em pixels, mas faz mais sentido para o jogo utilizar coordenadas em tiles.
- // Esta propriedade converte um sistema para o outro automaticamente.
- Position = Grid.GridToWorld(value);
- }
- get => gridPosition;
- }
-
- private bool blocksMovement;
- /// <summary>
- /// Se a entidade bloqueia movimento (não pode oculpar a mesma célula de outra entidade.)
- /// </summary>
- public bool BlocksMovement {
- get => blocksMovement;
- protected set {
- blocksMovement = value;
- }
- }
-
- private string displayName;
- /// <summary>
- /// Nome da entidade.
- /// </summary>
- public string DisplayName {
- get => displayName;
- protected set {
- displayName = value;
- }
- }
-
- public override void _Ready()
- {
- base._Ready();
- // Quando a entidade for carregada completamente, atualizamos sua posição para refletir
- // sua posição real.
- GridPosition = Grid.WorldToGrid(Position);
- }
-
- public Entity(Vector2I initialPosition, MapData map, EntityDefinition definition) {
- GridPosition = initialPosition;
- Map_Data = map;
- Centered = false;
-
- SetDefinition(definition);
- }
-
- /// <summary>
- /// Aplica uma definição de NPC para o ator.
- /// Se o ator for um boneco de barro, este método é como um
- /// sopro de vida.
- /// </summary>
- /// <param name="definition">A definição do ator.</param>
- public virtual void SetDefinition(EntityDefinition definition) {
- this.definition = definition;
- BlocksMovement = definition.blocksMovement;
- DisplayName = definition.name;
- Type = definition.Type;
- Texture = definition.texture;
- }
-} \ No newline at end of file
diff --git a/scripts/entities/Entity.cs.uid b/scripts/entities/Entity.cs.uid
deleted file mode 100644
index f178d64..0000000
--- a/scripts/entities/Entity.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://w1325qe64c6w
diff --git a/scripts/entities/EntityDefinition.cs b/scripts/entities/EntityDefinition.cs
deleted file mode 100644
index ba7236a..0000000
--- a/scripts/entities/EntityDefinition.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Godot;
-
-[GlobalClass]
-public partial class EntityDefinition : Resource{
- [ExportCategory("Entity Visuals")]
- // Nome da entidade.
- [Export]
- public string name = "unnamed";
- // Seu sprite.
- [Export]
- public Texture2D texture;
- // A camada da entidade.
- [Export]
- public EntityType Type;
-
- [ExportCategory("Entity Mechanics")]
- // Se a entidade bloqueia movimento.
- [Export]
- public bool blocksMovement = true;
-} \ No newline at end of file
diff --git a/scripts/entities/EntityDefinition.cs.uid b/scripts/entities/EntityDefinition.cs.uid
deleted file mode 100644
index 0aed6ab..0000000
--- a/scripts/entities/EntityDefinition.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bp33ly3hnjwk0
diff --git a/scripts/entities/actions/Action.cs b/scripts/entities/actions/Action.cs
deleted file mode 100644
index 9dab5a4..0000000
--- a/scripts/entities/actions/Action.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using Godot;
-
-
-/// <summary>
-/// <c>Action</c> representa uma ação no jogo efetuada por um ator.
-/// Ações são geradas pelo jogador e pela IA, elas regem os atores do jogo.
-/// </summary>
-public abstract partial class Action : RefCounted {
- /// <summary>
- /// O ator que realiza a ação.
- /// </summary>
- protected Actor actor;
- public Actor ThisActor { get => actor; }
-
- // O custo da ação.
- protected int cost;
-
- public Action(Actor actor) {
- this.actor = actor;
- // Custo base, subclasses podem sobreescrever isto se quiserem.
- cost = 10;
- }
-
- /// <summary>
- /// Método que executa a ação. Subclasses da ação devem implementar este método.
- /// <example>
- /// Exemplo:
- /// <code>
- /// Action action = new Action(actor);
- /// /* . . . */
- /// action.Perform();
- /// </code>
- /// </example>
- /// </summary>
- /// <returns>Se a ação foi executada ou não.</returns>
- public abstract bool Perform();
-
- /// <summary>
- /// É conveniente ter acesso ao mapa dentro de uma ação.
- /// </summary>
- protected MapData Map_Data {
- get => actor.Map_Data;
- }
-}
diff --git a/scripts/entities/actions/Action.cs.uid b/scripts/entities/actions/Action.cs.uid
deleted file mode 100644
index 9523b0a..0000000
--- a/scripts/entities/actions/Action.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dlejckfyro2ch
diff --git a/scripts/entities/actions/BumpAction.cs b/scripts/entities/actions/BumpAction.cs
deleted file mode 100644
index fa2605f..0000000
--- a/scripts/entities/actions/BumpAction.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Ação de "Esbarramento", utilizada principalmente pelo jogador.
-/// Esta ação direcionada tentará andar para o destino, se houver um
-/// ator no caminho, uma ação de ataque é gerada no lugar.
-/// </summary>
-public partial class BumpAction : DirectionalAction
-{
- public BumpAction(Actor actor, Vector2I offset) : base(actor, offset)
- {
- }
-
- // Como esta ação inevitavelmente gera outras ações,
- // não faz sentido descontar a energia do ator.
- public override bool Perform()
- {
- // Declaramos uma ação genérica.
- Action action;
-
- // Se houver um ator no destino, crie uma ação de ataque.
- if (GetTarget() != null) {
- action = new MeleeAction(actor, Offset);
- } else {
- // Mas se não houver, crie uma ação de movimento.
- action = new MovementAction(actor, Offset);
- }
-
- // Executa a ação.
- return action.Perform();
- }
-}
diff --git a/scripts/entities/actions/BumpAction.cs.uid b/scripts/entities/actions/BumpAction.cs.uid
deleted file mode 100644
index f5ce3f8..0000000
--- a/scripts/entities/actions/BumpAction.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://p6ij0dsuvv7y
diff --git a/scripts/entities/actions/DirectionalAction.cs b/scripts/entities/actions/DirectionalAction.cs
deleted file mode 100644
index 9c7a915..0000000
--- a/scripts/entities/actions/DirectionalAction.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Ação direcionada. Esta ação é acompanhada com um vetor que representa uma
-/// distância tendo como ponto de partida o ator.
-/// </summary>
-public abstract partial class DirectionalAction : Action
-{
- /// <summary>
- /// Direção/distância do ator da ação.
- /// Seu significado depende da ação que implementará esta classe.
- /// </summary>
- public Vector2I Offset { get; private set; }
- /// <summary>
- /// Coordenada do alvo da ação.
- /// </summary>
- public Vector2I Destination { get => actor.GridPosition + Offset; }
- public DirectionalAction(Actor actor, Vector2I offset) : base(actor)
- {
- Offset = offset;
- }
-
- /// <summary>
- /// Função que obtém o alvo da ação, se houver.
- /// </summary>
- /// <returns>O ator alvo da ação, nulo se não houver.</returns>
- protected Entity GetTarget() {
- return Map_Data.GetBlockingEntityAtPosition(Destination);
- }
-}
diff --git a/scripts/entities/actions/DirectionalAction.cs.uid b/scripts/entities/actions/DirectionalAction.cs.uid
deleted file mode 100644
index 901756a..0000000
--- a/scripts/entities/actions/DirectionalAction.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cxotc2adk05j8
diff --git a/scripts/entities/actions/DropAction.cs b/scripts/entities/actions/DropAction.cs
deleted file mode 100644
index e5bd929..0000000
--- a/scripts/entities/actions/DropAction.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using Godot;
-
-public partial class DropAction : ItemAction
-{
- public DropAction(Player player, ConsumableItem item) : base(player, item)
- {
- }
-
- public override bool Perform() {
- player.inventory.Drop(item);
- return true;
- }
-} \ No newline at end of file
diff --git a/scripts/entities/actions/DropAction.cs.uid b/scripts/entities/actions/DropAction.cs.uid
deleted file mode 100644
index 98ed82f..0000000
--- a/scripts/entities/actions/DropAction.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://by48a3a3gbvfa
diff --git a/scripts/entities/actions/ItemAction.cs b/scripts/entities/actions/ItemAction.cs
deleted file mode 100644
index d5247df..0000000
--- a/scripts/entities/actions/ItemAction.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Godot;
-
-public partial class ItemAction : Action
-{
- protected ConsumableItem item;
- protected Player player;
- public ItemAction(Player player, ConsumableItem item) : base(player)
- {
- this.item = item;
- this.player = player;
- }
-
- public override bool Perform()
- {
- return item.Activate(this);
- }
-} \ No newline at end of file
diff --git a/scripts/entities/actions/ItemAction.cs.uid b/scripts/entities/actions/ItemAction.cs.uid
deleted file mode 100644
index c8c8e23..0000000
--- a/scripts/entities/actions/ItemAction.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://f7ep4u4fwsyl
diff --git a/scripts/entities/actions/MeleeAction.cs b/scripts/entities/actions/MeleeAction.cs
deleted file mode 100644
index 09c5cc7..0000000
--- a/scripts/entities/actions/MeleeAction.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Ação de ataque físico. Uma ação direcionada que ataca um alvo.
-/// </summary>
-public partial class MeleeAction : DirectionalAction
-{
- public MeleeAction(Actor actor, Vector2I offset) : base(actor, offset)
- {
- }
-
- /// <summary>
- /// Ataca o ator na direção da ação.
- /// </summary>
- public override bool Perform()
- {
- // Eu te disse que este método seria útil.
- Entity potentialTarget = GetTarget();
-
- // Só podemos atacar atores.
- if (potentialTarget is not Actor) {
- return false;
- }
-
- Actor target = (Actor)potentialTarget;
-
-
- // Se não houver um ator na direção, não podemos continuar.
- // Isto é uma ação gratuita.
- if (target == null) return false;
-
- // não podemos ter dano negativo.
- int damage = actor.Atk - target.Def;
-
- string attackDesc = $"{actor.DisplayName} ataca {target.DisplayName}";
-
- if (damage > 0) {
- attackDesc += $" e remove {damage} de HP.";
- target.Hp -= damage;
- } else {
- attackDesc += $" mas {target.DisplayName} tem músculos de aço.";
- }
-
- MessageLogData.Instance.AddMessage(attackDesc);
- actor.Energy -= cost;
- return true;
- }
-}
diff --git a/scripts/entities/actions/MeleeAction.cs.uid b/scripts/entities/actions/MeleeAction.cs.uid
deleted file mode 100644
index bc97619..0000000
--- a/scripts/entities/actions/MeleeAction.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://vbptt0gl1ud0
diff --git a/scripts/entities/actions/MovementAction.cs b/scripts/entities/actions/MovementAction.cs
deleted file mode 100644
index 403ec0a..0000000
--- a/scripts/entities/actions/MovementAction.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Ação de movimento. Movimenta o ator para a direção de seu Offset.
-/// </summary>
-public partial class MovementAction : DirectionalAction
-{
- public MovementAction(Actor actor, Vector2I offset) : base(actor, offset)
- {
- }
-
- public override bool Perform()
- {
- // Não anda se o destino for um tile sólido.
- if (!Map_Data.GetTile(Destination).IsWalkable) return true;
-
- // Não anda se o destino for oculpado por um ator.
- // Na maioria dos casos, essa condição nunca é verdadeira.
- if (GetTarget() != null) return true;
-
- actor.Walk(Offset);
- actor.Energy -= cost;
-
- return true;
- }
-}
diff --git a/scripts/entities/actions/MovementAction.cs.uid b/scripts/entities/actions/MovementAction.cs.uid
deleted file mode 100644
index 07569ef..0000000
--- a/scripts/entities/actions/MovementAction.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://cdtpdaeg7hh6p
diff --git a/scripts/entities/actions/PickUpAction.cs b/scripts/entities/actions/PickUpAction.cs
deleted file mode 100644
index b772bb7..0000000
--- a/scripts/entities/actions/PickUpAction.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using Godot;
-
-public partial class PickupAction : DirectionalAction
-{
- protected Player player;
-
- public PickupAction(Player player, Vector2I offset) : base(player, offset)
- {
- this.player = player;
- // Pegar itens requer um tempo menor.
- cost = 2;
- }
-
- public override bool Perform()
- {
- ConsumableItem item = Map_Data.GetFirstItemAtPosition(Destination);
-
- if (item == null) {
- MessageLogData.Instance.AddMessage("Não tem item aqui.");
- return false;
- }
-
- if (player.inventory.Items.Count >= player.inventory.Capacity) {
- MessageLogData.Instance.AddMessage("Seu inventário está cheio");
- return false;
- }
-
- Map_Data.RemoveEntity(item);
- player.inventory.Add(item);
-
- player.Energy -= cost;
- return true;
- }
-} \ No newline at end of file
diff --git a/scripts/entities/actions/PickUpAction.cs.uid b/scripts/entities/actions/PickUpAction.cs.uid
deleted file mode 100644
index 7ca9c72..0000000
--- a/scripts/entities/actions/PickUpAction.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dydpoqnwxwbq6
diff --git a/scripts/entities/actions/WaitAction.cs b/scripts/entities/actions/WaitAction.cs
deleted file mode 100644
index c26d884..0000000
--- a/scripts/entities/actions/WaitAction.cs
+++ /dev/null
@@ -1,104 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Ação da inação. Ação que realiza nada.
-/// </summary>
-public partial class WaitAction : Action
-{
- public WaitAction(Actor actor) : base(actor)
- {
- }
-
- public override bool Perform()
- {
-//-=-==============================================-======++++*@@%*+#%%+*%%#*#%%@%**%%#=:+%@%=--.....::::@@@:................... #@----::@@@@@@@@@@@@@
-//--============--===========================================+@. :@ =% @ :* @#= @@*........@@@:................ .::::::@@@@@@@@@@@@
-//===========================================================+@+ * :+ @ :*%* @%+ @=.......:@@@:.......... ...... ..::.:@@@@@@@@@@@
-//===-===========---========--=========----==========--=======%% . . @ =%@* @%+ @@:......@@@:.......... ....... .....:*@@@@@@@@@@
-//=========-==========================--==============-=======#@ #@ #* @%+ @@:.. .@@@:. ........ ..... ..:*@@@@*@@@@@@@@@
-//============================--====---=======================*@ * @@ %@@* @%+ @=. @@@... . =@@@: #@@@@@@@@
-//===--==-========----==---=----==----===========-===-==#@@@@@@@- @ @@ :#%* #*+ *#*: .@@@: . .. .@@@@@@@@
-//-------==--==-==---::---======----===-----==--===---===*%@@@@@* @: @@ * = %= %@@. .. =@@@@@@@
-//--==---==-=--=====----======-=----==-===---=======--========@@@@@%*=+#%#*-=*%%%%**#%%%#*#%%%*=.%@@: @@@@@@@
-//===-=-----=--=--====--======--====-===-=--==----========--==@@@@@: #@@: . . :=*@@@@@@@
-//==--==-===-==-==@@+====--=----==-==-==---=------===========@@@@@@@@@- #@@: . .. :@@@@@@@+@@@@@@
-//==---=--=======@%@*@%-==-==-==-========--==----========-===@ .*@@@@+ #@@: . @@@@@@
-//========-====--==@@%@@+@%===-=--======--:-====-===========%+ .=@@@@%. #@@: . . =@@@@@
-//---=-=-==-----=====*@==@@*@@+==-----=-----====--===@@@*==*@ -@@@@@- :*##=*@@- . . .@@@@@
-//------------===---===%@*=@%=*@*==------------==-=--%@@@@@@: .. ..:#@@@@*:@@@@@@@@@% .@@@@@
-//---==-----===-====-==-==@#=#@@+@@===----==--=====--====%@* ..............+@@@@@@@@@@@@@@. ....:::::. --:+:%: @=:@@@. .::-====@@@@@
-//==-=----==----===--==-----=@-=@@+@#@%=-==-======---====#@ ....:::.::......@@@@@@@@@@@@@% . ..-@#.@:%@*@%.@+ %*:@@*@.@@#@*@=%@# %@@@@@@*@@@@@
-//===----=======-====--=--====-+*%@+@@@=@=--=====--=====+@ .. .+@@@@@@@@@@:...@@@@@@@@@@@@@% -@#@@-@- =@ @% *@.#@.@.@ *@*=@@@% @@@@:
-//====--==-===-========---=========@%*@@%%@@#====--====*@: .=@@@@@@%=+: @*::.@@@@@@@@@@@@@@: :@::@=:%@#:.-- :: .: : @@@.
-//===---===-==-------:-----=-=====---=@+@@***=========+@: =@@@ : @*=.:@@@@@@@@@@@@@@@ . =@:@@%
-//==----===-===-=------==----==--=--====*@@@*==*@@#==+@: . =@ - . #@@*.. +@@@@@@@= . ## -@
-//===---=-==-----=----===----============-======@@@@@@. ..:@= : =@@++== .@@+ . .. -@@@%#@=
-//=-=--==-===--------==-=---=---=----------=======*@@. *@@@-@@*@ #= * . . ..:@@@@:
-//=====-===-=======-==----====-----=======--==-===%@ .. .=@ = #. .. .. .@: %@@-
-//==-==-==-=--===-=====-------=----==--=====-=--=@* .. .* =. :* + .. . %:
-//==-==----=-------=------=----==-----==========@: ......+ #%*** @@%%+: . %@=
-//===--=-----------=--=--==---===---:=@@@*==-=@@. ....::@ .. %@*:%*-#%#*=: . :=:=%#@@@+
-//==---=-:-====---========-----====-:-=@@@@++@= ....@@%* @-@@+=%%. -@%: -@@@. :
-//==----========---------------==========@@@* %@@@:=%@@*@@@@==+@==- .@= .*@- #*
-//==-===--===-=---:-----------===========@% :%@=*@@@@@@@@@@@@===%=======+@#+=@#%@ .@@%=
-//------=====-------=-:----=#*=========@% :%-.@==@@@@@@@@@@@@++@*=======*@ *= *@@@=. =*=*@@:
-//===--=---===------------=*@@@======@% .%- .#%==#@@@@@@@@@@@%+#@@%=====*@ *+*-#@@@- .. . :. %:
-//--=======--=-=-----:---=--+@@@=-=@% :%.:==+@*==@@@@@@@@@@@@=---##====*@. *:=@ *@. . . :@@@%@
-//===---=---==---------------=@@@@= =@=======#%-@@@@@@@@@@@@=--*@====*@: @:+@@%.@- . . .@@@@@+ =@*=%=#-.
-//=====-----===@@*-----------=@@ *@* =@@=====@+--%@@@@@@@@@@@*-==@====+@= % :@@%@= =#. :. : -*%+#:#
-//-=--=--------@@@==---=--+@@@@@@ +@@@= =#%*===-@=--=@@@@@@@@@@@@+-=@=====@+: :@ :. :@@: %*
-//*@#==--------=@@@----*@@@@@@@@@@@+ -+=@*===%*--=@@@@@@@@@@@@@=-@*-===%*- : =+ =@%@:.: *%. %*
-//%@@+----------+@@@%@@@@@@@@@@@@@@: =*==@+-==@=--@@@@@@@@@@@@@--@*-===%*=:% #: -@@#-: .@@@= +@@@@@%
-//+@@#-------==+@@@@@@@@@@@@@@@@@@@@# :: =====@=--=@-=+@@@@@@@@@@@@@-%*====*#=+% @: .:%@@:. *@@%@@@%
-//=@@@=---=@@@@@@@@@@@@@@@@@@@@@@@@@@@. =@@= ======@=-=%+==@@@@@@@@@@@@@*=#=====@=%* % ..#@@@. -@@@@@
-//=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=@@* ==-===#*---@*-%@@@@@@@@@@@@@=%=--==@#@=%%. :@ ::*@-%: -#. %@@@@@@.
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* :+-====@=---%%=@@@@@@@@@@@@@%*=-====@*@= @: -@@+=- :@@* +@@@@@@@@@@@@=
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@: =@- ==.==--=@----*%%@@@@@@@@@@@@@*=-====#@==. @: %@=:@= =@@= =@@@@@@@@@@@
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. .@@% =:.---==%=---=%#@@@@@@@@@@@@@%==-====@+=. *: #%%@.: #@@@@@@@@@@@@@@:
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@::@@- =- --=--*%-----@@@@@@@@@@@@@@@==---===@=. -: :. .@# =@@@@@@@@@@@@@@@@. *@%
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%. @@:= :==---@=----=@@@@@@@@@@@@@@@=--====#* @: . *@@ #@@@@@@@@@@@@@@@@@@@@@-
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@: @@= % ------@=----#@@@@@@@@@@@@@@*-======%+ @ +@. -@@.:@@@@@@@@@@@@@@@@@@@@@@:
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%: @@= .% .-----=@+=---@@@@@@@@@@@@@@@=--==== *: *: :@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@ :=
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= %.:------@=---*@@@@@@@@@@@@@@@==-==: *= * *@* =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:@@@*
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%: =*:-----@----+@@@@@@@@@@@@@@@#-====. -@= @@=-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=.@*----%----+@@@@@@@@@@@@@@@@======. +* .+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -%
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=-:@----=@@@@@@@@@@@@@@@@@====== -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ :@@#
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%----@@@@@@@@@@@@@@@@@%====== :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%
-//#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%----%@@@@@@@@@@@@@@@@@*=====- -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//++=+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%----*@@@@@@@@@@@@@@@@@@+=-==== :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=
-//=====++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-----@@@@@@@@@@@@@@@@@@@=-=-==- -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//+===++@@%==*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-----@@@@@@@@@@@@@@@@@@@@=---=-- :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//++=++%@@+++=++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-----#@@@@@@@@@@@@@@@@@@@*======: :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//===++@@==+++====*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-----*@@@@@@@@@@@@@@@@@@@@*--=---. .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//=+++=+++++++++++*@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=-==-=@@@@@@@@@@@@@@@@@@@@@===----: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//===++==+++++++=%@@+==*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+=====@%@@@@@@@@@@@@@@@@@@@@=-----=: %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//++=====++++===*@%====+==@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=====@*@@@@@@@@@@@@@@@@@@@@@-------: :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//++===+++++====++++========@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=====@+=@@@@@@@@@@@@@@@@@@@@@=------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//=========+==++++=========+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=====#@=*@@@@@@@@@@@@@@@@@@@@%%----=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//=+++++========+========+@@@*=+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=====+@@@@@@@@@@@@@@@@@@@@@@@@=@+-=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//++++++====++=====*@@%==%@*=====#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@ %=====+% @@@@@@@@@@@@@@@@@@@@@@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//==+==+===+++++==*@@=*@@#+=======+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@***%@@*=*@@%**%@@%**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//=++==+==++++++++%@@=@*@@%=========*@@@@@@@ %* %+ @= :@+ * @ =@@ @@@@. *# @ %@ # @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//=======++++++#@@+%@@@@@#=========%@@@@@@@@: :: #: :% @ @+ * @ =@@ -: @@@@ @= * @ % @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//===++==+++%@%*+%@@*+**+==+====+@@@%==%@@@@+ = %* @ %= * @ =@@ -= @@@@: .@: * @ % @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//=+=+====++@@@@@@@@@%=====+==+==#*====+*@@@@ @* @ %= * @ =@@ -= @@@@@ @@: * @ % @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//=======%@@*+@@%+++++++========+======+=+@@@ - @* @ %= * @ =@@ -= @.%@@: :@@: * @ % @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//==+=+@@**@@@+*@@==++==+===+=========+++++@@ @ @* % @+ + @ :%@ -. @ @@: :@@- + @ + -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//======%@@+*@@@++=++==++===++========+++++#@- @ :@@= -@@ %@ * +* @: :@@@ @@% @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//=+@@#@@@@@@=============++=+++=+==+=+%@@@@%@@@@@%=***+=%%@@@%*: -*%%%+:.=@@@*++*#***=. .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//@%+%@@%==*+============+*%@@%*+*%@@@@@@*%@@@@@@@@%#*=+#**#+%*%##*+=*#####+:@@######***#*=*#**@@@@@@@@@@@@@@@#*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//@%==+@@@===============*@ @%% @@+ @* @ *= =% % #+@ % @ -+ @@@= . @ -@ %+ @@@@@@@@@@@@@@@@@@@@@@@@
-//%@@*=================+=*@. @@ :. @ % =# * @. ** @#- =+*:**= =*% @ -* *#@@@@*. *%: @ @ %* *#@@@@@@@@@@@@@@@@@@@@@@@@
-//==@@#===+++======++=+==*@. @@ =: @ @ :# %= %. %@* %= =@ @@% @ =* @@@@@@@= @@: @ . %+ @@@@@@@@@@@@@@@@@@@@@@@@@@
-//%========+====+%@@%+=+=*@. @@ =: @ @ :% @: :@ - =@* %- -@ @@% -* @@@@@= @@: @ %+ @@@@@@@@@@@@@@@@@@@@@@@@
-//**@@@@@%*%@@@@@@*===++=*@. @@ =: @ @ :% =% -% : @* %: -@ @@@ @ =* @%- +@@= @@: @ + . %+ @@@@@@@@@@@@@@@@@@@@@@@@@@
-//@@@@@@@@@@@@@@*======+=*@. *# :. @ % -# * @-+* @# %: -@ @@@ @ =* +**-@@@= @@: @ @ :. %+ *#@@@@@@@@@@@@@@@@@@@@@@@@
-//@@@@@@@@@@@@*====+==++=*@. @ @@* .@* @ .*#. @ @* #: -@ @@% @ -+ =*%@@= @@: @ @ +. #+ *@@@@@@@@@@@@@@@@@@@@@@@
-//@@@@@@@@@@@======++====+*%@@@@%%%@@@@%*+#@@@@@%#%@@#=+**=. =**+=***==*#*: :%@@@@@@@@@**=+#*==*###*=. -=**+::@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//@@@@@@@@@@+==+==++=====++=====++=+++++++++===+++++#% +@@@* :#%= =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- actor.Energy -= cost;
- return true;
- }
-
-
-} \ No newline at end of file
diff --git a/scripts/entities/actions/WaitAction.cs.uid b/scripts/entities/actions/WaitAction.cs.uid
deleted file mode 100644
index 120c8c1..0000000
--- a/scripts/entities/actions/WaitAction.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c24ebgrcsn6yi
diff --git a/scripts/entities/actors/AI/BaseAI.cs b/scripts/entities/actors/AI/BaseAI.cs
deleted file mode 100644
index 733a61a..0000000
--- a/scripts/entities/actors/AI/BaseAI.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using Godot;
-
-/// <summary>
-/// base para as IAs do jogo.
-/// </summary>
-public abstract partial class BaseAI : Node {
- /// <summary>
- /// Corpo controlado pela IA.
- /// O corpo é a marionete da alma.
- /// </summary>
- protected Actor body;
-
- public override void _Ready()
- {
- base._Ready();
- // Por padrão, a IA é filha do nó de seu corpo.
- body = GetParent<Actor>();
- }
-
- /// <summary>
- /// Computa um único turno para o ator controlado.
- /// Aviso: NPCs não possuem ações gratuitas.
- /// A IA SEMPRE precisa executar uma ação que custe energia.
- /// </summary>
- public abstract void Perform();
-
- /// <summary>
- /// Utiliza o pathfinder do mapa para obter um caminho
- /// da posição atual do ator para um destino qualquer.
- /// </summary>
- /// <param name="destination">Destino</param>
- /// <returns>Vetor com vetores, passo a passo para chegar no destino.</returns>
- public Godot.Collections.Array<Vector2> GetPathTo(Vector2I destination) {
- // Arrays do Godot são muito mais confortáveis de manipular, então
- // eu converto o Array do C# em um array do Godot antes de retornar o caminho.
- Godot.Collections.Array<Vector2> list = [];
- Vector2[] path = body.Map_Data.Pathfinder.GetPointPath(body.GridPosition, destination);
- list.AddRange(path);
- return list;
- }
-} \ No newline at end of file
diff --git a/scripts/entities/actors/AI/BaseAI.cs.uid b/scripts/entities/actors/AI/BaseAI.cs.uid
deleted file mode 100644
index b23724c..0000000
--- a/scripts/entities/actors/AI/BaseAI.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://jgm5qk02hism
diff --git a/scripts/entities/actors/AI/HostileEnemyAI.cs b/scripts/entities/actors/AI/HostileEnemyAI.cs
deleted file mode 100644
index e7efd26..0000000
--- a/scripts/entities/actors/AI/HostileEnemyAI.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Uma IA simples. Sempre tentará atacar o jogador com ataques corpo a corpo.
-/// </summary>
-public partial class HostileEnemyAI : BaseAI
-{
- /// <summary>
- /// Caminho até a última posição conhecida do jogador.
- /// </summary>
- private Godot.Collections.Array<Vector2> path = [];
-
- public override void Perform()
- {
- // O alvo da IA sempre é o jogador.
- Player target = body.Map_Data.Player;
- // Vetor que parte do inimigo até o jogador.
- Vector2I offset = target.GridPosition - body.GridPosition;
- // Distância entre o inimigo e o jogador. Leva em consideração somente
- // um dos eixos.
- int distance = int.Max(int.Abs(offset.X), int.Abs(offset.Y));
-
- // A ação executada no turno pode ser de ataque ou de movimento.
- Action action;
-
- // Só faz sentido atacar o jogador se o inimigo estiver visível.
- if (body.Map_Data.GetTile(body.GridPosition).IsInView) {
- // Se o inimigo consegue ver que o jogador está morto,
- // IT'S OVER.
- if (!target.IsAlive) {
- action = new WaitAction(body);
- action.Perform();
- return;
- }
-
- // Se estiver do lado do jogador, ataque.
- if (distance <= 1) {
- action = new MeleeAction(body, offset);
- action.Perform();
- // Executada a ação, acabamos nosso turno aqui.
- return;
- }
-
- // Se o inimigo estiver visível para o jogador,
- // consideramos que ele também consiga ver o jogador.
- // Logo, atualizamos o caminho para a posição atual do jogador.
- path = GetPathTo(target.GridPosition);
- // O primeiro passo é a posição atual do inimigo, podemos remover.
- path.RemoveAt(0);
- }
-
- // Se existir um caminho conhecido para o jogador.
- if (path.Count > 0) {
- // Pegamos o próximo passo para o destino.
- Vector2I destination = (Vector2I) path[0];
- // Se tiver o caminho estiver bloqueado, paramos o nosso turno aqui.
- if (body.Map_Data.GetBlockingEntityAtPosition(destination) != null) {
- action = new WaitAction(body);
- action.Perform();
- return;
- }
-
- // Caso o contrário, criamos uma nova ação de movimentação e a executamos.
- action = new MovementAction(body, destination - body.GridPosition);
- action.Perform();
- // Podemos remover o passo do caminho.
- path.RemoveAt(0);
- return;
- }
-
- // Senão, espere.
- action = new WaitAction(body);
- action.Perform();
- return;
- }
-} \ No newline at end of file
diff --git a/scripts/entities/actors/AI/HostileEnemyAI.cs.uid b/scripts/entities/actors/AI/HostileEnemyAI.cs.uid
deleted file mode 100644
index 0fa2c32..0000000
--- a/scripts/entities/actors/AI/HostileEnemyAI.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://db28cxff4pl3t
diff --git a/scripts/entities/actors/Actor.cs b/scripts/entities/actors/Actor.cs
deleted file mode 100644
index 1cb1f37..0000000
--- a/scripts/entities/actors/Actor.cs
+++ /dev/null
@@ -1,215 +0,0 @@
-using Godot;
-
-/// <summary>
-/// A classe de ator define um personagem no jogo.
-/// </summary>
-[GlobalClass]
-public partial class Actor : Entity
-{
- /// <summary>
- /// Sinal emitido toda vez que o HP mudar.
- /// </summary>
- /// <param name="hp">Novo HP</param>
- /// <param name="maxHp">Quantidade máxima de HP.</param>
- [Signal]
- public delegate void HealthChangedEventHandler(int hp, int maxHp);
-
- /// <summary>
- /// Sinal emitido se o ator morrer.
- /// </summary>
- [Signal]
- public delegate void DiedEventHandler();
-
-
- /// <summary>
- /// A definição do ator possui caracterísitcas padrões que definem
- /// o ator em questão.
- /// </summary>
- private ActorDefinition definition;
-
- /// <summary>
- /// Se o ator está vivo.
- /// </summary>
- public bool IsAlive { get => Hp > 0; }
-
- private int energy;
- /// <summary>
- /// Utilizado no sistema de turnos.
- /// Enquanto o ator tiver energia, ele poderá realizar turnos.
- /// </summary>
- public int Energy
- {
- get => energy;
- set
- {
- if (value > Speed) {
- energy = Speed;
- } else {
- energy = value;
- }
- }
- }
- /// <summary>
- /// Taxa de recarga de energia.
- /// </summary>
- public int Speed { get => definition.Speed; }
-
- /// <summary>
- /// Executado uma vez por turno,
- /// </summary>
- public void RechargeEnergy() {
- Energy += Speed;
- }
-
- private int hp;
- /// <summary>
- /// HP máximo do ator.
- /// </summary>
- public int MaxHp { get; private set; }
- /// <summary>
- /// HP atual do ator.
- /// </summary>
- public int Hp {
- get => hp;
- set {
- // Esta propriedade impede que o HP seja maior que o máximo.
- hp = int.Clamp(value, 0, MaxHp);
- EmitSignal(SignalName.HealthChanged, Hp, MaxHp);
- if (hp <= 0) {
- Die();
- }
- }
- }
-
- private int mp;
- /// <summary>
- /// Máximo de mana do ator.
- /// </summary>
- public int MaxMp { get; private set; }
- /// <summary>
- /// Mana atual do ator.
- /// </summary>
- public int Mp {
- get => mp;
- set {
- mp = int.Clamp(value, 0, MaxMp);
- }
- }
-
- /// <summary>
- /// Estatística de ataque
- /// </summary>
- public int Atk { get; private set; }
-
- /// <summary>
- /// Estatística de defesa.
- /// </summary>
- public int Def { get; private set; }
-
- /// <summary>
- /// Estatística mental.
- /// </summary>
- public int Men { get; private set; }
-
- /// <summary>
- /// Move o ator para uma localização. Veja MovementAction.
- /// </summary>
- /// <param name="offset">Vetor que parte da posição do ator até o seu destino.</param>
- public void Walk(Vector2I offset) {
- // Cada ator tem um peso no sistema de pathfinding.
- // Sempre que ele se mover, removemos seu peso da posição antiga
- Map_Data.UnregisterBlockingEntity(this);
- GridPosition += offset;
- // E colocamos na próxima.
- Map_Data.RegisterBlockingEntity(this);
- // Este peso influencia o algoritmo de pathfinding.
- // Atores evitam caminhos bloqueados. por outros atores.
- }
-
- public Actor(Vector2I initialPosition, MapData map, ActorDefinition definition) : base(initialPosition, map, definition) {
-
- SetDefinition(definition);
- }
-
- /// <summary>
- /// Recupera uma quantidade de HP do ator.
- /// </summary>
- /// <param name="amount">HP para recuperar</param>
- /// <returns>Quanto HP foi realmente recuperado.</returns>
- public int Heal(int amount) {
- int neoHp = Hp + amount;
-
- if (neoHp > MaxHp) neoHp = MaxHp;
-
- int recovered = neoHp - Hp;
- Hp = neoHp;
- return recovered;
- }
-
- /// <summary>
- /// Aplica uma definição de NPC para o ator.
- /// Se o ator for um boneco de barro, este método é como um
- /// sopro de vida.
- /// </summary>
- /// <param name="definition">A definição do ator.</param>
- public virtual void SetDefinition(ActorDefinition definition) {
- base.SetDefinition(definition);
- this.definition = definition;
-
- Type = definition.Type;
-
- MaxHp = definition.Hp;
- Hp = definition.Hp;
- MaxMp = definition.Mp;
- Mp = definition.Mp;
-
- Atk = definition.Atk;
- Def = definition.Def;
- Men = definition.Men;
- }
-
- public virtual void Die() {
- //⠀⠀⠀⠀⢠⣤⣤⣤⢠⣤⣤⣤⣤⣄⢀⣠⣤⣤⣄⠀⠀⠀⢀⣠⣤⣤⣄⠀⣤⣤⠀⠀⣠⣤⣤⣤⣤⣤⡄⢠⣤⣤⣤⣄⠀⠀
- //⠀⠀⠀⠀⠈⢹⣿⠉⠈⠉⣿⣿⠉⠉⢾⣿⣉⣉⠙⠀⠀⢀⣾⡟⠉⠉⣿⣧⢸⣿⡄⢠⣿⠏⣿⣿⣉⣉⡁⢸⣿⡏⢉⣿⡷⠀
- //⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⣿⣿⠀⠀⠈⠿⠿⣿⣿⡀⠀⠸⣿⡇⠀⠀⣾⣿⠀⢿⣿⣸⡿⠀⣿⣿⠿⠿⠇⢸⣿⣿⣿⣿⠀⠀
- //⠀⠀⠀⠀⢠⣼⣿⣤⠀⠀⣿⣿⠀⠀⢷⣦⣤⣼⡿⠁⠀⠀⠹⣿⣤⣴⡿⠋⠀⠘⣿⣿⠃⠀⣿⣿⣤⣤⡄⢸⣿⡇⠙⢿⣦⡀
- //⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⠀⠀⠀⠀⠀⠀⢀⣰⣶⣶⣶⣿⣿⣿⣿⣷⣶⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⠿⠛⠛⠻⢿⣿⣿⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⠀⠀⠀⢀⢾⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠈⠉⠉⠉⠻⢿⢿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⠀⠀⢠⠏⢸⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⢻⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⠀⢀⠇⠀⠈⠿⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⢀⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⡼⠛⠳⣄⡀⠀⠐⢿⣦⡀⠀⠀⠀⢠⠃⠀⣸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⢠⠇⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠉⣳⠟⠒⠻⣿⣦⡀⠀⡘⠀⢰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⢀⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠃⢠⣄⡀⠈⠙⢿⡌⠁⠀⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⣈⢻⡿⠃⢰⠟⠲⣼⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⠀⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⡶⢴⠋⠀⠀⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⡴⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠞⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⡴⢟⠒⠀⠀⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠏⠀⠀⠈⠉⣿⠇⠀⢀⡎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠠⣤⣤⣀⢰⠏⠉⠙⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣠⠴⠢⠦⠽⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⣿⣿⣿⣷⡄⣀⡀⠈⠉⠋⢹⠋⠁⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- //⠿⠿⠿⠿⠿⠦⠈⠀⠀⠀⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
-
- string deathMessage;
-
- if (Map_Data.Player == this) {
- deathMessage = "Você morreu!";
- } else {
- deathMessage = $"{DisplayName} morreu!";
- }
-
- MessageLogData.Instance.AddMessage(deathMessage);
-
- Texture = definition.deathTexture;
- BlocksMovement = false;
- Type = EntityType.CORPSE;
- DisplayName= $"Restos mortais de {DisplayName}";
- Map_Data.UnregisterBlockingEntity(this);
- EmitSignal(SignalName.Died);
- }
-} \ No newline at end of file
diff --git a/scripts/entities/actors/Actor.cs.uid b/scripts/entities/actors/Actor.cs.uid
deleted file mode 100644
index cf29b40..0000000
--- a/scripts/entities/actors/Actor.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c0cm4woy8lawl
diff --git a/scripts/entities/actors/ActorDefinition.cs b/scripts/entities/actors/ActorDefinition.cs
deleted file mode 100644
index 540ede0..0000000
--- a/scripts/entities/actors/ActorDefinition.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Define de forma genérica as características de um ator.
-/// </summary>
-[GlobalClass]
-public partial class ActorDefinition : EntityDefinition
-{
- [ExportCategory("Visuals")]
- // Sprite de morto
- [Export]
- public Texture2D deathTexture;
-
- [ExportCategory("Mechanics")]
- [Export]
- public int Speed { get; set;} = 10;
-
- // Estatísticas padrão do ator.
- [ExportCategory("Stats")]
- [Export]
- public int Hp;
- [Export]
- public int Mp;
- [Export]
- public int Atk;
- [Export]
- public int Def;
- [Export]
- public int Men;
-}
diff --git a/scripts/entities/actors/ActorDefinition.cs.uid b/scripts/entities/actors/ActorDefinition.cs.uid
deleted file mode 100644
index ddcfe02..0000000
--- a/scripts/entities/actors/ActorDefinition.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://crxw1e37xlrrt
diff --git a/scripts/entities/actors/Enemy.cs b/scripts/entities/actors/Enemy.cs
deleted file mode 100644
index 9c06417..0000000
--- a/scripts/entities/actors/Enemy.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using Godot;
-using System;
-
-/// <summary>
-/// Enum das diferentes IAs disponíveis.
-/// </summary>
-public enum AIType
-{
- None,
- DefaultHostile
-};
-
-/// <summary>
-/// Um inimigo é uma espécie de ator que é
-/// hostil ao jogador. Inimigos são controlados por IA.
-/// </summary>
-public partial class Enemy : Actor
-{
- private EnemyDefinition definition;
- /// <summary>
- /// A alma do ator. Gera ações que são executadas todo turno.
- /// </summary>
- public BaseAI Soul { get; private set; }
-
- public Enemy(Vector2I initialPosition, MapData map, EnemyDefinition definition) : base(initialPosition, map, definition)
- {
- this.definition = definition;
- SetDefinition(definition);
- }
-
- /// <summary>
- /// Além de definir as características gerais de um ator,
- /// também define qual IA utilizar.
- /// </summary>
- /// <param name="definition">Definição do inimigo.</param>
- public void SetDefinition(EnemyDefinition definition)
- {
- // Definimos as características do ator.
- base.SetDefinition(definition);
-
- // Definimos qual IA utilizar.
- switch(definition.AI) {
- case AIType.None:
- break;
- case AIType.DefaultHostile:
- Soul = new HostileEnemyAI();
- AddChild(Soul);
- break;
- }
- }
-
- public override void Die() {
- Soul.QueueFree();
- Soul = null;
- base.Die();
- }
-}
diff --git a/scripts/entities/actors/Enemy.cs.uid b/scripts/entities/actors/Enemy.cs.uid
deleted file mode 100644
index 93255b7..0000000
--- a/scripts/entities/actors/Enemy.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bef1fo3vgvxej
diff --git a/scripts/entities/actors/EnemyDefinition.cs b/scripts/entities/actors/EnemyDefinition.cs
deleted file mode 100644
index e372e3a..0000000
--- a/scripts/entities/actors/EnemyDefinition.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Além das configurações do ator, também possui qual IA utilizar.
-/// </summary>
-[GlobalClass]
-public partial class EnemyDefinition : ActorDefinition {
- [ExportCategory("AI")]
- [Export]
- public AIType AI;
-} \ No newline at end of file
diff --git a/scripts/entities/actors/EnemyDefinition.cs.uid b/scripts/entities/actors/EnemyDefinition.cs.uid
deleted file mode 100644
index 1ba03e1..0000000
--- a/scripts/entities/actors/EnemyDefinition.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dkfdm2m2scyks
diff --git a/scripts/entities/actors/Inspector.cs b/scripts/entities/actors/Inspector.cs
deleted file mode 100644
index e340543..0000000
--- a/scripts/entities/actors/Inspector.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Isto é uma abominação
-/// </summary>
-public partial class Inspector : Sprite2D
-{
- private Vector2I gridPosition = Vector2I.Zero;
- /// <summary>
- /// Posição do inspetor no espaço. Diferentemente de Position, GridPosition tem como formato
- /// os tiles do mapa.
- /// </summary>
- public Vector2I GridPosition {
- set {
- gridPosition = value;
- // O sistema de coordenadas do Godot é em pixels, mas faz mais sentido para o jogo utilizar coordenadas em tiles.
- // Esta propriedade converte um sistema para o outro automaticamente.
- Position = Grid.GridToWorld(value);
- }
- get => gridPosition;
- }
-
- public override void _Ready() {
- base._Ready();
- Camera2D camera = GetNode<Camera2D>("Camera2D");
- camera.Enabled = true;
- camera.MakeCurrent();
-
- SignalBus.Instance.EmitSignal(SignalBus.SignalName.InspectorMoved, GridPosition);
- }
-
- /// <summary>
- /// O Inspetor não faz parte do mapa.
- /// </summary>
- /// <param name="offset"></param>
- public void Walk(Vector2I offset) {
- GridPosition += offset;
- SignalBus.Instance.EmitSignal(SignalBus.SignalName.InspectorMoved, GridPosition);
- }
-} \ No newline at end of file
diff --git a/scripts/entities/actors/Inspector.cs.uid b/scripts/entities/actors/Inspector.cs.uid
deleted file mode 100644
index ca411e4..0000000
--- a/scripts/entities/actors/Inspector.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dxsrtu4b3pi08
diff --git a/scripts/entities/actors/Inventory.cs b/scripts/entities/actors/Inventory.cs
deleted file mode 100644
index f1cff2a..0000000
--- a/scripts/entities/actors/Inventory.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using Godot;
-
-public partial class Inventory : Node {
- private Player player;
-
- public Godot.Collections.Array<ConsumableItem> Items { get; private set; } = [];
-
- public int Capacity { get; private set; }
-
- public Inventory(int capacity) {
- Capacity = capacity;
- }
-
- public override void _Ready() {
- base._Ready();
- player = GetParent<Player>();
- }
-
- public void Drop(ConsumableItem item) {
- Items.Remove(item);
- MapData data = player.Map_Data;
- data.InsertEntity(item);
- data.EmitSignal(MapData.SignalName.EntityPlaced, item);
- item.Map_Data = data;
- item.GridPosition = player.GridPosition;
-
- MessageLogData.Instance.AddMessage($"Você descarta {item.DisplayName}.");
- }
-
- public void Add(ConsumableItem item) {
- if (Items.Count >= Capacity) return;
-
- Items.Add(item);
- }
-
- public void RemoveItem(ConsumableItem item) {
- Items.Remove(item);
- }
-} \ No newline at end of file
diff --git a/scripts/entities/actors/Inventory.cs.uid b/scripts/entities/actors/Inventory.cs.uid
deleted file mode 100644
index 05c2beb..0000000
--- a/scripts/entities/actors/Inventory.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://isaqxdpou22h
diff --git a/scripts/entities/actors/Player.cs b/scripts/entities/actors/Player.cs
deleted file mode 100644
index 71812e8..0000000
--- a/scripts/entities/actors/Player.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using Godot;
-using System;
-
-/// <summary>
-/// Classe do jogador. Por enquanto não é diferente do Ator, mas isso pode mudar.
-/// </summary>
-[GlobalClass]
-public partial class Player : Actor
-{
- private PlayerDefinition definition;
- public Inventory inventory;
-
- public Player(Vector2I initialPosition, MapData map, PlayerDefinition definition) : base(initialPosition, map, definition)
- {
- this.definition = definition;
- SetDefinition(definition);
- }
-
- public void SetDefinition(PlayerDefinition definition) {
- inventory = new(definition.InventoryCapacity);
-
- AddChild(inventory);
- }
-}
diff --git a/scripts/entities/actors/Player.cs.uid b/scripts/entities/actors/Player.cs.uid
deleted file mode 100644
index 8229b7f..0000000
--- a/scripts/entities/actors/Player.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c840l08453pu2
diff --git a/scripts/entities/actors/PlayerDefinition.cs b/scripts/entities/actors/PlayerDefinition.cs
deleted file mode 100644
index aca07e1..0000000
--- a/scripts/entities/actors/PlayerDefinition.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using Godot;
-
-[GlobalClass]
-public partial class PlayerDefinition : ActorDefinition {
- [ExportCategory("Player Mechanics")]
- [Export]
- public int InventoryCapacity = 0;
-} \ No newline at end of file
diff --git a/scripts/entities/actors/PlayerDefinition.cs.uid b/scripts/entities/actors/PlayerDefinition.cs.uid
deleted file mode 100644
index 9d01ab9..0000000
--- a/scripts/entities/actors/PlayerDefinition.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://bd78nfh1tsjq6
diff --git a/scripts/entities/items/ConsumableItem.cs b/scripts/entities/items/ConsumableItem.cs
deleted file mode 100644
index 82fab49..0000000
--- a/scripts/entities/items/ConsumableItem.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Classe para itens consumíveis.
-/// Itens consumíveis são itens de uso limitado.
-/// </summary>
-public abstract partial class ConsumableItem : Entity
-{
- public ConsumableItem(Vector2I initialPosition, MapData map, EntityDefinition definition) : base(initialPosition, map, definition)
- {
- }
-
- /// <summary>
- /// Gera uma ação onde o ator consome o item.
- /// </summary>
- /// <param name="consumer"></param>
- /// <returns></returns>
- public Action GetAction(Player consumer)
- {
- return new ItemAction(consumer, this);
- }
-
- /// <summary>
- /// Ativa a função deste item.
- /// Este método é chamado pela ação gerada por ele mesmo.
- /// Este método permite definir condições para a sua ativação.
- /// </summary>
- /// <param name="action">Ação gerada pelo item.</param>
- /// <returns>Se a ação foi realizada ou não.</returns>
- public abstract bool Activate(ItemAction action);
-
- public void ConsumedBy(Player consumer) {
- Inventory inventory = consumer.inventory;
- inventory.RemoveItem(this);
- QueueFree();
- }
-} \ No newline at end of file
diff --git a/scripts/entities/items/ConsumableItem.cs.uid b/scripts/entities/items/ConsumableItem.cs.uid
deleted file mode 100644
index e6c452a..0000000
--- a/scripts/entities/items/ConsumableItem.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://hpppt5k743x
diff --git a/scripts/entities/items/ConsumableItemDefinition.cs b/scripts/entities/items/ConsumableItemDefinition.cs
deleted file mode 100644
index 74340d2..0000000
--- a/scripts/entities/items/ConsumableItemDefinition.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-using Godot;
-
-/// <summary>
-/// Esta classe só existe para agrupar seus descendentes.
-/// </summary>
-[GlobalClass]
-public abstract partial class ConsumableItemDefinition : EntityDefinition; \ No newline at end of file
diff --git a/scripts/entities/items/ConsumableItemDefinition.cs.uid b/scripts/entities/items/ConsumableItemDefinition.cs.uid
deleted file mode 100644
index 9ddc0f6..0000000
--- a/scripts/entities/items/ConsumableItemDefinition.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://dpdju2ucehsb0
diff --git a/scripts/entities/items/HealingConsumable.cs b/scripts/entities/items/HealingConsumable.cs
deleted file mode 100644
index 2104693..0000000
--- a/scripts/entities/items/HealingConsumable.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using Godot;
-
-public partial class HealingConsumable : ConsumableItem
-{
- private HealingConsumableDefinition definition;
- public float HealingPercentage { get; private set; }
- public HealingConsumable(Vector2I initialPosition, MapData map, HealingConsumableDefinition definition) : base(initialPosition, map, definition)
- {
- this.definition = definition;
- HealingPercentage = definition.healingPercentage;
- }
-
- public override bool Activate(ItemAction action)
- {
- Player consumer = (Player) action.ThisActor;
- int intendedAmount = (int)(HealingPercentage / 100 * consumer.MaxHp);
- int recovered = consumer.Heal(intendedAmount);
-
- // Se não tinha o que curar, a ativação falhou.
- if (recovered == 0) {
- MessageLogData.Instance.AddMessage("Você já está saudável.");
- return false;
- }
- MessageLogData.Instance.AddMessage($"Você consome {DisplayName} e recupera {recovered} de HP");
- ConsumedBy(consumer);
- return true;
- }
-} \ No newline at end of file
diff --git a/scripts/entities/items/HealingConsumable.cs.uid b/scripts/entities/items/HealingConsumable.cs.uid
deleted file mode 100644
index 8f8f942..0000000
--- a/scripts/entities/items/HealingConsumable.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://ct20rmjhaukge
diff --git a/scripts/entities/items/HealingConsumableDefinition.cs b/scripts/entities/items/HealingConsumableDefinition.cs
deleted file mode 100644
index 2562e9e..0000000
--- a/scripts/entities/items/HealingConsumableDefinition.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Godot;
-
-[GlobalClass]
-public partial class HealingConsumableDefinition : ConsumableItemDefinition {
- ///<summary>
- /// Porcentagem da vida do ator para restaurar.
- ///</summary>
- [ExportCategory("Item Mechanics")]
- [Export]
- public float healingPercentage = 10;
-} \ No newline at end of file
diff --git a/scripts/entities/items/HealingConsumableDefinition.cs.uid b/scripts/entities/items/HealingConsumableDefinition.cs.uid
deleted file mode 100644
index 2fd311d..0000000
--- a/scripts/entities/items/HealingConsumableDefinition.cs.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://b3qy4gtjfci14