Фиксы (#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);
|
||||
_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);
|
||||
_audio.PlayPvs(component.SpawnSound, uid);
|
||||
|
||||
@@ -10,6 +10,7 @@ using Content.Shared.ActionBlocker;
|
||||
using Content.Shared.Body.Part;
|
||||
using Content.Shared.CombatMode;
|
||||
using Content.Shared.Damage.Systems;
|
||||
using Content.Shared.Ensnaring.Components;
|
||||
using Content.Shared.Explosion;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
@@ -73,7 +74,7 @@ namespace Content.Server.Hands.Systems
|
||||
{
|
||||
args.State = new HandsComponentState(hands);
|
||||
}
|
||||
|
||||
|
||||
private void OnExploded(Entity<HandsComponent> ent, ref BeforeExplodeEvent args)
|
||||
{
|
||||
if (ent.Comp.DisableExplosionRecursion)
|
||||
@@ -193,7 +194,8 @@ namespace Content.Server.Hands.Systems
|
||||
return false;
|
||||
|
||||
// WD EDIT START
|
||||
if (HasComp<DamageOtherOnHitComponent>(throwEnt) && !_cultItem.CanThrow(player, throwEnt))
|
||||
if ((HasComp<DamageOtherOnHitComponent>(throwEnt) || HasComp<EnsnaringComponent>(throwEnt)) &&
|
||||
!_cultItem.CanThrow(player, throwEnt))
|
||||
return false;
|
||||
// WD EDIT END
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ using Content.Shared.Interaction;
|
||||
using Content.Shared.Interaction.Events;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Storage;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Server.Holosign;
|
||||
|
||||
@@ -42,7 +43,7 @@ public sealed class HolosignSystem : EntitySystem
|
||||
|
||||
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);
|
||||
QueueDel(sign);
|
||||
@@ -97,4 +98,4 @@ public sealed class HolosignSystem : EntitySystem
|
||||
{
|
||||
return component.Signs.Count; // wd edit
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ using System.Threading;
|
||||
using Content.Server._White.Cult.GameRule;
|
||||
using Content.Server.Popups;
|
||||
using Content.Server.Stunnable;
|
||||
using Content.Shared._White.Antag;
|
||||
using Content.Shared.Chemistry.Reagent;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Content.Shared.Jittering;
|
||||
@@ -55,6 +56,7 @@ public sealed partial class DeconvertCultist : ReagentEffect
|
||||
|
||||
entityManager.RemoveComponent<CultistComponent>(uid);
|
||||
entityManager.RemoveComponent<PentagramComponent>(uid);
|
||||
entityManager.RemoveComponent<GlobalAntagonistComponent>(uid);
|
||||
|
||||
var cultRuleSystem = entityManager.System<CultRuleSystem>();
|
||||
cultRuleSystem.RemoveObjectiveAndRole(uid);
|
||||
|
||||
@@ -29,6 +29,8 @@ using Content.Shared.Actions;
|
||||
using Content.Shared.Borer;
|
||||
using Content.Shared.Cluwne;
|
||||
using Content.Shared.Coordinates.Helpers;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Damage.Prototypes;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Humanoid;
|
||||
@@ -49,6 +51,7 @@ using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Physics.Components;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server._White.Wizard.Magic;
|
||||
@@ -59,6 +62,7 @@ public sealed class WizardSpellsSystem : EntitySystem
|
||||
|
||||
[Dependency] private readonly IMapManager _mapManager = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
||||
[Dependency] private readonly GunSystem _gunSystem = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transformSystem = default!;
|
||||
@@ -310,7 +314,8 @@ public sealed class WizardSpellsSystem : EntitySystem
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@@ -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.Standing.Systems;
|
||||
using Content.Shared.StatusEffect;
|
||||
using Content.Shared.Throwing;
|
||||
|
||||
namespace Content.Shared._White.Knockdown;
|
||||
namespace Content.Shared._White.Collision;
|
||||
|
||||
public sealed class KnockdownOnCollideSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedStandingStateSystem _standing = default!;
|
||||
[Dependency] private readonly StatusEffectsSystem _statusEffects = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
@@ -31,9 +28,6 @@ public sealed class KnockdownOnCollideSystem : EntitySystem
|
||||
|
||||
private void ApplyEffects(EntityUid target, KnockdownOnCollideComponent component)
|
||||
{
|
||||
_standing.TryLieDown(target, null, SharedStandingStateSystem.DropHeldItemsBehavior.AlwaysDrop);
|
||||
|
||||
if (component.UseBlur)
|
||||
_statusEffects.TryAddStatusEffect<BlurryVisionComponent>(target, "BlurryVision", TimeSpan.FromSeconds(component.BlurTime), true);
|
||||
_standing.TryLieDown(target, null, component.Behavior);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
id: HoloprojectorEmpty
|
||||
suffix: Empty
|
||||
components:
|
||||
- type: ItemSlots
|
||||
slots:
|
||||
cell_slot:
|
||||
name: power-cell-slot-component-slot-name-default
|
||||
|
||||
- type: entity
|
||||
parent: Holoprojector
|
||||
@@ -56,11 +51,6 @@
|
||||
parent: HolofanProjector
|
||||
id: HolofanProjectorEmpty
|
||||
suffix: Empty
|
||||
components:
|
||||
- type: ItemSlots
|
||||
slots:
|
||||
cell_slot:
|
||||
name: power-cell-slot-component-slot-name-default
|
||||
|
||||
- type: entity
|
||||
parent: Holoprojector
|
||||
@@ -84,11 +74,6 @@
|
||||
parent: HoloprojectorField
|
||||
id: HoloprojectorFieldEmpty
|
||||
suffix: Empty
|
||||
components:
|
||||
- type: ItemSlots
|
||||
slots:
|
||||
cell_slot:
|
||||
name: power-cell-slot-component-slot-name-default
|
||||
|
||||
- type: entity
|
||||
parent: Holoprojector
|
||||
@@ -112,8 +97,3 @@
|
||||
parent: HoloprojectorSecurity
|
||||
id: HoloprojectorSecurityEmpty
|
||||
suffix: Empty
|
||||
components:
|
||||
- type: ItemSlots
|
||||
slots:
|
||||
cell_slot:
|
||||
name: power-cell-slot-component-slot-name-default
|
||||
|
||||
@@ -26,3 +26,6 @@
|
||||
hard: false
|
||||
mask:
|
||||
- Opaque
|
||||
- type: KnockdownOnCollide
|
||||
behavior: AlwaysDrop
|
||||
- type: BlurOnCollide
|
||||
|
||||
@@ -34,4 +34,3 @@
|
||||
True: { state: icon }
|
||||
False: { state: empty }
|
||||
- type: Appearance
|
||||
useBlur: true
|
||||
|
||||
@@ -1,18 +1,9 @@
|
||||
- type: entity
|
||||
name: bola
|
||||
parent: BaseItem
|
||||
parent: BaseBola
|
||||
id: Bola
|
||||
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: Construction
|
||||
graph: Bola
|
||||
node: bola
|
||||
@@ -39,6 +30,25 @@
|
||||
damage:
|
||||
types:
|
||||
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
|
||||
freeTime: 2.0
|
||||
breakoutTime: 3.5 #all bola should generally be fast to remove
|
||||
@@ -49,10 +59,8 @@
|
||||
canMoveBreakout: true
|
||||
- type: KnockdownOnCollide
|
||||
|
||||
# WD added
|
||||
|
||||
- type: entity
|
||||
parent: Bola
|
||||
parent: BaseBola
|
||||
id: CultBola
|
||||
name: Bola
|
||||
description: Linked together with some spare cuffs and metal.
|
||||
@@ -60,14 +68,12 @@
|
||||
- type: Sprite
|
||||
sprite: White/Cult/bola.rsi
|
||||
- type: Ensnaring
|
||||
freeTime: 2.0
|
||||
breakoutTime: 3.5 #all bola should generally be fast to remove
|
||||
walkSpeed: 0.5
|
||||
sprintSpeed: 0.5
|
||||
canThrowTrigger: true
|
||||
- type: CultItem
|
||||
|
||||
- type: entity
|
||||
parent: Bola
|
||||
parent: BaseBola
|
||||
id: EnergyBola
|
||||
name: Bola
|
||||
description: Linked together with some spare cuffs and metal.
|
||||
@@ -77,22 +83,7 @@
|
||||
- type: Sprite
|
||||
sprite: White/Objects/Weapons/Throwable/energybola.rsi
|
||||
- type: Ensnaring
|
||||
freeTime: 1
|
||||
breakoutTime: 2
|
||||
walkSpeed: 0.8
|
||||
sprintSpeed: 0.8
|
||||
staminaDamage: 33
|
||||
walkSpeed: 0.6
|
||||
sprintSpeed: 0.6
|
||||
- type: EmitSoundOnLand
|
||||
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