]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Change wide swing sprites to be that of the weapon used (#21050)
authorI.K <45953835+notquitehadouken@users.noreply.github.com>
Wed, 18 Oct 2023 01:12:00 +0000 (20:12 -0500)
committerGitHub <noreply@github.com>
Wed, 18 Oct 2023 01:12:00 +0000 (12:12 +1100)
Co-authored-by: notquitehadouken <1isthisameme>
53 files changed:
Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs
Content.Client/Weapons/Melee/MeleeWeaponSystem.cs
Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs
Content.Server/Weapons/Melee/MeleeWeaponSystem.cs
Content.Shared/Weapons/Melee/Events/MeleeLungeEvent.cs
Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs
Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs
Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml
Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml
Resources/Prototypes/Entities/Mobs/NPCs/carp.yml
Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml
Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml
Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml
Resources/Prototypes/Entities/Mobs/NPCs/pets.yml
Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
Resources/Prototypes/Entities/Mobs/NPCs/space.yml
Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml
Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
Resources/Prototypes/Entities/Mobs/Player/dragon.yml
Resources/Prototypes/Entities/Mobs/Player/familiars.yml
Resources/Prototypes/Entities/Mobs/Player/guardian.yml
Resources/Prototypes/Entities/Mobs/Species/base.yml
Resources/Prototypes/Entities/Mobs/Species/reptilian.yml
Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_string.yml
Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml
Resources/Prototypes/Entities/Objects/Fun/puppet.yml
Resources/Prototypes/Entities/Objects/Fun/toys.yml
Resources/Prototypes/Entities/Objects/Misc/books.yml
Resources/Prototypes/Entities/Objects/Misc/desk_bell.yml
Resources/Prototypes/Entities/Objects/Misc/fire_extinguisher.yml
Resources/Prototypes/Entities/Objects/Misc/paper.yml
Resources/Prototypes/Entities/Objects/Misc/utensils.yml
Resources/Prototypes/Entities/Objects/Tools/tools.yml
Resources/Prototypes/Entities/Objects/Tools/welders.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/gohei.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/needle.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/pickaxe.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/weapon_toolbox.yml
Resources/Prototypes/Entities/Objects/Weapons/Melee/white_cane.yml
Resources/Prototypes/Entities/Objects/Weapons/security.yml

index 79a6529a4dde7515118a7d7ed2b21c664867e1c4..0dd207fbb191407530a2f4c73c7e44152ca1eca1 100644 (file)
@@ -1,5 +1,6 @@
 using System.Numerics;
 using Content.Client.Weapons.Melee.Components;
+using Content.Shared.Weapons.Melee;
 using Robust.Client.Animations;
 using Robust.Client.GameObjects;
 using Robust.Shared.Animations;
@@ -16,7 +17,7 @@ public sealed partial class MeleeWeaponSystem
     /// <summary>
     /// Does all of the melee effects for a player that are predicted, i.e. character lunge and weapon animation.
     /// </summary>
-    public override void DoLunge(EntityUid user, Angle angle, Vector2 localPos, string? animation, bool predicted = true)
+    public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vector2 localPos, string? animation, bool predicted = true)
     {
         if (!Timing.IsFirstTimePredicted)
             return;
@@ -41,6 +42,19 @@ public sealed partial class MeleeWeaponSystem
             return;
         }
 
+        var spriteRotation = Angle.Zero;
+        if (arcComponent.Animation != WeaponArcAnimation.None
+            && TryComp(weapon, out MeleeWeaponComponent? meleeWeaponComponent))
+        {
+            if (user == weapon
+                && TryComp(weapon, out SpriteComponent? weaponSpriteComponent))
+                sprite.CopyFrom(weaponSpriteComponent);
+
+            spriteRotation = meleeWeaponComponent.WideAnimationRotation;
+
+            if (meleeWeaponComponent.SwingLeft)
+                angle *= -1;
+        }
         sprite.NoRotation = true;
         sprite.Rotation = localPos.ToWorldAngle();
         var distance = Math.Clamp(localPos.Length() / 2f, 0.2f, 1f);
@@ -50,13 +64,13 @@ public sealed partial class MeleeWeaponSystem
         switch (arcComponent.Animation)
         {
             case WeaponArcAnimation.Slash:
-                _animation.Play(animationUid, GetSlashAnimation(sprite, angle), SlashAnimationKey);
+                _animation.Play(animationUid, GetSlashAnimation(sprite, angle, spriteRotation), SlashAnimationKey);
                 TransformSystem.SetParent(animationUid, xform, user, userXform);
                 if (arcComponent.Fadeout)
                     _animation.Play(animationUid, GetFadeAnimation(sprite, 0.065f, 0.065f + 0.05f), FadeAnimationKey);
                 break;
             case WeaponArcAnimation.Thrust:
-                _animation.Play(animationUid, GetThrustAnimation(sprite, distance), ThrustAnimationKey);
+                _animation.Play(animationUid, GetThrustAnimation(sprite, distance, spriteRotation), ThrustAnimationKey);
                 TransformSystem.SetParent(animationUid, xform, user, userXform);
                 if (arcComponent.Fadeout)
                     _animation.Play(animationUid, GetFadeAnimation(sprite, 0.05f, 0.15f), FadeAnimationKey);
@@ -73,13 +87,17 @@ public sealed partial class MeleeWeaponSystem
         }
     }
 
