diff --git a/Content.Client/Changeling/ChangelingSystem.cs b/Content.Client/Changeling/ChangelingSystem.cs deleted file mode 100644 index 1a0218da4f..0000000000 --- a/Content.Client/Changeling/ChangelingSystem.cs +++ /dev/null @@ -1,47 +0,0 @@ -using Content.Client.Alerts; -using Content.Client.UserInterface.Systems.Alerts.Controls; -using Content.Shared.Changeling; -using Content.Shared.StatusIcon.Components; -using Robust.Shared.Prototypes; - -namespace Content.Client.Changeling; - -public sealed partial class ChangelingSystem : EntitySystem -{ - - [Dependency] private readonly IPrototypeManager _prototype = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnUpdateAlert); - SubscribeLocalEvent(GetChanglingIcon); - } - - private void OnUpdateAlert(EntityUid uid, ChangelingComponent comp, ref UpdateAlertSpriteEvent args) - { - var stateNormalized = 0f; - - // hardcoded because uhh umm i don't know. send help. - switch (args.Alert.AlertKey.AlertType) - { - case "ChangelingChemicals": - stateNormalized = (int)(comp.Chemicals / comp.MaxChemicals * 18); - break; - - case "ChangelingBiomass": - stateNormalized = (int)(comp.Biomass / comp.MaxBiomass * 16); - break; - default: - return; - } - var sprite = args.SpriteViewEnt.Comp; - sprite.LayerSetState(AlertVisualLayers.Base, $"{stateNormalized}"); - } - - private void GetChanglingIcon(Entity ent, ref GetStatusIconsEvent args) - { - if (HasComp(ent) && _prototype.TryIndex(ent.Comp.StatusIcon, out var iconPrototype)) - args.StatusIcons.Add(iconPrototype); - } -} diff --git a/Content.Client/_Sunrise/SolutionRegenerationSwitcher/ClientSolutionRegenerationSwitcherSystem.cs b/Content.Client/_Sunrise/SolutionRegenerationSwitcher/ClientSolutionRegenerationSwitcherSystem.cs index 9bbec981bf..f5faa4c8db 100644 --- a/Content.Client/_Sunrise/SolutionRegenerationSwitcher/ClientSolutionRegenerationSwitcherSystem.cs +++ b/Content.Client/_Sunrise/SolutionRegenerationSwitcher/ClientSolutionRegenerationSwitcherSystem.cs @@ -3,7 +3,7 @@ using Content.Shared.Chemistry.Reagent; namespace Content.Client._Sunrise.SolutionRegenerationSwitcher; -public sealed class ClientSolutionRegenerationSwitcherSystem : SharedSolutionRegenerationSwitcherSystem +public sealed class SolutionRegenerationSwitcherSystem : SharedSolutionRegenerationSwitcherSystem { protected override void SwitchToNextReagent(EntityUid uid, SolutionRegenerationSwitcherComponent component, diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs index 86658b20cb..36d1a5f40b 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs @@ -200,19 +200,6 @@ public sealed partial class AdminVerbSystem args.Verbs.Add(paradox); // Sunrise-Start - Verb ling = new() - { - Text = Loc.GetString("admin-verb-text-make-changeling"), - Category = VerbCategory.Antag, - Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Changeling/changeling_abilities.rsi"), "transform"), - Act = () => - { - _antag.ForceMakeAntag(targetPlayer, DefaultChangelingRule); - }, - Impact = LogImpact.High, - Message = Loc.GetString("admin-verb-make-changeling"), - }; - args.Verbs.Add(ling); Verb vampire = new() { diff --git a/Content.Server/Changeling/ChangelingSystem.Abilities.cs b/Content.Server/Changeling/ChangelingSystem.Abilities.cs deleted file mode 100644 index 08e8308309..0000000000 --- a/Content.Server/Changeling/ChangelingSystem.Abilities.cs +++ /dev/null @@ -1,660 +0,0 @@ -using Content.Shared.Changeling; -using Content.Shared.Chemistry.Components; -using Content.Shared.Cuffs.Components; -using Content.Shared.DoAfter; -using Content.Shared.FixedPoint; -using Content.Shared.IdentityManagement; -using Content.Shared.Mobs; -using Content.Shared.Store.Components; -using Content.Shared.Popups; -using Content.Shared.Damage; -using Robust.Shared.Prototypes; -using Content.Shared.Damage.Prototypes; -using Content.Server.Objectives.Components; -using Content.Server.Light.Components; -using Content.Shared.Eye.Blinding.Systems; -using Content.Shared.Eye.Blinding.Components; -using Content.Shared.Movement.Pulling.Components; -using Content.Shared.Stealth.Components; -using Content.Shared.Damage.Components; -using Content.Server.Radio.Components; -using Content.Shared._Sunrise.CollectiveMind; -using Content.Shared._RMC14.Xenonids.Screech; -using Content.Shared.Coordinates; -using Content.Shared.Flash.Components; -using Content.Shared.Light.Components; - -namespace Content.Server.Changeling; - -public sealed partial class ChangelingSystem : EntitySystem -{ - public void SubscribeAbilities() - { - SubscribeLocalEvent(OnOpenEvolutionMenu); - SubscribeLocalEvent(OnAbsorb); - SubscribeLocalEvent(OnAbsorbDoAfter); - SubscribeLocalEvent(OnStingExtractDNA); - SubscribeLocalEvent(OnTransformCycle); - SubscribeLocalEvent(OnTransform); - SubscribeLocalEvent(OnEnterStasis); - SubscribeLocalEvent(OnExitStasis); - - SubscribeLocalEvent(OnToggleArmblade); - SubscribeLocalEvent(OnCreateBoneShard); - SubscribeLocalEvent(OnToggleArmor); - SubscribeLocalEvent(OnToggleShield); - SubscribeLocalEvent(OnShriekDissonant); - SubscribeLocalEvent(OnShriekResonant); - SubscribeLocalEvent(OnToggleStrainedMuscles); - - SubscribeLocalEvent(OnStingBlind); - SubscribeLocalEvent(OnStingCryo); - SubscribeLocalEvent(OnStingLethargic); - SubscribeLocalEvent(OnStingMute); - SubscribeLocalEvent(OnStingTransform); - SubscribeLocalEvent(OnStingFakeArmblade); - - SubscribeLocalEvent(OnAnatomicPanacea); - SubscribeLocalEvent(OnAugmentedEyesight); - SubscribeLocalEvent(OnBiodegrade); - SubscribeLocalEvent(OnChameleonSkin); - SubscribeLocalEvent(OnEphedrineOverdose); - SubscribeLocalEvent(OnHealUltraSwag); - SubscribeLocalEvent(OnLastResort); - SubscribeLocalEvent(OnLesserForm); - SubscribeLocalEvent(OnSpacesuit); - SubscribeLocalEvent(OnHivemindAccess); - } - - #region Basic Abilities - - private void OnOpenEvolutionMenu(EntityUid uid, ChangelingComponent comp, ref OpenEvolutionMenuEvent args) - { - if (!TryComp(uid, out var store)) - return; - - _store.ToggleUi(uid, uid, store); - } - - private void OnAbsorb(EntityUid uid, ChangelingComponent comp, ref AbsorbDNAEvent args) - { - var target = args.Target; - - if (!IsIncapacitated(target)) - { - _popup.PopupEntity(Loc.GetString("changeling-absorb-fail-incapacitated"), uid, uid); - return; - } - if (HasComp(target)) - { - _popup.PopupEntity(Loc.GetString("changeling-absorb-fail-absorbed"), uid, uid); - return; - } - if (!HasComp(target)) - { - _popup.PopupEntity(Loc.GetString("changeling-absorb-fail-unabsorbable"), uid, uid); - return; - } - - if (!TryUseAbility(uid, comp, args)) - return; - - var popupOthers = Loc.GetString("changeling-absorb-start", ("user", Identity.Entity(uid, EntityManager)), ("target", Identity.Entity(target, EntityManager))); - _popup.PopupEntity(popupOthers, uid, PopupType.LargeCaution); - PlayMeatySound(uid, comp); - var dargs = new DoAfterArgs(EntityManager, uid, TimeSpan.FromSeconds(15), new AbsorbDNADoAfterEvent(), uid, target) - { - DistanceThreshold = 1.5f, - BreakOnDamage = true, - BreakOnHandChange = false, - BreakOnMove = true, - BreakOnWeightlessMove = true, - AttemptFrequency = AttemptFrequency.StartAndEnd - }; - _doAfter.TryStartDoAfter(dargs); - } - public ProtoId AbsorbedDamageGroup = "Genetic"; - private void OnAbsorbDoAfter(EntityUid uid, ChangelingComponent comp, ref AbsorbDNADoAfterEvent args) - { - if (args.Args.Target == null) - return; - - var target = args.Args.Target.Value; - - if (args.Cancelled || !IsIncapacitated(target) || HasComp(target)) - return; - - PlayMeatySound(args.User, comp); - - UpdateBiomass(uid, comp, comp.MaxBiomass - comp.TotalAbsorbedEntities); - - var dmg = new DamageSpecifier(_proto.Index(AbsorbedDamageGroup), 180); - _damage.TryChangeDamage(target, dmg, false, false); - _blood.ChangeBloodReagent(target, "FerrochromicAcid"); - _blood.SpillAllSolutions(target); - - EnsureComp(target); - - var popup = Loc.GetString("changeling-absorb-end-self-ling"); - var bonusChemicals = 0f; - var bonusEvolutionPoints = 0f; - if (TryComp(target, out var targetComp)) - { - bonusChemicals += targetComp.MaxChemicals / 2; - bonusEvolutionPoints += 10; - comp.MaxBiomass += targetComp.MaxBiomass / 2; - } - else - { - popup = Loc.GetString("changeling-absorb-end-self"); - bonusChemicals += 10; - bonusEvolutionPoints += 2; - } - TryStealDNA(uid, target, comp, true); - comp.TotalAbsorbedEntities++; - - _popup.PopupEntity(popup, args.User, args.User); - comp.MaxChemicals += bonusChemicals; - - if (TryComp(args.User, out var store)) - { - _store.TryAddCurrency(new Dictionary { { "EvolutionPoint", bonusEvolutionPoints } }, args.User, store); - _store.UpdateUserInterface(args.User, args.User, store); - } - - if (_mind.TryGetMind(uid, out var mindId, out var mind)) - if (_mind.TryGetObjectiveComp(mindId, out var objective, mind)) - objective.Absorbed += 1; - } - - private void OnStingExtractDNA(EntityUid uid, ChangelingComponent comp, ref StingExtractDNAEvent args) - { - if (!TrySting(uid, comp, args, true)) - return; - - var target = args.Target; - if (!TryStealDNA(uid, target, comp, true)) - { - _popup.PopupEntity(Loc.GetString("changeling-sting-extract-fail"), uid, uid); - // royal cashback - comp.Chemicals += Comp(args.Action).ChemicalCost; - } - else _popup.PopupEntity(Loc.GetString("changeling-sting", ("target", Identity.Entity(target, EntityManager))), uid, uid); - } - - private void OnTransformCycle(EntityUid uid, ChangelingComponent comp, ref ChangelingTransformCycleEvent args) - { - comp.AbsorbedDNAIndex += 1; - if (comp.AbsorbedDNAIndex >= comp.MaxAbsorbedDNA || comp.AbsorbedDNAIndex >= comp.AbsorbedDNA.Count) - comp.AbsorbedDNAIndex = 0; - - if (comp.AbsorbedDNA.Count == 0) - { - _popup.PopupEntity(Loc.GetString("changeling-transform-cycle-empty"), uid, uid); - return; - } - - var selected = comp.AbsorbedDNA.ToArray()[comp.AbsorbedDNAIndex]; - comp.SelectedForm = selected; - _popup.PopupEntity(Loc.GetString("changeling-transform-cycle", ("target", selected.Name)), uid, uid); - } - private void OnTransform(EntityUid uid, ChangelingComponent comp, ref ChangelingTransformEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - if (!TryTransform(uid, comp)) - comp.Chemicals += Comp(args.Action).ChemicalCost; - } - - private void OnEnterStasis(EntityUid uid, ChangelingComponent comp, ref EnterStasisEvent args) - { - if (comp.IsInStasis || HasComp(uid)) - { - _popup.PopupEntity(Loc.GetString("changeling-stasis-enter-fail"), uid, uid); - return; - } - - if (!TryUseAbility(uid, comp, args)) - return; - - comp.Chemicals = 0f; - - ToggleChameleonSkin(uid, comp, false); - - if (_mobState.IsAlive(uid)) - { - // fake our death - var othersMessage = Loc.GetString("suicide-command-default-text-others", ("name", uid)); - _popup.PopupEntity(othersMessage, uid, Robust.Shared.Player.Filter.PvsExcept(uid), true); - - var selfMessage = Loc.GetString("changeling-stasis-enter"); - _popup.PopupEntity(selfMessage, uid, uid); - } - - if (!_mobState.IsDead(uid)) - _mobState.ChangeMobState(uid, MobState.Dead); - - comp.IsInStasis = true; - - args.Handled = true; - } - private void OnExitStasis(EntityUid uid, ChangelingComponent comp, ref ExitStasisEvent args) - { - if (!comp.IsInStasis) - { - _popup.PopupEntity(Loc.GetString("changeling-stasis-exit-fail"), uid, uid); - return; - } - if (HasComp(uid)) - { - _popup.PopupEntity(Loc.GetString("changeling-stasis-exit-fail-dead"), uid, uid); - return; - } - - if (!TryUseAbility(uid, comp, args)) - return; - - if (!TryComp(uid, out var damageable)) - return; - - // heal of everything - _damage.SetAllDamage(uid, damageable, 0); - _mobState.ChangeMobState(uid, MobState.Alive); - _blood.TryModifyBloodLevel(uid, 1000); - _blood.TryModifyBleedAmount(uid, -1000); - - _popup.PopupEntity(Loc.GetString("changeling-stasis-exit"), uid, uid); - - // Sunrise edit start - StartScreech(uid); - // Sunrise edit end - - comp.IsInStasis = false; - - args.Handled = true; - } - - #endregion - - #region Combat Abilities - - private void OnToggleArmblade(EntityUid uid, ChangelingComponent comp, ref ToggleArmbladeEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - if (!TryToggleItem(uid, ArmbladePrototype, comp)) - return; - - PlayMeatySound(uid, comp); - } - private void OnCreateBoneShard(EntityUid uid, ChangelingComponent comp, ref CreateBoneShardEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - var star = Spawn(BoneShardPrototype, Transform(uid).Coordinates); - _hands.TryPickupAnyHand(uid, star); - - PlayMeatySound(uid, comp); - } - private void OnToggleArmor(EntityUid uid, ChangelingComponent comp, ref ToggleChitinousArmorEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - if (!TryToggleItem(uid, ArmorPrototype, comp, "outerClothing") - || !TryToggleItem(uid, ArmorHelmetPrototype, comp, "head")) - { - _popup.PopupEntity(Loc.GetString("changeling-equip-armor-fail"), uid, uid); - comp.Chemicals += Comp(args.Action).ChemicalCost; - return; - } - - PlayMeatySound(uid, comp); - } - private void OnToggleShield(EntityUid uid, ChangelingComponent comp, ref ToggleOrganicShieldEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - if (!TryToggleItem(uid, ShieldPrototype, comp)) - return; - - PlayMeatySound(uid, comp); - } - private void OnShriekDissonant(EntityUid uid, ChangelingComponent comp, ref ShriekDissonantEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - DoScreech(uid, comp); - - var pos = _transform.GetMapCoordinates(uid); - var power = comp.ShriekPower; - _emp.EmpPulse(pos, power, 5000f, power * 2); - } - private void OnShriekResonant(EntityUid uid, ChangelingComponent comp, ref ShriekResonantEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - DoScreech(uid, comp); - - var power = comp.ShriekPower; - _flash.FlashArea(uid, uid, power, TimeSpan.FromSeconds(5)); - - var lookup = _lookup.GetEntitiesInRange(uid, power); - var lights = GetEntityQuery(); - - foreach (var ent in lookup) - if (lights.HasComponent(ent)) - _light.TryDestroyBulb(ent); - } - private void OnToggleStrainedMuscles(EntityUid uid, ChangelingComponent comp, ref ToggleStrainedMusclesEvent args) - { - if (!TryUseAbility(uid, comp, args) || _gravity.IsWeightless(uid)) - return; - - ToggleStrainedMuscles(uid, comp); - } - private void ToggleStrainedMuscles(EntityUid uid, ChangelingComponent comp) - { - if (!comp.StrainedMusclesActive) - { - _speed.ChangeBaseSpeed(uid, 4f, 7.5f, 20f); - _popup.PopupEntity(Loc.GetString("changeling-muscles-start"), uid, uid); - comp.StrainedMusclesActive = true; - } - else - { - _speed.ChangeBaseSpeed(uid, 2.5f, 4.5f, 20f); - _popup.PopupEntity(Loc.GetString("changeling-muscles-end"), uid, uid); - comp.StrainedMusclesActive = false; - } - - PlayMeatySound(uid, comp); - } - - #endregion - - #region Stings - - private void OnStingBlind(EntityUid uid, ChangelingComponent comp, ref StingBlindEvent args) - { - if (!TrySting(uid, comp, args)) - return; - - var target = args.Target; - if (!TryComp(target, out var blindable) || blindable.IsBlind) - return; - - _blindable.AdjustEyeDamage((target, blindable), 2); - var timeSpan = TimeSpan.FromSeconds(5f); - _statusEffect.TryAddStatusEffect(target, TemporaryBlindnessSystem.BlindingStatusEffect, timeSpan, false, TemporaryBlindnessSystem.BlindingStatusEffect); - } - private void OnStingCryo(EntityUid uid, ChangelingComponent comp, ref StingCryoEvent args) - { - var reagents = new List<(string, FixedPoint2)>() - { - ("Fresium", 20f), - ("ChloralHydrate", 10f) - }; - - if (!TryReagentSting(uid, comp, args, reagents)) - return; - } - private void OnStingLethargic(EntityUid uid, ChangelingComponent comp, ref StingLethargicEvent args) - { - var reagents = new List<(string, FixedPoint2)>() - { - ("Impedrezene", 10f), - ("MuteToxin", 5f) - }; - - if (!TryReagentSting(uid, comp, args, reagents)) - return; - } - private void OnStingMute(EntityUid uid, ChangelingComponent comp, ref StingMuteEvent args) - { - var reagents = new List<(string, FixedPoint2)>() - { - ("MuteToxin", 15f) - }; - - if (!TryReagentSting(uid, comp, args, reagents)) - return; - } - private void OnStingTransform(EntityUid uid, ChangelingComponent comp, ref StingTransformEvent args) - { - if (!TrySting(uid, comp, args, true)) - return; - - var target = args.Target; - if (!TryTransform(target, comp, true, true)) - comp.Chemicals += Comp(args.Action).ChemicalCost; - } - private void OnStingFakeArmblade(EntityUid uid, ChangelingComponent comp, ref StingFakeArmbladeEvent args) - { - if (!TrySting(uid, comp, args)) - return; - - var target = args.Target; - var fakeArmblade = EntityManager.SpawnEntity(FakeArmbladePrototype, Transform(target).Coordinates); - if (!_hands.TryPickupAnyHand(target, fakeArmblade)) - { - QueueDel(fakeArmblade); - comp.Chemicals += Comp(args.Action).ChemicalCost; - _popup.PopupEntity(Loc.GetString("changeling-sting-fail-simplemob"), uid, uid); - return; - } - - PlayMeatySound(target, comp); - } - - #endregion - - #region Utilities - - private void OnAnatomicPanacea(EntityUid uid, ChangelingComponent comp, ref ActionAnatomicPanaceaEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - var reagents = new List<(string, FixedPoint2)>() - { - ("Diphenhydramine", 5f), - ("Arithrazine", 5f), - ("Ethylredoxrazine", 5f) - }; - if (TryInjectReagents(uid, reagents)) - _popup.PopupEntity(Loc.GetString("changeling-panacea"), uid, uid); - else return; - PlayMeatySound(uid, comp); - } - - private void OnAugmentedEyesight(EntityUid uid, ChangelingComponent comp, ref ActionAugmentedEyesightEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - if (HasComp(uid)) - { - _popup.PopupEntity(Loc.GetString("changeling-passive-active"), uid, uid); - return; - } - - EnsureComp(uid); - _popup.PopupEntity(Loc.GetString("changeling-passive-activate"), uid, uid); - } - - private void OnBiodegrade(EntityUid uid, ChangelingComponent comp, ref ActionBiodegradeEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - if (TryComp(uid, out var cuffs) && cuffs.Container.ContainedEntities.Count > 0) - { - var cuff = cuffs.LastAddedCuffs; - - _cuffs.Uncuff(uid, cuffs.LastAddedCuffs, cuff); - QueueDel(cuff); - } - - var soln = new Solution(); - soln.AddReagent("PolytrinicAcid", 10f); - - if (_pull.IsPulled(uid)) - { - var puller = Comp(uid).Puller; - if (puller != null) - { - _puddle.TrySplashSpillAt((EntityUid) puller, Transform((EntityUid) puller).Coordinates, soln, out _); - return; - } - } - _puddle.TrySplashSpillAt(uid, Transform(uid).Coordinates, soln, out _); - } - - private void OnChameleonSkin(EntityUid uid, ChangelingComponent comp, ref ActionChameleonSkinEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - if (comp.StealthEnabled && HasComp(uid) && HasComp(uid)) - ToggleChameleonSkin(uid, comp, false); - else - ToggleChameleonSkin(uid, comp, true); - } - - public void ToggleChameleonSkin(EntityUid uid, ChangelingComponent comp, bool toState) - { - if (!toState) - { - RemComp(uid); - RemComp(uid); - _popup.PopupEntity(Loc.GetString("changeling-chameleon-end"), uid, uid); - comp.StealthEnabled = false; - } - else - { - EnsureComp(uid); - var stealthonmove = EnsureComp(uid); - stealthonmove.PassiveVisibilityRate = -0.37f; - _popup.PopupEntity(Loc.GetString("changeling-chameleon-start"), uid, uid); - comp.StealthEnabled = true; - } - } - - private void OnEphedrineOverdose(EntityUid uid, ChangelingComponent comp, ref ActionEphedrineOverdoseEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - var stam = EnsureComp(uid); - stam.StaminaDamage = 0; - - var reagents = new List<(string, FixedPoint2)>() - { - ("Ephedrine", 15f) - }; - if (TryInjectReagents(uid, reagents)) - _popup.PopupEntity(Loc.GetString("changeling-inject"), uid, uid); - else - { - _popup.PopupEntity(Loc.GetString("changeling-inject-fail"), uid, uid); - return; - } - } - // john space made me do this - private void OnHealUltraSwag(EntityUid uid, ChangelingComponent comp, ref ActionFleshmendEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - var reagents = new List<(string, FixedPoint2)>() - { - ("Ichor", 10f), - ("TranexamicAcid", 5f) - }; - if (TryInjectReagents(uid, reagents)) - _popup.PopupEntity(Loc.GetString("changeling-fleshmend"), uid, uid); - else - return; - PlayMeatySound(uid, comp); - } - public void OnLastResort(EntityUid uid, ChangelingComponent comp, ref ActionLastResortEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - // todo: implement - } - public void OnLesserForm(EntityUid uid, ChangelingComponent comp, ref ActionLesserFormEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - var newUid = TransformEntity(uid, protoId: "MobMonkey", comp: comp); - if (newUid == null) - { - comp.Chemicals += Comp(args.Action).ChemicalCost; - return; - } - - PlayMeatySound((EntityUid) newUid, comp); - var loc = Loc.GetString("changeling-transform-others", ("user", Identity.Entity((EntityUid) newUid, EntityManager))); - _popup.PopupEntity(loc, (EntityUid) newUid, PopupType.LargeCaution); - - comp.IsInLesserForm = true; - } - public void OnSpacesuit(EntityUid uid, ChangelingComponent comp, ref ActionSpacesuitEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - if (!TryToggleItem(uid, SpacesuitPrototype, comp, "outerClothing") - || !TryToggleItem(uid, SpacesuitHelmetPrototype, comp, "head")) - { - _popup.PopupEntity(Loc.GetString("changeling-equip-armor-fail"), uid, uid); - comp.Chemicals += Comp(args.Action).ChemicalCost; - return; - } - - PlayMeatySound(uid, comp); - } - public void OnHivemindAccess(EntityUid uid, ChangelingComponent comp, ref ActionHivemindAccessEvent args) - { - if (!TryUseAbility(uid, comp, args)) - return; - - if (HasComp(uid)) - { - _popup.PopupEntity(Loc.GetString("changeling-passive-active"), uid, uid); - return; - } - - EnsureComp(uid); - var collectiveMindComponent = EnsureComp(uid); - if (!collectiveMindComponent.Minds.Contains("Changeling")) - collectiveMindComponent.Minds.Add("Changeling"); - - _popup.PopupEntity(Loc.GetString("changeling-hivemind-start"), uid, uid); - } - - #endregion - - // Sunrise edit start - private void StartScreech(EntityUid uid, XenoScreechComponent? component = null, bool playSound = true) - { - if (!Resolve(uid, ref component)) - return; - - if (playSound) - _audio.PlayPvs(component.Sound, uid); - - SpawnAttachedTo(component.Effect, uid.ToCoordinates()); - } - // Sunrise edit end -} diff --git a/Content.Server/Changeling/ChangelingSystem.cs b/Content.Server/Changeling/ChangelingSystem.cs deleted file mode 100644 index 1cef75b218..0000000000 --- a/Content.Server/Changeling/ChangelingSystem.cs +++ /dev/null @@ -1,666 +0,0 @@ -using Content.Server.DoAfter; -using Content.Server.Forensics; -using Content.Server.Polymorph.Systems; -using Content.Server.Popups; -using Content.Server.Store.Systems; -using Content.Server.Zombies; -using Content.Shared.Alert; -using Content.Shared.Changeling; -using Content.Shared.Chemistry.Components; -using Content.Shared.Cuffs.Components; -using Content.Shared.FixedPoint; -using Content.Shared.Humanoid; -using Content.Shared.IdentityManagement; -using Content.Shared.Mobs; -using Content.Shared.Mobs.Systems; -using Content.Shared.Nutrition.Components; -using Content.Shared.Store.Components; -using Robust.Server.Audio; -using Robust.Shared.Audio; -using Robust.Shared.Random; -using Content.Shared.Popups; -using Content.Shared.Damage; -using Robust.Shared.Prototypes; -using Content.Server.Body.Systems; -using Content.Shared.Actions; -using Content.Shared.Polymorph; -using Robust.Shared.Serialization.Manager; -using Content.Server.Actions; -using Content.Server.Humanoid; -using Content.Server.Polymorph.Components; -using Content.Shared.Chemistry.EntitySystems; -using Content.Server.Flash; -using Content.Server.Emp; -using Robust.Server.GameObjects; -using Content.Shared.Hands.EntitySystems; -using Content.Shared.Inventory; -using Content.Shared.Movement.Systems; -using Content.Shared.Damage.Systems; -using Content.Shared.Mind; -using Content.Server.Objectives.Components; -using Content.Server.Light.EntitySystems; -using Content.Shared.Eye.Blinding.Systems; -using Content.Shared.StatusEffect; -using Content.Shared.Movement.Pulling.Systems; -using Content.Shared.Cuffs; -using Content.Shared.Fluids; -using Content.Shared.Revolutionary.Components; -using Robust.Shared.Player; -using System.Numerics; -using Content.Shared.Camera; -using Robust.Shared.Timing; -using Content.Shared.Damage.Components; -using Content.Server.Gravity; -using Content.Shared.Mobs.Components; -using Content.Server.Stunnable; -using Content.Shared.Jittering; -using System.Linq; -using Content.Server.Damage.Systems; -using Content.Shared._RMC14.Xenonids.Screech; -using Content.Shared.Forensics.Components; -using Content.Shared.Radio; - -namespace Content.Server.Changeling; - -public sealed partial class ChangelingSystem : EntitySystem -{ - // this is one hell of a star wars intro text - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly SharedMindSystem _mind = default!; - [Dependency] private readonly IRobustRandom _rand = default!; - [Dependency] private readonly ActionsSystem _actions = default!; - [Dependency] private readonly StoreSystem _store = default!; - [Dependency] private readonly AudioSystem _audio = default!; - [Dependency] private readonly PolymorphSystem _polymorph = default!; - [Dependency] private readonly AlertsSystem _alerts = default!; - [Dependency] private readonly PopupSystem _popup = default!; - [Dependency] private readonly DoAfterSystem _doAfter = default!; - [Dependency] private readonly MobStateSystem _mobState = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly DamageableSystem _damage = default!; - [Dependency] private readonly BloodstreamSystem _blood = default!; - [Dependency] private readonly ISerializationManager _serialization = default!; - [Dependency] private readonly MetaDataSystem _metaData = default!; - [Dependency] private readonly HumanoidAppearanceSystem _humanoid = default!; - [Dependency] private readonly SharedSolutionContainerSystem _solution = default!; - [Dependency] private readonly TransformSystem _transform = default!; - [Dependency] private readonly FlashSystem _flash = default!; - [Dependency] private readonly EmpSystem _emp = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly PoweredLightSystem _light = default!; - [Dependency] private readonly ISharedPlayerManager _player = default!; - [Dependency] private readonly SharedCameraRecoilSystem _recoil = default!; - [Dependency] private readonly SharedHandsSystem _hands = default!; - [Dependency] private readonly InventorySystem _inventory = default!; - [Dependency] private readonly MovementSpeedModifierSystem _speed = default!; - [Dependency] private readonly StaminaSystem _stamina = default!; - [Dependency] private readonly GravitySystem _gravity = default!; - [Dependency] private readonly BlindableSystem _blindable = default!; - [Dependency] private readonly StatusEffectsSystem _statusEffect = default!; - [Dependency] private readonly PullingSystem _pull = default!; - [Dependency] private readonly SharedCuffableSystem _cuffs = default!; - [Dependency] private readonly SharedPuddleSystem _puddle = default!; - [Dependency] private readonly StunSystem _stun = default!; - [Dependency] private readonly SharedJitteringSystem _jitter = default!; - - public EntProtoId ArmbladePrototype = "ArmBladeChangeling"; - public EntProtoId FakeArmbladePrototype = "FakeArmBladeChangeling"; - - public EntProtoId ShieldPrototype = "ChangelingShield"; - public EntProtoId BoneShardPrototype = "ThrowingStarChangeling"; - - public EntProtoId ArmorPrototype = "ChangelingClothingOuterArmor"; - public EntProtoId ArmorHelmetPrototype = "ChangelingClothingHeadHelmet"; - - public EntProtoId SpacesuitPrototype = "ChangelingClothingOuterHardsuit"; - public EntProtoId SpacesuitHelmetPrototype = "ChangelingClothingHeadHelmetHardsuit"; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnStartup); - SubscribeLocalEvent(OnMobStateChange); - SubscribeLocalEvent(OnDamageChange); - SubscribeLocalEvent(OnComponentRemove); - - SubscribeAbilities(); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - if (!_timing.IsFirstTimePredicted) - return; - - foreach (var comp in EntityManager.EntityQuery()) - { - var uid = comp.Owner; - - if (_timing.CurTime < comp.UpdateTimer) - continue; - - comp.UpdateTimer = _timing.CurTime + TimeSpan.FromSeconds(comp.UpdateCooldown); - - Cycle(uid, comp); - } - } - public void Cycle(EntityUid uid, ChangelingComponent comp) - { - UpdateChemicals(uid, comp); - - comp.BiomassUpdateTimer += 1; - if (comp.BiomassUpdateTimer >= comp.BiomassUpdateCooldown) - { - comp.BiomassUpdateTimer = 0; - UpdateBiomass(uid, comp); - } - - UpdateAbilities(uid, comp); - } - - private void UpdateChemicals(EntityUid uid, ChangelingComponent comp, float? amount = null) - { - var chemicals = comp.Chemicals; - // either amount or regen - chemicals += amount ?? 1 + comp.BonusChemicalRegen; - comp.Chemicals = Math.Clamp(chemicals, 0, comp.MaxChemicals); - Dirty(uid, comp); - _alerts.ShowAlert(uid, "ChangelingChemicals"); - } - private void UpdateBiomass(EntityUid uid, ChangelingComponent comp, float? amount = null) - { - comp.Biomass += amount ?? 0; - comp.Biomass = Math.Clamp(comp.Biomass, 0, comp.MaxBiomass); - Dirty(uid, comp); - _alerts.ShowAlert(uid, "ChangelingBiomass"); - - var random = (int) _rand.Next(1, 3); - - if (comp.Biomass <= 0) - // game over, man - _damage.TryChangeDamage(uid, new DamageSpecifier(_proto.Index(AbsorbedDamageGroup), 50), true); - - if (comp.Biomass <= comp.MaxBiomass / 10) - { - // THE FUNNY ITCH IS REAL!! - comp.BonusChemicalRegen = 3f; - _popup.PopupEntity(Loc.GetString("popup-changeling-biomass-deficit-high"), uid, uid, PopupType.LargeCaution); - _jitter.DoJitter(uid, TimeSpan.FromSeconds(comp.BiomassUpdateCooldown), true, amplitude: 5, frequency: 10); - } - else if (comp.Biomass <= comp.MaxBiomass / 3) - { - // vomit blood - if (random == 1) - { - _stun.TryAddStunDuration(uid, TimeSpan.FromSeconds(1.5f)); - - var solution = new Solution(); - - var vomitAmount = 15f; - _blood.TryModifyBloodLevel(uid, -vomitAmount); - solution.AddReagent("Blood", vomitAmount); - - _puddle.TrySplashSpillAt(uid, Transform(uid).Coordinates, solution, out _); - - _popup.PopupEntity(Loc.GetString("disease-vomit", ("person", Identity.Entity(uid, EntityManager))), uid); - } - - // the funny itch is not real - if (random == 3) - { - _popup.PopupEntity(Loc.GetString("popup-changeling-biomass-deficit-medium"), uid, uid, PopupType.MediumCaution); - _jitter.DoJitter(uid, TimeSpan.FromSeconds(.5f), true, amplitude: 5, frequency: 10); - } - } - else if (comp.Biomass <= comp.MaxBiomass / 2 && random == 3) - { - if (random == 1) - _popup.PopupEntity(Loc.GetString("popup-changeling-biomass-deficit-low"), uid, uid, PopupType.SmallCaution); - } - else comp.BonusChemicalRegen = 0f; - } - private void UpdateAbilities(EntityUid uid, ChangelingComponent comp) - { - var stamina = EnsureComp(uid); - if (comp.StrainedMusclesActive) - { - _stamina.TakeStaminaDamage(uid, 7.5f, visual: false); - if (stamina.StaminaDamage >= stamina.CritThreshold || _gravity.IsWeightless(uid)) - ToggleStrainedMuscles(uid, comp); - } - - if (comp.StealthEnabled) - { - if (comp.Chemicals > comp.StealthDrain) - comp.Chemicals -= comp.StealthDrain; - else - { - _stamina.TakeStaminaDamage(uid, 35f, visual: false); - if (stamina.StaminaDamage >= stamina.CritThreshold) - ToggleChameleonSkin(uid, comp, false); - } - } - - if (comp.IsInStasis) - { - if (comp.Biomass > comp.StasisDrain) - comp.Biomass -= comp.StasisDrain; - else - { - comp.IsInStasis = false; - _mobState.ChangeMobState(uid, MobState.Dead); - } - } - } - - #region Helper Methods - - public void PlayMeatySound(EntityUid uid, ChangelingComponent comp) - { - var rand = _rand.Next(0, comp.SoundPool.Count - 1); - var sound = comp.SoundPool.ToArray()[rand]; - _audio.PlayPvs(sound, uid, AudioParams.Default.WithVolume(-3f)); - } - public void DoScreech(EntityUid uid, ChangelingComponent comp) - { - _audio.PlayPvs(comp.ShriekSound, uid); - - // Sunrise edit start - StartScreech(uid, playSound: false); - // Sunrise edit end - - var center = Transform(uid).MapPosition; - var gamers = Filter.Empty(); - gamers.AddInRange(center, comp.ShriekPower, _player, EntityManager); - - foreach (var gamer in gamers.Recipients) - { - if (gamer.AttachedEntity == null) - continue; - - var pos = Transform(gamer.AttachedEntity!.Value).WorldPosition; - var delta = center.Position - pos; - - if (delta.EqualsApprox(Vector2.Zero)) - delta = new(.01f, 0); - - _recoil.KickCamera(uid, -delta.Normalized()); - } - } - - /// - /// Check if a target is crit/dead or cuffed. For absorbing. - /// - public bool IsIncapacitated(EntityUid uid) - { - if (_mobState.IsIncapacitated(uid) - || (TryComp(uid, out var cuffs) && cuffs.CuffedHandCount > 0)) - return true; - - return false; - } - - public bool TryUseAbility(EntityUid uid, ChangelingComponent comp, BaseActionEvent action) - { - if (action.Handled) - return false; - - if (!TryComp(action.Action, out var lingAction)) - return false; - - if (comp.Biomass < 1 && lingAction.RequireBiomass) - { - _popup.PopupEntity(Loc.GetString("changeling-biomass-deficit"), uid, uid); - return false; - } - - if (!lingAction.UseInLesserForm && comp.IsInLesserForm) - { - _popup.PopupEntity(Loc.GetString("changeling-action-fail-lesserform"), uid, uid); - return false; - } - - if (comp.Chemicals < lingAction.ChemicalCost) - { - _popup.PopupEntity(Loc.GetString("changeling-chemicals-deficit"), uid, uid); - return false; - } - - if (lingAction.RequireAbsorbed > comp.TotalAbsorbedEntities) - { - var delta = lingAction.RequireAbsorbed - comp.TotalAbsorbedEntities; - _popup.PopupEntity(Loc.GetString("changeling-action-fail-absorbed", ("number", delta)), uid, uid); - return false; - } - - UpdateChemicals(uid, comp, -lingAction.ChemicalCost); - UpdateBiomass(uid, comp, -lingAction.BiomassCost); - - action.Handled = true; - - return true; - } - public bool TrySting(EntityUid uid, ChangelingComponent comp, EntityTargetActionEvent action, bool overrideMessage = false) - { - if (!TryUseAbility(uid, comp, action)) - return false; - - var target = action.Target; - - // can't get his dna if he doesn't have it! - if (!HasComp(target) || HasComp(target)) - { - _popup.PopupEntity(Loc.GetString("changeling-sting-extract-fail"), uid, uid); - return false; - } - - if (HasComp(target)) - { - _popup.PopupEntity(Loc.GetString("changeling-sting-fail-self", ("target", Identity.Entity(target, EntityManager))), uid, uid); - _popup.PopupEntity(Loc.GetString("changeling-sting-fail-ling"), target, target); - return false; - } - if (!overrideMessage) - _popup.PopupEntity(Loc.GetString("changeling-sting", ("target", Identity.Entity(target, EntityManager))), uid, uid); - return true; - } - public bool TryInjectReagents(EntityUid uid, List<(string, FixedPoint2)> reagents) - { - var solution = new Solution(); - foreach (var reagent in reagents) - solution.AddReagent(reagent.Item1, reagent.Item2); - - if (!_solution.TryGetInjectableSolution(uid, out var targetSolution, out var _)) - return false; - - if (!_solution.TryAddSolution(targetSolution.Value, solution)) - return false; - - return true; - } - public bool TryReagentSting(EntityUid uid, ChangelingComponent comp, EntityTargetActionEvent action, List<(string, FixedPoint2)> reagents) - { - var target = action.Target; - if (!TrySting(uid, comp, action)) - return false; - - if (!TryInjectReagents(target, reagents)) - return false; - - return true; - } - public bool TryToggleItem(EntityUid uid, EntProtoId proto, ChangelingComponent comp, string? clothingSlot = null) - { - if (!comp.Equipment.TryGetValue(proto.Id, out var item)) - { - item = Spawn(proto, Transform(uid).Coordinates); - if (clothingSlot != null) - { - if (!_inventory.TryEquip(uid, (EntityUid) item, clothingSlot, force: true)) - { - QueueDel(item); - return false; - } - comp.Equipment.Add(proto.Id, item); - return true; - } - else if (!_hands.TryForcePickupAnyHand(uid, (EntityUid) item)) - { - _popup.PopupEntity(Loc.GetString("changeling-fail-hands"), uid, uid); - QueueDel(item); - return false; - } - comp.Equipment.Add(proto.Id, item); - return true; - } - - QueueDel(item); - // assuming that it exists - comp.Equipment.Remove(proto.Id); - - return true; - } - - public bool TryStealDNA(EntityUid uid, EntityUid target, ChangelingComponent comp, bool countObjective = false) - { - if (!TryComp(target, out var appearance) - || !TryComp(target, out var metadata) - || !TryComp(target, out var dna) - || !TryComp(target, out var fingerprint)) - return false; - - foreach (var storedDNA in comp.AbsorbedDNA) - { - if (storedDNA.DNA != null && storedDNA.DNA == dna.DNA) - return false; - } - - if (dna.DNA == null) - return false; - - var data = new TransformData - { - Name = metadata.EntityName, - DNA = dna.DNA, - Appearance = appearance - }; - - if (fingerprint.Fingerprint != null) - data.Fingerprint = fingerprint.Fingerprint; - - if (comp.AbsorbedDNA.Count >= comp.MaxAbsorbedDNA) - _popup.PopupEntity(Loc.GetString("changeling-sting-extract-max"), uid, uid); - else comp.AbsorbedDNA.Add(data); - - if (countObjective - && _mind.TryGetMind(uid, out var mindId, out var mind) - && _mind.TryGetObjectiveComp(mindId, out var objective, mind)) - { - objective.DNAStolen += 1; - } - - comp.TotalStolenDNA++; - - return true; - } - - private ChangelingComponent? CopyChangelingComponent(EntityUid target, ChangelingComponent comp) - { - var newComp = EnsureComp(target); - newComp.AbsorbedDNA = comp.AbsorbedDNA; - newComp.AbsorbedDNAIndex = comp.AbsorbedDNAIndex; - - newComp.Chemicals = comp.Chemicals; - newComp.MaxChemicals = comp.MaxChemicals; - - newComp.Biomass = comp.Biomass; - newComp.MaxBiomass = comp.MaxBiomass; - - newComp.IsInLesserForm = comp.IsInLesserForm; - newComp.CurrentForm = comp.CurrentForm; - - newComp.TotalAbsorbedEntities = comp.TotalAbsorbedEntities; - newComp.TotalStolenDNA = comp.TotalStolenDNA; - - return comp; - } - private EntityUid? TransformEntity(EntityUid uid, TransformData? data = null, EntProtoId? protoId = null, ChangelingComponent? comp = null, bool persistentDna = false) - { - EntProtoId? pid = null; - - if (data != null) - { - if (!_proto.TryIndex(data.Appearance.Species, out var species)) - return null; - pid = species.Prototype; - } - else if (protoId != null) - pid = protoId; - else return null; - - var config = new PolymorphConfiguration() - { - Entity = (EntProtoId) pid, - TransferDamage = true, - Forced = true, - Inventory = PolymorphInventoryChange.Transfer, - RevertOnCrit = false, - RevertOnDeath = false - }; - var newUid = _polymorph.PolymorphEntity(uid, config); - - if (newUid == null) - return null; - - var newEnt = newUid.Value; - - if (data != null) - { - Comp(newEnt).Fingerprint = data.Fingerprint; - Comp(newEnt).DNA = data.DNA; - _humanoid.CloneAppearance(data.Appearance.Owner, newEnt); - _metaData.SetEntityName(newEnt, data.Name); - var message = Loc.GetString("changeling-transform-finish", ("target", data.Name)); - _popup.PopupEntity(message, newEnt, newEnt); - } - - RemCompDeferred(newEnt); - - if (comp != null) - { - // copy our stuff - var newLingComp = CopyChangelingComponent(newEnt, comp); - if (!persistentDna && data != null) - newLingComp?.AbsorbedDNA.Remove(data); - RemCompDeferred(uid); - - if (TryComp(uid, out var storeComp)) - { - var storeCompCopy = _serialization.CreateCopy(storeComp, notNullableOverride: true); - RemComp(newUid.Value); - EntityManager.AddComponent(newUid.Value, storeCompCopy); - } - } - - // exceptional comps check - // there's no foreach for types i believe so i gotta thug it out yandev style. - if (HasComp(uid)) - EnsureComp(newEnt); - if (HasComp(uid)) - EnsureComp(newEnt); - - QueueDel(uid); - - return newUid; - } - public bool TryTransform(EntityUid target, ChangelingComponent comp, bool sting = false, bool persistentDna = false) - { - if (HasComp(target)) - { - _popup.PopupEntity(Loc.GetString("changeling-transform-fail-absorbed"), target, target); - return false; - } - - var data = comp.SelectedForm; - - if (data == null) - { - _popup.PopupEntity(Loc.GetString("changeling-transform-fail-self"), target, target); - return false; - } - if (data == comp.CurrentForm) - { - _popup.PopupEntity(Loc.GetString("changeling-transform-fail-choose"), target, target); - return false; - } - - var locName = Identity.Entity(target, EntityManager); - EntityUid? newUid = null; - if (sting) - newUid = TransformEntity(target, data: data, persistentDna: persistentDna); - else newUid = TransformEntity(target, data: data, comp: comp, persistentDna: persistentDna); - - if (newUid != null) - { - PlayMeatySound((EntityUid) newUid, comp); - var loc = Loc.GetString("changeling-transform-others", ("user", locName)); - _popup.PopupEntity(loc, (EntityUid) newUid, PopupType.LargeCaution); - } - - return true; - } - - public void RemoveAllChangelingEquipment(EntityUid target, ChangelingComponent comp) - { - // check if there's no entities or all entities are null - if (comp.Equipment.Values.Count == 0 - || comp.Equipment.Values.All(ent => ent == null ? true : false)) - return; - - foreach (var equip in comp.Equipment.Values) - QueueDel(equip); - - PlayMeatySound(target, comp); - } - - #endregion - - #region Event Handlers - - private void OnStartup(EntityUid uid, ChangelingComponent comp, ref ComponentStartup args) - { - RemComp(uid); - RemComp(uid); - EnsureComp(uid); - - // Sunrise edit start - EnsureComp(uid); - // Sunrise edit end - - // add actions - foreach (var actionId in comp.BaseChangelingActions) - _actions.AddAction(uid, actionId); - - // making sure things are right in this world - comp.Chemicals = comp.MaxChemicals; - comp.Biomass = comp.MaxBiomass; - - // show alerts - UpdateChemicals(uid, comp, 0); - UpdateBiomass(uid, comp, 0); - - // make their blood unreal - _blood.ChangeBloodReagent(uid, "BloodChangeling"); - } - - private void OnMobStateChange(EntityUid uid, ChangelingComponent comp, ref MobStateChangedEvent args) - { - if (args.NewMobState == MobState.Dead) - RemoveAllChangelingEquipment(uid, comp); - } - - private void OnDamageChange(Entity ent, ref DamageChangedEvent args) - { - var target = args.Damageable; - - if (!TryComp(ent, out var mobState)) - return; - - if (mobState.CurrentState != MobState.Dead) - return; - - if (!args.DamageIncreased) - return; - - target.Damage.ClampMax(200); // we never die. UNLESS?? - } - - private void OnComponentRemove(Entity ent, ref ComponentRemove args) - { - RemoveAllChangelingEquipment(ent, ent.Comp); - } - - #endregion -} diff --git a/Content.Server/GameTicking/Rules/ChangelingRuleSystem.cs b/Content.Server/GameTicking/Rules/ChangelingRuleSystem.cs deleted file mode 100644 index 39d76b1c67..0000000000 --- a/Content.Server/GameTicking/Rules/ChangelingRuleSystem.cs +++ /dev/null @@ -1,123 +0,0 @@ -using Content.Server.Antag; -using Content.Server.GameTicking.Rules.Components; -using Content.Server.Mind; -using Content.Server.Objectives; -using Content.Shared.Changeling; -using Content.Shared.NPC.Prototypes; -using Content.Shared.NPC.Systems; -using Content.Shared.Roles; -using Content.Shared.Store; -using Content.Shared.Store.Components; -using Robust.Shared.Audio; -using Robust.Shared.Prototypes; -using System.Text; -using Content.Shared.Roles.Components; - -namespace Content.Server.GameTicking.Rules; - -public sealed partial class ChangelingRuleSystem : GameRuleSystem -{ - [Dependency] private readonly MindSystem _mind = default!; - [Dependency] private readonly AntagSelectionSystem _antag = default!; - [Dependency] private readonly SharedRoleSystem _role = default!; - [Dependency] private readonly NpcFactionSystem _npcFaction = default!; - [Dependency] private readonly ObjectivesSystem _objective = default!; - - public readonly SoundSpecifier BriefingSound = new SoundPathSpecifier("/Audio/Ambience/Antag/changeling_start.ogg"); - - public readonly ProtoId ChangelingPrototypeId = "Changeling"; - - public readonly ProtoId ChangelingFactionId = "Changeling"; - - public readonly ProtoId NanotrasenFactionId = "NanoTrasen"; - - public readonly ProtoId Currency = "EvolutionPoint"; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnSelectAntag); - SubscribeLocalEvent(OnTextPrepend); - } - - private void OnSelectAntag(EntityUid uid, ChangelingRuleComponent comp, ref AfterAntagEntitySelectedEvent args) - { - MakeChangeling(args.EntityUid, comp); - } - public bool MakeChangeling(EntityUid target, ChangelingRuleComponent rule) - { - if (!_mind.TryGetMind(target, out var mindId, out var mind)) - return false; - - // briefing - if (TryComp(target, out var metaData)) - { - var briefing = Loc.GetString("changeling-role-greeting", ("name", metaData?.EntityName ?? "Unknown")); - var briefingShort = Loc.GetString("changeling-role-greeting-short", ("name", metaData?.EntityName ?? "Unknown")); - - _antag.SendBriefing(target, briefing, Color.Yellow, BriefingSound); - _role.MindHasRole(mindId, out var changelingRole); - _role.MindHasRole(mindId, out var briefingComp); - if (changelingRole is not null && briefingComp is null) - { - AddComp(changelingRole.Value.Owner); - Comp(changelingRole.Value.Owner).Briefing = briefing; - } - } - // hivemind stuff - _npcFaction.RemoveFaction(target, NanotrasenFactionId, false); - _npcFaction.AddFaction(target, ChangelingFactionId); - - // make sure it's initial chems are set to max - EnsureComp(target); - - // add store - var store = EnsureComp(target); - foreach (var category in rule.StoreCategories) - store.Categories.Add(category); - store.CurrencyWhitelist.Add(Currency); - store.Balance.Add(Currency, 16); - - rule.ChangelingMinds.Add(mindId); - - foreach (var objective in rule.Objectives) - _mind.TryAddObjective(mindId, mind, objective); - - return true; - } - - private void OnTextPrepend(EntityUid uid, ChangelingRuleComponent comp, ref ObjectivesTextPrependEvent args) - { - var mostAbsorbedName = string.Empty; - var mostStolenName = string.Empty; - var mostAbsorbed = 0f; - var mostStolen = 0f; - - foreach (var ling in EntityQuery()) - { - if (!_mind.TryGetMind(ling.Owner, out var mindId, out var mind)) - continue; - - if (!TryComp(ling.Owner, out var metaData)) - continue; - - if (ling.TotalAbsorbedEntities > mostAbsorbed) - { - mostAbsorbed = ling.TotalAbsorbedEntities; - mostAbsorbedName = _objective.GetTitle((mindId, mind), metaData.EntityName); - } - if (ling.TotalStolenDNA > mostStolen) - { - mostStolen = ling.TotalStolenDNA; - mostStolenName = _objective.GetTitle((mindId, mind), metaData.EntityName); - } - } - - var sb = new StringBuilder(); - sb.AppendLine(Loc.GetString($"roundend-prepend-changeling-absorbed{(!string.IsNullOrWhiteSpace(mostAbsorbedName) ? "-named" : "")}", ("name", mostAbsorbedName), ("number", mostAbsorbed))); - sb.AppendLine(Loc.GetString($"roundend-prepend-changeling-stolen{(!string.IsNullOrWhiteSpace(mostStolenName) ? "-named" : "")}", ("name", mostStolenName), ("number", mostStolen))); - - args.Text = sb.ToString(); - } -} diff --git a/Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs index d6435d15d2..13891c1988 100644 --- a/Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs @@ -1,27 +1,7 @@ -using Content.Shared.NPC.Prototypes; -using Content.Shared.Roles; -using Content.Shared.Store; -using Robust.Shared.Audio; -using Robust.Shared.Prototypes; +namespace Content.Server.GameTicking.Rules.Components; -namespace Content.Server.GameTicking.Rules.Components; - -[RegisterComponent, Access(typeof(ChangelingRuleSystem))] -public sealed partial class ChangelingRuleComponent : Component -{ - public readonly List ChangelingMinds = new(); - - public readonly List> StoreCategories = new() - { - "ChangelingAbilityCombat", - "ChangelingAbilitySting", - "ChangelingAbilityUtility" - }; - - public readonly List> Objectives = new() - { - "ChangelingSurviveObjective", - "ChangelingStealDNAObjective", - "EscapeIdentityObjective" - }; -} +/// +/// Gamerule component for handling a changeling antagonist. +/// +[RegisterComponent] +public sealed partial class ChangelingRuleComponent : Component; diff --git a/Content.Server/Objectives/Components/AbsorbConditionComponent.cs b/Content.Server/Objectives/Components/AbsorbConditionComponent.cs deleted file mode 100644 index 764e90d763..0000000000 --- a/Content.Server/Objectives/Components/AbsorbConditionComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Content.Server.Changeling; -using Content.Server.Objectives.Systems; - -namespace Content.Server.Objectives.Components; - -[RegisterComponent, Access(typeof(ChangelingObjectiveSystem), typeof(ChangelingSystem))] -public sealed partial class AbsorbConditionComponent : Component -{ - [DataField, ViewVariables(VVAccess.ReadWrite)] - public float Absorbed = 0f; -} diff --git a/Content.Server/Objectives/Components/ImpersonateConditionComponent.cs b/Content.Server/Objectives/Components/ImpersonateConditionComponent.cs deleted file mode 100644 index f94d5db6f9..0000000000 --- a/Content.Server/Objectives/Components/ImpersonateConditionComponent.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Content.Server.Objectives.Systems; - -namespace Content.Server.Objectives.Components; - -/// -/// Requires that you have the same identity a target for a certain length of time before the round ends. -/// Obviously the agent id will work for this, but it's assumed that you will kill the target to prevent suspicion. -/// Depends on to function. -/// -[RegisterComponent, Access(typeof(ImpersonateConditionSystem))] -public sealed partial class ImpersonateConditionComponent : Component -{ - /// - /// Name that must match your identity for greentext. - /// This is stored once after the objective is assigned: - /// 1. to be a tiny bit more efficient - /// 2. to prevent the name possibly changing when borging or anything else and messing you up - /// - [DataField, ViewVariables(VVAccess.ReadWrite)] - public string? Name; - - /// - /// Mind this objective got assigned to, used to continiously checkd impersonation. - /// - [DataField, ViewVariables(VVAccess.ReadWrite)] - public EntityUid? MindId; - - public bool Completed = false; -} diff --git a/Content.Server/Objectives/Components/StealDNAConditionComponent.cs b/Content.Server/Objectives/Components/StealDNAConditionComponent.cs deleted file mode 100644 index 409ff8a30a..0000000000 --- a/Content.Server/Objectives/Components/StealDNAConditionComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Content.Server.Changeling; -using Content.Server.Objectives.Systems; - -namespace Content.Server.Objectives.Components; - -[RegisterComponent, Access(typeof(ChangelingObjectiveSystem), typeof(ChangelingSystem))] -public sealed partial class StealDNAConditionComponent : Component -{ - [DataField, ViewVariables(VVAccess.ReadWrite)] - public float DNAStolen = 0f; -} diff --git a/Content.Server/Objectives/Systems/ChangelingObjectiveSystem.cs b/Content.Server/Objectives/Systems/ChangelingObjectiveSystem.cs deleted file mode 100644 index 6633bb07de..0000000000 --- a/Content.Server/Objectives/Systems/ChangelingObjectiveSystem.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Content.Server.Objectives.Components; -using Content.Shared.Objectives.Components; - -namespace Content.Server.Objectives.Systems; - -public sealed partial class ChangelingObjectiveSystem : EntitySystem -{ - [Dependency] private readonly NumberObjectiveSystem _number = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnAbsorbGetProgress); - SubscribeLocalEvent(OnStealDNAGetProgress); - } - - private void OnAbsorbGetProgress(EntityUid uid, AbsorbConditionComponent comp, ref ObjectiveGetProgressEvent args) - { - var target = _number.GetTarget(uid); - if (target != 0) - args.Progress = MathF.Min(comp.Absorbed / target, 1f); - else args.Progress = 1f; - } - private void OnStealDNAGetProgress(EntityUid uid, StealDNAConditionComponent comp, ref ObjectiveGetProgressEvent args) - { - var target = _number.GetTarget(uid); - if (target != 0) - args.Progress = MathF.Min(comp.DNAStolen / target, 1f); - else args.Progress = 1f; - } -} diff --git a/Content.Server/Objectives/Systems/ImpersonateConditionSystem.cs b/Content.Server/Objectives/Systems/ImpersonateConditionSystem.cs deleted file mode 100644 index 086f462fb6..0000000000 --- a/Content.Server/Objectives/Systems/ImpersonateConditionSystem.cs +++ /dev/null @@ -1,76 +0,0 @@ -using Content.Server.Objectives.Components; -using Content.Server.Shuttles.Systems; -using Content.Shared.Cuffs.Components; -using Content.Shared.Mind; -using Content.Shared.Objectives.Components; - -namespace Content.Server.Objectives.Systems; - -/// -/// Handles escaping on the shuttle while being another person detection. -/// -public sealed class ImpersonateConditionSystem : EntitySystem -{ - [Dependency] private readonly TargetObjectiveSystem _target = default!; - [Dependency] private readonly EmergencyShuttleSystem _emergencyShuttle = default!; - [Dependency] private readonly SharedMindSystem _mind = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnAfterAssign); - SubscribeLocalEvent(OnGetProgress); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var comp)) - { - if (comp.Name == null || comp.MindId == null) - continue; - - if (!TryComp(comp.MindId, out var mind) || mind.OwnedEntity == null) - continue; - if (!TryComp(mind.CurrentEntity, out var metaData)) - continue; - - if (metaData.EntityName == comp.Name) - comp.Completed = true; - else comp.Completed = false; - } - } - - private void OnAfterAssign(EntityUid uid, ImpersonateConditionComponent comp, ref ObjectiveAfterAssignEvent args) - { - if (!_target.GetTarget(uid, out var target)) - return; - - if (!TryComp(target, out var targetMind) || targetMind.CharacterName == null) - return; - - comp.Name = targetMind.CharacterName; - comp.MindId = args.MindId; - } - - // copypasta from escape shittle objective. eh. - private void OnGetProgress(EntityUid uid, ImpersonateConditionComponent comp, ref ObjectiveGetProgressEvent args) - { - args.Progress = GetProgress(args.Mind, comp); - } - - public float GetProgress(MindComponent mind, ImpersonateConditionComponent comp) - { - // not escaping alive if you're deleted/dead - if (mind.OwnedEntity == null || _mind.IsCharacterDeadIc(mind)) - return 0f; - // You're not escaping if you're restrained! - if (TryComp(mind.OwnedEntity, out var cuffed) && cuffed.CuffedHandCount > 0) - return 0f; - - return (_emergencyShuttle.IsTargetEscaping(mind.OwnedEntity.Value) ? .5f : 0f) + (comp.Completed ? .5f : 0f); - } -} diff --git a/Content.Server/Roles/ChangelingRoleComponent.cs b/Content.Server/Roles/ChangelingRoleComponent.cs deleted file mode 100644 index 1c5e437e1a..0000000000 --- a/Content.Server/Roles/ChangelingRoleComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Content.Shared.Roles.Components; - -namespace Content.Server.Roles; - -[RegisterComponent] -public sealed partial class ChangelingRoleComponent : BaseMindRoleComponent -{ -} diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.Cartridges.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.Cartridges.cs deleted file mode 100644 index f4ed995409..0000000000 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.Cartridges.cs +++ /dev/null @@ -1,128 +0,0 @@ -using Content.Shared._Starlight.Weapon.Components; -using Content.Shared.Damage; -using Content.Shared.Damage.Events; -using Content.Shared.Examine; -using Content.Shared.FixedPoint; -using Content.Shared.Projectiles; -using Content.Shared.Weapons.Ranged; -using Content.Shared.Weapons.Ranged.Components; -using Robust.Shared.Prototypes; -using Robust.Shared.Toolshed.Commands.Values; -using Robust.Shared.Utility; - -namespace Content.Server.Weapons.Ranged.Systems; - -public sealed partial class GunSystem -{ - protected override void InitializeCartridge() - { - base.InitializeCartridge(); - SubscribeLocalEvent(OnCartridgeExamine); - SubscribeLocalEvent(OnCartridgeDamageExamine); - - SubscribeLocalEvent(OnHitScanCartridgeExamine); - SubscribeLocalEvent(OnHitScanCartridgeDamageExamine); - } - - - private void OnCartridgeDamageExamine(EntityUid uid, CartridgeAmmoComponent component, ref DamageExamineEvent args) - { - var damageSpec = GetProjectileDamage(component.Prototype); - - if (damageSpec == null) - return; - - _damageExamine.AddDamageExamine(args.Message, Damageable.ApplyUniversalAllModifiers(damageSpec), Loc.GetString("damage-projectile")); - } - - private DamageSpecifier? GetProjectileDamage(string proto) - { - if (!ProtoManager.TryIndex(proto, out var entityProto)) - return null; - - if (entityProto.Components - .TryGetValue(Factory.GetComponentName(), out var projectile)) - { - var p = (ProjectileComponent) projectile.Component; - - if (!p.Damage.Empty) - { - return p.Damage * Damageable.UniversalProjectileDamageModifier; - } - } - - return null; - } - - private void OnCartridgeExamine(EntityUid uid, CartridgeAmmoComponent component, ExaminedEvent args) - { - if (component.Spent) - { - args.PushMarkup(Loc.GetString("gun-cartridge-spent")); - } - else - { - args.PushMarkup(Loc.GetString("gun-cartridge-unspent")); - } - } - - private void OnHitScanCartridgeDamageExamine(EntityUid uid, HitScanCartridgeAmmoComponent component, ref DamageExamineEvent args) { - var damageSpec = GetHitscanProjectileDamage(component.Hitscan); - if (damageSpec == null) - return; - - _damageExamine.AddDamageExamine(args.Message, Damageable.ApplyUniversalAllModifiers(damageSpec), Loc.GetString("damage-projectile")); - - var ArmorMessage = GetArmorPenetrationExplain(component.Hitscan); - - args.Message.AddMessage(ArmorMessage); - - } - - private FormattedMessage GetArmorPenetrationExplain(string proto) { - var msg = new FormattedMessage(); - if (!ProtoManager.TryIndex(proto,out var entityProto)) - return msg; - - if (entityProto.ArmorPenetration == 0) { - return msg; - } - if (entityProto.ArmorPenetration > 0){ - msg.PushNewline(); - msg.TryAddMarkup(Loc.GetString("damage-examine-penetration-positive",("penetration", MathF.Round(entityProto.ArmorPenetration * 100, 1))), out var error); - } - if(entityProto.ArmorPenetration < 0) { - msg.PushNewline(); - msg.TryAddMarkup(Loc.GetString("damage-examine-penetration-negative",("penetration", MathF.Round(entityProto.ArmorPenetration * -100, 1))), out var error); - } - return msg; - } - - private DamageSpecifier? GetHitscanProjectileDamage(string proto) { - if (!ProtoManager.TryIndex(proto,out var entityProto)) - return null; - - if (entityProto.Damage == null) { - return null; - } - - if (!entityProto.Damage.Empty) { - return entityProto.Damage * Damageable.UniversalHitscanDamageModifier; - } - - return null; - } - - private void OnHitScanCartridgeExamine(EntityUid uid, HitScanCartridgeAmmoComponent component, ExaminedEvent args) - { - if (component.Spent) - { - args.PushMarkup(Loc.GetString("gun-cartridge-spent")); - } - else - { - args.PushMarkup(Loc.GetString("gun-cartridge-unspent")); - } - } - -} diff --git a/Content.Server/_Sunrise/NPC/HTN/CloseBoltOperator.cs b/Content.Server/_Sunrise/NPC/HTN/CloseBoltOperator.cs index 5a5491dcda..ae75483231 100644 --- a/Content.Server/_Sunrise/NPC/HTN/CloseBoltOperator.cs +++ b/Content.Server/_Sunrise/NPC/HTN/CloseBoltOperator.cs @@ -15,7 +15,6 @@ namespace Content.Server._Sunrise.NPC.HTN; public sealed partial class CloseBoltOperator : HTNOperator { [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly HandsSystem _handsSystem = default!; private GunSystem _gunSystem = default!; [DataField("shutdownState")] @@ -34,7 +33,9 @@ public sealed partial class CloseBoltOperator : HTNOperator if (!_entManager.TryGetComponent(owner, out var hands)) return HTNOperatorStatus.Failed; - var heldEntity = _handsSystem.GetActiveItem((owner, hands)); + var handsSystem = _entManager.System(); + + var heldEntity = handsSystem.GetActiveItem((owner, hands)); if (heldEntity == null) return HTNOperatorStatus.Failed; diff --git a/Content.Server/_Sunrise/NPC/HTN/IsBoltOpenPrecondition.cs b/Content.Server/_Sunrise/NPC/HTN/IsBoltOpenPrecondition.cs index 12a74c0953..7dc99559d7 100644 --- a/Content.Server/_Sunrise/NPC/HTN/IsBoltOpenPrecondition.cs +++ b/Content.Server/_Sunrise/NPC/HTN/IsBoltOpenPrecondition.cs @@ -9,7 +9,6 @@ namespace Content.Server._Sunrise.NPC.HTN; public sealed partial class IsBoltOpenPrecondition : HTNPrecondition { [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly HandsSystem _handsSystem = default!; public override bool IsMet(NPCBlackboard blackboard) { @@ -17,7 +16,9 @@ public sealed partial class IsBoltOpenPrecondition : HTNPrecondition if (!_entManager.TryGetComponent(owner, out var hands)) return false; - var heldEntity = _handsSystem.GetActiveItem((owner, hands)); + var handsSystem = _entManager.System(); + + var heldEntity = handsSystem.GetActiveItem((owner, hands)); if (!_entManager.TryGetComponent(heldEntity, out var chamber)) return false; diff --git a/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalComponent.cs b/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalComponent.cs index 21d1c82f23..6dc361be9b 100644 --- a/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalComponent.cs +++ b/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalComponent.cs @@ -13,12 +13,12 @@ namespace Content.Server._Sunrise.ReplacementVocal; [RegisterComponent] public sealed partial class ReplacementVocalComponent : Component { - [DataField(customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer), required: true)] + [DataField(required: true)] public Dictionary> Vocal; [DataField] public HashSet AddedEmotes = new(); - [DataField(customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer))] + [DataField] public Dictionary>? PreviousVocal; } diff --git a/Content.Shared/Changeling/AbsorbableComponent.cs b/Content.Shared/Changeling/AbsorbableComponent.cs deleted file mode 100644 index 57fa59d1b1..0000000000 --- a/Content.Shared/Changeling/AbsorbableComponent.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Changeling; - -/// -/// Component that indicates that a person can be absorbed by a changeling. -/// -[RegisterComponent, NetworkedComponent] -public sealed partial class AbsorbableComponent : Component -{ - -} diff --git a/Content.Shared/Changeling/AbsorbedComponent.cs b/Content.Shared/Changeling/AbsorbedComponent.cs deleted file mode 100644 index 36bed5222a..0000000000 --- a/Content.Shared/Changeling/AbsorbedComponent.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Changeling; - - -/// -/// Component that indicates that a person's DNA has been absorbed by a changeling. -/// -[RegisterComponent, NetworkedComponent, Access(typeof(AbsorbedSystem))] -public sealed partial class AbsorbedComponent : Component -{ - -} diff --git a/Content.Shared/Changeling/AbsorbedSystem.cs b/Content.Shared/Changeling/AbsorbedSystem.cs deleted file mode 100644 index 0496dc63be..0000000000 --- a/Content.Shared/Changeling/AbsorbedSystem.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Content.Shared.Examine; -using Content.Shared.Mobs; - -namespace Content.Shared.Changeling; - -public sealed partial class AbsorbedSystem : EntitySystem -{ - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnExamine); - SubscribeLocalEvent(OnMobStateChange); - } - - private void OnExamine(Entity ent, ref ExaminedEvent args) - { - args.PushMarkup(Loc.GetString("changeling-absorb-onexamine")); - } - - private void OnMobStateChange(Entity ent, ref MobStateChangedEvent args) - { - // in case one somehow manages to dehusk someone - if (args.NewMobState != MobState.Dead) - RemComp(ent); - } -} diff --git a/Content.Shared/Changeling/Changeling.Actions.cs b/Content.Shared/Changeling/Changeling.Actions.cs deleted file mode 100644 index ef2406b405..0000000000 --- a/Content.Shared/Changeling/Changeling.Actions.cs +++ /dev/null @@ -1,69 +0,0 @@ -using Content.Shared.Actions; -using Robust.Shared.GameStates; - -namespace Content.Shared.Changeling; - -[RegisterComponent, NetworkedComponent] -public sealed partial class ChangelingActionComponent : Component -{ - [DataField] public bool RequireBiomass = true; - - [DataField] public float ChemicalCost = 0; - - [DataField] public float BiomassCost = 0; - - [DataField] public bool UseInLesserForm = false; - - [DataField] public float RequireAbsorbed = 0; -} - -#region Events - Basic - -public sealed partial class OpenEvolutionMenuEvent : InstantActionEvent { } -public sealed partial class AbsorbDNAEvent : EntityTargetActionEvent { } -public sealed partial class StingExtractDNAEvent : EntityTargetActionEvent { } -public sealed partial class ChangelingTransformCycleEvent : InstantActionEvent { } -public sealed partial class ChangelingTransformEvent : InstantActionEvent { } -public sealed partial class EnterStasisEvent : InstantActionEvent { } -public sealed partial class ExitStasisEvent : InstantActionEvent { } - -#endregion - -#region Events - Combat - -public sealed partial class ToggleArmbladeEvent : InstantActionEvent { } -public sealed partial class CreateBoneShardEvent : InstantActionEvent { } -public sealed partial class ToggleChitinousArmorEvent : InstantActionEvent { } -public sealed partial class ToggleOrganicShieldEvent : InstantActionEvent { } -public sealed partial class ShriekDissonantEvent : InstantActionEvent { } -public sealed partial class ShriekResonantEvent : InstantActionEvent { } -public sealed partial class ToggleStrainedMusclesEvent : InstantActionEvent { } - -#endregion - -#region Events - Sting - -public sealed partial class StingBlindEvent : EntityTargetActionEvent { } -public sealed partial class StingCryoEvent : EntityTargetActionEvent { } -public sealed partial class StingLethargicEvent : EntityTargetActionEvent { } -public sealed partial class StingMuteEvent : EntityTargetActionEvent { } -public sealed partial class StingFakeArmbladeEvent : EntityTargetActionEvent { } -public sealed partial class StingTransformEvent : EntityTargetActionEvent { } - -#endregion - -#region Events - Utility - -public sealed partial class ActionAnatomicPanaceaEvent : InstantActionEvent { } -public sealed partial class ActionAugmentedEyesightEvent : InstantActionEvent { } -public sealed partial class ActionBiodegradeEvent : InstantActionEvent { } -public sealed partial class ActionChameleonSkinEvent : InstantActionEvent { } -public sealed partial class ActionEphedrineOverdoseEvent : InstantActionEvent { } -public sealed partial class ActionFleshmendEvent : InstantActionEvent { } -public sealed partial class ActionLastResortEvent : InstantActionEvent { } -public sealed partial class ActionLesserFormEvent : InstantActionEvent { } -public sealed partial class ActionSpacesuitEvent : InstantActionEvent { } -public sealed partial class ActionHivemindAccessEvent : InstantActionEvent { } -public sealed partial class ActionContortBodyEvent : InstantActionEvent { } - -#endregion diff --git a/Content.Shared/Changeling/Changeling.DoAfter.cs b/Content.Shared/Changeling/Changeling.DoAfter.cs deleted file mode 100644 index 4138052954..0000000000 --- a/Content.Shared/Changeling/Changeling.DoAfter.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Content.Shared.DoAfter; -using Robust.Shared.Serialization; - -namespace Content.Shared.Changeling; - -[Serializable, NetSerializable] -public sealed partial class AbsorbDNADoAfterEvent : SimpleDoAfterEvent { } diff --git a/Content.Shared/Changeling/HivemindComponent.cs b/Content.Shared/Changeling/HivemindComponent.cs deleted file mode 100644 index bc4e821726..0000000000 --- a/Content.Shared/Changeling/HivemindComponent.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Changeling; - -/// -/// Used for identifying other changelings. -/// Indicates that a changeling has bought the hivemind access ability. -/// -[RegisterComponent, NetworkedComponent] -public sealed partial class HivemindComponent : Component -{ -} diff --git a/Content.Shared/Chemistry/Components/SolutionRegenerationComponent.cs b/Content.Shared/Chemistry/Components/SolutionRegenerationComponent.cs index 01898b85a8..49e6e22e69 100644 --- a/Content.Shared/Chemistry/Components/SolutionRegenerationComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionRegenerationComponent.cs @@ -10,7 +10,7 @@ namespace Content.Shared.Chemistry.Components; /// Passively increases a solution's quantity of a reagent. /// [RegisterComponent, AutoGenerateComponentPause, AutoGenerateComponentState, NetworkedComponent] -[Access(typeof(SolutionRegenerationSystem), typeof(SolutionRegenerationSwitcherSystem))] // Sunrise-Edit +[Access(typeof(SolutionRegenerationSystem), typeof(SharedSolutionRegenerationSwitcherSystem))] // Sunrise-Edit public sealed partial class SolutionRegenerationComponent : Component { /// diff --git a/Content.Shared/Medical/Healing/HealingSystem.cs b/Content.Shared/Medical/Healing/HealingSystem.cs index f68eeac153..e473d48b9f 100644 --- a/Content.Shared/Medical/Healing/HealingSystem.cs +++ b/Content.Shared/Medical/Healing/HealingSystem.cs @@ -2,7 +2,6 @@ using Content.Shared.Administration.Logs; using Content.Shared.Body.Components; using Content.Shared.Body.Systems; using System.Linq; -using Content.Server.Medical.Components; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; diff --git a/Content.Shared/Medical/HealingComponent.cs b/Content.Shared/Medical/HealingComponent.cs deleted file mode 100644 index 13a2731d02..0000000000 --- a/Content.Shared/Medical/HealingComponent.cs +++ /dev/null @@ -1,73 +0,0 @@ -using Content.Shared.Chemistry.Reagent; -using Content.Shared.Damage; -using Content.Shared.Damage.Prototypes; -using Robust.Shared.Audio; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; - -namespace Content.Server.Medical.Components -{ - /// - /// Applies a damage change to the target when used in an interaction. - /// - [RegisterComponent] - public sealed partial class HealingComponent : Component - { - [DataField("damage", required: true)] - [ViewVariables(VVAccess.ReadWrite)] - public DamageSpecifier Damage = default!; - - /// - /// This should generally be negative, - /// since you're, like, trying to heal damage. - /// - [DataField("bloodlossModifier")] - [ViewVariables(VVAccess.ReadWrite)] - public float BloodlossModifier = 0.0f; - - /// - /// Restore missing blood. - /// - [DataField("ModifyBloodLevel")] - [ViewVariables(VVAccess.ReadWrite)] - public float ModifyBloodLevel = 0.0f; - - /// - /// The supported damage types are specified using a s. For a - /// HealingComponent this filters what damage container type this component should work on. If null, - /// all damage container types are supported. - /// - [DataField("damageContainers", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List? DamageContainers; - - /// - /// How long it takes to apply the damage. - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("delay")] - public float Delay = 3f; - - /// - /// Delay multiplier when healing yourself. - /// - [DataField("selfHealPenaltyMultiplier")] - public float SelfHealPenaltyMultiplier = 3f; - - /// - /// Sound played on healing begin - /// - [DataField("healingBeginSound")] - public SoundSpecifier? HealingBeginSound = null; - - /// - /// Sound played on healing end - /// - [DataField("healingEndSound")] - public SoundSpecifier? HealingEndSound = null; - - [DataField] - public bool SolutionDrain = false; - - [DataField] - public List ReagentsToDrain = new(); - } -} diff --git a/Content.Shared/Medical/SharedHealingSystem.cs b/Content.Shared/Medical/SharedHealingSystem.cs index 36c0f89a89..47056a6025 100644 --- a/Content.Shared/Medical/SharedHealingSystem.cs +++ b/Content.Shared/Medical/SharedHealingSystem.cs @@ -1,6 +1,6 @@ using System.Linq; -using Content.Server.Medical.Components; using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Medical.Healing; namespace Content.Shared.Medical; diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Cartridges.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Cartridges.cs index dcc9a5689a..fa66f77f2a 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Cartridges.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Cartridges.cs @@ -1,3 +1,4 @@ +using Content.Shared._Starlight.Weapon.Components; using Content.Shared.Damage; using Content.Shared.Damage.Events; using Content.Shared.Damage.Systems; @@ -5,6 +6,7 @@ using Content.Shared.Examine; using Content.Shared.Projectiles; using Content.Shared.Weapons.Ranged.Components; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Shared.Weapons.Ranged.Systems; @@ -17,6 +19,9 @@ public abstract partial class SharedGunSystem { SubscribeLocalEvent(OnCartridgeExamine); SubscribeLocalEvent(OnCartridgeDamageExamine); + + SubscribeLocalEvent(OnHitScanCartridgeExamine); + SubscribeLocalEvent(OnHitScanCartridgeDamageExamine); } private void OnCartridgeExamine(Entity ent, ref ExaminedEvent args) @@ -26,6 +31,13 @@ public abstract partial class SharedGunSystem : Loc.GetString("gun-cartridge-unspent")); } + private void OnHitScanCartridgeExamine(Entity ent, ref ExaminedEvent args) + { + args.PushMarkup(ent.Comp.Spent + ? Loc.GetString("gun-cartridge-spent") + : Loc.GetString("gun-cartridge-unspent")); + } + private void OnCartridgeDamageExamine(EntityUid uid, CartridgeAmmoComponent component, ref DamageExamineEvent args) { var damageSpec = GetProjectileDamage(component.Prototype); @@ -36,16 +48,68 @@ public abstract partial class SharedGunSystem _damageExamine.AddDamageExamine(args.Message, Damageable.ApplyUniversalAllModifiers(damageSpec), Loc.GetString("damage-projectile")); } - private DamageSpecifier? GetProjectileDamage(EntProtoId proto) + private DamageSpecifier? GetProjectileDamage(string proto) { - if (!ProtoManager.TryIndex(proto, out var entityProto)) + if (!ProtoManager.TryIndex(proto, out var entityProto)) return null; - if (!entityProto.TryGetComponent(out var projectile, Factory)) + if (entityProto.Components + .TryGetValue(Factory.GetComponentName(), out var projectile)) + { + var p = (ProjectileComponent) projectile.Component; + + if (!p.Damage.Empty) + { + return p.Damage * Damageable.UniversalProjectileDamageModifier; + } + } + + return null; + } + + private void OnHitScanCartridgeDamageExamine(EntityUid uid, HitScanCartridgeAmmoComponent component, ref DamageExamineEvent args) { + var damageSpec = GetHitscanProjectileDamage(component.Hitscan); + if (damageSpec == null) + return; + + _damageExamine.AddDamageExamine(args.Message, Damageable.ApplyUniversalAllModifiers(damageSpec), Loc.GetString("damage-projectile")); + + var ArmorMessage = GetArmorPenetrationExplain(component.Hitscan); + + args.Message.AddMessage(ArmorMessage); + + } + + private FormattedMessage GetArmorPenetrationExplain(string proto) { + var msg = new FormattedMessage(); + if (!ProtoManager.TryIndex(proto,out var entityProto)) + return msg; + + if (entityProto.ArmorPenetration == 0) { + return msg; + } + if (entityProto.ArmorPenetration > 0){ + msg.PushNewline(); + msg.TryAddMarkup(Loc.GetString("damage-examine-penetration-positive",("penetration", MathF.Round(entityProto.ArmorPenetration * 100, 1))), out var error); + } + if(entityProto.ArmorPenetration < 0) { + msg.PushNewline(); + msg.TryAddMarkup(Loc.GetString("damage-examine-penetration-negative",("penetration", MathF.Round(entityProto.ArmorPenetration * -100, 1))), out var error); + } + return msg; + } + + private DamageSpecifier? GetHitscanProjectileDamage(string proto) { + if (!ProtoManager.TryIndex(proto,out var entityProto)) return null; - if (!projectile.Damage.Empty) - return projectile.Damage * Damageable.UniversalProjectileDamageModifier; + if (entityProto.Damage == null) { + return null; + } + + if (!entityProto.Damage.Empty) { + return entityProto.Damage * Damageable.UniversalHitscanDamageModifier; + } return null; } diff --git a/Content.Shared/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs b/Content.Shared/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs deleted file mode 100644 index 06ebb52b6e..0000000000 --- a/Content.Shared/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs +++ /dev/null @@ -1,79 +0,0 @@ -using Content.Shared.Chemistry.Components; -using Content.Shared.Chemistry.EntitySystems; -using Content.Shared.Chemistry.Reagent; -using Content.Shared.Popups; - -namespace Content.Shared._Sunrise.SolutionRegenerationSwitcher -{ - public sealed class SolutionRegenerationSwitcherSystem : SharedSolutionRegenerationSwitcherSystem - { - [Dependency] private readonly SharedSolutionContainerSystem _solutionSystem = null!; - [Dependency] private readonly SharedPopupSystem _popups = null!; - - private ISawmill _sawmill = null!; - - public override void Initialize() - { - base.Initialize(); - - _sawmill = Logger.GetSawmill("chemistry"); - } - - protected override void SwitchToNextReagent(EntityUid uid, - SolutionRegenerationSwitcherComponent component, - EntityUid user) - { - component.CurrentIndex = (component.CurrentIndex + 1) % component.Options.Count; - var nextReagent = component.Options[component.CurrentIndex]; - SwitchReagent(uid, nextReagent, component, user); - } - - protected override void SwitchReagent(EntityUid uid, - ReagentQuantity reagent, - SolutionRegenerationSwitcherComponent component, - EntityUid user) - { - if (!TryComp(uid, out var solutionRegenerationComponent)) - { - _sawmill.Warning($"{ToPrettyString(uid)} has no SolutionRegenerationComponent."); - return; - } - - if (!_solutionSystem.TryGetSolution(uid, solutionRegenerationComponent.SolutionName, out var solution)) - { - _sawmill.Error($"Can't get SolutionRegeneration.Solution for {ToPrettyString(uid)}"); - return; - } - - if (!TryComp(uid, out var solutionRegeneration)) - { - _sawmill.Error($"Entity {ToPrettyString(uid)} not have SolutionRegenerationComponent"); - return; - } - - if (solutionRegeneration.Generated.ContainsReagent(reagent.Reagent)) - { - _popups.PopupEntity(Loc.GetString("solution-regeneration-switcher-already-select"), user, user); - return; - } - - // Empty out the current solution. - if (!component.KeepSolution) - _solutionSystem.RemoveAllSolution(solution.Value); - - solutionRegeneration.ChangeGenerated(reagent); - - if (!PrototypeManager.TryIndex(reagent.Reagent.Prototype, out ReagentPrototype? proto)) - { - _sawmill.Error( - $"Can't get get reagent prototype {reagent.Reagent.Prototype} for {ToPrettyString(uid)}"); - return; - } - - _popups.PopupEntity( - Loc.GetString("solution-regeneration-switcher-switched", ("reagent", proto.LocalizedName)), - user, - user); - } - } -} diff --git a/Resources/Audio/Ambience/Antag/changeling_start.ogg b/Resources/Audio/Ambience/Antag/changeling_start.ogg deleted file mode 100644 index 1132ccca29..0000000000 Binary files a/Resources/Audio/Ambience/Antag/changeling_start.ogg and /dev/null differ diff --git a/Resources/Audio/Effects/changeling_shriek.ogg b/Resources/Audio/Effects/changeling_shriek.ogg deleted file mode 100644 index e6daf79555..0000000000 Binary files a/Resources/Audio/Effects/changeling_shriek.ogg and /dev/null differ diff --git a/Resources/Locale/en-US/changeling/changeling.ftl b/Resources/Locale/en-US/changeling/changeling.ftl index d304385848..0a35678e41 100644 --- a/Resources/Locale/en-US/changeling/changeling.ftl +++ b/Resources/Locale/en-US/changeling/changeling.ftl @@ -1,5 +1,4 @@ -roles-antag-changeling-name = Changeling -roles-antag-changeling-objective = A intelligent predator that assumes the identities of its victims. +roles-antag-changeling-objective = A intelligent predator that assumes the identities of its victims. changeling-devour-attempt-failed-rotting = This corpse has only rotted biomass. changeling-devour-attempt-failed-protected = This victim's biomass is protected. diff --git a/Resources/Locale/ru-RU/_strings/prototypes/roles/antags.ftl b/Resources/Locale/ru-RU/_strings/prototypes/roles/antags.ftl index a41d47812c..e4f151103e 100644 --- a/Resources/Locale/ru-RU/_strings/prototypes/roles/antags.ftl +++ b/Resources/Locale/ru-RU/_strings/prototypes/roles/antags.ftl @@ -30,7 +30,6 @@ roles-antag-thief-name = Вор roles-antag-thief-objective = Пополните свою личную коллекцию имуществом Nanotrasen, не прибегая к насилию. roles-antag-dragon-name = Космический дракон roles-antag-dragon-objective = Создайте армию карпов для захвата квадранта. -roles-antag-changeling-name = Генокрад roles-antag-changeling-description = Используйте свои способности к превращению, чтобы выполнить свои задачи. roles-antag-terminator-name = Терминатор roles-antag-terminator-objective = Убейте цель любой ценой, от этого зависит будущее. diff --git a/Resources/Maps/_Sunrise/Nonstations/lavaland_outpost.yml b/Resources/Maps/_Sunrise/Nonstations/lavaland_outpost.yml index e4de22baa3..0ef426df86 100644 --- a/Resources/Maps/_Sunrise/Nonstations/lavaland_outpost.yml +++ b/Resources/Maps/_Sunrise/Nonstations/lavaland_outpost.yml @@ -10982,8 +10982,6 @@ entities: - type: Transform pos: -36.5,-14.5 parent: 1 - - type: Advertise - enabled: False - proto: VendingMachineMedical entities: - uid: 1438 @@ -10991,8 +10989,6 @@ entities: - type: Transform pos: -35.5,-5.5 parent: 1 - - type: Advertise - enabled: False - proto: VendingMachineSalvage entities: - uid: 1525 diff --git a/Resources/Prototypes/Actions/changeling.yml b/Resources/Prototypes/Actions/changeling.yml index 94485d0c8d..273bb8ed6b 100644 --- a/Resources/Prototypes/Actions/changeling.yml +++ b/Resources/Prototypes/Actions/changeling.yml @@ -1,5 +1,3 @@ -# abilities - - type: entity parent: BaseAction id: ActionRetractableItemArmBlade @@ -22,602 +20,3 @@ retractSounds: collection: gib # Placeholder -# starting -- type: entity - parent: BaseAction - id: ActionEvolutionMenu - name: Open evolution menu - description: Opens the evolution menu. - categories: [ HideSpawnMenu ] - components: - - type: Action - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: evolution_menu - - type: ChangelingAction - requireBiomass: false - useInLesserForm: true - - type: InstantAction - event: !type:OpenEvolutionMenuEvent {} - -- type: entity - parent: BaseAction - id: ActionAbsorbDNA - name: Absorb DNA - description: Absorb the target's DNA, husking them in the process. Costs 25 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 5 - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: absorb_dna - - type: ChangelingAction - chemicalCost: 5 - requireBiomass: false - useInLesserForm: true - - type: TargetAction - interactOnMiss: false - - type: EntityTargetAction - canTargetSelf: false - whitelist: - components: - - Body - event: !type:AbsorbDNAEvent {} - -- type: entity - parent: BaseAction - id: ActionStingExtractDNA - name: Extract DNA sting - description: Steal your target's genetic information. Costs 25 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: sting_extractdna - - type: ChangelingAction - chemicalCost: 15 - useInLesserForm: true - - type: TargetAction - interactOnMiss: false - - type: EntityTargetAction - canTargetSelf: false - whitelist: - components: - - Body - event: !type:StingExtractDNAEvent {} - -- type: entity - parent: BaseAction - id: ActionChangelingTransformCycle - name: Cycle DNA - description: Cycle your available DNA. - categories: [ HideSpawnMenu ] - components: - - type: Action - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: transform_cycle - - type: ChangelingAction - requireBiomass: false - useInLesserForm: true - - type: InstantAction - event: !type:ChangelingTransformCycleEvent {} - -- type: entity - parent: BaseAction - id: ActionChangelingTransform - name: Transform - description: Transform into another humanoid. Doesn't come with clothes. Costs 5 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 5 - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: transform - - type: ChangelingAction - chemicalCost: 5 - useInLesserForm: true - - type: InstantAction - event: !type:ChangelingTransformEvent {} - -- type: entity - parent: BaseAction - id: ActionEnterStasis - name: Enter regenerative stasis - description: Fake your death and start regenerating. Drains all your chemicals. Consumes biomass. - categories: [ HideSpawnMenu ] - components: - - type: Action - checkCanInteract: false - checkConsciousness: false - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: stasis_enter - - type: ChangelingAction - biomassCost: 1 - useInLesserForm: true - - type: InstantAction - event: !type:EnterStasisEvent {} - -- type: entity - parent: BaseAction - id: ActionExitStasis - name: Exit stasis - description: Rise from the dead with full health. Costs 60 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - checkCanInteract: false - checkConsciousness: false - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: stasis_exit - - type: ChangelingAction - chemicalCost: 50 - useInLesserForm: true - - type: InstantAction - event: !type:ExitStasisEvent {} - -# combat -- type: entity - parent: BaseAction - id: ActionToggleArmblade - name: Toggle Arm Blade - description: Reform one of your arms into a strong blade, composed of bone and flesh. Retract on secondary use. Costs 15 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 2 - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: armblade - - type: ChangelingAction - chemicalCost: 15 - # requireAbsorbed: 1 - - type: InstantAction - event: !type:ToggleArmbladeEvent {} - -- type: entity - parent: BaseAction - id: ActionCreateBoneShard - name: Form Bone Shard - description: Break off shards of your bone and shape them into a throwing star. Costs 15 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 1 - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: bone_shard - - type: ChangelingAction - chemicalCost: 15 - - type: InstantAction - event: !type:CreateBoneShardEvent {} - -- type: entity - parent: BaseAction - id: ActionToggleChitinousArmor - name: Toggle Armor - description: Inflate your body into an all-consuming chitinous mass of armor. Costs 25 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 2 - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: chitinous_armor - - type: ChangelingAction - chemicalCost: 20 #Use for equip and uneuip - # requireAbsorbed: 1 - - type: InstantAction - event: !type:ToggleChitinousArmorEvent {} - -- type: entity - parent: BaseAction - id: ActionToggleOrganicShield - name: Form Shield - description: Reform one of your arms into a large, fleshy shield. Costs 20 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 2 - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: organic_shield - - type: ChangelingAction - chemicalCost: 15 - # requireAbsorbed: 1 - - type: InstantAction - event: !type:ToggleOrganicShieldEvent {} - -- type: entity - parent: BaseAction - id: ActionShriekDissonant - name: Dissonant Shriek - description: Emit an EMP blast, with just your voice. Costs 30 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 25 - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: shriek_dissonant - - type: ChangelingAction - chemicalCost: 30 - useInLesserForm: true - # requireAbsorbed: 1 - - type: InstantAction - event: !type:ShriekDissonantEvent {} - -- type: entity - parent: BaseAction - id: ActionShriekResonant - name: Resonant Shriek - description: Disorient people and break lights, with just your voice. Costs 30 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 10 - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: shriek_resonant - - type: ChangelingAction - chemicalCost: 10 - useInLesserForm: true - # requireAbsorbed: 1 - - type: InstantAction - event: !type:ShriekResonantEvent {} - -- type: entity - parent: BaseAction - id: ActionToggleStrainedMuscles - name: Strain Muscles - description: Move at extremely fast speeds. Deals stamina damage. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 1 - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: strained_muscles - - type: ChangelingAction - chemicalCost: 20 - useInLesserForm: true - - type: InstantAction - event: !type:ToggleStrainedMusclesEvent {} - -# stings -- type: entity - parent: BaseAction - id: ActionStingBlind - name: Blind Sting - description: Silently sting your target, blinding them for a short time and rendering them near sighted. Costs 35 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: sting_blind - - type: ChangelingAction - chemicalCost: 35 - useInLesserForm: true - - type: TargetAction - interactOnMiss: false - - type: EntityTargetAction - canTargetSelf: false - whitelist: - components: - - Body - event: !type:StingBlindEvent {} - -- type: entity - parent: BaseAction - id: ActionStingCryo - name: Cryogenic Sting - description: Silently sting your target, constantly slowing and freezing them. Costs 35 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: sting_cryo - - type: ChangelingAction - chemicalCost: 45 - useInLesserForm: true - - type: TargetAction - interactOnMiss: false - - type: EntityTargetAction - canTargetSelf: false - whitelist: - components: - - Body - event: !type:StingCryoEvent {} - -- type: entity - parent: BaseAction - id: ActionStingLethargic - name: Lethargic Sting - description: Silently inject a cocktail of anesthetics into the target. Costs 35 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: sting_lethargic - - type: ChangelingAction - chemicalCost: 45 - useInLesserForm: true - - type: TargetAction - interactOnMiss: false - - type: EntityTargetAction - whitelist: - components: - - Body - canTargetSelf: false - event: !type:StingLethargicEvent {} - -- type: entity - parent: BaseAction - id: ActionStingMute - name: Mute Sting - description: Silently sting your target, completely silencing them for a short time. Costs 35 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: sting_mute - - type: ChangelingAction - chemicalCost: 35 - useInLesserForm: true - - type: TargetAction - interactOnMiss: false - - type: EntityTargetAction - whitelist: - components: - - Body - canTargetSelf: false - event: !type:StingMuteEvent {} - -- type: entity - parent: BaseAction - id: ActionStingFakeArmblade - name: Fake Armblade Sting - description: Silently sting your target, making them grow a dull armblade for a short time. Costs 50 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: sting_armblade - - type: TargetAction - interactOnMiss: false - - type: ChangelingAction - chemicalCost: 40 - useInLesserForm: true - - type: EntityTargetAction - whitelist: - components: - - Body - canTargetSelf: false - event: !type:StingFakeArmbladeEvent {} - -#- type: entity -# id: ActionStingTransform -# name: Transformation Sting -# description: Silently sting your target, transforming them into a person of your choosing. Costs 75 chemicals. -# categories: [ HideSpawnMenu ] -# components: -# - type: EntityTargetAction -# whitelist: -# components: -# - Body -# canTargetSelf: false -# interactOnMiss: false -# itemIconStyle: NoItem -# icon: -# sprite: Changeling/changeling_abilities.rsi -# state: sting_transform -# event: !type:StingTransformEvent {} -# - type: ChangelingAction -# chemicalCost: 75 -# useInLesserForm: true - -# utility -- type: entity - parent: BaseAction - id: ActionAnatomicPanacea - name: Anatomic Panacea - description: Cure yourself of diseases, disabilities, radiation, toxins, drunkedness and brain damage. Costs 30 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 30 - checkCanInteract: false - checkConsciousness: false - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: anatomic_panacea - - type: ChangelingAction - chemicalCost: 20 - useInLesserForm: true - - type: InstantAction - event: !type:ActionAnatomicPanaceaEvent {} - -- type: entity - parent: BaseAction - id: ActionAugmentedEyesight - name: Augmented Eyesight - description: Toggle flash protection. - categories: [ HideSpawnMenu ] - components: - - type: Action - checkCanInteract: false - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: augmented_eyesight - - type: ChangelingAction - chemicalCost: 0 - - type: InstantAction - event: !type:ActionAugmentedEyesightEvent {} - -- type: entity - parent: BaseAction - id: ActionBiodegrade - name: Biodegrade - description: Vomit a caustic substance onto any restraints, or someone's face. Costs 30 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 5 - checkCanInteract: false - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: biodegrade - - type: ChangelingAction - chemicalCost: 10 - - type: InstantAction - event: !type:ActionBiodegradeEvent {} - -- type: entity - parent: BaseAction - id: ActionChameleonSkin - name: Chameleon Skin - description: Slowly blend in with the environment. Costs 25 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 1 - checkCanInteract: false - checkConsciousness: false - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: chameleon_skin - - type: ChangelingAction - chemicalCost: 8 #need lower to turn off - - type: InstantAction - event: !type:ActionChameleonSkinEvent {} - -- type: entity - parent: BaseAction - id: ActionEphedrineOverdose - name: Ephedrine Overdose - description: Inject some stimulants into yourself. Costs 30 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 10 - checkCanInteract: false - checkConsciousness: false - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: epinephrine_overdose - - type: ChangelingAction - chemicalCost: 25 - useInLesserForm: true - - type: InstantAction - event: !type:ActionEphedrineOverdoseEvent {} - -- type: entity - parent: BaseAction - id: ActionFleshmend - name: Fleshmend - description: Rapidly heal yourself. Costs 35 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 30 - checkCanInteract: false - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: fleshmend - - type: ChangelingAction - chemicalCost: 35 - useInLesserForm: true - - type: InstantAction - event: !type:ActionFleshmendEvent {} - -- type: entity - parent: BaseAction - id: ActionToggleLesserForm - name: Lesser Form - description: Abandon your current form and transform into a monkey. Costs 20 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 5 - checkCanInteract: false - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: lesser_form - - type: ChangelingAction - chemicalCost: 10 - - type: InstantAction - event: !type:ActionLesserFormEvent {} - -- type: entity - parent: BaseAction - id: ActionToggleSpacesuit - name: Toggle Space Suit - description: Make your body space proof. Costs 20 chemicals. - categories: [ HideSpawnMenu ] - components: - - type: Action - useDelay: 2 - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: space_adaptation - - type: ChangelingAction - chemicalCost: 20 - - type: InstantAction - event: !type:ActionSpacesuitEvent {} - -- type: entity - parent: BaseAction - id: ActionHivemindAccess - name: Hivemind Access - description: Tune your chemical receptors for hivemind communication. - categories: [ HideSpawnMenu ] - components: - - type: Action - checkCanInteract: false - checkConsciousness: false - itemIconStyle: NoItem - icon: - sprite: Changeling/changeling_abilities.rsi - state: hivemind_access - - type: ChangelingAction - chemicalCost: 0 - useInLesserForm: true - - type: InstantAction - event: !type:ActionHivemindAccessEvent {} diff --git a/Resources/Prototypes/Alerts/changeling.yml b/Resources/Prototypes/Alerts/changeling.yml deleted file mode 100644 index 3d58251ede..0000000000 --- a/Resources/Prototypes/Alerts/changeling.yml +++ /dev/null @@ -1,35 +0,0 @@ -- type: alert - id: ChangelingChemicals - icons: - - sprite: /Textures/Changeling/changeling_chemicals.rsi - state: 0 - alertViewEntity: AlertChangelingChemicalsSpriteView - name: alerts-changeling-chemicals-name - description: alerts-changeling-chemicals-desc - -- type: alert - id: ChangelingBiomass - icons: - - sprite: /Textures/Changeling/changeling_biomass.rsi - state: 0 - alertViewEntity: AlertChangelingBiomassSpriteView - name: alerts-changeling-biomass-name - description: alerts-changeling-biomass-desc - -- type: entity - id: AlertChangelingChemicalsSpriteView - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: /Textures/Changeling/changeling_chemicals.rsi - layers: - - map: [ "enum.AlertVisualLayers.Base" ] - -- type: entity - id: AlertChangelingBiomassSpriteView - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: /Textures/Changeling/changeling_biomass.rsi - layers: - - map: [ "enum.AlertVisualLayers.Base" ] diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 6682697133..302ed33ca6 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -169,7 +169,7 @@ - id: HoloprojectorSecurity - id: BoxEvidenceMarkers - id: HandLabeler - - id: PortableSurveillanceCameraMonitor # Sunrise-edit + - id: PortableSurveillanceCameraMonitor # Sunrise-edit - type: entity id: ClosetBombFilled diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml index 2622970f1e..f01f1a0bfa 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml @@ -1049,20 +1049,3 @@ color: "#f4ffad" radius: 5 energy: 2 - -- type: entity - parent: ClothingHeadHardsuitBase - id: ChangelingClothingHeadHelmetHardsuit - name: organic space helmet - description: A spaceworthy biomass of pressure and temperature resistant tissue. - suffix: Unremoveable - components: - - type: Item - - type: Sprite - sprite: Changeling/ling_spacesuit_helmet.rsi - - type: Clothing - sprite: Changeling/ling_spacesuit_helmet.rsi - - type: PressureProtection - highPressureMultiplier: 0.225 - lowPressureMultiplier: 1000 - - type: Unremoveable diff --git a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml index fb10269907..6d1789c8a3 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml @@ -625,24 +625,3 @@ - type: Construction graph: cardHelmet node: cardhelmet -- type: entity - parent: ClothingHeadBase - id: ChangelingClothingHeadHelmet - name: chitinous helmet - description: An all-consuming chitinous mass of armor. - suffix: Unremoveable - components: - - type: Sprite - sprite: Changeling/ling_armor_helmet.rsi - - type: Clothing - sprite: Changeling/ling_armor_helmet.rsi - - type: Pierceable - level: Metal - - type: Armor - modifiers: - coefficients: - Blunt: 0.9 - Slash: 0.9 - Piercing: 0.9 - Heat: 0.9 - - type: Unremoveable diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index 4fbc609075..c7ad8adf6f 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -593,39 +593,3 @@ - type: Construction graph: cardArmour node: cardarmour -- type: entity - parent: ClothingOuterBaseLarge - id: ChangelingClothingOuterArmor - name: chitinous armor - description: An all-consuming chitinous mass of armor. - suffix: Unremoveable - components: - - type: Sprite - sprite: Changeling/ling_armor.rsi - - type: Clothing - sprite: Changeling/ling_armor.rsi - - type: Pierceable - level: Metal - - type: Armor - modifiers: - coefficients: - Blunt: 0.5 - Slash: 0.5 - Piercing: 0.5 - Heat: 0.5 - Radiation: 0.5 - Caustic: 0.5 - - type: ClothingSpeedModifier - walkModifier: 0.7 - sprintModifier: 0.65 - - type: HeldSpeedModifier - - type: ExplosionResistance - damageCoefficient: 0.5 - - type: GroupExamine - - type: Unremoveable - # Sunrise-Start - - type: Tag - tags: - - FullBodyOuter - - WhitelistChameleon - # Sunrise-End diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index bd4651329f..07ad7ad8ee 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -1218,37 +1218,3 @@ - type: HeldSpeedModifier - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitSanta - -- type: entity - parent: [ ClothingOuterBaseLarge, AllowSuitStorageClothing ] - id: ChangelingClothingOuterHardsuit - name: organic space suit - description: A spaceworthy biomass of pressure and temperature resistant tissue. - suffix: Unremoveable - components: - - type: Sprite - sprite: Changeling/ling_spacesuit.rsi - - type: Clothing - sprite: Changeling/ling_spacesuit.rsi - - type: PressureProtection - highPressureMultiplier: 0.225 - lowPressureMultiplier: 1000 - - type: TemperatureProtection - heatingCoefficient: 0.01 - coolingCoefficient: 0.01 - - type: ExplosionResistance - damageCoefficient: 0.2 - - type: Pierceable - level: Flesh - - type: Armor - modifiers: - coefficients: - Blunt: 0.95 - Slash: 0.95 - Piercing: 1 - Heat: 0.5 - - type: ClothingSpeedModifier - walkModifier: 0.9 - sprintModifier: 0.9 - - type: HeldSpeedModifier - - type: Unremoveable diff --git a/Resources/Prototypes/Entities/Guidebook/changeling.yml b/Resources/Prototypes/Entities/Guidebook/changeling.yml deleted file mode 100644 index 0b3d959d09..0000000000 --- a/Resources/Prototypes/Entities/Guidebook/changeling.yml +++ /dev/null @@ -1,9 +0,0 @@ -- type: entity - id: GuidebookChangelingFluff - name: guidebook changeling - description: you shouldn't be seeing this normally. - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: Changeling/Guidebook/guidebook_changeling.rsi - state: icon diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index 5751d3a6c3..3b481a1247 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -123,7 +123,7 @@ preventSuicide: true mobState: - Critical - - type: OnUseTimerTrigger + - type: TimerTrigger delay: 3 initialBeepDelay: 0 beepInterval: 3 diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index 9356c749ef..d0b6efc4f4 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -8,7 +8,6 @@ # SUNRISE EDIT - type: Interactions # SUNRISE EDIT - - type: Absorbable - type: Body prototype: Arachnid requiredLegs: 2 # It would be funny if arachnids could use their little back limbs to move around once they lose their legs, but just something to consider post-woundmed diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index 549fb0a505..0fcc046b9f 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -393,7 +393,6 @@ - type: Body prototype: Human requiredLegs: 2 - - type: Absorbable - type: UserInterface interfaces: enum.HumanoidMarkingModifierKey.Key: # sure, this can go here too diff --git a/Resources/Prototypes/Entities/Mobs/Species/diona.yml b/Resources/Prototypes/Entities/Mobs/Species/diona.yml index a43f71a545..1032052783 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/diona.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/diona.yml @@ -5,7 +5,6 @@ id: BaseMobDiona abstract: true components: - - type: Absorbable - type: HumanoidAppearance species: Diona - type: Hunger diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml index 6047678476..fa0b67f3bd 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml @@ -8,7 +8,6 @@ # SUNRISE EDIT - type: Interactions # SUNRISE EDIT - - type: Absorbable - type: Hunger - type: Thirst baseDecayRate: 0.2 diff --git a/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml b/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml index 723f497e19..cab7a068cc 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml @@ -5,7 +5,6 @@ id: BaseMobGingerbread abstract: true components: - - type: Absorbable - type: HumanoidAppearance species: Gingerbread - type: Icon diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index 3514e1f1fb..4716812156 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -8,7 +8,6 @@ # SUNRISE EDIT - type: Interactions # SUNRISE EDIT - - type: Absorbable - type: Hunger - type: Icon # It will not have an icon in the adminspawn menu without this. Body parts seem fine for whatever reason. sprite: _Sunrise/Mobs/Species/Human/Basic/parts.rsi diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index b282ffb556..42aa8821fd 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -8,7 +8,6 @@ # SUNRISE EDIT - type: Interactions # SUNRISE EDIT - - type: Absorbable - type: HumanoidAppearance species: Moth hideLayersOnEquip: diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml index d21ae6f7df..c759c3bddd 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml @@ -8,7 +8,6 @@ # SUNRISE EDIT - type: Interactions # SUNRISE EDIT - - type: Absorbable - type: HumanoidAppearance species: Reptilian hideLayersOnEquip: diff --git a/Resources/Prototypes/Entities/Mobs/Species/slime.yml b/Resources/Prototypes/Entities/Mobs/Species/slime.yml index d37729dfed..28128a8b48 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/slime.yml @@ -47,7 +47,6 @@ type: SurgeryBui enum.VampireMutationUiKey.Key: type: VampireMutationBoundUserInterface - - type: Absorbable # Sunrise-end - type: UseDelay delay: 0.5 diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index 7e1ab169c2..4d1ac429c5 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -6,7 +6,6 @@ # SUNRISE EDIT - type: Interactions # SUNRISE EDIT - - type: Absorbable - type: Hunger - type: Thirst dehydrationDamage: diff --git a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml index d98a4b7bad..4addf52692 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml @@ -145,7 +145,7 @@ - type: TriggerOnMobstateChange mobState: - Critical - - type: Rattle + - type: RattleOnTrigger radioChannel: "CentCom" #Sunrise-end @@ -260,11 +260,11 @@ components: - type: SubdermalImplant implantAction: ActionActivateSmokeGrenadeImplant - - type: TriggerImplantAction + - type: TriggerOnActivateImplant - type: SmokeOnTrigger duration: 20 spreadAmount: 30 - - type: SoundOnTrigger + - type: EmitSoundOnTrigger sound: /Audio/Items/smoke_grenade_smoke.ogg #Sunrise-end @@ -477,7 +477,7 @@ description: This implant will inform the Centcomm radio channel should the user fall into critical condition or die. categories: [ HideSpawnMenu ] components: - - type: Rattle + - type: RattleOnTrigger radioChannel: BlueShield - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Shields/shields.yml b/Resources/Prototypes/Entities/Objects/Shields/shields.yml index b695922ba1..523ce4c93a 100644 --- a/Resources/Prototypes/Entities/Objects/Shields/shields.yml +++ b/Resources/Prototypes/Entities/Objects/Shields/shields.yml @@ -105,9 +105,9 @@ sprite: _Sunrise/Objects/Weapons/Melee/shields.rsi layers: - state: riot-icon - map: [ "enum.FlashVisuals.BaseLayer" ] + map: [ "enum.FlashVisualLayers.BaseLayer" ] - state: flashing - map: [ "enum.FlashVisuals.LightLayer" ] + map: [ "enum.FlashVisualLayers.LightLayer" ] visible: false shader: unshaded - type: Flash @@ -131,10 +131,10 @@ - type: GenericVisualizer visuals: enum.FlashVisuals.Burnt: - enum.FlashVisuals.BaseLayer: + enum.FlashVisualLayers.BaseLayer: True: {state: burnt} enum.FlashVisuals.Flashing: - enum.FlashVisuals.LightLayer: + enum.FlashVisualLayers.LightLayer: True: {visible: true} False: {visible: false} - type: StaticPrice @@ -713,35 +713,3 @@ max: 2 - type: StaticPrice price: 150 - -- type: entity - parent: BaseShield - id: ChangelingShield - name: oraganic shield - description: A large, fleshy shield. - suffix: Unremoveable - components: - - type: Unremoveable - - type: Sprite - sprite: Changeling/shields.rsi - state: ling-icon - - type: Item - sprite: Changeling/shields.rsi - heldPrefix: ling - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 120 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 110 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - !type:PlaySoundBehavior - sound: - collection: MetalBreak diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 6b2a48ee31..51b977790a 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -680,7 +680,7 @@ - item: GasAnalyzer - item: HolofanProjectorBorg - item: GeigerCounter - - AtmosAlertsMonitorUnpowered + - item: AtmosAlertsMonitorUnpowered - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: rcd-module } diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index 16fb962122..84744215c2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -1576,7 +1576,7 @@ Blunt: 5 deleteOnCollide: false - type: StartTimerOnShoot - - type: OnUseTimerTrigger + - type: TimerTrigger delay: 2 - type: Fixtures fixtures: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml index f88cf79763..cd09f71191 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml @@ -113,21 +113,9 @@ - type: StaticPrice price: 500 # Sunrise start - - type: MeleeWeapon - wideAnimationRotation: -135 - damage: - types: - Piercing: 15 - Bloodloss: 2 - angle: 0 - animation: WeaponArcThrust - soundHit: - path: /Audio/Weapons/bladeslice.ogg - type: Gun pump: true fireRate: 1 - - type: AltFireMelee - attackType: Heavy # Sunrise end - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/changeling_armblade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/changeling_armblade.yml deleted file mode 100644 index 34b720bd3b..0000000000 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/changeling_armblade.yml +++ /dev/null @@ -1,47 +0,0 @@ -- type: entity - parent: ArmBlade - id: ArmBladeChangeling - suffix: Unremoveable - components: - - type: Sharp - - type: Sprite - sprite: Changeling/arm_blade.rsi - state: icon - - type: MeleeWeapon - wideAnimationRotation: 90 - attackRate: 0.75 - damage: - types: - Slash: 20 - Piercing: 10 - Structural: 20 - soundHit: - path: /Audio/Weapons/bladeslice.ogg - - type: Item - size: Ginormous - sprite: Changeling/arm_blade.rsi - - type: Prying - pryPowered: true - - type: Unremoveable - - type: Tool - qualities: - - Slicing - - Prying - - type: DisarmMalus - malus: 0 - -- type: entity - parent: ArmBladeChangeling - id: FakeArmBladeChangeling - components: - - type: MeleeWeapon - wideAnimationRotation: 90 - attackRate: 0.75 - damage: - types: - Blunt: 1 - Slash: 1 - Piercing: 1 - Structural: 1 - - type: TimedDespawn - lifetime: 60 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml index d2500199a2..d4eaab59b9 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml @@ -495,7 +495,7 @@ - timer duration: 45 # Sunrise-Edit spreadAmount: 50 - - type: SoundOnTrigger + - type: EmitSoundOnTrigger sound: path: /Audio/_Sunrise/sg_explode.ogg # Sunrise-Edit params: @@ -652,7 +652,7 @@ sound: path: /Audio/Effects/Emotes/parp1.ogg - type: Appearance - - type: OnUseTimerTrigger + - type: TimerTrigger beepSound: path: "/Audio/Effects/beep1.ogg" params: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/throwing_stars.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/throwing_stars.yml index 49166cc628..26780055c2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/throwing_stars.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/throwing_stars.yml @@ -51,16 +51,3 @@ # also limits the crew's use - type: TimedDespawn lifetime: 30 - -- type: entity - parent: ThrowingStar - id: ThrowingStarChangeling - name: bone shard - components: - - type: Sprite - sprite: Changeling/bone_shard.rsi - layers: - - state: icon - map: ["base"] - - type: TimedDespawn - lifetime: 30 \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/airlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/airlocks.yml index a5b7a9fddd..8821cea116 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/airlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/airlocks.yml @@ -303,7 +303,7 @@ suffix: Mining(Salvage) components: - type: Sprite - sprite: _Sunrise/Structures/Doors/Airlocks/Glass/mining.rsi + sprite: Structures/Doors/Airlocks/Glass/mining.rsi - type: Paintable group: null diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index ce9cbb4695..573c9005b3 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -22,8 +22,6 @@ rules: - id: Thief prob: 0.3 - - id: Changeling - prob: 0.3 - id: Vampire prob: 0.3 - id: SubWizard @@ -37,8 +35,6 @@ rules: - id: Thief prob: 0.3 - - id: Changeling - prob: 0.3 - id: Vampire prob: 0.3 diff --git a/Resources/Prototypes/Objectives/changeling.yml b/Resources/Prototypes/Objectives/changeling.yml deleted file mode 100644 index a1a4612217..0000000000 --- a/Resources/Prototypes/Objectives/changeling.yml +++ /dev/null @@ -1,23 +0,0 @@ -- type: entity - abstract: true - parent: BaseObjective - id: BaseChangelingObjective - components: - - type: Objective - issuer: objective-issuer-changeling - difficulty: 1 - - type: RoleRequirement - roles: - - ChangelingRole - -- type: entity - parent: [BaseChangelingObjective, BaseSurviveObjective] - id: ChangelingSurviveObjective - name: Survive. - description: We must stay alive at all cost. - components: - - type: Objective - difficulty: 1 - icon: - sprite: Mobs/Species/Human/organs.rsi - state: heart-on diff --git a/Resources/Prototypes/Reagents/biological.yml b/Resources/Prototypes/Reagents/biological.yml index e750329689..de6a8b2f7c 100644 --- a/Resources/Prototypes/Reagents/biological.yml +++ b/Resources/Prototypes/Reagents/biological.yml @@ -253,31 +253,3 @@ damage: types: Cellular: 2 - -- type: reagent - parent: Blood - id: BloodChangeling - -- type: reaction - id: ChangelingBloodBreakdown - source: true - requiredMixerCategories: - - Centrifuge - reactants: - BloodChangeling: - amount: 5 - products: - Water: 11 - Iron: 0.5 - Sugar: 2 - CarbonDioxide: 3 - Protein: 4 - effects: - - !type:CreateEntityReactionEffect - entity: FleshKudzu - - !type:ExplosionReactionEffect - explosionType: Default - maxIntensity: 2 - intensityPerUnit: 0.5 - intensitySlope: 4 - maxTotalIntensity: 1 diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index 00fac05491..f29c4cbc58 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -146,12 +146,15 @@ metabolisms: Medicine: effects: + #Sunrise-Start + - !type:HealthChange + damage: + types: + Mangleness: 0.1 + #Sunrise-End - !type:EvenHealthChange damage: - types: #Sunrise-Edit - Mangleness: 0.1 #Sunrise-Edit - groups: - Brute: -1.5 + Brute: -1.5 - !type:HealthChange conditions: - !type:ReagentThreshold diff --git a/Resources/Prototypes/Recipes/Lathes/categories.yml b/Resources/Prototypes/Recipes/Lathes/categories.yml index 48aa12bd3c..38e1c460c5 100644 --- a/Resources/Prototypes/Recipes/Lathes/categories.yml +++ b/Resources/Prototypes/Recipes/Lathes/categories.yml @@ -163,10 +163,6 @@ # Exosuit -- type: latheCategory - id: Mech - name: lathe-category-mechs - - type: latheCategory id: Vim name: lathe-category-mechs-vim diff --git a/Resources/Prototypes/StatusIcon/faction.yml b/Resources/Prototypes/StatusIcon/faction.yml index 7196b7531c..2d868bbbc6 100644 --- a/Resources/Prototypes/StatusIcon/faction.yml +++ b/Resources/Prototypes/StatusIcon/faction.yml @@ -45,19 +45,7 @@ icon: sprite: /Textures/Interface/Misc/job_icons.rsi state: HeadRevolutionary - -- type: factionIcon - id: HivemindFaction - isShaded: true - priority: 11 - showTo: - components: - - ShowAntagIcons - - Hivemind - icon: - sprite: /Textures/Interface/Misc/job_icons.rsi - state: Changeling - + - type: factionIcon id: VampireFaction isShaded: true diff --git a/Resources/Prototypes/Store/categories.yml b/Resources/Prototypes/Store/categories.yml index 47099a9db5..b8adb94f8e 100644 --- a/Resources/Prototypes/Store/categories.yml +++ b/Resources/Prototypes/Store/categories.yml @@ -108,20 +108,3 @@ id: DiscountedItems name: store-discounted-items priority: 200 - -# changeling - -- type: storeCategory - id: ChangelingAbilityCombat - name: store-ling-category-combat - priority: 0 - -- type: storeCategory - id: ChangelingAbilitySting - name: store-ling-category-sting - priority: 1 - -- type: storeCategory - id: ChangelingAbilityUtility - name: store-ling-category-utility - priority: 2 diff --git a/Resources/Prototypes/Store/currency.yml b/Resources/Prototypes/Store/currency.yml index d71e249a42..11b4f48a9a 100644 --- a/Resources/Prototypes/Store/currency.yml +++ b/Resources/Prototypes/Store/currency.yml @@ -43,8 +43,3 @@ - type: currency id: DebugDollar displayName: store-currency-display-debugdollar - -- type: currency - id: EvolutionPoint - displayName: store-currency-display-evolutionpoints - canWithdraw: false diff --git a/Resources/Prototypes/_Starlight/Entities/Objects/Specific/Medical/medical.yml b/Resources/Prototypes/_Starlight/Entities/Objects/Specific/Medical/medical.yml index 8fb0c49233..f3338145ca 100644 --- a/Resources/Prototypes/_Starlight/Entities/Objects/Specific/Medical/medical.yml +++ b/Resources/Prototypes/_Starlight/Entities/Objects/Specific/Medical/medical.yml @@ -150,8 +150,9 @@ interactFailureString: petting-failure-medibot interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg - - type: Advertise - pack: MedibotAds + - type: Vocalizer + - type: DatasetVocalizer + dataset: MedibotAds - type: Inventory templateId: medibot diff --git a/Resources/Prototypes/_Starlight/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml b/Resources/Prototypes/_Starlight/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml index 77866ba997..7135332327 100644 --- a/Resources/Prototypes/_Starlight/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml +++ b/Resources/Prototypes/_Starlight/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml @@ -1017,8 +1017,8 @@ polymorph: AdmemeForcedJohnToe - type: TriggerOnCollide fixtureID: projectile - - type: TriggerWhitelist - whitelist: + - type: WhitelistTriggerCondition + userWhitelist: components: - Body diff --git a/Resources/Prototypes/_Sunrise/Entities/Effects/abductor_glands.yml b/Resources/Prototypes/_Sunrise/Entities/Effects/abductor_glands.yml index f690f36ead..2616dc859e 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Effects/abductor_glands.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Effects/abductor_glands.yml @@ -16,7 +16,7 @@ suffix: Gravity parent: GlandEffectBase components: - - type: SoundOnTrigger + - type: EmitSoundOnTrigger removeOnTrigger: true sound: path: /Audio/Effects/Grenades/Supermatter/supermatter_start.ogg diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml index a66e788de8..ca8b5af4b4 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -266,7 +266,7 @@ preventSuicide: true mobState: - Critical - - type: OnUseTimerTrigger + - type: TimerTrigger delay: 3 initialBeepDelay: 0 beepInterval: 3 @@ -377,7 +377,7 @@ preventSuicide: true mobState: - Critical - - type: OnUseTimerTrigger + - type: TimerTrigger delay: 3 initialBeepDelay: 0 beepInterval: 3 diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/abductor.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/abductor.yml index 84cc2191e6..843e13e08c 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/abductor.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/abductor.yml @@ -8,7 +8,6 @@ id: BaseMobAbductor abstract: true components: - #- type: Absorbable Starlight: Done on purpose so the abductors don't get absorbed. - type: Muted - type: HumanoidAppearance species: Abductor diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/demon.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/demon.yml index a62defabdf..35ef3ea186 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/demon.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/demon.yml @@ -6,7 +6,6 @@ abstract: true components: - type: Interactions - - type: Absorbable - type: HumanoidAppearance species: Demon - type: Hunger diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/felinid.yml index 095304816f..f1cd4839c3 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/felinid.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/felinid.yml @@ -7,7 +7,6 @@ components: - type: Interactions - type: MultiHandedItem - - type: Absorbable - type: OwOAccent - type: Speech speechVerb: Felinid diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/humanoid_xeno.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/humanoid_xeno.yml index 4e545aa29e..b0f9fdab46 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/humanoid_xeno.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/humanoid_xeno.yml @@ -6,7 +6,6 @@ abstract: true components: - type: Interactions - - type: Absorbable - type: Respirator damage: types: diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/predator.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/predator.yml index 973fd3a438..1fdad9f704 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/predator.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/predator.yml @@ -6,7 +6,6 @@ abstract: true components: - type: Interactions - - type: Absorbable - type: Hunger - type: Icon # It will not have an icon in the adminspawn menu without this. Body parts seem fine for whatever reason. sprite: _Sunrise/Mobs/Species/Predator/parts.rsi diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/swine.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/swine.yml index e959ad3819..3ea8dc8166 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/swine.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/swine.yml @@ -5,7 +5,6 @@ abstract: true components: - type: Interactions - - type: Absorbable - type: HumanoidAppearance species: Swine - type: Hunger diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/tajaran.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/tajaran.yml index 824ceeef20..ef10a34fe3 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/tajaran.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/tajaran.yml @@ -4,7 +4,6 @@ abstract: true components: - type: Interactions - - type: Absorbable - type: HumanoidAppearance species: Tajaran hideLayersOnEquip: diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/vulpkanin.yml index 566dcb9c71..fa3b75ea29 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/vulpkanin.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/vulpkanin.yml @@ -14,7 +14,6 @@ abstract: true components: - type: Interactions - - type: Absorbable - type: Speech speechVerb: Vulpkanin allowedEmotes: ['Growl', 'Bark', 'Howl', 'Whines'] diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/prunks.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/prunks.yml index d38d07ee23..3cd653d99c 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/prunks.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Fun/prunks.yml @@ -5,7 +5,7 @@ id: FakeGrenade parent: GrenadeBase components: - - type: OnUseTimerTrigger + - type: TimerTrigger delay: 3 beepInterval: 0.46 beepSound: diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml index 366584282b..15fbcc6567 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -8,10 +8,10 @@ - state: NT - state: icon-NT - type: ItemBorgModule - items: - - WeaponPulseCarbineBorg - - WeaponPulseCarbineBorg - - PinpointerNuclear + hands: + - item: WeaponPulseCarbineBorg + - item: WeaponPulseCarbineBorg + - item: PinpointerNuclear - type: BorgModuleIcon icon: {sprite: Objects/Weapons/Guns/Battery/pulse_carbine.rsi, state: base} @@ -25,10 +25,10 @@ - state: NT - state: icon-NT - type: ItemBorgModule - items: - - StunbatonBorg - - WeaponDisablerSMGBorg - - FlashBorg + hands: + - item: StunbatonBorg + - item: WeaponDisablerSMGBorg + - item: FlashBorg - type: BorgModuleIcon icon: {sprite: Objects/Weapons/Melee/stunbaton.rsi, state: stunbaton_off} @@ -42,12 +42,12 @@ - state: NT - state: icon-NT - type: ItemBorgModule - items: - - JawsOfLife - - PowerDrill - - Multitool - - WelderBorg - - RemoteSignallerAdvanced + hands: + - item: JawsOfLife + - item: PowerDrill + - item: Multitool + - item: WelderBorg + - item: RemoteSignallerAdvanced - type: BorgModuleIcon icon: {sprite: Interface/Actions/actions_borg.rsi, state: adv-tools-module} @@ -61,11 +61,11 @@ - state: syndicate - state: icon-syndicate - type: ItemBorgModule - items: - - LaserMinigunBorg - - HeavyRifleBorg - - WeaponLauncherDusterBorg - - PinpointerNuclear + hands: + - item: LaserMinigunBorg + - item: HeavyRifleBorg + - item: WeaponLauncherDusterBorg + - item: PinpointerNuclear - type: entity id: BorgScoutModuleSyndicateCombat @@ -77,10 +77,10 @@ - state: syndicate - state: icon-syndicate - type: ItemBorgModule - items: - - WeaponIAR52Borg - - CombatKnife - - HypoBorgSaboteurSyndicate + hands: + - item: WeaponIAR52Borg + - item: CombatKnife + - item: HypoBorgSaboteurSyndicate - type: entity id: BorgScoutModuleSyndicateTool @@ -92,13 +92,13 @@ - state: syndicate - state: icon-syndicate - type: ItemBorgModule - items: - - RadioJammerBorg - - JetpackVoidFilled - - trayScanner - - WelderExperimental - - Multitool - - PowerDrill + hands: + - item: RadioJammerBorg + - item: JetpackVoidFilled + - item: trayScanner + - item: WelderExperimental + - item: Multitool + - item: PowerDrill - type: entity id: BaseBorgModuleSecurity @@ -128,10 +128,10 @@ - state: security - state: icon-stuh - type: ItemBorgModule - items: - - WeaponDisablerBorg - - StunbatonBorg - - FlashBorg + hands: + - item: WeaponDisablerBorg + - item: StunbatonBorg + - item: FlashBorg - type: entity id: BorgModuleAdvancedCombat @@ -143,11 +143,11 @@ - state: security - state: icon-combat - type: ItemBorgModule - items: - - Truncheon - - WeaponLaserBorg - - WeaponLaserBorg - - HoloprojectorSecurityBorg + hands: + - item: Truncheon + - item: WeaponLaserBorg + - item: WeaponLaserBorg + - item: HoloprojectorSecurityBorg - type: entity id: BorgModuleCombat @@ -159,11 +159,11 @@ - state: security - state: icon-combat - type: ItemBorgModule - items: - - CombatKnife - - WeaponLaserBorg - - FlashBorg - - HoloprojectorSecurityBorg + hands: + - item: CombatKnife + - item: WeaponLaserBorg + - item: FlashBorg + - item: HoloprojectorSecurityBorg - type: entity id: BorgModulePeace @@ -175,9 +175,9 @@ - state: security - state: icon-peace - type: ItemBorgModule - items: - - FlashBorg - - HypoBorgPeace + hands: + - item: FlashBorg + - item: HypoBorgPeace - type: entity id: BorgModuleMiningCombat @@ -189,9 +189,9 @@ - state: cargo - state: icon-mining - type: ItemBorgModule - items: - - WeaponProtoKineticAcceleratorBorg - - WeaponCrusherDagger + hands: + - item: WeaponProtoKineticAcceleratorBorg + - item: WeaponCrusherDagger - type: BorgModuleIcon icon: { sprite: Objects/Weapons/Guns/Basic/kinetic_accelerator.rsi, state: icon } @@ -205,8 +205,8 @@ - state: cargo - state: icon-mining - type: ItemBorgModule - items: - - JetpackVoidFilled + hands: + - item: JetpackVoidFilled - type: BorgModuleIcon icon: { sprite: Objects/Tanks/Jetpacks/void.rsi, state: icon } @@ -220,10 +220,10 @@ - state: syndicate - state: icon-syndicate - type: ItemBorgModule - items: - - SyndicateJawsOfLife - - PinpointerNuclear - - HypoBorgStandardSyndicate + hands: + - item: SyndicateJawsOfLife + - item: PinpointerNuclear + - item: HypoBorgStandardSyndicate - type: entity id: BorgModuleSyndicateMedical @@ -235,11 +235,11 @@ - state: syndicate - state: icon-syndicate-treatment - type: ItemBorgModule - items: - - SawAdvanced - - WeaponPistolEchis #Todo: Заменить на вариант Шприцемета с выбором снарядов - - HypoBorgMedicalSyndicate - - DefibrillatorOneHandedUnpowered + hands: + - item: SawAdvanced + - item: WeaponPistolEchis #Todo: Заменить на вариант Шприцемета с выбором снарядов + - item: HypoBorgMedicalSyndicate + - item: DefibrillatorOneHandedUnpowered - type: entity id: BorgModuleSyndicateCombat @@ -251,10 +251,10 @@ - state: syndicate - state: icon-syndicate - type: ItemBorgModule - items: - - WeaponLightMachineGunL6C - - EnergySword - - PinpointerNuclear + hands: + - item: WeaponLightMachineGunL6C + - item: EnergySword + - item: PinpointerNuclear - type: entity id: BorgModuleStandart @@ -266,10 +266,10 @@ - state: generic - state: icon-fire-extinguisher - type: ItemBorgModule - items: - - CrowbarBorg - - FireExtinguisherBorg - - HypoBorgStandard + hands: + - item: CrowbarBorg + - item: FireExtinguisherBorg + - item: HypoBorgStandard - type: entity id: BorgERTModuleStandard @@ -281,9 +281,9 @@ - state: NT - state: icon-NT - type: ItemBorgModule - items: - - CrowbarBorg - - FireExtinguisherBorg - - HypoBorgStandardERT + hands: + - item: CrowbarBorg + - item: FireExtinguisherBorg + - item: HypoBorgStandardERT - type: BorgModuleIcon icon: { sprite: _Sunrise/Objects/Tools/items_cyborg.rsi, state: crowbar_cyborg } diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml index 418f97473b..f105769a42 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml @@ -89,9 +89,9 @@ sprite: Objects/Weapons/Melee/flash.rsi layers: - state: burnt - map: [ "enum.FlashVisuals.BaseLayer" ] + map: [ "enum.FlashVisualLayers.BaseLayer" ] - state: flashing - map: [ "enum.FlashVisuals.LightLayer" ] + map: [ "enum.FlashVisualLayers.LightLayer" ] visible: false shader: unshaded - type: LimitedCharges diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index d7f2a404f3..0490f0d3c9 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -232,7 +232,7 @@ - type: EmitSoundOnTrigger sound: path: "/Audio/Weapons/Guns/Gunshots/batrifle.ogg" - - type: OnUseTimerTrigger + - type: TimerTrigger initialBeepDelay: 0 beepInterval: 2 delay: 3.5 @@ -345,17 +345,14 @@ - state: primed - type: FlashOnTrigger range: 7 - - type: SoundOnTrigger + - type: EmitSoundOnTrigger sound: path: "/Audio/_Sunrise/flashbang.ogg" # Sunrise-Edit params: volume: 20 - - type: EmitSoundOnTrigger - sound: - path: "/Audio/Effects/flash_bang.ogg" - type: SpawnOnTrigger proto: GrenadeFlashEffect - - type: OnUseTimerTrigger + - type: TimerTrigger initialBeepDelay: 0 beepInterval: 2 delay: 2.75 @@ -384,7 +381,7 @@ - type: EmitSoundOnTrigger sound: path: "/Audio/Weapons/Guns/Gunshots/batrifle.ogg" - - type: OnUseTimerTrigger + - type: TimerTrigger initialBeepDelay: 0 beepInterval: 2 delay: 5 @@ -415,7 +412,7 @@ path: "/Audio/Weapons/Guns/Gunshots/batrifle.ogg" - type: SpawnOnTrigger proto: GrenadeFlashEffect - - type: OnUseTimerTrigger + - type: TimerTrigger initialBeepDelay: 0 beepInterval: 2 delay: 3.5 @@ -445,7 +442,7 @@ path: "/Audio/Weapons/Guns/Gunshots/batrifle.ogg" - type: SpawnOnTrigger proto: GrenadeFlashEffect - - type: OnUseTimerTrigger + - type: TimerTrigger initialBeepDelay: 0 beepInterval: 2 delay: 3.5 @@ -475,7 +472,7 @@ path: "/Audio/Effects/flash_bang.ogg" - type: SpawnOnTrigger proto: GrenadeFlashEffect - - type: OnUseTimerTrigger + - type: TimerTrigger initialBeepDelay: 0 beepInterval: 2 delay: 3.5 diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Throwable/grenades.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Throwable/grenades.yml index 094ac6cea7..39443fa231 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Throwable/grenades.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Throwable/grenades.yml @@ -23,7 +23,7 @@ intensitySlope: 3 totalIntensity: 100 canCreateVacuum: false - - type: OnUseTimerTrigger + - type: TimerTrigger beepSound: path: "/Audio/Effects/beep1.ogg" params: diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Throwable/scattering_grenades.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Throwable/scattering_grenades.yml index ebf220127e..a2f8de23e4 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Throwable/scattering_grenades.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Throwable/scattering_grenades.yml @@ -13,7 +13,7 @@ capacity: 20 fillPrototype: SyndyFlashGrenade distance: 4 - - type: OnUseTimerTrigger + - type: TimerTrigger initialBeepDelay: 0 beepInterval: 0.5 delay: 3.5 @@ -49,7 +49,7 @@ fillPrototype: SyndieMiniBomb distance: 4 capacity: 3 - - type: OnUseTimerTrigger + - type: TimerTrigger beepSound: path: "/Audio/Effects/minibombcountdown.ogg" params: diff --git a/Resources/Prototypes/_Sunrise/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/_Sunrise/Entities/Structures/Machines/vending_machines.yml index c1f9cacc49..9387175702 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Structures/Machines/vending_machines.yml @@ -9,8 +9,9 @@ offState: off brokenState: broken normalState: normal-unshaded - - type: Advertise - pack: BarberAds + - type: Vocalizer + - type: DatasetVocalizer + dataset: BarberAds - type: AccessReader access: [["Barber", "Service"]] - type: SpeakOnUIClosed @@ -41,8 +42,9 @@ brokenState: broken normalState: normal-unshaded initialStockQuality: 0.33 - - type: Advertise - pack: DiscountDansAds + - type: Vocalizer + - type: DatasetVocalizer + dataset: DiscountDansAds - type: SpeakOnUIClosed pack: DiscountDansGoodbyes - type: Speech @@ -75,8 +77,9 @@ normalState: normal-unshaded ejectState: eject-unshaded denyState: deny-unshaded - - type: Advertise - pack: HonkersAds + - type: Vocalizer + - type: DatasetVocalizer + dataset: HonkersAds - type: AccessReader access: [["Theatre"]] - type: SpeakOnUIClosed diff --git a/Resources/Prototypes/_Sunrise/FleshCult/mobs.yml b/Resources/Prototypes/_Sunrise/FleshCult/mobs.yml index 69a715d7ab..4a10eaf1a0 100644 --- a/Resources/Prototypes/_Sunrise/FleshCult/mobs.yml +++ b/Resources/Prototypes/_Sunrise/FleshCult/mobs.yml @@ -316,7 +316,7 @@ - type: TriggerOnMobstateChange mobState: - Dead - - type: TriggerImplantAction + - type: TriggerOnActivateImplant - type: ExplodeOnTrigger - type: Explosive explosionType: Flesh diff --git a/Resources/Prototypes/_Sunrise/FleshCult/spider_web.yml b/Resources/Prototypes/_Sunrise/FleshCult/spider_web.yml index 97652b2b90..fcf4ad2972 100644 --- a/Resources/Prototypes/_Sunrise/FleshCult/spider_web.yml +++ b/Resources/Prototypes/_Sunrise/FleshCult/spider_web.yml @@ -1,25 +1,40 @@ - type: entity - parent: SpiderWeb + parent: SpiderWebBase id: FleshSpiderWeb name: spider web description: It's stringy and sticky. - placement: - mode: SnapgridCenter - snap: - - Wall components: - type: Sprite - sprite: _Sunrise/FleshCult/fleshspiderweb.rsi - layers: - - state: spider_web_1 - map: [ "spiderWebLayer" ] - drawdepth: WallMountedItems - - type: GenericVisualizer - visuals: - enum.SpiderWebVisuals.Variant: - spiderWebLayer: - 1: {state: spider_web_1} - 2: {state: spider_web_2} + color: "#f02b1d" + - type: Fixtures + fixtures: + fix1: + hard: false + density: 7 + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.5" + layer: + - MidImpassable + - type: Destructible + thresholds: + - trigger: # Excess damage, don't spawn entities + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - trigger: + !type:DamageTrigger + damage: 10 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:SpawnEntitiesBehavior + spawn: + MaterialWebSilk: + min: 0 + max: 1 - type: SpeedModifierContacts walkSpeedModifier: 0.2 sprintSpeedModifier: 0.2 diff --git a/Resources/Prototypes/_Sunrise/GameRules/subgamemodes.yml b/Resources/Prototypes/_Sunrise/GameRules/subgamemodes.yml index fd2c6574d5..10df1cccb1 100644 --- a/Resources/Prototypes/_Sunrise/GameRules/subgamemodes.yml +++ b/Resources/Prototypes/_Sunrise/GameRules/subgamemodes.yml @@ -1,30 +1,3 @@ -- type: entity - parent: BaseGameRule - id: Changeling - components: - - type: GameRule - delay: - min: 600 - max: 900 - - type: ChangelingRule - - type: AntagObjectives - objectives: - - ChangelingStealDNAObjective - - ChangelingSurviveObjective - - type: AntagRandomObjectives - sets: - - groups: ChangelingObjectiveGroups - maxDifficulty: 7 - - type: AntagSelection - agentName: changeling-roundend-name - definitions: - - prefRoles: [ Changeling ] - max: 3 - playerRatio: 30 - lateJoinAdditional: true - mindRoles: - - MindRoleChangeling - - type: entity parent: BaseGameRule id: Vampire diff --git a/Resources/Prototypes/_Sunrise/Objectives/changeling.yml b/Resources/Prototypes/_Sunrise/Objectives/changeling.yml deleted file mode 100644 index ea8affff5c..0000000000 --- a/Resources/Prototypes/_Sunrise/Objectives/changeling.yml +++ /dev/null @@ -1,197 +0,0 @@ -- type: entity - abstract: true - parent: BaseObjective - id: BaseChangelingObjective - components: - - type: Objective - difficulty: 1.5 - issuer: objective-issuer-hivemind - - type: RoleRequirement - roles: - - ChangelingRole - -- type: entity - parent: [BaseChangelingObjective, BaseSurviveObjective] - id: ChangelingSurviveObjective - name: Survive - description: I must survive no matter what. - components: - - type: Objective - icon: - sprite: Changeling/changeling_abilities.rsi - state: stasis_exit - -#Kill -- type: entity - parent: [BaseChangelingObjective, BaseKillObjective] - id: ChangelingKillRandomPersonObjective - description: Do it however you like, just make sure they don't make it to centcomm. - components: - - type: Objective - difficulty: 2.5 - unique: false - - type: TargetObjective - title: objective-condition-kill-person-title - - type: PickRandomPerson - - type: KillPersonCondition - requireDead: true - -- type: entity - parent: [BaseChangelingObjective, BaseKillObjective] - id: ChangelingKillRandomAntagObjective - description: - components: - - type: Objective - difficulty: 3.0 - unique: true - - type: TargetObjective - title: objective-condition-kill-antag-title - - type: PickRandomAntag - - type: KillPersonCondition - requireDead: true - -- type: entity - parent: BaseChangelingObjective - id: ChangelingAbsorbObjective - components: - - type: Objective - difficulty: 0 - icon: - sprite: Mobs/Demons/abomination.rsi - state: dead - - type: NumberObjective - min: 2 - max: 4 - title: objective-condition-absorb-title - description: objective-condition-absorb-description - - type: AbsorbCondition - -- type: entity - parent: BaseChangelingObjective - id: ChangelingStealDNAObjective - components: - - type: Objective - difficulty: 0 - icon: - sprite: Mobs/Species/Human/organs.rsi - state: brain - - type: NumberObjective - min: 6 - max: 9 - title: objective-condition-stealdna-title - description: objective-condition-stealdna-description - - type: StealDNACondition - -- type: entity - parent: BaseChangelingObjective - id: EscapeIdentityObjective - description: I need to escape on the evacuation shuttle. Undercover. - components: - - type: Objective - difficulty: 0 - icon: - sprite: Objects/Magic/magicactions.rsi - state: blink - - type: ImpersonateCondition - - type: TargetObjective - title: objective-condition-escape-identity-title - - type: PickRandomPerson - -- type: entity - abstract: true - parent: [BaseChangelingObjective, BaseStealObjective] - id: BaseChangelingStealObjective - components: - - type: StealCondition - verifyMapExistence: true - - type: Objective - difficulty: 2.75 - - type: ObjectiveLimit - limit: 2 - -- type: entity - parent: BaseChangelingStealObjective - id: CMOHyposprayChangelingStealObjective - components: - - type: NotJobRequirement - job: ChiefMedicalOfficer - - type: StealCondition - owner: job-name-cmo - stealGroup: Hypospray - -- type: entity - parent: BaseChangelingStealObjective - id: RDHardsuitChangelingStealObjective - components: - - type: NotJobRequirement - job: ResearchDirector - - type: StealCondition - owner: job-name-rd - stealGroup: ClothingOuterHardsuitRd - - type: Objective - difficulty: 1 - -- type: entity - parent: BaseChangelingStealObjective - id: EnergyShotgunChangelingStealObjective - components: - - type: Objective - difficulty: 2 - - type: NotJobRequirement - job: HeadOfSecurity - - type: StealCondition - stealGroup: WeaponEnergyShotgun - owner: job-name-hos - -- type: entity - parent: BaseChangelingStealObjective - id: MagbootsChangelingStealObjective - components: - - type: NotJobRequirement - job: ChiefEngineer - - type: StealCondition - stealGroup: ClothingShoesBootsMagAdv - owner: job-name-ce - -- type: entity - parent: BaseChangelingStealObjective - id: ClipboardChangelingStealObjective - components: - - type: NotJobRequirement - job: Quartermaster - - type: StealCondition - stealGroup: BoxFolderQmClipboard - owner: job-name-qm - -- type: entity - abstract: true - parent: BaseChangelingStealObjective - id: BaseCaptainChangelingObjective - components: - - type: Objective - difficulty: 2.5 - - type: NotJobRequirement - job: Captain - -- type: entity - parent: BaseCaptainChangelingObjective - id: CaptainIDChangelingStealObjective - components: - - type: StealCondition - stealGroup: CaptainIDCard - -- type: entity - parent: BaseCaptainChangelingObjective - id: CaptainJetpackChangelingStealObjective - components: - - type: StealCondition - stealGroup: JetpackCaptainFilled - -- type: entity - parent: BaseCaptainChangelingObjective - id: CaptainGunChangelingStealObjective - components: - - type: StealCondition - stealGroup: WeaponAntiqueLaser - owner: job-name-captain - diff --git a/Resources/Prototypes/_Sunrise/Roles/MindRoles/mind_roles.yml b/Resources/Prototypes/_Sunrise/Roles/MindRoles/mind_roles.yml index e93bb67fa0..5bf42d2a6e 100644 --- a/Resources/Prototypes/_Sunrise/Roles/MindRoles/mind_roles.yml +++ b/Resources/Prototypes/_Sunrise/Roles/MindRoles/mind_roles.yml @@ -42,17 +42,6 @@ roleType: TeamAntagonist - type: PlanetPrisonerRole -- type: entity - parent: BaseMindRoleAntag - id: MindRoleChangeling - name: Changeling Role - components: - - type: MindRole - antagPrototype: Changeling - exclusiveAntag: true - roleType: SoloAntagonist - - type: ChangelingRole - - type: entity parent: BaseMindRoleAntag id: MindRoleVampire diff --git a/Resources/Prototypes/_Sunrise/Structures/Computers/atm.yml b/Resources/Prototypes/_Sunrise/Structures/Computers/atm.yml index 10dffd0ae7..1bdeb47682 100644 --- a/Resources/Prototypes/_Sunrise/Structures/Computers/atm.yml +++ b/Resources/Prototypes/_Sunrise/Structures/Computers/atm.yml @@ -93,8 +93,9 @@ visible: false - type: Computer board: FPIATMComputerCircuitboard - - type: Advertise - pack: ATMAds + - type: Vocalizer + - type: DatasetVocalizer + dataset: ATMAds minimumWait: 120 maximumWait: 240 - type: SpeakOnUIClosed diff --git a/Resources/Prototypes/_Sunrise/Structures/Machines/vending_machines.yml b/Resources/Prototypes/_Sunrise/Structures/Machines/vending_machines.yml index c89c3571e8..e11ef0cb80 100644 --- a/Resources/Prototypes/_Sunrise/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/_Sunrise/Structures/Machines/vending_machines.yml @@ -31,8 +31,9 @@ # brokenState: broken # normalState: normal-unshaded # ejectState: eject-unshaded No sprite, see chefvend/dinnerware/BODA/etc for expamples - #- type: Advertise - # pack: MailDrobeAds +# - type: Vocalizer +# - type: DatasetVocalizer +# dataset: MailDrobeAds - type: Sprite sprite: _Sunrise/Structures/Machines/VendingMachines/maildrobe.rsi layers: @@ -80,8 +81,9 @@ brokenState: broken normalState: normal-unshaded denyState: deny-unshaded - - type: Advertise - pack: PaintVendAds + - type: Vocalizer + - type: DatasetVocalizer + dataset: PaintVendAds - type: Sprite sprite: _Sunrise/Structures/Machines/VendingMachines/paintvend.rsi layers: diff --git a/Resources/Prototypes/_Sunrise/ai_factions.yml b/Resources/Prototypes/_Sunrise/ai_factions.yml index 08f959d8d8..c754e8472d 100644 --- a/Resources/Prototypes/_Sunrise/ai_factions.yml +++ b/Resources/Prototypes/_Sunrise/ai_factions.yml @@ -1,21 +1,3 @@ -- type: npcFaction - id: Changeling - hostile: - - NanoTrasen - - Syndicate - - SimpleHostile - - Xeno - - Zombie - - PetsNT - - Revolutionary - - AllHostile - - Thief - - Carps - - Vampire - - Flesh - - FleshHuman - - BloodCult - - type: npcFaction id: Thief hostile: @@ -26,7 +8,6 @@ - Zombie - AllHostile - Carps - - Changeling - Vampire - Flesh - FleshHuman @@ -47,7 +28,6 @@ - AllHostile - Thief - Vampire - - Changeling - Flesh - FleshHuman - BloodCult @@ -65,7 +45,6 @@ - AllHostile - Thief - Carps - - Changeling - Flesh - FleshHuman - BloodCult diff --git a/Resources/Prototypes/_Sunrise/secret_weights.yml b/Resources/Prototypes/_Sunrise/secret_weights.yml index 5601070027..05c7dd6c7d 100644 --- a/Resources/Prototypes/_Sunrise/secret_weights.yml +++ b/Resources/Prototypes/_Sunrise/secret_weights.yml @@ -3,51 +3,51 @@ - type: weightedRandom id: SunriseSecret weights: - Traitor: 0.47 - BloodCult: 0.10 - AssaultOps: 0.10 - Revolutionary: 0.10 - Nukeops: 0.10 - Extra: 0.10 + Traitor: 0.2 + BloodCult: 0.1 + AssaultOps: 0.1 + Revolutionary: 0.1 + Nukeops: 0.1 + Changeling: 0.1 FleshCult: 0.1 - Wizard: 0.01 - Zombie: 0.01 + Wizard: 0.1 + Zombie: 0.1 - type: weightedRandom id: FishSecret weights: - Traitor: 0.47 - BloodCult: 0.10 - AssaultOps: 0.10 - Revolutionary: 0.10 - Nukeops: 0.10 - Extra: 0.10 + Traitor: 0.2 + BloodCult: 0.1 + AssaultOps: 0.1 + Revolutionary: 0.1 + Nukeops: 0.1 + Changeling: 0.1 FleshCult: 0.1 - Wizard: 0.01 - Zombie: 0.01 + Wizard: 0.1 + Zombie: 0.1 - type: weightedRandom id: LustSpectralSecret weights: - Traitor: 0.47 - BloodCult: 0.10 - AssaultOps: 0.10 - Revolutionary: 0.10 - Nukeops: 0.10 - Extra: 0.10 + Traitor: 0.2 + BloodCult: 0.1 + AssaultOps: 0.1 + Revolutionary: 0.1 + Nukeops: 0.1 + Changeling: 0.1 FleshCult: 0.1 - Wizard: 0.01 - Zombie: 0.01 + Wizard: 0.1 + Zombie: 0.1 - type: weightedRandom id: LustVenusSecret weights: - Traitor: 0.47 - BloodCult: 0.10 - AssaultOps: 0.10 - Revolutionary: 0.10 - Nukeops: 0.10 - Extra: 0.10 + Traitor: 0.2 + BloodCult: 0.1 + AssaultOps: 0.1 + Revolutionary: 0.1 + Nukeops: 0.1 + Changeling: 0.1 FleshCult: 0.1 - Wizard: 0.01 - Zombie: 0.01 + Wizard: 0.1 + Zombie: 0.1 diff --git a/Resources/Prototypes/ai_factions.yml b/Resources/Prototypes/ai_factions.yml index 8ac7456e9c..54f5c4e5ad 100644 --- a/Resources/Prototypes/ai_factions.yml +++ b/Resources/Prototypes/ai_factions.yml @@ -13,7 +13,6 @@ - Wizard # Sunrise Edit - Thief - - Changeling - Vampire - FleshHuman - Flesh @@ -34,7 +33,6 @@ # Sunrise Edit - Thief - Carps - - Changeling - Vampire - Flesh - BloodCult @@ -80,7 +78,6 @@ # Sunrise Edit - Thief - Carps - - Changeling - Vampire - FleshHuman - Flesh @@ -104,7 +101,6 @@ # Sunrise Edit - Thief - Carps - - Changeling - Vampire - FleshHuman - Flesh @@ -126,7 +122,6 @@ # Sunrise Edit - Thief - Carps - - Changeling - Vampire - FleshHuman - Flesh @@ -149,7 +144,6 @@ # Sunrise Edit - Thief - Carps - - Changeling - Vampire - FleshHuman - Flesh @@ -167,7 +161,6 @@ - Dragon # Sunrise Edit - Carps - - Changeling - Vampire - FleshHuman - Flesh @@ -192,7 +185,6 @@ # Sunrise Edit - Thief - Carps - - Changeling - Vampire - FleshHuman - Flesh @@ -217,7 +209,6 @@ # Sunrise Edit - Thief - Carps - - Changeling - Vampire - FleshHuman - Flesh @@ -243,7 +234,6 @@ # Sunrise Edit - Thief - Carps - - Changeling - Vampire - FleshHuman - Flesh diff --git a/Resources/Textures/Changeling/Guidebook/guidebook_changeling.rsi/icon.png b/Resources/Textures/Changeling/Guidebook/guidebook_changeling.rsi/icon.png deleted file mode 100644 index b0a671bf4a..0000000000 Binary files a/Resources/Textures/Changeling/Guidebook/guidebook_changeling.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Changeling/Guidebook/guidebook_changeling.rsi/meta.json b/Resources/Textures/Changeling/Guidebook/guidebook_changeling.rsi/meta.json deleted file mode 100644 index 23850a83e4..0000000000 --- a/Resources/Textures/Changeling/Guidebook/guidebook_changeling.rsi/meta.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi , modified by DrSmugleaf and whateverusername0", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon", - "delays": [ [ 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1 ] ] - } - ] -} diff --git a/Resources/Textures/Changeling/arm_blade.rsi/icon.png b/Resources/Textures/Changeling/arm_blade.rsi/icon.png deleted file mode 100644 index 94bfbcc365..0000000000 Binary files a/Resources/Textures/Changeling/arm_blade.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Changeling/arm_blade.rsi/inhand-left.png b/Resources/Textures/Changeling/arm_blade.rsi/inhand-left.png deleted file mode 100644 index 7ee864de99..0000000000 Binary files a/Resources/Textures/Changeling/arm_blade.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Changeling/arm_blade.rsi/inhand-right.png b/Resources/Textures/Changeling/arm_blade.rsi/inhand-right.png deleted file mode 100644 index 10e69a7ef1..0000000000 Binary files a/Resources/Textures/Changeling/arm_blade.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Changeling/arm_blade.rsi/meta.json b/Resources/Textures/Changeling/arm_blade.rsi/meta.json deleted file mode 100644 index 9ef5a5f7d0..0000000000 --- a/Resources/Textures/Changeling/arm_blade.rsi/meta.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "taken from tg at https://github.com/tgstation/tgstation/blob/master/icons/obj/changeling_items.dmi and edited by https://github.com/RealFakeSoof", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "inhand-left", - "directions" : 4, - "delays": [ - [ 0.5, 0.5 ], - [ 0.5, 0.5 ], - [ 0.5, 0.5 ], - [ 0.5, 0.5 ] - ] - }, - { - "name": "inhand-right", - "directions" : 4, - "delays": [ - [ 0.5, 0.5 ], - [ 0.5, 0.5 ], - [ 0.5, 0.5 ], - [ 0.5, 0.5 ] - ] - } - ] -} diff --git a/Resources/Textures/Changeling/bone_shard.rsi/icon.png b/Resources/Textures/Changeling/bone_shard.rsi/icon.png deleted file mode 100644 index 7661444b00..0000000000 Binary files a/Resources/Textures/Changeling/bone_shard.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Changeling/bone_shard.rsi/meta.json b/Resources/Textures/Changeling/bone_shard.rsi/meta.json deleted file mode 100644 index a4cc335ab8..0000000000 --- a/Resources/Textures/Changeling/bone_shard.rsi/meta.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "version": 1, - "license": "CC0-1.0", - "copyright": "https://github.com/RealFakeSoof with references from deltanedas (github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - } - ] -} diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/absorb_dna.png b/Resources/Textures/Changeling/changeling_abilities.rsi/absorb_dna.png deleted file mode 100644 index 391abb092f..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/absorb_dna.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/anatomic_panacea.png b/Resources/Textures/Changeling/changeling_abilities.rsi/anatomic_panacea.png deleted file mode 100644 index 348e6bc318..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/anatomic_panacea.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/armblade.png b/Resources/Textures/Changeling/changeling_abilities.rsi/armblade.png deleted file mode 100644 index 5964de5538..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/armblade.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/augmented_eyesight.png b/Resources/Textures/Changeling/changeling_abilities.rsi/augmented_eyesight.png deleted file mode 100644 index f80ae10c88..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/augmented_eyesight.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/biodegrade.png b/Resources/Textures/Changeling/changeling_abilities.rsi/biodegrade.png deleted file mode 100644 index 902205d203..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/biodegrade.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/bone_shard.png b/Resources/Textures/Changeling/changeling_abilities.rsi/bone_shard.png deleted file mode 100644 index de7b3ba28a..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/bone_shard.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/chameleon_skin.png b/Resources/Textures/Changeling/changeling_abilities.rsi/chameleon_skin.png deleted file mode 100644 index f2e5fb28e6..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/chameleon_skin.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/chitinous_armor.png b/Resources/Textures/Changeling/changeling_abilities.rsi/chitinous_armor.png deleted file mode 100644 index 1c8e18ecc8..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/chitinous_armor.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/epinephrine_overdose.png b/Resources/Textures/Changeling/changeling_abilities.rsi/epinephrine_overdose.png deleted file mode 100644 index aec8e4fcf9..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/epinephrine_overdose.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/evolution_menu.png b/Resources/Textures/Changeling/changeling_abilities.rsi/evolution_menu.png deleted file mode 100644 index a68fa0544d..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/evolution_menu.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/fleshmend.png b/Resources/Textures/Changeling/changeling_abilities.rsi/fleshmend.png deleted file mode 100644 index 0f0b3f0ed4..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/fleshmend.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/hivemind_access.png b/Resources/Textures/Changeling/changeling_abilities.rsi/hivemind_access.png deleted file mode 100644 index a0405d5f6c..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/hivemind_access.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/lesser_form.png b/Resources/Textures/Changeling/changeling_abilities.rsi/lesser_form.png deleted file mode 100644 index 5b287d37b7..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/lesser_form.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/meta.json b/Resources/Textures/Changeling/changeling_abilities.rsi/meta.json deleted file mode 100644 index e85f2a54fa..0000000000 --- a/Resources/Textures/Changeling/changeling_abilities.rsi/meta.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken and edited from Paradise Station wiki https://paradisestation.org/wiki/index.php/Changeling , sting_transform and sting_armblade retextures made by whateverusername0", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "absorb_dna" - }, - { - "name": "anatomic_panacea" - }, - { - "name": "armblade" - }, - { - "name": "augmented_eyesight" - }, - { - "name": "biodegrade" - }, - { - "name": "bone_shard" - }, - { - "name": "chameleon_skin", - "delays": [ [ 0.1, 0.1, 0.1, 0.1 ] ] - }, - { - "name": "chitinous_armor" - }, - { - "name": "epinephrine_overdose" - }, - { - "name": "evolution_menu" - }, - { - "name": "fleshmend" - }, - { - "name": "hivemind_access" - }, - { - "name": "lesser_form" - }, - { - "name": "organic_shield" - }, - { - "name": "shriek_dissonant" - }, - { - "name": "shriek_resonant" - }, - { - "name": "space_adaptation" - }, - { - "name": "stasis_enter" - }, - { - "name": "stasis_exit", - "delays": [ [ 0.5, 0.5 ] ] - }, - { - "name": "sting_armblade" - }, - { - "name": "sting_blind" - }, - { - "name": "sting_cryo" - }, - { - "name": "sting_extractdna" - }, - { - "name": "sting_lethargic" - }, - { - "name": "sting_mute" - }, - { - "name": "sting_transform" - }, - { - "name": "strained_muscles" - }, - { - "name": "tentacle" - }, - { - "name": "transform" - }, - { - "name": "transform_cycle" - } - ] -} diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/organic_shield.png b/Resources/Textures/Changeling/changeling_abilities.rsi/organic_shield.png deleted file mode 100644 index 1fc5524e2d..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/organic_shield.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/shriek_dissonant.png b/Resources/Textures/Changeling/changeling_abilities.rsi/shriek_dissonant.png deleted file mode 100644 index 88e6918624..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/shriek_dissonant.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/shriek_resonant.png b/Resources/Textures/Changeling/changeling_abilities.rsi/shriek_resonant.png deleted file mode 100644 index 1f75903bb4..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/shriek_resonant.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/space_adaptation.png b/Resources/Textures/Changeling/changeling_abilities.rsi/space_adaptation.png deleted file mode 100644 index 762e6a79a7..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/space_adaptation.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/stasis_enter.png b/Resources/Textures/Changeling/changeling_abilities.rsi/stasis_enter.png deleted file mode 100644 index 95b6448748..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/stasis_enter.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/stasis_exit.png b/Resources/Textures/Changeling/changeling_abilities.rsi/stasis_exit.png deleted file mode 100644 index ad5a30b7c3..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/stasis_exit.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_armblade.png b/Resources/Textures/Changeling/changeling_abilities.rsi/sting_armblade.png deleted file mode 100644 index 5eca795087..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_armblade.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_blind.png b/Resources/Textures/Changeling/changeling_abilities.rsi/sting_blind.png deleted file mode 100644 index 4d3e48c7bc..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_blind.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_cryo.png b/Resources/Textures/Changeling/changeling_abilities.rsi/sting_cryo.png deleted file mode 100644 index b935074af0..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_cryo.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_extractdna.png b/Resources/Textures/Changeling/changeling_abilities.rsi/sting_extractdna.png deleted file mode 100644 index 390660021d..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_extractdna.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_lethargic.png b/Resources/Textures/Changeling/changeling_abilities.rsi/sting_lethargic.png deleted file mode 100644 index 53283dcac9..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_lethargic.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_mute.png b/Resources/Textures/Changeling/changeling_abilities.rsi/sting_mute.png deleted file mode 100644 index f4f1c41726..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_mute.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_transform.png b/Resources/Textures/Changeling/changeling_abilities.rsi/sting_transform.png deleted file mode 100644 index b06ec7fa88..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/sting_transform.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/strained_muscles.png b/Resources/Textures/Changeling/changeling_abilities.rsi/strained_muscles.png deleted file mode 100644 index 0bc4ca3177..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/strained_muscles.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/tentacle.png b/Resources/Textures/Changeling/changeling_abilities.rsi/tentacle.png deleted file mode 100644 index f09b036552..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/tentacle.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/transform.png b/Resources/Textures/Changeling/changeling_abilities.rsi/transform.png deleted file mode 100644 index daa38687e3..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/transform.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_abilities.rsi/transform_cycle.png b/Resources/Textures/Changeling/changeling_abilities.rsi/transform_cycle.png deleted file mode 100644 index fab4a3dcb0..0000000000 Binary files a/Resources/Textures/Changeling/changeling_abilities.rsi/transform_cycle.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/0.png b/Resources/Textures/Changeling/changeling_biomass.rsi/0.png deleted file mode 100644 index e6dea8ec56..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/0.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/1.png b/Resources/Textures/Changeling/changeling_biomass.rsi/1.png deleted file mode 100644 index 626313e674..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/1.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/10.png b/Resources/Textures/Changeling/changeling_biomass.rsi/10.png deleted file mode 100644 index 17316fd6c3..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/10.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/11.png b/Resources/Textures/Changeling/changeling_biomass.rsi/11.png deleted file mode 100644 index d5060df98b..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/11.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/12.png b/Resources/Textures/Changeling/changeling_biomass.rsi/12.png deleted file mode 100644 index 093cbf1033..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/12.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/13.png b/Resources/Textures/Changeling/changeling_biomass.rsi/13.png deleted file mode 100644 index 2df6df47dd..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/13.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/14.png b/Resources/Textures/Changeling/changeling_biomass.rsi/14.png deleted file mode 100644 index 2b4dc8e0cb..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/14.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/15.png b/Resources/Textures/Changeling/changeling_biomass.rsi/15.png deleted file mode 100644 index 36ca36b9fa..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/15.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/16.png b/Resources/Textures/Changeling/changeling_biomass.rsi/16.png deleted file mode 100644 index a58d33d1e7..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/16.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/2.png b/Resources/Textures/Changeling/changeling_biomass.rsi/2.png deleted file mode 100644 index a7f6210c9e..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/2.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/3.png b/Resources/Textures/Changeling/changeling_biomass.rsi/3.png deleted file mode 100644 index ae0e391e1c..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/3.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/4.png b/Resources/Textures/Changeling/changeling_biomass.rsi/4.png deleted file mode 100644 index 36d867d3b8..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/4.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/5.png b/Resources/Textures/Changeling/changeling_biomass.rsi/5.png deleted file mode 100644 index a49d8830b6..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/5.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/6.png b/Resources/Textures/Changeling/changeling_biomass.rsi/6.png deleted file mode 100644 index 994c2fb5bd..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/6.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/7.png b/Resources/Textures/Changeling/changeling_biomass.rsi/7.png deleted file mode 100644 index deede1c64c..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/7.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/8.png b/Resources/Textures/Changeling/changeling_biomass.rsi/8.png deleted file mode 100644 index 8740017517..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/8.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/9.png b/Resources/Textures/Changeling/changeling_biomass.rsi/9.png deleted file mode 100644 index eda5f02551..0000000000 Binary files a/Resources/Textures/Changeling/changeling_biomass.rsi/9.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_biomass.rsi/meta.json b/Resources/Textures/Changeling/changeling_biomass.rsi/meta.json deleted file mode 100644 index 12f5ad4cdb..0000000000 --- a/Resources/Textures/Changeling/changeling_biomass.rsi/meta.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from cmss13 at https://github.com/cmss13-devs/cmss13/blob/09a5191fb11aab8ddffe3f9be94292b53e4d96f6/icons/mob/hud/alien_standard.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "16" - }, - { - "name": "15" - }, - { - "name": "14" - }, - { - "name": "13" - }, - { - "name": "12" - }, - { - "name": "11" - }, - { - "name": "10" - }, - { - "name": "9" - }, - { - "name": "8" - }, - { - "name": "7" - }, - { - "name": "6" - }, - { - "name": "5" - }, - { - "name": "4" - }, - { - "name": "3" - }, - { - "name": "2" - }, - { - "name": "1" - }, - { - "name": "0", - "delays": [ [ 0.1, 0.1 ] ] - } - ] -} diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/0.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/0.png deleted file mode 100644 index bb1a8a818a..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/0.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/1.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/1.png deleted file mode 100644 index ab9936e2a6..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/1.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/10.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/10.png deleted file mode 100644 index 9ef25d0043..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/10.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/11.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/11.png deleted file mode 100644 index af2190ad8e..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/11.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/12.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/12.png deleted file mode 100644 index 061ffac41a..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/12.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/13.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/13.png deleted file mode 100644 index 26c1870e72..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/13.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/14.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/14.png deleted file mode 100644 index 99c7f452f1..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/14.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/15.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/15.png deleted file mode 100644 index 61536f9e5c..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/15.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/16.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/16.png deleted file mode 100644 index 9c054691a6..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/16.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/17.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/17.png deleted file mode 100644 index aafe104caa..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/17.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/18.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/18.png deleted file mode 100644 index 6a7b5a75d8..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/18.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/2.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/2.png deleted file mode 100644 index f6b5880efe..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/2.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/3.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/3.png deleted file mode 100644 index 7028b90245..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/3.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/4.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/4.png deleted file mode 100644 index a1175788b8..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/4.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/5.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/5.png deleted file mode 100644 index b1cd396c1e..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/5.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/6.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/6.png deleted file mode 100644 index a7733d59ee..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/6.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/7.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/7.png deleted file mode 100644 index a0f02d6a37..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/7.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/8.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/8.png deleted file mode 100644 index e701948378..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/8.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/9.png b/Resources/Textures/Changeling/changeling_chemicals.rsi/9.png deleted file mode 100644 index 8ac5c24934..0000000000 Binary files a/Resources/Textures/Changeling/changeling_chemicals.rsi/9.png and /dev/null differ diff --git a/Resources/Textures/Changeling/changeling_chemicals.rsi/meta.json b/Resources/Textures/Changeling/changeling_chemicals.rsi/meta.json deleted file mode 100644 index 8d646c4f49..0000000000 --- a/Resources/Textures/Changeling/changeling_chemicals.rsi/meta.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from cmss13 at https://github.com/cmss13-devs/cmss13/blob/09a5191fb11aab8ddffe3f9be94292b53e4d96f6/icons/mob/hud/alien_standard.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "0" - }, - { - "name": "1", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "2", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "3", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "4", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "5", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "6", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "7", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "8", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "9", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "10", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "11", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "12", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "13", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "14", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "15", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "16", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "17", - "delays": [ [ 0.3, 0.1 ] ] - }, - { - "name": "18", - "delays": [ [ 0.3, 0.1 ] ] - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/Changeling/ling_armor.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Changeling/ling_armor.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index cee98c3e60..0000000000 Binary files a/Resources/Textures/Changeling/ling_armor.rsi/equipped-OUTERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Changeling/ling_armor.rsi/icon.png b/Resources/Textures/Changeling/ling_armor.rsi/icon.png deleted file mode 100644 index 18f0de148d..0000000000 Binary files a/Resources/Textures/Changeling/ling_armor.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Changeling/ling_armor.rsi/meta.json b/Resources/Textures/Changeling/ling_armor.rsi/meta.json deleted file mode 100644 index b8872a3c05..0000000000 --- a/Resources/Textures/Changeling/ling_armor.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/master/icons/mob/clothing/suit.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/Changeling/ling_armor_helmet.rsi/equipped-HELMET.png b/Resources/Textures/Changeling/ling_armor_helmet.rsi/equipped-HELMET.png deleted file mode 100644 index cb4bdb9ebc..0000000000 Binary files a/Resources/Textures/Changeling/ling_armor_helmet.rsi/equipped-HELMET.png and /dev/null differ diff --git a/Resources/Textures/Changeling/ling_armor_helmet.rsi/icon.png b/Resources/Textures/Changeling/ling_armor_helmet.rsi/icon.png deleted file mode 100644 index 822c8e519b..0000000000 Binary files a/Resources/Textures/Changeling/ling_armor_helmet.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Changeling/ling_armor_helmet.rsi/meta.json b/Resources/Textures/Changeling/ling_armor_helmet.rsi/meta.json deleted file mode 100644 index f564695227..0000000000 --- a/Resources/Textures/Changeling/ling_armor_helmet.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tg at https://github.com/tgstation/tgstation/blob/master/icons/mob/clothing/head.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/Changeling/ling_spacesuit.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Changeling/ling_spacesuit.rsi/equipped-OUTERCLOTHING.png deleted file mode 100644 index c3b4280843..0000000000 Binary files a/Resources/Textures/Changeling/ling_spacesuit.rsi/equipped-OUTERCLOTHING.png and /dev/null differ diff --git a/Resources/Textures/Changeling/ling_spacesuit.rsi/icon.png b/Resources/Textures/Changeling/ling_spacesuit.rsi/icon.png deleted file mode 100644 index 27bcc7fe79..0000000000 Binary files a/Resources/Textures/Changeling/ling_spacesuit.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Changeling/ling_spacesuit.rsi/meta.json b/Resources/Textures/Changeling/ling_spacesuit.rsi/meta.json deleted file mode 100644 index ffa6adf456..0000000000 --- a/Resources/Textures/Changeling/ling_spacesuit.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "whateverusername0", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-OUTERCLOTHING", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/Changeling/ling_spacesuit_helmet.rsi/equipped-HELMET.png b/Resources/Textures/Changeling/ling_spacesuit_helmet.rsi/equipped-HELMET.png deleted file mode 100644 index 27a959da55..0000000000 Binary files a/Resources/Textures/Changeling/ling_spacesuit_helmet.rsi/equipped-HELMET.png and /dev/null differ diff --git a/Resources/Textures/Changeling/ling_spacesuit_helmet.rsi/icon.png b/Resources/Textures/Changeling/ling_spacesuit_helmet.rsi/icon.png deleted file mode 100644 index acb1c73720..0000000000 Binary files a/Resources/Textures/Changeling/ling_spacesuit_helmet.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Changeling/ling_spacesuit_helmet.rsi/meta.json b/Resources/Textures/Changeling/ling_spacesuit_helmet.rsi/meta.json deleted file mode 100644 index a40d761820..0000000000 --- a/Resources/Textures/Changeling/ling_spacesuit_helmet.rsi/meta.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "whateverusername0", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/Changeling/shields.rsi/ling-icon.png b/Resources/Textures/Changeling/shields.rsi/ling-icon.png deleted file mode 100644 index 7c8bd92433..0000000000 Binary files a/Resources/Textures/Changeling/shields.rsi/ling-icon.png and /dev/null differ diff --git a/Resources/Textures/Changeling/shields.rsi/ling-inhand-left.png b/Resources/Textures/Changeling/shields.rsi/ling-inhand-left.png deleted file mode 100644 index 5f9c0fb576..0000000000 Binary files a/Resources/Textures/Changeling/shields.rsi/ling-inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Changeling/shields.rsi/ling-inhand-right.png b/Resources/Textures/Changeling/shields.rsi/ling-inhand-right.png deleted file mode 100644 index 0e91383eff..0000000000 Binary files a/Resources/Textures/Changeling/shields.rsi/ling-inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Changeling/shields.rsi/meta.json b/Resources/Textures/Changeling/shields.rsi/meta.json deleted file mode 100644 index a7ffc69df7..0000000000 --- a/Resources/Textures/Changeling/shields.rsi/meta.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/ParadiseSS13/Paradise/blob/master/icons/obj/weapons/shield.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "ling-icon" - }, - { - "name": "ling-inhand-left", - "directions": 4 - }, - { - "name": "ling-inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json index 2dc8b5f33e..afd13c1e67 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json @@ -11,11 +11,22 @@ "name": "icon" }, { - "name": "equipped-HELMET", + "name": "icon-flash" + }, + { + "name": "on-equipped-HELMET", "directions": 4 }, { - "name": "equipped-HELMET-vox", + "name": "off-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-equipped-HELMET-vox", + "directions": 4 + }, + { + "name": "off-equipped-HELMET-vox", "directions": 4 }, { diff --git a/Resources/Textures/Interface/Misc/job_icons.rsi/Changeling.png b/Resources/Textures/Interface/Misc/job_icons.rsi/Changeling.png deleted file mode 100644 index 95be439460..0000000000 Binary files a/Resources/Textures/Interface/Misc/job_icons.rsi/Changeling.png and /dev/null differ diff --git a/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json b/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json index 2c9cfc0f8d..b753e71118 100644 --- a/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json +++ b/Resources/Textures/Interface/Misc/job_icons.rsi/meta.json @@ -181,9 +181,9 @@ { "name": "HeadRevolutionary" }, - { - "name": "Magistrat" - }, + { + "name": "Magistrat" + }, { "name": "MindShield", "delays": [ @@ -211,9 +211,6 @@ { "name": "ParadoxClone" }, - { - "name": "Changeling" - }, { "name": "Vampire" }