Errors fix
This commit is contained in:
@@ -235,9 +235,10 @@ namespace Content.Server.Body.Systems
|
||||
// WD start
|
||||
private void OnHandInteract(EntityUid uid, RespiratorComponent component, InteractHandEvent args)
|
||||
{
|
||||
if (CanCPR(uid, component, args.User))
|
||||
DoCPR(uid, component, args.User);
|
||||
if (!CanCPR(uid, component, args.User))
|
||||
return;
|
||||
|
||||
DoCPR(uid, component, args.User);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ namespace Content.Server.Carrying
|
||||
/// Stores the carrier of an entity being carried.
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed class BeingCarriedComponent : Component
|
||||
public sealed partial class BeingCarriedComponent : Component
|
||||
{
|
||||
public EntityUid Carrier = default!;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using System.Threading;
|
||||
namespace Content.Server.Carrying
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed class CarriableComponent : Component
|
||||
public sealed partial class CarriableComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Number of free hands required
|
||||
|
||||
@@ -4,7 +4,7 @@ namespace Content.Server.Carrying
|
||||
/// Added to an entity when they are carrying somebody.
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed class CarryingComponent : Component
|
||||
public sealed partial class CarryingComponent : Component
|
||||
{
|
||||
public EntityUid Carried = default!;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
using System.Threading;
|
||||
using Content.Server.DoAfter;
|
||||
using Content.Server.Body.Systems;
|
||||
using Content.Server.Hands.Systems;
|
||||
using Content.Server.Resist;
|
||||
using Content.Server.Popups;
|
||||
using Content.Server.Contests;
|
||||
using Content.Server.Climbing;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Buckle.Components;
|
||||
@@ -21,6 +19,7 @@ using Content.Shared.Pulling;
|
||||
using Content.Shared.Pulling.Components;
|
||||
using Content.Shared.Standing;
|
||||
using Content.Shared.ActionBlocker;
|
||||
using Content.Shared.Climbing.Events;
|
||||
using Content.Shared.Throwing;
|
||||
using Content.Shared.Physics.Pull;
|
||||
using Content.Shared.Mobs.Systems;
|
||||
@@ -225,7 +224,7 @@ namespace Content.Server.Carrying
|
||||
component.CancelToken = new CancellationTokenSource();
|
||||
|
||||
var ev = new CarryDoAfterEvent();
|
||||
var args = new DoAfterArgs(carrier, length, ev, carried, target: carried)
|
||||
var args = new DoAfterArgs(EntityManager, carrier, length, ev, carried, target: carried)
|
||||
{
|
||||
BreakOnTargetMove = true,
|
||||
BreakOnUserMove = true,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace Content.Server.Abilities.Felinid
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed class CoughingUpHairballComponent : Component
|
||||
public sealed partial class CoughingUpHairballComponent : Component
|
||||
{
|
||||
[DataField("accumulator")]
|
||||
public float Accumulator = 0f;
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Content.Shared.Actions.ActionTypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Server.Abilities.Felinid
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed class FelinidComponent : Component
|
||||
public sealed partial class FelinidComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The hairball prototype to use.
|
||||
@@ -14,8 +12,9 @@ namespace Content.Server.Abilities.Felinid
|
||||
[DataField("hairballPrototype", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||
public string HairballPrototype = "Hairball";
|
||||
|
||||
[DataField("hairballAction")]
|
||||
public InstantAction? HairballAction;
|
||||
public EntityUid? HairballAction;
|
||||
|
||||
public EntityUid? EatMouseAction;
|
||||
|
||||
public EntityUid? PotentialTarget = null;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
namespace Content.Server.Abilities.Felinid
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed class FelinidFoodComponent : Component
|
||||
public sealed partial class FelinidFoodComponent : Component
|
||||
{}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,20 @@
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Audio;
|
||||
using Content.Shared.StatusEffect;
|
||||
using Content.Shared.Throwing;
|
||||
using Content.Shared.Item;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Hands;
|
||||
using Content.Shared.Actions.ActionTypes;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Content.Shared.Nutrition.Components;
|
||||
using Content.Shared.Nutrition.EntitySystems;
|
||||
using Content.Server.Body.Components;
|
||||
using Content.Server.Chemistry.Containers.EntitySystems;
|
||||
using Content.Server.Medical;
|
||||
using Content.Server.Nutrition.EntitySystems;
|
||||
using Content.Server.Nutrition.Components;
|
||||
using Content.Server.Chemistry.EntitySystems;
|
||||
using Content.Server.Popups;
|
||||
using Content.Shared.White.Events;
|
||||
using Robust.Server.Audio;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
@@ -24,7 +22,6 @@ namespace Content.Server.Abilities.Felinid
|
||||
{
|
||||
public sealed class FelinidSystem : EntitySystem
|
||||
{
|
||||
|
||||
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
|
||||
[Dependency] private readonly HungerSystem _hungerSystem = default!;
|
||||
[Dependency] private readonly VomitSystem _vomitSystem = default!;
|
||||
@@ -32,7 +29,7 @@ namespace Content.Server.Abilities.Felinid
|
||||
[Dependency] private readonly IRobustRandom _robustRandom = default!;
|
||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||
[Dependency] private readonly InventorySystem _inventorySystem = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly AudioSystem _audio = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -71,11 +68,7 @@ namespace Content.Server.Abilities.Felinid
|
||||
|
||||
private void OnInit(EntityUid uid, FelinidComponent component, ComponentInit args)
|
||||
{
|
||||
if (!_prototypeManager.TryIndex<InstantActionPrototype>("HairballAction", out var hairball))
|
||||
return;
|
||||
|
||||
component.HairballAction = new InstantAction(hairball);
|
||||
_actionsSystem.AddAction(uid, component.HairballAction, uid);
|
||||
_actionsSystem.AddAction(uid, ref component.HairballAction, "HairballAction");
|
||||
}
|
||||
|
||||
private void OnEquipped(EntityUid uid, FelinidComponent component, DidEquipHandEvent args)
|
||||
@@ -85,8 +78,7 @@ namespace Content.Server.Abilities.Felinid
|
||||
|
||||
component.PotentialTarget = args.Equipped;
|
||||
|
||||
if (_prototypeManager.TryIndex<InstantActionPrototype>("EatMouse", out var eatMouse))
|
||||
_actionsSystem.AddAction(uid, new InstantAction(eatMouse), null);
|
||||
_actionsSystem.AddAction(uid, ref component.EatMouseAction, "EatMouse");
|
||||
}
|
||||
|
||||
private void OnUnequipped(EntityUid uid, FelinidComponent component, DidUnequipHandEvent args)
|
||||
@@ -94,8 +86,7 @@ namespace Content.Server.Abilities.Felinid
|
||||
if (args.Unequipped == component.PotentialTarget)
|
||||
{
|
||||
component.PotentialTarget = null;
|
||||
if (_prototypeManager.TryIndex<InstantActionPrototype>("EatMouse", out var eatMouse))
|
||||
_actionsSystem.RemoveAction(uid, eatMouse);
|
||||
_actionsSystem.RemoveAction(uid, component.EatMouseAction);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,7 +101,7 @@ namespace Content.Server.Abilities.Felinid
|
||||
}
|
||||
|
||||
_popupSystem.PopupEntity(Loc.GetString("hairball-cough", ("name", Identity.Entity(uid, EntityManager))), uid);
|
||||
SoundSystem.Play("/Audio/White/Felinid/hairball.ogg", Filter.Pvs(uid), uid, AudioHelpers.WithVariation(0.15f));
|
||||
_audio.PlayPvs("/Audio/White/Felinid/hairball.ogg", uid, AudioParams.Default.WithVariation(0.15f));
|
||||
|
||||
EnsureComp<CoughingUpHairballComponent>(uid);
|
||||
args.Handled = true;
|
||||
@@ -140,18 +131,17 @@ namespace Content.Server.Abilities.Felinid
|
||||
|
||||
if (component.HairballAction != null)
|
||||
{
|
||||
_actionsSystem.SetCharges(component.HairballAction, component.HairballAction.Charges + 1);
|
||||
_actionsSystem.AddCharges(component.HairballAction, 1);
|
||||
_actionsSystem.SetEnabled(component.HairballAction, true);
|
||||
}
|
||||
Del(component.PotentialTarget.Value);
|
||||
component.PotentialTarget = null;
|
||||
|
||||
SoundSystem.Play("/Audio/Items/eatfood.ogg", Filter.Pvs(uid), uid, AudioHelpers.WithVariation(0.15f));
|
||||
_audio.PlayPvs("/Audio/Items/eatfood.ogg", uid, AudioParams.Default.WithVariation(0.15f));
|
||||
|
||||
_hungerSystem.ModifyHunger(uid, 70f, hunger);
|
||||
|
||||
if (_prototypeManager.TryIndex<InstantActionPrototype>("EatMouse", out var eatMouse))
|
||||
_actionsSystem.RemoveAction(uid, eatMouse);
|
||||
_actionsSystem.RemoveAction(uid, component.EatMouseAction);
|
||||
}
|
||||
|
||||
private void SpawnHairball(EntityUid uid, FelinidComponent component)
|
||||
@@ -159,13 +149,13 @@ namespace Content.Server.Abilities.Felinid
|
||||
var hairball = EntityManager.SpawnEntity(component.HairballPrototype, Transform(uid).Coordinates);
|
||||
var hairballComp = Comp<HairballComponent>(hairball);
|
||||
|
||||
if (TryComp<BloodstreamComponent>(uid, out var bloodstream))
|
||||
if (TryComp<BloodstreamComponent>(uid, out var bloodstream) && bloodstream.ChemicalSolution != null)
|
||||
{
|
||||
var temp = bloodstream.ChemicalSolution.SplitSolution(20);
|
||||
var temp = _solutionSystem.SplitSolution(bloodstream.ChemicalSolution.Value, 20);
|
||||
|
||||
if (_solutionSystem.TryGetSolution(hairball, hairballComp.SolutionName, out var hairballSolution))
|
||||
{
|
||||
_solutionSystem.TryAddSolution(hairball, hairballSolution, temp);
|
||||
_solutionSystem.TryAddSolution(hairballSolution.Value, temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -189,7 +179,4 @@ namespace Content.Server.Abilities.Felinid
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class HairballActionEvent : InstantActionEvent {}
|
||||
public sealed class EatMouseActionEvent : InstantActionEvent {}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace Content.Server.Abilities.Felinid
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed class HairballComponent : Component
|
||||
public sealed partial class HairballComponent : Component
|
||||
{
|
||||
public string SolutionName = "hairball";
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ using Content.Shared.DoAfter;
|
||||
namespace Content.Shared.Carrying
|
||||
{
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class CarryDoAfterEvent : SimpleDoAfterEvent
|
||||
public sealed partial class CarryDoAfterEvent : SimpleDoAfterEvent
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Content.Shared.Carrying
|
||||
{
|
||||
[RegisterComponent, NetworkedComponent, Access(typeof(CarryingSlowdownSystem))]
|
||||
|
||||
public sealed class CarryingSlowdownComponent : Component
|
||||
public sealed partial class CarryingSlowdownComponent : Component
|
||||
{
|
||||
[DataField("walkModifier", required: true)] [ViewVariables(VVAccess.ReadWrite)]
|
||||
public float WalkModifier = 1.0f;
|
||||
@@ -25,4 +25,4 @@ namespace Content.Shared.Carrying
|
||||
SprintModifier = sprintModifier;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
11
Content.Shared/White/Events/FelinidEvents.cs
Normal file
11
Content.Shared/White/Events/FelinidEvents.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Content.Shared.Actions;
|
||||
|
||||
namespace Content.Shared.White.Events;
|
||||
|
||||
public sealed partial class HairballActionEvent : InstantActionEvent
|
||||
{
|
||||
}
|
||||
|
||||
public sealed partial class EatMouseActionEvent : InstantActionEvent
|
||||
{
|
||||
}
|
||||
@@ -4,7 +4,7 @@ using Content.Shared.DoAfter;
|
||||
namespace Content.Shared.Item.PseudoItem
|
||||
{
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class PseudoItemInsertDoAfterEvent : SimpleDoAfterEvent
|
||||
public sealed partial class PseudoItemInsertDoAfterEvent : SimpleDoAfterEvent
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,11 @@ hairball-cough = {CAPITALIZE(THE($name))} пытается выкашлять к
|
||||
action-name-eat-mouse = Съесть мышь.
|
||||
action-description-eat-mouse = Съешьте мышь в своей руке, получая питательные вещества и заряд комка шерсти.
|
||||
|
||||
ent-HairballAction = Откашлять комок шерсти.
|
||||
.desc = Люди это не любят.
|
||||
|
||||
ent-EatMouse = Съесть мышь.
|
||||
.desc = Съешьте мышь в своей руке, получая питательные вещества и заряд комка шерсти.
|
||||
|
||||
marking-FelinidEarsBasic = Обычные ушки
|
||||
marking-FelinidEarsBasic-basic_outer = Внешняя часть уха
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
- type: entity
|
||||
- type: entity
|
||||
name: Engineer loot spawner
|
||||
id: EngiLootSpawner
|
||||
parent: MarkerBase
|
||||
@@ -59,7 +59,7 @@
|
||||
layers:
|
||||
- state: red
|
||||
- sprite: Objects/Specific/Janitorial/soap.rsi
|
||||
state: omega
|
||||
state: omega-4
|
||||
- type: RandomSpawner
|
||||
rarePrototypes:
|
||||
- FoamBlade
|
||||
|
||||
@@ -31,9 +31,6 @@
|
||||
- type: CameraRecoil
|
||||
- type: Examiner
|
||||
- type: CanHostGuardian
|
||||
- type: Faction
|
||||
factions:
|
||||
- NanoTrasen
|
||||
- type: Felinid #since this just adds an action...
|
||||
- type: InteractionPopup
|
||||
successChance: 1
|
||||
|
||||
@@ -115,12 +115,6 @@
|
||||
types:
|
||||
Blunt: 1
|
||||
Slash: 5
|
||||
- type: DiseaseCarrier
|
||||
naturalImmunities:
|
||||
- OwOnavirus
|
||||
- type: Thieving
|
||||
stealthy: true
|
||||
stripTimeReduction: 1
|
||||
- type: Speech
|
||||
speechSounds: Alto
|
||||
- type: DamageOnHighSpeedImpact
|
||||
|
||||
@@ -1,14 +1,23 @@
|
||||
- type: instantAction
|
||||
- type: entity
|
||||
id: EatMouse
|
||||
name: action-name-eat-mouse
|
||||
description: action-description-eat-mouse
|
||||
icon: White/Icons/verbiconfangs.png
|
||||
serverEvent: !type:EatMouseActionEvent
|
||||
name: Eat mouse
|
||||
description: Eat the mouse in your hand, receiving nutrients and a hairball charge.
|
||||
nospawn: true
|
||||
components:
|
||||
- type: InstantAction
|
||||
icon: White/Icons/verbiconfangs.png
|
||||
event: !type:EatMouseActionEvent
|
||||
|
||||
- type: instantAction
|
||||
- type: entity
|
||||
id: HairballAction
|
||||
name: hairball-action
|
||||
description: hairball-action-desc
|
||||
charges: 1
|
||||
useDelay: 30
|
||||
serverEvent: !type:HairballActionEvent
|
||||
name: Cough up a hairball.
|
||||
description: People don't like that.
|
||||
nospawn: true
|
||||
components:
|
||||
- type: InstantAction
|
||||
icon:
|
||||
sprite: White/Specific/Species/felinid.rsi
|
||||
state: icon
|
||||
event: !type:HairballActionEvent
|
||||
charges: 1
|
||||
useDelay: 30
|
||||
|
||||
Reference in New Issue
Block a user