-    private Animation GetSlashAnimation(SpriteComponent sprite, Angle arc)
+    private Animation GetSlashAnimation(SpriteComponent sprite, Angle arc, Angle spriteRotation)
     {
         const float slashStart = 0.03f;
         const float slashEnd = 0.065f;
         const float length = slashEnd + 0.05f;
-        var startRotation = sprite.Rotation - arc / 2;
-        var endRotation = sprite.Rotation + arc / 2;
+        var startRotation = sprite.Rotation + arc / 2;
+        var endRotation = sprite.Rotation - arc / 2;
+        var startRotationOffset = startRotation.RotateVec(new Vector2(0f, -1f));
+        var endRotationOffset = endRotation.RotateVec(new Vector2(0f, -1f));
+        startRotation += spriteRotation;
+        endRotation += spriteRotation;
         sprite.NoRotation = true;
 
         return new Animation()
@@ -104,19 +122,21 @@ public sealed partial class MeleeWeaponSystem
                     Property = nameof(SpriteComponent.Offset),
                     KeyFrames =
                     {
-                        new AnimationTrackProperty.KeyFrame(startRotation.RotateVec(new Vector2(0f, -1f)), 0f),
-                        new AnimationTrackProperty.KeyFrame(startRotation.RotateVec(new Vector2(0f, -1f)), slashStart),
-                        new AnimationTrackProperty.KeyFrame(endRotation.RotateVec(new Vector2(0f, -1f)), slashEnd)
+                        new AnimationTrackProperty.KeyFrame(startRotationOffset, 0f),
+                        new AnimationTrackProperty.KeyFrame(startRotationOffset, slashStart),
+                        new AnimationTrackProperty.KeyFrame(endRotationOffset, slashEnd)
                     }
                 },
             }
         };
     }
 
-    private Animation GetThrustAnimation(SpriteComponent sprite, float distance)
+    private Animation GetThrustAnimation(SpriteComponent sprite, float distance, Angle spriteRotation)
     {
         const float thrustEnd = 0.05f;
         const float length = 0.15f;
+        var startOffset = sprite.Rotation.RotateVec(new Vector2(0f, -distance / 5f));
+        var endOffset = sprite.Rotation.RotateVec(new Vector2(0f, -distance));
 
         return new Animation()
         {
@@ -129,9 +149,9 @@ public sealed partial class MeleeWeaponSystem
                     Property = nameof(SpriteComponent.Offset),
                     KeyFrames =
                     {
-                        new AnimationTrackProperty.KeyFrame(sprite.Rotation.RotateVec(new Vector2(0f, -distance / 5f)), 0f),
-                        new AnimationTrackProperty.KeyFrame(sprite.Rotation.RotateVec(new Vector2(0f, -distance)), thrustEnd),
-                        new AnimationTrackProperty.KeyFrame(sprite.Rotation.RotateVec(new Vector2(0f, -distance)), length),
+                        new AnimationTrackProperty.KeyFrame(startOffset, 0f),
+                        new AnimationTrackProperty.KeyFrame(endOffset, thrustEnd),
+                        new AnimationTrackProperty.KeyFrame(endOffset, length),
                     }
                 },
             }
index 36fe75fad7fcb952b35fabb7bcdce4cbe668db8f..397032cd1545559782148e8c1084062afaf78bf0 100644 (file)
@@ -17,8 +17,6 @@ using Robust.Shared.Input;
 using Robust.Shared.Map;
 using Robust.Shared.Player;
 using Robust.Shared.Players;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Timing;
 
 namespace Content.Client.Weapons.Melee;
 
@@ -235,9 +233,10 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem
     private void OnMeleeLunge(MeleeLungeEvent ev)
     {
         var ent = GetEntity(ev.Entity);
+        var entWeapon = GetEntity(ev.Weapon);
 
         // Entity might not have been sent by PVS.
-        if (Exists(ent))
-            DoLunge(ent, ev.Angle, ev.LocalPos, ev.Animation);
+        if (Exists(ent) && Exists(entWeapon))
+            DoLunge(ent, entWeapon, ev.Angle, ev.LocalPos, ev.Animation);
     }
 }
index bf54a18f1af7c7218cc0f990cd609060aea3745f..facc39f146180778551daa9f17b906a8c4c1cc29 100644 (file)
@@ -207,9 +207,6 @@ public sealed class AbsorbentSystem : SharedAbsorbentSystem
         _audio.PlayPvs(component.TransferSound, target);
         _useDelay.BeginDelay(used);
         return true;
-        _audio.PlayPvs(component.TransferSound, target);
-        _useDelay.BeginDelay(used);
-        return true;
     }
 
     /// <summary>
@@ -259,7 +256,7 @@ public sealed class AbsorbentSystem : SharedAbsorbentSystem
         var localPos = _transform.GetInvWorldMatrix(userXform).Transform(targetPos);
         localPos = userXform.LocalRotation.RotateVec(localPos);
 
-        _melee.DoLunge(user, Angle.Zero, localPos, null, false);
+        _melee.DoLunge(user, used, Angle.Zero, localPos, null, false);
 
         return true;
     }
index ab7831b2a484f8ac1640cb10a7c5e230a394768b..1b6b2ebef1cff3af73055547b73695d99279019d 100644 (file)
@@ -214,7 +214,7 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
         return Math.Clamp(chance, 0f, 1f);
     }
 
-    public override void DoLunge(EntityUid user, Angle angle, Vector2 localPos, string? animation, bool predicted = true)
+    public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vector2 localPos, string? animation, bool predicted = true)
     {
         Filter filter;
 
@@ -227,7 +227,7 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
             filter = Filter.Pvs(user, entityManager: EntityManager);
         }
 
-        RaiseNetworkEvent(new MeleeLungeEvent(GetNetEntity(user), angle, localPos, animation), filter);
+        RaiseNetworkEvent(new MeleeLungeEvent(GetNetEntity(user), GetNetEntity(weapon), angle, localPos, animation), filter);
     }
 
     private void OnSpeechHit(EntityUid owner, MeleeSpeechComponent comp, MeleeHitEvent args)
