Add curse element, increase throw speed/damage of Ciello

This commit is contained in:
2026-02-10 15:37:12 -08:00
parent 363ee1cd33
commit 2f377d2d7a
13 changed files with 193 additions and 176 deletions

View File

@@ -9,7 +9,7 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../Export/Ma.exe"
export_path="Export/Ma.exe"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""

View File

@@ -57,7 +57,9 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
[Export] public double HolyResistance { get; set; }
public ElementalResistanceSet ElementalResistanceSet => new ElementalResistanceSet(AeolicResistance, HydricResistance, IgenousResistance, FerrumResistance, TelluricResistance, HolyResistance);
[Export] public double CurseResistance { get; set; }
public ElementalResistanceSet ElementalResistanceSet => new ElementalResistanceSet(AeolicResistance, HydricResistance, IgenousResistance, FerrumResistance, TelluricResistance, HolyResistance, CurseResistance);
[Node] private AudioStreamPlayer3D _absorbSFX { get; set; } = default!;
[Node] private AudioStreamPlayer3D _hitSFX { get; set; } = default!;

View File

@@ -63,6 +63,10 @@ public abstract partial class InventoryItemStats : Resource
[Save("equipment_holy_resist")]
public int HolyResistance { get; set; } = 0;
[Export]
[Save("equipment_curse_resist")]
public int CurseResistance { get; set; } = 0;
[Export(PropertyHint.Range, "0, 25, 0.1")]
[Save("equipment_throw_speed")]
public float ThrowSpeed { get; set; } = 12.0f;

View File

@@ -38,7 +38,7 @@ public partial class Accessory : EquipableItem
public override int BonusLuck { get => Stats.BonusLuck + _bonusLuck; }
public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance);
public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance, Stats.CurseResistance);
[Save("accessory_tag")]
public AccessoryTag AccessoryTag => Stats.AccessoryTag;

View File

@@ -39,7 +39,7 @@ public partial class Armor : EquipableItem
[Save("armor_bonus_luck")]
private int _bonusLuck { get; set; } = 0;
public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance);
public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance, Stats.CurseResistance);
public void IncreaseArmorDefense(int bonus) => _bonusDefense += bonus;

View File

@@ -33,5 +33,9 @@ public partial class ArmorStats : InventoryItemStats
[Save("armor_holy_resistance")]
private double _holyResistance { get; set; } = 0;
public ElementalResistanceSet ElementalResistanceSet => new ElementalResistanceSet(_aeolicResistance, _hydricResistance, _igneousResistance, _ferrumResistance, _telluricResistance, _holyResistance);
[Export]
[Save("armor_curse_resistance")]
private double _curseResistance { get; set; } = 0;
public ElementalResistanceSet ElementalResistanceSet => new ElementalResistanceSet(_aeolicResistance, _hydricResistance, _igneousResistance, _ferrumResistance, _telluricResistance, _holyResistance, _curseResistance);
}

View File

@@ -44,7 +44,7 @@ public partial class Weapon : EquipableItem
[Save("weapon_element")]
public ElementType WeaponElement => Stats.WeaponElement;
public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance);
public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance, Stats.CurseResistance);
public void IncreaseWeaponAttack(int bonus) => _bonusDamage += bonus;

View File

@@ -6,15 +6,16 @@
[resource]
script = ExtResource("2_yrbai")
AttackSpeed = 1.0
WeaponElement = 0
WeaponElement = 7
WeaponTag = 0
SelfDamage = 0
SoundEffect = 22
Name = "Black Plume Sword"
Description = "Curse Element"
Description = "Deals curse damage."
SpawnRate = 0.1
BonusAttack = 8
BonusDefense = 0
BonusLuck = 0.05
BonusLuck = 5
BonusHP = 0
BonusVT = 0
AeolicResistance = 0
@@ -23,6 +24,7 @@ HydricResistance = 0
IgneousResistance = 0
FerrumResistance = 0
HolyResistance = 0
CurseResistance = 0
ThrowSpeed = 12.0
ThrowDamage = 5
ItemTag = 0

View File

@@ -8,6 +8,7 @@ script = ExtResource("2_tps6s")
AttackSpeed = 1.0
WeaponElement = 0
WeaponTag = 0
SelfDamage = 0
SoundEffect = 22
Name = "Ciello"
Description = "Triple Strike.
@@ -24,7 +25,8 @@ HydricResistance = 0
IgneousResistance = 0
FerrumResistance = 0
HolyResistance = 0
ThrowSpeed = 12.0
ThrowDamage = 5
CurseResistance = 0
ThrowSpeed = 20.0
ThrowDamage = 25
ItemTag = 0
Texture = ExtResource("1_jiewn")

View File

@@ -1017,6 +1017,46 @@ tracks/2/keys = {
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_ymsks"]
resource_name = "FireSlash"
length = 1.23334
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:animation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"Fire Slash"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.23333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0, 37]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Hitbox/HitboxCollision:disabled")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.166667, 0.233333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_cssau"]
resource_name = "HitWall"
length = 0.625002
@@ -1070,9 +1110,129 @@ tracks/3/keys = {
"values": [0, 5, 0]
}
[sub_resource type="Animation" id="Animation_vc6qm"]
resource_name = "LoveJudgement"
length = 1.23334
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:animation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"Love Judgement"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.23333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0, 37]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Hitbox/HitboxCollision:disabled")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.166667, 0.233333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_lysy5"]
resource_name = "NormalSlash"
length = 1.23334
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:animation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"Normal Slash 1"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.23333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0, 37]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Hitbox/HitboxCollision:disabled")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.166667, 0.233333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_v3vjx"]
resource_name = "Persuader"
[sub_resource type="Animation" id="Animation_na483"]
resource_name = "PlasmaSword"
length = 1.23334
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:animation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"Plasma Sword"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.23333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0, 37]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Hitbox/HitboxCollision:disabled")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.166667, 0.233333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_flmxu"]
length = 0.001
tracks/0/type = "value"
@@ -1164,86 +1324,6 @@ tracks/2/keys = {
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_na483"]
resource_name = "PlasmaSword"
length = 1.23334
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:animation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"Plasma Sword"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.23333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0, 37]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Hitbox/HitboxCollision:disabled")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.166667, 0.233333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_vc6qm"]
resource_name = "LoveJudgement"
length = 1.23334
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:animation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"Love Judgement"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.23333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0, 37]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Hitbox/HitboxCollision:disabled")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.166667, 0.233333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_ejbn4"]
resource_name = "Unarmed"
length = 1.23334
@@ -1284,86 +1364,6 @@ tracks/2/keys = {
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_lysy5"]
resource_name = "NormalSlash"
length = 1.23334
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:animation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"Normal Slash 1"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.23333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0, 37]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Hitbox/HitboxCollision:disabled")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.166667, 0.233333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_ymsks"]
resource_name = "FireSlash"
length = 1.23334
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:animation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"Fire Slash"]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("SubViewportContainer/SubViewport/WeaponAttack:frame")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.23333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0, 37]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Hitbox/HitboxCollision:disabled")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.166667, 0.233333),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 1,
"values": [true, false, true]
}
[sub_resource type="Animation" id="Animation_f0ff4"]
resource_name = "WaterSlash"
length = 1.23334