From 468e39355018f8cdeb07326e12b9be4332e3a122 Mon Sep 17 00:00:00 2001 From: iisaev Date: Thu, 22 Oct 2026 17:09:39 +0200 Subject: [PATCH] Targeted item actions (action/heal), item.add scenario action, inventory cell Decorate; mod cover --- mod.jpg | Bin 0 -> 98222 bytes src/HealItemAction.cs | 43 +++++++++++++++++ src/ITargetedItemAction.cs | 23 +++++++++ src/ItemAddAction.cs | 42 +++++++++++++++++ src/ui/InventoryItemBehaviour.cs | 17 +++++++ src/ui/InventoryPanelBehaviour.cs | 6 ++- tests/FakeActionContext.cs | 33 +++++++++++++ tests/HealItemActionTests.cs | 75 ++++++++++++++++++++++++++++++ tests/ItemAddActionTests.cs | 75 ++++++++++++++++++++++++++++++ 9 files changed, 313 insertions(+), 1 deletion(-) create mode 100644 mod.jpg create mode 100644 src/HealItemAction.cs create mode 100644 src/ITargetedItemAction.cs create mode 100644 src/ItemAddAction.cs create mode 100644 tests/FakeActionContext.cs create mode 100644 tests/HealItemActionTests.cs create mode 100644 tests/ItemAddActionTests.cs diff --git a/mod.jpg b/mod.jpg new file mode 100644 index 0000000000000000000000000000000000000000..901019a5f88f7b2aeb2552de0ac3a3df9d9a964d GIT binary patch literal 98222 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 _%s>Lxz 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