index 66acc213c1d9cab7724a71b23bd8c8b00185b7ca..72851dc80ca2e3d530948ff44c2e8351d27c3dae 100644 (file)
@@ -11,6 +11,11 @@ public sealed class MeleeLungeEvent : EntityEventArgs
 {
     public NetEntity Entity;
 
+    /// <summary>
+    /// The weapon used.
+    /// </summary>
+    public NetEntity Weapon;
+
     /// <summary>
     /// Width of the attack angle.
     /// </summary>
@@ -26,9 +31,10 @@ public sealed class MeleeLungeEvent : EntityEventArgs
     /// </summary>
     public string? Animation;
 
-    public MeleeLungeEvent(NetEntity entity, Angle angle, Vector2 localPos, string? animation)
+    public MeleeLungeEvent(NetEntity entity, NetEntity weapon, Angle angle, Vector2 localPos, string? animation)
     {
         Entity = entity;
+        Weapon = weapon;
         Angle = angle;
         LocalPos = localPos;
         Animation = animation;
index ddc060e558ba0dd692f88b8bd8e3f8d01586ecae..54db0b8c67feea3000212cfdd870771a115a5f2a 100644 (file)
@@ -96,6 +96,17 @@ public sealed partial class MeleeWeaponComponent : Component
     [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
     public EntProtoId WideAnimation = "WeaponArcSlash";
 
+    /// <summary>
+    /// Rotation of the animation.
+    /// 0 degrees means the top faces the attacker.
+    /// </summary>
+    [ViewVariables(VVAccess.ReadWrite), DataField]
+    public Angle WideAnimationRotation = Angle.Zero;
+
+    [ViewVariables(VVAccess.ReadWrite), DataField]
+    public bool SwingLeft;
+
+
     // Sounds
 
     /// <summary>
index 4259706ba867b593894e6e6f3120c5434f6726c5..4b740b8d3c73a2e8edfe56ec017557b60521a902 100644 (file)
@@ -423,7 +423,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
                     throw new NotImplementedException();
             }
 
-            DoLungeAnimation(user, weapon.Angle, GetCoordinates(attack.Coordinates).ToMap(EntityManager, TransformSystem), weapon.Range, animation);
+            DoLungeAnimation(user, weaponUid, weapon.Angle, GetCoordinates(attack.Coordinates).ToMap(EntityManager, TransformSystem), weapon.Range, animation);
         }
 
         var attackEv = new MeleeAttackEvent(weaponUid);
@@ -823,7 +823,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
         return true;
     }
 
-    private void DoLungeAnimation(EntityUid user, Angle angle, MapCoordinates coordinates, float length, string? animation)
+    private void DoLungeAnimation(EntityUid user, EntityUid weapon, Angle angle, MapCoordinates coordinates, float length, string? animation)
     {
         // TODO: Assert that offset eyes are still okay.
         if (!TryComp<TransformComponent>(user, out var userXform))
@@ -844,8 +844,8 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
         if (localPos.Length() > visualLength)
             localPos = localPos.Normalized() * visualLength;
 
-        DoLunge(user, angle, localPos, animation);
+        DoLunge(user, weapon, angle, localPos, animation);
     }
 
-    public abstract void DoLunge(EntityUid user, Angle angle, Vector2 localPos, string? animation, bool predicted = true);
+    public abstract void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vector2 localPos, string? animation, bool predicted = true);
 }
index 0077fddcfc4002ef7136e901242d68411ce13c62..adba78141cce4999eaee3c9e9205106916844d06 100644 (file)
@@ -1,6 +1,6 @@
 - type: entity
   name: bat
-  parent: [ SimpleMobBase, FlyingMobBase ]
+  parent: [ SimpleMobBase, FlyingMobBase, MobCombat ]
   id: MobBat
   description: Some cultures find them terrifying, others crunchy on the teeth.
   components:
@@ -51,7 +51,6 @@
   - type: ReplacementAccent
     accent: mouse
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Effects/bite.ogg
     angle: 0
 - type: entity
   name: bee
   suffix: Angry
-  parent: MobBee
+  parent: [ MobBee, MobCombat ]
   id: MobAngryBee
   description: How nice a bee. Oh no, it looks angry and wants my pizza.
   components:
   - type: CombatMode
   - type: MeleeWeapon
-    hidden: true
     angle: 0
     animation: WeaponArcBite
     damage:
 
 - type: entity
   name: gorilla
-  parent: SimpleMobBase
+  parent: [ SimpleMobBase, MobCombat ]
   id: MobGorilla
   description: Smashes, roars, looks cool. Don't stand near one.
   components:
 
 - type: entity
   name: kangaroo
-  parent: SimpleMobBase
+  parent: [ SimpleMobBase, MobCombat ]
   id: MobKangaroo
   description: A large marsupial herbivore. It has powerful hind legs, with nails that resemble long claws.
   components:
 
 - type: entity
   name: grenade penguin
-  parent: SimpleMobBase
+  parent: [ SimpleMobBase, MobCombat ]
   id: MobGrenadePenguin
   description: A small penguin with a grenade strapped around its neck. Harvested by the Syndicate from icy shit-hole planets.
   components:
     - id: FoodMeatPenguin
       amount: 3
   - type: MeleeWeapon
-    hidden: true
     angle: 0
     animation: WeaponArcBite
     damage:
 # random sprite state when you spawn it.
 - type: entity
   name: tarantula
-  parent: SimpleMobBase
+  parent: [ SimpleMobBase, MobCombat ]
   id: MobGiantSpider
   description: Widely recognized to be the literal worst thing in existence.
   components:
       0: Alive
       90: Dead
   - type: MeleeWeapon
-    hidden: true
     angle: 0
     animation: WeaponArcBite
     soundHit:
       - DoorBumpOpener
       - FootstepSound
     - type: MeleeWeapon
-      hidden: true
       angle: 0
       animation: WeaponArcBite
       soundHit:
 
 - type: entity
   name: corrupted corgi
