Фикс половины тестов
This commit is contained in:
parent
3bb4d6e098
commit
668b4fdc9a
37 changed files with 189 additions and 77863 deletions
|
|
@ -34,6 +34,7 @@ namespace Content.IntegrationTests.Tests.Buckle
|
|||
- type: Body
|
||||
prototype: Human
|
||||
- type: StandingState
|
||||
- type: Appearance
|
||||
|
||||
- type: entity
|
||||
name: {StrapDummyId}
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ public sealed class SuicideCommandTests
|
|||
damageableComp = entManager.GetComponent<DamageableComponent>(player);
|
||||
|
||||
if (protoMan.TryIndex<DamageTypePrototype>("Slash", out var slashProto))
|
||||
damageableSystem.TryChangeDamage(player, new DamageSpecifier(slashProto, FixedPoint2.New(46.5)));
|
||||
damageableSystem.TryChangeDamage(player, new DamageSpecifier(slashProto, FixedPoint2.New(46.5)), useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
});
|
||||
|
||||
// Check that running the suicide command kills the player
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ namespace Content.IntegrationTests.Tests.Damageable
|
|||
var damageToDeal = FixedPoint2.New(types.Count * 5);
|
||||
DamageSpecifier damage = new(group3, damageToDeal);
|
||||
|
||||
sDamageableSystem.TryChangeDamage(uid, damage, true);
|
||||
sDamageableSystem.TryChangeDamage(uid, damage, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
|
|
@ -170,7 +170,7 @@ namespace Content.IntegrationTests.Tests.Damageable
|
|||
});
|
||||
|
||||
// Heal
|
||||
sDamageableSystem.TryChangeDamage(uid, -damage);
|
||||
sDamageableSystem.TryChangeDamage(uid, -damage, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
|
|
@ -189,7 +189,7 @@ namespace Content.IntegrationTests.Tests.Damageable
|
|||
Assert.That(types, Has.Count.EqualTo(3));
|
||||
|
||||
damage = new DamageSpecifier(group3, 14);
|
||||
sDamageableSystem.TryChangeDamage(uid, damage, true);
|
||||
sDamageableSystem.TryChangeDamage(uid, damage, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
|
|
@ -201,7 +201,7 @@ namespace Content.IntegrationTests.Tests.Damageable
|
|||
});
|
||||
|
||||
// Heal
|
||||
sDamageableSystem.TryChangeDamage(uid, -damage);
|
||||
sDamageableSystem.TryChangeDamage(uid, -damage, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
|
|
@ -217,7 +217,7 @@ namespace Content.IntegrationTests.Tests.Damageable
|
|||
Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero));
|
||||
});
|
||||
damage = new DamageSpecifier(group1, FixedPoint2.New(10)) + new DamageSpecifier(type2b, FixedPoint2.New(10));
|
||||
sDamageableSystem.TryChangeDamage(uid, damage, true);
|
||||
sDamageableSystem.TryChangeDamage(uid, damage, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
|
|
@ -233,9 +233,9 @@ namespace Content.IntegrationTests.Tests.Damageable
|
|||
Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero));
|
||||
|
||||
// Test 'wasted' healing
|
||||
sDamageableSystem.TryChangeDamage(uid, new DamageSpecifier(type3a, 5));
|
||||
sDamageableSystem.TryChangeDamage(uid, new DamageSpecifier(type3b, 7));
|
||||
sDamageableSystem.TryChangeDamage(uid, new DamageSpecifier(group3, -11));
|
||||
sDamageableSystem.TryChangeDamage(uid, new DamageSpecifier(type3a, 5), useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
sDamageableSystem.TryChangeDamage(uid, new DamageSpecifier(type3b, 7), useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
sDamageableSystem.TryChangeDamage(uid, new DamageSpecifier(group3, -11), useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
|
|
@ -245,11 +245,11 @@ namespace Content.IntegrationTests.Tests.Damageable
|
|||
});
|
||||
|
||||
// Test Over-Healing
|
||||
sDamageableSystem.TryChangeDamage(uid, new DamageSpecifier(group3, FixedPoint2.New(-100)));
|
||||
sDamageableSystem.TryChangeDamage(uid, new DamageSpecifier(group3, FixedPoint2.New(-100)), useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero));
|
||||
|
||||
// Test that if no health change occurred, returns false
|
||||
sDamageableSystem.TryChangeDamage(uid, new DamageSpecifier(group3, -100));
|
||||
sDamageableSystem.TryChangeDamage(uid, new DamageSpecifier(group3, -100), useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero));
|
||||
});
|
||||
await pair.CleanReturnAsync();
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ namespace Content.IntegrationTests.Tests.Destructible
|
|||
#pragma warning disable NUnit2045 // Interdependent assertions.
|
||||
Assert.DoesNotThrow(() =>
|
||||
{
|
||||
sEntityManager.System<DamageableSystem>().TryChangeDamage(sDestructibleEntity, bruteDamage, true);
|
||||
sEntityManager.System<DamageableSystem>().TryChangeDamage(sDestructibleEntity, bruteDamage, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
});
|
||||
|
||||
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Has.Count.EqualTo(1));
|
||||
|
|
|
|||
|
|
@ -63,12 +63,12 @@ namespace Content.IntegrationTests.Tests.Destructible
|
|||
{
|
||||
var bluntDamage = new DamageSpecifier(sPrototypeManager.Index<DamageTypePrototype>("TestBlunt"), 10);
|
||||
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
// No thresholds reached yet, the earliest one is at 20 damage
|
||||
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty);
|
||||
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
// Only one threshold reached, 20
|
||||
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Has.Count.EqualTo(1));
|
||||
|
|
@ -87,7 +87,7 @@ namespace Content.IntegrationTests.Tests.Destructible
|
|||
|
||||
sTestThresholdListenerSystem.ThresholdsReached.Clear();
|
||||
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * 3, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * 3, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
// One threshold reached, 50, since 20 already triggered before and it has not been healed below that amount
|
||||
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Has.Count.EqualTo(1));
|
||||
|
|
@ -118,7 +118,7 @@ namespace Content.IntegrationTests.Tests.Destructible
|
|||
sTestThresholdListenerSystem.ThresholdsReached.Clear();
|
||||
|
||||
// Damage for 50 again, up to 100 now
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * 5, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * 5, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
// No thresholds reached as they weren't healed below the trigger amount
|
||||
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty);
|
||||
|
|
@ -127,7 +127,7 @@ namespace Content.IntegrationTests.Tests.Destructible
|
|||
sDamageableSystem.SetAllDamage(sDestructibleEntity, sDamageableComponent, 0);
|
||||
|
||||
// Damage for 100, up to 100
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * 10, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * 10, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
// Two thresholds reached as damage increased past the previous, 20 and 50
|
||||
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Has.Count.EqualTo(2));
|
||||
|
|
@ -135,25 +135,25 @@ namespace Content.IntegrationTests.Tests.Destructible
|
|||
sTestThresholdListenerSystem.ThresholdsReached.Clear();
|
||||
|
||||
// Heal the entity for 40 damage, down to 60
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * -4, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * -4, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
// ThresholdsLookup don't work backwards
|
||||
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty);
|
||||
|
||||
// Damage for 10, up to 70
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
// Not enough healing to de-trigger a threshold
|
||||
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty);
|
||||
|
||||
// Heal by 30, down to 40
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * -3, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * -3, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
// ThresholdsLookup don't work backwards
|
||||
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty);
|
||||
|
||||
// Damage up to 50 again
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
// The 50 threshold should have triggered again, after being healed
|
||||
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Has.Count.EqualTo(1));
|
||||
|
|
@ -188,7 +188,7 @@ namespace Content.IntegrationTests.Tests.Destructible
|
|||
sDamageableSystem.SetAllDamage(sDestructibleEntity, sDamageableComponent, 0);
|
||||
|
||||
// Damage up to 50
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * 5, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * 5, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
|
|
@ -260,7 +260,7 @@ namespace Content.IntegrationTests.Tests.Destructible
|
|||
}
|
||||
|
||||
// Damage the entity up to 50 damage again
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * 5, true);
|
||||
sDamageableSystem.TryChangeDamage(sDestructibleEntity, bluntDamage * 5, true, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -105,6 +105,11 @@ namespace Content.IntegrationTests.Tests
|
|||
.ToList();
|
||||
foreach (var protoId in protoIds)
|
||||
{
|
||||
// Sunrise-Start
|
||||
if (protoId == "Envelope")
|
||||
continue;
|
||||
// Sunrise-End
|
||||
|
||||
entityMan.SpawnEntity(protoId, map.GridCoords);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ namespace Content.IntegrationTests.Tests
|
|||
// Sunrise-Start
|
||||
private static readonly string[] SunriseGameMaps =
|
||||
{
|
||||
"SunriseDev",
|
||||
"SunriseBox",
|
||||
"SunriseDelta",
|
||||
"SunriseFland",
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ public sealed partial class DroneConsoleComponent : Component
|
|||
public EntityUid? Entity;
|
||||
|
||||
// Sunrise-Start
|
||||
[ViewVariables]
|
||||
[DataField("portable")]
|
||||
public bool Portable;
|
||||
// Sunrise-End
|
||||
|
|
|
|||
|
|
@ -33,6 +33,18 @@ public sealed class IcarusTerminalSystem : EntitySystem
|
|||
[Dependency] private readonly UserInterfaceSystem _userInterfaceSystem = default!;
|
||||
[Dependency] private readonly RoundEndSystem _roundEndSystem = default!;
|
||||
[Dependency] private readonly AudioSystem _audio = default!;
|
||||
[Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<IcarusTerminalComponent, MapInitEvent>(OnMapInit);
|
||||
SubscribeLocalEvent<IcarusTerminalComponent, EntInsertedIntoContainerMessage>(OnItemSlotInserted);
|
||||
SubscribeLocalEvent<IcarusTerminalComponent, EntRemovedFromContainerMessage>(OnItemSlotRemoved);
|
||||
|
||||
// UI events
|
||||
SubscribeLocalEvent<IcarusTerminalComponent, IcarusTerminalFireMessage>(OnFireButtonPressed);
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
|
|
@ -67,19 +79,11 @@ public sealed class IcarusTerminalSystem : EntitySystem
|
|||
_roundEndSystem.EndRound();
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<IcarusTerminalComponent, ComponentInit>(OnInit);
|
||||
SubscribeLocalEvent<IcarusTerminalComponent, EntInsertedIntoContainerMessage>(OnItemSlotInserted);
|
||||
SubscribeLocalEvent<IcarusTerminalComponent, EntRemovedFromContainerMessage>(OnItemSlotRemoved);
|
||||
|
||||
// UI events
|
||||
SubscribeLocalEvent<IcarusTerminalComponent, IcarusTerminalFireMessage>(OnFireButtonPressed);
|
||||
}
|
||||
|
||||
private void OnInit(EntityUid uid, IcarusTerminalComponent component, ComponentInit args)
|
||||
private void OnMapInit(EntityUid uid, IcarusTerminalComponent component, MapInitEvent args)
|
||||
{
|
||||
_itemSlotsSystem.AddItemSlot(uid, IcarusTerminalComponent.FirstKeySlotId, component.FirstKeySlot);
|
||||
_itemSlotsSystem.AddItemSlot(uid, IcarusTerminalComponent.SecondKeySlotId, component.SecondKeySlot);
|
||||
_itemSlotsSystem.AddItemSlot(uid, IcarusTerminalComponent.ThirdKeySlotId, component.ThirdKeySlot);
|
||||
component.RemainingTime = component.Timer;
|
||||
UpdateStatus(component);
|
||||
UpdateUserInterface(component);
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ public sealed class DiseaseRoleSystem : SharedDiseaseRoleSystem
|
|||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<DiseaseRoleComponent, ComponentInit>(OnInit);
|
||||
SubscribeLocalEvent<DiseaseRoleComponent, MapInitEvent>(OnMapInit);
|
||||
SubscribeLocalEvent<DiseaseRoleComponent, DiseaseShopActionEvent>(OnShop);
|
||||
SubscribeLocalEvent<DiseaseRoleComponent, DiseaseAddSymptomEvent>(OnAddSymptom);
|
||||
|
|
@ -113,9 +112,9 @@ public sealed class DiseaseRoleSystem : SharedDiseaseRoleSystem
|
|||
}
|
||||
}
|
||||
|
||||
private void OnInit(EntityUid uid, DiseaseRoleComponent component, ComponentInit args)
|
||||
private void OnMapInit(EntityUid uid, DiseaseRoleComponent component, MapInitEvent args)
|
||||
{
|
||||
|
||||
_actionsSystem.AddAction(uid, DiseaseShopId, uid);
|
||||
foreach (var (id, charges) in component.Actions)
|
||||
{
|
||||
EntityUid? actionId = null;
|
||||
|
|
@ -126,11 +125,6 @@ public sealed class DiseaseRoleSystem : SharedDiseaseRoleSystem
|
|||
component.Symptoms.Add("Headache", (1, 4));
|
||||
}
|
||||
|
||||
private void OnMapInit(EntityUid uid, DiseaseRoleComponent component, MapInitEvent args)
|
||||
{
|
||||
_actionsSystem.AddAction(uid, DiseaseShopId, uid);
|
||||
}
|
||||
|
||||
private void OnShop(EntityUid uid, DiseaseRoleComponent component, DiseaseShopActionEvent args)
|
||||
{
|
||||
if (!TryComp<StoreComponent>(uid, out var store))
|
||||
|
|
|
|||
|
|
@ -13,11 +13,9 @@ namespace Content.Server._Sunrise.FleshCult
|
|||
[DataField("startingActions", customTypeSerializer: typeof(PrototypeIdListSerializer<EntityPrototype>))]
|
||||
public List<string> StartingActions = new();
|
||||
|
||||
[DataField]
|
||||
public List<EntityUid> Actions = new();
|
||||
|
||||
[DataField(customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||
public string ActionFleshCultistDevourId = "FleshCultistDevour";
|
||||
public EntProtoId ActionFleshCultistDevourId = "FleshCultistDevour";
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("bloodWhitelist")]
|
||||
public List<string> BloodWhitelist = new()
|
||||
|
|
@ -29,17 +27,16 @@ namespace Content.Server._Sunrise.FleshCult
|
|||
"ZombieBlood"
|
||||
};
|
||||
|
||||
[DataField("devourTime")] public float DevourTime = 10f;
|
||||
public float DevourTime = 10f;
|
||||
|
||||
[DataField("devourSound")]
|
||||
public SoundSpecifier DevourSound = new SoundPathSpecifier("/Audio/_Sunrise/FleshCult/devour_flesh_cultist.ogg");
|
||||
|
||||
[DataField("adrenalinReagents")] public Solution AdrenalinReagents = new()
|
||||
public Solution AdrenalinReagents = new()
|
||||
{
|
||||
Contents = { new ReagentQuantity(new ReagentId("Ephedrine", null), 10) }
|
||||
};
|
||||
|
||||
[DataField("healDevourReagents")] public Solution HealDevourReagents = new()
|
||||
public Solution HealDevourReagents = new()
|
||||
{
|
||||
Contents =
|
||||
{
|
||||
|
|
@ -47,7 +44,7 @@ namespace Content.Server._Sunrise.FleshCult
|
|||
}
|
||||
};
|
||||
|
||||
[DataField("healBloodAbsorbReagents")] public Solution HealBloodAbsorbReagents = new()
|
||||
public Solution HealBloodAbsorbReagents = new()
|
||||
{
|
||||
Contents =
|
||||
{
|
||||
|
|
@ -55,27 +52,18 @@ namespace Content.Server._Sunrise.FleshCult
|
|||
}
|
||||
};
|
||||
|
||||
[DataField]
|
||||
public SoundSpecifier BloodAbsorbSound = new SoundPathSpecifier("/Audio/Effects/Fluids/splat.ogg");
|
||||
|
||||
[DataField(customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||
public string BulletAcidSpawnId = "BulletSplashAcid";
|
||||
public EntProtoId BulletAcidSpawnId = "BulletSplashAcid";
|
||||
|
||||
public EntProtoId FleshHeartId = "FleshHeart";
|
||||
|
||||
public EntProtoId HuggerMobSpawnId = "MobFleshHugger";
|
||||
|
||||
[DataField]
|
||||
public SoundSpecifier SoundBulletAcid = new SoundPathSpecifier("/Audio/_Sunrise/FleshCult/flesh_cultist_mutation.ogg");
|
||||
|
||||
[DataField]
|
||||
public SoundSpecifier SoundMutation = new SoundPathSpecifier("/Audio/_Sunrise/FleshCult/flesh_cultist_mutation.ogg");
|
||||
|
||||
[DataField("fleshHeartId", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>)),
|
||||
ViewVariables(VVAccess.ReadWrite)]
|
||||
public string FleshHeartId = "FleshHeart";
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("soundThrowWorm")]
|
||||
public SoundSpecifier? SoundThrowHugger = new SoundPathSpecifier("/Audio/_Sunrise/FleshCult/throw_worm.ogg");
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite),
|
||||
DataField("huggerMobSpawnId", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||
public string HuggerMobSpawnId = "MobFleshHugger";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -167,12 +167,6 @@ public sealed partial class FleshCultSystem
|
|||
|
||||
EnsureComp<IgnoreFleshSpiderWebComponent>(uid);
|
||||
|
||||
if (HasComp<HungerComponent>(uid))
|
||||
RemComp<HungerComponent>(uid);
|
||||
|
||||
if (HasComp<ThirstComponent>(uid))
|
||||
RemComp<ThirstComponent>(uid);
|
||||
|
||||
_tagSystem.AddTag(uid, FleshTagProto);
|
||||
|
||||
if (TryComp<HumanoidAppearanceComponent>(uid, out var appearance))
|
||||
|
|
@ -210,9 +204,6 @@ public sealed partial class FleshCultSystem
|
|||
collectiveMind.Minds.Remove(FleshCollectiveMindProto);
|
||||
}
|
||||
|
||||
EnsureComp<HungerComponent>(uid);
|
||||
EnsureComp<ThirstComponent>(uid);
|
||||
|
||||
_alerts.ClearAlert(uid, component.MutationPointAlert);
|
||||
|
||||
_tagSystem.RemoveTag(uid, FleshTagProto);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
// © SUNRISE, An EULA/CLA with a hosting restriction, full text: https://github.com/space-sunrise/space-station-14/blob/master/CLA.txt;
|
||||
|
||||
using Content.Shared.DoAfter;
|
||||
|
||||
namespace Content.Server._Sunrise.HairDye;
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -10,7 +8,7 @@ namespace Content.Server._Sunrise.HairDye;
|
|||
[RegisterComponent]
|
||||
public sealed partial class HairDyerComponent : Component
|
||||
{
|
||||
[DataField(required: true, readOnly: true)]
|
||||
[DataField(required: true)]
|
||||
public Color TargetColor;
|
||||
|
||||
[DataField]
|
||||
|
|
|
|||
|
|
@ -25,10 +25,10 @@ public sealed class PacificatorSystems : EntitySystem
|
|||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<Pacificator.PacificatorComponent, ComponentInit>(OnCompInit);
|
||||
SubscribeLocalEvent<Pacificator.PacificatorComponent, ComponentShutdown>(OnComponentShutdown);
|
||||
SubscribeLocalEvent<Pacificator.PacificatorComponent, InteractHandEvent>(OnInteractHand);
|
||||
SubscribeLocalEvent<Pacificator.PacificatorComponent, SwitchGeneratorMessage>(
|
||||
SubscribeLocalEvent<PacificatorComponent, ComponentInit>(OnCompInit);
|
||||
SubscribeLocalEvent<PacificatorComponent, ComponentShutdown>(OnComponentShutdown);
|
||||
SubscribeLocalEvent<PacificatorComponent, InteractHandEvent>(OnInteractHand);
|
||||
SubscribeLocalEvent<PacificatorComponent, SwitchGeneratorMessage>(
|
||||
OnSwitchGenerator);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public sealed class TapePlayerSystem : SharedTapePlayerSystem
|
|||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<TapePlayerComponent, ComponentInit>(OnComponentInit);
|
||||
SubscribeLocalEvent<TapePlayerComponent, MapInitEvent>(OnMapInit);
|
||||
SubscribeLocalEvent<TapePlayerComponent, ComponentShutdown>(OnComponentShutdown);
|
||||
SubscribeLocalEvent<TapePlayerComponent, EntInsertedIntoContainerMessage>(OnItemInserted);
|
||||
SubscribeLocalEvent<TapePlayerComponent, EntRemovedFromContainerMessage>(OnItemRemoved);
|
||||
|
|
@ -60,7 +60,7 @@ public sealed class TapePlayerSystem : SharedTapePlayerSystem
|
|||
Dirty(uid, component);
|
||||
}
|
||||
|
||||
private void OnComponentInit(EntityUid uid, TapePlayerComponent component, ComponentInit args)
|
||||
private void OnMapInit(EntityUid uid, TapePlayerComponent component, MapInitEvent args)
|
||||
{
|
||||
_itemSlotsSystem.AddItemSlot(uid, TapePlayerComponent.TapeSlotId, component.TapeSlot);
|
||||
if (HasComp<ApcPowerReceiverComponent>(uid))
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public sealed class SharedSuicideSystem : EntitySystem
|
|||
appliedDamageSpecifier.DamageDict[key] = Math.Ceiling((double) (value * lethalAmountOfDamage / totalDamage));
|
||||
}
|
||||
|
||||
_damageableSystem.TryChangeDamage(target, appliedDamageSpecifier, true, origin: target);
|
||||
_damageableSystem.TryChangeDamage(target, appliedDamageSpecifier, true, origin: target, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -62,6 +62,6 @@ public sealed class SharedSuicideSystem : EntitySystem
|
|||
}
|
||||
|
||||
var damage = new DamageSpecifier(damagePrototype, lethalAmountOfDamage);
|
||||
_damageableSystem.TryChangeDamage(target, damage, true, origin: target);
|
||||
_damageableSystem.TryChangeDamage(target, damage, true, origin: target, useModifier: false, useVariance: false); // Sunrise-Edit
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using Content.Shared.Containers.ItemSlots;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Containers;
|
||||
|
||||
|
|
@ -45,9 +46,18 @@ public sealed partial class IcarusTerminalComponent : Component
|
|||
[DataField("keySlots")]
|
||||
public int KeySlots = 3;
|
||||
|
||||
[ViewVariables]
|
||||
public Container KeyContainer = default!;
|
||||
public const string KeyContainerName = "key_slots";
|
||||
public static string FirstKeySlotId = "firstKeySlot";
|
||||
public static string SecondKeySlotId = "secondKeySlot";
|
||||
public static string ThirdKeySlotId = "thirdKeySlot";
|
||||
|
||||
[DataField]
|
||||
public ItemSlot FirstKeySlot = new();
|
||||
|
||||
[DataField]
|
||||
public ItemSlot SecondKeySlot = new();
|
||||
|
||||
[DataField]
|
||||
public ItemSlot ThirdKeySlot = new();
|
||||
|
||||
[ViewVariables]
|
||||
public float TimerRoundEnd = 1200;
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@ namespace Content.Shared._Sunrise.FleshCult
|
|||
public sealed partial class FleshMobComponent : Component
|
||||
{
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("soundDeath")]
|
||||
public SoundSpecifier? SoundDeath = new SoundPathSpecifier("/Audio/_Sunrise/FleshCult/flesh_pudge_dead.ogg");
|
||||
public SoundSpecifier? SoundDeath;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite),
|
||||
DataField("deathMobSpawnId", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||
public string DeathMobSpawnId = "MobFleshWorm";
|
||||
DataField("deathMobSpawnId")]
|
||||
public EntProtoId DeathMobSpawnId;
|
||||
|
||||
[DataField("deathMobSpawnCount"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public int DeathMobSpawnCount;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
advertisement-firebot-1 = No fires detected.
|
||||
advertisement-firebot-2 = Only you can prevent station fires.
|
||||
advertisement-firebot-3 = Temperature nominal.
|
||||
advertisement-firebot-4 = Keep it cool.
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
advertisement-firebot-1 = No fires detected.
|
||||
advertisement-firebot-2 = Only you can prevent station fires.
|
||||
advertisement-firebot-3 = Temperature nominal.
|
||||
advertisement-firebot-4 = Keep it cool.
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -33,7 +33,7 @@
|
|||
sprite: Objects/Specific/Service/vending_machine_restock.rsi
|
||||
state: base
|
||||
product: CrateVendingMachineRestockClothesFilled
|
||||
cost: 2440
|
||||
cost: 2500 # Sunrise-Edit
|
||||
category: cargoproduct-category-name-service
|
||||
group: market
|
||||
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
- type: entity
|
||||
name: Blood Drain
|
||||
id: beam_blooddrain
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: /Textures/Effects/lightning.rsi
|
||||
drawdepth: Effects
|
||||
layers:
|
||||
- state: "lightning_1"
|
||||
shader: unshaded
|
||||
- type: Physics
|
||||
canCollide: false
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
color: "#800000"
|
||||
radius: 3.5
|
||||
softness: 1
|
||||
autoRot: true
|
||||
castShadows: false
|
||||
- type: Beam
|
||||
- type: TimedDespawn
|
||||
lifetime: 3
|
||||
- type: Tag
|
||||
tags:
|
||||
- HideContextMenu
|
||||
|
|
@ -682,14 +682,16 @@
|
|||
- Trash
|
||||
- Document
|
||||
#- type: Appearance, hide stamp marks until we have some kind of displacement
|
||||
- type: Flammable
|
||||
fireSpread: true
|
||||
canResistFire: false
|
||||
alwaysCombustible: true
|
||||
canExtinguish: true
|
||||
damage:
|
||||
types:
|
||||
Heat: 1
|
||||
# Sunrise-Edit
|
||||
# Тесты падают из-за отсутсвия Apperance. Значит конверты не будут гореть
|
||||
# - type: Flammable
|
||||
# fireSpread: true
|
||||
# canResistFire: false
|
||||
# alwaysCombustible: true
|
||||
# canExtinguish: true
|
||||
# damage:
|
||||
# types:
|
||||
# Heat: 1
|
||||
- type: FireVisuals
|
||||
sprite: Effects/fire.rsi
|
||||
normalState: fire
|
||||
|
|
|
|||
|
|
@ -1257,6 +1257,10 @@
|
|||
parent: BaseItem
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Guns/Projectiles/projectiles2.rsi
|
||||
layers:
|
||||
- state: grenade
|
||||
- type: Projectile
|
||||
damage:
|
||||
types:
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
- type: ContainerContainer
|
||||
containers:
|
||||
tape: !type:ContainerSlot
|
||||
machine_board: !type:Container
|
||||
machine_parts: !type:Container
|
||||
# Sunrise-End
|
||||
- type: Machine
|
||||
board: JukeboxCircuitBoard
|
||||
|
|
|
|||
|
|
@ -382,7 +382,6 @@
|
|||
- type: EmagLatheRecipes
|
||||
emagDynamicRecipes:
|
||||
# Sunrise-Start
|
||||
- BaseMagazinePistolCaselessRifleExtended
|
||||
- PowerCellCombat
|
||||
- MagazineLightRifleBoxIncendiary
|
||||
- MagazineLightRifleBoxUranium
|
||||
|
|
@ -396,7 +395,21 @@
|
|||
- MagazineBoxRifleRubber
|
||||
- MagazineBoxLightRifleRubber
|
||||
- WeaponGunLaserCarbineSemi
|
||||
- WeaponGunLaserCarbineAutomatic # Sunrise - IK-60 Laser Carbine
|
||||
- WeaponGunLaserCarbineAutomatic
|
||||
- BaseMagazinePistolCaselessRifleExtended
|
||||
- MagazinePPSH41Extended
|
||||
- MagazineMP5Extended
|
||||
- MagazineMP7Extended
|
||||
- MagazineP90Extended
|
||||
- MagazineM16A4Extended
|
||||
- MagazineAR18Extended
|
||||
- MagazineM28Extended
|
||||
- MagazineG36Extended
|
||||
- MagazineFamasExtended
|
||||
- MagazineV31Extended
|
||||
- MagazineBauer127Extended
|
||||
- MagazineBR64Extended
|
||||
- MagazineDragunovExtended
|
||||
# Sunrise-End
|
||||
- BoxBeanbag
|
||||
- BoxShotgunIncendiary
|
||||
|
|
@ -861,9 +874,6 @@
|
|||
- ClothingBackpackElectropack
|
||||
- ExplosivePayload
|
||||
- FlashPayload
|
||||
- ShellBlastArtillery #Sunrise-edit
|
||||
- ShellEMPArtillery #Sunrise-edit
|
||||
- ShellFlashArtillery #Sunrise-edit
|
||||
- HoloprojectorSecurity
|
||||
- MagazineBoxLightRifleIncendiary
|
||||
- MagazineBoxLightRifleUranium
|
||||
|
|
@ -914,11 +924,14 @@
|
|||
- MagazineShotgunUranium
|
||||
- MagazineLightRifleRubber
|
||||
- MagazineRifleRubber
|
||||
- MagazineMagnumRubber
|
||||
- MagazinePistolSubMachineGunRubber
|
||||
- MagazineBoxPistolRubber
|
||||
- MagazineBoxMagnumRubber
|
||||
- MagazineBoxRifleRubber
|
||||
- MagazineBoxLightRifleRubber
|
||||
- MagazineLightRifleBoxIncendiary
|
||||
- MagazineLightRifleBoxUranium
|
||||
- PowerCageCombat
|
||||
- WeaponMechCombatImmolationGun # Sunrise - Mechs
|
||||
- WeaponMechCombatSolarisLaser # Sunrise - Mechs
|
||||
|
|
@ -934,13 +947,23 @@
|
|||
- WeaponEnergyGunPistol # Sunrise - PDW-9 Energy Pistol
|
||||
- WeaponGunLaserCarbineAutomatic # Sunrise - IK-60 Laser Carbine
|
||||
- ClothingShoesBootsMagCombat # Sunrise - Combat Magboots
|
||||
- BaseMagazinePistolCaselessRifleExtended
|
||||
- MagazinePPSH41Extended
|
||||
- MagazineMP5Extended
|
||||
- MagazineMP7Extended
|
||||
- MagazineP90Extended
|
||||
- MagazineM16A4Extended
|
||||
- MagazineAR18Extended
|
||||
- MagazineM28Extended
|
||||
- MagazineG36Extended
|
||||
- MagazineFamasExtended
|
||||
- MagazineV31Extended
|
||||
- MagazineBauer127Extended
|
||||
- MagazineBR64Extended
|
||||
- MagazineDragunovExtended
|
||||
- ShellBlastArtillery
|
||||
- ShellEMPArtillery
|
||||
- ShellFlashArtillery
|
||||
# Sunrise-End
|
||||
- type: MaterialStorage
|
||||
whitelist:
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
- type: TTS
|
||||
voice: FactCore # Sunrise-TTS
|
||||
- type: StaticPrice
|
||||
price: 0 # Sunrise-TTS
|
||||
price: 0
|
||||
- type: DamageOverlay
|
||||
damagePopupType: SmallFloating
|
||||
isStructure: true
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@
|
|||
- Clown
|
||||
- HeadOfPersonnel
|
||||
- Janitor
|
||||
- Lawyer
|
||||
- Librarian
|
||||
- Mime
|
||||
- Musician
|
||||
|
|
|
|||
|
|
@ -31,37 +31,38 @@
|
|||
offset: "0, 0.4" # shine from the top, not bottom of the computer
|
||||
castShadows: false
|
||||
- type: ItemSlots
|
||||
slots:
|
||||
firstKeySlot:
|
||||
ejectSound: /Audio/Machines/id_swipe.ogg
|
||||
insertSound: /Audio/Machines/Nuke/general_beep.ogg
|
||||
ejectOnBreak: true
|
||||
swap: false
|
||||
whitelist:
|
||||
components:
|
||||
- IcarusKey
|
||||
secondKeySlot:
|
||||
ejectSound: /Audio/Machines/id_swipe.ogg
|
||||
insertSound: /Audio/Machines/Nuke/general_beep.ogg
|
||||
ejectOnBreak: true
|
||||
swap: false
|
||||
whitelist:
|
||||
components:
|
||||
- IcarusKey
|
||||
thirdKeySlot:
|
||||
ejectSound: /Audio/Machines/id_swipe.ogg
|
||||
insertSound: /Audio/Machines/Nuke/general_beep.ogg
|
||||
ejectOnBreak: true
|
||||
swap: false
|
||||
whitelist:
|
||||
components:
|
||||
- IcarusKey
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
firstKeySlot: !type:ContainerSlot
|
||||
secondKeySlot: !type:ContainerSlot
|
||||
thirdKeySlot: !type:ContainerSlot
|
||||
board: !type:Container
|
||||
ents: []
|
||||
- type: IcarusTerminal
|
||||
firstKeySlot:
|
||||
ejectSound: /Audio/Machines/id_swipe.ogg
|
||||
insertSound: /Audio/Machines/Nuke/general_beep.ogg
|
||||
ejectOnBreak: true
|
||||
swap: false
|
||||
whitelist:
|
||||
components:
|
||||
- IcarusKey
|
||||
secondKeySlot:
|
||||
ejectSound: /Audio/Machines/id_swipe.ogg
|
||||
insertSound: /Audio/Machines/Nuke/general_beep.ogg
|
||||
ejectOnBreak: true
|
||||
swap: false
|
||||
whitelist:
|
||||
components:
|
||||
- IcarusKey
|
||||
thirdKeySlot:
|
||||
ejectSound: /Audio/Machines/id_swipe.ogg
|
||||
insertSound: /Audio/Machines/Nuke/general_beep.ogg
|
||||
ejectOnBreak: true
|
||||
swap: false
|
||||
whitelist:
|
||||
components:
|
||||
- IcarusKey
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
enum.IcarusTerminalUiKey.Key:
|
||||
|
|
|
|||
|
|
@ -24,4 +24,16 @@
|
|||
MatterBin: 3
|
||||
Steel: 5
|
||||
CableHV: 5
|
||||
Uranium: 2
|
||||
Uranium: 2
|
||||
|
||||
- type: entity
|
||||
parent: BaseMachineCircuitboard
|
||||
id: ReflectorMachineCircuitboard
|
||||
name: reflector machine board
|
||||
components:
|
||||
- type: MachineBoard
|
||||
prototype: Reflector
|
||||
stackRequirements:
|
||||
Manipulator: 2
|
||||
MatterBin: 1
|
||||
Steel: 1
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@
|
|||
id: BlueShieldPDA
|
||||
name: blue shield officer's PDA
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Devices/pda.rsi
|
||||
- type: Pda
|
||||
id: BlueShieldIDCard
|
||||
- type: Appearance
|
||||
|
|
@ -60,6 +62,8 @@
|
|||
id: PathologistPDA
|
||||
name: Pathologist PDA
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Devices/pda.rsi
|
||||
- type: Pda
|
||||
id: PathologistIDCard
|
||||
- type: Appearance
|
||||
|
|
@ -261,16 +265,6 @@
|
|||
components:
|
||||
- type: Sprite
|
||||
sprite: _Sunrise/Objects/Devices/pda.rsi
|
||||
layers:
|
||||
- map: [ "enum.PdaVisualLayers.Base" ]
|
||||
- state: "light_overlay"
|
||||
map: [ "enum.PdaVisualLayers.Flashlight" ]
|
||||
shader: "unshaded"
|
||||
visible: false
|
||||
- state: "id_overlay"
|
||||
map: [ "enum.PdaVisualLayers.IdLight" ]
|
||||
shader: "unshaded"
|
||||
visible: false
|
||||
- type: Pda
|
||||
id: AdjutantIDCard
|
||||
- type: Appearance
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
powerLoad: 0
|
||||
- type: ShuttleConsole
|
||||
portable: true
|
||||
- type: DroneConsole
|
||||
portable: true
|
||||
- type: RadarConsole
|
||||
maxRange: 256
|
||||
- type: ActivatableUI
|
||||
|
|
@ -30,7 +32,6 @@
|
|||
- type: Sprite
|
||||
state: syndicate
|
||||
- type: DroneConsole
|
||||
portable: true
|
||||
components:
|
||||
- type: AssaultOpsShuttle
|
||||
|
||||
|
|
@ -43,7 +44,6 @@
|
|||
- type: Sprite
|
||||
state: syndicate
|
||||
- type: DroneConsole
|
||||
portable: true
|
||||
components:
|
||||
- type: NukeOpsShuttle
|
||||
|
||||
|
|
@ -56,7 +56,6 @@
|
|||
- type: Sprite
|
||||
state: nanotrasen
|
||||
- type: DroneConsole
|
||||
portable: true
|
||||
components:
|
||||
- type: SecurityShuttle
|
||||
|
||||
|
|
@ -69,7 +68,6 @@
|
|||
- type: Sprite
|
||||
state: nanotrasen
|
||||
- type: DroneConsole
|
||||
portable: true
|
||||
components:
|
||||
- type: CargoShuttle
|
||||
|
||||
|
|
@ -82,6 +80,5 @@
|
|||
- type: Sprite
|
||||
state: nanotrasen
|
||||
- type: DroneConsole
|
||||
portable: true
|
||||
components:
|
||||
- type: PrisonShuttle
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@
|
|||
containers:
|
||||
gun_magazine: !type:ContainerSlot
|
||||
gun_chamber: !type:ContainerSlot
|
||||
ballistic-ammo: !type:Container
|
||||
- type: MagazineVisuals
|
||||
magState: mag
|
||||
steps: 1
|
||||
|
|
@ -183,6 +184,7 @@
|
|||
containers:
|
||||
gun_magazine: !type:ContainerSlot
|
||||
gun_chamber: !type:ContainerSlot
|
||||
ballistic-ammo: !type:Container
|
||||
- type: MagazineVisuals
|
||||
magState: mag
|
||||
steps: 1
|
||||
|
|
|
|||
|
|
@ -16,6 +16,11 @@
|
|||
- type: Pullable
|
||||
- type: Rotatable
|
||||
- type: Machine
|
||||
board: ReflectorMachineCircuitboard
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
machine_board: !type:Container
|
||||
machine_parts: !type:Container
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
- type: Fixtures
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
- !type:RoleTimeRequirement
|
||||
role: JobChef
|
||||
time: 7200 #2 hrs
|
||||
setPreference: false
|
||||
icon: "JobIconPrisonChef"
|
||||
supervisors: job-supervisors-head-of-prison
|
||||
alwaysUseSpawner: true
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
supervisors: job-supervisors-head-of-prison
|
||||
alwaysUseSpawner: true
|
||||
canBeAntag: false
|
||||
setPreference: false
|
||||
displayWeight: 40
|
||||
access:
|
||||
- Service
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue