Chaplain stuff (#98)
* - add: Null rod. * - add: Only chaplain can use holy weapons. * - add: Chaplain is cult immune. * - fix: Fix component granting. * - add: Only chaplain can use null rod. * - add: Armaments beacon. * - add: Chaplain playtime requirement.
@@ -141,19 +141,25 @@ public sealed class InteractionOutlineSystem : EntitySystem
|
||||
var inRange = false;
|
||||
if (localPlayer.ControlledEntity != null && !Deleted(entityToClick))
|
||||
{
|
||||
inRange = _interactionSystem.InRangeUnobstructed(localPlayer.ControlledEntity.Value, entityToClick.Value);
|
||||
|
||||
// WD START
|
||||
if (_combatMode.IsInCombatMode(localPlayer.ControlledEntity) &&
|
||||
(_meleeWeapon.TryGetWeapon(localPlayer.ControlledEntity.Value, out _, out var weapon) ||
|
||||
TryComp(localPlayer.ControlledEntity, out weapon)))
|
||||
{
|
||||
inRange = _interactionSystem.InRangeUnobstructed(localPlayer.ControlledEntity.Value,
|
||||
entityToClick.Value, weapon.Range);
|
||||
|
||||
var mousePos = _eyeManager.ScreenToMap(_inputManager.MouseScreenPosition);
|
||||
var userPos = Transform(localPlayer.ControlledEntity.Value).MapPosition;
|
||||
|
||||
if (mousePos.MapId != userPos.MapId || (userPos.Position - mousePos.Position).Length() > weapon.Range)
|
||||
inRange = false;
|
||||
} // WD END
|
||||
}
|
||||
else
|
||||
{
|
||||
inRange = _interactionSystem.InRangeUnobstructed(localPlayer.ControlledEntity.Value, entityToClick.Value);
|
||||
}
|
||||
// WD END
|
||||
}
|
||||
|
||||
InteractionOutlineComponent? outline;
|
||||
|
||||
66
Content.Client/_White/Chaplain/ArmamentsBeaconBui.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
using Content.Client._White.UserInterface.Radial;
|
||||
using Content.Shared._White.Chaplain;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Client._White.Chaplain;
|
||||
|
||||
[UsedImplicitly]
|
||||
public sealed class ArmamentsBeaconBui : BoundUserInterface
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
private SpriteSystem _spriteSystem = default!;
|
||||
|
||||
private bool _selected;
|
||||
private RadialContainer? _armorSelector;
|
||||
|
||||
public ArmamentsBeaconBui(EntityUid owner, Enum uiKey) : base(owner, uiKey)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void Open()
|
||||
{
|
||||
base.Open();
|
||||
|
||||
_spriteSystem = _entityManager.EntitySysManager.GetEntitySystem<SpriteSystem>();
|
||||
var beacon = _entityManager.GetComponent<ArmamentsBeaconComponent>(Owner);
|
||||
|
||||
_armorSelector = new RadialContainer();
|
||||
|
||||
_armorSelector.Closed += () =>
|
||||
{
|
||||
if (_selected)
|
||||
return;
|
||||
|
||||
SendMessage(new ArmorSelectedEvent(-1));
|
||||
Close();
|
||||
};
|
||||
|
||||
for (var i = 0; i < beacon.Armor.Count; i++)
|
||||
{
|
||||
var armorPrototype = _prototypeManager.Index<EntityPrototype>(beacon.Armor[i]);
|
||||
var button = _armorSelector.AddButton(armorPrototype.Name,
|
||||
_spriteSystem.GetPrototypeIcon(armorPrototype).Default);
|
||||
|
||||
var index = i;
|
||||
button.Controller.OnPressed += _ =>
|
||||
{
|
||||
_selected = true;
|
||||
SendMessage(new ArmorSelectedEvent(index));
|
||||
_armorSelector.Close();
|
||||
Close();
|
||||
};
|
||||
}
|
||||
|
||||
_armorSelector.OpenAttachedLocalPlayer();
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
|
||||
_armorSelector?.Close();
|
||||
}
|
||||
}
|
||||
65
Content.Client/_White/Chaplain/NullRodBui.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
using Content.Client._White.UserInterface.Radial;
|
||||
using Content.Shared._White.Chaplain;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Client._White.Chaplain;
|
||||
|
||||
[UsedImplicitly]
|
||||
public sealed class NullRodBui : BoundUserInterface
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
private SpriteSystem _spriteSystem = default!;
|
||||
|
||||
private bool _selected;
|
||||
private RadialContainer? _weaponSelector;
|
||||
|
||||
public NullRodBui(EntityUid owner, Enum uiKey) : base(owner, uiKey)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void Open()
|
||||
{
|
||||
base.Open();
|
||||
|
||||
_spriteSystem = _entityManager.EntitySysManager.GetEntitySystem<SpriteSystem>();
|
||||
var nullRod = _entityManager.GetComponent<NullRodComponent>(Owner);
|
||||
|
||||
_weaponSelector = new RadialContainer();
|
||||
|
||||
_weaponSelector.Closed += () =>
|
||||
{
|
||||
if (_selected)
|
||||
return;
|
||||
|
||||
SendMessage(new WeaponSelectedEvent(string.Empty));
|
||||
Close();
|
||||
};
|
||||
|
||||
foreach (var weapon in nullRod.Weapons)
|
||||
{
|
||||
var weaponPrototype = _prototypeManager.Index<EntityPrototype>(weapon);
|
||||
var button = _weaponSelector.AddButton(weaponPrototype.Name,
|
||||
_spriteSystem.GetPrototypeIcon(weaponPrototype).Default);
|
||||
|
||||
button.Controller.OnPressed += _ =>
|
||||
{
|
||||
_selected = true;
|
||||
SendMessage(new WeaponSelectedEvent(weapon));
|
||||
_weaponSelector.Close();
|
||||
Close();
|
||||
};
|
||||
}
|
||||
|
||||
_weaponSelector.OpenAttachedLocalPlayer();
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
|
||||
_weaponSelector?.Close();
|
||||
}
|
||||
}
|
||||
39
Content.Server/_White/Chaplain/ArmamentsBeaconSystem.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using Content.Server.Hands.Systems;
|
||||
using Content.Server.Popups;
|
||||
using Content.Shared._White.Chaplain;
|
||||
using Content.Shared.Ghost;
|
||||
using Content.Shared.Inventory;
|
||||
|
||||
namespace Content.Server._White.Chaplain;
|
||||
|
||||
public sealed class ArmamentsBeaconSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly InventorySystem _inventorySystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<ArmamentsBeaconComponent, ArmorSelectedEvent>(OnArmorSelected);
|
||||
}
|
||||
|
||||
private void OnArmorSelected(Entity<ArmamentsBeaconComponent> ent, ref ArmorSelectedEvent args)
|
||||
{
|
||||
var entity = args.Session.AttachedEntity;
|
||||
var index = args.SelectedIndex;
|
||||
|
||||
if (index < 0 || index >= ent.Comp.Armor.Count || entity == null)
|
||||
return;
|
||||
|
||||
_inventorySystem.TryUnequip(entity.Value, "outerClothing", true);
|
||||
_inventorySystem.SpawnItemInSlot(entity.Value, "outerClothing", ent.Comp.Armor[index], silent: true);
|
||||
|
||||
if (index < ent.Comp.Helmets.Count && ent.Comp.Helmets[index] != null)
|
||||
{
|
||||
_inventorySystem.TryUnequip(entity.Value, "head", true);
|
||||
_inventorySystem.SpawnItemInSlot(entity.Value, "head", ent.Comp.Helmets[index]!.Value, silent: true);
|
||||
}
|
||||
|
||||
Del(ent);
|
||||
}
|
||||
}
|
||||
40
Content.Server/_White/Chaplain/NullRodSystem.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using Content.Server.Hands.Systems;
|
||||
using Content.Server.Popups;
|
||||
using Content.Shared._White.Chaplain;
|
||||
using Content.Shared.Ghost;
|
||||
|
||||
namespace Content.Server._White.Chaplain;
|
||||
|
||||
public sealed class NullRodSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly HandsSystem _hands = default!;
|
||||
[Dependency] private readonly PopupSystem _popup = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<NullRodComponent, WeaponSelectedEvent>(OnWeaponSelected);
|
||||
}
|
||||
|
||||
private void OnWeaponSelected(Entity<NullRodComponent> ent, ref WeaponSelectedEvent args)
|
||||
{
|
||||
var entity = args.Session.AttachedEntity;
|
||||
|
||||
if (args.SelectedWeapon == string.Empty || entity == null)
|
||||
return;
|
||||
|
||||
if (!HasComp<HolyComponent>(entity.Value) && !HasComp<GhostComponent>(entity.Value))
|
||||
{
|
||||
_popup.PopupEntity($"Вам не хватает веры, чтобы использовать {Name(ent)}", entity.Value, entity.Value);
|
||||
return;
|
||||
}
|
||||
|
||||
var weapon = Spawn(args.SelectedWeapon, Transform(entity.Value).Coordinates);
|
||||
EnsureComp<HolyWeaponComponent>(weapon);
|
||||
|
||||
Del(ent);
|
||||
|
||||
_hands.PickupOrDrop(entity.Value, weapon, true, false, false);
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,7 @@ using Robust.Shared.Configuration;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Random;
|
||||
using Content.Shared._White;
|
||||
using Content.Shared._White.Chaplain;
|
||||
using Content.Shared._White.Cult.Components;
|
||||
using Content.Shared.Mind;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
@@ -327,9 +328,10 @@ public sealed class CultRuleSystem : GameRuleSystem<CultRuleComponent>
|
||||
if (!_jobSystem.CanBeAntag(player))
|
||||
continue;
|
||||
|
||||
// Gulag
|
||||
// Gulag & chaplain
|
||||
if (!_mindSystem.TryGetMind(player, out _, out var mind) ||
|
||||
mind.OwnedEntity is not { } ownedEntity || HasComp<GulagBoundComponent>(ownedEntity))
|
||||
mind.OwnedEntity is not { } ownedEntity || HasComp<GulagBoundComponent>(ownedEntity) ||
|
||||
HasComp<HolyComponent>(ownedEntity))
|
||||
continue;
|
||||
|
||||
// Latejoin
|
||||
@@ -414,7 +416,7 @@ public sealed class CultRuleSystem : GameRuleSystem<CultRuleComponent>
|
||||
|
||||
if (!_mindSystem.TryGetMind(cultist, out var mindId, out var mind))
|
||||
{
|
||||
Log.Info("Failed getting mind for picked thief.");
|
||||
Log.Info("Failed getting mind for picked cultist.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ using Content.Server.Hands.Systems;
|
||||
using Content.Server.Weapons.Ranged.Systems;
|
||||
using Content.Server._White.Cult.GameRule;
|
||||
using Content.Server._White.Cult.Runes.Comps;
|
||||
using Content.Shared._White.Chaplain;
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Chemistry.Components.SolutionManager;
|
||||
using Content.Shared.Cuffs.Components;
|
||||
@@ -423,7 +424,8 @@ public sealed partial class CultSystem : EntitySystem
|
||||
var isTarget = mind!.Mind!.Value == targetMind?.Mind!.Value;
|
||||
|
||||
// Выполнение действия в зависимости от условий
|
||||
if (canBeConverted && !HasComp<MindShieldComponent>(victim.Value) && !isTarget)
|
||||
if (canBeConverted && !HasComp<HolyComponent>(victim.Value) &&
|
||||
!HasComp<MindShieldComponent>(victim.Value) && !isTarget)
|
||||
{
|
||||
result = Convert(uid, victim.Value, args.User, args.Cultists);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
using Content.Server.Doors.Systems;
|
||||
using Content.Shared._White.Chaplain;
|
||||
using Content.Shared.Doors;
|
||||
using Content.Shared.Humanoid;
|
||||
using Content.Shared.Stunnable;
|
||||
using Content.Shared._White.Cult;
|
||||
using Content.Shared.Doors.Components;
|
||||
using Content.Shared.Weapons.Melee.Events;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Physics.Systems;
|
||||
using CultistComponent = Content.Shared._White.Cult.Components.CultistComponent;
|
||||
|
||||
@@ -13,6 +18,7 @@ public sealed class RunicDoorSystem : EntitySystem
|
||||
[Dependency] private readonly DoorSystem _doorSystem = default!;
|
||||
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
||||
[Dependency] private readonly SharedStunSystem _stunSystem = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -20,6 +26,18 @@ public sealed class RunicDoorSystem : EntitySystem
|
||||
|
||||
SubscribeLocalEvent<RunicDoorComponent, BeforeDoorOpenedEvent>(OnBeforeDoorOpened);
|
||||
SubscribeLocalEvent<RunicDoorComponent, BeforeDoorClosedEvent>(OnBeforeDoorClosed);
|
||||
SubscribeLocalEvent<RunicDoorComponent, AttackedEvent>(OnGetAttacked);
|
||||
}
|
||||
|
||||
private void OnGetAttacked(Entity<RunicDoorComponent> ent, ref AttackedEvent args)
|
||||
{
|
||||
if (!HasComp<HolyWeaponComponent>(args.Used) || !TryComp<DoorComponent>(ent, out var doorComp) ||
|
||||
doorComp.State is not DoorState.Closed)
|
||||
return;
|
||||
|
||||
_audio.PlayPvs(new SoundPathSpecifier("/Audio/Magic/knock.ogg"), ent);
|
||||
|
||||
_doorSystem.StartOpening(ent, doorComp);
|
||||
}
|
||||
|
||||
private void OnBeforeDoorOpened(EntityUid uid, RunicDoorComponent component, BeforeDoorOpenedEvent args)
|
||||
@@ -61,7 +79,7 @@ public sealed class RunicDoorSystem : EntitySystem
|
||||
|
||||
_doorSystem.Deny(airlock);
|
||||
|
||||
if (!HasComp<HumanoidAppearanceComponent>(user))
|
||||
if (!HasComp<HumanoidAppearanceComponent>(user) || HasComp<HolyComponent>(user))
|
||||
return false;
|
||||
|
||||
var direction = Transform(user).MapPosition.Position - Transform(airlock).MapPosition.Position;
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace Content.Server._White.Other.MeleeBlockSystem;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class MeleeBlockComponent : Component
|
||||
{
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public float BlockChance = 0.4f;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Weapons.Melee.Events;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server._White.Other.MeleeBlockSystem;
|
||||
|
||||
public sealed class MeleeBlockSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<HandsComponent, MeleeBlockAttemptEvent>(OnBlockAttempt);
|
||||
}
|
||||
|
||||
private void OnBlockAttempt(Entity<HandsComponent> ent, ref MeleeBlockAttemptEvent args)
|
||||
{
|
||||
if (ent.Owner == args.Attacker ||
|
||||
!TryComp(ent.Comp.ActiveHandEntity, out MeleeBlockComponent? blockComponent) ||
|
||||
!_random.Prob(blockComponent.BlockChance))
|
||||
return;
|
||||
|
||||
args.Blocked = true;
|
||||
|
||||
_popupSystem.PopupEntity("заблокировал!", ent);
|
||||
|
||||
_audio.PlayPvs(new SoundPathSpecifier("/Audio/Weapons/block_metal1.ogg"), ent,
|
||||
AudioParams.Default.WithVariation(0.25f));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace Content.Server._White.Other.RandomDamageSystem;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class RandomDamageComponent : Component
|
||||
{
|
||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||
public float Max = 50f;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Damage.Prototypes;
|
||||
using Content.Shared.Weapons.Melee.Events;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server._White.Other.RandomDamageSystem;
|
||||
|
||||
public sealed class RandomDamageSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<RandomDamageComponent, MeleeHitEvent>(HandleHit);
|
||||
}
|
||||
|
||||
private void HandleHit(Entity<RandomDamageComponent> ent, ref MeleeHitEvent args)
|
||||
{
|
||||
var damage = _random.NextFloat() * ent.Comp.Max;
|
||||
args.BonusDamage = new DamageSpecifier(_prototypeManager.Index<DamageTypePrototype>("Slash"), damage);
|
||||
}
|
||||
}
|
||||
@@ -93,3 +93,8 @@ public record struct GetMeleeAttackRateEvent(EntityUid Weapon, float Rate, float
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public record struct GetHeavyDamageModifierEvent(EntityUid Weapon, FixedPoint2 DamageModifier, float Multipliers, EntityUid User);
|
||||
|
||||
// WD START
|
||||
[ByRefEvent]
|
||||
public record struct MeleeBlockAttemptEvent(EntityUid Attacker, bool Blocked = false);
|
||||
// WD END
|
||||
|
||||
@@ -60,10 +60,14 @@ public sealed partial class MeleeWeaponComponent : Component
|
||||
[ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public bool Attacking = false;
|
||||
|
||||
// WD
|
||||
// WD START
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField]
|
||||
public bool CanHeavyAttack = true;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField]
|
||||
public bool IgnoreResistances;
|
||||
// WD END
|
||||
|
||||
/// <summary>
|
||||
/// If true, attacks will be repeated automatically without requiring the mouse button to be lifted.
|
||||
/// </summary>
|
||||
|
||||
@@ -22,6 +22,7 @@ using Content.Shared.Weapons.Ranged.Components;
|
||||
using Content.Shared.Weapons.Ranged.Events;
|
||||
using Content.Shared.Weapons.Ranged.Systems;
|
||||
using Content.Shared._White;
|
||||
using Content.Shared._White.Chaplain;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Configuration;
|
||||
@@ -500,6 +501,13 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
|
||||
if (hitEvent.Handled)
|
||||
return;
|
||||
|
||||
// WD START
|
||||
var blockEvent = new MeleeBlockAttemptEvent(user);
|
||||
RaiseLocalEvent(target.Value, ref blockEvent);
|
||||
if (blockEvent.Blocked)
|
||||
return;
|
||||
// WD END
|
||||
|
||||
var targets = new List<EntityUid>(1)
|
||||
{
|
||||
target.Value
|
||||
@@ -519,7 +527,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
|
||||
RaiseLocalEvent(target.Value, attackedEvent);
|
||||
|
||||
var modifiedDamage = DamageSpecifier.ApplyModifierSets(damage + hitEvent.BonusDamage + attackedEvent.BonusDamage, hitEvent.ModifiersList);
|
||||
var damageResult = Damageable.TryChangeDamage(target, modifiedDamage, origin:user);
|
||||
var damageResult = Damageable.TryChangeDamage(target, modifiedDamage, component.IgnoreResistances, origin:user); // WD EDIT
|
||||
|
||||
if (damageResult != null && damageResult.Any())
|
||||
{
|
||||
@@ -658,11 +666,18 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
|
||||
if (!Blocker.CanAttack(user, entity, (weapon, component)))
|
||||
continue;
|
||||
|
||||
// WD START
|
||||
var blockEvent = new MeleeBlockAttemptEvent(user);
|
||||
RaiseLocalEvent(entity, ref blockEvent);
|
||||
if (blockEvent.Blocked)
|
||||
continue;
|
||||
// WD END
|
||||
|
||||
var attackedEvent = new AttackedEvent(meleeUid, user, GetCoordinates(ev.Coordinates));
|
||||
RaiseLocalEvent(entity, attackedEvent);
|
||||
var modifiedDamage = DamageSpecifier.ApplyModifierSets(damage + hitEvent.BonusDamage + attackedEvent.BonusDamage, hitEvent.ModifiersList);
|
||||
|
||||
var damageResult = Damageable.TryChangeDamage(entity, modifiedDamage, origin:user);
|
||||
var damageResult = Damageable.TryChangeDamage(entity, modifiedDamage, component.IgnoreResistances, origin:user); // WD EDIT
|
||||
|
||||
if (damageResult != null && damageResult.GetTotal() > FixedPoint2.Zero)
|
||||
{
|
||||
|
||||
13
Content.Shared/_White/Chaplain/ArmamentsBeaconComponent.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._White.Chaplain;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class ArmamentsBeaconComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public List<EntProtoId> Armor = new();
|
||||
|
||||
[DataField]
|
||||
public List<EntProtoId?> Helmets = new();
|
||||
}
|
||||
21
Content.Shared/_White/Chaplain/ArmamentsBeaconUi.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._White.Chaplain;
|
||||
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum SelectArmorUi
|
||||
{
|
||||
Key
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public class ArmorSelectedEvent : BoundUserInterfaceMessage
|
||||
{
|
||||
public int SelectedIndex;
|
||||
|
||||
public ArmorSelectedEvent(int index)
|
||||
{
|
||||
SelectedIndex = index;
|
||||
}
|
||||
}
|
||||
8
Content.Shared/_White/Chaplain/HolyComponent.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._White.Chaplain;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class HolyComponent : Component
|
||||
{
|
||||
}
|
||||
8
Content.Shared/_White/Chaplain/HolyWeaponComponent.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._White.Chaplain;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class HolyWeaponComponent : Component
|
||||
{
|
||||
}
|
||||
30
Content.Shared/_White/Chaplain/HolyWeaponSystem.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Ghost;
|
||||
using Content.Shared.Weapons.Melee.Events;
|
||||
|
||||
namespace Content.Shared._White.Chaplain;
|
||||
|
||||
public sealed class HolyWeaponSystem : EntitySystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<HolyWeaponComponent, ExaminedEvent>(OnExamined);
|
||||
SubscribeLocalEvent<HolyWeaponComponent, AttemptMeleeEvent>(OnMeleeAttempt);
|
||||
}
|
||||
|
||||
private void OnMeleeAttempt(Entity<HolyWeaponComponent> ent, ref AttemptMeleeEvent args)
|
||||
{
|
||||
if (HasComp<HolyComponent>(args.User) || HasComp<GhostComponent>(args.User))
|
||||
return;
|
||||
|
||||
args.Cancelled = true;
|
||||
args.Message = $"Вам не хватает веры, чтобы использовать {Name(ent)}";
|
||||
}
|
||||
|
||||
private void OnExamined(Entity<HolyWeaponComponent> ent, ref ExaminedEvent args)
|
||||
{
|
||||
args.PushMarkup("[color=lightblue]Данное оружие наделено священной силой.[/color]");
|
||||
}
|
||||
}
|
||||
10
Content.Shared/_White/Chaplain/NullRodComponent.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._White.Chaplain;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class NullRodComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public List<EntProtoId> Weapons = new();
|
||||
}
|
||||
20
Content.Shared/_White/Chaplain/NullRodUi.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._White.Chaplain;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum SelectWeaponUi
|
||||
{
|
||||
Key
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public class WeaponSelectedEvent : BoundUserInterfaceMessage
|
||||
{
|
||||
public string SelectedWeapon;
|
||||
|
||||
public WeaponSelectedEvent(string weapon)
|
||||
{
|
||||
SelectedWeapon = weapon;
|
||||
}
|
||||
}
|
||||
BIN
Resources/Audio/White/Items/hit/chainhit.ogg
Normal file
@@ -47,6 +47,10 @@
|
||||
maxVol: 300
|
||||
- type: UseDelay
|
||||
delay: 1
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Sawing
|
||||
speed: 0.5
|
||||
- type: Construction
|
||||
deconstructionTarget: null
|
||||
graph: ChainsawGraph
|
||||
|
||||
@@ -46,11 +46,11 @@
|
||||
wideAnimationRotation: -135
|
||||
damage:
|
||||
types:
|
||||
Slash: 20
|
||||
Slash: 24
|
||||
soundHit:
|
||||
path: /Audio/Weapons/bladeslice.ogg
|
||||
- type: Item
|
||||
size: Large
|
||||
size: Huge
|
||||
sprite: Objects/Weapons/Melee/katana.rsi
|
||||
- type: DisarmMalus
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
types:
|
||||
Slash: 30
|
||||
- type: Item
|
||||
size: Large
|
||||
size: Huge
|
||||
sprite: Objects/Weapons/Melee/energykatana.rsi
|
||||
- type: EnergyKatana
|
||||
- type: DashAbility
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
name: job-name-chaplain
|
||||
description: job-description-chaplain
|
||||
playTimeTracker: JobChaplain
|
||||
requirements:
|
||||
- !type:OverallPlaytimeRequirement
|
||||
time: 18000 #5 hrs
|
||||
startingGear: ChaplainGear
|
||||
icon: "JobIconChaplain"
|
||||
supervisors: job-supervisors-hop
|
||||
@@ -13,6 +16,7 @@
|
||||
- !type:AddComponentSpecial
|
||||
components:
|
||||
- type: BibleUser #Lets them heal with bibles
|
||||
- type: Holy
|
||||
|
||||
- type: startingGear
|
||||
id: ChaplainGear
|
||||
@@ -23,9 +27,12 @@
|
||||
shoes: ClothingShoesColorBlack
|
||||
id: ChaplainPDA
|
||||
ears: ClothingHeadsetService
|
||||
pocket1: ArmamentsBeacon
|
||||
underwearb: ClothingUnderwearBottomBoxersWhite # White-Underwear
|
||||
underweart: ClothingUnderwearTopBraWhite # White-Underwear
|
||||
underwearb: ClothingUnderwearBottomPantiesWhite # White-Underwear
|
||||
inhand:
|
||||
- NullRod
|
||||
innerClothingSkirt: ClothingUniformJumpskirtChaplain
|
||||
satchel: ClothingBackpackSatchelChaplainFilled
|
||||
duffelbag: ClothingBackpackDuffelChaplainFilled
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
- type: entity
|
||||
parent: ClothingHeadBase
|
||||
id: ClothingHeadHelmedTemplarArmored
|
||||
name: шлем крестоносца
|
||||
description: Деус Вульт!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Head/templar.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Head/templar.rsi
|
||||
- type: Armor
|
||||
modifiers:
|
||||
coefficients:
|
||||
Blunt: 0.8
|
||||
Slash: 0.8
|
||||
Piercing: 0.95
|
||||
- type: Tag
|
||||
tags:
|
||||
- HidesHair
|
||||
- WhitelistChameleon
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHeadHelmedTemplarArmored
|
||||
id: ClothingHeadHelmetClock
|
||||
name: забытый шлем
|
||||
description: У него непреклонный взгляд навечно забытого бога.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Head/clock.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Head/clock.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHeadHelmedTemplarArmored
|
||||
id: ClothingHeadHelmetCage
|
||||
name: клетка
|
||||
description: Клетка, сдерживающая желания личности, позволяющая увидеть нечестивый мир таким, какой он есть.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Head/cage.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Head/cage-equipped.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
- WhitelistChameleon
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHeadHelmedTemplarArmored
|
||||
id: ClothingHeadHelmetAncientChaplain
|
||||
name: древний шлем
|
||||
description: Никто не может пройти!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Head/ancient.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Head/ancient.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHeadHelmetCage
|
||||
id: ClothingHeadHelmetWitchHunter
|
||||
name: шляпа Охотника на Ведьм
|
||||
description: Эта изношенная шляпа часто применялась в свое время.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Head/witchhunter.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Head/witchhunter.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHeadHelmedTemplarArmored
|
||||
id: ClothingHeadHelmetAdept
|
||||
noSpawn: true
|
||||
name: капюшон адепта
|
||||
description: Еретично только тогда, когда это делают другие.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Head/adept.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Head/adept.rsi
|
||||
@@ -0,0 +1,77 @@
|
||||
- type: entity
|
||||
parent: ClothingOuterBaseLarge
|
||||
id: ClothingOuterArmorTemplar
|
||||
name: доспехи крестоносца
|
||||
description: Бог желает этого!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/OuterClothing/templar.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/OuterClothing/templar.rsi
|
||||
- type: Armor
|
||||
modifiers:
|
||||
coefficients:
|
||||
Blunt: 0.4
|
||||
Slash: 0.4
|
||||
Piercing: 0.9
|
||||
Heat: 0.5
|
||||
- type: ClothingSpeedModifier
|
||||
walkModifier: 1.0
|
||||
sprintModifier: 1.0
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterArmorTemplar
|
||||
id: ClothingOuterArmorClock
|
||||
name: забытая броня
|
||||
description: Звучит как шипение пара, тиканье шестерёнок и затихание. Похоже на мёртвую машину, пытающуюся жить.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/OuterClothing/clock.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/OuterClothing/clock.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterArmorTemplar
|
||||
id: ClothingOuterArmorStudent
|
||||
name: студенческая мантия
|
||||
description: Униформа древнего учебного заведения.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/OuterClothing/student.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/OuterClothing/student.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterArmorTemplar
|
||||
id: ClothingOuterArmorAncient
|
||||
name: древний доспех
|
||||
description: Защити сокровище...
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/OuterClothing/ancient.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/OuterClothing/ancient.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterArmorTemplar
|
||||
id: ClothingOuterArmorWitchHunter
|
||||
name: одеяние Охотника на Ведьм
|
||||
description: Это изношенное одеяние часто применялось в свое время.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/OuterClothing/witchhunter.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/OuterClothing/witchhunter.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterArmorTemplar
|
||||
id: ClothingOuterArmorAdept
|
||||
name: мантия адепта
|
||||
description: Идеальный наряд для сжигания неверных.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/OuterClothing/adept.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/OuterClothing/adept.rsi
|
||||
- type: ToggleableClothing
|
||||
clothingPrototype: ClothingHeadHelmetAdept
|
||||
@@ -0,0 +1,39 @@
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: ArmamentsBeacon
|
||||
name: радиомаяк вооружения
|
||||
description: Содержит набор вооружения для священника.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Devices/door_remote.rsi
|
||||
layers:
|
||||
- state: door_remotebase
|
||||
- state: door_remotelightscolour
|
||||
color: lightblue
|
||||
- state: door_remotescreencolour
|
||||
color: lightblue
|
||||
- type: Item
|
||||
storedRotation: -90
|
||||
- type: ActivatableUI
|
||||
key: enum.SelectArmorUi.Key
|
||||
inHandsOnly: true
|
||||
closeOnHandDeselect: true
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
- key: enum.SelectArmorUi.Key
|
||||
type: ArmamentsBeaconBui
|
||||
- type: ArmamentsBeacon
|
||||
armor:
|
||||
- ClothingOuterArmorTemplar
|
||||
- ClothingOuterArmorClock
|
||||
- ClothingOuterArmorStudent
|
||||
- ClothingOuterArmorAncient
|
||||
- ClothingOuterArmorWitchHunter
|
||||
- ClothingOuterArmorAdept
|
||||
helmets:
|
||||
- ClothingHeadHelmedTemplarArmored
|
||||
- ClothingHeadHelmetClock
|
||||
- ClothingHeadHelmetCage
|
||||
- ClothingHeadHelmetAncientChaplain
|
||||
- ClothingHeadHelmetWitchHunter
|
||||
- null
|
||||
@@ -0,0 +1,449 @@
|
||||
- type: entity
|
||||
name: жезл нулификации
|
||||
parent: BaseItem
|
||||
id: NullRod
|
||||
description: Жезл из чистого обсидиана. Само его присутствие разрушает и ослабляет "магические силы". Во всяком случае так написано в путеводителе.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/nullrod.rsi
|
||||
state: icon
|
||||
- type: MeleeWeapon
|
||||
damage:
|
||||
types:
|
||||
Blunt: 18
|
||||
- type: Item
|
||||
size: Normal
|
||||
sprite: White/Objects/Weapons/Chaplain/nullrod.rsi
|
||||
- type: Clothing
|
||||
quickEquip: false
|
||||
sprite: White/Objects/Weapons/Chaplain/nullrod.rsi
|
||||
slots:
|
||||
- belt
|
||||
- type: ActivatableUI
|
||||
key: enum.SelectWeaponUi.Key
|
||||
inHandsOnly: true
|
||||
closeOnHandDeselect: true
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
- key: enum.SelectWeaponUi.Key
|
||||
type: NullRodBui
|
||||
- type: NullRod
|
||||
weapons:
|
||||
- GodHand
|
||||
- HolyClaymore
|
||||
- Chainsword
|
||||
- SwordGlowing
|
||||
- HolyKatana
|
||||
- MultiverseBlade
|
||||
- VorpalScythe
|
||||
- HighFrequencyBlade
|
||||
- SpellBlade
|
||||
- PossessedBlade
|
||||
- ChainsawHand
|
||||
- HolyWhip
|
||||
- HolyStaff
|
||||
- UnholyPitchfork
|
||||
- WarHammer
|
||||
- HyperTool
|
||||
- type: HolyWeapon
|
||||
|
||||
- type: entity
|
||||
name: божья длань
|
||||
parent: BaseItem
|
||||
id: GodHand
|
||||
description: Эта рука сияет с потрясающей силой!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/godhand.rsi
|
||||
state: icon
|
||||
- type: MeleeWeapon
|
||||
soundHit:
|
||||
path: /Audio/Weapons/Guns/Hits/energy_meat1.ogg
|
||||
params:
|
||||
variation: 0.250
|
||||
volume: -10
|
||||
wideAnimationRotation: 180
|
||||
damage:
|
||||
types:
|
||||
Heat: 24
|
||||
- type: Item
|
||||
size: Normal
|
||||
sprite: White/Objects/Weapons/Chaplain/godhand.rsi
|
||||
- type: Unremoveable
|
||||
deleteOnDrop: true
|
||||
|
||||
- type: entity
|
||||
name: священный клеймор
|
||||
parent: Claymore
|
||||
id: HolyClaymore
|
||||
description: Оружие, подходящее для крестового похода!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/claymore.rsi
|
||||
- type: MeleeWeapon
|
||||
damage:
|
||||
types:
|
||||
Slash: 33
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/claymore.rsi
|
||||
slots:
|
||||
- back
|
||||
- belt
|
||||
- type: Item
|
||||
sprite: White/Objects/Weapons/Chaplain/claymore.rsi
|
||||
|
||||
- type: entity
|
||||
name: цепной меч
|
||||
parent: HolyClaymore
|
||||
id: Chainsword
|
||||
description: Не позволь еретику жить.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/chainsword.rsi
|
||||
- type: MeleeWeapon
|
||||
soundHit:
|
||||
path: /Audio/Weapons/chainsaw.ogg
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/chainsword.rsi
|
||||
- type: Item
|
||||
sprite: White/Objects/Weapons/Chaplain/chainsword.rsi
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Sawing
|
||||
speed: 0.5
|
||||
|
||||
- type: entity
|
||||
name: силовой меч
|
||||
parent: HolyClaymore
|
||||
id: SwordGlowing
|
||||
description: Клинок светится силой веры. Или, возможно, благодаря аккумулятору.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/forceweapon.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/forceweapon.rsi
|
||||
- type: PointLight
|
||||
radius: 4
|
||||
energy: 2
|
||||
color: lightblue
|
||||
- type: Item
|
||||
sprite: White/Objects/Weapons/Chaplain/forceweapon.rsi
|
||||
|
||||
- type: entity
|
||||
name: лезвие ханзо
|
||||
parent: Katana
|
||||
id: HolyKatana
|
||||
description: Способен прорезать святой клеймор.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/katana.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/katana.rsi
|
||||
slots:
|
||||
- back
|
||||
- belt
|
||||
- type: Item
|
||||
sprite: White/Objects/Weapons/Chaplain/katana.rsi
|
||||
|
||||
- type: entity
|
||||
name: внепространственный клинок
|
||||
parent: HolyKatana
|
||||
id: MultiverseBlade
|
||||
description: Будучи когда-то предвестником межпространственной войны, его острота сильно колеблется. Наносит от 1 до 50 урона.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/multiverse.rsi
|
||||
- type: MeleeWeapon
|
||||
damage:
|
||||
types:
|
||||
Slash: 1
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/multiverse.rsi
|
||||
slots:
|
||||
- back
|
||||
- type: Item
|
||||
sprite: White/Objects/Weapons/Chaplain/multiverse.rsi
|
||||
- type: RandomDamage
|
||||
|
||||
- type: entity
|
||||
name: коса жнеца
|
||||
parent: HolyClaymore
|
||||
id: VorpalScythe
|
||||
description: И жрец, и жнец, и на дуде игрец! Коса способна пробить броню противника.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/scythe.rsi
|
||||
- type: MeleeWeapon
|
||||
ignoreResistances: true
|
||||
damage:
|
||||
types:
|
||||
Slash: 27
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/scythe.rsi
|
||||
slots:
|
||||
- back
|
||||
- type: Item
|
||||
sprite: White/Objects/Weapons/Chaplain/scythe-inhands.rsi
|
||||
|
||||
- type: entity
|
||||
name: высокочастотный клинок
|
||||
parent: HolyKatana
|
||||
id: HighFrequencyBlade
|
||||
description: Клинок, способный отражать выстрелы.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/hfrequency.rsi
|
||||
- type: MeleeWeapon
|
||||
damage:
|
||||
types:
|
||||
Slash: 18
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/hfrequency.rsi
|
||||
slots:
|
||||
- back
|
||||
- type: Reflect
|
||||
reflectProb: 0.4
|
||||
- type: Item
|
||||
sprite: White/Objects/Weapons/Chaplain/hfrequency.rsi
|
||||
|
||||
- type: entity
|
||||
name: клинок заклинаний
|
||||
parent: HolyKatana
|
||||
id: SpellBlade
|
||||
description: Клинок, с шансом 20% наносящий критический удар.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/spellblade.rsi
|
||||
- type: MeleeWeapon
|
||||
wideAnimationRotation: 135
|
||||
damage:
|
||||
types:
|
||||
Slash: 18
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/spellblade.rsi
|
||||
slots:
|
||||
- back
|
||||
- type: Crit
|
||||
critChance: 20
|
||||
critMultiplier: 2.5
|
||||
- type: Item
|
||||
sprite: White/Objects/Weapons/Chaplain/spellblade.rsi
|
||||
|
||||
- type: entity
|
||||
name: одержимый клинок
|
||||
parent: HolyKatana
|
||||
id: PossessedBlade
|
||||
description: Когда на станции царит хаос, приятно иметь рядом друга.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/possessed.rsi
|
||||
- type: MeleeWeapon
|
||||
wideAnimationRotation: -45
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/possessed.rsi
|
||||
slots:
|
||||
- back
|
||||
- type: GhostRole
|
||||
allowSpeech: true
|
||||
name: Одержимый Клинок
|
||||
description: Вы - одержимый клинок. Подчиняйтесь своему владельцу.
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: Examiner
|
||||
- type: Item
|
||||
sprite: White/Objects/Weapons/Chaplain/possessed.rsi
|
||||
|
||||
- type: entity
|
||||
name: рука-бензопила
|
||||
parent: BaseItem
|
||||
id: ChainsawHand
|
||||
description: Добро? Зло? Ты парень с бензопилой в руке.
|
||||
components:
|
||||
- type: Sharp
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/chainsaw.rsi
|
||||
state: icon
|
||||
- type: MeleeWeapon
|
||||
autoAttack: true
|
||||
angle: 0
|
||||
wideAnimationRotation: 90
|
||||
attackRate: 4
|
||||
damage:
|
||||
types:
|
||||
Slash: 6
|
||||
soundHit:
|
||||
path: /Audio/Weapons/chainsaw.ogg
|
||||
params:
|
||||
volume: -3
|
||||
- type: Item
|
||||
size: Huge
|
||||
sprite: White/Objects/Weapons/Chaplain/chainsaw.rsi
|
||||
- type: Unremoveable
|
||||
deleteOnDrop: true
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Sawing
|
||||
speed: 0.5
|
||||
|
||||
- type: entity
|
||||
name: священная плеть
|
||||
parent: BaseItem
|
||||
id: HolyWhip
|
||||
description: Какая ужасная ночь на космической станции 14.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/whip.rsi
|
||||
state: icon
|
||||
- type: MeleeWeapon
|
||||
soundHit:
|
||||
path: /Audio/White/Items/hit/chainhit.ogg
|
||||
range: 2.5
|
||||
damage:
|
||||
types:
|
||||
Blunt: 15
|
||||
- type: Item
|
||||
size: Normal
|
||||
sprite: White/Objects/Weapons/Chaplain/whip.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/whip.rsi
|
||||
slots:
|
||||
- belt
|
||||
- type: DisarmMalus
|
||||
|
||||
- type: entity
|
||||
name: посох монаха
|
||||
parent: BaseItem
|
||||
id: HolyStaff
|
||||
description: Длинный высокий посох из полированного дерева. Традиционно используемый в боевых искусствах древней Земли, теперь он используется для преследования клоуна.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/staff.rsi
|
||||
state: icon
|
||||
- type: MeleeWeapon
|
||||
wideAnimationRotation: 135
|
||||
damage:
|
||||
types:
|
||||
Blunt: 10
|
||||
- type: Item
|
||||
size: Huge
|
||||
sprite: White/Objects/Weapons/Chaplain/staff.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/staff.rsi
|
||||
slots:
|
||||
- back
|
||||
- type: Wieldable
|
||||
- type: IncreaseDamageOnWield
|
||||
damage:
|
||||
types:
|
||||
Blunt: 10
|
||||
- type: UseDelay
|
||||
- type: DisarmMalus
|
||||
- type: MeleeBlock
|
||||
|
||||
- type: entity
|
||||
name: нечестивые вилы
|
||||
parent: BaseItem
|
||||
id: UnholyPitchfork
|
||||
description: Держа это, ты выглядишь абсолютно по дьявольски.
|
||||
components:
|
||||
- type: EmbeddableProjectile
|
||||
offset: 0.15,0.15
|
||||
- type: ThrowingAngle
|
||||
angle: 225
|
||||
- type: Fixtures
|
||||
fixtures:
|
||||
fix1:
|
||||
shape: !type:PolygonShape
|
||||
vertices:
|
||||
- -0.20,-0.10
|
||||
- -0.10,-0.20
|
||||
- 0.40,0.30
|
||||
- 0.30,0.40
|
||||
density: 20
|
||||
mask:
|
||||
- ItemMask
|
||||
restitution: 0.3
|
||||
friction: 0.2
|
||||
- type: Sharp
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/pitchfork.rsi
|
||||
state: icon
|
||||
- type: MeleeWeapon
|
||||
wideAnimationRotation: -135
|
||||
damage:
|
||||
types:
|
||||
Piercing: 15
|
||||
angle: 0
|
||||
animation: WeaponArcThrust
|
||||
soundHit:
|
||||
path: /Audio/Weapons/bladeslice.ogg
|
||||
range: 2
|
||||
- type: DamageOtherOnHit
|
||||
damage:
|
||||
types:
|
||||
Piercing: 25
|
||||
- type: Item
|
||||
sprite: White/Objects/Weapons/Chaplain/pitchfork.rsi
|
||||
size: Huge
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/pitchfork.rsi
|
||||
slots:
|
||||
- back
|
||||
- type: Wieldable
|
||||
- type: IncreaseDamageOnWield
|
||||
damage:
|
||||
types:
|
||||
Piercing: 10
|
||||
- type: UseDelay
|
||||
- type: DisarmMalus
|
||||
|
||||
- type: entity
|
||||
name: реликтовый боевой молот
|
||||
parent: BaseItem
|
||||
id: WarHammer
|
||||
description: Этот боевой молот обошелся священнику в сорок тысяч кредитов.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/hammer.rsi
|
||||
state: icon
|
||||
- type: MeleeWeapon
|
||||
wideAnimationRotation: -135
|
||||
attackRate: 0.75
|
||||
damage:
|
||||
types:
|
||||
Blunt: 24
|
||||
Structural: 80
|
||||
- type: Item
|
||||
size: Huge
|
||||
sprite: White/Objects/Weapons/Chaplain/hammer.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/hammer.rsi
|
||||
slots:
|
||||
- belt
|
||||
- type: DisarmMalus
|
||||
|
||||
- type: entity
|
||||
name: гиперинструмент
|
||||
parent: BaseItem
|
||||
id: HyperTool
|
||||
description: Инструмент настолько мощный, что даже вы не можете им идеально пользоваться.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Chaplain/hypertool.rsi
|
||||
state: icon
|
||||
- type: MeleeWeapon
|
||||
wideAnimationRotation: -135
|
||||
attackRate: 0.75
|
||||
canHeavyAttack: false
|
||||
damage:
|
||||
types:
|
||||
Blunt: 0
|
||||
- type: StaminaDamageOnHit
|
||||
damage: 60
|
||||
- type: Item
|
||||
size: Normal
|
||||
sprite: White/Objects/Weapons/Chaplain/hypertool.rsi
|
||||
- type: Clothing
|
||||
sprite: White/Objects/Weapons/Chaplain/hypertool.rsi
|
||||
slots:
|
||||
- belt
|
||||
- type: DisarmMalus
|
||||
|
After Width: | Height: | Size: 758 B |
BIN
Resources/Textures/White/Clothing/Head/adept.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 290 B |
18
Resources/Textures/White/Clothing/Head/adept.rsi/meta.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Resources/Textures/White/Clothing/Head/ancient.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 560 B |
18
Resources/Textures/White/Clothing/Head/ancient.rsi/meta.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 742 B |
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 64,
|
||||
"y": 64
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "equipped-HELMET"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 609 B |
BIN
Resources/Textures/White/Clothing/Head/cage.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 450 B |
14
Resources/Textures/White/Clothing/Head/cage.rsi/meta.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 786 B |
BIN
Resources/Textures/White/Clothing/Head/clock.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 348 B |
18
Resources/Textures/White/Clothing/Head/clock.rsi/meta.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 689 B |
BIN
Resources/Textures/White/Clothing/Head/templar.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 496 B |
18
Resources/Textures/White/Clothing/Head/templar.rsi/meta.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 590 B |
BIN
Resources/Textures/White/Clothing/Head/witchhunter.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 495 B |
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 543 B |
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-OUTERCLOTHING",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 740 B |
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-OUTERCLOTHING",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 770 B |
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-OUTERCLOTHING",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 602 B |
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-OUTERCLOTHING",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 724 B |
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-OUTERCLOTHING",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 460 B |
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from TGstation github https://github.com/tgstation/tgstation/commit/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-OUTERCLOTHING",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 721 B |
|
After Width: | Height: | Size: 753 B |
|
After Width: | Height: | Size: 762 B |
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/49264/commits/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon",
|
||||
"delays": [
|
||||
[
|
||||
0.04,
|
||||
0.04
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 722 B |
|
After Width: | Height: | Size: 822 B |
|
After Width: | Height: | Size: 1021 B |
|
After Width: | Height: | Size: 987 B |
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/49264/commits/c9ddcd603adeab3822c2845f6be9dfb53452c119",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon",
|
||||
"delays": [
|
||||
[
|
||||
0.01,
|
||||
0.01
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "equipped-BELT",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 493 B |
|
After Width: | Height: | Size: 543 B |
|
After Width: | Height: | Size: 472 B |
|
After Width: | Height: | Size: 552 B |
|
After Width: | Height: | Size: 535 B |
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/49264/commits/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-BELT",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-BACKPACK",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 532 B |
|
After Width: | Height: | Size: 668 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 659 B |
|
After Width: | Height: | Size: 647 B |
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/49264/commits/c9ddcd603adeab3822c2845f6be9dfb53452c119",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon",
|
||||
"delays": [
|
||||
[
|
||||
0.01,
|
||||
0.01
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-BELT",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-BACKPACK",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 706 B |
|
After Width: | Height: | Size: 845 B |
|
After Width: | Height: | Size: 843 B |
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/49264/commits/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.1,
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1,
|
||||
0.1
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.1,
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1,
|
||||
0.1
|
||||
],
|
||||
[
|
||||
0.1,
|
||||
0.1,
|
||||
0.1
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 398 B |
|
After Width: | Height: | Size: 790 B |
|
After Width: | Height: | Size: 716 B |
|
After Width: | Height: | Size: 713 B |
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/49264/commits/d0dffe7ca643db2624424fdcebf45863f85c0448",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "equipped-BELT",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 610 B |
|
After Width: | Height: | Size: 1.1 KiB |