-  parent: MobCorgi
+  parent: [ MobCorgi, MobCombat ]
   id: MobCorgiNarsi
   description: Ian! No!
   components:
       Dead:
         Base: narsian_dead
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Effects/bite.ogg
     angle: 0
 
 - type: entity
   name: hamster
-  parent: SimpleMobBase
+  parent: [ SimpleMobBase, MobCombat ]
   id: MobHamster
   description: A cute, fluffy, robust hamster.
   components:
         Blunt: 0.1
   - type: CombatMode
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Effects/bite.ogg
     angle: 0
index cde11bf222bf78af2517b932c9a91b2bebebb75d..4c36efa1773c4f528b1b5cf329363e9b6a8bb19b 100644 (file)
@@ -1,6 +1,6 @@
 - type: entity
   save: false
-  parent: BaseSimpleMob
+  parent: [ BaseSimpleMob, MobCombat ]
   id: BaseMobArgocyte
   suffix: AI
   description: A dangerous alien found on the wrong side of planets, known for their propensity for munching on ruins.
@@ -31,7 +31,6 @@
   - type: Insulated
   - type: CombatMode
   - type: MeleeWeapon
-    hidden: true
     angle: 0
     animation: WeaponArcBite
     damage:
index f833c2e8ed39171992942ad446f4c54b7d378b5b..3b3b9b4412037397177e2f511d86e19f78d21665 100644 (file)
@@ -1,6 +1,6 @@
 - type: entity
   name: behonker
-  parent: [ SimpleSpaceMobBase, FlyingMobBase ]
+  parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat ]
   id: BaseMobBehonker
   abstract: true
   description: A floating demon aspect of the honkmother.
@@ -96,7 +96,6 @@
         - id: WeaponBehonkerLaser
           amount: 1
     - type: MeleeWeapon
-      hidden: true
       soundHit:
         path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
       damage:
index d2f597fe41c4c787918f0c6e0c0de212af3009ca..1f598dc10bca5fd33d01a56ec35b983ee46e39a2 100644 (file)
@@ -1,7 +1,7 @@
 - type: entity
   name: space carp
   id: BaseMobCarp
-  parent: [ SimpleSpaceMobBase, FlyingMobBase ]
+  parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat ]
   description: It's a space carp.
   abstract: true
   components:
@@ -56,7 +56,6 @@
           amount: 2
     - type: MeleeWeapon
       altDisarm: false
-      hidden: true
       angle: 0
       animation: WeaponArcBite
       soundHit:
index 666ded8ff35e4535c0624c6be470a8ee9c8b8ba4..8ab65c340ea73fd90f05593fb63f659734955d97 100644 (file)
@@ -76,7 +76,7 @@
   - type: ZombieImmune
 
 - type: entity
-  parent: MobElementalBase
+  parent: [ MobElementalBase, MobCombat ]
   id: MobQuartzCrab
   name: quartz crab
   description: An ore crab made from quartz.
@@ -88,7 +88,6 @@
     rootTask:
       task: SimpleHostileCompound
   - type: MeleeWeapon
-    hidden: true
     soundHit:
       path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
     damage:
         acts: [ "Destruction" ]
 
 - type: entity
-  parent: MobElementalBase
+  parent: [ MobElementalBase, MobCombat ]
   id: MobIronCrab
   name: ore crab
   description: An ore crab made from iron.
     rootTask:
       task: SimpleHostileCompound
   - type: MeleeWeapon
-    hidden: true
     soundHit:
       path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
     damage:
         acts: [ "Destruction" ]
 
 - type: entity
-  parent: MobElementalBase
+  parent: [ MobElementalBase, MobCombat ]
   id: MobUraniumCrab
   name: ore crab
   description: An ore crab made from uranium.
     rootTask:
       task: IdleCompound
   - type: MeleeWeapon
-    hidden: true
     soundHit:
       path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
     damage:
   name: Reagent slime
   id: ReagentSlime
   suffix: Water
-  parent: MobAdultSlimes
+  parent: [ MobAdultSlimes, MobCombat ]
   description: It consists of a liquid, and it wants to dissolve you in itself.
   components:
   - type: NpcFactionMember
     factions:
-    - SimpleHostile 
+    - SimpleHostile
   - type: Sprite
     drawdepth: Mobs
     sprite: Mobs/Aliens/elemental.rsi
     speedModifierThresholds:
       50: 0.4
   - type: Bloodstream
-    bloodReagent: Water 
+    bloodReagent: Water
     chemicalMaxVolume: 100
   - type: StatusEffects
     allowed:
       - map: [ "enum.DamageStateVisualLayers.Base" ]
         state: alive
         color: "#128e80"
-        
+
 - type: entity
   id: ReagentSlimeTHC
   parent: ReagentSlime
       - map: [ "enum.DamageStateVisualLayers.Base" ]
         state: alive
         color: "#808080"
-        
+
 - type: entity
   id: ReagentSlimeBicaridine
   parent: ReagentSlime
       - map: [ "enum.DamageStateVisualLayers.Base" ]
         state: alive
         color: "#FA00AF"
-     
+
 - type: entity
   id: ReagentSlimeOmnizine
   parent: ReagentSlime
     layers:
       - map: [ "enum.DamageStateVisualLayers.Base" ]
         state: alive
-        color: "#fcf7f9"
\ No newline at end of file
+        color: "#fcf7f9"
index 43c78c639eb189f219c9d55e79cae1d1d28cc82b..a09927619ce26cefa812c3a381baede4c3815636 100644 (file)
@@ -1,5 +1,5 @@
 - type: entity
-  parent: SimpleMobBase
+  parent: [ SimpleMobBase, MobCombat ]
   id: BaseMobFlesh
   name: aberrant flesh
   description: A shambling mass of flesh, animated through anomalous energy.
@@ -45,7 +45,6 @@
     bloodMaxVolume: 100
   - type: CombatMode
   - type: MeleeWeapon
-    hidden: true
     soundHit:
       path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
     angle: 0
