From b5df675187c0dd595d8b77e87c0d6ad52512bb6f Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Tue, 5 Nov 2024 19:05:40 +0300 Subject: [PATCH] Spellcaster slowdown, mole nerf, new shoulder slot, healing staff (#538) * healing staff sprite * new back slot and move all big things to whis slot * replace ring to staff * caster sowdown! Mole rebalance * loadouts fix * fix weapon rotation * Update spawners.yml --- .../_CP14/MagicSpell/CP14MagicSystem.cs | 37 ++++++++++++++ Content.Shared/Inventory/SlotFlags.cs | 10 ++-- .../_CP14/MagicSpell/CP14SharedMagicSystem.cs | 4 +- .../CP14MagicCasterSlowdownComponent.cs | 11 +++++ .../CP14MagicEffectCastSlowdownComponent.cs | 14 ++++++ .../Events/CP14CastMagicEffectEvent.cs | 1 + .../CP14SpellStorageAccessWearingComponent.cs | 2 +- .../Entities/Actions/Spells/cure_wounds.yml | 9 ++-- .../Entities/Actions/Spells/earth_wall.yml | 2 + .../Entities/Actions/Spells/fireball.yml | 2 + .../Entities/Actions/Spells/ice_shards.yml | 2 + .../Entities/Actions/Spells/shadow_step.yml | 2 + .../_CP14/Entities/Clothing/Rings/ring.yml | 18 ------- .../Markers/Spawners/Random/Loot/spawners.yml | 2 +- .../_CP14/Entities/Mobs/NPC/monster.yml | 24 +++++---- .../_CP14/Entities/Mobs/Species/base.yml | 1 + .../Objects/Weapons/Magic/twoHandedStaffs.yml | 46 ++++++++++++++++++ .../Objects/Weapons/Melee/battleHammer.yml | 2 +- .../Objects/Weapons/Melee/battleStaff.yml | 13 ++--- .../Objects/Weapons/Melee/lightHammer.yml | 9 ++++ .../Entities/Objects/Weapons/Melee/mace.yml | 6 +-- .../Entities/Objects/Weapons/Melee/shield.yml | 2 +- .../Entities/Objects/Weapons/Melee/spear.yml | 2 +- .../Entities/Objects/Weapons/Melee/sword.yml | 9 ++-- .../Objects/Weapons/Melee/twoHandedSword.yml | 2 +- .../human_inventory_template.yml | 22 +++++---- .../_CP14/Loadouts/Jobs/general.yml | 8 +-- .../Interface/CrystallPunk/Slots/neck.png | Bin 391 -> 397 bytes .../healing_staff.rsi/equipped-NECK.png | Bin 0 -> 549 bytes .../TwoHandedStaff/healing_staff.rsi/icon.png | Bin 0 -> 575 bytes .../healing_staff.rsi/inhand-left.png | Bin 0 -> 724 bytes .../healing_staff.rsi/inhand-right.png | Bin 0 -> 758 bytes .../healing_staff.rsi/meta.json | 34 +++++++++++++ .../healing_staff.rsi/wielded-inhand-left.png | Bin 0 -> 812 bytes .../wielded-inhand-right.png | Bin 0 -> 812 bytes ...quipped-BACKPACK.png => equipped-NECK.png} | Bin .../BattleHammer/battleHammer.rsi/meta.json | 2 +- ...quipped-BACKPACK.png => equipped-NECK.png} | Bin .../BattleStaff/battleStaff.rsi/meta.json | 2 +- ...quipped-BACKPACK.png => equipped-NECK.png} | Bin .../Weapons/Melee/Shield/shield.rsi/meta.json | 2 +- ...quipped-BACKPACK.png => equipped-NECK.png} | Bin .../Weapons/Melee/Sword/sword.rsi/meta.json | 2 +- ...quipped-BACKPACK.png => equipped-NECK.png} | Bin .../Melee/TwoHandedSword/scythe.rsi/meta.json | 2 +- ...quipped-BACKPACK.png => equipped-NECK.png} | Bin .../twoHandedSword.rsi/meta.json | 2 +- Resources/migration.yml | 3 ++ 48 files changed, 230 insertions(+), 81 deletions(-) create mode 100644 Content.Shared/_CP14/MagicSpell/Components/CP14MagicCasterSlowdownComponent.cs create mode 100644 Content.Shared/_CP14/MagicSpell/Components/CP14MagicEffectCastSlowdownComponent.cs create mode 100644 Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml create mode 100644 Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/equipped-NECK.png create mode 100644 Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/icon.png create mode 100644 Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/inhand-left.png create mode 100644 Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/inhand-right.png create mode 100644 Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/wielded-inhand-left.png create mode 100644 Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/wielded-inhand-right.png rename Resources/Textures/_CP14/Objects/Weapons/Melee/BattleHammer/battleHammer.rsi/{equipped-BACKPACK.png => equipped-NECK.png} (100%) rename Resources/Textures/_CP14/Objects/Weapons/Melee/BattleStaff/battleStaff.rsi/{equipped-BACKPACK.png => equipped-NECK.png} (100%) rename Resources/Textures/_CP14/Objects/Weapons/Melee/Shield/shield.rsi/{equipped-BACKPACK.png => equipped-NECK.png} (100%) rename Resources/Textures/_CP14/Objects/Weapons/Melee/Sword/sword.rsi/{equipped-BACKPACK.png => equipped-NECK.png} (100%) rename Resources/Textures/_CP14/Objects/Weapons/Melee/TwoHandedSword/scythe.rsi/{equipped-BACKPACK.png => equipped-NECK.png} (100%) rename Resources/Textures/_CP14/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/{equipped-BACKPACK.png => equipped-NECK.png} (100%) diff --git a/Content.Server/_CP14/MagicSpell/CP14MagicSystem.cs b/Content.Server/_CP14/MagicSpell/CP14MagicSystem.cs index f377b78ee7..ed0bbca67f 100644 --- a/Content.Server/_CP14/MagicSpell/CP14MagicSystem.cs +++ b/Content.Server/_CP14/MagicSpell/CP14MagicSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Chat.Systems; using Content.Shared._CP14.MagicSpell; using Content.Shared._CP14.MagicSpell.Components; using Content.Shared._CP14.MagicSpell.Events; +using Content.Shared.Movement.Systems; using Robust.Server.GameObjects; namespace Content.Server._CP14.MagicSpell; @@ -10,6 +11,7 @@ public sealed partial class CP14MagicSystem : CP14SharedMagicSystem { [Dependency] private readonly ChatSystem _chat = default!; [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly MovementSpeedModifierSystem _movement = default!; public override void Initialize() { @@ -17,6 +19,41 @@ public sealed partial class CP14MagicSystem : CP14SharedMagicSystem SubscribeLocalEvent(OnSpawnMagicVisualEffect); SubscribeLocalEvent(OnDespawnMagicVisualEffect); + + SubscribeLocalEvent(OnSlowdownCaster); + SubscribeLocalEvent(OnUnslowdownCaster); + SubscribeLocalEvent(OnCasterRefreshMovespeed); + } + + private void OnSlowdownCaster(Entity ent, ref CP14StartCastMagicEffectEvent args) + { + if (!TryComp(args.Performer, out var caster)) + return; + + caster.SpeedModifiers.Add(ent.Comp.SpeedMultiplier); + _movement.RefreshMovementSpeedModifiers(args.Performer); + } + + private void OnUnslowdownCaster(Entity ent, ref CP14EndCastMagicEffectEvent args) + { + if (!TryComp(args.Performer, out var caster)) + return; + + if (caster.SpeedModifiers.Contains(ent.Comp.SpeedMultiplier)) + caster.SpeedModifiers.Remove(ent.Comp.SpeedMultiplier); + + _movement.RefreshMovementSpeedModifiers(args.Performer); + } + + private void OnCasterRefreshMovespeed(Entity ent, ref RefreshMovementSpeedModifiersEvent args) + { + var result = 1f; + foreach (var modifier in ent.Comp.SpeedModifiers) + { + result += modifier; + } + + args.ModifySpeed(result); } private void OnSpellSpoken(Entity ent, ref CP14VerbalAspectSpeechEvent args) diff --git a/Content.Shared/Inventory/SlotFlags.cs b/Content.Shared/Inventory/SlotFlags.cs index 58f07ab637..6d503721a2 100644 --- a/Content.Shared/Inventory/SlotFlags.cs +++ b/Content.Shared/Inventory/SlotFlags.cs @@ -26,11 +26,11 @@ public enum SlotFlags LEGS = 1 << 13, FEET = 1 << 14, SUITSTORAGE = 1 << 15, - RING = 1 << 16, - PANTS = 1 << 17, - SHIRT = 1 << 18, - CLOAK = 1 << 19, - KEYS = 1 << 20, + RING = 1 << 16, //CP14 + PANTS = 1 << 17, //CP14 + SHIRT = 1 << 18, //CP14 + CLOAK = 1 << 19, //CP14 + KEYS = 1 << 20, //CP14 All = ~NONE, WITHOUT_POCKET = All & ~POCKET diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs index b13a248079..77d8d0d674 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs @@ -137,7 +137,7 @@ public partial class CP14SharedMagicSystem : EntitySystem private void OnDelayedEntityWorldTargetDoAfter(Entity ent, ref CP14DelayedEntityWorldTargetActionDoAfterEvent args) { - var endEv = new CP14EndCastMagicEffectEvent(); + var endEv = new CP14EndCastMagicEffectEvent{Performer = args.User}; RaiseLocalEvent(ent, ref endEv); if (args.Cancelled || !_net.IsServer) @@ -160,7 +160,7 @@ public partial class CP14SharedMagicSystem : EntitySystem private void OnDelayedInstantActionDoAfter(Entity ent, ref CP14DelayedInstantActionDoAfterEvent args) { - var endEv = new CP14EndCastMagicEffectEvent(); + var endEv = new CP14EndCastMagicEffectEvent{Performer = args.User}; RaiseLocalEvent(ent, ref endEv); if (args.Cancelled || !_net.IsServer) diff --git a/Content.Shared/_CP14/MagicSpell/Components/CP14MagicCasterSlowdownComponent.cs b/Content.Shared/_CP14/MagicSpell/Components/CP14MagicCasterSlowdownComponent.cs new file mode 100644 index 0000000000..1368c0fb37 --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Components/CP14MagicCasterSlowdownComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Shared._CP14.MagicSpell.Components; + +/// +/// imposes debuffs on excessive use of magic +/// +[RegisterComponent, Access(typeof(CP14SharedMagicSystem))] +public sealed partial class CP14MagicCasterSlowdownComponent : Component +{ + [DataField] + public List SpeedModifiers = new(); +} diff --git a/Content.Shared/_CP14/MagicSpell/Components/CP14MagicEffectCastSlowdownComponent.cs b/Content.Shared/_CP14/MagicSpell/Components/CP14MagicEffectCastSlowdownComponent.cs new file mode 100644 index 0000000000..1a1dee4a0c --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Components/CP14MagicEffectCastSlowdownComponent.cs @@ -0,0 +1,14 @@ +using Content.Shared._CP14.MagicSpell.Spells; +using Content.Shared.FixedPoint; + +namespace Content.Shared._CP14.MagicSpell.Components; + +/// +/// Slows the caster while using this spell +/// +[RegisterComponent, Access(typeof(CP14SharedMagicSystem))] +public sealed partial class CP14MagicEffectCastSlowdownComponent : Component +{ + [DataField] + public float SpeedMultiplier = 1f; +} diff --git a/Content.Shared/_CP14/MagicSpell/Events/CP14CastMagicEffectEvent.cs b/Content.Shared/_CP14/MagicSpell/Events/CP14CastMagicEffectEvent.cs index 3dd5a6d6d5..edbba839c3 100644 --- a/Content.Shared/_CP14/MagicSpell/Events/CP14CastMagicEffectEvent.cs +++ b/Content.Shared/_CP14/MagicSpell/Events/CP14CastMagicEffectEvent.cs @@ -36,6 +36,7 @@ public sealed class CP14StartCastMagicEffectEvent : EntityEventArgs [ByRefEvent] public sealed class CP14EndCastMagicEffectEvent : EntityEventArgs { + public EntityUid Performer { get; init; } } diff --git a/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageAccessWearingComponent.cs b/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageAccessWearingComponent.cs index d6fb440b74..e58a9bf7b7 100644 --- a/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageAccessWearingComponent.cs +++ b/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageAccessWearingComponent.cs @@ -1,7 +1,7 @@ namespace Content.Shared._CP14.MagicSpellStorage; /// -/// Denotes that this item's spells can be accessed while wearing it in your body +/// Denotes that this item's spells can be accessed while wearing it on your body /// [RegisterComponent, Access(typeof(CP14SpellStorageSystem))] public sealed partial class CP14SpellStorageAccessWearingComponent : Component diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/cure_wounds.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/cure_wounds.yml index 265e1d2dae..dad568f99c 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/cure_wounds.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/cure_wounds.yml @@ -3,6 +3,8 @@ name: Cure wounds description: You touch the creature, healing its body from physical damage components: + - type: CP14MagicEffectCastSlowdown + speedMultiplier: -0.5 - type: CP14MagicEffect manaCost: 20 telegraphyEffects: @@ -34,7 +36,6 @@ - type: CP14MagicEffectVerbalAspect startSpeech: "Et curabuntur..." endSpeech: "vulnera tua" - - type: CP14MagicEffectSomaticAspect - type: CP14MagicEffectCastingVisual proto: CP14RuneCureWounds - type: EntityWorldTargetAction @@ -42,6 +43,7 @@ components: - MobState useDelay: 10 + range: 7 itemIconStyle: BigAction interactOnMiss: false sound: !type:SoundPathSpecifier @@ -50,8 +52,9 @@ sprite: _CP14/Effects/Magic/spells_icons.rsi state: cure_wounds event: !type:CP14DelayedEntityWorldTargetActionEvent - delay: 2 - + delay: 3 + breakOnMove: false + - type: entity id: CP14RuneCureWounds parent: CP14BaseMagicRune diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/earth_wall.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/earth_wall.yml index 179ac17fca..f4b23135d3 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/earth_wall.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/earth_wall.yml @@ -3,6 +3,8 @@ name: Earth wall description: Raises a solid wall of earth from the bowels. components: + - type: CP14MagicEffectCastSlowdown + speedMultiplier: -0.9 - type: CP14MagicEffect manaCost: 15 telegraphyEffects: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/fireball.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/fireball.yml index d8545cfb6d..8c425e5a28 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/fireball.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/fireball.yml @@ -3,6 +3,8 @@ name: Fireball description: An effective method of destruction - an explosive fireball components: + - type: CP14MagicEffectCastSlowdown + speedMultiplier: -0.7 - type: CP14MagicEffect manaCost: 20 effects: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/ice_shards.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/ice_shards.yml index b14c2386a0..7fd0e4ffe6 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/ice_shards.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/ice_shards.yml @@ -3,6 +3,8 @@ name: Ice Shards description: Fast ice needles, for rapid shooting of targets. components: + - type: CP14MagicEffectCastSlowdown + speedMultiplier: -0.25 - type: CP14MagicEffect manaCost: 5 effects: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/shadow_step.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/shadow_step.yml index 740f82aa81..4c1cc49ad8 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/shadow_step.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/shadow_step.yml @@ -3,6 +3,8 @@ name: Shadow step description: A step through the gash of reality that allows you to cover a small of distance quickly components: + - type: CP14MagicEffectCastSlowdown + speedMultiplier: -0.4 - type: CP14MagicEffect manaCost: 20 telegraphyEffects: diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml index 948f4768d9..68cc2ba281 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Rings/ring.yml @@ -102,24 +102,6 @@ spells: - CP14ActionSpellFireball -- type: entity - id: CP14ClothingRingCureWounds - parent: CP14ClothingRingBase - name: cure wounds conductive ring - description: A standard mana-conductive ring that allows the user to heal physical injuries. - suffix: Cure Wounds - components: - - type: Sprite - layers: - - state: brass_ring - - state: emerald_stone_small - - type: CP14SpellStorageRequireAttune - - type: CP14MagicAttuningItem - - type: CP14SpellStorageAccessWearing - - type: CP14SpellStorage - spells: - - CP14ActionSpellCureWounds - - type: entity id: CP14ClothingRingShadowStep parent: CP14ClothingRingBase diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/spawners.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/spawners.yml index 9e931e9eef..4923d258ff 100644 --- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/spawners.yml +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/spawners.yml @@ -74,7 +74,7 @@ - id: CP14ClothingRingIceShards - id: CP14ClothingRingFlameCreation - id: CP14ClothingRingFireball - - id: CP14ClothingRingCureWounds + - id: CP14MagicHealingStaff - id: CP14ClothingRingShadowStep - id: CP14ClothingRingShadowGrab - id: CP14ClothingRingEarthWall diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml index 7221fcfea6..8b8adfdcec 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/monster.yml @@ -12,9 +12,9 @@ NavSmash: !type:Bool true VisionRadius: !type:Single - 10 + 16 AggroVisionRadius: !type:Single - 8 + 12 - type: NpcFactionMember factions: - CP14Monster @@ -47,10 +47,10 @@ - type: MobThresholds thresholds: 0: Alive - 80: Dead + 60: Dead - type: SlowOnDamage speedModifierThresholds: - 70: 0.8 + 40: 0.8 - type: Stamina critThreshold: 200 - type: CombatMode @@ -59,9 +59,8 @@ animation: WeaponArcBite damage: types: - Slash: 2 - Blunt: 4 - Piercing: 4 + Slash: 3 + Piercing: 3 Structural: 3 - type: MovementSpeedModifier baseWalkSpeed: 4 @@ -82,6 +81,7 @@ - type: Grammar attributes: gender: epicene + - type: CP14MagicCasterSlowdown - type: CP14MagicEnergyContainer magicAlert: CP14MagicEnergy maxEnergy: 100 @@ -100,6 +100,8 @@ name: Subterranean leap description: Make a subterranean leap, quickly approaching the victim. components: + - type: CP14MagicEffectCastSlowdown + speedMultiplier: -1.0 - type: CP14MagicEffect manaCost: 5 telegraphyEffects: @@ -108,15 +110,19 @@ - CP14ImpactEffectDigging effects: - !type:CP14SpellCasterTeleport + needVision: false + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectDigging - type: CP14MagicEffectCastingVisual proto: CP14ImpactEffectDigging - type: EntityWorldTargetAction - useDelay: 5 + useDelay: 8 range: 10 checkCanAccess: false itemIconStyle: BigAction sound: !type:SoundPathSpecifier - path: /Audio/Magic/rumble.ogg + path: /Audio/Effects/gib3.ogg icon: sprite: _CP14/Effects/Magic/spells_icons_monster.rsi state: subterranean_leap diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml index a59f93a7ba..64d1de87bd 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml @@ -207,6 +207,7 @@ - type: Tag tags: - FootstepSound + - type: CP14MagicCasterSlowdown - type: CP14MagicEnergyContainer magicAlert: CP14MagicEnergy maxEnergy: 100 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml new file mode 100644 index 0000000000..cd7acf2285 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml @@ -0,0 +1,46 @@ +- type: entity + id: CP14MagicHealingStaff + parent: + - BaseItem + - CP14BaseWeaponDestructible + name: magic healing staff + description: A long, half-tech, half-magic stick designed to convert magical energy into healing spells. + components: + - type: Item + size: Ginormous + - type: Sprite + sprite: _CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi + layers: + - state: icon + - type: Clothing + equipDelay: 1 + unequipDelay: 1 + sprite: _CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi + quickEquip: false + breakOnMove: false + slots: + - neck + - type: Wieldable + - type: IncreaseDamageOnWield + damage: + types: + Blunt: 3 + - type: MeleeWeapon + angle: 100 + attackRate: 1.3 + range: 1.3 + wideAnimationRotation: 135 + wideAnimation: CP14WeaponArcSlash + damage: + types: + Blunt: 2 + soundHit: + collection: MetalThud + cPAnimationLength: 0.3 + cPAnimationOffset: -1.3 + - type: CP14SpellStorageRequireAttune + - type: CP14MagicAttuningItem + - type: CP14SpellStorageAccessHolding + - type: CP14SpellStorage + spells: + - CP14ActionSpellCureWounds \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/battleHammer.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/battleHammer.yml index 084f0de737..c46bc213ce 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/battleHammer.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/battleHammer.yml @@ -18,7 +18,7 @@ quickEquip: false breakOnMove: false slots: - - back + - neck - type: MeleeWeapon angle: 120 attackRate: 0.7 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/battleStaff.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/battleStaff.yml index 1790edd613..4c09a8c8e0 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/battleStaff.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/battleStaff.yml @@ -7,10 +7,7 @@ description: an extremely simple and effective weapon - a long straight and heavy stick. components: - type: Item - size: Normal - storedRotation: 45 - shape: - - 0,0,0,3 + size: Ginormous - type: Sprite sprite: _CP14/Objects/Weapons/Melee/BattleStaff/battleStaff.rsi layers: @@ -22,7 +19,7 @@ quickEquip: false breakOnMove: false slots: - - back + - neck - type: Wieldable - type: IncreaseDamageOnWield damage: @@ -32,7 +29,7 @@ angle: 100 attackRate: 1.3 range: 1.3 - wideAnimationRotation: -30 + wideAnimationRotation: 135 wideAnimation: CP14WeaponArcSlash damage: types: @@ -40,6 +37,4 @@ soundHit: collection: MetalThud cPAnimationLength: 0.3 - cPAnimationOffset: -1.3 - - type: StaminaDamageOnHit - damage: 4 \ No newline at end of file + cPAnimationOffset: -1.3 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/lightHammer.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/lightHammer.yml index 6bc438086e..88cf8be33d 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/lightHammer.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/lightHammer.yml @@ -11,11 +11,20 @@ description: A small hammer. Good for carpentry work as well as for cracking skulls. components: - type: Item + size: Normal storedRotation: -45 - type: Sprite sprite: _CP14/Objects/Weapons/Melee/LightHammer/lightHammer.rsi layers: - state: icon + - type: Clothing + equipDelay: 0.25 + unequipDelay: 0.25 + #sprite: _CP14/Objects/Weapons/Melee/Dagger/dagger.rsi + quickEquip: false + breakOnMove: false + slots: + - belt - type: MeleeWeapon attackRate: 1.7 range: 1 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/mace.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/mace.yml index 1560beddb2..a6fa9a7a01 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/mace.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/mace.yml @@ -11,9 +11,9 @@ - type: Item size: Normal - type: Clothing - equipDelay: 0.25 - unequipDelay: 0.25 - sprite: _CP14/Objects/Weapons/Melee/Dagger/dagger.rsi + equipDelay: 0.35 + unequipDelay: 0.35 + sprite: _CP14/Objects/Weapons/Melee/Mace/mace.rsi quickEquip: false breakOnMove: false slots: diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/shield.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/shield.yml index 257025a282..a55d8853a8 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/shield.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/shield.yml @@ -38,7 +38,7 @@ quickEquip: false breakOnMove: false slots: - - back + - neck - type: MeleeWeapon angle: 0 range: 1.2 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/spear.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/spear.yml index c3ecabf46c..8acd0d1ec0 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/spear.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/spear.yml @@ -22,7 +22,7 @@ angle: 0 attackRate: 1.2 range: 1.2 - wideAnimationRotation: -115 + wideAnimationRotation: 135 wideAnimation: CP14WeaponArcThrust damage: types: diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/sword.yml index 0579af6028..fe4b737fc2 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/sword.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/sword.yml @@ -9,10 +9,7 @@ description: the gold standard of edged weapons. Medium length, comfortable grip. No frills. components: - type: Item - size: Normal - storedRotation: 45 - shape: - - 0,0,0,2 + size: Ginormous - type: Clothing equipDelay: 0.45 unequipDelay: 0.45 @@ -20,7 +17,7 @@ quickEquip: false breakOnMove: false slots: - - back + - neck - type: Sprite sprite: _CP14/Objects/Weapons/Melee/Sword/sword.rsi layers: @@ -28,7 +25,7 @@ - type: MeleeWeapon angle: 100 attackRate: 1.4 - wideAnimationRotation: 210 + wideAnimationRotation: 135 wideAnimation: CP14WeaponArcSlash cPAnimationLength: 0.18 damage: diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/twoHandedSword.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/twoHandedSword.yml index 9ce029b77d..e5404fee3b 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/twoHandedSword.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/twoHandedSword.yml @@ -18,7 +18,7 @@ quickEquip: false breakOnMove: false slots: - - back + - neck - type: MeleeWeapon angle: 120 attackRate: 0.7 diff --git a/Resources/Prototypes/_CP14/InventoryTemplates/human_inventory_template.yml b/Resources/Prototypes/_CP14/InventoryTemplates/human_inventory_template.yml index 22833731cd..b457c0e26e 100644 --- a/Resources/Prototypes/_CP14/InventoryTemplates/human_inventory_template.yml +++ b/Resources/Prototypes/_CP14/InventoryTemplates/human_inventory_template.yml @@ -10,12 +10,12 @@ strippingWindowPos: 0,3 dependsOn: pants displayName: Ring - - name: neck - slotTexture: neck - slotFlags: NECK + - name: mask + slotTexture: mask + slotFlags: MASK uiWindowPos: 0,2 strippingWindowPos: 1,2 - displayName: Neck + displayName: Mask - name: eyes slotTexture: eyes slotFlags: EYES @@ -66,12 +66,6 @@ uiWindowPos: 2,2 strippingWindowPos: 2,2 displayName: Cloak - - name: mask - slotTexture: mask - slotFlags: MASK - uiWindowPos: 2,3 - strippingWindowPos: 2,1 - displayName: Mask # Main hotbar - name: belt1 slotTexture: belt @@ -97,6 +91,14 @@ uiWindowPos: 0,0 strippingWindowPos: 0,5 displayName: Back + - name: neck + slotTexture: neck + slotFlags: NECK + slotGroup: SecondHotbar + uiWindowPos: 0,0 + strippingWindowPos: 1,2 + displayName: Neck + dependsOn: shirt # Right hand # Left hand - name: pocket1 diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml index cdf2f2e747..c0e9b3fa1d 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml @@ -290,7 +290,7 @@ minLimit: 0 maxLimit: 2 loadouts: - - CP14ClothingRingCureWounds + - CP14MagicHealingStaff - CP14ClothingRingManaGift - CP14EnergyCrystalSmall - CP14CrystalLampOrangeEmpty @@ -306,10 +306,10 @@ - CP14BasePickaxe - type: loadout - id: CP14ClothingRingCureWounds + id: CP14MagicHealingStaff storage: - back: - - CP14ClothingRingCureWounds + neck: + - CP14MagicHealingStaff - type: loadout id: CP14ClothingRingManaGift diff --git a/Resources/Textures/Interface/CrystallPunk/Slots/neck.png b/Resources/Textures/Interface/CrystallPunk/Slots/neck.png index 2b237395c6d6cabe3912f238a9875a09be00e363..fa3119a8a242a1b3632c10ed7477f2dba2d81d22 100644 GIT binary patch delta 357 zcmV-r0h<1Y1C0ZaF@Hx%L_t(oh0T}2k-{(xML!uPaY6-~7Sce5`yMH1E1)2bduM2X z7T5}w7%uEd9$A60NG#ZYiV~0iv*e6r;LTd_V7po0UDdAq&^c0dsVL7H1~PTHIW4_+x+^xX__QR=KzXa`zBBmsEsEFe@Fu!K;T zzzRYQUkR zL;&Z@6-`x|bj93*>wjF$I0TQUTudK{Z*+b+eY^euOoyKLs5Ll500000NkvXXu0mjf DP(7S( delta 351 zcmV-l0igbk1BU~UF@HfxL_t(oh1FNf4T3-reG&r;Rv<0V0P*h8f~>%TJbE`aU<+D- zvU<_eY-Sgb{YHJsCJb!my%{F(7Wgt|JlJhkFLOiF);OOoXxiF3Dc^rSU3$;A`=jDj z7rV{sb-3QFNkXt*E|iFwNnRCsQu6!bsfn2LheTcqk%YXH5`R^ZD-i%NH#ZS^CuLOf zQV5hnsJu;E1A8D-fuS@u%$ziw84p}Q714496+PGi8{$q%ZTSl6&A=4-*z2MDpY{wP zi$QJ*ap{D$fK>P&0k*A8HUp{PBw(rwuGKpWNC9U7V_op6-b+AicnRQNz0kkse|7-S zO-qP@`Hc?v_*j9c0$lt6fe)R}00uiEBKDnr%@LVM;fl?iRCLb~h1jbp40THraDO~e x6?qa@%sDuI<7mc3@Yv^IItD)I{BZhpya8{8q7F8T5pDng002ovPDHLkV1iC`oV5S| diff --git a/Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/equipped-NECK.png b/Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/equipped-NECK.png new file mode 100644 index 0000000000000000000000000000000000000000..ee1f46ecbb37b7747eccd28ccb00e5ca2eb1693a GIT binary patch literal 549 zcmV+=0^0qFP)Px$-$_J4RCt{2+A(XwKoke?*W%DYX*)SI(7_bqDqVt;N=YfwrIR1SAy7JX5=uu` zw`|SkAe0P+EE(#gi(p%j;;ceI>2jT}ltSU|;w8EGev?D)^7wm~MDqX;n@Xoa`jZk# zx{m+!CnZwpG`Q>AXFYH;Ipm!?b|N)01wfO%Hs1HR&k%!3r$K^g;pa2YSf&8{W((G{ zl|X6ncv$2B0AM{^f!}O#jb#cTa9kL7`6iCjU>HK(FT%Lng1~X*oW!%O)LsAq0NS-G zkyc|k>Jih>QyYM1Tf{VUVj4OLN4@RW>DiW?iMND)`{Af3Zxv*93*=Z2ym)+0n! zuNUz0!9R}qK}ZE}^9A>q%mnbc`~v;tIO#HyVH!HQyQvCYqcXDsL}36)7qBfN7eIgv z1+cT|Be3ZBonHaU2e1q`k;W?@z)}7n(s<o%xDlLRm30BGYuFfDL5A*2~|0Kc0g zXhT94Fb6=JBKX0-&G-00000NkvXXu0mjfjD+!i literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/icon.png b/Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..60b9a4aaa21249cdc16ecb2258ad6655beb60354 GIT binary patch literal 575 zcmV-F0>J%=P)Px$`AI}UR9J=0mcL6IVHn3h7erDxngj=jC>C>pYf7nzLtdOxDG{L*lw?bxe?o^q zbt)YK#r_F`gNrCQR1hR|>2eOz!9u;^S`Z@QAZhTxY;T8hN3^EqlJ^e3(>uKPen0p8 zc%K*UgQjb9^0S?h%ezxDYVR08+fML)=Mf@%$@1=$oUYA91`-2^n=RUQf_JrNi0mcB zrx!#8p?Qnk>qU8W(&E8Hf>)(q06hOX%8S)~t?Snc6!R8w^RM~UNsG--BkX@4K~zfA ztHn?w;RAeI`J#Cc03Vw}0PG#QVfyn=cCrXdSYMsZG?N+4o)Z@DhZb~NX-iIGmR`eyKY==%@K`J6P; zDN+x0s_XrC#y}xd0Wok6g=xq|kpbunB5)1dlw~{Gj`b6Om8IFhH8C*2O^9+n7YIV> zwc1aMD!^I;+b@E{gubgYf-C~fb#{s8B&#JIFa!_NQ! N002ovPDHLkV1i9C1oHp@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/inhand-left.png b/Resources/Textures/_CP14/Objects/Weapons/Magic/TwoHandedStaff/healing_staff.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..53acf6e6f3c0f7c60355928c58710e7fa3c3ea26 GIT binary patch literal 724 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 CrystallPunk migration zone end