From 4baa492ab1933fd478ea64f5ac488475d6e3a403 Mon Sep 17 00:00:00 2001 From: Zenny Date: Mon, 3 Mar 2025 21:41:22 -0800 Subject: [PATCH] Implement Perspective --- src/items/effect/EffectItem.cs | 12 ++++++++++++ src/items/effect/resources/Perspective.tres | 19 +++++++++++++++++++ src/items/throwable/ThrowableItemTag.cs | 2 +- src/map/dungeon/floors/Floor00.tscn | 2 +- 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/items/effect/resources/Perspective.tres diff --git a/src/items/effect/EffectItem.cs b/src/items/effect/EffectItem.cs index 79bbc2ee..0617d18a 100644 --- a/src/items/effect/EffectItem.cs +++ b/src/items/effect/EffectItem.cs @@ -52,6 +52,9 @@ public partial class EffectItem : Node3D, IUsableItem AbsorbHPFromAllEnemiesInRoom(); if (_effectItemStats.UsableItemTags.Contains(UsableItemTag.DealElementalDamageToAllEnemiesInRoom)) DealElementalDamageToAllEnemiesInRoom(ElementType.Hydric); + if (_effectItemStats.UsableItemTags.Contains(UsableItemTag.SwapHPAndVT)) + SwapHPandVT(); + } public void SetItemStats(InventoryItemStats inventoryItemStats) @@ -164,4 +167,13 @@ public partial class EffectItem : Node3D, IUsableItem foreach (var enemy in currentEnemies) enemy.TakeDamage(20, elementType); } + + private void SwapHPandVT() + { + var oldHp = Player.Stats.CurrentHP.Value; + var oldVt = Player.Stats.CurrentVT.Value; + + Player.Stats.SetCurrentHP(oldVt); + Player.Stats.SetCurrentVT(oldHp); + } } diff --git a/src/items/effect/resources/Perspective.tres b/src/items/effect/resources/Perspective.tres new file mode 100644 index 00000000..e4d8db90 --- /dev/null +++ b/src/items/effect/resources/Perspective.tres @@ -0,0 +1,19 @@ +[gd_resource type="Resource" script_class="EffectItemStats" load_steps=3 format=3 uid="uid://b44v3y1okrj1s"] + +[ext_resource type="Texture2D" uid="uid://c7v5pm32sedkg" path="res://src/items/effect/textures/entropic seal.PNG" id="1_31uf7"] +[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="1_lq0bc"] + +[resource] +script = ExtResource("1_lq0bc") +UsableItemTags = Array[int]([3]) +ElementalDamageType = 0 +Name = "Perspective" +Description = "Swap current HP and VT." +Texture = ExtResource("1_31uf7") +SpawnRate = 0.5 +ThrowSpeed = 12.0 +HealHPAmount = 0 +HealVTAmount = 0 +ThrowDamage = 5 +ItemTags = Array[int]([]) +metadata/_custom_type_script = "uid://b5w4iw4iqmxtn" diff --git a/src/items/throwable/ThrowableItemTag.cs b/src/items/throwable/ThrowableItemTag.cs index 161ecd59..93ef1b79 100644 --- a/src/items/throwable/ThrowableItemTag.cs +++ b/src/items/throwable/ThrowableItemTag.cs @@ -13,7 +13,7 @@ public enum UsableItemTag DoubleEXP, IdentifyAllItemsCostHP, BriefImmunity, - SwapHPandVTWithEntitiesInRoom, + SwapHPAndVT, TeleportAllEnemiesToRoom, TurnAllEnemiesIntoHealingItem, KillHalfEnemiesInRoom, diff --git a/src/map/dungeon/floors/Floor00.tscn b/src/map/dungeon/floors/Floor00.tscn index b380cea0..d1e5b6e1 100644 --- a/src/map/dungeon/floors/Floor00.tscn +++ b/src/map/dungeon/floors/Floor00.tscn @@ -16,7 +16,7 @@ [ext_resource type="Texture2D" uid="uid://4k6vtn4oip5f" path="res://src/map/dungeon/models/Set A/02. Altar/02_ALTAR_FLOOR_ZER0_VER_TILE4.png" id="14_qqc7i"] [ext_resource type="Texture2D" uid="uid://cururtxtgylxf" path="res://src/map/dungeon/models/Set A/02. Altar/02_ALTAR_FLOOR_ZER0_VER_COLUMN.jpg" id="15_ojbcg"] [ext_resource type="PackedScene" uid="uid://d0pl1n1jf77jm" path="res://src/items/effect/EffectItem.tscn" id="16_aqomv"] -[ext_resource type="Resource" uid="uid://bgqu6jsadtqjq" path="res://src/items/effect/resources/HydricCaster.tres" id="17_ntxe5"] +[ext_resource type="Resource" uid="uid://b44v3y1okrj1s" path="res://src/items/effect/resources/Perspective.tres" id="17_ntxe5"] [ext_resource type="Resource" uid="uid://bptg6eybj5dxk" path="res://src/items/effect/resources/DevicRecall.tres" id="18_ntxe5"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3ubi4"]