diff --git a/Content.Client/Weapons/Melee/Components/WeaponArcVisualsComponent.cs b/Content.Client/Weapons/Melee/Components/WeaponArcVisualsComponent.cs
index d0f95f7069..eb8672965b 100644
--- a/Content.Client/Weapons/Melee/Components/WeaponArcVisualsComponent.cs
+++ b/Content.Client/Weapons/Melee/Components/WeaponArcVisualsComponent.cs
@@ -18,4 +18,6 @@ public enum WeaponArcAnimation : byte
None,
Thrust,
Slash,
+ //CrystallPunk Melee upgrade
+ CPSlashLight
}
diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs
index 0f2f98e764..7e9c5e94c3 100644
--- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs
+++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs
@@ -14,6 +14,8 @@ public sealed partial class MeleeWeaponSystem
private const string SlashAnimationKey = "melee-slash";
private const string ThrustAnimationKey = "melee-thrust";
+ private const string CPSlashLightAnimationKey = "cp-melee-slash-light"; //CrystallPunk Melee upgrade
+
///
/// Does all of the melee effects for a player that are predicted, i.e. character lunge and weapon animation.
///
@@ -42,6 +44,10 @@ public sealed partial class MeleeWeaponSystem
return;
}
+ var length = 1f; //CrystallPunk Melee upgrade
+ var scale = 1f; //CrystallPunk Melee upgrade
+ var offset = -1f; //CrystallPunk Melee upgrade
+
var spriteRotation = Angle.Zero;
if (arcComponent.Animation != WeaponArcAnimation.None
&& TryComp(weapon, out MeleeWeaponComponent? meleeWeaponComponent))
@@ -54,9 +60,14 @@ public sealed partial class MeleeWeaponSystem
if (meleeWeaponComponent.SwingLeft)
angle *= -1;
+
+ length = meleeWeaponComponent.CPAnimationLength; //CrystallPunk Melee upgrade
+ scale = meleeWeaponComponent.CPAnimationScale; //CrystallPunk Melee upgrade
+ offset = meleeWeaponComponent.CPAnimationOffset; //CrystallPunk Melee upgrade
}
sprite.NoRotation = true;
sprite.Rotation = localPos.ToWorldAngle();
+ sprite.Scale = new Vector2(scale); //CrystallPunk Melee upgrade
var distance = Math.Clamp(localPos.Length() / 2f, 0.2f, 1f);
var xform = _xformQuery.GetComponent(animationUid);
@@ -84,6 +95,15 @@ public sealed partial class MeleeWeaponSystem
if (arcComponent.Fadeout)
_animation.Play(animationUid, GetFadeAnimation(sprite, 0f, 0.15f), FadeAnimationKey);
break;
+ //CrystallPunk MeleeUpgrade
+ case WeaponArcAnimation.CPSlashLight:
+ _animation.Play(animationUid, CPGetSlashLightAnimation(sprite, angle, spriteRotation, length, offset), CPSlashLightAnimationKey);
+ TransformSystem.SetParent(animationUid, xform, user, userXform);
+ if (arcComponent.Fadeout)
+ _animation.Play(animationUid, GetFadeAnimation(sprite, length * 0.5f, length + 0.15f), FadeAnimationKey);
+
+ break;
+ //CrystallPunk MeleeUpgrade end
}
}
@@ -184,7 +204,7 @@ public sealed partial class MeleeWeaponSystem
///
private Animation GetLungeAnimation(Vector2 direction)
{
- const float length = 0.1f;
+ const float length = 0.2f; // 0.1 original, CrystallPunk update
return new Animation
{
@@ -198,11 +218,58 @@ public sealed partial class MeleeWeaponSystem
InterpolationMode = AnimationInterpolationMode.Linear,
KeyFrames =
{
- new AnimationTrackProperty.KeyFrame(direction.Normalized() * 0.15f, 0f),
+ new AnimationTrackProperty.KeyFrame(Vector2.Zero, 0f), //CrystallPunk MeleeUpgrade
+ new AnimationTrackProperty.KeyFrame(direction.Normalized() * 0.15f, length/2), //CrystallPunk MeleeUpgrade
new AnimationTrackProperty.KeyFrame(Vector2.Zero, length)
}
}
}
};
}
+
+ //CrystallPunk MeleeUpgrade start
+ private Animation CPGetSlashLightAnimation(SpriteComponent sprite, Angle arc, Angle spriteRotation, float length, float offset = -1f)
+ {
+ var startRotation = sprite.Rotation + (arc * 0.5f);
+ var endRotation = sprite.Rotation - (arc * 0.5f);
+
+ var startRotationOffset = startRotation.RotateVec(new Vector2(0f, offset));
+ var endRotationOffset = endRotation.RotateVec(new Vector2(0f, offset));
+
+ startRotation += spriteRotation;
+ endRotation += spriteRotation;
+ sprite.NoRotation = true;
+
+ return new Animation()
+ {
+ Length = TimeSpan.FromSeconds(length + 0.05f),
+ AnimationTracks =
+ {
+ new AnimationTrackComponentProperty()
+ {
+ ComponentType = typeof(SpriteComponent),
+ Property = nameof(SpriteComponent.Rotation),
+ KeyFrames =
+ {
+ new AnimationTrackProperty.KeyFrame(Angle.Lerp(startRotation,endRotation,0.0f), length * 0.0f),
+ new AnimationTrackProperty.KeyFrame(Angle.Lerp(startRotation,endRotation,1.0f), length * 0.6f),
+ new AnimationTrackProperty.KeyFrame(Angle.Lerp(startRotation,endRotation,0.8f), length * 1.0f),
+ }
+ },
+ new AnimationTrackComponentProperty()
+ {
+ ComponentType = typeof(SpriteComponent),
+ Property = nameof(SpriteComponent.Offset),
+ KeyFrames =
+ {
+ new AnimationTrackProperty.KeyFrame(Vector2.Lerp(startRotationOffset,endRotationOffset,0.0f), length * 0.0f),
+ new AnimationTrackProperty.KeyFrame(Vector2.Lerp(startRotationOffset,endRotationOffset,1.0f), length * 0.6f),
+ new AnimationTrackProperty.KeyFrame(Vector2.Lerp(startRotationOffset,endRotationOffset,0.8f), length * 1.0f),
+ }
+ },
+ }
+ };
+ }
+ //CrystallPunk MeleeUpgrade end
+
}
diff --git a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs
index 2027c2d2c6..29b25e73e3 100644
--- a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs
+++ b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs
@@ -114,11 +114,29 @@ public sealed partial class MeleeWeaponComponent : Component
public bool SwingLeft;
///
- /// CrystallPunk Melee improvment. Allows each attack to take turns being either left or right
+ /// CrystallPunk Melee upgrade. Allows each attack to take turns being either left or right
///
[DataField]
public bool CPSwingBeverage = true;
+ ///
+ /// CrystallPunk Melee upgrade. Modifier of wide attack animation speed
+ ///
+ [DataField]
+ public float CPAnimationLength = 0.5f;
+
+ ///
+ /// CrystallPunk Melee upgrade. Scale arc (for small knife ex.)
+ ///
+ [DataField]
+ public float CPAnimationScale = 1f;
+
+ ///
+ /// CrystallPunk Melee upgrade. how far away from the player the animation should be played.
+ ///
+ [DataField]
+ public float CPAnimationOffset = -1f;
+
// Sounds
///
diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs
index 8fe0dc6e59..6effb8b82f 100644
--- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs
+++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs
@@ -385,6 +385,11 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
var ev = new AttemptMeleeEvent();
RaiseLocalEvent(weaponUid, ref ev);
+ //CrystallPun melee improvment
+ if (weapon.CPSwingBeverage)
+ weapon.SwingLeft = !weapon.SwingLeft;
+ //CrystallPun melee improvment end
+
if (ev.Cancelled)
{
if (ev.Message != null)
@@ -428,11 +433,6 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
var attackEv = new MeleeAttackEvent(weaponUid);
RaiseLocalEvent(user, ref attackEv);
- //CrystallPun melee improvment
- if (weapon.CPSwingBeverage)
- weapon.SwingLeft = !weapon.SwingLeft;
- //CrystallPun melee improvment end
-
weapon.Attacking = true;
return true;
}
diff --git a/Resources/Prototypes/_CP14/Entities/Effects/weapon_arc.yml b/Resources/Prototypes/_CP14/Entities/Effects/weapon_arc.yml
new file mode 100644
index 0000000000..d9103eaf62
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Effects/weapon_arc.yml
@@ -0,0 +1,7 @@
+- type: entity
+ id: CPWeaponArcSlashLight
+ parent: WeaponArcStatic
+ noSpawn: true
+ components:
+ - type: WeaponArcVisuals
+ animation: CPSlashLight
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/base.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/base.yml
index 01e9806cef..a9b28c2539 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/base.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/base.yml
@@ -1,57 +1,62 @@
-# Simple melee weapons
-
-# Battle Staff
-# Mace
-# Stick
-# Dagger
-# Spear
-# Light Hammer
-# Throwing spear
-# Hand axe
-# Sickle
-
-# Military melee weapons
-
-# Halberd
-# Battle pick
-# Warhammer
-# Battle axe
-# Glaive
+- type: entity
+ id: CPBaseWeaponChemical
+ abstract: true
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ melee:
+ maxVol: 4
+ - type: MeleeChemicalInjector
+ solution: melee
+ - type: RefillableSolution
+ solution: melee
+ - type: InjectableSolution
+ solution: melee
+ - type: SolutionInjectOnEmbed
+ transferAmount: 2
+ solution: melee
+ - type: SolutionTransfer
+ maxTransferAmount: 2
- type: entity
- name: двуручный меч
+ id: CPBaseWeaponThrowable
abstract: true
- parent: BaseItem
- id: CPBaseTwoHandedSword
- description: Мощное оружие, требующее огромной силы и умения для эффективного использования.
- components:
- - type: Sharp
- - type: MeleeWeapon
- attackRate: 0.75
+ components:
+ - type: DamageOtherOnHit
damage:
types:
- Slash: 10
- Structural: 5
- soundHit:
- collection: MetalThud
- - type: Wieldable
- - type: IncreaseDamageOnWield
+ Piercing: 10
+ - type: DamageOnLand
damage:
types:
- Slash: 30
- Structural: 5
- - type: Item
- size: Ginormous
+ Piercing: 10
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape: !type:PolygonShape
+ vertices:
+ - -0.40,-0.30
+ - -0.30,-0.40
+ - 0.40,0.30
+ - 0.30,0.40
+ density: 10
+ mask:
+ - ItemMask
+ restitution: 0.3
+ friction: 0.2
+
+- type: entity
+ id: CPBaseWeaponLight
+ abstract: true
+ components:
+ - type: MeleeWeapon
+ resetOnHandSelected: false
+
+- type: entity
+ id: CPBaseWeaponShort
+ abstract: true
+ components:
+ - type: MeleeWeapon
+ range: 1.0 # 1.5 standart
+ cPAnimationOffset: -0.75
-# Long spear
-# Long sword
-# Whip
-# Short sword
-# Hammer
-# Morgenstern
-# Pika
-# Rapier
-# Axe
-# Scimitar
-# Trident
-# Chain
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/dagger.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/dagger.yml
new file mode 100644
index 0000000000..6b5060f1bf
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/dagger.yml
@@ -0,0 +1,34 @@
+- type: entity
+ name: кинжал
+ parent:
+ - BaseItem
+ - CPBaseWeaponChemical
+ - CPBaseWeaponThrowable
+ - CPBaseWeaponLight
+ - CPBaseWeaponShort
+ id: CPBaseDagger
+ description: Небольшое острое лезвие, сгодится и для ближнего боя, и как метательное оружие.
+ components:
+ - type: Item
+ storedRotation: -45
+ - type: Sprite
+ sprite: CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi
+ layers:
+ - state: icon
+ - type: Sharp
+ - type: MeleeWeapon
+ attackRate: 1.8
+ wideAnimationRotation: 225
+ wideAnimation: CPWeaponArcSlashLight
+ damage:
+ types:
+ Slash: 5
+ Piercing: 5
+ soundHit:
+ collection: MetalThud
+ cPAnimationLength: 0.15
+ - type: EmbeddableProjectile
+ offset: 0.15,0.15
+ removalTime: 1
+ - type: ThrowingAngle
+ angle: 225
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/handheldAxe.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/handheldAxe.yml
new file mode 100644
index 0000000000..a7d58e676f
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/handheldAxe.yml
@@ -0,0 +1,42 @@
+- type: entity
+ name: ручной топор
+ parent:
+ - BaseItem
+ - CPBaseWeaponChemical
+ - CPBaseWeaponThrowable
+ - CPBaseWeaponLight
+ id: CPBaseHandheldAxe
+ description: Небольшой, надежный топорик.
+ components:
+ - type: Item
+ size: Normal
+ - type: Sprite
+ sprite: CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi
+ layers:
+ - state: icon
+ - type: Sharp
+ - type: MeleeWeapon
+ attackRate: 1.4
+ range: 1.2
+ wideAnimationRotation: 225
+ wideAnimation: CPWeaponArcSlashLight
+ damage:
+ types:
+ Slash: 10
+ Piercing: 5
+ soundHit:
+ collection: MetalThud
+ cPAnimationLength: 0.25
+ - type: EmbeddableProjectile
+ offset: 0.15,0.15
+ removalTime: 1.5
+ - type: DamageOtherOnHit
+ damage:
+ types:
+ Slash: 5
+ Piercing: 5
+ - type: DamageOnLand
+ damage:
+ types:
+ Slash: 5
+ Piercing: 5
\ 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
new file mode 100644
index 0000000000..1d696d1eec
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/lightHammer.yml
@@ -0,0 +1,35 @@
+- type: entity
+ name: легкий молот
+ parent:
+ - BaseItem
+ - CPBaseWeaponChemical
+ - CPBaseWeaponThrowable
+ - CPBaseWeaponLight
+ - CPBaseWeaponShort
+ id: CPBaseLightHammer
+ description: Небольшое молоток. Хорош как для плотнических работ, так и для проламывания черепов.
+ components:
+ - type: Item
+ storedRotation: -45
+ - type: Sprite
+ sprite: CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi
+ layers:
+ - state: icon
+ - type: MeleeWeapon
+ attackRate: 1.5
+ wideAnimationRotation: 225
+ wideAnimation: CPWeaponArcSlashLight
+ cPAnimationLength: 0.18
+ damage:
+ types:
+ Blunt: 10
+ soundHit:
+ collection: MetalThud
+ - type: DamageOtherOnHit
+ damage:
+ types:
+ Blunt: 10
+ - type: DamageOnLand
+ damage:
+ types:
+ Blunt: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/sickle.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/sickle.yml
new file mode 100644
index 0000000000..ae0bc6f099
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/sickle.yml
@@ -0,0 +1,27 @@
+- type: entity
+ name: серп
+ parent:
+ - BaseItem
+ - CPBaseWeaponChemical
+ - CPBaseWeaponLight
+ - CPBaseWeaponShort
+ id: CPBaseSickle
+ description: Изначально разработанное как оружие против травы, серп внезапно показал себя хорош и в более кровавой жатве.
+ components:
+ - type: Item
+ storedRotation: -45
+ - type: Sprite
+ sprite: CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi
+ layers:
+ - state: icon
+ - type: MeleeWeapon
+ attackRate: 1.5
+ wideAnimationRotation: 225
+ wideAnimation: CPWeaponArcSlashLight
+ cPAnimationLength: 0.18
+ damage:
+ types:
+ Slash: 8
+ Piercing: 4
+ soundHit:
+ collection: MetalThud
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/twoHandedSword.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/twoHandedSword.yml
index 4d50550d63..7525b3cdac 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/twoHandedSword.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/twoHandedSword.yml
@@ -1,17 +1,45 @@
-
- type: entity
- name: цвайхендер
- parent: CPBaseTwoHandedSword
- id: CPZweichender
+ name: двуручный меч #ToDo - сделать базовый двуручник
+ parent:
+ - BaseItem
+ - CPBaseWeaponChemical
+ id: CPBaseTwoHandedSword
+ description: Мощное оружие, требующее огромной силы и умения для эффективного использования.
components:
- - type: MeleeWeapon
- wideAnimationRotation: 225
- type: Sprite
- sprite: CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi
+ sprite: CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi
state: icon
- type: Clothing
- sprite: CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi
+ sprite: CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi
quickEquip: false
slots:
- back
- #TODO двуручный хват требует перчаток чтобы не получать урона самому
\ No newline at end of file
+ - type: Icon
+ sprite: CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword32.rsi
+ state: icon
+ - type: Sharp
+ - type: MeleeWeapon
+ attackRate: 0.5
+ wideAnimationRotation: 205
+ wideAnimation: CPWeaponArcSlashLight
+ damage:
+ types:
+ Slash: 5
+ Blunt: 3
+ Structural: 5
+ soundHit:
+ collection: MetalThud
+ cPAnimationLength: 0.8
+ - type: Wieldable
+ - type: IncreaseDamageOnWield
+ damage:
+ types:
+ Slash: 20
+ Blunt: 10
+ Structural: 5
+ - type: Item
+ size: Ginormous
+ - type: ClothingSpeedModifier
+ walkModifier: 0.9
+ sprintModifier: 0.8
+ - type: HeldSpeedModifier
\ No newline at end of file
diff --git a/Resources/Textures/CrystallPunk/Mobs/Species/Human/parts.rsi/l_foot.png b/Resources/Textures/CrystallPunk/Mobs/Species/Human/parts.rsi/l_foot.png
index de5511c6a4..e1281e4931 100644
Binary files a/Resources/Textures/CrystallPunk/Mobs/Species/Human/parts.rsi/l_foot.png and b/Resources/Textures/CrystallPunk/Mobs/Species/Human/parts.rsi/l_foot.png differ
diff --git a/Resources/Textures/CrystallPunk/Mobs/Species/Human/parts.rsi/r_foot.png b/Resources/Textures/CrystallPunk/Mobs/Species/Human/parts.rsi/r_foot.png
index 947a8d91f8..a3b7199ca6 100644
Binary files a/Resources/Textures/CrystallPunk/Mobs/Species/Human/parts.rsi/r_foot.png and b/Resources/Textures/CrystallPunk/Mobs/Species/Human/parts.rsi/r_foot.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/icon.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/icon.png
new file mode 100644
index 0000000000..c53ab373df
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/icon.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/inhand-left.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/inhand-left.png
new file mode 100644
index 0000000000..526f55eabb
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/inhand-left.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/inhand-right.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/inhand-right.png
new file mode 100644
index 0000000000..023ba93338
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/inhand-right.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/meta.json b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/meta.json
new file mode 100644
index 0000000000..b62fe4c329
--- /dev/null
+++ b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Dagger/dagger.rsi/meta.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "license": "CC-BY-NC-SA-3.0",
+ "copyright": "Created by TheShuEd (Discord) for CrystallPunk",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/icon.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/icon.png
new file mode 100644
index 0000000000..8cbe838387
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/icon.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/inhand-left.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/inhand-left.png
new file mode 100644
index 0000000000..0d18847339
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/inhand-left.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/inhand-right.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/inhand-right.png
new file mode 100644
index 0000000000..51340b3d70
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/inhand-right.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/meta.json b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/meta.json
new file mode 100644
index 0000000000..b62fe4c329
--- /dev/null
+++ b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldAxe/handheldAxe.rsi/meta.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "license": "CC-BY-NC-SA-3.0",
+ "copyright": "Created by TheShuEd (Discord) for CrystallPunk",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/icon.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/icon.png
new file mode 100644
index 0000000000..9dab7db813
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/icon.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/inhand-left.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/inhand-left.png
new file mode 100644
index 0000000000..94354796ab
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/inhand-left.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/inhand-right.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/inhand-right.png
new file mode 100644
index 0000000000..a8b0fecf1f
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/inhand-right.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/meta.json b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/meta.json
new file mode 100644
index 0000000000..b62fe4c329
--- /dev/null
+++ b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/HandheldSpear/handheldSpear.rsi/meta.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "license": "CC-BY-NC-SA-3.0",
+ "copyright": "Created by TheShuEd (Discord) for CrystallPunk",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/icon.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/icon.png
new file mode 100644
index 0000000000..fb47e9ba92
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/icon.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/inhand-left.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/inhand-left.png
new file mode 100644
index 0000000000..6ae6bd6ed4
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/inhand-left.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/inhand-right.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/inhand-right.png
new file mode 100644
index 0000000000..da084c186d
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/inhand-right.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/meta.json b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/meta.json
new file mode 100644
index 0000000000..c3fe6dd6e0
--- /dev/null
+++ b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/LightHammer/lightHammer.rsi/meta.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "license": "CC-BY-NC-SA-3.0",
+ "copyright": "Created by link (Discord) for CrystallPunk",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/icon.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/icon.png
new file mode 100644
index 0000000000..bb5755a9c6
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/icon.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/inhand-left.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/inhand-left.png
new file mode 100644
index 0000000000..cd4df08595
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/inhand-left.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/inhand-right.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/inhand-right.png
new file mode 100644
index 0000000000..0e8509ed9a
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/inhand-right.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/meta.json b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/meta.json
new file mode 100644
index 0000000000..8f4fcd67c9
--- /dev/null
+++ b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/Sickle/sickle.rsi/meta.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "license": "CC-BY-NC-SA-3.0",
+ "copyright": "Created by TheShuEd (Github) for CrystallPunk",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/equipped-BACKPACK.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/equipped-BACKPACK.png
new file mode 100644
index 0000000000..0c048cd8c7
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/equipped-BACKPACK.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/icon.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/icon.png
new file mode 100644
index 0000000000..a10c29efc0
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/icon.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/inhand-left.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/inhand-left.png
new file mode 100644
index 0000000000..ca04c44c6a
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/inhand-left.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/inhand-right.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/inhand-right.png
new file mode 100644
index 0000000000..6fba8caf2d
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/inhand-right.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/meta.json b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/meta.json
new file mode 100644
index 0000000000..b15d485d5d
--- /dev/null
+++ b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/meta.json
@@ -0,0 +1,34 @@
+{
+ "version": 1,
+ "license": "CC-BY-NC-SA-3.0",
+ "copyright": "Created by TheShuEd (Github) for CrystallPunk",
+ "size": {
+ "x": 48,
+ "y": 48
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "equipped-BACKPACK",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/wielded-inhand-left.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/wielded-inhand-left.png
new file mode 100644
index 0000000000..7ff45246f3
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/wielded-inhand-left.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/wielded-inhand-right.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/wielded-inhand-right.png
new file mode 100644
index 0000000000..02d29ae95d
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword.rsi/wielded-inhand-right.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword32.rsi/icon.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword32.rsi/icon.png
new file mode 100644
index 0000000000..0204d4beef
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword32.rsi/icon.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword32.rsi/meta.json b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword32.rsi/meta.json
new file mode 100644
index 0000000000..cf7a267982
--- /dev/null
+++ b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/twoHandedSword32.rsi/meta.json
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "license": "CC-BY-NC-SA-3.0",
+ "copyright": "Created by TheShuEd (Github) for CrystallPunk",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ }
+ ]
+}
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/equipped-BACKPACK.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/equipped-BACKPACK.png
similarity index 100%
rename from Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/equipped-BACKPACK.png
rename to Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/equipped-BACKPACK.png
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/icon.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/icon.png
similarity index 100%
rename from Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/icon.png
rename to Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/icon.png
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/inhand-left.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/inhand-left.png
similarity index 100%
rename from Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/inhand-left.png
rename to Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/inhand-left.png
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/inhand-right.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/inhand-right.png
similarity index 100%
rename from Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/inhand-right.png
rename to Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/inhand-right.png
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/meta.json b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/meta.json
similarity index 100%
rename from Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/meta.json
rename to Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/meta.json
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/wielded-inhand-left.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/wielded-inhand-left.png
new file mode 100644
index 0000000000..eb2049dd5c
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/wielded-inhand-left.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/wielded-inhand-right.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/wielded-inhand-right.png
new file mode 100644
index 0000000000..3472f931e3
Binary files /dev/null and b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/TwoHandedSword/zweichhender.rsi/wielded-inhand-right.png differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/wielded-inhand-left.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/wielded-inhand-left.png
deleted file mode 100644
index 3047bb47cc..0000000000
Binary files a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/wielded-inhand-left.png and /dev/null differ
diff --git a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/wielded-inhand-right.png b/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/wielded-inhand-right.png
deleted file mode 100644
index 91c02785e5..0000000000
Binary files a/Resources/Textures/CrystallPunk/Objects/Weapons/Melee/zweichhender.rsi/wielded-inhand-right.png and /dev/null differ