Фиксы (#439)
* - fix: Ebow. * - fix: Cult deconversion. * - add: Bola update. * - fix: Error. * - fix: Holoprojectors. * - fix: Clumsy.
This commit is contained in:
@@ -72,7 +72,8 @@ public sealed class CluwneSystem : EntitySystem
|
|||||||
|
|
||||||
EnsureComp<AutoEmoteComponent>(uid);
|
EnsureComp<AutoEmoteComponent>(uid);
|
||||||
_autoEmote.AddEmote(uid, "CluwneGiggle");
|
_autoEmote.AddEmote(uid, "CluwneGiggle");
|
||||||
EnsureComp<ClumsyComponent>(uid);
|
var clumsy = EnsureComp<ClumsyComponent>(uid);
|
||||||
|
clumsy.ClumsyDamage = new DamageSpecifier(_prototypeManager.Index<DamageGroupPrototype>("Brute"), 12);
|
||||||
|
|
||||||
_popupSystem.PopupEntity(Loc.GetString("cluwne-transform", ("target", uid)), uid, PopupType.LargeCaution);
|
_popupSystem.PopupEntity(Loc.GetString("cluwne-transform", ("target", uid)), uid, PopupType.LargeCaution);
|
||||||
_audio.PlayPvs(component.SpawnSound, uid);
|
_audio.PlayPvs(component.SpawnSound, uid);
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ using Content.Shared.ActionBlocker;
|
|||||||
using Content.Shared.Body.Part;
|
using Content.Shared.Body.Part;
|
||||||
using Content.Shared.CombatMode;
|
using Content.Shared.CombatMode;
|
||||||
using Content.Shared.Damage.Systems;
|
using Content.Shared.Damage.Systems;
|
||||||
|
using Content.Shared.Ensnaring.Components;
|
||||||
using Content.Shared.Explosion;
|
using Content.Shared.Explosion;
|
||||||
using Content.Shared.Hands.Components;
|
using Content.Shared.Hands.Components;
|
||||||
using Content.Shared.Hands.EntitySystems;
|
using Content.Shared.Hands.EntitySystems;
|
||||||
@@ -73,7 +74,7 @@ namespace Content.Server.Hands.Systems
|
|||||||
{
|
{
|
||||||
args.State = new HandsComponentState(hands);
|
args.State = new HandsComponentState(hands);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnExploded(Entity<HandsComponent> ent, ref BeforeExplodeEvent args)
|
private void OnExploded(Entity<HandsComponent> ent, ref BeforeExplodeEvent args)
|
||||||
{
|
{
|
||||||
if (ent.Comp.DisableExplosionRecursion)
|
if (ent.Comp.DisableExplosionRecursion)
|
||||||
@@ -193,7 +194,8 @@ namespace Content.Server.Hands.Systems
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// WD EDIT START
|
// WD EDIT START
|
||||||
if (HasComp<DamageOtherOnHitComponent>(throwEnt) && !_cultItem.CanThrow(player, throwEnt))
|
if ((HasComp<DamageOtherOnHitComponent>(throwEnt) || HasComp<EnsnaringComponent>(throwEnt)) &&
|
||||||
|
!_cultItem.CanThrow(player, throwEnt))
|
||||||
return false;
|
return false;
|
||||||
// WD EDIT END
|
// WD EDIT END
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Content.Shared.Interaction;
|
|||||||
using Content.Shared.Interaction.Events;
|
using Content.Shared.Interaction.Events;
|
||||||
using Content.Shared.Popups;
|
using Content.Shared.Popups;
|
||||||
using Content.Shared.Storage;
|
using Content.Shared.Storage;
|
||||||
|
using Robust.Shared.Utility;
|
||||||
|
|
||||||
namespace Content.Server.Holosign;
|
namespace Content.Server.Holosign;
|
||||||
|
|
||||||
@@ -42,7 +43,7 @@ public sealed class HolosignSystem : EntitySystem
|
|||||||
|
|
||||||
private void OnUse(EntityUid uid, HolosignProjectorComponent comp, UseInHandEvent args)
|
private void OnUse(EntityUid uid, HolosignProjectorComponent comp, UseInHandEvent args)
|
||||||
{
|
{
|
||||||
foreach (var sign in comp.Signs)
|
foreach (var sign in comp.Signs.ShallowClone())
|
||||||
{
|
{
|
||||||
comp.Signs.Remove(sign);
|
comp.Signs.Remove(sign);
|
||||||
QueueDel(sign);
|
QueueDel(sign);
|
||||||
@@ -97,4 +98,4 @@ public sealed class HolosignSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
return component.Signs.Count; // wd edit
|
return component.Signs.Count; // wd edit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ using System.Threading;
|
|||||||
using Content.Server._White.Cult.GameRule;
|
using Content.Server._White.Cult.GameRule;
|
||||||
using Content.Server.Popups;
|
using Content.Server.Popups;
|
||||||
using Content.Server.Stunnable;
|
using Content.Server.Stunnable;
|
||||||
|
using Content.Shared._White.Antag;
|
||||||
using Content.Shared.Chemistry.Reagent;
|
using Content.Shared.Chemistry.Reagent;
|
||||||
using Content.Shared.IdentityManagement;
|
using Content.Shared.IdentityManagement;
|
||||||
using Content.Shared.Jittering;
|
using Content.Shared.Jittering;
|
||||||
@@ -55,6 +56,7 @@ public sealed partial class DeconvertCultist : ReagentEffect
|
|||||||
|
|
||||||
entityManager.RemoveComponent<CultistComponent>(uid);
|
entityManager.RemoveComponent<CultistComponent>(uid);
|
||||||
entityManager.RemoveComponent<PentagramComponent>(uid);
|
entityManager.RemoveComponent<PentagramComponent>(uid);
|
||||||
|
entityManager.RemoveComponent<GlobalAntagonistComponent>(uid);
|
||||||
|
|
||||||
var cultRuleSystem = entityManager.System<CultRuleSystem>();
|
var cultRuleSystem = entityManager.System<CultRuleSystem>();
|
||||||
cultRuleSystem.RemoveObjectiveAndRole(uid);
|
cultRuleSystem.RemoveObjectiveAndRole(uid);
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ using Content.Shared.Actions;
|
|||||||
using Content.Shared.Borer;
|
using Content.Shared.Borer;
|
||||||
using Content.Shared.Cluwne;
|
using Content.Shared.Cluwne;
|
||||||
using Content.Shared.Coordinates.Helpers;
|
using Content.Shared.Coordinates.Helpers;
|
||||||
|
using Content.Shared.Damage;
|
||||||
|
using Content.Shared.Damage.Prototypes;
|
||||||
using Content.Shared.Hands.Components;
|
using Content.Shared.Hands.Components;
|
||||||
using Content.Shared.Hands.EntitySystems;
|
using Content.Shared.Hands.EntitySystems;
|
||||||
using Content.Shared.Humanoid;
|
using Content.Shared.Humanoid;
|
||||||
@@ -49,6 +51,7 @@ using Robust.Shared.Audio.Systems;
|
|||||||
using Robust.Shared.Map;
|
using Robust.Shared.Map;
|
||||||
using Robust.Shared.Physics.Components;
|
using Robust.Shared.Physics.Components;
|
||||||
using Robust.Shared.Player;
|
using Robust.Shared.Player;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Random;
|
using Robust.Shared.Random;
|
||||||
|
|
||||||
namespace Content.Server._White.Wizard.Magic;
|
namespace Content.Server._White.Wizard.Magic;
|
||||||
@@ -59,6 +62,7 @@ public sealed class WizardSpellsSystem : EntitySystem
|
|||||||
|
|
||||||
[Dependency] private readonly IMapManager _mapManager = default!;
|
[Dependency] private readonly IMapManager _mapManager = default!;
|
||||||
[Dependency] private readonly IRobustRandom _random = default!;
|
[Dependency] private readonly IRobustRandom _random = default!;
|
||||||
|
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||||
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
||||||
[Dependency] private readonly GunSystem _gunSystem = default!;
|
[Dependency] private readonly GunSystem _gunSystem = default!;
|
||||||
[Dependency] private readonly SharedTransformSystem _transformSystem = default!;
|
[Dependency] private readonly SharedTransformSystem _transformSystem = default!;
|
||||||
@@ -310,7 +314,8 @@ public sealed class WizardSpellsSystem : EntitySystem
|
|||||||
}
|
}
|
||||||
|
|
||||||
SetOutfitCommand.SetOutfit(msg.Target, "ClownGear", EntityManager);
|
SetOutfitCommand.SetOutfit(msg.Target, "ClownGear", EntityManager);
|
||||||
EnsureComp<ClumsyComponent>(msg.Target);
|
var clumsy = EnsureComp<ClumsyComponent>(msg.Target);
|
||||||
|
clumsy.ClumsyDamage = new DamageSpecifier(_prototypeManager.Index<DamageGroupPrototype>("Brute"), 12);
|
||||||
|
|
||||||
Spawn("AdminInstantEffectSmoke3", Transform(msg.Target).Coordinates);
|
Spawn("AdminInstantEffectSmoke3", Transform(msg.Target).Coordinates);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
namespace Content.Shared._White.Collision;
|
||||||
|
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed partial class BlurOnCollideComponent : Component
|
||||||
|
{
|
||||||
|
[DataField]
|
||||||
|
public float BlurTime = 20f;
|
||||||
|
}
|
||||||
38
Content.Shared/_White/Collision/BlurOnCollideSystem.cs
Normal file
38
Content.Shared/_White/Collision/BlurOnCollideSystem.cs
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
using Content.Shared.Eye.Blinding.Components;
|
||||||
|
using Content.Shared.Projectiles;
|
||||||
|
using Content.Shared.Standing.Systems;
|
||||||
|
using Content.Shared.StatusEffect;
|
||||||
|
using Content.Shared.Throwing;
|
||||||
|
|
||||||
|
namespace Content.Shared._White.Collision;
|
||||||
|
|
||||||
|
public sealed class BlurOnCollideSystem : EntitySystem
|
||||||
|
{
|
||||||
|
[Dependency] private readonly StatusEffectsSystem _statusEffects = default!;
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<BlurOnCollideComponent, ProjectileHitEvent>(OnProjectileHit);
|
||||||
|
SubscribeLocalEvent<BlurOnCollideComponent, ThrowDoHitEvent>(OnEntityHit);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEntityHit(Entity<BlurOnCollideComponent> ent, ref ThrowDoHitEvent args)
|
||||||
|
{
|
||||||
|
ApplyEffects(args.Target, ent.Comp);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnProjectileHit(Entity<BlurOnCollideComponent> ent, ref ProjectileHitEvent args)
|
||||||
|
{
|
||||||
|
ApplyEffects(args.Target, ent.Comp);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ApplyEffects(EntityUid target, BlurOnCollideComponent component)
|
||||||
|
{
|
||||||
|
_statusEffects.TryAddStatusEffect<BlurryVisionComponent>(target,
|
||||||
|
"BlurryVision",
|
||||||
|
TimeSpan.FromSeconds(component.BlurTime),
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
using Content.Shared.Standing.Systems;
|
||||||
|
|
||||||
|
namespace Content.Shared._White.Collision;
|
||||||
|
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed partial class KnockdownOnCollideComponent : Component
|
||||||
|
{
|
||||||
|
[DataField]
|
||||||
|
public SharedStandingStateSystem.DropHeldItemsBehavior Behavior =
|
||||||
|
SharedStandingStateSystem.DropHeldItemsBehavior.NoDrop;
|
||||||
|
}
|
||||||
@@ -1,15 +1,12 @@
|
|||||||
using Content.Shared.Eye.Blinding.Components;
|
|
||||||
using Content.Shared.Projectiles;
|
using Content.Shared.Projectiles;
|
||||||
using Content.Shared.Standing.Systems;
|
using Content.Shared.Standing.Systems;
|
||||||
using Content.Shared.StatusEffect;
|
|
||||||
using Content.Shared.Throwing;
|
using Content.Shared.Throwing;
|
||||||
|
|
||||||
namespace Content.Shared._White.Knockdown;
|
namespace Content.Shared._White.Collision;
|
||||||
|
|
||||||
public sealed class KnockdownOnCollideSystem : EntitySystem
|
public sealed class KnockdownOnCollideSystem : EntitySystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly SharedStandingStateSystem _standing = default!;
|
[Dependency] private readonly SharedStandingStateSystem _standing = default!;
|
||||||
[Dependency] private readonly StatusEffectsSystem _statusEffects = default!;
|
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -31,9 +28,6 @@ public sealed class KnockdownOnCollideSystem : EntitySystem
|
|||||||
|
|
||||||
private void ApplyEffects(EntityUid target, KnockdownOnCollideComponent component)
|
private void ApplyEffects(EntityUid target, KnockdownOnCollideComponent component)
|
||||||
{
|
{
|
||||||
_standing.TryLieDown(target, null, SharedStandingStateSystem.DropHeldItemsBehavior.AlwaysDrop);
|
_standing.TryLieDown(target, null, component.Behavior);
|
||||||
|
|
||||||
if (component.UseBlur)
|
|
||||||
_statusEffects.TryAddStatusEffect<BlurryVisionComponent>(target, "BlurryVision", TimeSpan.FromSeconds(component.BlurTime), true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
namespace Content.Shared._White.Knockdown;
|
|
||||||
|
|
||||||
[RegisterComponent]
|
|
||||||
public sealed partial class KnockdownOnCollideComponent : Component
|
|
||||||
{
|
|
||||||
[DataField]
|
|
||||||
public float BlurTime = 20f;
|
|
||||||
|
|
||||||
[DataField]
|
|
||||||
public bool UseBlur;
|
|
||||||
}
|
|
||||||
@@ -22,11 +22,6 @@
|
|||||||
parent: Holoprojector
|
parent: Holoprojector
|
||||||
id: HoloprojectorEmpty
|
id: HoloprojectorEmpty
|
||||||
suffix: Empty
|
suffix: Empty
|
||||||
components:
|
|
||||||
- type: ItemSlots
|
|
||||||
slots:
|
|
||||||
cell_slot:
|
|
||||||
name: power-cell-slot-component-slot-name-default
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: Holoprojector
|
parent: Holoprojector
|
||||||
@@ -56,11 +51,6 @@
|
|||||||
parent: HolofanProjector
|
parent: HolofanProjector
|
||||||
id: HolofanProjectorEmpty
|
id: HolofanProjectorEmpty
|
||||||
suffix: Empty
|
suffix: Empty
|
||||||
components:
|
|
||||||
- type: ItemSlots
|
|
||||||
slots:
|
|
||||||
cell_slot:
|
|
||||||
name: power-cell-slot-component-slot-name-default
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: Holoprojector
|
parent: Holoprojector
|
||||||
@@ -84,11 +74,6 @@
|
|||||||
parent: HoloprojectorField
|
parent: HoloprojectorField
|
||||||
id: HoloprojectorFieldEmpty
|
id: HoloprojectorFieldEmpty
|
||||||
suffix: Empty
|
suffix: Empty
|
||||||
components:
|
|
||||||
- type: ItemSlots
|
|
||||||
slots:
|
|
||||||
cell_slot:
|
|
||||||
name: power-cell-slot-component-slot-name-default
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: Holoprojector
|
parent: Holoprojector
|
||||||
@@ -112,8 +97,3 @@
|
|||||||
parent: HoloprojectorSecurity
|
parent: HoloprojectorSecurity
|
||||||
id: HoloprojectorSecurityEmpty
|
id: HoloprojectorSecurityEmpty
|
||||||
suffix: Empty
|
suffix: Empty
|
||||||
components:
|
|
||||||
- type: ItemSlots
|
|
||||||
slots:
|
|
||||||
cell_slot:
|
|
||||||
name: power-cell-slot-component-slot-name-default
|
|
||||||
|
|||||||
@@ -26,3 +26,6 @@
|
|||||||
hard: false
|
hard: false
|
||||||
mask:
|
mask:
|
||||||
- Opaque
|
- Opaque
|
||||||
|
- type: KnockdownOnCollide
|
||||||
|
behavior: AlwaysDrop
|
||||||
|
- type: BlurOnCollide
|
||||||
|
|||||||
@@ -34,4 +34,3 @@
|
|||||||
True: { state: icon }
|
True: { state: icon }
|
||||||
False: { state: empty }
|
False: { state: empty }
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
useBlur: true
|
|
||||||
|
|||||||
@@ -1,18 +1,9 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
name: bola
|
name: bola
|
||||||
parent: BaseItem
|
parent: BaseBola
|
||||||
id: Bola
|
id: Bola
|
||||||
description: Linked together with some spare cuffs and metal.
|
description: Linked together with some spare cuffs and metal.
|
||||||
components:
|
components:
|
||||||
- type: Item
|
|
||||||
size: Normal
|
|
||||||
- type: Sprite
|
|
||||||
sprite: Objects/Weapons/Throwable/bola.rsi
|
|
||||||
state: icon
|
|
||||||
- type: EmitSoundOnThrow
|
|
||||||
sound: /Audio/Weapons/bolathrow.ogg
|
|
||||||
- type: EmitSoundOnLand
|
|
||||||
sound: /Audio/Effects/snap.ogg
|
|
||||||
- type: Construction
|
- type: Construction
|
||||||
graph: Bola
|
graph: Bola
|
||||||
node: bola
|
node: bola
|
||||||
@@ -39,6 +30,25 @@
|
|||||||
damage:
|
damage:
|
||||||
types:
|
types:
|
||||||
Blunt: 5
|
Blunt: 5
|
||||||
|
|
||||||
|
# WD added
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: bola
|
||||||
|
parent: BaseItem
|
||||||
|
abstract: true
|
||||||
|
id: BaseBola
|
||||||
|
description: Linked together with some spare cuffs and metal.
|
||||||
|
components:
|
||||||
|
- type: Item
|
||||||
|
size: Normal
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Objects/Weapons/Throwable/bola.rsi
|
||||||
|
state: icon
|
||||||
|
- type: EmitSoundOnThrow
|
||||||
|
sound: /Audio/Weapons/bolathrow.ogg
|
||||||
|
- type: EmitSoundOnLand
|
||||||
|
sound: /Audio/Effects/snap.ogg
|
||||||
- type: Ensnaring
|
- type: Ensnaring
|
||||||
freeTime: 2.0
|
freeTime: 2.0
|
||||||
breakoutTime: 3.5 #all bola should generally be fast to remove
|
breakoutTime: 3.5 #all bola should generally be fast to remove
|
||||||
@@ -49,10 +59,8 @@
|
|||||||
canMoveBreakout: true
|
canMoveBreakout: true
|
||||||
- type: KnockdownOnCollide
|
- type: KnockdownOnCollide
|
||||||
|
|
||||||
# WD added
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: Bola
|
parent: BaseBola
|
||||||
id: CultBola
|
id: CultBola
|
||||||
name: Bola
|
name: Bola
|
||||||
description: Linked together with some spare cuffs and metal.
|
description: Linked together with some spare cuffs and metal.
|
||||||
@@ -60,14 +68,12 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: White/Cult/bola.rsi
|
sprite: White/Cult/bola.rsi
|
||||||
- type: Ensnaring
|
- type: Ensnaring
|
||||||
freeTime: 2.0
|
|
||||||
breakoutTime: 3.5 #all bola should generally be fast to remove
|
|
||||||
walkSpeed: 0.5
|
walkSpeed: 0.5
|
||||||
sprintSpeed: 0.5
|
sprintSpeed: 0.5
|
||||||
canThrowTrigger: true
|
- type: CultItem
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: Bola
|
parent: BaseBola
|
||||||
id: EnergyBola
|
id: EnergyBola
|
||||||
name: Bola
|
name: Bola
|
||||||
description: Linked together with some spare cuffs and metal.
|
description: Linked together with some spare cuffs and metal.
|
||||||
@@ -77,22 +83,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: White/Objects/Weapons/Throwable/energybola.rsi
|
sprite: White/Objects/Weapons/Throwable/energybola.rsi
|
||||||
- type: Ensnaring
|
- type: Ensnaring
|
||||||
freeTime: 1
|
walkSpeed: 0.6
|
||||||
breakoutTime: 2
|
sprintSpeed: 0.6
|
||||||
walkSpeed: 0.8
|
|
||||||
sprintSpeed: 0.8
|
|
||||||
staminaDamage: 33
|
|
||||||
- type: EmitSoundOnLand
|
- type: EmitSoundOnLand
|
||||||
collection: sparks
|
collection: sparks
|
||||||
- type: Destructible
|
|
||||||
thresholds:
|
|
||||||
- trigger:
|
|
||||||
!type:DamageTrigger
|
|
||||||
damage: 10
|
|
||||||
behaviors:
|
|
||||||
- !type:PlaySoundBehavior
|
|
||||||
sound:
|
|
||||||
collection: EnergyMiss
|
|
||||||
- !type:DoActsBehavior
|
|
||||||
acts: [ "Destruction" ]
|
|
||||||
- type: KnockdownOnCollide
|
|
||||||
|
|||||||
Reference in New Issue
Block a user