diff --git a/Content.Server/Abilities/Mime/MimePowersComponent.cs b/Content.Server/Abilities/Mime/MimePowersComponent.cs index fd4fc2c2af..9894414faf 100644 --- a/Content.Server/Abilities/Mime/MimePowersComponent.cs +++ b/Content.Server/Abilities/Mime/MimePowersComponent.cs @@ -47,5 +47,8 @@ namespace Content.Server.Abilities.Mime /// [DataField("vowCooldown")] public TimeSpan VowCooldown = TimeSpan.FromMinutes(5); + + [DataField] // WD + public bool CanBreakVow = true; } } diff --git a/Content.Server/Abilities/Mime/MimePowersSystem.cs b/Content.Server/Abilities/Mime/MimePowersSystem.cs index 629fe99344..3c3e32bea7 100644 --- a/Content.Server/Abilities/Mime/MimePowersSystem.cs +++ b/Content.Server/Abilities/Mime/MimePowersSystem.cs @@ -108,6 +108,9 @@ namespace Content.Server.Abilities.Mime if (!Resolve(uid, ref mimePowers)) return; + if (!mimePowers.CanBreakVow) // WD + return; + if (mimePowers.VowBroken) return; diff --git a/Content.Server/Changeling/ChangelingSystem.Abilities.cs b/Content.Server/Changeling/ChangelingSystem.Abilities.cs index d05b0845c3..8e87a63927 100644 --- a/Content.Server/Changeling/ChangelingSystem.Abilities.cs +++ b/Content.Server/Changeling/ChangelingSystem.Abilities.cs @@ -3,6 +3,7 @@ using Content.Server._White.Carrying; using Content.Server._White.Cult.GameRule; using Content.Server._White.Mood; using Content.Server._White.Other.FastAndFuriousSystem; +using Content.Server._White.Wizard; using Content.Server.Administration.Systems; using Content.Server.Bible.Components; using Content.Server.Body.Components; @@ -404,7 +405,7 @@ public sealed partial class ChangelingSystem if (!_ui.TryGetUi(user, TransformStingSelectorUiKey.Key, out var bui)) return; - if (HasComp(target) || HasComp(target) || + if (HasComp(target) || HasComp(target) || HasComp(target) || _tag.HasTag(target, "Unimplantable")) // Terminator check { _popup.PopupEntity(Loc.GetString("changeling-popup-transform-not-effective"), user, user); diff --git a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs index e5a75f0f0e..ebdbdd480f 100644 --- a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs @@ -46,6 +46,7 @@ using Robust.Shared.Random; using Robust.Shared.Utility; using System.Linq; using Content.Shared.FixedPoint; +using Content.Shared.Mind; namespace Content.Server.GameTicking.Rules; @@ -215,12 +216,9 @@ public sealed class NukeopsRuleSystem : GameRuleSystem ev.AddLine(Loc.GetString("nukeops-list-start")); - var nukiesQuery = EntityQueryEnumerator(); - while (nukiesQuery.MoveNext(out var nukeopsUid, out _, out var mindContainer)) + var nukiesQuery = EntityQueryEnumerator(); + while (nukiesQuery.MoveNext(out var nukeopsUid, out _, out var mind)) { - if (!_mind.TryGetMind(nukeopsUid, out _, out var mind, mindContainer)) - continue; - ev.AddLine(mind.Session != null ? Loc.GetString("nukeops-list-name-user", ("name", Name(nukeopsUid)), ("user", mind.Session.Name)) : Loc.GetString("nukeops-list-name", ("name", Name(nukeopsUid)))); @@ -895,4 +893,4 @@ public sealed class NukeopsRuleSystem : GameRuleSystem EnsureComp(transferTo); RemComp(transferFrom); } -} \ No newline at end of file +} diff --git a/Content.Server/_White/IncorporealSystem/IncorporealSystem.cs b/Content.Server/_White/IncorporealSystem/IncorporealSystem.cs index 637342cb7c..932aa8a15a 100644 --- a/Content.Server/_White/IncorporealSystem/IncorporealSystem.cs +++ b/Content.Server/_White/IncorporealSystem/IncorporealSystem.cs @@ -1,5 +1,7 @@ using System.Linq; using Content.Shared.Eye; +using Content.Shared.Movement.Pulling.Components; +using Content.Shared.Movement.Pulling.Systems; using Content.Shared.Movement.Systems; using Content.Shared.Physics; using Content.Shared.Stealth; @@ -17,6 +19,7 @@ public sealed class IncorporealSystem : EntitySystem [Dependency] private readonly VisibilitySystem _visibilitySystem = default!; [Dependency] private readonly SharedStealthSystem _stealth = default!; [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly PullingSystem _pulling = default!; public override void Initialize() { @@ -48,6 +51,8 @@ public sealed class IncorporealSystem : EntitySystem Spawn("EffectEmpPulse", Transform(uid).Coordinates); EnsureComp(uid); _stealth.SetVisibility(uid, -1); + if (TryComp(uid, out PullableComponent? pullable)) + _pulling.TryStopPull(uid, pullable); _movement.RefreshMovementSpeedModifiers(uid); } diff --git a/Content.Server/_White/Wizard/Magic/Other/VariableUseDelayComponent.cs b/Content.Server/_White/Wizard/Magic/Other/VariableUseDelayComponent.cs new file mode 100644 index 0000000000..a018469632 --- /dev/null +++ b/Content.Server/_White/Wizard/Magic/Other/VariableUseDelayComponent.cs @@ -0,0 +1,14 @@ +namespace Content.Server._White.Wizard.Magic.Other; + +[RegisterComponent] +public sealed partial class VariableUseDelayComponent : Component +{ + [DataField] + public TimeSpan UseDelay = TimeSpan.FromSeconds(6); + + [DataField] + public TimeSpan AltUseDelay = TimeSpan.FromSeconds(12); + + [DataField] + public TimeSpan ChargeUseDelay = TimeSpan.FromSeconds(40); +} diff --git a/Content.Server/_White/Wizard/Magic/WizardSpellsSystem.cs b/Content.Server/_White/Wizard/Magic/WizardSpellsSystem.cs index 9a4cd57b25..eed87e0d7d 100644 --- a/Content.Server/_White/Wizard/Magic/WizardSpellsSystem.cs +++ b/Content.Server/_White/Wizard/Magic/WizardSpellsSystem.cs @@ -61,6 +61,7 @@ public sealed class WizardSpellsSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popupSystem = default!; [Dependency] private readonly InventorySystem _inventory = default!; [Dependency] private readonly EmpSystem _empSystem = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; #endregion @@ -148,7 +149,8 @@ public sealed class WizardSpellsSystem : EntitySystem } SetOutfitCommand.SetOutfit(msg.Target, "MimeGear", EntityManager); - EnsureComp(msg.Target); + var powers = EnsureComp(msg.Target); + powers.CanBreakVow = false; Spawn("AdminInstantEffectSmoke3", Transform(msg.Target).Coordinates); @@ -195,7 +197,8 @@ public sealed class WizardSpellsSystem : EntitySystem return; } - EnsureComp(msg.Target); + var cluwne = EnsureComp(msg.Target); + cluwne.KnockChance = 0.2f; Spawn("AdminInstantEffectSmoke3", Transform(msg.Target).Coordinates); @@ -317,6 +320,7 @@ public sealed class WizardSpellsSystem : EntitySystem break; } + SetCooldown(msg.Action, msg.ActionUseType); msg.Handled = true; Speak(msg); } @@ -338,7 +342,7 @@ public sealed class WizardSpellsSystem : EntitySystem { var xform = Transform(msg.Performer); - var positions = GetArenaPositions(xform, msg.ChargeLevel); + var positions = GetArenaPositions(xform.Coordinates, msg.ChargeLevel); foreach (var position in positions) { @@ -351,9 +355,7 @@ public sealed class WizardSpellsSystem : EntitySystem private void ForcewallSpellAlt(ForceWallSpellEvent msg) { - var xform = Transform(msg.TargetUid); - - var positions = GetArenaPositions(xform, 2); + var positions = GetArenaPositions(msg.Target, 2); foreach (var direction in positions) { @@ -373,6 +375,8 @@ public sealed class WizardSpellsSystem : EntitySystem if (msg.Handled || !CheckRequirements(msg.Action, msg.Performer)) return; + var result = true; + switch (msg.ActionUseType) { case ActionUseType.Default: @@ -382,10 +386,14 @@ public sealed class WizardSpellsSystem : EntitySystem CardsSpellCharge(msg); break; case ActionUseType.AltUse: - CardsSpellAlt(msg); + result = CardsSpellAlt(msg); break; } + if (!result) + return; + + SetCooldown(msg.Action, msg.ActionUseType); msg.Handled = true; Speak(msg); } @@ -417,7 +425,7 @@ public sealed class WizardSpellsSystem : EntitySystem { var xform = Transform(msg.Performer); - var count = 5 * msg.ChargeLevel; + var count = 10 * msg.ChargeLevel; var angleStep = 360f / count; for (var i = 0; i < count; i++) @@ -441,14 +449,19 @@ public sealed class WizardSpellsSystem : EntitySystem } } - private void CardsSpellAlt(CardsSpellEvent msg) + private bool CardsSpellAlt(CardsSpellEvent msg) { if (!HasComp(msg.TargetUid)) - return; + { + _popupSystem.PopupEntity("Работает только на предметах.", msg.Performer, msg.Performer); + return false; + } Del(msg.TargetUid); var item = Spawn(msg.Prototype); _handsSystem.TryPickupAnyHand(msg.Performer, item); + + return true; } #endregion @@ -460,6 +473,8 @@ public sealed class WizardSpellsSystem : EntitySystem if (msg.Handled || !CheckRequirements(msg.Action, msg.Performer)) return; + var result = true; + switch (msg.ActionUseType) { case ActionUseType.Default: @@ -469,10 +484,14 @@ public sealed class WizardSpellsSystem : EntitySystem FireballSpellCharge(msg); break; case ActionUseType.AltUse: - FireballSpellAlt(msg); + result = FireballSpellAlt(msg); break; } + if (!result) + return; + + SetCooldown(msg.Action, msg.ActionUseType); msg.Handled = true; Speak(msg); } @@ -507,21 +526,26 @@ public sealed class WizardSpellsSystem : EntitySystem foreach (var target in targets.Where(target => target.Owner != msg.Performer)) { - target.Comp.FireStacks += 3; + target.Comp.FireStacks += 2 + msg.ChargeLevel * 2; _flammableSystem.Ignite(target, msg.Performer); } } - private void FireballSpellAlt(FireballSpellEvent msg) + private bool FireballSpellAlt(FireballSpellEvent msg) { if (!TryComp(msg.TargetUid, out var flammableComponent)) - return; + { + _popupSystem.PopupEntity("Это нельзя поджечь!", msg.Performer, msg.Performer); + return false; + } flammableComponent.FireStacks += 4; _flammableSystem.Ignite(msg.TargetUid, msg.Performer); EnsureComp(msg.TargetUid); + + return true; } #endregion @@ -546,6 +570,7 @@ public sealed class WizardSpellsSystem : EntitySystem break; } + SetCooldown(msg.Action, msg.ActionUseType); msg.Handled = true; Speak(msg); } @@ -574,10 +599,12 @@ public sealed class WizardSpellsSystem : EntitySystem if (msg.Handled || !CheckRequirements(msg.Action, msg.Performer)) return; + var result = true; + switch (msg.ActionUseType) { case ActionUseType.Default: - ArcSpellDefault(msg); + result = ArcSpellDefault(msg); break; case ActionUseType.Charge: ArcSpellCharge(msg); @@ -587,21 +614,28 @@ public sealed class WizardSpellsSystem : EntitySystem break; } + if (!result) + return; + + SetCooldown(msg.Action, msg.ActionUseType); msg.Handled = true; Speak(msg); } - private void ArcSpellDefault(ArcSpellEvent msg) + private bool ArcSpellDefault(ArcSpellEvent msg) { const int possibleEntitiesCount = 2; var entitiesInRange = _lookup.GetEntitiesInRange(msg.Target, 1); var entitiesToHit = entitiesInRange.Where(HasComp).Take(possibleEntitiesCount); - foreach (var entity in entitiesToHit) + var entityUids = entitiesToHit.ToList(); + foreach (var entity in entityUids) { _lightning.ShootLightning(msg.Performer, entity); } + + return entityUids.Count != 0; } private void ArcSpellCharge(ArcSpellEvent msg) @@ -644,7 +678,23 @@ public sealed class WizardSpellsSystem : EntitySystem InGameICChatType.Speak, false); } - private List GetArenaPositions(TransformComponent casterXform, int arenaSize) + private void SetCooldown(EntityUid action, ActionUseType useType) + { + if (!TryComp(action, out VariableUseDelayComponent? variableUseDelayComponent)) + return; + + var cooldown = useType switch + { + ActionUseType.Default => variableUseDelayComponent.UseDelay, + ActionUseType.AltUse => variableUseDelayComponent.AltUseDelay, + ActionUseType.Charge => variableUseDelayComponent.ChargeUseDelay, + _ => TimeSpan.FromSeconds(60) + }; + + _actions.SetUseDelay(action, cooldown); + } + + private List GetArenaPositions(EntityCoordinates coords, int arenaSize) { var positions = new List(); @@ -655,7 +705,7 @@ public sealed class WizardSpellsSystem : EntitySystem for (var j = -arenaSize; j <= arenaSize; j++) { var position = new Vector2(i, j); - var coordinates = casterXform.Coordinates.Offset(position); + var coordinates = coords.Offset(position); positions.Add(coordinates); } } diff --git a/Content.Server/_White/Wizard/WizardComponent.cs b/Content.Server/_White/Wizard/WizardComponent.cs new file mode 100644 index 0000000000..fdf5c7ec21 --- /dev/null +++ b/Content.Server/_White/Wizard/WizardComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Server._White.Wizard; + + +[RegisterComponent] +public sealed partial class WizardComponent : Component +{ +} diff --git a/Content.Server/_White/Wizard/WizardRoleComponent.cs b/Content.Server/_White/Wizard/WizardRoleComponent.cs new file mode 100644 index 0000000000..8e3a71bedd --- /dev/null +++ b/Content.Server/_White/Wizard/WizardRoleComponent.cs @@ -0,0 +1,11 @@ +using Content.Shared.Roles; + +namespace Content.Server._White.Wizard; + +/// +/// This is used for... +/// +[RegisterComponent, ExclusiveAntagonist] +public sealed partial class WizardRoleComponent : AntagonistRoleComponent +{ +} diff --git a/Content.Server/_White/Wizard/WizardRuleComponent.cs b/Content.Server/_White/Wizard/WizardRuleComponent.cs new file mode 100644 index 0000000000..7c6e044832 --- /dev/null +++ b/Content.Server/_White/Wizard/WizardRuleComponent.cs @@ -0,0 +1,68 @@ +using Content.Server.RoundEnd; +using Content.Shared.NPC.Prototypes; +using Content.Shared.Random; +using Content.Shared.Roles; +using Robust.Shared.Prototypes; + +namespace Content.Server._White.Wizard; + +/// +/// This is used for... +/// +[RegisterComponent] +public sealed partial class WizardRuleComponent : Component +{ + public readonly List WizardMinds = new(); + + public EntityUid? TargetStation; + + [DataField("minPlayers")] + public int MinPlayers = 20; + + [DataField("announcementOnWizardDeath")] + public bool AnnouncementOnWizardDeath = true; + + [DataField("points")] + public int Points = 10; //TODO: wizard shop prototype + + [DataField("wizardRoleProto")] + public ProtoId WizardRoleProto = "WizardRole"; + + [DataField("wizardSpawnPointProto")] + public EntProtoId SpawnPointProto = "SpawnPointWizard"; + + [DataField] + public EntProtoId GhostSpawnPointProto = "SpawnPointGhostWizard"; + + [DataField("startingGear")] + public ProtoId StartingGear = "WizardGear"; + + [DataField("spawnShuttle")] + public bool SpawnShuttle = true; + + [DataField] + public EntityUid? ShuttleMap; + + [DataField("shuttlePath")] + public string ShuttlePath = "/Maps/White/Shuttles/wizard.yml"; + + [DataField] + public ProtoId Faction = "Wizard"; + + public RoundEndBehavior RoundEndBehavior = RoundEndBehavior.Nothing; + + [DataField] + public string RoundEndTextSender = "comms-console-announcement-title-centcom"; + + [DataField] + public string RoundEndTextShuttleCall = "wizard-no-more-threat-announcement-shuttle-call"; + + [DataField] + public string RoundEndTextAnnouncement = "wizard-no-more-threat-announcement"; + + [DataField] + public TimeSpan EvacShuttleTime = TimeSpan.FromMinutes(5); + + [DataField] + public ProtoId ObjectiveGroup = "WizardObjectiveGroups"; +} diff --git a/Content.Server/_White/Wizard/WizardRuleSystem.cs b/Content.Server/_White/Wizard/WizardRuleSystem.cs new file mode 100644 index 0000000000..fedc51e296 --- /dev/null +++ b/Content.Server/_White/Wizard/WizardRuleSystem.cs @@ -0,0 +1,397 @@ +using Content.Server.GameTicking; +using Content.Server.GameTicking.Rules; +using Content.Server.GameTicking.Rules.Components; +using Content.Server.Antag; +using Content.Server.Ghost.Roles.Components; +using Content.Server.Ghost.Roles.Events; +using Content.Server.Humanoid; +using Content.Server.Mind; +using Content.Server.Preferences.Managers; +using Content.Server.RoundEnd; +using Content.Server.Spawners.Components; +using Content.Server.Station.Systems; +using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Prototypes; +using Content.Shared.Mind.Components; +using Content.Shared.Mobs; +using Content.Shared.NPC.Systems; +using Content.Shared.Preferences; +using Content.Shared.Roles; +using Robust.Shared.Map; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; +using System.Linq; +using Content.Server.Objectives; +using Content.Server.Station.Components; +using Content.Shared.Mind; +using Content.Shared.NPC.Components; +using Content.Shared.Objectives.Components; +using Robust.Server.GameObjects; +using Robust.Server.Maps; +using Robust.Shared.Random; + +namespace Content.Server._White.Wizard; + +/// +/// This handles... +/// +public sealed class WizardRuleSystem : GameRuleSystem +{ + [Dependency] private readonly IMapManager _mapManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IServerPreferencesManager _prefs = default!; + [Dependency] private readonly ILogManager _logManager = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly MapLoaderSystem _map = default!; + [Dependency] private readonly HumanoidAppearanceSystem _humanoid = default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly MindSystem _mind = default!; + [Dependency] private readonly NpcFactionSystem _npcFaction = default!; + [Dependency] private readonly SharedRoleSystem _roles = default!; + [Dependency] private readonly StationSpawningSystem _stationSpawning = default!; + [Dependency] private readonly AntagSelectionSystem _antagSelection = default!; + [Dependency] private readonly RoundEndSystem _roundEndSystem = default!; + [Dependency] private readonly ObjectivesSystem _objectives = default!; + + private ISawmill _sawmill = default!; + + /// + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnStartAttempt); + SubscribeLocalEvent(OnPlayersSpawning); + SubscribeLocalEvent(OnRunLevelChanged); + SubscribeLocalEvent(OnComponentRemove); + SubscribeLocalEvent(OnMobStateChanged); + SubscribeLocalEvent(OnPlayersGhostSpawning); + SubscribeLocalEvent(OnMindAdded); + SubscribeLocalEvent(OnObjectivesTextGetInfo); + + _sawmill = _logManager.GetSawmill("Wizard"); + } + + private void OnObjectivesTextGetInfo(Entity ent, ref ObjectivesTextGetInfoEvent args) + { + args.Minds = ent.Comp.WizardMinds; + args.AgentName = Loc.GetString("wizard-round-end-agent-name"); + } + + private void OnStartAttempt(RoundStartAttemptEvent ev) + { + TryRoundStartAttempt(ev, Loc.GetString("wizard-title")); + } + + private void OnPlayersSpawning(RulePlayerSpawningEvent ev) + { + var query = QueryActiveRules(); + while (query.MoveNext(out var uid, out _, out var wizardRule, out _)) + { + if (!SpawnMap((uid, wizardRule))) + { + _sawmill.Info("Failed to load shuttle for wizard"); + continue; + } + + //Handle there being nobody readied up + if (ev.PlayerPool.Count == 0) + continue; + + var wizardEligible = + _antagSelection.GetEligibleSessions(ev.PlayerPool, wizardRule.WizardRoleProto); + + //Select wizard + var selectedWizard = _antagSelection + .ChooseAntags(1, wizardEligible, ev.PlayerPool).FirstOrDefault(); + + SpawnWizard(selectedWizard, wizardRule, false); + + if (selectedWizard != null) + GameTicker.PlayerJoinGame(selectedWizard); + } + } + + protected override void Started( + EntityUid uid, + WizardRuleComponent component, + GameRuleComponent gameRule, + GameRuleStartedEvent args) + { + base.Started(uid, component, gameRule, args); + + if (GameTicker.RunLevel == GameRunLevel.InRound) + SpawnWizardGhostRole(uid, component); + } + + private void OnComponentRemove(EntityUid uid, WizardComponent component, ComponentRemove args) + { + CheckAnnouncement(); + } + + private void OnMobStateChanged(EntityUid uid, WizardComponent component, MobStateChangedEvent ev) + { + if (ev.NewMobState == MobState.Dead) + CheckAnnouncement(); + } + + private void OnPlayersGhostSpawning(EntityUid uid, WizardComponent component, GhostRoleSpawnerUsedEvent args) + { + var spawner = args.Spawner; + + if (!TryComp(spawner, out var wizardSpawner)) + return; + + HumanoidCharacterProfile? profile = null; + if (TryComp(args.Spawned, out ActorComponent? actor)) + profile = _prefs.GetPreferences(actor.PlayerSession.UserId).SelectedCharacter as HumanoidCharacterProfile; + + if (!EntityQuery().Any()) + return; + + if (!_prototypeManager.TryIndex(wizardSpawner.StartingGear, out var gear)) + { + _sawmill.Error("Failed to load wizard gear prototype"); + return; + } + + SetupWizardEntity(uid, wizardSpawner.Points, gear, profile); + } + + private void OnMindAdded(EntityUid uid, WizardComponent component, MindAddedMessage args) + { + if (!_mind.TryGetMind(uid, out var mindId, out var mind)) + return; + + var query = QueryActiveRules(); + while (query.MoveNext(out _, out _, out var wizardRule, out _)) + { + AddRole(mindId, mind, wizardRule); + + if (mind.Session is not { } playerSession) + return; + + if (GameTicker.RunLevel != GameRunLevel.InRound) + return; + + NotifyWizard(playerSession, component, wizardRule); + } + } + + private void AddRole(EntityUid mindId, MindComponent mind, WizardRuleComponent wizardRule) + { + if (_roles.MindHasRole(mindId)) + return; + + wizardRule.WizardMinds.Add(mindId); + + var role = wizardRule.WizardRoleProto; + _roles.MindAddRole(mindId, new WizardRoleComponent {PrototypeId = role}); + + GiveObjectives(mindId, mind, wizardRule); + } + + private void GiveObjectives(EntityUid mindId, MindComponent mind, WizardRuleComponent wizardRule) + { + _mind.TryAddObjective(mindId, mind, "WizardSurviveObjective"); + + var difficulty = 0f; + for (var pick = 0; pick < 6 && 8 > difficulty; pick++) + { + var objective = _objectives.GetRandomObjective(mindId, mind, wizardRule.ObjectiveGroup); + if (objective == null) + continue; + + _mind.AddObjective(mindId, mind, objective.Value); + var adding = Comp(objective.Value).Difficulty; + difficulty += adding; + _sawmill.Debug($"Added objective {ToPrettyString(objective):objective} with {adding} difficulty"); + } + } + + private void OnRunLevelChanged(GameRunLevelChangedEvent ev) + { + var query = QueryActiveRules(); + while (query.MoveNext(out var uid, out _, out var wiz, out _)) + { + if (ev.New == GameRunLevel.InRound) + OnRoundStart(uid, wiz); + } + } + + private void OnRoundStart(EntityUid uid, WizardRuleComponent? component = null) + { + if (!Resolve(uid, ref component)) + return; + + var eligible = new List>(); + var eligibleQuery = EntityQueryEnumerator(); + while (eligibleQuery.MoveNext(out var eligibleUid, out var eligibleComp, out var member)) + { + if (!_npcFaction.IsFactionHostile(component.Faction, (eligibleUid, member))) + continue; + + eligible.Add((eligibleUid, eligibleComp, member)); + } + + if (eligible.Count == 0) + return; + + component.TargetStation = _random.Pick(eligible); + + var filter = Filter.Empty(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out _, out var wizard, out var actor)) + { + NotifyWizard(actor.PlayerSession, wizard, component); + filter.AddPlayer(actor.PlayerSession); + } + } + + private void CheckAnnouncement() + { + var query = QueryActiveRules(); + while (query.MoveNext(out _, out _, out var wizard, out _)) + { + _roundEndSystem.DoRoundEndBehavior( + wizard.RoundEndBehavior, wizard.EvacShuttleTime, wizard.RoundEndTextSender, + wizard.RoundEndTextShuttleCall, wizard.RoundEndTextAnnouncement); + + return; + } + } + + private bool SpawnMap(Entity ent) + { + if (!ent.Comp.SpawnShuttle + || ent.Comp.ShuttleMap != null) + return true; + + var shuttleMap = _mapManager.CreateMap(); + var options = new MapLoadOptions + { + LoadMap = true, + }; + + if (!_map.TryLoad(shuttleMap, ent.Comp.ShuttlePath, out _, options)) + return false; + + ent.Comp.ShuttleMap = _mapManager.GetMapEntityId(shuttleMap); + return true; + } + + private void SetupWizardEntity( + EntityUid mob, + int points, + StartingGearPrototype gear, + HumanoidCharacterProfile? profile) + { + EnsureComp(mob); + + profile ??= HumanoidCharacterProfile.RandomWithSpecies(); + + _humanoid.LoadProfile(mob, profile); + + _metaData.SetEntityName(mob, profile.Name); + + _stationSpawning.EquipStartingGear(mob, gear, profile); + + _npcFaction.RemoveFaction(mob, "NanoTrasen", false); + _npcFaction.AddFaction(mob, "Wizard"); + } + + private void SpawnWizard(ICommonSession? session, WizardRuleComponent component, bool spawnGhostRoles = true) + { + if (component.ShuttleMap is not {Valid: true} mapUid) + return; + + var spawn = new EntityCoordinates(); + foreach (var (_, meta, xform) in EntityQuery(true)) + { + if (meta.EntityPrototype?.ID != component.SpawnPointProto.Id) + continue; + + if (xform.ParentUid != component.ShuttleMap) + continue; + + spawn = xform.Coordinates; + break; + } + + //Fallback, spawn at the centre of the map + if (spawn == new EntityCoordinates()) + { + spawn = Transform(mapUid).Coordinates; + _sawmill.Warning("Fell back to default spawn for wizard!"); + } + + var wizardAntag = _prototypeManager.Index(component.WizardRoleProto); + + //If a session is available, spawn mob and transfer mind into it + if (session != null) + { + var profile = + _prefs.GetPreferences(session.UserId).SelectedCharacter as HumanoidCharacterProfile; + + profile ??= HumanoidCharacterProfile.RandomWithSpecies(); + var name = profile.Name; + + if (!_prototypeManager.TryIndex(profile.Species, out SpeciesPrototype? species)) + { + species = _prototypeManager.Index(SharedHumanoidAppearanceSystem.DefaultSpecies); + } + + var mob = Spawn(species.Prototype, spawn); + if (!_prototypeManager.TryIndex(component.StartingGear, out var gear)) + { + _sawmill.Error("Failed to load wizard gear prototype"); + return; + } + + SetupWizardEntity(mob, component.Points, gear, profile); + + var newMind = _mind.CreateMind(session.UserId, name); + _mind.SetUserId(newMind, session.UserId); + AddRole(newMind.Owner, newMind.Comp, component); + + _mind.TransferTo(newMind, mob); + } + //Otherwise, spawn as a ghost role + else if (spawnGhostRoles) + { + var spawnPoint = Spawn(component.GhostSpawnPointProto, spawn); + var ghostRole = EnsureComp(spawnPoint); + EnsureComp(spawnPoint); + ghostRole.RoleName = Loc.GetString(wizardAntag.Name); + ghostRole.RoleDescription = Loc.GetString(wizardAntag.Objective); + + var wizardSpawner = EnsureComp(spawnPoint); + //TODO: maybe other params + } + } + + private void NotifyWizard(ICommonSession session, WizardComponent wizard, WizardRuleComponent wizardRule) + { + if (wizardRule.TargetStation is not { } station) + return; + + _antagSelection.SendBriefing(session, Loc.GetString("wizard-welcome", ("station", station)), Color.Aqua, null); + } + + /// + /// Spawn wizard ghost role if this gamerule was started mid round + /// + private void SpawnWizardGhostRole(EntityUid uid, WizardRuleComponent? component = null) + { + if (!Resolve(uid, ref component)) + return; + + if (!SpawnMap((uid, component))) + { + _sawmill.Info("Failed to load map for wizard"); + return; + } + + ICommonSession? session = null; + SpawnWizard(session, component, true); + } +} diff --git a/Content.Server/_White/Wizard/WizardSpawnerComponent.cs b/Content.Server/_White/Wizard/WizardSpawnerComponent.cs new file mode 100644 index 0000000000..6af3413aa2 --- /dev/null +++ b/Content.Server/_White/Wizard/WizardSpawnerComponent.cs @@ -0,0 +1,21 @@ +using Content.Shared.Roles; +using Robust.Shared.Prototypes; + +namespace Content.Server._White.Wizard; + + +[RegisterComponent] +public sealed partial class WizardSpawnerComponent : Component +{ + [DataField("name")] + public string Name = "Ololo The Balls' Twister"; + + [DataField("points")] + public int Points = 10; + + [DataField("startingGear")] + public ProtoId StartingGear = "WizardGear"; + + [DataField] + public ProtoId WizardRoleProto = "WizardRole"; +} diff --git a/Content.Shared/Actions/BaseActionComponent.cs b/Content.Shared/Actions/BaseActionComponent.cs index 7b4b9a145f..fe6095f3e4 100644 --- a/Content.Shared/Actions/BaseActionComponent.cs +++ b/Content.Shared/Actions/BaseActionComponent.cs @@ -154,6 +154,9 @@ public abstract partial class BaseActionComponent : Component // WD START [DataField] public bool RemoveOnNoCharges; + + [DataField] + public bool AlwaysPlaySound = true; // WD END /// diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index 212e8e13fe..46a5f49e42 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -540,12 +540,18 @@ public abstract class SharedActionsSystem : EntitySystem handled = actionEvent.Handled; } - _audio.PlayPredicted(action.Sound, performer,predicted ? performer : null); - handled |= action.Sound != null; + if (action.AlwaysPlaySound) // WD EDIT + { + _audio.PlayPredicted(action.Sound, performer,predicted ? performer : null); + handled |= action.Sound != null; + } if (!handled) return; // no interaction occurred. + if (!action.AlwaysPlaySound) // WD + _audio.PlayPvs(action.Sound, performer); + // reduce charges, start cooldown, and mark as dirty (if required). var dirty = toggledBefore == action.Toggled; diff --git a/Resources/Locale/ru-RU/_white/wizard.ftl b/Resources/Locale/ru-RU/_white/wizard.ftl new file mode 100644 index 0000000000..833d76c8e8 --- /dev/null +++ b/Resources/Locale/ru-RU/_white/wizard.ftl @@ -0,0 +1,17 @@ +wizard-title = Wizard +wizard-description = Космический Волшебник посещает станцию, дабы продемонстрировать чудеса своей магии. + +objective-issuer-wizards = [color=aqua]Федерация Космических Волшебников[/color] + +wizard-not-enough-ready-players = Недостаточно игроков готовы к игре! { $readyPlayersCount } игроков из необходимых { $minimumPlayers } готовы. Нельзя начать режим: Wizard. +wizard-no-one-ready = Нет готовых игроков! Нельзя начать Wizard. + +roles-antag-wizard-name = Космический волшебник +roles-antag-wizard-objective = Устройте хаос на станции + +wizard-round-end-agent-name = космический волшебник + +wizard-welcome = Вы - космический волшебник. Федерация Космических Волшебников отправила вас на станцию {$station}, дабы посеять хаос. Не разочаруйте их. + +wizard-no-more-threat-announcement-shuttle-call = Судя по данным наших датчиков дальнего действия, магическая угроза была устранена. Эвакуационный шаттл скоро прибудет. Время прибытия: {$time} {$units}. Вы можете отозвать его, чтобы продлить смену. +wizard-no-more-threat-announcement = Судя по данным наших датчиков дальнего действия, магическая угроза была устранена. Шаттл уже вызван. diff --git a/Resources/Maps/White/Shuttles/wizard.yml b/Resources/Maps/White/Shuttles/wizard.yml new file mode 100644 index 0000000000..9efac0b372 --- /dev/null +++ b/Resources/Maps/White/Shuttles/wizard.yml @@ -0,0 +1,5023 @@ +meta: + format: 6 + postmapinit: false +tilemap: + 0: Space + 23: FloorCaveDrought + 29: FloorDark + 30: FloorDarkDiagonal + 32: FloorDarkHerringbone + 34: FloorDarkMono + 35: FloorDarkOffset + 36: FloorDarkPavement + 37: FloorDarkPavementVertical + 48: FloorGrassDark + 89: FloorSteel + 100: FloorSteelMono + 104: FloorTechMaint + 108: FloorWhite + 112: FloorWhiteMini + 118: FloorWood + 120: Lattice + 121: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: map 2 + - type: Transform + - type: Map + - type: PhysicsMap + - type: GridTree + - type: MovedGrids + - type: Broadphase + - type: OccluderTree + - type: LoadedMap + - uid: 2 + components: + - type: MetaData + - type: Transform + pos: 0.3842575,0.4217209 + parent: 1 + - type: MapGrid + chunks: + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAaAAAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAZAAAAAADZAAAAAADWQAAAAABeQAAAAAAdgAAAAACdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAZAAAAAAAZAAAAAACWQAAAAACeQAAAAAAdgAAAAADdgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAWQAAAAADWQAAAAADWQAAAAAAeQAAAAAAdgAAAAADdgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAIAAAAAABJQAAAAABIAAAAAAAJQAAAAACIAAAAAABJQAAAAADIAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAIAAAAAADJAAAAAADeQAAAAAAJAAAAAADeQAAAAAAJAAAAAACeQAAAAAAIAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAJQAAAAACIAAAAAAAJQAAAAACIAAAAAABJQAAAAABIAAAAAABJQAAAAABIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAIgAAAAAAIgAAAAAAeQAAAAAAHQAAAAABHQAAAAAAeQAAAAAAMAAAAAABMAAAAAAAMAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAIgAAAAADIgAAAAACIgAAAAADHQAAAAACHQAAAAADeQAAAAAAMAAAAAABHgAAAAACHgAAAAACHgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAWQAAAAABWQAAAAADeQAAAAAAHQAAAAAAHQAAAAADeQAAAAAAMAAAAAAAHgAAAAACHgAAAAACHgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAIgAAAAABIgAAAAAAIgAAAAACHQAAAAAAHQAAAAADeQAAAAAAMAAAAAABHgAAAAADHgAAAAABHgAAAAAC + version: 6 + 0,-1: + ind: 0,-1 + tiles: aAAAAAAAaAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdgAAAAAAeQAAAAAAbAAAAAACbAAAAAACbAAAAAACeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdgAAAAACeQAAAAAAbAAAAAADcAAAAAACbAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdgAAAAACeQAAAAAAbAAAAAACbAAAAAAAbAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAACeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAACIAAAAAADJQAAAAACIAAAAAABJQAAAAADIAAAAAADeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAJAAAAAAAeQAAAAAAJAAAAAABeQAAAAAAJAAAAAABIAAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAABIAAAAAABJQAAAAACIAAAAAACJQAAAAACIAAAAAACJQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAACMAAAAAADMAAAAAAAeQAAAAAAFwAAAAAEFwAAAAAGFwAAAAAHFwAAAAACeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAABHgAAAAADMAAAAAACeQAAAAAAFwAAAAADFwAAAAADFwAAAAAGFwAAAAAEFwAAAAACIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAADHgAAAAACMAAAAAADeQAAAAAAFwAAAAAHFwAAAAAEFwAAAAADFwAAAAADFwAAAAABeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAACHgAAAAACMAAAAAADeQAAAAAAFwAAAAAHFwAAAAACFwAAAAABFwAAAAAEFwAAAAABIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAIgAAAAADIgAAAAACeQAAAAAAHQAAAAABHQAAAAACeQAAAAAAMAAAAAAAMAAAAAAAMAAAAAADMAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAADeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAdgAAAAACdgAAAAADdgAAAAADdgAAAAADdgAAAAADeQAAAAAAIwAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAdgAAAAABdgAAAAADdgAAAAABdgAAAAABdgAAAAADeQAAAAAAIwAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAdgAAAAABdgAAAAADdgAAAAAAdgAAAAAAIgAAAAAAIwAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAdgAAAAAAdgAAAAABdgAAAAAAeQAAAAAAIwAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAdgAAAAABdgAAAAACeQAAAAAAIwAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAIgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAIwAAAAAAIwAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAIwAAAAAAIwAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAIwAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 0,0: + ind: 0,0 + tiles: MAAAAAADMAAAAAABMAAAAAADeQAAAAAAFwAAAAAFFwAAAAAAFwAAAAAFFwAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAeQAAAAAAdgAAAAAAdgAAAAABdgAAAAADdgAAAAADdgAAAAADeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAeQAAAAAAdgAAAAADdgAAAAACdgAAAAABdgAAAAADdgAAAAACeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAIgAAAAABdgAAAAABdgAAAAAAdgAAAAABdgAAAAACeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAeQAAAAAAdgAAAAABdgAAAAABdgAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAeQAAAAAAdgAAAAACdgAAAAADeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAIwAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAIwAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -1,-2: + ind: -1,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAA + version: 6 + 0,-2: + ind: 0,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: Shuttle + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Bot + decals: + 0: -6,-11 + 1: -5,-11 + 2: -5,-12 + 3: -6,-12 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkCornerNe + decals: + 4: 1,-1 + 29: 0,6 + 30: 1,9 + 31: 0,10 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkCornerNw + decals: + 5: -3,-1 + 32: -2,10 + 33: -3,9 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkCornerSe + decals: + 6: 1,-3 + 36: 1,8 + 39: 0,2 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkCornerSw + decals: + 7: -3,-3 + 37: -3,8 + 38: -2,2 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkInnerNe + decals: + 34: 0,9 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkInnerNw + decals: + 35: -2,9 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkLineE + decals: + 13: 1,-2 + 26: 0,5 + 27: 0,4 + 28: 0,3 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkLineN + decals: + 8: -2,-1 + 9: -1,-1 + 10: 0,-1 + 19: -1,6 + 20: -1,10 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkLineS + decals: + 14: -2,-3 + 15: -1,-3 + 16: 0,-3 + 17: -1,2 + 18: -1,8 + 21: -2,8 + 22: 0,8 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkLineW + decals: + 11: -3,-1 + 12: -3,-2 + 23: -2,3 + 24: -2,4 + 25: -2,5 + - node: + color: '#739D6FC3' + id: Busha3 + decals: + 123: 2.1557868,-0.9164014 + 124: -4.142126,-3.8997116 + 125: -4.017002,-0.6243291 + 126: -2.8074682,0.37706184 + 127: -3.683338,-2.0012412 + 128: -0.95146155,-3.6076393 + 129: 1.5301669,-0.019321948 + - node: + color: '#739D6FC3' + id: Bushb3 + decals: + 118: -3.933586,-2.8148713 + 119: -1.9941614,-3.8162622 + 120: 0.13294822,-3.7953997 + 121: 0.696007,0.001540184 + 122: -1.6604974,-0.22794488 + - node: + color: '#739D6FC3' + id: Bushc3 + decals: + 114: 2.0098097,-2.042966 + 115: -0.86804557,0.08498955 + 116: -3.683338,-0.019321948 + 117: -4.017002,-0.9164014 + - node: + color: '#739D6FC3' + id: Bushf1 + decals: + 100: -3.725046,-3.8997116 + 101: 1.2799189,-3.9414358 + 102: -0.09644675,0.10585165 + 103: -2.5780752,-0.08190873 + 104: -2.0358694,-4.024885 + 105: 1.9681017,-2.8983202 + 113: -2.4946592,-4.191784 + - node: + color: '#739D6FC3' + id: Bushf2 + decals: + 106: -3.933586,-1.6465821 + 107: 2.0306628,-0.18622068 + 108: 2.0098097,-2.856596 + 109: 1.9681017,-4.0666094 + 110: 0.11209321,-4.0040226 + 111: -2.2027032,0.022402763 + 112: -1.3893964,-3.98316 + - node: + color: '#73CA6FC3' + id: Flowersbr3 + decals: + 133: 1.1130869,-4.1500587 + - node: + color: '#73CA6FC3' + id: Flowerspv2 + decals: + 134: -2.9325922,-3.9414358 + 135: -2.1818483,0.043264866 + - node: + color: '#73CA6FC3' + id: Flowersy1 + decals: + 131: -4.05871,-0.29053214 + 132: 2.0515177,-1.3127851 + 136: 0.34148818,-0.10277131 + 137: 2.1557868,-3.3364286 + - node: + color: '#73CA6FC3' + id: Flowersy3 + decals: + 130: -3.9752939,-2.543661 + - node: + color: '#0E7F1B67' + id: Grassa5 + decals: + 86: -3.579067,-4.024885 + 87: -4.204688,-2.522799 + - node: + color: '#0E7F1BC3' + id: Grassa5 + decals: + 96: -3.01601,-4.1500587 + 97: 0.09124017,-0.144496 + 98: -4.142126,-0.24880746 + 99: 0.9254,-4.2126455 + - node: + color: '#0E7F1BC3' + id: Grassb2 + decals: + 88: -3.9127328,-1.3545098 + 89: -3.036863,-0.144496 + 90: 0.779423,0.064127445 + - node: + color: '#0E7F1BC3' + id: Grassb3 + decals: + 91: 1.8846858,-1.6883063 + 92: 1.6969988,-3.8579865 + 93: -0.30498672,-4.1083345 + 94: -4.079564,-2.4602118 + 95: -1.3685415,-0.019321948 + - node: + angle: 4.71238898038469 rad + color: '#FFFFFFFF' + id: LoadingArea + decals: + 79: -10,-1 + 80: -10,-3 + - node: + color: '#FFFFFFFF' + id: MiniTileWhiteInnerNe + decals: + 46: 2,-12 + - node: + color: '#FFFFFFFF' + id: MiniTileWhiteInnerNw + decals: + 47: 4,-12 + - node: + color: '#FFFFFFFF' + id: MiniTileWhiteInnerSe + decals: + 45: 2,-10 + - node: + color: '#FFFFFFFF' + id: MiniTileWhiteInnerSw + decals: + 44: 4,-10 + - node: + color: '#FFFFFFFF' + id: MiniTileWhiteLineE + decals: + 40: 2,-11 + - node: + color: '#FFFFFFFF' + id: MiniTileWhiteLineN + decals: + 41: 3,-12 + - node: + color: '#FFFFFFFF' + id: MiniTileWhiteLineS + decals: + 43: 3,-10 + - node: + color: '#FFFFFFFF' + id: MiniTileWhiteLineW + decals: + 42: 4,-11 + - node: + color: '#FFFFFFFF' + id: Rock01 + decals: + 82: 7.413066,-1.4588213 + - node: + color: '#FFFFFFFF' + id: Rock02 + decals: + 83: 5.7864523,-3.1695304 + 85: 1.6761458,-0.18622068 + - node: + color: '#FFFFFFFF' + id: Rock03 + decals: + 84: -3.891878,-3.628501 + - node: + color: '#FFFFFFFF' + id: Rock04 + decals: + 81: 4.8271685,-0.9789882 + - node: + color: '#FFFFFFFF' + id: Rock06 + decals: + 78: 5.2864194,-2.8357334 + - node: + color: '#FFFFFFFF' + id: WarnLineE + decals: + 49: 1,-15 + 50: 1,-14 + 74: -9,-3 + 75: -9,-1 + 76: 8,-1 + 77: 8,-3 + - node: + color: '#FFFFFFFF' + id: WarnLineN + decals: + 48: -4,-12 + - node: + color: '#FFFFFFFF' + id: WarnLineS + decals: + 72: -7,-3 + 73: -7,-1 + - node: + color: '#FFFFFFFF' + id: WarnLineW + decals: + 145: -5,-10 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinCornerSe + decals: + 58: -4,2 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinCornerSw + decals: + 67: 2,2 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinLineE + decals: + 59: -4,3 + 60: -4,4 + 61: -4,5 + 62: -4,6 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinLineN + decals: + 51: -2,-10 + 52: -1,-10 + 53: 0,-10 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinLineS + decals: + 54: -8,2 + 55: -7,2 + 56: -6,2 + 57: -5,2 + 68: 3,2 + 69: 4,2 + 70: 5,2 + 71: 6,2 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinLineW + decals: + 63: 2,6 + 64: 2,5 + 65: 2,4 + 66: 2,3 + - node: + color: '#175C138B' + id: grasssnowc1 + decals: + 138: -4.017002,-2.4810743 + 139: -4.142126,0.2518878 + 140: -3.933586,-0.3948436 + 141: 2.1140788,-1.3127851 + 142: 1.9472468,-3.3781538 + 143: 0.904547,-4.087472 + 144: 0.2997802,0.001540184 + - type: GridAtmosphere + version: 2 + data: + tiles: + -1,-1: + 0: 65535 + 0,-1: + 0: 65535 + -1,0: + 0: 65535 + -3,-2: + 0: 61128 + -3,-1: + 0: 61166 + -3,-3: + 0: 32768 + -2,-3: + 0: 65535 + -2,-2: + 0: 65535 + -2,-1: + 0: 65535 + -2,-4: + 0: 61164 + -1,-4: + 0: 65535 + -1,-3: + 0: 65535 + -1,-2: + 0: 65535 + 0,-4: + 0: 62271 + 1: 192 + 2: 3072 + 0,-3: + 0: 65535 + 0,-2: + 0: 65535 + 1,-4: + 0: 13105 + 1,-3: + 0: 63351 + 1,-2: + 0: 65535 + 1,-1: + 0: 65535 + 2,-2: + 0: 12560 + 2,-1: + 0: 13107 + -3,0: + 0: 52974 + -3,1: + 0: 136 + -2,0: + 0: 65535 + -2,1: + 0: 52991 + -2,2: + 0: 136 + -1,1: + 0: 65535 + -1,2: + 0: 65535 + -1,3: + 0: 14 + 0,0: + 0: 65535 + 0,1: + 0: 65535 + 0,2: + 0: 30719 + 0,3: + 0: 3 + 1,0: + 0: 65535 + 1,1: + 0: 5119 + 2,0: + 0: 4403 + -2,-5: + 0: 32768 + -1,-5: + 0: 65280 + 0,-5: + 0: 63232 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 6666.982 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 6666.982 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance + - type: SpreaderGrid + - type: GridPathfinding +- proto: AirlockExternalGlass + entities: + - uid: 3 + components: + - type: Transform + pos: -7.5,-0.5 + parent: 2 + - uid: 4 + components: + - type: Transform + pos: -7.5,-2.5 + parent: 2 +- proto: AirlockGlassShuttle + entities: + - uid: 5 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -10.5,-0.5 + parent: 2 + - uid: 6 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -10.5,-2.5 + parent: 2 + - uid: 7 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-0.5 + parent: 2 + - uid: 8 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-2.5 + parent: 2 +- proto: APCBasic + entities: + - uid: 9 + components: + - type: Transform + pos: -1.5,-12.5 + parent: 2 + - uid: 10 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,5.5 + parent: 2 +- proto: AtmosDeviceFanTiny + entities: + - uid: 11 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-0.5 + parent: 2 + - uid: 12 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-2.5 + parent: 2 + - uid: 13 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -10.5,-0.5 + parent: 2 + - uid: 14 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -10.5,-2.5 + parent: 2 +- proto: AtmosFixNitrogenMarker + entities: + - uid: 15 + components: + - type: Transform + pos: 2.5,-13.5 + parent: 2 + - uid: 16 + components: + - type: Transform + pos: 3.5,-13.5 + parent: 2 +- proto: AtmosFixOxygenMarker + entities: + - uid: 17 + components: + - type: Transform + pos: 2.5,-14.5 + parent: 2 + - uid: 18 + components: + - type: Transform + pos: 3.5,-14.5 + parent: 2 +- proto: BaseComputer + entities: + - uid: 19 + components: + - type: Transform + pos: 0.5,10.5 + parent: 2 +- proto: Bed + entities: + - uid: 20 + components: + - type: Transform + pos: -1.5,-11.5 + parent: 2 +- proto: BedsheetWiz + entities: + - uid: 21 + components: + - type: Transform + pos: -1.5,-11.5 + parent: 2 +- proto: BookRandom + entities: + - uid: 22 + components: + - type: Transform + pos: -7.387626,2.56149 + parent: 2 + - uid: 23 + components: + - type: Transform + pos: -7.700435,2.7283878 + parent: 2 +- proto: BookRandomStory + entities: + - uid: 24 + components: + - type: Transform + pos: 3.5160534,-11.342207 + parent: 2 +- proto: BooksBag + entities: + - uid: 25 + components: + - type: Transform + pos: -4.509771,6.4627414 + parent: 2 +- proto: Bookshelf + entities: + - uid: 26 + components: + - type: Transform + pos: 2.5,-11.5 + parent: 2 + - uid: 27 + components: + - type: Transform + pos: 4.5,-9.5 + parent: 2 + - uid: 28 + components: + - type: Transform + pos: -5.5,5.5 + parent: 2 + - uid: 29 + components: + - type: Transform + pos: -6.5,4.5 + parent: 2 + - uid: 30 + components: + - type: Transform + pos: 2.5,2.5 + parent: 2 +- proto: BoxFolderBase + entities: + - uid: 31 + components: + - type: Transform + pos: -3.3141003,2.4580417 + parent: 2 + - uid: 32 + components: + - type: Transform + pos: -3.3558083,2.7709756 + parent: 2 + - uid: 33 + components: + - type: Transform + pos: -3.6477642,2.6040778 + parent: 2 +- proto: CableApcExtension + entities: + - uid: 34 + components: + - type: Transform + pos: -1.5,-12.5 + parent: 2 + - uid: 35 + components: + - type: Transform + pos: -1.5,-11.5 + parent: 2 + - uid: 36 + components: + - type: Transform + pos: -1.5,-10.5 + parent: 2 + - uid: 37 + components: + - type: Transform + pos: -1.5,-9.5 + parent: 2 + - uid: 38 + components: + - type: Transform + pos: -0.5,-9.5 + parent: 2 + - uid: 39 + components: + - type: Transform + pos: -0.5,-8.5 + parent: 2 + - uid: 40 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 2 + - uid: 41 + components: + - type: Transform + pos: -0.5,-6.5 + parent: 2 + - uid: 42 + components: + - type: Transform + pos: -0.5,-5.5 + parent: 2 + - uid: 43 + components: + - type: Transform + pos: 0.5,-5.5 + parent: 2 + - uid: 44 + components: + - type: Transform + pos: 1.5,-5.5 + parent: 2 + - uid: 45 + components: + - type: Transform + pos: 2.5,-5.5 + parent: 2 + - uid: 46 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 2 + - uid: 47 + components: + - type: Transform + pos: 4.5,-5.5 + parent: 2 + - uid: 48 + components: + - type: Transform + pos: 5.5,-5.5 + parent: 2 + - uid: 49 + components: + - type: Transform + pos: 6.5,-5.5 + parent: 2 + - uid: 50 + components: + - type: Transform + pos: 4.5,-4.5 + parent: 2 + - uid: 51 + components: + - type: Transform + pos: 5.5,-4.5 + parent: 2 + - uid: 52 + components: + - type: Transform + pos: 6.5,-4.5 + parent: 2 + - uid: 53 + components: + - type: Transform + pos: 7.5,-5.5 + parent: 2 + - uid: 54 + components: + - type: Transform + pos: 7.5,-6.5 + parent: 2 + - uid: 55 + components: + - type: Transform + pos: 7.5,-4.5 + parent: 2 + - uid: 56 + components: + - type: Transform + pos: 8.5,-4.5 + parent: 2 + - uid: 57 + components: + - type: Transform + pos: 8.5,-3.5 + parent: 2 + - uid: 58 + components: + - type: Transform + pos: 9.5,-3.5 + parent: 2 + - uid: 59 + components: + - type: Transform + pos: 9.5,-2.5 + parent: 2 + - uid: 60 + components: + - type: Transform + pos: 9.5,-1.5 + parent: 2 + - uid: 61 + components: + - type: Transform + pos: 9.5,-0.5 + parent: 2 + - uid: 62 + components: + - type: Transform + pos: -1.5,-5.5 + parent: 2 + - uid: 63 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 2 + - uid: 64 + components: + - type: Transform + pos: -3.5,-5.5 + parent: 2 + - uid: 65 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 2 + - uid: 66 + components: + - type: Transform + pos: -5.5,-5.5 + parent: 2 + - uid: 67 + components: + - type: Transform + pos: -6.5,-5.5 + parent: 2 + - uid: 68 + components: + - type: Transform + pos: -7.5,-5.5 + parent: 2 + - uid: 69 + components: + - type: Transform + pos: -8.5,-5.5 + parent: 2 + - uid: 70 + components: + - type: Transform + pos: -8.5,-6.5 + parent: 2 + - uid: 71 + components: + - type: Transform + pos: -4.5,-6.5 + parent: 2 + - uid: 72 + components: + - type: Transform + pos: -4.5,-7.5 + parent: 2 + - uid: 73 + components: + - type: Transform + pos: -4.5,-8.5 + parent: 2 + - uid: 74 + components: + - type: Transform + pos: -4.5,-9.5 + parent: 2 + - uid: 75 + components: + - type: Transform + pos: -3.5,-9.5 + parent: 2 + - uid: 76 + components: + - type: Transform + pos: -3.5,-10.5 + parent: 2 + - uid: 77 + components: + - type: Transform + pos: -3.5,-11.5 + parent: 2 + - uid: 78 + components: + - type: Transform + pos: -4.5,-11.5 + parent: 2 + - uid: 79 + components: + - type: Transform + pos: -5.5,-11.5 + parent: 2 + - uid: 80 + components: + - type: Transform + pos: -6.5,-11.5 + parent: 2 + - uid: 81 + components: + - type: Transform + pos: -3.5,-12.5 + parent: 2 + - uid: 82 + components: + - type: Transform + pos: -3.5,-13.5 + parent: 2 + - uid: 83 + components: + - type: Transform + pos: -3.5,-14.5 + parent: 2 + - uid: 84 + components: + - type: Transform + pos: -2.5,-14.5 + parent: 2 + - uid: 85 + components: + - type: Transform + pos: -1.5,-14.5 + parent: 2 + - uid: 86 + components: + - type: Transform + pos: -1.5,-13.5 + parent: 2 + - uid: 87 + components: + - type: Transform + pos: -0.5,-14.5 + parent: 2 + - uid: 88 + components: + - type: Transform + pos: 0.5,-14.5 + parent: 2 + - uid: 89 + components: + - type: Transform + pos: 1.5,-14.5 + parent: 2 + - uid: 90 + components: + - type: Transform + pos: 2.5,-14.5 + parent: 2 + - uid: 91 + components: + - type: Transform + pos: 3.5,-14.5 + parent: 2 + - uid: 92 + components: + - type: Transform + pos: 4.5,-14.5 + parent: 2 + - uid: 93 + components: + - type: Transform + pos: 4.5,-13.5 + parent: 2 + - uid: 94 + components: + - type: Transform + pos: -1.5,-15.5 + parent: 2 + - uid: 95 + components: + - type: Transform + pos: -1.5,-16.5 + parent: 2 + - uid: 96 + components: + - type: Transform + pos: -2.5,-16.5 + parent: 2 + - uid: 97 + components: + - type: Transform + pos: 0.5,-15.5 + parent: 2 + - uid: 98 + components: + - type: Transform + pos: 0.5,-16.5 + parent: 2 + - uid: 99 + components: + - type: Transform + pos: 1.5,-16.5 + parent: 2 + - uid: 100 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 2 + - uid: 101 + components: + - type: Transform + pos: 3.5,-7.5 + parent: 2 + - uid: 102 + components: + - type: Transform + pos: 3.5,-8.5 + parent: 2 + - uid: 103 + components: + - type: Transform + pos: 3.5,-9.5 + parent: 2 + - uid: 104 + components: + - type: Transform + pos: 3.5,-10.5 + parent: 2 + - uid: 105 + components: + - type: Transform + pos: 3.5,-11.5 + parent: 2 + - uid: 106 + components: + - type: Transform + pos: 4.5,-11.5 + parent: 2 + - uid: 107 + components: + - type: Transform + pos: 5.5,-11.5 + parent: 2 + - uid: 108 + components: + - type: Transform + pos: 5.5,-10.5 + parent: 2 + - uid: 109 + components: + - type: Transform + pos: -2.5,5.5 + parent: 2 + - uid: 110 + components: + - type: Transform + pos: -1.5,5.5 + parent: 2 + - uid: 111 + components: + - type: Transform + pos: -0.5,5.5 + parent: 2 + - uid: 112 + components: + - type: Transform + pos: -0.5,6.5 + parent: 2 + - uid: 113 + components: + - type: Transform + pos: -0.5,7.5 + parent: 2 + - uid: 114 + components: + - type: Transform + pos: -0.5,8.5 + parent: 2 + - uid: 115 + components: + - type: Transform + pos: -0.5,9.5 + parent: 2 + - uid: 116 + components: + - type: Transform + pos: -0.5,10.5 + parent: 2 + - uid: 117 + components: + - type: Transform + pos: -0.5,11.5 + parent: 2 + - uid: 118 + components: + - type: Transform + pos: -1.5,11.5 + parent: 2 + - uid: 119 + components: + - type: Transform + pos: 0.5,11.5 + parent: 2 + - uid: 120 + components: + - type: Transform + pos: -1.5,8.5 + parent: 2 + - uid: 121 + components: + - type: Transform + pos: -2.5,8.5 + parent: 2 + - uid: 122 + components: + - type: Transform + pos: -3.5,8.5 + parent: 2 + - uid: 123 + components: + - type: Transform + pos: -3.5,9.5 + parent: 2 + - uid: 124 + components: + - type: Transform + pos: 0.5,8.5 + parent: 2 + - uid: 125 + components: + - type: Transform + pos: 1.5,8.5 + parent: 2 + - uid: 126 + components: + - type: Transform + pos: 2.5,8.5 + parent: 2 + - uid: 127 + components: + - type: Transform + pos: 2.5,9.5 + parent: 2 + - uid: 128 + components: + - type: Transform + pos: -0.5,4.5 + parent: 2 + - uid: 129 + components: + - type: Transform + pos: -0.5,3.5 + parent: 2 + - uid: 130 + components: + - type: Transform + pos: -0.5,2.5 + parent: 2 + - uid: 131 + components: + - type: Transform + pos: -0.5,1.5 + parent: 2 + - uid: 132 + components: + - type: Transform + pos: -2.5,5.5 + parent: 2 + - uid: 133 + components: + - type: Transform + pos: -3.5,5.5 + parent: 2 + - uid: 134 + components: + - type: Transform + pos: -4.5,5.5 + parent: 2 + - uid: 135 + components: + - type: Transform + pos: -5.5,5.5 + parent: 2 + - uid: 136 + components: + - type: Transform + pos: -5.5,4.5 + parent: 2 + - uid: 137 + components: + - type: Transform + pos: -6.5,4.5 + parent: 2 + - uid: 138 + components: + - type: Transform + pos: -6.5,3.5 + parent: 2 + - uid: 139 + components: + - type: Transform + pos: -6.5,2.5 + parent: 2 + - uid: 140 + components: + - type: Transform + pos: -6.5,1.5 + parent: 2 + - uid: 141 + components: + - type: Transform + pos: -6.5,0.5 + parent: 2 + - uid: 142 + components: + - type: Transform + pos: -7.5,0.5 + parent: 2 + - uid: 143 + components: + - type: Transform + pos: -8.5,0.5 + parent: 2 + - uid: 144 + components: + - type: Transform + pos: -9.5,0.5 + parent: 2 + - uid: 145 + components: + - type: Transform + pos: -6.5,-0.5 + parent: 2 + - uid: 146 + components: + - type: Transform + pos: -6.5,-1.5 + parent: 2 + - uid: 147 + components: + - type: Transform + pos: -6.5,-2.5 + parent: 2 + - uid: 148 + components: + - type: Transform + pos: -6.5,-3.5 + parent: 2 + - uid: 149 + components: + - type: Transform + pos: -7.5,-3.5 + parent: 2 + - uid: 150 + components: + - type: Transform + pos: -8.5,-3.5 + parent: 2 + - uid: 151 + components: + - type: Transform + pos: -9.5,-3.5 + parent: 2 + - uid: 152 + components: + - type: Transform + pos: 0.5,4.5 + parent: 2 + - uid: 153 + components: + - type: Transform + pos: 1.5,4.5 + parent: 2 + - uid: 154 + components: + - type: Transform + pos: 2.5,4.5 + parent: 2 + - uid: 155 + components: + - type: Transform + pos: 3.5,4.5 + parent: 2 + - uid: 156 + components: + - type: Transform + pos: 4.5,4.5 + parent: 2 + - uid: 157 + components: + - type: Transform + pos: 4.5,3.5 + parent: 2 + - uid: 158 + components: + - type: Transform + pos: 4.5,2.5 + parent: 2 + - uid: 159 + components: + - type: Transform + pos: 4.5,1.5 + parent: 2 + - uid: 160 + components: + - type: Transform + pos: 6.5,1.5 + parent: 2 + - uid: 161 + components: + - type: Transform + pos: 5.5,1.5 + parent: 2 + - uid: 162 + components: + - type: Transform + pos: 7.5,1.5 + parent: 2 +- proto: CableHV + entities: + - uid: 163 + components: + - type: Transform + pos: 1.5,-15.5 + parent: 2 + - uid: 164 + components: + - type: Transform + pos: 0.5,-15.5 + parent: 2 + - uid: 165 + components: + - type: Transform + pos: -0.5,-15.5 + parent: 2 + - uid: 166 + components: + - type: Transform + pos: -1.5,-15.5 + parent: 2 +- proto: CableMV + entities: + - uid: 167 + components: + - type: Transform + pos: -1.5,-15.5 + parent: 2 + - uid: 168 + components: + - type: Transform + pos: -1.5,-14.5 + parent: 2 + - uid: 169 + components: + - type: Transform + pos: -2.5,-14.5 + parent: 2 + - uid: 170 + components: + - type: Transform + pos: -3.5,-14.5 + parent: 2 + - uid: 171 + components: + - type: Transform + pos: -3.5,-13.5 + parent: 2 + - uid: 172 + components: + - type: Transform + pos: -3.5,-12.5 + parent: 2 + - uid: 173 + components: + - type: Transform + pos: -3.5,-11.5 + parent: 2 + - uid: 174 + components: + - type: Transform + pos: -3.5,-10.5 + parent: 2 + - uid: 175 + components: + - type: Transform + pos: -3.5,-9.5 + parent: 2 + - uid: 176 + components: + - type: Transform + pos: -4.5,-13.5 + parent: 2 + - uid: 177 + components: + - type: Transform + pos: -5.5,-13.5 + parent: 2 + - uid: 178 + components: + - type: Transform + pos: -5.5,-14.5 + parent: 2 + - uid: 179 + components: + - type: Transform + pos: -4.5,-11.5 + parent: 2 + - uid: 180 + components: + - type: Transform + pos: -5.5,-11.5 + parent: 2 + - uid: 181 + components: + - type: Transform + pos: -6.5,-11.5 + parent: 2 + - uid: 182 + components: + - type: Transform + pos: -6.5,-10.5 + parent: 2 + - uid: 183 + components: + - type: Transform + pos: -0.5,-14.5 + parent: 2 + - uid: 184 + components: + - type: Transform + pos: 0.5,-14.5 + parent: 2 + - uid: 185 + components: + - type: Transform + pos: 1.5,-14.5 + parent: 2 + - uid: 186 + components: + - type: Transform + pos: 2.5,-14.5 + parent: 2 + - uid: 187 + components: + - type: Transform + pos: 3.5,-14.5 + parent: 2 + - uid: 188 + components: + - type: Transform + pos: 4.5,-14.5 + parent: 2 + - uid: 189 + components: + - type: Transform + pos: 4.5,-13.5 + parent: 2 + - uid: 190 + components: + - type: Transform + pos: 4.5,-12.5 + parent: 2 + - uid: 191 + components: + - type: Transform + pos: 5.5,-12.5 + parent: 2 + - uid: 192 + components: + - type: Transform + pos: 5.5,-11.5 + parent: 2 + - uid: 193 + components: + - type: Transform + pos: 5.5,-10.5 + parent: 2 + - uid: 194 + components: + - type: Transform + pos: -4.5,-9.5 + parent: 2 + - uid: 195 + components: + - type: Transform + pos: -4.5,-8.5 + parent: 2 + - uid: 196 + components: + - type: Transform + pos: -4.5,-7.5 + parent: 2 + - uid: 197 + components: + - type: Transform + pos: -4.5,-6.5 + parent: 2 + - uid: 198 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 2 + - uid: 199 + components: + - type: Transform + pos: -5.5,-5.5 + parent: 2 + - uid: 200 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 2 + - uid: 201 + components: + - type: Transform + pos: -5.5,-3.5 + parent: 2 + - uid: 202 + components: + - type: Transform + pos: -5.5,-2.5 + parent: 2 + - uid: 203 + components: + - type: Transform + pos: -5.5,-1.5 + parent: 2 + - uid: 204 + components: + - type: Transform + pos: -5.5,-0.5 + parent: 2 + - uid: 205 + components: + - type: Transform + pos: -5.5,0.5 + parent: 2 + - uid: 206 + components: + - type: Transform + pos: -6.5,0.5 + parent: 2 + - uid: 207 + components: + - type: Transform + pos: -6.5,1.5 + parent: 2 + - uid: 208 + components: + - type: Transform + pos: -6.5,2.5 + parent: 2 + - uid: 209 + components: + - type: Transform + pos: -6.5,3.5 + parent: 2 + - uid: 210 + components: + - type: Transform + pos: -6.5,4.5 + parent: 2 + - uid: 211 + components: + - type: Transform + pos: -5.5,4.5 + parent: 2 + - uid: 212 + components: + - type: Transform + pos: -4.5,4.5 + parent: 2 + - uid: 213 + components: + - type: Transform + pos: -3.5,4.5 + parent: 2 + - uid: 214 + components: + - type: Transform + pos: -2.5,4.5 + parent: 2 + - uid: 215 + components: + - type: Transform + pos: -1.5,4.5 + parent: 2 + - uid: 216 + components: + - type: Transform + pos: -0.5,4.5 + parent: 2 + - uid: 217 + components: + - type: Transform + pos: 0.5,4.5 + parent: 2 + - uid: 218 + components: + - type: Transform + pos: 1.5,4.5 + parent: 2 + - uid: 219 + components: + - type: Transform + pos: 2.5,4.5 + parent: 2 + - uid: 220 + components: + - type: Transform + pos: 3.5,4.5 + parent: 2 + - uid: 221 + components: + - type: Transform + pos: 4.5,4.5 + parent: 2 + - uid: 222 + components: + - type: Transform + pos: 4.5,3.5 + parent: 2 + - uid: 223 + components: + - type: Transform + pos: 4.5,2.5 + parent: 2 + - uid: 224 + components: + - type: Transform + pos: 4.5,1.5 + parent: 2 + - uid: 225 + components: + - type: Transform + pos: 5.5,1.5 + parent: 2 + - uid: 226 + components: + - type: Transform + pos: 6.5,1.5 + parent: 2 + - uid: 227 + components: + - type: Transform + pos: -3.5,-7.5 + parent: 2 + - uid: 228 + components: + - type: Transform + pos: -2.5,-7.5 + parent: 2 + - uid: 229 + components: + - type: Transform + pos: -1.5,-7.5 + parent: 2 + - uid: 230 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 2 + - uid: 231 + components: + - type: Transform + pos: 0.5,-7.5 + parent: 2 + - uid: 232 + components: + - type: Transform + pos: 1.5,-7.5 + parent: 2 + - uid: 233 + components: + - type: Transform + pos: -1.5,-13.5 + parent: 2 + - uid: 234 + components: + - type: Transform + pos: -1.5,-12.5 + parent: 2 + - uid: 235 + components: + - type: Transform + pos: -2.5,5.5 + parent: 2 +- proto: CableTerminal + entities: + - uid: 236 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,-15.5 + parent: 2 +- proto: CarpetPurple + entities: + - uid: 237 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-11.5 + parent: 2 + - uid: 238 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-10.5 + parent: 2 + - uid: 239 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-11.5 + parent: 2 + - uid: 240 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-10.5 + parent: 2 + - uid: 241 + components: + - type: Transform + pos: 3.5,3.5 + parent: 2 + - uid: 242 + components: + - type: Transform + pos: 3.5,4.5 + parent: 2 + - uid: 243 + components: + - type: Transform + pos: 4.5,3.5 + parent: 2 + - uid: 244 + components: + - type: Transform + pos: 4.5,4.5 + parent: 2 + - uid: 245 + components: + - type: Transform + pos: 5.5,3.5 + parent: 2 + - uid: 246 + components: + - type: Transform + pos: 5.5,4.5 + parent: 2 + - uid: 247 + components: + - type: Transform + pos: 3.5,5.5 + parent: 2 + - uid: 248 + components: + - type: Transform + pos: 4.5,5.5 + parent: 2 + - uid: 249 + components: + - type: Transform + pos: -3.5,3.5 + parent: 2 + - uid: 250 + components: + - type: Transform + pos: -3.5,2.5 + parent: 2 + - uid: 251 + components: + - type: Transform + pos: -4.5,3.5 + parent: 2 + - uid: 252 + components: + - type: Transform + pos: -4.5,2.5 + parent: 2 + - uid: 253 + components: + - type: Transform + pos: -4.5,5.5 + parent: 2 + - uid: 254 + components: + - type: Transform + pos: -4.5,6.5 + parent: 2 + - uid: 255 + components: + - type: Transform + pos: -3.5,5.5 + parent: 2 + - uid: 256 + components: + - type: Transform + pos: -3.5,6.5 + parent: 2 +- proto: Catwalk + entities: + - uid: 257 + components: + - type: Transform + pos: -2.5,-14.5 + parent: 2 + - uid: 258 + components: + - type: Transform + pos: -1.5,-14.5 + parent: 2 + - uid: 259 + components: + - type: Transform + pos: -0.5,-14.5 + parent: 2 + - uid: 260 + components: + - type: Transform + pos: 0.5,-14.5 + parent: 2 +- proto: ChairFolding + entities: + - uid: 261 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,-9.5 + parent: 2 +- proto: ChairPilotSeat + entities: + - uid: 262 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,9.5 + parent: 2 +- proto: ChairWood + entities: + - uid: 263 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,5.5 + parent: 2 + - uid: 264 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,3.5 + parent: 2 + - uid: 265 + components: + - type: Transform + pos: -3.5,3.5 + parent: 2 + - uid: 266 + components: + - type: Transform + pos: 3.5,5.5 + parent: 2 + - uid: 267 + components: + - type: Transform + pos: 4.5,5.5 + parent: 2 + - uid: 268 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,4.5 + parent: 2 + - uid: 269 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,3.5 + parent: 2 +- proto: ClothingBeltUtilityEngineering + entities: + - uid: 270 + components: + - type: Transform + pos: -4.5,-13.5 + parent: 2 +- proto: ClothingHandsGlovesColorYellow + entities: + - uid: 784 + components: + - type: Transform + pos: -4.5,-13.5 + parent: 2 +- proto: ClothingHandsGlovesCombat + entities: + - uid: 271 + components: + - type: Transform + pos: -9.39363,-3.5328693 + parent: 2 +- proto: ClothingHeadHatRealWizardBlue + entities: + - uid: 273 + components: + - type: Transform + parent: 272 + - type: Physics + canCollide: False +- proto: ClothingHeadHatRealWizardRed + entities: + - uid: 274 + components: + - type: Transform + parent: 272 + - type: Physics + canCollide: False +- proto: ClothingHeadHatRealWizardViolet + entities: + - uid: 275 + components: + - type: Transform + parent: 272 + - type: Physics + canCollide: False +- proto: ClothingHeadHatWitch1 + entities: + - uid: 279 + components: + - type: Transform + pos: -5.52865,-9.359842 + parent: 2 +- proto: ClothingHeadHelmetWizardHelm + entities: + - uid: 280 + components: + - type: Transform + pos: -1.3289549,-9.370714 + parent: 2 +- proto: ClothingMaskGasChameleon + entities: + - uid: 281 + components: + - type: Transform + pos: -9.537922,-3.3987489 + parent: 2 +- proto: ClothingOuterRealWizardBlue + entities: + - uid: 276 + components: + - type: Transform + parent: 272 + - type: Physics + canCollide: False +- proto: ClothingOuterRealWizardRed + entities: + - uid: 277 + components: + - type: Transform + parent: 272 + - type: Physics + canCollide: False +- proto: ClothingOuterRealWizardViolet + entities: + - uid: 278 + components: + - type: Transform + parent: 272 + - type: Physics + canCollide: False +- proto: ClothingUniformJumpskirtColorBlack + entities: + - uid: 282 + components: + - type: Transform + pos: -5.617341,-9.575869 + parent: 2 +- proto: ClothingUniformJumpsuitColorBlack + entities: + - uid: 283 + components: + - type: Transform + pos: -5.429654,-9.555006 + parent: 2 +- proto: ComfyChair + entities: + - uid: 284 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,3.5 + parent: 2 + - uid: 285 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,-10.5 + parent: 2 +- proto: ComputerIFFSyndicate + entities: + - uid: 286 + components: + - type: Transform + pos: -1.5,10.5 + parent: 2 +- proto: ComputerShuttle + entities: + - uid: 287 + components: + - type: Transform + pos: -0.5,10.5 + parent: 2 +- proto: ComputerSurveillanceWirelessCameraMonitor + entities: + - uid: 288 + components: + - type: Transform + pos: -3.5,6.5 + parent: 2 +- proto: CrayonBox + entities: + - uid: 289 + components: + - type: Transform + pos: -3.8145962,2.6666646 + parent: 2 +- proto: CrayonRainbow + entities: + - uid: 290 + components: + - type: Transform + pos: -3.6894722,2.437179 + parent: 2 +- proto: DiceBag + entities: + - uid: 291 + components: + - type: Transform + pos: 4.037085,4.423369 + parent: 2 +- proto: Dresser + entities: + - uid: 272 + components: + - type: Transform + pos: 0.5,-11.5 + parent: 2 + - type: Storage + storedItems: + 277: + position: 0,4 + _rotation: East + 274: + position: 0,3 + _rotation: East + 278: + position: 2,4 + _rotation: South + 275: + position: 2,3 + _rotation: East + 276: + position: 4,4 + _rotation: South + 273: + position: 4,3 + _rotation: East + - type: ContainerContainer + containers: + storagebase: !type:Container + showEnts: False + occludes: True + ents: + - 277 + - 274 + - 278 + - 275 + - 276 + - 273 +- proto: FaxMachineSyndie + entities: + - uid: 292 + components: + - type: Transform + pos: -4.5,2.5 + parent: 2 +- proto: FigureSpawner + entities: + - uid: 293 + components: + - type: Transform + pos: 3.5,4.5 + parent: 2 + - uid: 294 + components: + - type: Transform + pos: 4.5,4.5 + parent: 2 + - uid: 295 + components: + - type: Transform + pos: 4.5,3.5 + parent: 2 +- proto: FirelockGlass + entities: + - uid: 296 + components: + - type: Transform + pos: -0.5,1.5 + parent: 2 + - uid: 297 + components: + - type: Transform + pos: -0.5,-4.5 + parent: 2 + - uid: 298 + components: + - type: Transform + pos: -3.5,-12.5 + parent: 2 + - uid: 299 + components: + - type: Transform + pos: -0.5,7.5 + parent: 2 +- proto: Fireplace + entities: + - uid: 300 + components: + - type: Transform + pos: 0.5,-9.5 + parent: 2 +- proto: FloorDrain + entities: + - uid: 301 + components: + - type: Transform + pos: 4.5,-11.5 + parent: 2 + - type: Fixtures + fixtures: {} +- proto: FloraRockSolid01 + entities: + - uid: 302 + components: + - type: Transform + pos: 6.5734406,0.1678339 + parent: 2 +- proto: FloraRockSolid02 + entities: + - uid: 303 + components: + - type: Transform + pos: 5.280491,-2.8363385 + parent: 2 +- proto: FoodBurgerSpell + entities: + - uid: 304 + components: + - type: Transform + pos: -1.6417658,-9.454163 + parent: 2 +- proto: FoodMeat + entities: + - uid: 305 + components: + - type: Transform + pos: 5.238783,-2.0018458 + parent: 2 + - uid: 306 + components: + - type: Transform + pos: 5.551594,-0.20768729 + parent: 2 + - uid: 307 + components: + - type: Transform + pos: 7.5535793,-3.0240989 + parent: 2 +- proto: GasMinerNitrogen + entities: + - uid: 308 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-13.5 + parent: 2 +- proto: GasMinerOxygen + entities: + - uid: 309 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-14.5 + parent: 2 +- proto: GasMixerFlipped + entities: + - uid: 310 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,-13.5 + parent: 2 + - type: GasMixer + inletTwoConcentration: 0.22000003 + inletOneConcentration: 0.78 +- proto: GasPassiveVent + entities: + - uid: 311 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,-13.5 + parent: 2 + - uid: 312 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,-14.5 + parent: 2 +- proto: GasPipeBend + entities: + - uid: 313 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-14.5 + parent: 2 + - uid: 314 + components: + - type: Transform + pos: -3.5,-9.5 + parent: 2 + - uid: 315 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 2 + - uid: 316 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-5.5 + parent: 2 + - uid: 317 + components: + - type: Transform + pos: -5.5,0.5 + parent: 2 + - uid: 318 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,0.5 + parent: 2 + - uid: 319 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,3.5 + parent: 2 + - uid: 320 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,3.5 + parent: 2 + - uid: 321 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,-7.5 + parent: 2 + - uid: 322 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,3.5 + parent: 2 + - uid: 323 + components: + - type: Transform + pos: 4.5,3.5 + parent: 2 +- proto: GasPipeFourway + entities: + - uid: 324 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 2 + - uid: 325 + components: + - type: Transform + pos: -0.5,4.5 + parent: 2 +- proto: GasPipeStraight + entities: + - uid: 326 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,-13.5 + parent: 2 + - uid: 327 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-13.5 + parent: 2 + - uid: 328 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-13.5 + parent: 2 + - uid: 329 + components: + - type: Transform + pos: -3.5,-12.5 + parent: 2 + - uid: 330 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-11.5 + parent: 2 + - uid: 331 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-10.5 + parent: 2 + - uid: 332 + components: + - type: Transform + pos: -4.5,-8.5 + parent: 2 + - uid: 333 + components: + - type: Transform + pos: -4.5,-6.5 + parent: 2 + - uid: 334 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 2 + - uid: 335 + components: + - type: Transform + pos: -5.5,-3.5 + parent: 2 + - uid: 336 + components: + - type: Transform + pos: -5.5,-1.5 + parent: 2 + - uid: 337 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,1.5 + parent: 2 + - uid: 338 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,2.5 + parent: 2 + - uid: 339 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,3.5 + parent: 2 + - uid: 340 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,-7.5 + parent: 2 + - uid: 341 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-7.5 + parent: 2 + - uid: 342 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-7.5 + parent: 2 + - uid: 343 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,-7.5 + parent: 2 + - uid: 344 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-7.5 + parent: 2 + - uid: 345 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,-7.5 + parent: 2 + - uid: 346 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-7.5 + parent: 2 + - uid: 347 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-8.5 + parent: 2 + - uid: 348 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-9.5 + parent: 2 + - uid: 349 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-8.5 + parent: 2 + - uid: 350 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-9.5 + parent: 2 + - uid: 351 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-6.5 + parent: 2 + - uid: 352 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-5.5 + parent: 2 + - uid: 353 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,4.5 + parent: 2 + - uid: 354 + components: + - type: Transform + pos: -0.5,-4.5 + parent: 2 + - uid: 355 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,4.5 + parent: 2 + - uid: 356 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,4.5 + parent: 2 + - uid: 357 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,5.5 + parent: 2 + - uid: 358 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,6.5 + parent: 2 + - uid: 359 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,7.5 + parent: 2 + - uid: 360 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,4.5 + parent: 2 + - uid: 361 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,4.5 + parent: 2 + - uid: 362 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,4.5 + parent: 2 + - uid: 363 + components: + - type: Transform + pos: 4.5,2.5 + parent: 2 + - uid: 364 + components: + - type: Transform + pos: 4.5,1.5 + parent: 2 + - uid: 365 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-2.5 + parent: 2 + - uid: 366 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,-2.5 + parent: 2 + - uid: 367 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-0.5 + parent: 2 + - uid: 368 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,-0.5 + parent: 2 +- proto: GasPipeTJunction + entities: + - uid: 369 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,-13.5 + parent: 2 + - uid: 370 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,-9.5 + parent: 2 + - uid: 371 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,-7.5 + parent: 2 + - uid: 372 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,-5.5 + parent: 2 + - uid: 373 + components: + - type: Transform + pos: 3.5,-7.5 + parent: 2 + - uid: 374 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -5.5,-2.5 + parent: 2 + - uid: 375 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -5.5,-0.5 + parent: 2 + - uid: 376 + components: + - type: Transform + pos: -4.5,4.5 + parent: 2 + - uid: 377 + components: + - type: Transform + pos: 3.5,4.5 + parent: 2 +- proto: GasPressurePump + entities: + - uid: 378 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-13.5 + parent: 2 +- proto: GasVentPump + entities: + - uid: 379 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,-9.5 + parent: 2 + - uid: 380 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-14.5 + parent: 2 + - uid: 381 + components: + - type: Transform + pos: 5.5,-6.5 + parent: 2 + - uid: 382 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-10.5 + parent: 2 + - uid: 383 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-10.5 + parent: 2 + - uid: 384 + components: + - type: Transform + pos: -0.5,-3.5 + parent: 2 + - uid: 385 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,0.5 + parent: 2 + - uid: 386 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,4.5 + parent: 2 + - uid: 387 + components: + - type: Transform + pos: -0.5,8.5 + parent: 2 + - uid: 388 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,3.5 + parent: 2 + - uid: 389 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,4.5 + parent: 2 + - uid: 390 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,-0.5 + parent: 2 + - uid: 391 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,-2.5 + parent: 2 + - uid: 392 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,-6.5 + parent: 2 +- proto: GeneratorBasic15kW + entities: + - uid: 393 + components: + - type: Transform + pos: 1.5,-15.5 + parent: 2 + - uid: 394 + components: + - type: Transform + pos: 0.5,-15.5 + parent: 2 +- proto: GravityGeneratorMini + entities: + - uid: 395 + components: + - type: Transform + pos: -2.5,-15.5 + parent: 2 +- proto: Grille + entities: + - uid: 396 + components: + - type: Transform + pos: -8.5,2.5 + parent: 2 + - uid: 397 + components: + - type: Transform + pos: -3.5,9.5 + parent: 2 + - uid: 398 + components: + - type: Transform + pos: -3.5,8.5 + parent: 2 + - uid: 399 + components: + - type: Transform + pos: 2.5,9.5 + parent: 2 + - uid: 400 + components: + - type: Transform + pos: 2.5,8.5 + parent: 2 + - uid: 401 + components: + - type: Transform + pos: 0.5,11.5 + parent: 2 + - uid: 402 + components: + - type: Transform + pos: -0.5,11.5 + parent: 2 + - uid: 403 + components: + - type: Transform + pos: -1.5,11.5 + parent: 2 + - uid: 404 + components: + - type: Transform + pos: -8.5,3.5 + parent: 2 + - uid: 405 + components: + - type: Transform + pos: 7.5,3.5 + parent: 2 + - uid: 406 + components: + - type: Transform + pos: 7.5,2.5 + parent: 2 + - uid: 407 + components: + - type: Transform + pos: 6.5,1.5 + parent: 2 + - uid: 408 + components: + - type: Transform + pos: 5.5,1.5 + parent: 2 + - uid: 409 + components: + - type: Transform + pos: 4.5,1.5 + parent: 2 + - uid: 410 + components: + - type: Transform + pos: -9.5,-4.5 + parent: 2 + - uid: 411 + components: + - type: Transform + pos: -9.5,1.5 + parent: 2 + - uid: 412 + components: + - type: Transform + pos: -7.5,-3.5 + parent: 2 + - uid: 413 + components: + - type: Transform + pos: 6.5,-4.5 + parent: 2 + - uid: 414 + components: + - type: Transform + pos: -2.5,-16.5 + parent: 2 + - uid: 415 + components: + - type: Transform + pos: -1.5,-16.5 + parent: 2 + - uid: 416 + components: + - type: Transform + pos: 0.5,-16.5 + parent: 2 + - uid: 417 + components: + - type: Transform + pos: 1.5,-16.5 + parent: 2 + - uid: 418 + components: + - type: Transform + pos: -10.5,-3.5 + parent: 2 + - uid: 419 + components: + - type: Transform + pos: 5.5,-4.5 + parent: 2 + - uid: 420 + components: + - type: Transform + pos: 4.5,-4.5 + parent: 2 + - uid: 421 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 2 + - uid: 422 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 2 + - uid: 423 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,-0.5 + parent: 2 + - uid: 424 + components: + - type: Transform + pos: 7.5,-5.5 + parent: 2 + - uid: 425 + components: + - type: Transform + pos: 7.5,-6.5 + parent: 2 + - uid: 426 + components: + - type: Transform + pos: 5.5,-10.5 + parent: 2 + - uid: 427 + components: + - type: Transform + pos: 5.5,-11.5 + parent: 2 + - uid: 428 + components: + - type: Transform + pos: -6.5,-10.5 + parent: 2 + - uid: 429 + components: + - type: Transform + pos: -6.5,-11.5 + parent: 2 + - uid: 430 + components: + - type: Transform + pos: -5.5,-13.5 + parent: 2 + - uid: 431 + components: + - type: Transform + pos: -5.5,-14.5 + parent: 2 + - uid: 432 + components: + - type: Transform + pos: 4.5,-13.5 + parent: 2 + - uid: 433 + components: + - type: Transform + pos: 4.5,-14.5 + parent: 2 + - uid: 434 + components: + - type: Transform + pos: -1.5,7.5 + parent: 2 + - uid: 435 + components: + - type: Transform + pos: 0.5,7.5 + parent: 2 + - uid: 436 + components: + - type: Transform + pos: -8.5,-5.5 + parent: 2 + - uid: 437 + components: + - type: Transform + pos: -8.5,-6.5 + parent: 2 + - uid: 438 + components: + - type: Transform + pos: -4.5,-0.5 + parent: 2 + - uid: 439 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 2 + - uid: 440 + components: + - type: Transform + pos: -4.5,-2.5 + parent: 2 + - uid: 441 + components: + - type: Transform + pos: 9.5,-1.5 + parent: 2 + - uid: 442 + components: + - type: Transform + pos: -1.5,-4.5 + parent: 2 + - uid: 443 + components: + - type: Transform + pos: 0.5,-4.5 + parent: 2 + - uid: 444 + components: + - type: Transform + pos: -0.5,-12.5 + parent: 2 + - uid: 445 + components: + - type: Transform + pos: -7.5,0.5 + parent: 2 + - uid: 446 + components: + - type: Transform + pos: -10.5,0.5 + parent: 2 +- proto: Gyroscope + entities: + - uid: 447 + components: + - type: Transform + pos: -4.5,-14.5 + parent: 2 +- proto: HospitalCurtains + entities: + - uid: 448 + components: + - type: Transform + pos: 4.5,-11.5 + parent: 2 + - type: Occluder + enabled: False + - type: Door + state: Open + - type: Physics + canCollide: False +- proto: HospitalCurtainsOpen + entities: + - uid: 449 + components: + - type: Transform + pos: -1.5,-11.5 + parent: 2 +- proto: IntercomAll + entities: + - uid: 450 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,3.5 + parent: 2 + missingComponents: + - ActiveListener +- proto: JetpackMiniFilled + entities: + - uid: 451 + components: + - type: Transform + pos: -9.508206,-3.3199291 + parent: 2 +- proto: MedkitAdvancedFilled + entities: + - uid: 452 + components: + - type: Transform + pos: -2.5632703,-0.42328313 + parent: 2 +- proto: MedkitOxygenFilled + entities: + - uid: 453 + components: + - type: Transform + pos: -2.3338752,-0.5901818 + parent: 2 +- proto: Mirror + entities: + - uid: 454 + components: + - type: Transform + pos: 2.5,-8.5 + parent: 2 + - uid: 620 + components: + - type: Transform + pos: 1.5,1.5 + parent: 2 + - uid: 621 + components: + - type: Transform + pos: -2.5,1.5 + parent: 2 +- proto: NitrogenCanister + entities: + - uid: 455 + components: + - type: Transform + pos: -9.5,0.5 + parent: 2 + - type: PolymorphableCanister + currentPrototype: NitrogenCanister +- proto: OxygenCanister + entities: + - uid: 456 + components: + - type: Transform + pos: -8.5,0.5 + parent: 2 + - type: PolymorphableCanister + currentPrototype: OxygenCanister +- proto: Paper + entities: + - uid: 457 + components: + - type: Transform + pos: -3.4183693,2.541491 + parent: 2 + - uid: 458 + components: + - type: Transform + pos: -3.3349533,2.7083888 + parent: 2 + - uid: 459 + components: + - type: Transform + pos: 3.578297,4.715441 + parent: 2 + - uid: 460 + components: + - type: Transform + pos: 4.349894,4.652854 + parent: 2 + - uid: 461 + components: + - type: Transform + pos: 4.600142,4.193884 + parent: 2 + - uid: 462 + components: + - type: Transform + pos: 4.662705,3.5888767 + parent: 2 +- proto: Pen + entities: + - uid: 463 + components: + - type: Transform + pos: 4.391602,3.9643984 + parent: 2 + - uid: 464 + components: + - type: Transform + pos: 3.80769,4.652854 + parent: 2 +- proto: PlasmaDoor + entities: + - uid: 465 + components: + - type: Transform + pos: -0.5,7.5 + parent: 2 + - uid: 466 + components: + - type: Transform + pos: -2.5,4.5 + parent: 2 + - uid: 467 + components: + - type: Transform + pos: 1.5,4.5 + parent: 2 + - uid: 468 + components: + - type: Transform + pos: -0.5,1.5 + parent: 2 + - uid: 469 + components: + - type: Transform + pos: -0.5,-4.5 + parent: 2 + - uid: 470 + components: + - type: Transform + pos: -0.5,-8.5 + parent: 2 + - uid: 471 + components: + - type: Transform + pos: 3.5,-8.5 + parent: 2 + - uid: 472 + components: + - type: Transform + pos: -4.5,-8.5 + parent: 2 + - uid: 473 + components: + - type: Transform + pos: -3.5,-12.5 + parent: 2 + - uid: 474 + components: + - type: Transform + pos: -6.5,1.5 + parent: 2 + - uid: 475 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 2 +- proto: PlasmaReinforcedWindowDirectional + entities: + - uid: 476 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,-14.5 + parent: 2 + - uid: 477 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,-13.5 + parent: 2 + - uid: 478 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,-14.5 + parent: 2 + - uid: 479 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-14.5 + parent: 2 + - uid: 480 + components: + - type: Transform + pos: -1.5,12.5 + parent: 2 + - uid: 481 + components: + - type: Transform + pos: -0.5,12.5 + parent: 2 + - uid: 482 + components: + - type: Transform + pos: 0.5,12.5 + parent: 2 + - uid: 483 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,9.5 + parent: 2 + - uid: 484 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,8.5 + parent: 2 + - uid: 485 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,9.5 + parent: 2 + - uid: 486 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,8.5 + parent: 2 + - uid: 487 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,3.5 + parent: 2 + - uid: 488 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,2.5 + parent: 2 + - uid: 489 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,-5.5 + parent: 2 + - uid: 490 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,-6.5 + parent: 2 + - uid: 491 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,-10.5 + parent: 2 + - uid: 492 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,-10.5 + parent: 2 + - uid: 493 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,-11.5 + parent: 2 + - uid: 494 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,-11.5 + parent: 2 + - uid: 495 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-13.5 + parent: 2 + - uid: 496 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-14.5 + parent: 2 + - uid: 497 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-17.5 + parent: 2 + - uid: 498 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-17.5 + parent: 2 + - uid: 499 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-17.5 + parent: 2 + - uid: 500 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-17.5 + parent: 2 + - uid: 501 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,-14.5 + parent: 2 + - uid: 502 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,-13.5 + parent: 2 + - uid: 503 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,2.5 + parent: 2 + - uid: 504 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,3.5 + parent: 2 + - uid: 505 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,-5.5 + parent: 2 + - uid: 506 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,-6.5 + parent: 2 + - uid: 507 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,-1.5 + parent: 2 + - uid: 508 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-2.5 + parent: 2 + - uid: 509 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-1.5 + parent: 2 + - uid: 510 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-0.5 + parent: 2 + - uid: 511 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,0.5 + parent: 2 + - uid: 512 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,0.5 + parent: 2 + - uid: 513 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,0.5 + parent: 2 + - uid: 514 + components: + - type: Transform + pos: 4.5,-3.5 + parent: 2 + - uid: 515 + components: + - type: Transform + pos: 5.5,-3.5 + parent: 2 + - uid: 516 + components: + - type: Transform + pos: 6.5,-3.5 + parent: 2 +- proto: PowerCellRecharger + entities: + - uid: 517 + components: + - type: Transform + pos: 1.5,9.5 + parent: 2 +- proto: Poweredlight + entities: + - uid: 518 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-7.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 519 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-7.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 520 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 521 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 522 + components: + - type: Transform + pos: -2.5,0.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 523 + components: + - type: Transform + pos: 1.5,0.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 524 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -9.5,-0.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 525 + components: + - type: Transform + pos: -9.5,-2.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 526 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,-3.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 527 + components: + - type: Transform + pos: 7.5,0.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 528 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-16.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 529 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,-10.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 530 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,5.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 531 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,8.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 532 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,8.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 533 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,12.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 534 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,12.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 535 + components: + - type: Transform + pos: 9.5,-4.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 536 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,1.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 537 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,2.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 538 + components: + - type: Transform + pos: -10.5,-5.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 539 + components: + - type: Transform + pos: -7.5,-9.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 540 + components: + - type: Transform + pos: 6.5,-9.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 541 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,-17.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 542 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-17.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 543 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,-16.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 +- proto: PoweredSmallLight + entities: + - uid: 544 + components: + - type: Transform + pos: -4.5,6.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 545 + components: + - type: Transform + pos: 3.5,6.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 + - uid: 546 + components: + - type: Transform + pos: 2.5,-9.5 + parent: 2 + - type: ApcPowerReceiver + powerLoad: 0 +- proto: Rack + entities: + - uid: 547 + components: + - type: Transform + pos: -9.5,-3.5 + parent: 2 + - uid: 548 + components: + - type: Transform + pos: -4.5,-13.5 + parent: 2 +- proto: ReinforcedPlasmaWindow + entities: + - uid: 549 + components: + - type: Transform + pos: -1.5,7.5 + parent: 2 + - uid: 550 + components: + - type: Transform + pos: 0.5,7.5 + parent: 2 + - uid: 551 + components: + - type: Transform + pos: -7.5,0.5 + parent: 2 + - uid: 552 + components: + - type: Transform + pos: 2.5,9.5 + parent: 2 + - uid: 553 + components: + - type: Transform + pos: 2.5,8.5 + parent: 2 + - uid: 554 + components: + - type: Transform + pos: -1.5,11.5 + parent: 2 + - uid: 555 + components: + - type: Transform + pos: -0.5,11.5 + parent: 2 + - uid: 556 + components: + - type: Transform + pos: 0.5,11.5 + parent: 2 + - uid: 557 + components: + - type: Transform + pos: -3.5,9.5 + parent: 2 + - uid: 558 + components: + - type: Transform + pos: -3.5,8.5 + parent: 2 + - uid: 559 + components: + - type: Transform + pos: -2.5,-16.5 + parent: 2 + - uid: 560 + components: + - type: Transform + pos: -1.5,-16.5 + parent: 2 + - uid: 561 + components: + - type: Transform + pos: 0.5,-16.5 + parent: 2 + - uid: 562 + components: + - type: Transform + pos: 1.5,-16.5 + parent: 2 + - uid: 563 + components: + - type: Transform + pos: 4.5,-13.5 + parent: 2 + - uid: 564 + components: + - type: Transform + pos: 4.5,-14.5 + parent: 2 + - uid: 565 + components: + - type: Transform + pos: -5.5,-14.5 + parent: 2 + - uid: 566 + components: + - type: Transform + pos: -5.5,-13.5 + parent: 2 + - uid: 567 + components: + - type: Transform + pos: -6.5,-11.5 + parent: 2 + - uid: 568 + components: + - type: Transform + pos: -6.5,-10.5 + parent: 2 + - uid: 569 + components: + - type: Transform + pos: 5.5,-11.5 + parent: 2 + - uid: 570 + components: + - type: Transform + pos: 5.5,-10.5 + parent: 2 + - uid: 571 + components: + - type: Transform + pos: 7.5,-6.5 + parent: 2 + - uid: 572 + components: + - type: Transform + pos: 7.5,-5.5 + parent: 2 + - uid: 573 + components: + - type: Transform + pos: 6.5,-4.5 + parent: 2 + - uid: 574 + components: + - type: Transform + pos: 5.5,-4.5 + parent: 2 + - uid: 575 + components: + - type: Transform + pos: 4.5,-4.5 + parent: 2 + - uid: 576 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 2 + - uid: 577 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 2 + - uid: 578 + components: + - type: Transform + pos: 4.5,1.5 + parent: 2 + - uid: 579 + components: + - type: Transform + pos: 5.5,1.5 + parent: 2 + - uid: 580 + components: + - type: Transform + pos: 6.5,1.5 + parent: 2 + - uid: 581 + components: + - type: Transform + pos: -8.5,-6.5 + parent: 2 + - uid: 582 + components: + - type: Transform + pos: -8.5,-5.5 + parent: 2 + - uid: 583 + components: + - type: Transform + pos: -7.5,-3.5 + parent: 2 + - uid: 584 + components: + - type: Transform + pos: -9.5,-4.5 + parent: 2 + - uid: 585 + components: + - type: Transform + pos: -9.5,1.5 + parent: 2 + - uid: 586 + components: + - type: Transform + pos: -4.5,-0.5 + parent: 2 + - uid: 587 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 2 + - uid: 588 + components: + - type: Transform + pos: -4.5,-2.5 + parent: 2 + - uid: 589 + components: + - type: Transform + pos: 9.5,-1.5 + parent: 2 + - uid: 590 + components: + - type: Transform + pos: -1.5,-4.5 + parent: 2 + - uid: 591 + components: + - type: Transform + pos: 0.5,-4.5 + parent: 2 + - uid: 592 + components: + - type: Transform + pos: -0.5,-12.5 + parent: 2 + - uid: 593 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,-0.5 + parent: 2 + - uid: 594 + components: + - type: Transform + pos: -10.5,0.5 + parent: 2 + - uid: 595 + components: + - type: Transform + pos: -10.5,-3.5 + parent: 2 + - uid: 596 + components: + - type: Transform + pos: -8.5,2.5 + parent: 2 + - uid: 597 + components: + - type: Transform + pos: -8.5,3.5 + parent: 2 + - uid: 598 + components: + - type: Transform + pos: 7.5,2.5 + parent: 2 + - uid: 599 + components: + - type: Transform + pos: 7.5,3.5 + parent: 2 +- proto: ScrollArc + entities: + - uid: 600 + components: + - type: Transform + pos: 1.6040134,-1.2683926 + parent: 2 +- proto: ScrollBananaTouch + entities: + - uid: 601 + components: + - type: Transform + pos: 1.6251822,-2.5377865 + parent: 2 +- proto: ScrollBlink + entities: + - uid: 602 + components: + - type: Transform + pos: 1.6251822,-2.2415943 + parent: 2 +- proto: ScrollCards + entities: + - uid: 603 + components: + - type: Transform + pos: 1.6040134,-2.0300293 + parent: 2 +- proto: ScrollCluwneCurse + entities: + - uid: 604 + components: + - type: Transform + pos: 1.6463518,-1.6492105 + parent: 2 +- proto: ScrollEmp + entities: + - uid: 605 + components: + - type: Transform + pos: 1.5828438,-0.99335766 + parent: 2 +- proto: ScrollEtherealJaunt + entities: + - uid: 606 + components: + - type: Transform + pos: 1.5405054,-0.7606354 + parent: 2 +- proto: ScrollFireball + entities: + - uid: 607 + components: + - type: Transform + pos: -2.5028415,-2.4954739 + parent: 2 +- proto: ScrollForce + entities: + - uid: 608 + components: + - type: Transform + pos: -2.5028415,-2.1358118 + parent: 2 +- proto: ScrollForcewall + entities: + - uid: 609 + components: + - type: Transform + pos: -2.460503,-1.8396206 + parent: 2 +- proto: ScrollInstantRecall + entities: + - uid: 610 + components: + - type: Transform + pos: -2.5028415,-1.5222716 + parent: 2 +- proto: ScrollKnock + entities: + - uid: 611 + components: + - type: Transform + pos: -2.5028415,-1.1414533 + parent: 2 +- proto: ScrollMimeTouch + entities: + - uid: 612 + components: + - type: Transform + pos: -2.5028415,-0.908731 + parent: 2 +- proto: SinkWide + entities: + - uid: 613 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,-9.5 + parent: 2 +- proto: Skub + entities: + - uid: 614 + components: + - type: Transform + pos: 4.572705,-11.394358 + parent: 2 +- proto: SMESBasic + entities: + - uid: 615 + components: + - type: Transform + pos: -0.5,-15.5 + parent: 2 +- proto: SoapOmega + entities: + - uid: 616 + components: + - type: Transform + pos: 2.4979851,-9.465773 + parent: 2 +- proto: SpaceCash1000 + entities: + - uid: 617 + components: + - type: Transform + pos: 1.5532203,-0.27368456 + parent: 2 +- proto: SpawnMobBear + entities: + - uid: 618 + components: + - type: Transform + pos: 7.5,-0.5 + parent: 2 + - uid: 619 + components: + - type: Transform + pos: 6.5,-2.5 + parent: 2 +- proto: StealthBox + entities: + - uid: 622 + components: + - type: Transform + pos: -5.369279,-11.020669 + parent: 2 + - type: Stealth + enabled: False + - type: EntityStorage + open: True +- proto: SubstationBasic + entities: + - uid: 623 + components: + - type: Transform + pos: -1.5,-15.5 + parent: 2 +- proto: SuitStorageWizard + entities: + - uid: 624 + components: + - type: Transform + pos: -0.5,-11.5 + parent: 2 +- proto: TableCarpet + entities: + - uid: 625 + components: + - type: Transform + pos: 3.5,4.5 + parent: 2 + - uid: 626 + components: + - type: Transform + pos: 4.5,3.5 + parent: 2 + - uid: 627 + components: + - type: Transform + pos: 4.5,4.5 + parent: 2 +- proto: TableStone + entities: + - uid: 628 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-1.5 + parent: 2 + - uid: 629 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-0.5 + parent: 2 + - uid: 630 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-0.5 + parent: 2 + - uid: 631 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-2.5 + parent: 2 + - uid: 632 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-1.5 + parent: 2 + - uid: 633 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 2 +- proto: TableWood + entities: + - uid: 634 + components: + - type: Transform + pos: 1.5,8.5 + parent: 2 + - uid: 635 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,9.5 + parent: 2 + - uid: 636 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,9.5 + parent: 2 + - uid: 637 + components: + - type: Transform + pos: -2.5,8.5 + parent: 2 + - uid: 638 + components: + - type: Transform + pos: -4.5,6.5 + parent: 2 + - uid: 639 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,2.5 + parent: 2 + - uid: 640 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-9.5 + parent: 2 + - uid: 641 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,2.5 + parent: 2 + - uid: 642 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,2.5 + parent: 2 +- proto: TargetStrange + entities: + - uid: 643 + components: + - type: Transform + pos: -4.5,-11.5 + parent: 2 +- proto: Thruster + entities: + - uid: 644 + components: + - type: Transform + pos: -3.5,11.5 + parent: 2 + - uid: 645 + components: + - type: Transform + pos: 2.5,11.5 + parent: 2 + - uid: 646 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,5.5 + parent: 2 + - uid: 647 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,5.5 + parent: 2 + - uid: 648 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,-16.5 + parent: 2 + - uid: 649 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-17.5 + parent: 2 + - uid: 650 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-16.5 + parent: 2 + - uid: 651 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,-8.5 + parent: 2 + - uid: 652 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,-8.5 + parent: 2 +- proto: ToiletEmpty + entities: + - uid: 653 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-11.5 + parent: 2 +- proto: VendingMachineClothing + entities: + - uid: 654 + components: + - type: Transform + pos: -1.5,2.5 + parent: 2 +- proto: VendingMachineCoffee + entities: + - uid: 655 + components: + - type: Transform + pos: 3.5,6.5 + parent: 2 +- proto: VendingMachineDiscount + entities: + - uid: 656 + components: + - type: Transform + pos: 0.5,2.5 + parent: 2 +- proto: VendingMachineGames + entities: + - uid: 657 + components: + - type: Transform + pos: 2.5,6.5 + parent: 2 +- proto: VendingMachineTankDispenserEVA + entities: + - uid: 658 + components: + - type: Transform + pos: -8.5,-3.5 + parent: 2 +- proto: WallDiamond + entities: + - uid: 659 + components: + - type: Transform + pos: -5.5,-6.5 + parent: 2 + - uid: 660 + components: + - type: Transform + pos: -3.5,-6.5 + parent: 2 + - uid: 661 + components: + - type: Transform + pos: -1.5,-6.5 + parent: 2 + - uid: 662 + components: + - type: Transform + pos: 0.5,-6.5 + parent: 2 + - uid: 663 + components: + - type: Transform + pos: 2.5,-6.5 + parent: 2 + - uid: 664 + components: + - type: Transform + pos: 4.5,-6.5 + parent: 2 +- proto: WallUranium + entities: + - uid: 665 + components: + - type: Transform + pos: -2.5,6.5 + parent: 2 + - uid: 666 + components: + - type: Transform + pos: 1.5,6.5 + parent: 2 + - uid: 667 + components: + - type: Transform + pos: 1.5,11.5 + parent: 2 + - uid: 668 + components: + - type: Transform + pos: 1.5,10.5 + parent: 2 + - uid: 669 + components: + - type: Transform + pos: 2.5,10.5 + parent: 2 + - uid: 670 + components: + - type: Transform + pos: 2.5,7.5 + parent: 2 + - uid: 671 + components: + - type: Transform + pos: 1.5,7.5 + parent: 2 + - uid: 672 + components: + - type: Transform + pos: -2.5,11.5 + parent: 2 + - uid: 673 + components: + - type: Transform + pos: -2.5,10.5 + parent: 2 + - uid: 674 + components: + - type: Transform + pos: -3.5,10.5 + parent: 2 + - uid: 675 + components: + - type: Transform + pos: -2.5,7.5 + parent: 2 + - uid: 676 + components: + - type: Transform + pos: -3.5,7.5 + parent: 2 + - uid: 677 + components: + - type: Transform + pos: -6.5,6.5 + parent: 2 + - uid: 678 + components: + - type: Transform + pos: -5.5,6.5 + parent: 2 + - uid: 679 + components: + - type: Transform + pos: -5.5,7.5 + parent: 2 + - uid: 680 + components: + - type: Transform + pos: -4.5,7.5 + parent: 2 + - uid: 681 + components: + - type: Transform + pos: -6.5,5.5 + parent: 2 + - uid: 682 + components: + - type: Transform + pos: -7.5,5.5 + parent: 2 + - uid: 683 + components: + - type: Transform + pos: -7.5,4.5 + parent: 2 + - uid: 684 + components: + - type: Transform + pos: -8.5,4.5 + parent: 2 + - uid: 685 + components: + - type: Transform + pos: -1.5,1.5 + parent: 2 + - uid: 686 + components: + - type: Transform + pos: 0.5,1.5 + parent: 2 + - uid: 687 + components: + - type: Transform + pos: 3.5,7.5 + parent: 2 + - uid: 688 + components: + - type: Transform + pos: 4.5,7.5 + parent: 2 + - uid: 689 + components: + - type: Transform + pos: 4.5,6.5 + parent: 2 + - uid: 690 + components: + - type: Transform + pos: 5.5,6.5 + parent: 2 + - uid: 691 + components: + - type: Transform + pos: 5.5,5.5 + parent: 2 + - uid: 692 + components: + - type: Transform + pos: 6.5,5.5 + parent: 2 + - uid: 693 + components: + - type: Transform + pos: 6.5,4.5 + parent: 2 + - uid: 694 + components: + - type: Transform + pos: 7.5,4.5 + parent: 2 + - uid: 695 + components: + - type: Transform + pos: 7.5,1.5 + parent: 2 + - uid: 696 + components: + - type: Transform + pos: 3.5,1.5 + parent: 2 + - uid: 697 + components: + - type: Transform + pos: 2.5,1.5 + parent: 2 + - uid: 698 + components: + - type: Transform + pos: 1.5,1.5 + parent: 2 + - uid: 699 + components: + - type: Transform + pos: 1.5,3.5 + parent: 2 + - uid: 700 + components: + - type: Transform + pos: 1.5,2.5 + parent: 2 + - uid: 701 + components: + - type: Transform + pos: 1.5,5.5 + parent: 2 + - uid: 702 + components: + - type: Transform + pos: -2.5,1.5 + parent: 2 + - uid: 703 + components: + - type: Transform + pos: -2.5,2.5 + parent: 2 + - uid: 704 + components: + - type: Transform + pos: -2.5,3.5 + parent: 2 + - uid: 705 + components: + - type: Transform + pos: -2.5,5.5 + parent: 2 + - uid: 706 + components: + - type: Transform + pos: -3.5,1.5 + parent: 2 + - uid: 707 + components: + - type: Transform + pos: -4.5,1.5 + parent: 2 + - uid: 708 + components: + - type: Transform + pos: -5.5,1.5 + parent: 2 + - uid: 709 + components: + - type: Transform + pos: -7.5,1.5 + parent: 2 + - uid: 710 + components: + - type: Transform + pos: -8.5,1.5 + parent: 2 + - uid: 711 + components: + - type: Transform + pos: 6.5,-7.5 + parent: 2 + - uid: 712 + components: + - type: Transform + pos: 7.5,-7.5 + parent: 2 + - uid: 713 + components: + - type: Transform + pos: -8.5,-4.5 + parent: 2 + - uid: 714 + components: + - type: Transform + pos: -8.5,-7.5 + parent: 2 + - uid: 715 + components: + - type: Transform + pos: 8.5,1.5 + parent: 2 + - uid: 716 + components: + - type: Transform + pos: 8.5,0.5 + parent: 2 + - uid: 717 + components: + - type: Transform + pos: 9.5,0.5 + parent: 2 + - uid: 718 + components: + - type: Transform + pos: 9.5,-3.5 + parent: 2 + - uid: 719 + components: + - type: Transform + pos: 8.5,-3.5 + parent: 2 + - uid: 720 + components: + - type: Transform + pos: 8.5,-4.5 + parent: 2 + - uid: 721 + components: + - type: Transform + pos: 7.5,-4.5 + parent: 2 + - uid: 722 + components: + - type: Transform + pos: 3.5,0.5 + parent: 2 + - uid: 723 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 2 + - uid: 724 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 2 + - uid: 725 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 2 + - uid: 726 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 2 + - uid: 727 + components: + - type: Transform + pos: -3.5,-17.5 + parent: 2 + - uid: 728 + components: + - type: Transform + pos: -3.5,-16.5 + parent: 2 + - uid: 729 + components: + - type: Transform + pos: 2.5,-17.5 + parent: 2 + - uid: 730 + components: + - type: Transform + pos: 2.5,-16.5 + parent: 2 + - uid: 731 + components: + - type: Transform + pos: -0.5,-16.5 + parent: 2 + - uid: 732 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 2 + - uid: 733 + components: + - type: Transform + pos: -4.5,0.5 + parent: 2 + - uid: 734 + components: + - type: Transform + pos: -4.5,-3.5 + parent: 2 + - uid: 735 + components: + - type: Transform + pos: -4.5,-4.5 + parent: 2 + - uid: 736 + components: + - type: Transform + pos: -3.5,-4.5 + parent: 2 + - uid: 737 + components: + - type: Transform + pos: -7.5,-4.5 + parent: 2 + - uid: 738 + components: + - type: Transform + pos: -6.5,-4.5 + parent: 2 + - uid: 739 + components: + - type: Transform + pos: -7.5,-7.5 + parent: 2 + - uid: 740 + components: + - type: Transform + pos: -7.5,-8.5 + parent: 2 + - uid: 741 + components: + - type: Transform + pos: -6.5,-8.5 + parent: 2 + - uid: 742 + components: + - type: Transform + pos: -6.5,-9.5 + parent: 2 + - uid: 743 + components: + - type: Transform + pos: -6.5,-12.5 + parent: 2 + - uid: 744 + components: + - type: Transform + pos: -5.5,-12.5 + parent: 2 + - uid: 745 + components: + - type: Transform + pos: -5.5,-15.5 + parent: 2 + - uid: 746 + components: + - type: Transform + pos: -3.5,-15.5 + parent: 2 + - uid: 747 + components: + - type: Transform + pos: 2.5,-15.5 + parent: 2 + - uid: 748 + components: + - type: Transform + pos: 4.5,-15.5 + parent: 2 + - uid: 749 + components: + - type: Transform + pos: -4.5,-15.5 + parent: 2 + - uid: 750 + components: + - type: Transform + pos: 3.5,-15.5 + parent: 2 + - uid: 751 + components: + - type: Transform + pos: 4.5,-12.5 + parent: 2 + - uid: 752 + components: + - type: Transform + pos: 5.5,-12.5 + parent: 2 + - uid: 753 + components: + - type: Transform + pos: 6.5,-8.5 + parent: 2 + - uid: 754 + components: + - type: Transform + pos: 5.5,-8.5 + parent: 2 + - uid: 755 + components: + - type: Transform + pos: 5.5,-9.5 + parent: 2 + - uid: 756 + components: + - type: Transform + pos: -10.5,-4.5 + parent: 2 + - uid: 757 + components: + - type: Transform + pos: -10.5,1.5 + parent: 2 + - uid: 758 + components: + - type: Transform + pos: -9.5,-1.5 + parent: 2 + - uid: 759 + components: + - type: Transform + pos: -10.5,-1.5 + parent: 2 + - uid: 760 + components: + - type: Transform + pos: -7.5,-1.5 + parent: 2 + - uid: 761 + components: + - type: Transform + pos: -5.5,-8.5 + parent: 2 + - uid: 762 + components: + - type: Transform + pos: -3.5,-8.5 + parent: 2 + - uid: 763 + components: + - type: Transform + pos: -2.5,-8.5 + parent: 2 + - uid: 764 + components: + - type: Transform + pos: -1.5,-8.5 + parent: 2 + - uid: 765 + components: + - type: Transform + pos: 0.5,-8.5 + parent: 2 + - uid: 766 + components: + - type: Transform + pos: 1.5,-8.5 + parent: 2 + - uid: 767 + components: + - type: Transform + pos: 2.5,-8.5 + parent: 2 + - uid: 768 + components: + - type: Transform + pos: 4.5,-8.5 + parent: 2 + - uid: 769 + components: + - type: Transform + pos: -4.5,-12.5 + parent: 2 + - uid: 770 + components: + - type: Transform + pos: -2.5,-12.5 + parent: 2 + - uid: 771 + components: + - type: Transform + pos: -2.5,-11.5 + parent: 2 + - uid: 772 + components: + - type: Transform + pos: -2.5,-9.5 + parent: 2 + - uid: 773 + components: + - type: Transform + pos: -2.5,-10.5 + parent: 2 + - uid: 774 + components: + - type: Transform + pos: 1.5,-9.5 + parent: 2 + - uid: 775 + components: + - type: Transform + pos: 1.5,-10.5 + parent: 2 + - uid: 776 + components: + - type: Transform + pos: 1.5,-11.5 + parent: 2 + - uid: 777 + components: + - type: Transform + pos: 1.5,-12.5 + parent: 2 + - uid: 778 + components: + - type: Transform + pos: -1.5,-12.5 + parent: 2 + - uid: 779 + components: + - type: Transform + pos: 0.5,-12.5 + parent: 2 + - uid: 780 + components: + - type: Transform + pos: 2.5,-12.5 + parent: 2 + - uid: 781 + components: + - type: Transform + pos: 3.5,-12.5 + parent: 2 + - uid: 782 + components: + - type: Transform + pos: -8.5,-1.5 + parent: 2 +- proto: WeaponCapacitorRecharger + entities: + - uid: 783 + components: + - type: Transform + pos: -2.5,9.5 + parent: 2 +... diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index e661846595..fa2fc09861 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -150,6 +150,13 @@ - RitualDagger - CultRunicMetal20 +- type: entity + id: Wizard + parent: BaseGameRule + noSpawn: true + components: + - type: WizardRule + # variation passes - type: entity id: BasicRoundstartVariation diff --git a/Resources/Prototypes/Magic/knock_spell.yml b/Resources/Prototypes/Magic/knock_spell.yml index f00897d32c..131fbb8910 100644 --- a/Resources/Prototypes/Magic/knock_spell.yml +++ b/Resources/Prototypes/Magic/knock_spell.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: ActionKnock name: Knock description: This spell opens nearby doors. @@ -7,6 +7,7 @@ - type: InstantAction useDelay: 10 itemIconStyle: BigAction + checkCanInteract: false icon: sprite: Objects/Magic/magicactions.rsi state: knock diff --git a/Resources/Prototypes/Magic/white.yml b/Resources/Prototypes/Magic/white.yml index 65726f9f55..1be2773391 100644 --- a/Resources/Prototypes/Magic/white.yml +++ b/Resources/Prototypes/Magic/white.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: ActionElectricArcSpell name: Electric arc noSpawn: true @@ -6,10 +6,12 @@ - type: Magic requiresClothes: true - type: WorldTargetAction - useDelay: 60 itemIconStyle: BigAction + useDelay: 60 checkCanAccess: false + checkCanInteract: false range: 10 + alwaysPlaySound: false sound: !type:SoundPathSpecifier path: /Audio/White/Magic/Arc/cast.ogg icon: @@ -26,6 +28,10 @@ speech: "KUH, ABAH'RAH" prototype: ProjectileTeslaBall posData: !type:TargetCasterPos + - type: VariableUseDelay + useDelay: 6 + altUseDelay: 12 + chargeUseDelay: 40 - type: entity id: ActionForceSpell @@ -35,10 +41,12 @@ - type: Magic requiresClothes: true - type: WorldTargetAction - useDelay: 60 itemIconStyle: BigAction + useDelay: 60 checkCanAccess: false + checkCanInteract: false range: 10 + alwaysPlaySound: false sound: !type:SoundPathSpecifier path: /Audio/White/Magic/Force/cast.ogg icon: @@ -53,6 +61,10 @@ isAltEnabled: true event: !type:ForceSpellEvent speech: "EL DRITCH!" + - type: VariableUseDelay + useDelay: 6 + altUseDelay: 12 + chargeUseDelay: 40 - type: entity id: ActionFireballSpell @@ -62,13 +74,15 @@ - type: Magic requiresClothes: true - type: WorldTargetAction - useDelay: 60 itemIconStyle: BigAction + useDelay: 60 checkCanAccess: false + checkCanInteract: false range: 45 isChargeEnabled: true chargeProto: MagicFollowerFireEntity isAltEnabled: true + alwaysPlaySound: false sound: !type:SoundPathSpecifier path: /Audio/Magic/fireball.ogg icon: @@ -78,6 +92,10 @@ prototype: ProjectileFireball posData: !type:TargetCasterPos speech: action-speech-spell-fireball + - type: VariableUseDelay + useDelay: 6 + altUseDelay: 12 + chargeUseDelay: 40 - type: entity id: ActionCardSpell @@ -87,9 +105,10 @@ - type: Magic requiresClothes: true - type: WorldTargetAction - useDelay: 60 itemIconStyle: BigAction + useDelay: 60 checkCanAccess: false + checkCanInteract: false range: 45 isChargeEnabled: true chargingSound: @@ -98,6 +117,7 @@ maxChargedSound: path: /Audio/White/Magic/Cards/max.ogg isAltEnabled: true + alwaysPlaySound: false sound: !type:SoundPathSpecifier path: /Audio/White/Magic/Cards/cast.ogg icon: @@ -107,6 +127,10 @@ prototype: ThrowingCard posData: !type:TargetCasterPos speech: "SHIZO NERO!" + - type: VariableUseDelay + useDelay: 6 + altUseDelay: 1 + chargeUseDelay: 40 - type: entity id: ActionForcewallSpell @@ -116,10 +140,12 @@ - type: Magic requiresClothes: true - type: WorldTargetAction - useDelay: 60 itemIconStyle: BigAction + useDelay: 60 checkCanAccess: false + checkCanInteract: false range: 10 + alwaysPlaySound: false sound: !type:SoundPathSpecifier path: /Audio/White/Magic/Force/cast.ogg icon: @@ -135,6 +161,10 @@ event: !type:ForceWallSpellEvent speech: "TARCOL MINTI ZHERI!" prototype: WallForce + - type: VariableUseDelay + useDelay: 10 + altUseDelay: 20 + chargeUseDelay: 60 - type: entity id: ActionBlinkSpell @@ -142,8 +172,9 @@ noSpawn: true components: - type: InstantAction - useDelay: 60 + useDelay: 6 itemIconStyle: BigAction + checkCanInteract: false icon: sprite: Objects/Magic/magicactions.rsi state: blink @@ -158,8 +189,9 @@ - type: Magic requiresClothes: true - type: InstantAction - useDelay: 60 + useDelay: 30 itemIconStyle: BigAction + checkCanInteract: false icon: sprite: Objects/Magic/magicactions.rsi state: jaunt @@ -174,8 +206,9 @@ - type: Magic requiresClothes: true - type: InstantAction - useDelay: 60 + useDelay: 40 itemIconStyle: BigAction + checkCanInteract: false icon: sprite: Objects/Magic/magicactions.rsi state: emp_new @@ -192,7 +225,7 @@ - type: EntityTargetAction canTargetSelf: false range: 2 - useDelay: 300 + useDelay: 400 itemIconStyle: BigAction icon: sprite: Objects/Magic/magicactions.rsi @@ -210,7 +243,7 @@ - type: EntityTargetAction canTargetSelf: false range: 2 - useDelay: 300 + useDelay: 200 itemIconStyle: BigAction icon: sprite: Objects/Magic/magicactions.rsi @@ -228,7 +261,7 @@ - type: EntityTargetAction canTargetSelf: false range: 2 - useDelay: 300 + useDelay: 200 itemIconStyle: BigAction icon: sprite: Objects/Magic/magicactions.rsi diff --git a/Resources/Prototypes/Polymorphs/polymorph.yml b/Resources/Prototypes/Polymorphs/polymorph.yml index f32561c89d..c7eefef29b 100644 --- a/Resources/Prototypes/Polymorphs/polymorph.yml +++ b/Resources/Prototypes/Polymorphs/polymorph.yml @@ -340,6 +340,17 @@ allowRepeatedMorphs: true inventory: Transfer +- type: polymorph + id: MobHumanSpaceWiz + configuration: + entity: MobHuman + forced: true + revertOnCrit: false + revertOnDeath: false + transferDamage: true + allowRepeatedMorphs: true + inventory: Transfer + - type: polymorph id: MobHumanGhost configuration: diff --git a/Resources/Prototypes/_White/Wizard/objective_groups.yml b/Resources/Prototypes/_White/Wizard/objective_groups.yml new file mode 100644 index 0000000000..d8cd746c7d --- /dev/null +++ b/Resources/Prototypes/_White/Wizard/objective_groups.yml @@ -0,0 +1,26 @@ +- type: weightedRandom + id: WizardObjectiveGroups + weights: + WizardObjectiveGroupSteal: 1 + WizardObjectiveGroupKill: 1 + +- type: weightedRandom + id: WizardObjectiveGroupSteal + weights: + CaptainIDStealObjectiveWiz: 1 + CMOHyposprayStealObjectiveWiz: 1 + RDHardsuitStealObjectiveWiz: 1 + NukeDiskStealObjectiveWiz: 1 + MagbootsStealObjectiveWiz: 1 + CorgiMeatStealObjectiveWiz: 1 + ClipboardStealObjectiveWiz: 1 + CaptainGunStealObjectiveWiz: 0.5 + CaptainJetpackStealObjectiveWiz: 0.5 + HandTeleporterStealObjectiveWiz: 0.5 + SecretDocumentsStealObjectiveWiz: 0.5 + +- type: weightedRandom + id: WizardObjectiveGroupKill + weights: + KillRandomPersonObjectiveWiz: 1 + KillRandomHeadObjectiveWiz: 0.25 diff --git a/Resources/Prototypes/_White/Wizard/objectives.yml b/Resources/Prototypes/_White/Wizard/objectives.yml new file mode 100644 index 0000000000..2ee2981e3a --- /dev/null +++ b/Resources/Prototypes/_White/Wizard/objectives.yml @@ -0,0 +1,219 @@ +#survive + +- type: entity + abstract: true + parent: BaseObjective + id: BaseWizardObjective + components: + - type: Objective + issuer: wizards + - type: RoleRequirement + roles: + components: + - WizardRole + +- type: entity + noSpawn: true + parent: [BaseWizardObjective, BaseSurviveObjective] + id: WizardSurviveObjective + name: Survive the shift, causing as much chaos as possible. + description: Space Wizards Federation sent you to the Nanotrasen station to wreak havoc. Don't disappoint them. + components: + - type: Objective + difficulty: 2 + icon: + sprite: Objects/Fun/figurines.rsi + state: wizard + +#steal + +- type: entity + abstract: true + parent: [BaseWizardObjective, BaseStealObjective] + id: BaseWizardStealObjective + components: + - type: StealCondition + verifyMapExistence: false + - type: Objective + difficulty: 2.75 + +## cmo + +- type: entity + noSpawn: true + parent: BaseWizardStealObjective + id: CMOHyposprayStealObjectiveWiz + components: + - type: NotJobRequirement + job: ChiefMedicalOfficer + - type: StealCondition + stealGroup: Hypospray + owner: job-name-cmo + +## rd + +- type: entity + noSpawn: true + parent: BaseWizardStealObjective + id: RDHardsuitStealObjectiveWiz + components: + - type: NotJobRequirement + job: ResearchDirector + - type: StealCondition + stealGroup: ClothingOuterHardsuitRd + owner: job-name-rd + +- type: entity + noSpawn: true + parent: BaseWizardStealObjective + id: HandTeleporterStealObjectiveWiz + components: + - type: NotJobRequirement + job: ResearchDirector + - type: StealCondition + stealGroup: HandTeleporter + owner: job-name-rd + +## hos + +- type: entity + noSpawn: true + parent: BaseWizardStealObjective + id: SecretDocumentsStealObjectiveWiz + components: + - type: Objective + # hos has a gun ce does not, higher difficulty than most + difficulty: 3 + - type: NotJobRequirement + job: HeadOfSecurity + - type: StealCondition + stealGroup: BookSecretDocuments + owner: job-name-hos + +## ce + +- type: entity + noSpawn: true + parent: BaseWizardStealObjective + id: MagbootsStealObjectiveWiz + components: + - type: NotJobRequirement + job: ChiefEngineer + - type: StealCondition + stealGroup: ClothingShoesBootsMagAdv + owner: job-name-ce + +## qm + +- type: entity + noSpawn: true + parent: BaseWizardStealObjective + id: ClipboardStealObjectiveWiz + components: + - type: NotJobRequirement + job: Quartermaster + - type: StealCondition + stealGroup: BoxFolderQmClipboard + owner: job-name-qm + +## hop + +- type: entity + noSpawn: true + parent: BaseWizardStealObjective + id: CorgiMeatStealObjectiveWiz + components: + - type: NotJobRequirement + job: HeadOfPersonnel + - type: ObjectiveLimit + limit: 3 # ian only has 2 slices, 3 obj for drama + - type: StealCondition + stealGroup: FoodMeatCorgi + owner: objective-condition-steal-Ian + +## cap + +- type: entity + abstract: true + parent: BaseWizardStealObjective + id: BaseCaptainObjectiveWiz + components: + - type: Objective + # sorry ce but your jordans are not as high security as the caps gear + difficulty: 3.5 + - type: NotJobRequirement + job: Captain + +- type: entity + noSpawn: true + parent: BaseCaptainObjectiveWiz + id: CaptainIDStealObjectiveWiz + components: + - type: StealCondition + stealGroup: CaptainIDCard + +- type: entity + noSpawn: true + parent: BaseCaptainObjectiveWiz + id: CaptainJetpackStealObjectiveWiz + components: + - type: StealCondition + stealGroup: JetpackCaptainFilled + +- type: entity + noSpawn: true + parent: BaseCaptainObjectiveWiz + id: CaptainGunStealObjectiveWiz + components: + - type: StealCondition + stealGroup: WeaponAntiqueLaser + owner: job-name-captain + +- type: entity + noSpawn: true + parent: BaseCaptainObjectiveWiz + id: NukeDiskStealObjectiveWiz + components: + - type: Objective + # high difficulty since the hardest item both to steal, and to not get caught down the road, + # since anyone with a pinpointer can track you down and kill you + # it's close to being a stealth loneop + difficulty: 4 + - type: NotCommandRequirement + - type: StealCondition + stealGroup: NukeDisk + owner: objective-condition-steal-station + +# kill + +- type: entity + noSpawn: true + parent: [BaseWizardObjective, BaseKillObjective] + id: KillRandomPersonObjectiveWiz + description: Do it however you like, just make sure they don't make it to centcom. + components: + - type: Objective + difficulty: 1.75 + unique: false + - type: TargetObjective + title: objective-condition-kill-person-title + - type: PickRandomPerson + +- type: entity + noSpawn: true + parent: [BaseWizardObjective, BaseKillObjective] + id: KillRandomHeadObjectiveWiz + description: We need this head gone and you probably know why. Good luck, agent. + components: + - type: Objective + # technically its still possible for KillRandomPersonObjective to roll a head but this is guaranteed, so higher difficulty + difficulty: 3.0 + # killing 1 head is enough + unique: true + - type: TargetObjective + title: objective-condition-kill-head-title + - type: PickRandomHead + - type: KillPersonCondition + # don't count missing evac as killing as heads are higher profile, so you really need to do the dirty work + # if ce flies a shittle to centcom you better find a way onto it + requireDead: true diff --git a/Resources/Prototypes/_White/Wizard/wizard.yml b/Resources/Prototypes/_White/Wizard/wizard.yml new file mode 100644 index 0000000000..5c91df408c --- /dev/null +++ b/Resources/Prototypes/_White/Wizard/wizard.yml @@ -0,0 +1,56 @@ +- type: antag + id: WizardRole + name: roles-antag-wizard-name + antagonist: true + setPreference: true + objective: roles-antag-wizard-objective + requirements: + - !type:OverallPlaytimeRequirement + time: 18000 # 5h + +- type: entity + id: SpawnPointWizard + parent: MarkerBase + name: wizard spawn point + components: + - type: SpawnPoint + - type: Sprite + layers: + - state: green + - sprite: Objects/Fun/figurines.rsi + state: wizard + +- type: entity + id: SpawnPointGhostWizard + parent: MarkerBase + name: wizard spawn point (ghost role) + components: + - type: GhostRole + - type: GhostRoleMobSpawner + prototype: MobHumanSpaceWiz + - type: Sprite + layers: + - state: green + - sprite: Objects/Fun/figurines.rsi + state: wizard_fake + +- type: startingGear + id: WizardGear + equipment: + jumpsuit: ClothingUniformJumpsuitColorDarkBlue + back: ClothingBackpackFilled + head: ClothingHeadHatRealWizardBlue + outerClothing: ClothingOuterRealWizardBlue + shoes: ClothingShoesWizard + innerClothingSkirt: ClothingUniformJumpskirtColorDarkBlue + satchel: ClothingBackpackSatchelFilled + duffelbag: ClothingBackpackDuffelFilled + +- type: entity + noSpawn: true + name: Space Wizard + parent: MobHuman + id: MobHumanSpaceWiz + components: + - type: Wizard + - type: RandomHumanoidAppearance diff --git a/Resources/Prototypes/ai_factions.yml b/Resources/Prototypes/ai_factions.yml index ad86e6852e..6d5f5abf39 100644 --- a/Resources/Prototypes/ai_factions.yml +++ b/Resources/Prototypes/ai_factions.yml @@ -16,6 +16,7 @@ - Xeno - Zombie - Revolutionary + - Wizard - type: npcFaction id: Mouse @@ -54,6 +55,7 @@ - Xeno - PetsNT - Zombie + - Wizard - type: npcFaction id: Xeno @@ -75,6 +77,7 @@ - Passive - PetsNT - Revolutionary + - Wizard - type: npcFaction id: Revolutionary @@ -83,6 +86,7 @@ - Zombie - SimpleHostile - Dragon + - Wizard # WD EDIT STARt - type: npcFaction @@ -93,4 +97,14 @@ - Xeno - PetsNT - Syndicate + - Wizard + +- type: npcFaction + id: Wizard + hostile: + - NanoTrasen + - Syndicate + - Cultist + - Revolutionary + - Zombie # WD EDIT END diff --git a/Resources/Prototypes/game_presets.yml b/Resources/Prototypes/game_presets.yml index 8e0847e2b8..94136ccc5e 100644 --- a/Resources/Prototypes/game_presets.yml +++ b/Resources/Prototypes/game_presets.yml @@ -22,6 +22,7 @@ - RampingStationEventScheduler - Changeling - Cult + - Wizard - BasicRoundstartVariation - type: gamePreset @@ -197,4 +198,19 @@ - SubGamemodesRule - BasicStationEventScheduler - BasicRoundstartVariation + +- type: gamePreset + id: Wizard + alias: + - wizard + - wiz + name: wizard-title + description: wizard-description + showInVote: true + minPlayers: 20 + rules: + - Wizard + - SubGamemodesRule + - BasicStationEventScheduler + - BasicRoundstartVariation #WD EDIT END