summaryrefslogtreecommitdiff
path: root/scripts/entities/items/HealingConsumable.cs
blob: 2104693937ff39d927ff678c9660be00b18ecf17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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;
	}
}