@@ -73,7 +72,6 @@
       Dead:
         Base: dead
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
     angle: 0
       0: Alive
       50: Dead
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
     angle: 0
     baseWalkSpeed: 1.5
     baseSprintSpeed: 2.5
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
     angle: 0
index 9675321da07399682e2e2e351cdfcda9db460e9f..657ac466f846609cf1241b2e24b10f0495182ef3 100644 (file)
@@ -1,7 +1,7 @@
 - type: entity
   name: Mimic
   id: MobMimic
-  parent: SimpleMobBase
+  parent: [ SimpleMobBase, MobCombat ]
   description: Surprise. # When this gets a proper write this should use the object's actual description >:)
   components:
   - type: Tag
@@ -33,7 +33,6 @@
         - MachineLayer
   - type: AnimationPlayer
   - type: MeleeWeapon
-    hidden: true
     angle: 0
     animation: WeaponArcFist
     damage:
index 21cc305acdebac79d5dba63ac325f42edbc9f738..88d7cbaae29337f7498282ef2358cfb6f2b297f2 100644 (file)
       0: Alive
       150: Dead
   - type: MeleeWeapon
-    hidden: true
     angle: 0
     animation: WeaponArcBite
     soundHit:
index 557d602bff1b04bd6db3089e9028ee89720906d5..b3f09b999d93d005fb4ec01426f26d0cfc904f56 100644 (file)
@@ -1,7 +1,7 @@
 - type: entity
   name: Rat King
   id: MobRatKing
-  parent: SimpleMobBase
+  parent: [ SimpleMobBase, MobCombat ]
   description: He's da rat. He make da roolz.
   components:
   - type: CombatMode
@@ -45,7 +45,6 @@
       0: Alive
       200: Dead
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Weapons/Xeno/alien_claw_flesh1.ogg
     angle: 0
       0: Alive
       350: Dead
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Weapons/Xeno/alien_claw_flesh2.ogg
     angle: 0
 - type: entity
   name: Rat Servant
   id: MobRatServant
-  parent: SimpleMobBase
+  parent: [ SimpleMobBase, MobCombat ]
   description: He's da mini rat. He don't make da roolz.
   noSpawn: true #Must be configured to a King or the AI breaks.
   components:
   - type: Stamina
     critThreshold: 60
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Weapons/bladeslice.ogg
     angle: 0
index 4d56face9d1f404ab26152fe18a88cd63d92ce30..ad4626d989a0f229ff1c81e28058955ac536dfa1 100644 (file)
@@ -1,7 +1,7 @@
 - type: entity
   name: basic slime
   id: MobAdultSlimes
-  parent: SimpleMobBase
+  parent: [ SimpleMobBase, MobCombat ]
   abstract: true
   description: It looks so much like jelly. I wonder what it tastes like?
   components:
@@ -97,9 +97,7 @@
   - type: Body
     prototype: Slimes
     requiredLegs: 1
-  - type: CombatMode
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Weapons/punch3.ogg
     angle: 0
index 62366e0b1420b3aa04cb9c1371ad3f5a9bd9aebb..d784f5c162f207a96420d2d3b0011aea5c8cbb45 100644 (file)
@@ -46,7 +46,6 @@
     heatDamageThreshold: 500
     coldDamageThreshold: 0
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
     angle: 0
       state: glow
       shader: unshaded
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
     angle: 0
         layer:
         - MobLayer
   - type: MeleeWeapon
-    hidden: true
     soundHit:
       path: /Audio/Effects/bite.ogg
     angle: 0
index 08db5857447894a3f394221f7053a309d0f2a5b1..c1ac66705a3db0101c3464bca337a48339c79947 100644 (file)
@@ -59,7 +59,6 @@
     bloodMaxVolume: 50
   - type: CombatMode
   - type: MeleeWeapon
-    hidden: true
     soundHit:
         path: /Audio/Effects/bite.ogg
     angle: 0
index 9831d20e27a9cccce00ca9d762219ba21cd27762..1626a1bc81aee095c84bd4376e9d34e53c6bf560 100644 (file)
@@ -74,7 +74,6 @@
     bloodReagent: FluorosulfuricAcid
   - type: MeleeWeapon
     altDisarm: false
-    hidden: true
     angle: 0
     soundHit:
      collection: AlienClaw
       150: 0.7
   - type: MovementSpeedModifier
   - type: MeleeWeapon
-    hidden: true
     damage:
      groups:
        Brute: 12
   - type: MovementSpeedModifier
     baseSprintSpeed: 4
   - type: MeleeWeapon
-    hidden: true
     damage:
      groups:
        Brute: 10
   - type: MovementSpeedModifier
     baseSprintSpeed: 6.0
   - type: MeleeWeapon
-    hidden: true
     damage:
      groups:
        Brute: 5
     factions:
     - Xeno
   - type: MeleeWeapon
-    hidden: true
     angle: 0
     animation: WeaponArcBite
     damage:
index 368d1846925e8dc7e6ca66d2c2311c82d3147bb4..d188070b2690201df6d733c2785eaf59342388c2 100644 (file)
     soundPerceivedByOthers: false # A 75% chance for a loud roar would get old fast.
   - type: MeleeWeapon
     altDisarm: false
-    hidden: true
     soundHit:
       path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
     damage:
index 65a47987e9098fe50ae32621de9c758b0f098c8f..8a5c319d773c6f7738d05689b7c17e34e8adbcda 100644 (file)
@@ -46,7 +46,6 @@
     rules: ghost-role-information-cerberus-rules
   - type: GhostTakeoverAvailable
   - type: MeleeWeapon
-    hidden: true
     angle: 0
     animation: WeaponArcBite
     damage:
index 49c3175fc6bed7d1bf25b182004afa6b4b694b16..1e863aa80f8e6551e1b4a6fa88b603e693d68717 100644 (file)
           color: "#40a7d7"
           shader: unshaded
     - type: NpcFactionMember
