diff --git a/Content.Client/Nyanotrasen/Abilities/Psionics/TelegnosisPowerSystem.cs b/Content.Client/Nyanotrasen/Abilities/Psionics/TelegnosisPowerSystem.cs deleted file mode 100644 index 8ddc15347c..0000000000 --- a/Content.Client/Nyanotrasen/Abilities/Psionics/TelegnosisPowerSystem.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Content.Shared.Abilities.Psionics; - -namespace Content.Client.Abilities.Psionics; - -public sealed class TelegnosisPowerSystem : SharedTelegnosisPowerSystem; diff --git a/Content.IntegrationTests/Tests/DeltaV/MetempsychosisTest.cs b/Content.IntegrationTests/Tests/Nyanotrasen/Metempsychosis/MetempsychosisTest.cs similarity index 62% rename from Content.IntegrationTests/Tests/DeltaV/MetempsychosisTest.cs rename to Content.IntegrationTests/Tests/Nyanotrasen/Metempsychosis/MetempsychosisTest.cs index 6b68ac3602..cd6a4b4c2b 100644 --- a/Content.IntegrationTests/Tests/DeltaV/MetempsychosisTest.cs +++ b/Content.IntegrationTests/Tests/Nyanotrasen/Metempsychosis/MetempsychosisTest.cs @@ -1,10 +1,12 @@ -using Content.Server.DeltaV.Cloning; +using Content.Server.Nyanotrasen.Cloning; using Content.Shared.Humanoid.Prototypes; +using Content.Shared.Random; using Robust.Shared.Prototypes; namespace Content.IntegrationTests.Tests.DeltaV; [TestFixture] +[TestOf(typeof(MetempsychoticMachineSystem))] public sealed class MetempsychosisTest { [Test] @@ -21,22 +23,18 @@ public sealed class MetempsychosisTest await server.WaitAssertion(() => { - prototypeManager.TryIndex(metemComponent.MetempsychoticHumanoidPool, + prototypeManager.TryIndex(metemComponent.MetempsychoticHumanoidPool, out var humanoidPool); - prototypeManager.TryIndex(metemComponent.MetempsychoticNonHumanoidPool, + prototypeManager.TryIndex(metemComponent.MetempsychoticNonHumanoidPool, out var nonHumanoidPool); - Assert.Multiple(() => - { - Assert.That(humanoidPool, Is.Not.Null, "MetempsychoticHumanoidPool is null!"); - Assert.That(nonHumanoidPool, Is.Not.Null, "MetempsychoticNonHumanoidPool is null!"); - Assert.That(humanoidPool.Weights, - Is.Not.Empty, - "MetempsychoticHumanoidPool has no valid prototypes!"); - Assert.That(nonHumanoidPool.Weights, - Is.Not.Empty, - "MetempsychoticNonHumanoidPool has no valid prototypes!"); - }); + Assert.That(humanoidPool, Is.Not.Null, "MetempsychoticHumanoidPool is null!"); + Assert.That(nonHumanoidPool, Is.Not.Null, "MetempsychoticNonHumanoidPool is null!"); + + Assert.That(humanoidPool.Weights, Is.Not.Empty, + "MetempsychoticHumanoidPool has no valid prototypes!"); + Assert.That(nonHumanoidPool.Weights, Is.Not.Empty, + "MetempsychoticNonHumanoidPool has no valid prototypes!"); foreach (var key in humanoidPool.Weights.Keys) { diff --git a/Content.Server/Cloning/CloningSystem.cs b/Content.Server/Cloning/CloningSystem.cs index ab593b607c..0eafad3586 100644 --- a/Content.Server/Cloning/CloningSystem.cs +++ b/Content.Server/Cloning/CloningSystem.cs @@ -9,8 +9,6 @@ using Content.Server.Jobs; using Content.Server.Materials; using Content.Server.Popups; using Content.Server.Power.EntitySystems; -using Content.Server.Psionics; // DeltaV -using Content.Server.Traits.Assorted; // DeltaV using Content.Shared.Atmos; using Content.Shared.CCVar; using Content.Shared.Chemistry.Components; @@ -35,10 +33,26 @@ using Robust.Shared.Containers; using Robust.Shared.Physics.Components; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using Content.Server.Traits.Assorted; //Nyano - Summary: allows the potential psionic ability to be written to the character. +using Content.Server.Psionics; //DeltaV needed for Psionic Systems +using Content.Shared.Speech; //DeltaV Start Metem Usings +using Content.Shared.Tag; +using Content.Shared.Preferences; +using Content.Shared.Emoting; +using Content.Server.Speech.Components; +using Content.Server.StationEvents.Components; +using Content.Server.Ghost.Roles.Components; +using Content.Server.Nyanotrasen.Cloning; +using Content.Shared.Humanoid.Prototypes; +using Robust.Shared.GameObjects.Components.Localization; //DeltaV End Metem Usings +using Content.Server.EntityList; +using Content.Shared.SSDIndicator; +using Content.Shared.Damage.ForceSay; +using Content.Server.Polymorph.Components; namespace Content.Server.Cloning { - public sealed partial class CloningSystem : EntitySystem // DeltaV - Set to partial, see CloningSystem.Metempsychosis.cs + public sealed class CloningSystem : EntitySystem { [Dependency] private readonly DeviceLinkSystem _signalSystem = default!; [Dependency] private readonly IPlayerManager _playerManager = null!; @@ -62,6 +76,8 @@ namespace Content.Server.Cloning [Dependency] private readonly SharedMindSystem _mindSystem = default!; [Dependency] private readonly MetaDataSystem _metaSystem = default!; [Dependency] private readonly SharedJobSystem _jobs = default!; + [Dependency] private readonly MetempsychoticMachineSystem _metem = default!; //DeltaV + [Dependency] private readonly TagSystem _tag = default!; //DeltaV public readonly Dictionary ClonesWaitingForMind = new(); public const float EasyModeCloningCost = 0.7f; @@ -142,10 +158,6 @@ namespace Content.Server.Cloning if (!Resolve(uid, ref clonePod)) return false; - // DeltaV - This method should use Entity pod instead - // But I don't want to completely mangle it so we do this here - var podEnt = new Entity(uid, clonePod); - if (HasComp(uid)) return false; @@ -232,13 +244,13 @@ namespace Content.Server.Cloning AddComp(uid); return true; } + // End Nyano-code. } // end of genetic damage checks - // DeltaV - Replaces CloneAppearance with Metem/Clone via FetchAndSpawnMob - var mob = FetchAndSpawnMob(podEnt, pref, speciesPrototype, humanoid, bodyToClone, karmaBonus); + var mob = FetchAndSpawnMob(clonePod, pref, speciesPrototype, humanoid, bodyToClone, karmaBonus); //DeltaV Replaces CloneAppearance with Metem/Clone via FetchAndSpawnMob - // Nyano - Summary: adds the potential psionic trait to the reanimated mob. + ///Nyano - Summary: adds the potential psionic trait to the reanimated mob. EnsureComp(mob); var ev = new CloningEvent(bodyToClone, mob); @@ -336,7 +348,6 @@ namespace Content.Server.Cloning var transform = Transform(uid); var indices = _transformSystem.GetGridTilePositionOrDefault((uid, transform)); var tileMix = _atmosphereSystem.GetTileMixture(transform.GridUid, null, indices, true); - if (HasComp(uid)) { _audio.PlayPvs(clonePod.ScreamSound, uid); @@ -364,6 +375,84 @@ namespace Content.Server.Cloning RemCompDeferred(uid); } + /// + /// Start Nyano Code: Handles fetching the mob and any appearance stuff... + /// + private EntityUid FetchAndSpawnMob(CloningPodComponent clonePod, HumanoidCharacterProfile pref, SpeciesPrototype speciesPrototype, HumanoidAppearanceComponent humanoid, EntityUid bodyToClone, float karmaBonus) + { + List sexes = new(); + bool switchingSpecies = false; + bool applyKarma = false; + var toSpawn = speciesPrototype.Prototype; + TryComp(bodyToClone, out var oldKarma); + + if (TryComp(clonePod.Owner, out var metem)) + { + toSpawn = _metem.GetSpawnEntity(clonePod.Owner, karmaBonus, metem, speciesPrototype, out var newSpecies, oldKarma?.Score); + applyKarma = true; + + if (newSpecies != null) + { + sexes = newSpecies.Sexes; + + if (speciesPrototype.ID != newSpecies.ID) + switchingSpecies = true; + + speciesPrototype = newSpecies; + } + } + + var mob = Spawn(toSpawn, _transformSystem.GetMapCoordinates(clonePod.Owner)); + if (TryComp(mob, out var newHumanoid)) + { + if (switchingSpecies || HasComp(bodyToClone)) + { + pref = HumanoidCharacterProfile.RandomWithSpecies(newHumanoid.Species); + if (sexes.Contains(humanoid.Sex)) + pref = pref.WithSex(humanoid.Sex); + + pref = pref.WithGender(humanoid.Gender); + pref = pref.WithAge(humanoid.Age); + + } + _humanoidSystem.LoadProfile(mob, pref); + } + + if (applyKarma) + { + var karma = EnsureComp(mob); + karma.Score++; + if (oldKarma != null) + karma.Score += oldKarma.Score; + } + + var ev = new CloningEvent(bodyToClone, mob); + RaiseLocalEvent(bodyToClone, ref ev); + + if (!ev.NameHandled) + _metaSystem.SetEntityName(mob, MetaData(bodyToClone).EntityName); + + var grammar = EnsureComp(mob); + grammar.ProperNoun = true; + grammar.Gender = humanoid.Gender; + Dirty(mob, grammar); + + EnsureComp(mob); + EnsureComp(mob); + EnsureComp(mob); + EnsureComp(mob); + EnsureComp(mob); + EnsureComp(mob); + RemComp(mob); + RemComp(mob); + RemComp(mob); + RemComp(mob); + + _tag.AddTag(mob, "DoorBumpOpener"); + + return mob; + } + //End Nyano Code public void Reset(RoundRestartCleanupEvent ev) { ClonesWaitingForMind.Clear(); diff --git a/Content.Server/DeltaV/Administration/Commands/AnnounceCustomCommand.cs b/Content.Server/DeltaV/Administration/Commands/AnnounceCustomCommand.cs deleted file mode 100644 index f0429105b1..0000000000 --- a/Content.Server/DeltaV/Administration/Commands/AnnounceCustomCommand.cs +++ /dev/null @@ -1,79 +0,0 @@ -using Content.Server.Chat.Systems; -using Content.Shared.Administration; -using Robust.Shared.Audio; -using Robust.Shared.Console; -using Robust.Shared.ContentPack; -using Robust.Shared.Prototypes; - -namespace Content.Server.Administration.Commands; - -[AdminCommand(AdminFlags.Fun)] -public sealed class AnnounceCustomCommand : IConsoleCommand -{ - [Dependency] private readonly IPrototypeManager _protoManager = default!; - [Dependency] private readonly IResourceManager _res = default!; - - public string Command => "announcecustom"; - public string Description => Loc.GetString("cmd-announcecustom-desc"); - public string Help => Loc.GetString("cmd-announcecustom-help", ("command", Command)); - - public void Execute(IConsoleShell shell, string argStr, string[] args) - { - var chat = IoCManager.Resolve().GetEntitySystem(); - - switch (args.Length) - { - case 0: - shell.WriteError(Loc.GetString("shell-need-minimum-one-argument")); - return; - case > 4: - shell.WriteError(Loc.GetString("shell-wrong-arguments-number")); - return; - } - - var message = args[0]; - var sender = "Central Command"; - var color = Color.Gold; - var sound = new SoundPathSpecifier("/Audio/Announcements/announce.ogg"); - - // Optional sender argument - if (args.Length >= 2) - sender = args[1]; - - // Optional color argument - if (args.Length >= 3) - { - try - { - color = Color.FromHex(args[2]); - } - catch - { - shell.WriteError(Loc.GetString("shell-invalid-color-hex")); - return; - } - } - - // Optional sound argument - if (args.Length >= 4) - sound = new SoundPathSpecifier(args[3]); - - chat.DispatchGlobalAnnouncement(message, sender, true, sound, color); - shell.WriteLine(Loc.GetString("shell-command-success")); - } - - public CompletionResult GetCompletion(IConsoleShell shell, string[] args) - { - return args.Length switch - { - 1 => CompletionResult.FromHint(Loc.GetString("cmd-announcecustom-arg-message")), - 2 => CompletionResult.FromHint(Loc.GetString("shell-argument-username-optional-hint")), - 3 => CompletionResult.FromHint(Loc.GetString("cmd-announcecustom-arg-color")), - 4 => CompletionResult.FromHintOptions( - CompletionHelper.AudioFilePath(args[3], _protoManager, _res), - Loc.GetString("cmd-announcecustom-arg-sound") - ), - _ => CompletionResult.Empty - }; - } -} diff --git a/Content.Server/DeltaV/Chapel/SacrificialAltarSystem.cs b/Content.Server/DeltaV/Chapel/SacrificialAltarSystem.cs index 8d28297cf6..a903d4124d 100644 --- a/Content.Server/DeltaV/Chapel/SacrificialAltarSystem.cs +++ b/Content.Server/DeltaV/Chapel/SacrificialAltarSystem.cs @@ -1,5 +1,5 @@ using Content.Server.Bible.Components; -using Content.Server.DeltaV.Cloning; +using Content.Server.Nyanotrasen.Cloning; using Content.Shared.Abilities.Psionics; using Content.Shared.Administration.Logs; using Content.Shared.Body.Components; diff --git a/Content.Server/DeltaV/Cloning/CloningSystem.Metempsychosis.cs b/Content.Server/DeltaV/Cloning/CloningSystem.Metempsychosis.cs deleted file mode 100644 index d69d4d9ef9..0000000000 --- a/Content.Server/DeltaV/Cloning/CloningSystem.Metempsychosis.cs +++ /dev/null @@ -1,172 +0,0 @@ -using Content.Server.DeltaV.Cloning; -using Content.Shared.Humanoid; -using Content.Shared.Humanoid.Prototypes; -using Content.Shared.Preferences; -using Content.Shared.Speech; -using Content.Shared.Emoting; -using Content.Shared.Damage.ForceSay; -using Content.Shared.SSDIndicator; -using Content.Server.Speech.Components; -using Content.Server.Ghost.Roles.Components; -using Content.Server.StationEvents.Components; -using Content.Server.Psionics; -using Robust.Shared.Random; -using Content.Shared.Mind.Components; -using Content.Shared.Tag; -using Content.Shared.Cloning; -using Content.Shared.Random.Helpers; -using Robust.Shared.GameObjects.Components.Localization; - -namespace Content.Server.Cloning; - -public sealed partial class CloningSystem -{ - [Dependency] private readonly TagSystem _tag = default!; - [Dependency] private readonly GrammarSystem _grammar = default!; - - /// - /// Gets the entity prototype to spawn for a clone based on karma and chance calculations. - /// - private string GetSpawnEntity(Entity ent, float karmaBonus, SpeciesPrototype oldSpecies, out SpeciesPrototype? species, int karma = 0) - { - // First time being cloned - return original species - if (karma == 0) - { - species = oldSpecies; - return oldSpecies.Prototype; - } - - var chance = ent.Comp.HumanoidBaseChance + karmaBonus; - chance -= (1 - ent.Comp.HumanoidBaseChance) * karma; - - // Perfect clone chance - if (chance > 1 && _robustRandom.Prob(chance - 1)) - { - species = oldSpecies; - return oldSpecies.Prototype; - } - - // Roll for humanoid vs non-humanoid - chance = Math.Clamp(chance, 0, 1); - if (_robustRandom.Prob(chance)) - { - if (_prototype.TryIndex(ent.Comp.MetempsychoticHumanoidPool, out var humanoidPool)) - { - var protoId = humanoidPool.Pick(); - if (_prototype.TryIndex(protoId, out var speciesPrototype)) - { - species = speciesPrototype; - return speciesPrototype.Prototype; - } - } - } - else if (_prototype.TryIndex(ent.Comp.MetempsychoticNonHumanoidPool, out var nonHumanoidPool)) - { - // For non-humanoids, return the entity prototype directly - species = null; - return nonHumanoidPool.Pick(); - } - - // Fallback to original species if prototype indexing fails - Log.Error("Failed to get valid clone type - falling back to original species"); - species = oldSpecies; - return oldSpecies.Prototype; - } - - /// - /// Handles fetching the mob and managing appearance for cloning with metempsychosis mechanics - /// - private EntityUid FetchAndSpawnMob( - Entity pod, - HumanoidCharacterProfile pref, - SpeciesPrototype speciesPrototype, - HumanoidAppearanceComponent humanoid, - EntityUid bodyToClone, - float karmaBonus) - { - List sexes = []; - var switchingSpecies = false; - var applyKarma = false; - var toSpawn = speciesPrototype.Prototype; - - // Get existing karma score or start at 0 - var karmaScore = 0; - if (TryComp(bodyToClone, out var oldKarma)) - { - karmaScore = oldKarma.Score; - } - - if (TryComp(pod.Owner, out var metem)) - { - var metemEntity = new Entity(pod.Owner, metem); - toSpawn = GetSpawnEntity(metemEntity, karmaBonus, speciesPrototype, out var newSpecies, karmaScore); - applyKarma = true; - - if (newSpecies != null) - { - sexes = newSpecies.Sexes; - speciesPrototype = newSpecies; - - if (speciesPrototype.ID != newSpecies.ID) - switchingSpecies = true; - } - } - - var mob = Spawn(toSpawn, _transformSystem.GetMapCoordinates(pod.Owner)); - - // Only try to handle humanoid appearance if we have a humanoid component - if (TryComp(mob, out var newHumanoid)) - { - if (switchingSpecies || HasComp(bodyToClone)) - { - pref = HumanoidCharacterProfile.RandomWithSpecies(newHumanoid.Species); - if (sexes.Contains(humanoid.Sex)) - pref = pref.WithSex(humanoid.Sex); - - pref = pref.WithGender(humanoid.Gender); - pref = pref.WithAge(humanoid.Age); - } - - _humanoidSystem.LoadProfile(mob, pref); - } - - if (applyKarma) - { - var karma = EnsureComp(mob); - karma.Score = karmaScore + 1; // Increment karma score - } - - var ev = new CloningEvent(bodyToClone, mob); - RaiseLocalEvent(bodyToClone, ref ev); - - if (!ev.NameHandled) - _metaSystem.SetEntityName(mob, MetaData(bodyToClone).EntityName); - - var grammar = EnsureComp(mob); - var grammarEnt = new Entity(mob, grammar); - _grammar.SetProperNoun(grammarEnt, true); - _grammar.SetGender(grammarEnt, humanoid.Gender); - Dirty(mob, grammar); - - SetupBasicComponents(mob); - - return mob; - } - - // I hate this - private void SetupBasicComponents(EntityUid mob) - { - EnsureComp(mob); - EnsureComp(mob); - EnsureComp(mob); - EnsureComp(mob); - EnsureComp(mob); - EnsureComp(mob); - RemComp(mob); - RemComp(mob); - RemComp(mob); - RemComp(mob); - - _tag.AddTag(mob, "DoorBumpOpener"); - } -} diff --git a/Content.Server/DeltaV/Cloning/MetempsychosisKarmaComponent.cs b/Content.Server/DeltaV/Cloning/MetempsychosisKarmaComponent.cs deleted file mode 100644 index a9e7ff8244..0000000000 --- a/Content.Server/DeltaV/Cloning/MetempsychosisKarmaComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Content.Server.DeltaV.Cloning; - -/// -/// This tracks how many times you have already been cloned and lowers your chance of getting a humanoid each time. -/// -[RegisterComponent] -public sealed partial class MetempsychosisKarmaComponent : Component -{ - [DataField] - public int Score; -} diff --git a/Content.Server/DeltaV/Cloning/MetempsychoticMachineComponent.cs b/Content.Server/DeltaV/Cloning/MetempsychoticMachineComponent.cs deleted file mode 100644 index d913f2d209..0000000000 --- a/Content.Server/DeltaV/Cloning/MetempsychoticMachineComponent.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Content.Shared.Random; -using Robust.Shared.Prototypes; - -namespace Content.Server.DeltaV.Cloning; - -[RegisterComponent] -public sealed partial class MetempsychoticMachineComponent : Component -{ - /// - /// Base probability of remaining humanoid during cloning. Higher karma reduces this chance. - /// - [DataField] - public float HumanoidBaseChance = 0.75f; - - /// - /// Species prototypes pool to use for humanoids. - /// - [DataField] - public ProtoId MetempsychoticHumanoidPool = "MetempsychoticHumanoidPool"; - - /// - /// Entitiy prototypes pool to use for non-humanoids. - /// - [DataField] - public ProtoId MetempsychoticNonHumanoidPool = "MetempsychoticNonhumanoidPool"; -} - diff --git a/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs index d45fe707ab..ff050ce2cd 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/SpillBehavior.cs @@ -1,60 +1,42 @@ -using Content.Server.Fluids.EntitySystems; -using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; +using Content.Server.Fluids.EntitySystems; using Content.Shared.Fluids.Components; using JetBrains.Annotations; -namespace Content.Server.Destructible.Thresholds.Behaviors; - -[UsedImplicitly] -[DataDefinition] -public sealed partial class SpillBehavior : IThresholdBehavior +namespace Content.Server.Destructible.Thresholds.Behaviors { - /// - /// Optional fallback solution name if SpillableComponent is not present. - /// - [DataField] - public string? Solution; - - /// - /// When triggered, spills the entity's solution onto the ground. - /// Will first try to use the solution from a SpillableComponent if present, - /// otherwise falls back to the solution specified in the behavior's data fields. - /// The solution is properly drained/split before spilling to prevent double-spilling with other behaviors. - /// - /// Entity whose solution will be spilled - /// System calling this behavior - /// Optional entity that caused this behavior to trigger - public void Execute(EntityUid owner, DestructibleSystem system, EntityUid? cause = null) + [UsedImplicitly] + [DataDefinition] + public sealed partial class SpillBehavior : IThresholdBehavior { - var solutionContainerSystem = system.EntityManager.System(); - var spillableSystem = system.EntityManager.System(); - var coordinates = system.EntityManager.GetComponent(owner).Coordinates; + [DataField] + public string? Solution; - Solution targetSolution; - - // First try to get solution from SpillableComponent - if (system.EntityManager.TryGetComponent(owner, out SpillableComponent? spillableComponent) && - solutionContainerSystem.TryGetSolution(owner, spillableComponent.SolutionName, out var solution, out var compSolution)) + /// + /// If there is a SpillableComponent on EntityUidowner use it to create a puddle/smear. + /// Or whatever solution is specified in the behavior itself. + /// If none are available do nothing. + /// + /// Entity on which behavior is executed + /// system calling the behavior + /// + public void Execute(EntityUid owner, DestructibleSystem system, EntityUid? cause = null) { - // If entity is drainable, drain the solution. Otherwise just split it. - // Both methods ensure the solution is properly removed. - targetSolution = system.EntityManager.HasComponent(owner) - ? solutionContainerSystem.Drain((owner, system.EntityManager.GetComponent(owner)), solution.Value, compSolution.Volume) - : compSolution.SplitSolution(compSolution.Volume); - } - // Fallback to solution specified in behavior data - else if (Solution != null && - solutionContainerSystem.TryGetSolution(owner, Solution, out var solutionEnt, out var behaviorSolution)) - { - targetSolution = system.EntityManager.HasComponent(owner) - ? solutionContainerSystem.Drain((owner, system.EntityManager.GetComponent(owner)), solutionEnt.Value, behaviorSolution.Volume) - : behaviorSolution.SplitSolution(behaviorSolution.Volume); - } - else - return; + var solutionContainerSystem = system.EntityManager.System(); + var spillableSystem = system.EntityManager.System(); - // Spill the solution that was drained/split - spillableSystem.TrySplashSpillAt(owner, coordinates, targetSolution, out _, false, cause); + var coordinates = system.EntityManager.GetComponent(owner).Coordinates; + + if (system.EntityManager.TryGetComponent(owner, out SpillableComponent? spillableComponent) && + solutionContainerSystem.TryGetSolution(owner, spillableComponent.SolutionName, out _, out var compSolution)) + { + spillableSystem.TrySplashSpillAt(owner, coordinates, compSolution, out _, false, user: cause); + } + else if (Solution != null && + solutionContainerSystem.TryGetSolution(owner, Solution, out _, out var behaviorSolution)) + { + spillableSystem.TrySplashSpillAt(owner, coordinates, behaviorSolution, out _, user: cause); + } + } } } diff --git a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs index 679656b54f..fec65430c1 100644 --- a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs @@ -3,7 +3,6 @@ using Content.Server.Body.Systems; using Content.Server.Kitchen.Components; using Content.Server.Popups; using Content.Shared.Chat; -using Content.Shared.Body.Part; // DeltaV using Content.Shared.Damage; using Content.Shared.Database; using Content.Shared.DoAfter; @@ -161,12 +160,9 @@ namespace Content.Server.Kitchen.EntitySystems _transform.SetCoordinates(victimUid, Transform(uid).Coordinates); // THE WHAT? // TODO: Need to be able to leave them on the spike to do DoT, see ss13. - var gibs = _bodySystem.GibBody(victimUid, gibOrgans: true); // DeltaV: spawn organs + var gibs = _bodySystem.GibBody(victimUid); foreach (var gib in gibs) { - // Begin DeltaV changes: Only delete limbs instead of organs - if (HasComp(gib)) - QueueDel(gib); - // End DeltaV changes + QueueDel(gib); } _audio.PlayEntity(component.SpikeSound, Filter.Pvs(uid), uid, true); diff --git a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/TelegnosisPowerSystem.cs b/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/TelegnosisPowerSystem.cs index a1831fef34..f7ae04b61e 100644 --- a/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/TelegnosisPowerSystem.cs +++ b/Content.Server/Nyanotrasen/Abilities/Psionics/Abilities/TelegnosisPowerSystem.cs @@ -9,7 +9,7 @@ using Content.Shared.Actions.Events; namespace Content.Server.Abilities.Psionics { - public sealed class TelegnosisPowerSystem : SharedTelegnosisPowerSystem + public sealed class TelegnosisPowerSystem : EntitySystem { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly StatusEffectsSystem _statusEffects = default!; diff --git a/Content.Server/Nyanotrasen/Cloning/MetempsychosisKarmaComponent.cs b/Content.Server/Nyanotrasen/Cloning/MetempsychosisKarmaComponent.cs new file mode 100644 index 0000000000..246495cee0 --- /dev/null +++ b/Content.Server/Nyanotrasen/Cloning/MetempsychosisKarmaComponent.cs @@ -0,0 +1,12 @@ +namespace Content.Server.Nyanotrasen.Cloning +{ + /// + /// This tracks how many times you have already been cloned and lowers your chance of getting a humanoid each time. + /// + [RegisterComponent] + public sealed partial class MetempsychosisKarmaComponent : Component + { + [DataField("score")] + public int Score = 0; + } +} diff --git a/Content.Server/Nyanotrasen/Cloning/MetempsychoticMachineComponent.cs b/Content.Server/Nyanotrasen/Cloning/MetempsychoticMachineComponent.cs new file mode 100644 index 0000000000..0adcc9b5b2 --- /dev/null +++ b/Content.Server/Nyanotrasen/Cloning/MetempsychoticMachineComponent.cs @@ -0,0 +1,22 @@ +using Content.Shared.Random; + +namespace Content.Server.Nyanotrasen.Cloning +{ + [RegisterComponent] + public sealed partial class MetempsychoticMachineComponent : Component + { + /// + /// Chance you will spawn as a humanoid instead of a non humanoid. + /// + [DataField("humanoidBaseChance")] + public float HumanoidBaseChance = 0.75f; + + [ValidatePrototypeId] + [DataField("metempsychoticHumanoidPool")] + public string MetempsychoticHumanoidPool = "MetempsychoticHumanoidPool"; + + [ValidatePrototypeId] + [DataField("metempsychoticNonHumanoidPool")] + public string MetempsychoticNonHumanoidPool = "MetempsychoticNonhumanoidPool"; + } +} diff --git a/Content.Server/Nyanotrasen/Cloning/MetempsychoticMachineSystem.cs b/Content.Server/Nyanotrasen/Cloning/MetempsychoticMachineSystem.cs new file mode 100644 index 0000000000..62dc1b078e --- /dev/null +++ b/Content.Server/Nyanotrasen/Cloning/MetempsychoticMachineSystem.cs @@ -0,0 +1,47 @@ +using Content.Shared.Humanoid.Prototypes; +using Content.Shared.Random; +using Content.Shared.Random.Helpers; +using Robust.Shared.Random; +using Robust.Shared.Prototypes; + +namespace Content.Server.Nyanotrasen.Cloning +{ + public sealed class MetempsychoticMachineSystem : EntitySystem + { + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + + private ISawmill _sawmill = default!; + + public string GetSpawnEntity(EntityUid uid, float karmaBonus, MetempsychoticMachineComponent component, SpeciesPrototype oldSpecies, out SpeciesPrototype? species, int? karma = null) + { + var chance = component.HumanoidBaseChance + karmaBonus; + + if (karma != null) + chance -= ((1 - component.HumanoidBaseChance) * (float) karma); + + if (chance > 1 && _random.Prob(chance - 1)) + { + species = oldSpecies; + return oldSpecies.Prototype; + } + else + chance = 1; + + chance = Math.Clamp(chance, 0, 1); + if (_random.Prob(chance) && + _prototypeManager.TryIndex(component.MetempsychoticHumanoidPool, out var humanoidPool) && + _prototypeManager.TryIndex(humanoidPool.Pick(), out var speciesPrototype)) + { + species = speciesPrototype; + return speciesPrototype.Prototype; + } + else + { + species = null; + _sawmill.Error("Could not index species for metempsychotic machine..."); + return "MobHuman"; + } + } + } +} diff --git a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs index 4f69a708e5..59e3054c14 100644 --- a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs @@ -33,6 +33,14 @@ namespace Content.Server.StationEvents { // A little starting variance so schedulers dont all proc at once. component.TimeUntilNextEvent = RobustRandom.NextFloat(component.MinimumTimeUntilFirstEvent, component.MinimumTimeUntilFirstEvent + 120); + + // DeltaV - end init NextEventComp + NextEventComponent? nextEventComponent = null; + if (Resolve(uid, ref nextEventComponent, false) + && _event.TryGenerateRandomEvent(component.ScheduledGameRules, out string? firstEvent, TimeSpan.FromSeconds(component.TimeUntilNextEvent)) + && firstEvent != null) + _next.UpdateNextEvent(nextEventComponent, firstEvent, TimeSpan.FromSeconds(component.TimeUntilNextEvent)); + // DeltaV - end init NextEventComp } protected override void Ended(EntityUid uid, BasicStationEventSchedulerComponent component, GameRuleComponent gameRule, @@ -60,19 +68,21 @@ namespace Content.Server.StationEvents eventScheduler.TimeUntilNextEvent -= frameTime; continue; } - NextEventComponent? nextEventComponent = null; // DeltaV events using NextEventComponent + NextEventComponent? nextEventComponent = null; + if (Resolve(uid, ref nextEventComponent, false)) // If there is a nextEventComponent use the stashed event instead of running it directly. { - if (!_event.TryGenerateRandomEvent(eventScheduler.ScheduledGameRules, out string? generatedEvent) || generatedEvent == null) + ResetTimer(eventScheduler); + TimeSpan nextEventTime = _timing.CurTime + TimeSpan.FromSeconds(eventScheduler.TimeUntilNextEvent); + if (!_event.TryGenerateRandomEvent(eventScheduler.ScheduledGameRules, out string? generatedEvent, nextEventTime) || generatedEvent == null) continue; // Cycle the stashed event with the new generated event and time. - string storedEvent= _next.UpdateNextEvent(nextEventComponent, generatedEvent, (float)_timing.CurTime.TotalSeconds + eventScheduler.TimeUntilNextEvent); + string storedEvent= _next.UpdateNextEvent(nextEventComponent, generatedEvent, nextEventTime); if (storedEvent == null || storedEvent == string.Empty) //If there was no stored event don't try to run it. continue; GameTicker.AddGameRule(storedEvent); - ResetTimer(eventScheduler); continue; } // DeltaV end events using NextEventComponent diff --git a/Content.Server/StationEvents/EventManagerSystem.cs b/Content.Server/StationEvents/EventManagerSystem.cs index fbe069509d..513530ee13 100644 --- a/Content.Server/StationEvents/EventManagerSystem.cs +++ b/Content.Server/StationEvents/EventManagerSystem.cs @@ -58,16 +58,23 @@ public sealed class EventManagerSystem : EntitySystem /// public void RunRandomEvent(EntityTableSelector limitedEventsTable) { - if(TryGenerateRandomEvent(limitedEventsTable, out string? randomLimitedEvent) && randomLimitedEvent != null) // DeltaV seperated into own method + if(TryGenerateRandomEvent(limitedEventsTable, out string? randomLimitedEvent) && randomLimitedEvent != null) // DeltaV - seperated into own method GameTicker.AddGameRule(randomLimitedEvent); } - // DeltaV seperate event generation method + // DeltaV - overloaded for backwards compatiblity public bool TryGenerateRandomEvent(EntityTableSelector limitedEventsTable, out string? randomLimitedEvent) + { + return TryGenerateRandomEvent(limitedEventsTable, out randomLimitedEvent, null); + } + // DeltaV - end overloaded for backwards compatiblity + + // DeltaV - seperate event generation method + public bool TryGenerateRandomEvent(EntityTableSelector limitedEventsTable, out string? randomLimitedEvent, TimeSpan? eventRunTime) // Event time checks compared to eventRunTime + // unless its null in which case current time is used { randomLimitedEvent = null; - // Snippet from upstreams RunRandomEvent - if (!TryBuildLimitedEvents(limitedEventsTable, out var limitedEvents)) + if (!TryBuildLimitedEvents(limitedEventsTable, out var limitedEvents, eventRunTime)) { Log.Warning("Provided event table could not build dict!"); return false; @@ -86,21 +93,27 @@ public sealed class EventManagerSystem : EntitySystem Log.Warning("A requested event is not available!"); return false; } - // End snippet from upstreams RunRandomEvent return true; } - // DeltaV end seperate event generation method + // DeltaV - end seperate event generation method + + // DeltaV - overloaded for backwards compatiblity + public bool TryBuildLimitedEvents(EntityTableSelector limitedEventsTable, out Dictionary limitedEvents) + { + return TryBuildLimitedEvents(limitedEventsTable, out limitedEvents, null); + } + // DeltaV - end overloaded for backwards compatiblity /// /// Returns true if the provided EntityTableSelector gives at least one prototype with a StationEvent comp. /// - public bool TryBuildLimitedEvents(EntityTableSelector limitedEventsTable, out Dictionary limitedEvents) + public bool TryBuildLimitedEvents(EntityTableSelector limitedEventsTable, out Dictionary limitedEvents, TimeSpan? eventRunTime) // DeltaV - Add a time overide { limitedEvents = new Dictionary(); - var availableEvents = AvailableEvents(); // handles the player counts and individual event restrictions - + var availableEvents = AvailableEvents(eventRunTime); // handles the player counts and individual event restrictions + // DeltaV - Overide time for stashing events if (availableEvents.Count == 0) { Log.Warning("No events were available to run!"); @@ -186,6 +199,16 @@ public sealed class EventManagerSystem : EntitySystem return null; } + // DeltaV - overloaded for backwards compatiblity + public Dictionary AvailableEvents( + bool ignoreEarliestStart = false, + int? playerCountOverride = 100, + TimeSpan? currentTimeOverride = null) + { + return AvailableEvents(null, ignoreEarliestStart, playerCountOverride, currentTimeOverride); + } + // DeltaV - end overloaded for backwards compatiblity + /// /// Gets the events that have met their player count, time-until start, etc. /// @@ -193,16 +216,21 @@ public sealed class EventManagerSystem : EntitySystem /// Override for round time, if using this to simulate events rather than in an actual round. /// public Dictionary AvailableEvents( - bool ignoreEarliestStart = true, + TimeSpan? eventRunTime, + bool ignoreEarliestStart = false, int? playerCountOverride = 100, - TimeSpan? currentTimeOverride = null) + TimeSpan? currentTimeOverride = null + ) { var playerCount = playerCountOverride ?? _playerManager.PlayerCount; // playerCount does a lock so we'll just keep the variable here - var currentTime = currentTimeOverride ?? (!ignoreEarliestStart - ? GameTicker.RoundDuration() - : TimeSpan.Zero); + var currentTime = currentTimeOverride ?? ( + (!ignoreEarliestStart + ? eventRunTime // DeltaV - Use eventRunTime instead of RoundDuration if provided + ?? GameTicker.RoundDuration() + : TimeSpan.Zero) + ); var result = new Dictionary(); diff --git a/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs b/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs index a5dbe102ca..8a119bd14d 100644 --- a/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs @@ -1,16 +1,20 @@ using Content.Server.GameTicking; using Content.Server.GameTicking.Rules; using Content.Server.StationEvents.Components; +using Content.Shared.DeltaV.StationEvents; using Content.Shared.GameTicking.Components; using Robust.Shared.Random; +using Robust.Shared.Timing; namespace Content.Server.StationEvents; public sealed class RampingStationEventSchedulerSystem : GameRuleSystem { + [Dependency] private readonly IGameTiming _timing = default!; // DeltaV [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly EventManagerSystem _event = default!; [Dependency] private readonly GameTicker _gameTicker = default!; + [Dependency] private readonly NextEventSystem _next = default!; // DeltaV /// /// Returns the ChaosModifier which increases as round time increases to a point. @@ -36,6 +40,14 @@ public sealed class RampingStationEventSchedulerSystem : GameRuleSystem [DataField] - public float NextEventTime; + public TimeSpan NextEventTime; } diff --git a/Content.Shared/DeltaV/StationEvents/NextEventSystem.cs b/Content.Shared/DeltaV/StationEvents/NextEventSystem.cs index 5fdad15457..bd7c8d17e6 100644 --- a/Content.Shared/DeltaV/StationEvents/NextEventSystem.cs +++ b/Content.Shared/DeltaV/StationEvents/NextEventSystem.cs @@ -7,7 +7,7 @@ public sealed partial class NextEventSystem : EntitySystem /// /// Updates the NextEventComponent with the provided id and time and returns the previously stored id. /// - public EntProtoId UpdateNextEvent(NextEventComponent component, EntProtoId newEventId, float newEventTime) + public EntProtoId UpdateNextEvent(NextEventComponent component, EntProtoId newEventId, TimeSpan newEventTime) { EntProtoId oldEventId = component.NextEventId; // Store components current NextEventId for return component.NextEventId = newEventId; diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/SharedTelegnosisPowerSystem.cs b/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/SharedTelegnosisPowerSystem.cs deleted file mode 100644 index 5fec9cc931..0000000000 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/SharedTelegnosisPowerSystem.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Content.Shared.Interaction.Events; - -namespace Content.Shared.Abilities.Psionics; - -public abstract class SharedTelegnosisPowerSystem : EntitySystem -{ - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnInteractionAttempt); - } - - private void OnInteractionAttempt(Entity ent, ref InteractionAttemptEvent args) - { - // no astrally stealing someones shoes - args.Cancelled = true; - } -} diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosisPowerComponent.cs b/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosisPowerComponent.cs index d794f2e00c..51958822a4 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosisPowerComponent.cs +++ b/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosisPowerComponent.cs @@ -5,7 +5,7 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototy namespace Content.Shared.Abilities.Psionics { - [RegisterComponent, Access(typeof(SharedTelegnosisPowerSystem))] + [RegisterComponent] public sealed partial class TelegnosisPowerComponent : Component { [DataField("prototype")] @@ -20,4 +20,4 @@ namespace Content.Shared.Abilities.Psionics [DataField("telegnosisActionEntity")] public EntityUid? TelegnosisActionEntity; } -} +} \ No newline at end of file diff --git a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs b/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs index 8de2b046d8..9d627cb42d 100644 --- a/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs +++ b/Content.Shared/Nyanotrasen/Abilities/Psionics/Abilities/Telegnosis/TelegnosticProjectionComponent.cs @@ -1,4 +1,6 @@ -namespace Content.Shared.Abilities.Psionics; - -[RegisterComponent, Access(typeof(SharedTelegnosisPowerSystem))] -public sealed partial class TelegnosticProjectionComponent : Component; +namespace Content.Shared.Abilities.Psionics +{ + [RegisterComponent] + public sealed partial class TelegnosticProjectionComponent : Component + {} +} \ No newline at end of file diff --git a/Resources/Changelog/DeltaVChangelog.yml b/Resources/Changelog/DeltaVChangelog.yml index 3c9d32e561..96d417e75f 100644 --- a/Resources/Changelog/DeltaVChangelog.yml +++ b/Resources/Changelog/DeltaVChangelog.yml @@ -1,4 +1,86 @@ Entries: +- author: Ygg01 + changes: + - message: Digging dirt. + type: Add + id: 158 + time: '2023-12-06T15:58:00.0000000+00:00' +- author: Velcroboy + changes: + - message: Buffed Food Cart storage. Get out there and slang some burgers, chefs! + type: Tweak + id: 159 + time: '2023-12-06T15:58:43.0000000+00:00' +- author: ps3moira + changes: + - message: Added mouse operative reinforcements, which can be bought from the Syndicate + uplink + type: Add + id: 160 + time: '2023-12-06T16:03:07.0000000+00:00' +- author: evilexecutive + changes: + - message: Harpies now have a visual indication when they're playing a Midi. + type: Add + - message: Harpies have been re-balanced so that they now actually have a numerical + positive. + type: Tweak + id: 161 + time: '2023-12-06T20:10:49.0000000+00:00' +- author: DebugOk + changes: + - message: Due to abuse, prisoners now require whitelist to play. + type: Tweak + id: 162 + time: '2023-12-07T13:22:03.0000000+00:00' +- author: ps3moira + changes: + - message: Removed bionic syrinx implanter from surplus crate. + type: Remove + id: 163 + time: '2023-12-11T23:11:41.0000000+00:00' +- author: ps3moira + changes: + - message: Removed Carpotoxin from Sashimi, now they are sushi-grade! + type: Remove + id: 164 + time: '2023-12-13T20:12:46.0000000+00:00' +- author: Adrian16199 + changes: + - message: Crew has learned how to make a straw hat out of wheat bushels! + type: Add + id: 165 + time: '2023-12-13T20:13:45.0000000+00:00' +- author: IamVelcroboy + changes: + - message: Added Yule! Happy Holidays! + type: Add + id: 166 + time: '2023-12-13T20:21:34.0000000+00:00' +- author: ps3moira + changes: + - message: Added Fish n' Chips. Thank the British! + type: Add + id: 167 + time: '2023-12-13T20:32:51.0000000+00:00' +- author: Adrian16199 + changes: + - message: Felinids now meow out their words. They can also sigh now. + type: Tweak + id: 168 + time: '2023-12-13T21:28:39.0000000+00:00' +- author: VMSolidus + changes: + - message: Harpies no longer choke on completely breathable air + type: Fix + id: 169 + time: '2023-12-14T05:13:43.0000000+00:00' +- author: UnicornOnLSD + changes: + - message: Changed bags of holding cost to be more consistent. + type: Tweak + id: 170 + time: '2023-12-14T09:17:35.0000000+00:00' - author: Adrian16199 changes: - message: Fixed non-wizden species not having markings. @@ -3632,100 +3714,3 @@ id: 657 time: '2024-11-08T13:38:47.0000000+00:00' url: https://github.com/DeltaV-Station/Delta-v/pull/2148 -- author: Aikakakah - changes: - - message: Added a black turtleneck! - type: Add - id: 658 - time: '2024-11-08T20:50:40.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/1905 -- author: deltanedas - changes: - - message: Butchering people now drops organs. - type: Tweak - id: 659 - time: '2024-11-09T04:40:16.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2154 -- author: MilonPL - changes: - - message: The metempsychosis will always use your player character on the first - cloning attempt. - type: Tweak - - message: Fixed metempsychosis never selecting non-humanoid characters. - type: Fix - id: 660 - time: '2024-11-09T10:47:17.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2156 -- author: MilonPL - changes: - - message: Fixed beaker solutions duplicating whenever it's thrown. - type: Fix - id: 661 - time: '2024-11-09T12:46:34.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2157 -- author: deltanedas - changes: - - message: The Synthesis Specialist's vendor can now be restocked. - type: Tweak - id: 662 - time: '2024-11-09T13:16:44.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2143 -- author: deltanedas - changes: - - message: Fixed telegnostic projections being able to interact with things. - type: Tweak - id: 663 - time: '2024-11-09T19:27:59.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2117 -- author: Unkn0wnGh0st333 - changes: - - message: Synthesis Specialist ghost rules have been slightly adjusted. - type: Tweak - id: 664 - time: '2024-11-09T19:44:28.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2152 -- author: Colin-Tel - changes: - - message: Removed the "Raise Glimmer" objective for traitors. - type: Remove - id: 665 - time: '2024-11-10T20:18:53.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2107 -- author: Colin-Tel - changes: - - message: Adjusted antagonist rule C3 and the line about bribery in C1. - type: Tweak - id: 666 - time: '2024-11-10T20:20:26.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2164 -- author: Stop-Signs - changes: - - message: Removed the T3 Lockout on epi techs - type: Remove - id: 667 - time: '2024-11-11T02:57:13.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2144 -- author: Radezolid - changes: - - message: The syringe gun is now a researcheable technology in the T2 civilian - category. Get it from the medical techfab once it's researched. - type: Tweak - id: 668 - time: '2024-11-11T15:41:44.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2169 -- author: Tomce795 - changes: - - message: Added a new stamp for Prosecutor and added it to their starting loadout. - Also added the Space Law book to the starting loadout for both Prosec and Clerk. - type: Add - id: 669 - time: '2024-11-12T04:15:14.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2158 -- author: Unkn0wnGh0st333 - changes: - - message: Whoops someone forgot to give Clerk and Prosecutor their company-mandated - mindshields... that's fixed now. - type: Tweak - id: 670 - time: '2024-11-12T06:21:28.0000000+00:00' - url: https://github.com/DeltaV-Station/Delta-v/pull/2175 diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index da92036192..cf6e514070 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 12rabbits, 13spacemen, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 2digitman, 3nderall, 4310v343k, 4dplanner, 612git, 778b, Ablankmann, abregado, Absolute-Potato, Acruid, actioninja, actually-reb, ada-please, adamsong, Adeinitas, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, Agoichi, Ahion, aiden, Aikakakah, aitorlogedo, AJCM-git, AjexRose, Alekshhh, alexkar598, AlexMorgan3817, alexumandxgabriel08x, Alithsko, ALMv1, Alpha-Two, AlphaQwerty, Altoids1, amylizzle, ancientpower, Andre19926, AndrewEyeke, AndreyCamper, angelofallars, Anzarot121, Appiah, ar4ill, ArchPigeon, ArchRBX, areitpog, Arendian, arimah, Arkanic, ArkiveDev, armoks, Arteben, ArthurMousatov, ArtisticRoomba, artur, AruMoon, ArZarLordOfMango, as334, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, august-sun, AutoOtter, Avalon-Proto, avghdev, Awlod, azzy, AzzyIsNotHere, BackeTako, BananaFlambe, Baptr0b0t, BasedPugilist, BasedUser, Batuh1n, beck-thompson, BellwetherLogic, benev0, benjamin-burges, BGare, bhespiritu, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, BlitzTheSquishy, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, BombasterDS, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, Bribrooo, Bright0, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, bvelliquette, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, capnsockless, CaptainSqrBeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, Catofquestionableethics, CatTheSystem, Centronias, chairbender, Charlese2, charlie, ChaseFlorom, chavonadelal, Cheackraze, cheesePizza2, cheeseplated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbygummibear, Ciac32, civilCornball, Clement-O, clyf, Clyybber, CMDR-Piboy314, CodedCrow, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, CookieMasterT, coolboy911, coolmankid12345, Coolsurf6, corentt, CormosLemming, crazybrain23, creadth, CrigCrag, croilbird, Crotalus, CrudeWax, CrzyPotato, cutemoongod, Cyberboss, d34d10cc, dabigoose, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, DangerRevolution, daniel-cr, DanSAussieITS, Daracke, DarkenedSynergy, Darkenson, DawBla, Daxxi3, dch-GH, de0rix, Deahaka, dean, DEATHB4DEFEAT, DeathCamel58, Deatherd, deathride58, DebugOk, Decappi, Decortex, Deeeeja, deepdarkdepths, DefinitelyNotFurryXD, degradka, Delete69, deltanedas, DeltaV-Bot, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, dexlerxd, dffdff2423, dge21, DieselMohawk, digitalic, Dimastra, DinoWattz, DisposableCrewmember42, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DoctorBeard, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, dootythefrooty, Dorragon, Doru991, DoubleRiceEddiedd, DoutorWhite, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, Dynexust, Easypoller, eclips_e, eden077, EEASAS, Efruit, efzapa, ElectroSR, elsie, elthundercloud, Elysium206, Emisse, emmafornash, EmoGarbage404, Endecc, eoineoineoin, eris, erohrs2, ERORR404V1, Errant-4, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, FacePluslll, Fahasor, FairlySadPanda, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, FillerVK, FinnishPaladin, FirinMaLazors, Fishfish458, FL-OZ, Flareguy, flashgnash, FluffiestFloof, FluffMe, FluidRock, flyingkarii, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, Fouin, foxhorn, freeman2651, freeze2222, Froffy025, Fromoriss, froozigiusz, FrostMando, FryOfDestiny, FungiFellow, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gaxeer, gbasood, Geekyhobo, genderGeometries, GeneralGaws, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, gituhabu, GlassEclipse, GNF54, godisdeadLOL, goet, Goldminermac, Golinth, GoodWheatley, Gorox221, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, greggthefather, GreyMario, GTRsound, Guess-My-Name, gusxyz, Gyrandola, h3half, Haltell, Hanzdegloker, HappyRoach, Hardly3D, harikattar, he1acdvv, Hebi, Henry, HerCoyote23, HighTechPuddle, hitomishirichan, hiucko, Hmeister-fake, Hmeister-real, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, Hreno, htmlsystem, hubismal, Hugal31, Huxellberger, Hyenh, hyphenationc, i-justuser-i, iacore, IamVelcroboy, ian, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imrenq, imweax, indeano, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, jacksonzck, Jackw2As, jacob, jamessimo, janekvap, Jark255, Jaskanbe, JasperJRoth, JerryImMouse, jerryimmouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jmcb, JoeHammad1844, JohnGinnane, johnku1, Jophire, joshepvodka, Jrpl, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, KaiShibaa, kalane15, kalanosh, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, Kimpes, KingFroozy, kira-er, Kirillcas, Kirus59, Kistras, Kit0vras, KittenColony, klaypexx, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kosticia, koteq, KrasnoshchekovPavel, Krunklehorn, Kupie, Kurzaen, kxvvv, kyupolaris, kzhanik, lajolico, Lamrr, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leander-0, leonardo-dabepis, leonsfriedrich, lettern, LetterN, Level10Cybermancer, LEVELcat, lever1209, Lgibb18, lgruthes, LightVillet, liltenhead, LinkUyx, LittleBuilderJane, LittleNyanCat, lizelive, lleftTheDragon, localcc, lokachop, Lomcastar, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luizwritescode, Lukasz825700516, luminight, lunarcomets, luringens, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M3739, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, MagnusCrowe, malchanceux, MaloTV, manelnavola, ManelNavola, Mangohydra, marboww, Markek1, Matz05, max, MaxNox7, maylokana, MehimoNemo, MeltedPixel, MemeProof, memoblob, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, MilenVolf, MilonPL, Minemoder5000, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterMecky, Mith-randalf, MjrLandWhale, mkanke-real, MLGTASTICa, mnemotechnician, moderatelyaware, modern-nm, mokiros, Moneyl, Monotheonist, Moomoobeef, moony, Morb0, mr-bo-jangles, Mr0maks, MrFippik, mrrobdemo, muburu, MureixloI, musicmanvr, MWKane, Myakot, Myctai, N3X15, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neutrino-laser, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, NIXC, NkoKirkto, nmajask, noctyrnal, noelkathegod, nok-ko, NonchalantNoob, NoobyLegion, Nopey, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, NuclearWinter, nukashimika, nuke-haus, NULL882, nullarmo, NullWanderer, nyeogmi, Nylux, Nyranu, och-och, ocotheomega, OctoRocket, OldDanceJacket, OnyxTheBrave, OrangeMoronage9622, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, paigemaeforrest, pali6, Pangogie, panzer-iv1, paolordls, partyaddict, patrikturi, PaulRitter, peccneck, Peptide90, peptron1, PeterFuto, PetMudstone, pewter-wiz, Pgriha, Phantom-Lily, PHCodes, pheenty, Phill101, phunnyguy, PilgrimViis, Pill-U, Pireax, pissdemon, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, pofitlo, pointer-to-null, pok27, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PPooch, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuceTint, PuroSlavKing, PursuitInAshes, Putnam3145, qrtDaniil, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, RemberBM, RemieRichards, RemTim, Remuchi, rene-descartes2021, Renlou, retequizzle, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, RobbyTheFish, Rockdtben, Rohesie, rok-povsic, rolfero, RomanNovo, rosieposieeee, Roudenn, router, RumiTiger, S1rFl0, S1ss3l, Saakra, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, Samsterious, SaphireLattice, SapphicOverload, sarahon, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, Segonist, sephtasm, Serkket, sewerpig, sh18rw, ShadeAware, ShadowCommander, Shadowtheprotogen546, shadowwailker, shaeone, shampunj, shariathotpatrol, ShatteredSwords, SignalWalker, siigiil, SimpleStation14, Simyon264, sirdragooon, Sirionaut, Sk1tch, SkaldetSkaeg, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Slyfox333, snebl, sniperchance, Snowni, snowsignal, solaris7518, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, southbridge-fur, Soydium, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, spartak, SpartanKadence, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, Squishy77, SsalamethVersaach, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, Stealthbomber16, stellar-novas, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, superjj18, Supernorn, SweptWasTaken, Sybil, SYNCHRONIC, Szunti, TadJohnson00, Tainakov, takemysoult, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TekuNut, telyonok, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, TGRCdev, tgrkzus, ThataKat, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, theashtronaut, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, TheIntoxicatedCat, thekilk, themias, theomund, TheOneWhoIsManyFrame, theOperand, TherapyGoth, therealDLondon, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, Timemaster99, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, Titian3, tk-a369, tkdrg, tmtmtl30, toasterpm87, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, Tornado-Technology, tosatur, TotallyLemon, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, tyashley, Tyler-IN, Tyzemol, UbaserB, ubis1, UBlueberry, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Vaaankas, valentfingerov, Varen, Vasilis, VasilisThePikachu, Velcroboy, veliebm, VelonacepsCalyxEggs, venn, veprolet, veritable-calamity, Veritius, Vermidia, vero5123, Verslebas, VigersRay, violet754, Visne, vitalvitriol, VMSolidus, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, vulppine, wafehling, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, wrexbe, WTCWR68, xkreksx, xprospero, xRiriq, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, Yousifb26, youtissoum, yunii, yuriykiss, YuriyKiss, zach-hill, Zadeon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zionnBE, ZNixian, ZoldorfTheWizard, zonespace27, ZweiHawke, Zylofan, Zymem, zzylex +0x6273, 12rabbits, 13spacemen, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 2digitman, 3nderall, 4310v343k, 4dplanner, 612git, 778b, Ablankmann, abregado, Absolute-Potato, Acruid, actioninja, actually-reb, ada-please, adamsong, Adeinitas, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, Agoichi, Ahion, aiden, Aikakakah, aitorlogedo, AJCM-git, AjexRose, Alekshhh, alexkar598, AlexMorgan3817, alexumandxgabriel08x, Alithsko, ALMv1, Alpha-Two, AlphaQwerty, Altoids1, amylizzle, ancientpower, Andre19926, AndrewEyeke, AndreyCamper, angelofallars, Anzarot121, Appiah, ar4ill, ArchPigeon, ArchRBX, areitpog, Arendian, arimah, Arkanic, ArkiveDev, armoks, Arteben, ArthurMousatov, ArtisticRoomba, artur, AruMoon, ArZarLordOfMango, as334, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, august-sun, AutoOtter, Avalon-Proto, avghdev, Awlod, azzy, AzzyIsNotHere, BackeTako, BananaFlambe, Baptr0b0t, BasedPugilist, BasedUser, Batuh1n, beck-thompson, BellwetherLogic, benev0, benjamin-burges, BGare, bhespiritu, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, BlitzTheSquishy, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, BombasterDS, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, Bribrooo, Bright0, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, bvelliquette, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, capnsockless, CaptainSqrBeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, Catofquestionableethics, CatTheSystem, Centronias, chairbender, Charlese2, charlie, ChaseFlorom, chavonadelal, Cheackraze, cheesePizza2, cheeseplated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbygummibear, Ciac32, civilCornball, Clement-O, clyf, Clyybber, CMDR-Piboy314, CodedCrow, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, CookieMasterT, coolboy911, coolmankid12345, Coolsurf6, corentt, CormosLemming, crazybrain23, creadth, CrigCrag, croilbird, Crotalus, CrudeWax, CrzyPotato, cutemoongod, Cyberboss, d34d10cc, d4kii, dabigoose, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, DangerRevolution, daniel-cr, DanSAussieITS, Daracke, DarkenedSynergy, Darkenson, DawBla, Daxxi3, dch-GH, de0rix, Deahaka, dean, DEATHB4DEFEAT, DeathCamel58, Deatherd, deathride58, DebugOk, Decappi, Decortex, Deeeeja, deepdarkdepths, DefinitelyNotFurryXD, degradka, Delete69, deltanedas, DeltaV-Bot, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, dexlerxd, dffdff2423, dge21, DieselMohawk, digitalic, Dimastra, DinoWattz, DisposableCrewmember42, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DoctorBeard, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, dootythefrooty, Dorragon, Doru991, DoubleRiceEddiedd, DoutorWhite, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, Dynexust, Easypoller, eclips_e, eden077, EEASAS, Efruit, efzapa, ElectroSR, elsie, elthundercloud, Elysium206, Emisse, emmafornash, EmoGarbage404, Endecc, eoineoineoin, eris, erohrs2, ERORR404V1, Errant-4, esguard, estacaoespacialpirata, eugene, exincore, exp111, f0x-n3rd, FacePluslll, Fahasor, FairlySadPanda, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, FillerVK, FinnishPaladin, FirinMaLazors, Fishfish458, FL-OZ, Flareguy, flashgnash, FluffiestFloof, FluffMe, FluidRock, flyingkarii, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, Fouin, foxhorn, freeman2651, freeze2222, Froffy025, Fromoriss, froozigiusz, FrostMando, FryOfDestiny, FungiFellow, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gaxeer, gbasood, Geekyhobo, genderGeometries, GeneralGaws, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, gituhabu, GlassEclipse, GNF54, godisdeadLOL, goet, Goldminermac, Golinth, GoodWheatley, Gorox221, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, greggthefather, GreyMario, GTRsound, Guess-My-Name, gusxyz, Gyrandola, h3half, Haltell, Hanzdegloker, HappyRoach, Hardly3D, harikattar, he1acdvv, Hebi, Henry, HerCoyote23, hitomishirichan, hiucko, Hmeister-fake, Hmeister-real, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, Hreno, htmlsystem, hubismal, Hugal31, Huxellberger, Hyenh, hyphenationc, i-justuser-i, iacore, IamVelcroboy, ian, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imrenq, imweax, indeano, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, jacksonzck, Jackw2As, jacob, jamessimo, janekvap, Jark255, Jaskanbe, JasperJRoth, JerryImMouse, jerryimmouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jmcb, JoeHammad1844, JohnGinnane, johnku1, Jophire, joshepvodka, Jrpl, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, KaiShibaa, kalane15, kalanosh, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, Kimpes, KingFroozy, kira-er, Kirillcas, Kirus59, Kistras, Kit0vras, KittenColony, klaypexx, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kosticia, koteq, KrasnoshchekovPavel, Krunklehorn, Kupie, Kurzaen, kxvvv, kyupolaris, kzhanik, lajolico, Lamrr, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leander-0, leonardo-dabepis, leonsfriedrich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, Lgibb18, lgruthes, LightVillet, liltenhead, LinkUyx, LittleBuilderJane, LittleNyanCat, lizelive, lleftTheDragon, localcc, lokachop, Lomcastar, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luizwritescode, Lukasz825700516, luminight, lunarcomets, luringens, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M3739, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, MagnusCrowe, malchanceux, MaloTV, ManelNavola, manelnavola, Mangohydra, marboww, Markek1, Matz05, max, MaxNox7, maylokana, MehimoNemo, MeltedPixel, MemeProof, memoblob, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, MilenVolf, MilonPL, Minemoder5000, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterMecky, Mith-randalf, MjrLandWhale, mkanke-real, MLGTASTICa, mnemotechnician, moderatelyaware, modern-nm, mokiros, Moneyl, Monotheonist, Moomoobeef, moony, Morb0, mr-bo-jangles, Mr0maks, MrFippik, mrrobdemo, muburu, MureixloI, musicmanvr, MWKane, Myakot, Myctai, N3X15, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neutrino-laser, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, NIXC, NkoKirkto, nmajask, noctyrnal, noelkathegod, nok-ko, NonchalantNoob, NoobyLegion, Nopey, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, NuclearWinter, nukashimika, nuke-haus, NULL882, nullarmo, NullWanderer, nyeogmi, Nylux, Nyranu, och-och, ocotheomega, OctoRocket, OldDanceJacket, onoira, OnyxTheBrave, OrangeMoronage9622, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, paigemaeforrest, pali6, Pangogie, panzer-iv1, paolordls, partyaddict, patrikturi, PaulRitter, peccneck, Peptide90, peptron1, PeterFuto, PetMudstone, pewter-wiz, Pgriha, Phantom-Lily, PHCodes, pheenty, Phill101, phunnyguy, PilgrimViis, Pill-U, Pireax, pissdemon, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, pofitlo, pointer-to-null, pok27, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PPooch, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuceTint, PuroSlavKing, PursuitInAshes, Putnam3145, qrtDaniil, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, RemberBM, RemieRichards, RemTim, Remuchi, rene-descartes2021, Renlou, retequizzle, RiceMar1244, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, RobbyTheFish, Rockdtben, Rohesie, rok-povsic, rolfero, RomanNovo, rosieposieeee, Roudenn, router, RumiTiger, S1rFl0, S1ss3l, Saakra, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, Samsterious, SaphireLattice, SapphicOverload, sarahon, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, Segonist, sephtasm, Serkket, sewerpig, sh18rw, ShadeAware, ShadowCommander, Shadowtheprotogen546, shadowwailker, shaeone, shampunj, shariathotpatrol, ShatteredSwords, SignalWalker, siigiil, SimpleStation14, Simyon264, sirdragooon, Sirionaut, Sk1tch, SkaldetSkaeg, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Slyfox333, snebl, sniperchance, Snowni, snowsignal, solaris7518, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, southbridge-fur, Soydium, SpaceLizardSky, SpaceManiac, SpaceyLady, spartak, SpartanKadence, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, Squishy77, SsalamethVersaach, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, Stealthbomber16, stellar-novas, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, superjj18, Supernorn, SweptWasTaken, Sybil, SYNCHRONIC, Szunti, TadJohnson00, Tainakov, takemysoult, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TekuNut, telyonok, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, TGRCdev, tgrkzus, ThataKat, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, theashtronaut, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, TheIntoxicatedCat, thekilk, themias, theomund, TheOneWhoIsManyFrame, theOperand, TherapyGoth, therealDLondon, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, Timemaster99, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, Titian3, tk-a369, tkdrg, tmtmtl30, toasterpm87, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, Tornado-Technology, tosatur, TotallyLemon, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, tyashley, Tyler-IN, Tyzemol, UbaserB, ubis1, UBlueberry, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Vaaankas, valentfingerov, Varen, Vasilis, VasilisThePikachu, Velcroboy, veliebm, VelonacepsCalyxEggs, venn, veprolet, veritable-calamity, Veritius, Vermidia, vero5123, Verslebas, VigersRay, violet754, Visne, vitalvitriol, VMSolidus, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, vulppine, wafehling, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, wrexbe, wtcwr68, xkreksx, xprospero, xRiriq, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zionnBE, ZNixian, ZoldorfTheWizard, zonespace27, ZweiHawke, Zylofan, Zymem, zzylex diff --git a/Resources/Locale/en-US/deltav/administration/commands/announce-custom.ftl b/Resources/Locale/en-US/deltav/administration/commands/announce-custom.ftl deleted file mode 100644 index 5ee04d2cd4..0000000000 --- a/Resources/Locale/en-US/deltav/administration/commands/announce-custom.ftl +++ /dev/null @@ -1,8 +0,0 @@ -## AnnounceCustomCommand -cmd-announcecustom-desc = Send an in-game announcement with custom color and sound. -cmd-announcecustom-help = {$command} [sender] [color] [sound] - Send announcement. Sender defaults to CentCom, color to Gold, sound to announce.ogg - -# Completion hints -cmd-announcecustom-arg-message = message -cmd-announcecustom-arg-color = color in #RRGGBB format (optional) -cmd-announcecustom-arg-sound = sound path (optional) diff --git a/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl index 232f4ed6ba..6923ae4105 100644 --- a/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl @@ -30,12 +30,11 @@ ghost-role-information-silvia-rules = Keep the medical team company and help out ghost-role-information-synthesis-name = Synthesis Specialist ghost-role-information-synthesis-description = You are a member of Interdyne Pharmaceutics! You are provided all the tools to manufacture a variety of medical cocktails. Establish your craft, peddle your poisons, and make profit. ghost-role-information-synthesis-rules = - You are a [color=yellow][bold]Free-Agent[/bold][/color]. You are free to act as either an antagonist or a non-antagonist. - You are just a chemist so do not act like a full-on antagonist, i.e. no killing people yourself unless your ship is in danger. - Brew deadly poisons, marvelous medicines, and anything in between. - Sell your concoctions to [color=red]local agents[/color], crew, and anyone with supplies. - Stay on your ship; it is your job, home, and lifeblood. + Sell your concoctions to local agents, crew, and anyone with supplies. + Stay on your ship, it is your lifeblood! + + You are just a chemist so do not act like a full-on antagonist, i.e. no killing people yourself unless your ship is in danger. ghost-role-information-closet-skeleton-rules = You are a old member of the station, try to get your previous job back or dwell in the maintenance tunnels!. You are a [color=green][bold]Non-antagonist[/bold][/color]. You should generally not seek to harm the station and its crew. diff --git a/Resources/Locale/en-US/deltav/research/technologies.ftl b/Resources/Locale/en-US/deltav/research/technologies.ftl index ae1a8fe69a..25377b155f 100644 --- a/Resources/Locale/en-US/deltav/research/technologies.ftl +++ b/Resources/Locale/en-US/deltav/research/technologies.ftl @@ -5,4 +5,3 @@ research-technology-energy-gun = Energy Guns research-technology-energy-gun-advance = Advanced Energy Manipulation research-technology-advance-laser = Advanced Laser Manipulation research-technology-robust-melee = Robust Melee -research-technology-syringe-gun = Syringe Gun diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml index 1e2683e7e8..a4750e1059 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml @@ -16,7 +16,6 @@ ClothingOuterPonchoClassic: 2 ClothingUniformJumpsuitKilt: 3 # DeltaV - SCOTTTTLANDDDDD FURREVERRRRR!! ClothingEyesEyepatch: 2 # Delta-V Yarrr - ClothingUniformBlackTurtleneck : 2 # DeltaV - Clothing addition ClothingHeadHatPwig: 2 ClothingOuterRobesJudge: 2 ClothingOuterPoncho: 2 diff --git a/Resources/Prototypes/DeltaV/Catalog/Fills/Crates/engine.yml b/Resources/Prototypes/DeltaV/Catalog/Fills/Crates/engine.yml deleted file mode 100644 index 252d5762ff..0000000000 --- a/Resources/Prototypes/DeltaV/Catalog/Fills/Crates/engine.yml +++ /dev/null @@ -1,45 +0,0 @@ -- type: entity - parent: CrateEngineering - id: CrateEngineEssentials - name: engine essentials crate - description: Everything you need to power the station, in a superposition of containing both a singularity and a tesla. - suffix: 1 per map MAX - components: - - type: EntityTableContainerFill - containers: - entity_storage: !type:GroupSelector - children: - - !type:NestedSelector - tableId: TeslaEssentials - - !type:NestedSelector - tableId: SingularityEssentials - -- type: entityTable - id: TeslaEssentials - table: !type:AllSelector - children: - - id: TeslaGeneratorFlatpack - - id: TeslaGeneratorFlatpack - prob: 0.3 # Small chance of a free backup - - id: TeslaCoilFlatpack - amount: !type:RangeNumberSelector - range: 4, 6 - - id: TeslaGroundingRodFlatpack - amount: !type:ConstantNumberSelector - value: 4 - -- type: entityTable - id: SingularityEssentials - table: !type:AllSelector - children: - - id: SingularityGeneratorFlatpack - - id: SingularityGeneratorFlatpack - prob: 0.3 # Small chance of a free backup - # intentionally separate rolls so they are probably mismatched - # you might get spare tanks you might have to get more from the tank dispenser - - id: RadiationCollectorFlatpack - amount: !type:RangeNumberSelector - range: 8, 12 - - id: PlasmaTankFilled - amount: !type:RangeNumberSelector - range: 8, 12 diff --git a/Resources/Prototypes/DeltaV/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/DeltaV/Entities/Clothing/Uniforms/jumpsuits.yml index 5d950e6e42..b4f9cd73c7 100644 --- a/Resources/Prototypes/DeltaV/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/DeltaV/Entities/Clothing/Uniforms/jumpsuits.yml @@ -397,13 +397,3 @@ - type: Clothing sprite: DeltaV/Clothing/Uniforms/Jumpsuit/prosecutorred.rsi -- type: entity - parent: ClothingUniformFoldableBase - id: ClothingUniformBlackTurtleneck - name: black turtleneck - description: A simple black turtleneck. Perfect for any wannabe spy. - components: - - type: Sprite - sprite: DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi - - type: Clothing - sprite: DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi diff --git a/Resources/Prototypes/DeltaV/Entities/Structures/Wallmounts/Signs/signs.yml b/Resources/Prototypes/DeltaV/Entities/Structures/Wallmounts/Signs/signs.yml index db571aa635..3b5329e230 100644 --- a/Resources/Prototypes/DeltaV/Entities/Structures/Wallmounts/Signs/signs.yml +++ b/Resources/Prototypes/DeltaV/Entities/Structures/Wallmounts/Signs/signs.yml @@ -38,12 +38,4 @@ sprite: DeltaV/Structures/Wallmounts/signs.rsi state: direction_court -- type: entity - parent: BaseSignDirectional - id: SignDirectionaAI - name: AI sign - description: A direction sign, pointing out which way the AI core is. - components: - - type: Sprite - sprite: DeltaV/Structures/Wallmounts/signs.rsi - state: direction_aicore + diff --git a/Resources/Prototypes/DeltaV/GameRules/glimmer_events.yml b/Resources/Prototypes/DeltaV/GameRules/glimmer_events.yml index 2d972f9809..dc940422f8 100644 --- a/Resources/Prototypes/DeltaV/GameRules/glimmer_events.yml +++ b/Resources/Prototypes/DeltaV/GameRules/glimmer_events.yml @@ -17,7 +17,6 @@ parent: BaseGameRule id: GlimmerEventScheduler components: - - type: NextEvent - type: BasicStationEventScheduler minMaxEventTiming: min: 300 diff --git a/Resources/Prototypes/DeltaV/Recipes/Lathes/medical.yml b/Resources/Prototypes/DeltaV/Recipes/Lathes/medical.yml index 945829974e..7de2021c79 100644 --- a/Resources/Prototypes/DeltaV/Recipes/Lathes/medical.yml +++ b/Resources/Prototypes/DeltaV/Recipes/Lathes/medical.yml @@ -5,20 +5,3 @@ materials: Steel: 300 Glass: 100 - -- type: latheRecipe - id: LauncherSyringe - result: LauncherSyringe - completetime: 3 - materials: - Steel: 1000 - Glass: 500 - Plastic: 500 - -- type: latheRecipe - id: MiniSyringe - result: MiniSyringe - completetime: 1 - materials: - Plastic: 150 - Steel: 50 diff --git a/Resources/Prototypes/DeltaV/Research/civilianservices.yml b/Resources/Prototypes/DeltaV/Research/civilianservices.yml deleted file mode 100644 index 73be7fb5a9..0000000000 --- a/Resources/Prototypes/DeltaV/Research/civilianservices.yml +++ /dev/null @@ -1,12 +0,0 @@ -- type: technology - id: SyringeGun - name: research-technology-syringe-gun - icon: - sprite: Objects/Weapons/Guns/Cannons/syringe_gun.rsi - state: syringe_gun - discipline: CivilianServices - tier: 2 - cost: 10000 - recipeUnlocks: - - LauncherSyringe - - MiniSyringe diff --git a/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml b/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml index c7851aff88..3e91218e40 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml @@ -482,7 +482,6 @@ - type: VendingMachineRestock canRestock: - ChemVendInventory - - ChemVendInventorySyndicate # DeltaV: Let it restock synthesis/nukie vendor - type: Sprite layers: - state: base diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 6761b7f181..f6f58803ed 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -436,8 +436,6 @@ - MagazineBoxSpecialHoly - MagazineBoxSpecialMindbreaker - AdvancedTruncheon - - LauncherSyringe - - MiniSyringe # End DeltaV additions - type: entity @@ -1068,10 +1066,6 @@ - WhiteCane - AACTablet # DeltaV dynamicRecipes: - # Begin DeltaV additions - - LauncherSyringe - - MiniSyringe - # End DeltaV additions - ChemicalPayload - CryostasisBeaker - BluespaceBeaker diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 525c3ffebd..90a7d71195 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -2160,7 +2160,7 @@ parent: VendingMachineChemicals id: VendingMachineChemicalsSyndicate name: SyndieJuice - description: Not made with freshly squeezed syndies I hope. Backwards compatible with standard ChemVend restocks. # DeltaV: Add chemvend part + description: Not made with freshly squeezed syndies I hope. components: - type: VendingMachine pack: ChemVendInventorySyndicate diff --git a/Resources/Prototypes/GameRules/meteorswarms.yml b/Resources/Prototypes/GameRules/meteorswarms.yml index 95f9985b6a..61ae431289 100644 --- a/Resources/Prototypes/GameRules/meteorswarms.yml +++ b/Resources/Prototypes/GameRules/meteorswarms.yml @@ -55,6 +55,7 @@ parent: BaseGameRule id: MeteorSwarmScheduler components: + - type: NextEvent # DeltaV: Queue Event - type: GameRule - type: BasicStationEventScheduler minimumTimeUntilFirstEvent: 600 # 10 min @@ -68,6 +69,7 @@ parent: BaseGameRule id: MeteorSwarmMildScheduler components: + - type: NextEvent # DeltaV: Queue Event - type: GameRule - type: BasicStationEventScheduler minimumTimeUntilFirstEvent: 600 # 10 min @@ -82,6 +84,7 @@ parent: BaseGameRule id: KesslerSyndromeScheduler components: + - type: NextEvent # DeltaV: Queue Event - type: GameRule - type: RampingStationEventScheduler scheduledGameRules: !type:NestedSelector @@ -94,6 +97,7 @@ id: GameRuleMeteorSwarm abstract: true components: + - type: NextEvent # DeltaV: Queue Event - type: GameRule - type: StationEvent reoccurrenceDelay: 1 diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index 688b399d11..56d1b6e225 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -309,6 +309,7 @@ id: RampingStationEventScheduler parent: BaseGameRule components: + - type: NextEvent # DeltaV: Queue Event - type: RampingStationEventScheduler averageChaos: 4.5 # DeltaV averageEndTime: 180 # DeltaV diff --git a/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml b/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml index 19832813f0..eee0f05e36 100644 --- a/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml +++ b/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml @@ -50,3 +50,18 @@ # components: # - BecomePsionicCondition # - type: BecomeGolemCondition + +- type: entity + id: RaiseGlimmerObjective + parent: BaseTraitorObjective + name: Raise Glimmer. + description: Get the glimmer above the specified amount. + components: + - type: Objective + difficulty: 2.5 + #unique: false + icon: + sprite: Nyanotrasen/Icons/psi.rsi + state: psi + - type: RaiseGlimmerCondition + target: 500 diff --git a/Resources/Prototypes/Objectives/objectiveGroups.yml b/Resources/Prototypes/Objectives/objectiveGroups.yml index d870db5d36..05f563c297 100644 --- a/Resources/Prototypes/Objectives/objectiveGroups.yml +++ b/Resources/Prototypes/Objectives/objectiveGroups.yml @@ -49,6 +49,8 @@ weights: RandomTraitorAliveObjective: 1 RandomTraitorProgressObjective: 1 + RaiseGlimmerObjective: 0.5 # Nyanotrasen - Raise glimmer to a target amount, see Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml + #Thief groups - type: weightedRandom diff --git a/Resources/Prototypes/Research/disciplines.yml b/Resources/Prototypes/Research/disciplines.yml index b154785327..7a661da1a3 100644 --- a/Resources/Prototypes/Research/disciplines.yml +++ b/Resources/Prototypes/Research/disciplines.yml @@ -5,11 +5,10 @@ icon: sprite: Interface/Misc/research_disciplines.rsi state: industrial - lockoutTier: 4 # DeltaV: Lockout occurs at t4 tierPrerequisites: 1: 0 - 2: 1 # DeltaV: raised to 1 - 3: 1 # DeltaV: raised to 1 + 2: 0.75 + 3: 0.75 - type: techDiscipline id: Arsenal @@ -18,11 +17,10 @@ icon: sprite: Interface/Misc/research_disciplines.rsi state: arsenal - lockoutTier: 4 # DeltaV: Lockout occurs at t4 tierPrerequisites: 1: 0 - 2: 1 # DeltaV: raised to 1 - 3: 1 # DeltaV: raised to 1 + 2: 0.75 + 3: 0.75 - type: techDiscipline id: Experimental @@ -31,11 +29,10 @@ icon: sprite: Interface/Misc/research_disciplines.rsi state: experimental - lockoutTier: 4 # DeltaV: Lockout occurs at t4 tierPrerequisites: 1: 0 - 2: 1 # DeltaV: raised to 1 - 3: 1 # DeltaV: raised to 1 + 2: 0.75 + 3: 0.75 - type: techDiscipline id: CivilianServices @@ -44,8 +41,7 @@ icon: sprite: Interface/Misc/research_disciplines.rsi state: civilianservices - lockoutTier: 4 # DeltaV: Lockout occurs at t4 tierPrerequisites: 1: 0 - 2: 1 # DeltaV: raised to 1 - 3: 1 # DeltaV: raised to 1 + 2: 0.75 + 3: 0.75 diff --git a/Resources/ServerInfo/Guidebook/DeltaV/Rules/GameRules/2_Metagaming.xml b/Resources/ServerInfo/Guidebook/DeltaV/Rules/GameRules/2_Metagaming.xml index 7047855e82..bc7d7d93f7 100644 --- a/Resources/ServerInfo/Guidebook/DeltaV/Rules/GameRules/2_Metagaming.xml +++ b/Resources/ServerInfo/Guidebook/DeltaV/Rules/GameRules/2_Metagaming.xml @@ -116,6 +116,7 @@ - Giving a character additional access or a job because you are friends with the player who is playing that character. - Trusting a character because you are friends with the player who is playing that character. - Not fighting a character because you are friends with the player who is playing that character. + - Ignoring your objective to kill a character because your character and theirs became friends in a previous round. ## Metagrudging Examples These are all examples of things that are prohibited by at least one metashield item that is never revealed IC. diff --git a/Resources/ServerInfo/Guidebook/DeltaV/Rules/RoleRules/C1_CommandSecurityJustice.xml b/Resources/ServerInfo/Guidebook/DeltaV/Rules/RoleRules/C1_CommandSecurityJustice.xml index 98ad2308a0..73cad37635 100644 --- a/Resources/ServerInfo/Guidebook/DeltaV/Rules/RoleRules/C1_CommandSecurityJustice.xml +++ b/Resources/ServerInfo/Guidebook/DeltaV/Rules/RoleRules/C1_CommandSecurityJustice.xml @@ -4,7 +4,7 @@ Security, Justice, and Command roles are held to a higher standard of roleplay, - Your character must act in a manner that NanoTrasen would reasonably hire them to this position. - Your character is presumed to be sane, competent in their duties, and able to make decisions to the benefit of the station. - Giving away Traitor objective items and sensitive equipment should be avoided in these roles. Your character should value them deeply. - - Leeway is given to making deals with criminals if the deal benefits the safety or situation of the crew and station OR if the deal involves items of a primarily sentimental value (e.g. HoP's Ian scrapbook, LO's lucky dollar). + - Leeway is given to making deals with criminals if the deal benefits the safety or situation of the crew and station. - Leeway can be given in [color=#ff0000]extreme circumstances[/color] of emergency/crisis. - The three departments are required to read and follow Delta-V Space Law, Standard Operating Procedure, Alert Procedure, and Company Policy to the best of their ability. - [color=#ff0000]Circumstances and context may permit you to break these laws. However, the fact that this rule is malleable is not an excuse to ignore it entirely.[/color] diff --git a/Resources/ServerInfo/Guidebook/DeltaV/Rules/RoleRules/C3_Antags.xml b/Resources/ServerInfo/Guidebook/DeltaV/Rules/RoleRules/C3_Antags.xml index cb76f7da9e..7da8c25517 100644 --- a/Resources/ServerInfo/Guidebook/DeltaV/Rules/RoleRules/C3_Antags.xml +++ b/Resources/ServerInfo/Guidebook/DeltaV/Rules/RoleRules/C3_Antags.xml @@ -1,12 +1,9 @@ # Rule C3: Antagonist Guidelines -[color=#ffff00]Being an antagonist does not allow you to stop playing a character. Determine how your character would react to being given these objectives, and work through it appropriately.[/color] - Through engaging in antagonistic activity, you should seek to make the round more engaging and fun as the primary driver of the narrative of a round. Succeeding as an antagonist should not be your goal, but rather telling the most interesting story for everyone involved. - [color=#ff0000]Antagonists are free to complete their objectives through committing proportional damage. Through roleplay, damage becomes more proportional.[/color] Example: Holding the singulo hostage for a theft objective is acceptable, while simply singuloosing and using that chaos is unacceptable. - Killing players unrelated to your immediate objective in a manner that results in their round removal should be avoided. Crew that do not make an attempt at self preservation, or engage in valid-hunting, are exempt from this. - If you are concerned as to whether or not what you're about to do is allowed, feel free to AHelp and ask an admin for clarification. [color=#ff0000]Lack of administrator response does not constitute approval.[/color] - - While antagonists are [color=#ffff00]not required[/color] to complete their objectives, they are still encouraged to act as an antagonist in the round while roleplaying. - Other antagonists are not necessarily your friends. Other antagonists are often free agents that you may negotiate with at your own risk. - If you are a team antagonist, you must work with your partners to complete any shared objectives. - Excessively lame tactics are strictly forbidden for all antags except for station-destroying antags, such as nuclear operatives or space dragons. Examples include: diff --git a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 9ce3bbaaef..0000000000 Binary files a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/icon.png b/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/icon.png deleted file mode 100644 index 30dfe73d01..0000000000 Binary files a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/inhand-left.png b/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/inhand-left.png deleted file mode 100644 index 8abe548a25..0000000000 Binary files a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/inhand-right.png b/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/inhand-right.png deleted file mode 100644 index 9df7254090..0000000000 Binary files a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/meta.json b/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/meta.json deleted file mode 100644 index 4c65091e30..0000000000 --- a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Created by Aikakakah (github) for Delta-V", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "rolled-equipped-INNERCLOTHING", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/rolled-equipped-INNERCLOTHING.png b/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/rolled-equipped-INNERCLOTHING.png deleted file mode 100644 index 5d4a55d013..0000000000 Binary files a/Resources/Textures/DeltaV/Clothing/Uniforms/Jumpsuit/black_turtleneck.rsi/rolled-equipped-INNERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/direction_aicore.png b/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/direction_aicore.png deleted file mode 100644 index 226a799578..0000000000 Binary files a/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/direction_aicore.png and /dev/null differ diff --git a/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/meta.json b/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/meta.json index 08393f464a..13aab65cbc 100644 --- a/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/meta.json +++ b/Resources/Textures/DeltaV/Structures/Wallmounts/signs.rsi/meta.json @@ -23,10 +23,6 @@ "name": "direction_justice", "directions": 4 }, - { - "name": "direction_aicore", - "directions": 4 - }, { "name": "chapel" }