S1_dKEz2Ib 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 literal 0 HcmV?d00001 diff --git a/src/HealItemAction.cs b/src/HealItemAction.cs new file mode 100644 index 0000000..2b077bd --- /dev/null +++ b/src/HealItemAction.cs @@ -0,0 +1,43 @@ +using System; +using Cthangover.Core.Items; +using Cthangover.Core.Settings; + +namespace Cthangover.Mods.Items +{ + ///

+ /// Restores health of the chosen party member ("ItemAction": "action/heal"). + /// The amount is item data, not code: the item's "heal" key (an extra JSON + /// key, so it lands in ), which lets one action serve + /// a mushroom and an elixir alike. Health never rises above its base value, and a + /// fallen character (health 0) is not revived — that is a different effect. + /// The party member's attributes are the very objects the battle uses, so a heal + /// in the inventory during a battle shows on the battle widgets at once. + /// + public class HealItemAction : ITargetedItemAction + { + /// Item property with the amount of health restored. + public const string HealProperty = "heal"; + + /// Action id referenced by item definitions. + public string ID => "action/heal"; + + /// Healing always needs a target; without one nothing happens. + public bool UseAction(IItem item) => false; + + /// + /// Adds the item's heal amount to the target's health, capped at the + /// base value. Returns false (item not spent) for a missing target, a + /// non-positive amount, a fallen target or one already at full health. + /// + public bool UseOn(IItem item, CharacterInfoData target) + { + var health = target?.Attributes?.Health; + var amount = item?.Properties?.GetInt(HealProperty) ?? 0; + if (health == null || amount <= 0 || health.Value <= 0 || health.Value >= health.BaseValue) + return false; + + health.Value = Math.Min(health.BaseValue, health.Value + amount); + return true; + } + } +} diff --git a/src/ITargetedItemAction.cs b/src/ITargetedItemAction.cs new file mode 100644 index 0000000..677aa7e --- /dev/null +++ b/src/ITargetedItemAction.cs @@ -0,0 +1,23 @@ +using Cthangover.Core.Items; +using Cthangover.Core.Settings; + +namespace Cthangover.Mods.Items +{ + /// + /// Item action that needs to know whom it is applied to. The core + /// contract has no target, so an effect on a party + /// member (healing) could not tell which member was picked in + /// . Items with + /// whose action implements this interface get + /// with the chosen character; other actions keep receiving + /// the plain . + /// + public interface ITargetedItemAction : IItemAction + { + /// + /// Applies the item to . Returns false when + /// nothing happened (e.g. healing at full health), so the item is not spent. + /// + bool UseOn(IItem item, CharacterInfoData target); + } +} diff --git a/src/ItemAddAction.cs b/src/ItemAddAction.cs new file mode 100644 index 0000000..3bc9230 --- /dev/null +++ b/src/ItemAddAction.cs @@ -0,0 +1,42 @@ +using Cthangover.Core.Actions; + +namespace Cthangover.Mods.Items +{ + /// + /// action item.add id=resource/branches [count=3] — puts items into the + /// player's inventory from a scenario: a chest, a gift, a pickup on an RPG map. + /// count defaults to 1; an unknown item id is reported by the inventory + /// and adds nothing. + /// + public class ItemAddAction : IScenarioAction + { + /// DSL name. + public string Name => "item.add"; + + /// Reads id and count and adds the stack. + public void Run(IActionContext ctx) + { + var id = ctx.GetParam("id"); + if (string.IsNullOrWhiteSpace(id)) + { + ctx.LogWarning("INVENTORY", "item.add: missing 'id'"); + return; + } + + var countText = ctx.GetParam("count"); + var count = 1; + if (!string.IsNullOrWhiteSpace(countText) && (!int.TryParse(countText, out count) || count <= 0)) + { + ctx.LogWarning("INVENTORY", $"item.add: 'count' must be a positive number, got '{countText}'"); + return; + } + + if (ctx.Inventory == null) + { + ctx.LogWarning("INVENTORY", "item.add: no inventory in this game"); + return; + } + ctx.Inventory.Add(id.Trim(), count); + } + } +} diff --git a/src/ui/InventoryItemBehaviour.cs b/src/ui/InventoryItemBehaviour.cs index 6d9eb33..f2b92c4 100644 --- a/src/ui/InventoryItemBehaviour.cs +++ b/src/ui/InventoryItemBehaviour.cs @@ -88,6 +88,23 @@ namespace Cthangover.Core.UI.Inventory _count.Modulate = dimmed ? IconDimmed : Colors.White; } + /// + /// Overrides what derived from the item's action, + /// for grids where the action is not the point — the trade window shows a + /// price in the corner tag (, null hides it) and + /// dims what cannot be traded. Call after . + /// + public void Decorate(string tag, bool dimmed) + { + if (!_built) + return; + _tag.Visible = tag != null; + if (tag != null) + _tagLabel.Text = tag; + _icon.Modulate = dimmed ? IconDimmed : Colors.White; + _count.Modulate = dimmed ? IconDimmed : Colors.White; + } + /// Switches the frame to the gold selected state; the panel owns this flag. public void SetSelected(bool selected) { diff --git a/src/ui/InventoryPanelBehaviour.cs b/src/ui/InventoryPanelBehaviour.cs index b67e58a..c876803 100644 --- a/src/ui/InventoryPanelBehaviour.cs +++ b/src/ui/InventoryPanelBehaviour.cs @@ -10,6 +10,7 @@ using Cthangover.Core.UI.Theming; using Godot; using Cthangover.Mods.Interface.Base.Lists; +using Cthangover.Mods.Items; using Cthangover.Mods.Interface.Theming; namespace Cthangover.Core.UI.Inventory { @@ -978,7 +979,10 @@ namespace Cthangover.Core.UI.Inventory if (!HasActionPoint()) return; - if (!item.ItemAction.UseAction(item)) + var applied = item.ItemAction is ITargetedItemAction targeted + ? targeted.UseOn(item, info) + : item.ItemAction.UseAction(item); + if (!applied) { SetMessage(MessageKind.Error, InventoryItemUi.Translate("ui/inventory/applied_failed")); _targetOpen = false; diff --git a/tests/FakeActionContext.cs b/tests/FakeActionContext.cs new file mode 100644 index 0000000..9504fa5 --- /dev/null +++ b/tests/FakeActionContext.cs @@ -0,0 +1,33 @@ +namespace Cthangover.Mods.Items.Tests +{ + using System.Collections.Generic; + using Cthangover.Core.Actions; + using Cthangover.Core.Items; + using Cthangover.Core.Mods; + + /// Action context for scenario action tests: dialog variables and an inventory, no other services. + public class FakeActionContext : IActionContext + { + /// Dialog variables returned by . + public Dictionary Params { get; } = new(); + + /// Warnings the action logged. + public List Warnings { get; } = new(); + + public IQuestService Quests => null; + public ICharacterService Character => null; + public ILightingService Lighting => null; + public ISceneNodeService Scene => null; + public IModRegistry ModRegistry => null; + public IInventory Inventory { get; set; } + public IMapZoneService Map => null; + + public string GetParam(string name) => Params.TryGetValue(name, out var value) ? value : null; + + public void Log(string category, string message) + { + } + + public void LogWarning(string category, string message) => Warnings.Add(message); + } +} diff --git a/tests/HealItemActionTests.cs b/tests/HealItemActionTests.cs new file mode 100644 index 0000000..16371a7 --- /dev/null +++ b/tests/HealItemActionTests.cs @@ -0,0 +1,75 @@ +namespace Cthangover.Mods.Items.Tests +{ + using Cthangover.Core.Characters; + using Cthangover.Core.Items; + using Cthangover.Core.Mods.Testing; + using Cthangover.Core.Settings; + using Cthangover.Core.Utils; + + /// + /// action/heal: the amount comes from the item's heal property, health is + /// capped at its base value, and an item that does nothing is reported as not used. + /// + public class HealItemActionTests + { + private static Item Food(int heal) + { + var properties = new PropertyData(); + properties.SetInt(HealItemAction.HealProperty, heal); + return new Item { ID = "test/food", Properties = properties }; + } + + private static CharacterInfoData Hero(int health, int max) + { + var attributes = new CharacterAttributes(); + attributes.Health.Value = health; + attributes.Health.BaseValue = max; + return new CharacterInfoData { ID = "hero", Attributes = attributes }; + } + + [ModTest("heal/restores_the_amount")] + static void RestoresTheAmount(ModTestContext ctx) + { + var hero = Hero(10, 24); + ModAssert.True(new HealItemAction().UseOn(Food(5), hero), "wounded hero is healed"); + ModAssert.Equal(15, hero.Attributes.Health.Value, "10 + 5"); + ModAssert.Equal(24, hero.Attributes.Health.BaseValue, "max unchanged"); + } + + [ModTest("heal/capped_at_max")] + static void CappedAtMax(ModTestContext ctx) + { + var hero = Hero(22, 24); + ModAssert.True(new HealItemAction().UseOn(Food(20), hero), "partly wounded hero is healed"); + ModAssert.Equal(24, hero.Attributes.Health.Value, "never above max"); + } + + [ModTest("heal/useless_heal_is_not_used")] + static void UselessHealIsNotUsed(ModTestContext ctx) + { + var action = new HealItemAction(); + + var full = Hero(24, 24); + ModAssert.False(action.UseOn(Food(5), full), "full health"); + ModAssert.Equal(24, full.Attributes.Health.Value, "full stays full"); + + var fallen = Hero(0, 24); + ModAssert.False(action.UseOn(Food(5), fallen), "a fallen hero is not revived"); + ModAssert.Equal(0, fallen.Attributes.Health.Value, "fallen stays fallen"); + + var wounded = Hero(10, 24); + ModAssert.False(action.UseOn(Food(0), wounded), "no heal amount"); + ModAssert.False(action.UseOn(new Item { ID = "plain" }, wounded), "no properties"); + ModAssert.False(action.UseOn(Food(5), null), "no target"); + ModAssert.False(action.UseOn(Food(5), new CharacterInfoData { ID = "bare" }), "no attributes"); + ModAssert.False(action.UseAction(Food(5)), "heal needs a target"); + ModAssert.Equal(10, wounded.Attributes.Health.Value, "untouched"); + } + + [ModTest("heal/id")] + static void Id(ModTestContext ctx) + { + ModAssert.Equal("action/heal", new HealItemAction().ID, "item definitions reference this id"); + } + } +} diff --git a/tests/ItemAddActionTests.cs b/tests/ItemAddActionTests.cs new file mode 100644 index 0000000..d9131fd --- /dev/null +++ b/tests/ItemAddActionTests.cs @@ -0,0 +1,75 @@ +namespace Cthangover.Mods.Items.Tests +{ + using System.Linq; + using Cthangover.Core.Items; + using Cthangover.Core.Mods.Resolvers; + using Cthangover.Core.Mods.Testing; + + /// action item.add from a scenario: a count defaults to one, a bad one adds nothing. + public class ItemAddActionTests + { + private static FakeActionContext Context(string id, string count) + { + var ctx = new FakeActionContext { Inventory = new Inventory() }; + if (id != null) + ctx.Params["id"] = id; + if (count != null) + ctx.Params["count"] = count; + return ctx; + } + + [ModTest("item_add/adds_count")] + static void AddsCount(ModTestContext test) + { + var id = Entities.Collect().Keys.First(); + var ctx = Context(id, "3"); + var before = ctx.Inventory.CheckCount(id); + + new ItemAddAction().Run(ctx); + + ModAssert.Equal(before + 3, ctx.Inventory.CheckCount(id), "three added"); + ModAssert.Equal(0, ctx.Warnings.Count, "no warnings"); + } + + [ModTest("item_add/count_defaults_to_one")] + static void CountDefaultsToOne(ModTestContext test) + { + var id = Entities.Collect().Keys.First(); + var ctx = Context(id, null); + var before = ctx.Inventory.CheckCount(id); + + new ItemAddAction().Run(ctx); + + ModAssert.Equal(before + 1, ctx.Inventory.CheckCount(id), "one added"); + } + + [ModTest("item_add/bad_arguments_add_nothing")] + static void BadArgumentsAddNothing(ModTestContext test) + { + var id = Entities.Collect().Keys.First(); + foreach (var count in new[] { "0", "-2", "many" }) + { + var ctx = Context(id, count); + var before = ctx.Inventory.CheckCount(id); + new ItemAddAction().Run(ctx); + ModAssert.Equal(before, ctx.Inventory.CheckCount(id), "count=" + count); + ModAssert.Equal(1, ctx.Warnings.Count, "warned about count=" + count); + } + + var noId = Context(null, "1"); + new ItemAddAction().Run(noId); + ModAssert.Equal(1, noId.Warnings.Count, "warned about the missing id"); + + var noInventory = new FakeActionContext(); + noInventory.Params["id"] = id; + new ItemAddAction().Run(noInventory); + ModAssert.Equal(1, noInventory.Warnings.Count, "warned about the missing inventory"); + } + + [ModTest("item_add/name")] + static void Name(ModTestContext test) + { + ModAssert.Equal("item.add", new ItemAddAction().Name, "DSL name"); + } + } +}