-      factions: 
+      factions:
         - Syndicate
     - type: HTN
       rootTask:
           Burn: 3
     - type: InventorySlots
     - type: MeleeWeapon
-      hidden: true
       angle: 30
       animation: WeaponArcFist
       attackRate: 1.8
       nameSegments:
       - names_clown
     - type: NpcFactionMember
-      factions: 
+      factions:
         - Syndicate
     - type: HTN
       rootTask:
index 74c676eb68821cec8681d5059aabffb37ccb693e..55473daf157db4e58614b86edb972af64b2be6b9 100644 (file)
   - type: CombatMode
     canDisarm: true
   - type: MeleeWeapon
-    hidden: true
     soundHit:
       collection: Punch
     angle: 30
index 5a4518c7b5014380a48a883f63ccb89e39d446e1..7d5f3cdddc33ac2a2010b770df02c978ad912764 100644 (file)
@@ -40,7 +40,6 @@
     damageContainer: Biological
     damageModifierSet: Scale
   - type: MeleeWeapon
-    hidden: true
     soundHit:
       path: /Audio/Weapons/pierce.ogg
     angle: 30
index c29c482dfd0afdbf1fc69ac73b3375b10962a251..c71fecd91bae8c217bb94a91cadeb6fc35926c72 100644 (file)
@@ -83,6 +83,7 @@
     tags:
     - StringInstrument
   - type: MeleeWeapon
+    wideAnimationRotation: 45
     damage:
       types:
         Blunt: 6
     - back
     sprite: Objects/Fun/Instruments/guitar.rsi
   - type: Wieldable
-  - type: Damageable # Smash it! Does 20 damage a hit, but breaks after 1 hit. 
+  - type: Damageable # Smash it! Does 20 damage a hit, but breaks after 1 hit.
     damageContainer: Inorganic
   - type: Destructible
     thresholds:
       types:
         Blunt: 20
   - type: MeleeWeapon
+    wideAnimationRotation: 45
     damage:
       types:
         Blunt: 5
index 1a95cdd996298113ef366c9bb73d783fc84cf338..fc20f1a58dd229f108e22466b60c15acc372cf55 100644 (file)
@@ -32,6 +32,7 @@
     - Payload # yes, you can make re-usable prank grenades
     - BikeHorn
   - type: MeleeWeapon
+    wideAnimationRotation: 135
     soundHit:
       collection: BikeHorn
       params:
@@ -77,6 +78,7 @@
       params:
         variation: 0.246
   - type: MeleeWeapon
+    wideAnimationRotation: 135
     soundHit:
       collection: CluwneHorn
       params:
index 2757689a300b10b0623f0b4a01fa069f630249b6..c0649d0acfaa8c764420b007706a91a8c89c2a5c 100644 (file)
@@ -1,5 +1,5 @@
 - type: entity
-  parent: BaseItem
+  parent: [ BaseItem, MobCombat ]
   id: MrChips
   name: mr chips
   suffix: Dummy
@@ -23,7 +23,6 @@
     allowedStates:
       - Alive
   - type: MeleeWeapon
-    hidden: true
     soundHit:
       path: /Audio/Weapons/boxingpunch1.ogg
     angle: 30
index dfa4dbcc7b1c33d556db3c32bfa0869417f2a31f..491ae0037a3e67504332e6d322517f90a7c20cf9 100644 (file)
     sound:
       path: /Audio/Items/Toys/mousesqueek.ogg
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     soundHit:
       path: /Audio/Items/Toys/mousesqueek.ogg
 
     sound:
       path: /Audio/Items/Toys/weh.ogg
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     soundHit:
       path: /Audio/Items/Toys/weh.ogg
 
     sound:
       path: /Audio/Items/Toys/muffled_weh.ogg
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     soundHit:
       path: /Audio/Items/Toys/muffled_weh.ogg
 
       sound:
         path: /Audio/Items/Toys/toy_rustle.ogg
     - type: MeleeWeapon
+      wideAnimationRotation: 180
       soundHit:
         path: /Audio/Items/Toys/toy_rustle.ogg
     - type: SolutionContainerManager
     sound:
       path: /Audio/Effects/bite.ogg
   - type: MeleeWeapon
+    wideAnimationRotation: -90
     soundHit:
       path: /Audio/Effects/bite.ogg
     angle: 0
     sound:
       path: /Audio/Items/Toys/rattle.ogg
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     soundHit:
       path: /Audio/Items/Toys/rattle.ogg
 
     sound:
       path: /Audio/Items/Toys/mousesqueek.ogg
   - type: MeleeWeapon
+    wideAnimationRotation: -90
     soundHit:
       path: /Audio/Items/Toys/mousesqueek.ogg
   - type: Clothing
     sound:
       path: /Audio/Voice/Vox/shriek1.ogg
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     soundHit:
       path: /Audio/Voice/Vox/shriek1.ogg
 
     sound:
       path: /Audio/Weapons/Xeno/alien_spitacid.ogg
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     soundHit:
       path: /Audio/Weapons/Xeno/alien_spitacid.ogg
 
index 5bfcaef42d068eb77c608a9ea54e5ab04597a6d8..8bf992cb2fbe2daae9385cc9841755bc6146702b 100644 (file)
@@ -84,7 +84,7 @@
   id: BookChefGaming
   parent: BaseItem
   name: chef gaming
-  description: A book about cooking written by a gamer chef. 
+  description: A book about cooking written by a gamer chef.
   components:
   - type: Sprite
     sprite: Objects/Misc/books.rsi
   id: BookSecurity
   parent: BaseItem
   name: security 101
-  description: A book about security written by Nanotrasen. The book is stained with blood. It seems to have been used more as a weapon than reading material. 
+  description: A book about security written by Nanotrasen. The book is stained with blood. It seems to have been used more as a weapon than reading material.
   components:
   - type: Sprite
     sprite: Objects/Misc/books.rsi
     tags:
     - Book
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     damage:
       types:
         Blunt: 6
index 2c57cc105a88d7a9553b571c686d865c9d4c436b..12406f2890d8f8042028f6fe0fc8d7a2d768cb8b 100644 (file)
@@ -36,6 +36,7 @@
   - type: UseDelay
     delay: 0.5
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     soundHit:
       collection: DeskBell
       params:
index 66ab0ab7fb8e5784e75499f1cb50d090eee32064..a90f598a5dd83954b2ed327ae9a16d2aac252287 100644 (file)
@@ -37,6 +37,7 @@
   - type: FireExtinguisher
     hasSafety: true
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     damage:
       types:
         Blunt: 10
index 4493ec6190ebca306db698b8e5941c833b07f593..5b4e5e24bac512dfaba71cba04383165eb013228 100644 (file)
     state: overpriced_pen
   - type: ItemCooldown
   - type: MeleeWeapon
+    wideAnimationRotation: -45
     damage:
       types:
         Piercing: 15
         whitelist:
           tags:
             - Write
-        insertOnInteract: false 
+        insertOnInteract: false
   - type: Item
     sprite: Objects/Misc/clipboard.rsi
     size: 10
           tags:
           - Write
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     damage:
       types:
         Blunt: 6
index b180e7d6316d8eaeef6488decb6f300b2be410dc..5f2ce47ba13d4215040665eddaf0f661c9890309 100644 (file)
@@ -11,7 +11,7 @@
     tags:
     - Metal
   - type: SpaceGarbage
-  
+
 - type: entity
   parent: UtensilBase
   id: UtensilBasePlastic
@@ -42,6 +42,7 @@
     types:
     - Fork
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     attackRate: 1.5
     damage:
       types:
@@ -73,6 +74,7 @@
     types:
     - Spoon
   - type: MeleeWeapon
+    wideAnimationRotation: 180
     attackRate: 1.5
     damage:
       types:
index 9b133735353b489dde0eb3a57b8822f651f15a29..12a6ede23183e5a26bb1bca90b2e4c3da1267a70 100644 (file)
@@ -19,6 +19,7 @@
     - state: cutters-cutty-thingy
   - type: ItemCooldown
   - type: MeleeWeapon
+    wideAnimationRotation: -90
     damage:
       types:
         Piercing: 2
@@ -65,6 +66,7 @@
     sprite: Objects/Tools/screwdriver.rsi
   - type: ItemCooldown
   - type: MeleeWeapon
+    wideAnimationRotation: -90
     attackRate: 1
     damage:
       types:
     sprite: Objects/Tools/wrench.rsi
   - type: ItemCooldown
   - type: MeleeWeapon
+    wideAnimationRotation: 135
     attackRate: 1.5
     damage:
       types:
     size: 10
   - type: ItemCooldown
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Blunt: 8
   - type: StaticPrice
     price: 100
   - type: MeleeWeapon
+    wideAnimationRotation: -90
     attackRate: 1.5
     damage:
       types:
     state: icon
   - type: ItemCooldown
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Blunt: 14
     - Belt
   - type: ItemCooldown
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Blunt: 7
index 3a105a299475f4a8225f72f80acf18f3bec4670b..7c3de82d0ad62644dbbb942c5efee3a86834700b 100644 (file)
@@ -30,6 +30,7 @@
         shader: unshaded
   - type: ItemCooldown
   - type: MeleeWeapon
+    wideAnimationRotation: -90
     damage:
       types:
         Blunt: 5 #i mean... i GUESS you could use it like that
index 764683183d961634ba2a1fde46e3cc5e190aef73..9e9288c8d4a38a5ce3c0af9f0e9ec53d7bd9b953 100644 (file)
@@ -9,6 +9,7 @@
     sprite: Objects/Weapons/Melee/armblade.rsi\r
     state: icon\r
   - type: MeleeWeapon\r
+    wideAnimationRotation: 90\r
     attackRate: 0.75\r
     damage:\r
       types:\r
index 4cd71e723939f208578042139e688748b855251a..e244647a130840415c50995a5a8d2a5710f1f347 100644 (file)
@@ -8,6 +8,7 @@
     sprite: Objects/Weapons/Melee/baseball_bat.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Blunt: 10
index 387913715cf91cbace7cd8d294a56af7593e9f67..b0874bfaef15ea2dd032bd67f5da9b0c5b5752a9 100644 (file)
@@ -15,6 +15,7 @@
     sprite: Objects/Weapons/Melee/chainsaw.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Slash: 5
index 3061e29e11237de1bc9d32440015876f643a9fca..833614105d93dd077ecaf22c0a23d646b43969e8 100644 (file)
@@ -9,6 +9,7 @@
     sprite: Objects/Weapons/Melee/cult_dagger.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 1.5
     damage:
       types:
@@ -32,6 +33,7 @@
     sprite: Objects/Weapons/Melee/cult_blade.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 0.75
     damage:
       types:
@@ -58,6 +60,7 @@
     sprite: Objects/Weapons/Melee/cult_halberd.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 0.75
     damage:
       types:
index 5c5972d839b290096f9fd1b842be090ac9ee27cf..7cf02ad05cbb18d6ebbad9b968499bdc101381d6 100644 (file)
@@ -22,6 +22,7 @@
         shader: unshaded
         map: [ "blade" ]
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 1
     soundHit:
       path: /Audio/Weapons/eblade1.ogg
@@ -87,6 +88,7 @@
         shader: unshaded
         map: [ "blade" ]
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 1
     hidden: true
     damage:
             Blunt: -4.5
     litDisarmMalus: 0.7
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 1.5
     angle: 100
     soundHit:
index fcc2129a51f588b2566973c49164aca94b4591c3..62a983cd4dad1e03118ca9b88c1bc6d55e8ad2d1 100644 (file)
@@ -12,6 +12,8 @@
     sprite: Objects/Weapons/Melee/fireaxe.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -90
+    swingLeft: true
     attackRate: 0.75
     damage:
       types:
index 1fdb237f4a07fd8e8e71495c8add823d3a2ff0ba..9e673da49d028b10c11d205bf400f20004882fb7 100644 (file)
@@ -8,6 +8,7 @@
     sprite: Objects/Weapons/Melee/gohei.rsi
     state: gohei
   - type: MeleeWeapon
+    wideAnimationRotation: -150
     damage:
       types:
         Blunt: 3 #You'd be better off punching people
index 34fa0a53b81a4040ceb23bc3a7b1f011e7497d9f..bbd18927e1f220d540afff75591e7c30fd22b6fe 100644 (file)
@@ -12,6 +12,7 @@
       - Knife
   - type: ItemCooldown
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Slash: 12
@@ -59,6 +60,7 @@
     size: 4
     state: butch
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 1.5
     damage:
       types:
@@ -85,6 +87,7 @@
     size: 2
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 1.5
     damage:
       types:
index af073435bae8a36e0cb7ec8db7ecb31208a42fa5..f3bb0ceec91c3aa8a3e2d05a040a5a4048985b1b 100644 (file)
@@ -44,6 +44,7 @@
     capacity: 1
     count: 1
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Blunt: 8
@@ -73,6 +74,7 @@
     sprite: Objects/Weapons/Melee/crusher_dagger.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 1.5
     damage:
       types:
   - type: Sprite
     sprite: Objects/Weapons/Melee/crusher_glaive.rsi
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 1.25
   - type: Item
     size: 150
index cfe6c7b27376f2a4406eb48173d921ef72efc7e4..48b2d6ad2b83b9ad2995405e97f3bbbdd29149e4 100644 (file)
@@ -8,6 +8,7 @@
     sprite: Objects/Weapons/Melee/needle.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Piercing: 1
index 513e691395f7a654e54ff00b196042fc4d8183e1..8d04fd316b47f03fe0545bf94795fb4a8a67a94e 100644 (file)
@@ -12,6 +12,7 @@
     state: pickaxe
   - type: ItemCooldown
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       groups:
         Brute: 5
index 9127a92d51279a28982137fae53393113cb3ac27..f19b76b3e81a14dbd55dfdc0b72d4e5865ce6810 100644 (file)
@@ -34,6 +34,7 @@
       map: ["enum.SolutionContainerLayers.Fill"]
       visible: false
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Piercing: 12
   - type: Sprite
     sprite: Objects/Weapons/Melee/reinforced_spear.rsi
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Piercing: 15
   - type: Sprite
     sprite: Objects/Weapons/Melee/plasma_spear.rsi
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Piercing: 18
   - type: Sprite
     sprite: Objects/Weapons/Melee/uranium_spear.rsi
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Piercing: 10
index 8ecd97827c7d2e98df454a3c6dd96b571596015e..25c9cf6125796da13e734c03a703b08d6cbfd91c 100644 (file)
@@ -12,6 +12,7 @@
   - type: Stunbaton
     energyPerUse: 70
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Blunt: 9
@@ -44,4 +45,4 @@
     price: 100
   - type: Construction
     graph: makeshiftstunprod
-    node: msstunprod
\ No newline at end of file
+    node: msstunprod
index 2e733cf658a04b5bd600f3f3c36058faf3c0512b..23160f13ea778527cc216d71e6198898573e1bb6 100644 (file)
@@ -9,6 +9,7 @@
     sprite: Objects/Weapons/Melee/captain_sabre.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 1.5
     damage:
       types:
@@ -41,6 +42,7 @@
     sprite: Objects/Weapons/Melee/katana.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Slash: 25
@@ -61,6 +63,7 @@
     sprite: Objects/Weapons/Melee/energykatana.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -60
     damage:
       types:
         Slash: 30
@@ -95,6 +98,7 @@
     sprite: Objects/Weapons/Melee/machete.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Slash: 20
     sprite: Objects/Weapons/Melee/claymore.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 0.75
     damage:
       types:
     sprite: Objects/Weapons/Melee/cutlass.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Slash: 16
index 9eaf14cf9ab6a200924bdcd4eb2c7aa27334473d..b5f8590304453a55a24b886a06bb89ee3d570f71 100644 (file)
@@ -12,6 +12,7 @@
     size: 150
     sprite: Objects/Tools/Toolboxes/toolbox_red.rsi
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     attackRate: 1.5
     damage:
       types:
index f38c714c650b00ef524ce1411627102383fcc892..36ea58c11167d176c6675cab535d39c317001729 100644 (file)
@@ -11,6 +11,7 @@
     size: 15
     sprite: Objects/Weapons/Melee/white_cane.rsi
   - type: MeleeWeapon
+    wideAnimationRotation: 45
     damage:
       types:
         Blunt: 5
@@ -21,4 +22,3 @@
     damage:
       types:
         Blunt: 3
-    
\ No newline at end of file
index 616625c92500420129e443e18a465cbeb1eae11f..eafcc46815d6866ce7aca24bdd7e75e1627ca83b 100644 (file)
@@ -12,6 +12,7 @@
   - type: Stunbaton
     energyPerUse: 50
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Blunt: 7
@@ -74,6 +75,7 @@
     sprite: Objects/Weapons/Melee/truncheon.rsi
     state: icon
   - type: MeleeWeapon
+    wideAnimationRotation: -135
     damage:
       types:
         Blunt: 20
       maxCharges: 5
       charges: 5
     - type: MeleeWeapon
+      wideAnimationRotation: 180
       damage:
         types:
           Blunt: 0 # melee weapon to allow flashing individual targets