From 72a63f90c5c347c28f6525dd67e2a8f34ffc5f68 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 6 Apr 2025 08:33:40 +0300 Subject: [PATCH] Variant Latent Psychics (#2176) # Description This PR adds a dedicated "Psionics" tab to the traits menu, where every single Psionics related trait has been moved to. It includes subcategories for Psicaster Type, Feats, and Powers. There are currently 3 different variants of "Psicaster", two of which are new. **Latent Psychic**: Exactly as before with Psionics V3. No changes here. **PsychoHistorian**: A new variant psicaster that enjoys significantly faster power development, with a heavy focus on "Utility" powers. As a tradeoff, they can ONLY obtain utility powers. **Elementalist**: The second new variant psicaster type. Elementalists have the option to buy powers directly from the Anomalist power category. The tradeoff here is that these are the only powers they will ever have. Elementalists will never generate new powers during a round, and cannot gain Potentia. All 3 Psicaster Types have their own dedicated "Shop" that is accessed via the Powers tab in the traits menu. They each have their own separate costs and availabilities. They also all 3 have their own random power charts. # TODO

Media

![image](https://github.com/user-attachments/assets/916e205a-2c9b-4728-b37f-751f532cf23e)

# Changelog :cl: - add: Added a dedicated Psionics tab to the Traits menu. - add: Added PsychoHistorian as a new psionic variant. PsychoHistorians have significantly faster new power generation, but are strictly limited to the Mentalics power category. They essentially only get "Utility" powers. PsychoHistorians have Telepathy as a free bonus power. - add: Added Elementalist as a new psionic variant. Elementalists do not generate new powers at all during the round. Instead, they purchase powers directly at character creation, using the Anomalist powers category. - add: @#$%(*&FAREWELL, FRIEND. @#&#^!@*(&^$I @*#$&^@#$% WAS @#$@#$*&^@#$ALWAYS A *&#^@$@#THOUSAND *(&@^#$TIMES *(@#$(*&MORE *(&^*&(EVIL ^&*((*&^THAN (*&^&*(^%*(&THOU! (cherry picked from commit 7cc86ec5558c6fbe42cdfc4cd61ac31e4bd69232) --- .../BloodCult/Spells/BloodCultSpellsSystem.cs | 5 + .../Systems/CharacterRequirements.Profile.cs | 2 +- Content.Shared/Magic/ISpeakSpell.cs | 1 + Content.Shared/Magic/SharedMagicSystem.cs | 9 +- .../BloodCult/Items/CultItemSystem.cs | 15 +- .../WhiteDream/BloodCult/Spells/Events.cs | 3 + Resources/Locale/en-US/traits/categories.ftl | 6 +- Resources/Locale/en-US/traits/psionics.ftl | 40 ++ .../en-US/traits/psychoHistorianPowers.ftl | 17 + Resources/Locale/en-US/traits/traits.ftl | 19 +- Resources/Migrations/eeMigration.yml | 3 + .../Psionics/castingTypes.yml | 12 + .../Catalog/Fills/Lockers/epistemics.yml | 1 - .../Entities/Objects/Weapons/Melee/knives.yml | 3 - .../Objectives/stealTargetGroups.yml | 6 - .../Nyanotrasen/Objectives/traitor.yml | 11 - .../Roles/Jobs/Epistemics/forensicmantis.yml | 12 +- .../Prototypes/Psionics/PsionicPowerPool.yml | 23 + .../Prototypes/Psionics/mantisPowers.yml | 87 ++++ .../Roles/Jobs/Civilian/chaplain.yml | 15 +- .../Roles/Jobs/Civilian/librarian.yml | 11 +- .../Roles/Jobs/Science/research_director.yml | 8 +- .../Traits/Psionics/casterTypes.yml | 134 +++++ .../Traits/Psionics/elementalistShop.yml | 103 ++++ .../Prototypes/Traits/Psionics/feats.yml | 234 +++++++++ .../Prototypes/Traits/Psionics/latentShop.yml | 160 ++++++ .../Traits/Psionics/psychoHistorianShop.yml | 104 ++++ Resources/Prototypes/Traits/categories.yml | 19 +- Resources/Prototypes/Traits/mental.yml | 485 ------------------ Resources/Prototypes/Traits/skills.yml | 79 --- 30 files changed, 992 insertions(+), 635 deletions(-) create mode 100644 Resources/Locale/en-US/traits/psionics.ftl create mode 100644 Resources/Locale/en-US/traits/psychoHistorianPowers.ftl create mode 100644 Resources/Prototypes/CharacterItemGroups/Psionics/castingTypes.yml delete mode 100644 Resources/Prototypes/Nyanotrasen/Objectives/stealTargetGroups.yml create mode 100644 Resources/Prototypes/Psionics/mantisPowers.yml create mode 100644 Resources/Prototypes/Traits/Psionics/casterTypes.yml create mode 100644 Resources/Prototypes/Traits/Psionics/elementalistShop.yml create mode 100644 Resources/Prototypes/Traits/Psionics/feats.yml create mode 100644 Resources/Prototypes/Traits/Psionics/latentShop.yml create mode 100644 Resources/Prototypes/Traits/Psionics/psychoHistorianShop.yml delete mode 100644 Resources/Prototypes/Traits/mental.yml diff --git a/Content.Server/WhiteDream/BloodCult/Spells/BloodCultSpellsSystem.cs b/Content.Server/WhiteDream/BloodCult/Spells/BloodCultSpellsSystem.cs index 5b5bc05a1c..369afd0f48 100644 --- a/Content.Server/WhiteDream/BloodCult/Spells/BloodCultSpellsSystem.cs +++ b/Content.Server/WhiteDream/BloodCult/Spells/BloodCultSpellsSystem.cs @@ -9,6 +9,7 @@ using Content.Shared.Actions.Events; using Content.Shared.Clothing.Components; using Content.Shared.DoAfter; using Content.Shared.Inventory; +using Content.Shared.Magic; using Content.Shared.Mindshield.Components; using Content.Shared.Popups; using Content.Shared.RadialSelector; @@ -34,6 +35,7 @@ public sealed class BloodCultSpellsSystem : EntitySystem [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly StatusEffectsSystem _statusEffects = default!; [Dependency] private readonly UserInterfaceSystem _ui = default!; + [Dependency] private readonly SharedMagicSystem _magicSystem = default!; public override void Initialize() { @@ -177,6 +179,9 @@ public sealed class BloodCultSpellsSystem : EntitySystem if (ev.Handled) return; + if (ev.Speech is not null) + _magicSystem.Speak(ev.Performer, ev.Speech, ev.InvokeChatType); + foreach (var (slot, protoId) in ev.Prototypes) { var entity = Spawn(protoId, _transform.GetMapCoordinates(ev.Performer)); diff --git a/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs b/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs index e1e878ad93..8d37e49f84 100644 --- a/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs +++ b/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs @@ -425,6 +425,6 @@ public sealed partial class CharacterItemGroupRequirement : CharacterRequirement ("group", Loc.GetString($"character-item-group-{Group}")), ("max", group.MaxItems)); - return count < group.MaxItems; + return !Inverted ? count < group.MaxItems : count >= group.MaxItems - 1; } } diff --git a/Content.Shared/Magic/ISpeakSpell.cs b/Content.Shared/Magic/ISpeakSpell.cs index 30e7f5a2de..6b7e8feb62 100644 --- a/Content.Shared/Magic/ISpeakSpell.cs +++ b/Content.Shared/Magic/ISpeakSpell.cs @@ -9,5 +9,6 @@ public interface ISpeakSpell // The speak n spell interface /// public string? Speech { get; } + [DataField] public InGameICChatType ChatType { get; } } diff --git a/Content.Shared/Magic/SharedMagicSystem.cs b/Content.Shared/Magic/SharedMagicSystem.cs index b0a9fef75d..adcbc873ad 100644 --- a/Content.Shared/Magic/SharedMagicSystem.cs +++ b/Content.Shared/Magic/SharedMagicSystem.cs @@ -2,6 +2,7 @@ using Content.Shared.Actions; using Content.Shared.Body.Components; using Content.Shared.Body.Systems; +using Content.Shared.Chat; using Content.Shared.Coordinates.Helpers; using Content.Shared.Doors.Components; using Content.Shared.Doors.Systems; @@ -508,7 +509,7 @@ public abstract class SharedMagicSystem : EntitySystem // When any spell is cast it will raise this as an event, so then it can be played in server or something. At least until chat gets moved to shared // TODO: Temp until chat is in shared - private void Speak(BaseActionEvent args) + public void Speak(BaseActionEvent args) { if (args is not ISpeakSpell speak || string.IsNullOrWhiteSpace(speak.Speech)) return; @@ -516,4 +517,10 @@ public abstract class SharedMagicSystem : EntitySystem var ev = new SpeakSpellEvent(args.Performer, speak.Speech, speak.ChatType); RaiseLocalEvent(ref ev); } + + public void Speak(EntityUid uid, string speech, InGameICChatType inGameICChatType) + { + var ev = new SpeakSpellEvent(uid, speech, inGameICChatType); + RaiseLocalEvent(ref ev); + } } diff --git a/Content.Shared/WhiteDream/BloodCult/Items/CultItemSystem.cs b/Content.Shared/WhiteDream/BloodCult/Items/CultItemSystem.cs index 13e51214e0..280f178552 100644 --- a/Content.Shared/WhiteDream/BloodCult/Items/CultItemSystem.cs +++ b/Content.Shared/WhiteDream/BloodCult/Items/CultItemSystem.cs @@ -33,7 +33,7 @@ public sealed class CultItemSystem : EntitySystem private void OnActivate(Entity item, ref ActivateInWorldEvent args) { - if (CanUse(args.User)) + if (CanUse(args.User, item)) return; args.Handled = true; @@ -42,7 +42,7 @@ public sealed class CultItemSystem : EntitySystem private void OnUseInHand(Entity item, ref UseInHandEvent args) { - if (CanUse(args.User) || + if (CanUse(args.User, item) || // Allow non-cultists to remove embedded cultist weapons and getting knocked down afterwards on pickup (TryComp(item.Owner, out var embeddable) && embeddable.Target != null)) return; @@ -53,7 +53,7 @@ public sealed class CultItemSystem : EntitySystem private void OnBeforeGettingThrown(Entity item, ref BeforeGettingThrownEvent args) { - if (CanUse(args.PlayerUid)) + if (CanUse(args.PlayerUid, item)) return; args.Cancelled = true; @@ -62,7 +62,7 @@ public sealed class CultItemSystem : EntitySystem private void OnEquipAttempt(Entity item, ref BeingEquippedAttemptEvent args) { - if (CanUse(args.EquipTarget)) + if (CanUse(args.EquipTarget, item)) return; args.Cancel(); @@ -71,7 +71,7 @@ public sealed class CultItemSystem : EntitySystem private void OnMeleeAttempt(Entity item, ref AttemptMeleeEvent args) { - if (CanUse(args.PlayerUid)) + if (CanUse(args.PlayerUid, item)) return; args.Cancelled = true; @@ -80,7 +80,7 @@ public sealed class CultItemSystem : EntitySystem private void OnBeforeBlocking(Entity item, ref BeforeBlockingEvent args) { - if (CanUse(args.User)) + if (CanUse(args.User, item)) return; args.Cancel(); @@ -99,5 +99,6 @@ public sealed class CultItemSystem : EntitySystem _hands.TryDrop(user); } - private bool CanUse(EntityUid? uid) => HasComp(uid) || HasComp(uid); + private bool CanUse(EntityUid? uid, Entity item) => + item.Comp.AllowUseToEveryone || HasComp(uid) || HasComp(uid); } diff --git a/Content.Shared/WhiteDream/BloodCult/Spells/Events.cs b/Content.Shared/WhiteDream/BloodCult/Spells/Events.cs index 6bc91b12ca..ccca7d94ba 100644 --- a/Content.Shared/WhiteDream/BloodCult/Spells/Events.cs +++ b/Content.Shared/WhiteDream/BloodCult/Spells/Events.cs @@ -62,6 +62,9 @@ public sealed partial class SummonEquipmentEvent : InstantActionEvent, ISpeakSpe [DataField] public bool Force { get; set; } = true; + [DataField] + public InGameICChatType InvokeChatType = InGameICChatType.Whisper; + public InGameICChatType ChatType => InGameICChatType.Whisper; } diff --git a/Resources/Locale/en-US/traits/categories.ftl b/Resources/Locale/en-US/traits/categories.ftl index 2bd4b7ba49..e2662e0757 100644 --- a/Resources/Locale/en-US/traits/categories.ftl +++ b/Resources/Locale/en-US/traits/categories.ftl @@ -4,8 +4,12 @@ trait-category-Uncategorized = Uncategorized trait-category-Auditory = Auditory trait-category-Mental = Mental trait-category-Physical = Physical +trait-category-Psionics = Psionics +trait-category-TraitsPsionicsCasterTypes = Psicaster Type +trait-category-TraitsPsionicsFeats = Feats +trait-category-TraitsPsionicsPowers = Powers trait-category-Speech = Speech trait-category-TraitsSpeechUncategorized = Uncategorized trait-category-TraitsSpeechAccents = Accents trait-category-TraitsSpeechLanguages = Languages -trait-category-Visual = Visual \ No newline at end of file +trait-category-Visual = Visual diff --git a/Resources/Locale/en-US/traits/psionics.ftl b/Resources/Locale/en-US/traits/psionics.ftl new file mode 100644 index 0000000000..37a22c9674 --- /dev/null +++ b/Resources/Locale/en-US/traits/psionics.ftl @@ -0,0 +1,40 @@ +character-item-group-TraitsCasterType = Psicaster Type + +trait-name-LatentPsychic = Latent Psychic +trait-description-LatentPsychic = + Your mind and soul are open to the noosphere, allowing for use of Telepathy. + Thus, you are eligible for potentially receiving psychic powers. + It is possible that you may be hunted by otherworldly forces, so consider keeping your powers a secret. + Latent psychics have no special abilities, modifiers, or unique features compared to other psions. + However they can become more or less anything given time and resources. + +trait-name-PsionicInsulation = χ Waveform Misalignment +trait-description-PsionicInsulation = + You are a flesh automaton animated by neurotransmitters. Within your skull lies a + 1.5kg sack of meat pretending at sentience. By modern epistemiological theory, you aren't even a sophont. + The good news is that you are immune to most positive and negative effects of psychic powers. + There may be other consequences to this malady. + +trait-name-Elementalist = Elementalist +trait-description-Elementalist = + 'Elementalists' are a rare and modern form of Psion, noted for their potential for bombastic feats of "Kinesis". + So rare were these individuals, that at one point in time they were known by titles such as Sorcerer, or Magician, if they weren't a charlatan that is. + As an Elementalist, your talent for developing new powers is severely limited. + Yet despite this tradeoff, your powers are more exclusively the realm of flashy and dangerous. You will never generate any powers known as "Mentalics". + You are almost certainly going to be hunted. Let others know what you can do at the peril of your very soul. + + - You can never "roll" new powers. The powers you buy at character creation are all you will ever have. + - Your available powers are strictly limited to "Kinetics". + - You will never be Telepathic. + +trait-name-PsychoHistorian = Psycho-Historian +trait-description-PsychoHistorian = + Psycho-Historians are a fairly common and well-studied branch of psionic users, whose powers are documented in the public domain + as far back as the 1970s on Earth. Mythological accounts of such individuals can also be traced back thousands of years. Today, + Psycho-Historians make up the overwhelming bulk of the Epistemics Cult's awakened members. Your powers are generally regarded as "Safe", as they + exclusively interact from one mind to another without need of interacting with extra-planar forces. However, you will never be able + to learn any powers known as "Kinesis". + + - Your powers are developed at a significantly faster rate than other psychics. + - Your available powers are strictly limited to "Mentalics" + - You are automatically considered Telepathic. diff --git a/Resources/Locale/en-US/traits/psychoHistorianPowers.ftl b/Resources/Locale/en-US/traits/psychoHistorianPowers.ftl new file mode 100644 index 0000000000..561e624d10 --- /dev/null +++ b/Resources/Locale/en-US/traits/psychoHistorianPowers.ftl @@ -0,0 +1,17 @@ +# All of the descriptions are intentionally omitted. +trait-name-PsychoHistorianAssayPower = Assay +trait-name-PsychoHistorianDispelPower = Dispel +trait-name-PsychoHistorianMetapsionicPower = Metapsionic Pulse +trait-name-PsychoHistorianPsychognomyPower = Psychognomy +trait-name-PsychoHistorianXenoglossyPower = Xenoglossy +trait-name-PsychoHistorianTelegnosisPower = Telegnosis +trait-name-PsychoHistorianPsionicInvisibilityPower = Psionic Invisibility + +trait-name-ElementalistShadeskipPower = Shadeskip +trait-name-ElementalistAnoigoPower = Anoigo +trait-name-ElementalistHealingWordPower = Healing Word +trait-name-ElementalistTelekineticPulsePower = Telekinetic Pulse +trait-name-ElementalistNoosphericZapPower = Noospheric Zap +trait-name-ElementalistDarkSwapPower = Dark Swap +trait-name-ElementalistRevivifyPower = Revivify +trait-name-ElementalistPyrokineticFlarePower = Pyrokinetic Flare diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index 1a15235c27..fc98197ed4 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -312,19 +312,6 @@ trait-description-Mystic = trait-name-Singer = Singer trait-description-Singer = You are naturally capable of singing simple melodies with your voice. -trait-name-LatentPsychic = Latent Psychic -trait-description-LatentPsychic = - Your mind and soul are open to the noosphere, allowing for use of Telepathy. - Thus, you are eligible for potentially receiving psychic powers. - It is possible that you may be hunted by otherworldly forces, so consider keeping your powers a secret. - -trait-name-PsionicInsulation = χ Waveform Misalignment -trait-description-PsionicInsulation = - You are a flesh automaton animated by neurotransmitters. Within your skull lies a - 1.5kg sack of meat pretending at sentience. By modern epistemiological theory, you aren't even a sophont. - The good news is that you are immune to most positive and negative effects of psychic powers. - There may be other consequences to this malady. - trait-name-NaturalTelepath = Natural Telepath trait-description-NaturalTelepath = As a naturally occuring Telepath, you are capable of fluent telepathic communication, regardless of @@ -632,11 +619,11 @@ trait-description-Weakling = trait-name-Bodybuilder = Bodybuilder trait-description-Bodybuilder = - Through extensive training or body modification, you have achieved the pinnacle of physique. + Through extensive training or body modification, you have achieved the pinnacle of physique. This trait halves the movement speed penalty when dragging something. trait-name-RestrictedGear = Restricted Gear -trait-description-RestrictedGear = +trait-description-RestrictedGear = Either through personal ownership or theft, you have access to equipment that isn't particularly standard issue. Note that starting with an item [color=red]doesn't certify its legality[/color]. Conceal it or justify it. - (You equip other jobs' items in the loadouts menu) \ No newline at end of file + (You equip other jobs' items in the loadouts menu) diff --git a/Resources/Migrations/eeMigration.yml b/Resources/Migrations/eeMigration.yml index bd171c1862..781c32717b 100644 --- a/Resources/Migrations/eeMigration.yml +++ b/Resources/Migrations/eeMigration.yml @@ -120,3 +120,6 @@ SophicScribe: SophicScribeSpawner # 2024-12-22 VendingMachineRestockSalvageEquipment: null + +# 2025-04-05 Dear Maintainer, say nothing about this. +AntiPsychicKnife: null diff --git a/Resources/Prototypes/CharacterItemGroups/Psionics/castingTypes.yml b/Resources/Prototypes/CharacterItemGroups/Psionics/castingTypes.yml new file mode 100644 index 0000000000..70c5f1f089 --- /dev/null +++ b/Resources/Prototypes/CharacterItemGroups/Psionics/castingTypes.yml @@ -0,0 +1,12 @@ +- type: characterItemGroup + id: TraitsCasterType + maxItems: 1 + items: + - type: trait + id: LatentPsychic + - type: trait # Here for simplifying Yml requirements + id: PsionicInsulation + - type: trait + id: PsychoHistorian + - type: trait + id: Elementalist diff --git a/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Lockers/epistemics.yml b/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Lockers/epistemics.yml index 6fa1145175..0d33932af3 100644 --- a/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Lockers/epistemics.yml +++ b/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Lockers/epistemics.yml @@ -9,7 +9,6 @@ # - id: FlashlightSeclite # Deltav - Detective is in charge of investigating crimes. # - id: ForensicScanner # - id: BoxForensicPad - - id: AntiPsychicKnife - id: FlashlightLantern # DeltaV - To replace their lost flashlight - id: BoxZiptie # DeltaV - Give the mantis some zipties - id: WeaponPistolPsiBreaker # DeltaV - Mantis mindbreaker pistol, see Resources/Prototypes/DeltaV/Entities?Objects/Weapons/Guns/Pistols/pistols.yml diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/knives.yml b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/knives.yml index b5cb96f161..03eb922efd 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/knives.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/knives.yml @@ -30,6 +30,3 @@ - type: Tag tags: - ForensicBeltEquip - - HighRiskItem - - type: StealTarget - stealGroup: AntiPsychicKnife diff --git a/Resources/Prototypes/Nyanotrasen/Objectives/stealTargetGroups.yml b/Resources/Prototypes/Nyanotrasen/Objectives/stealTargetGroups.yml deleted file mode 100644 index 44fece1665..0000000000 --- a/Resources/Prototypes/Nyanotrasen/Objectives/stealTargetGroups.yml +++ /dev/null @@ -1,6 +0,0 @@ -- type: stealTargetGroup - id: AntiPsychicKnife - name: steal-target-anti-psychic-knife - sprite: - sprite: Nyanotrasen/Objects/Weapons/Melee/anti_psychic_knife.rsi - state: icon diff --git a/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml b/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml index eec47b6873..7c69824ef0 100644 --- a/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml +++ b/Resources/Prototypes/Nyanotrasen/Objectives/traitor.yml @@ -1,14 +1,3 @@ -- type: entity - categories: [ HideSpawnMenu ] - parent: BaseTraitorStealObjective - id: MantisKnifeStealObjective - components: - - type: NotJobRequirement - job: ForensicMantis - - type: StealCondition - stealGroup: AntiPsychicKnife - owner: job-name-mantis - #- type: entity # id: BecomeGolemObjective # parent: BaseTraitorObjective diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml index 57271984fc..d1ae556834 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml @@ -22,14 +22,12 @@ inverted: true traits: - Pacifist - - !type:CharacterTraitRequirement - inverted: true - traits: - - ShadowkinBlackeye - !type:CharacterEmployerRequirement inverted: true employers: - Unemployed + - !type:CharacterItemGroupRequirement + group: TraitsCasterType startingGear: ForensicMantisGear icon: "JobIconForensicMantis" supervisors: job-supervisors-rd @@ -44,13 +42,17 @@ components: - type: Psionic powerSlots: 2 + baselinePowerCost: 75 + nextPowerCost: 75 + removable: false + powerPool: PsychoHistorianPowerPool - !type:AddComponentSpecial components: - type: InnatePsionicPowers powersToAdd: - MetapsionicPower - TelepathyPower - - AssayPower + - MantisSummonBlackBlade # Dear Maintainer, say NOTHING about this. - type: startingGear id: ForensicMantisGear diff --git a/Resources/Prototypes/Psionics/PsionicPowerPool.yml b/Resources/Prototypes/Psionics/PsionicPowerPool.yml index 3dcd401801..9741a2f7fe 100644 --- a/Resources/Prototypes/Psionics/PsionicPowerPool.yml +++ b/Resources/Prototypes/Psionics/PsionicPowerPool.yml @@ -1,6 +1,8 @@ - type: weightedRandom id: RandomPsionicPowerPool weights: + MetapsionicPower: 1 + AnoigoPower: 1 DispelPower: 1 #TelegnosisPower: 1 PsionicRegenerationPower: 1 @@ -20,3 +22,24 @@ DarkSwapPower: 0.1 RevivifyPower: 0.3 #wwdp edit end + +- type: weightedRandom + id: PsychoHistorianPowerPool # Significantly trimmed down pool, MUCH faster power generation. Free Telepathy. + weights: + MetapsionicPower: 1 + DispelPower: 1 + TelegnosisPower: 1 + PsionicRegenerationPower: 1 + MassSleepPower: 0.3 + PsionicInvisibilityPower: 0.15 + MindSwapPower: 0.1 + +- type: weightedRandom + id: ElementalistPowerPool # Significantly slower power generation. No Telepathy. + weights: + AnoigoPower: 1 + HealingWordPower: 0.9 + ShadeskipPower: 0.1 + TelekineticPulsePower: 0.15 + PyrokineticFlare: 0.5 + NoosphericZapPower: 0.5 diff --git a/Resources/Prototypes/Psionics/mantisPowers.yml b/Resources/Prototypes/Psionics/mantisPowers.yml new file mode 100644 index 0000000000..257249a516 --- /dev/null +++ b/Resources/Prototypes/Psionics/mantisPowers.yml @@ -0,0 +1,87 @@ +# Dear maintainer, say nothing about this. +# Dear player, do not explain this to anyone. +# Dear random github reader, this file does not exist. +- type: psionicPower + id: MantisSummonBlackBlade + name: Summon Black Blade + powerCategories: + - Mentalic + - Dangerous + initializeFunctions: + - !type:AddPsionicActions + actions: + - ActionMantisSummonBlackBlade + removalFunctions: + - !type:RemovePsionicActions + +- type: entity + id: ActionMantisSummonBlackBlade + name: Summon Black Blade + description: Beckon forth the testament of your sins. + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: WhiteDream/BloodCult/Entities/Items/Weapons/cult_blade.rsi + state: icon + - type: InstantAction + useDelay: 20 + checkCanInteract: false + itemIconStyle: BigAction + icon: + sprite: WhiteDream/BloodCult/Entities/Items/Weapons/cult_blade.rsi + state: icon + event: !type:SummonEquipmentEvent + speech: "I CALL ON THE HEART OF QLIPPOTH, OF WOE AND THE END OF ALL THINGS. TO THIS DOOMED PLANE OF MORTAL MEN, I SHALL BRING A SEA OF BLOOD. TO MY HAND, BLACK BLADE" + invokeChatType: Speak + prototypes: + hand1: MantisBlackBlade + - type: BaseCultSpell + +- type: entity + name: black sword + parent: BaseItem + id: MantisBlackBlade + description: A huge black sword covered in strange runes. It whispers incessantly to its wielder. + components: + - type: Sharp + - type: Sprite + sprite: WhiteDream/BloodCult/Entities/Items/Weapons/cult_blade.rsi + state: icon + - type: MeleeWeapon + wideAnimationRotation: -135 + attackRate: 1.3333 + range: 1.65 + damage: + types: + Slash: 10 + Holy: 15 + heavyDamageBaseModifier: 1.2 + heavyStaminaCost: 10 + maxTargets: 3 + angle: 90 + soundHit: + path: /Audio/Weapons/bladeslice.ogg + - type: AntiPsionicWeapon + punish: false + modifiers: + coefficients: + Slash: 1.5 + Holy: 2 + - type: Item + size: Normal + - type: Clothing + slots: + - back + - type: DisarmMalus + - type: CultItem + allowUseToEveryone: true + - type: PointLight + color: "#793a80" + radius: 1.5 + energy: 12.5 + - type: DeleteOnDrop + - type: AmbientSound + range: 5 + volume: -5 + sound: + path: /Audio/Ambience/anomaly_scary.ogg diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml index 2846f550cb..e93faa60cb 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml @@ -16,19 +16,12 @@ - !type:CharacterTraitRequirement traits: - AnomalousPositronics - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - species: - - Shadowkin - - !type:CharacterTraitRequirement - inverted: true - traits: - - ShadowkinBlackeye - !type:CharacterEmployerRequirement inverted: true employers: - Unemployed + - !type:CharacterItemGroupRequirement + group: TraitsCasterType startingGear: ChaplainGear icon: "JobIconChaplain" supervisors: job-supervisors-rd @@ -42,9 +35,11 @@ - type: BibleUser - type: Psionic powerRollMultiplier: 3 + baselinePowerCost: 150 + nextPowerCost: 150 + powerPool: ElementalistPowerPool - type: InnatePsionicPowers powersToAdd: - - TelepathyPower - HealingWordPower - SummonRemiliaPower diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml index e2040a1f96..b0e7bd89ab 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml @@ -16,14 +16,12 @@ - !type:CharacterTraitRequirement traits: - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - ShadowkinBlackeye - !type:CharacterEmployerRequirement inverted: true employers: - Unemployed + - !type:CharacterItemGroupRequirement + group: TraitsCasterType startingGear: LibrarianGear icon: "JobIconLibrarian" supervisors: job-supervisors-rd @@ -35,10 +33,15 @@ - !type:AddComponentSpecial components: - type: Psionic + baselinePowerCost: 75 + nextPowerCost: 75 + removable: false + powerPool: PsychoHistorianPowerPool - type: InnatePsionicPowers powersToAdd: - XenoglossyPower - TelepathyPower + - AssayPower - type: startingGear diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 84f7383636..d91b91d118 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -4,6 +4,8 @@ description: job-description-rd playTimeTracker: JobResearchDirector requirements: + - !type:CharacterItemGroupRequirement + group: TraitsCasterType - !type:CharacterLogicOrRequirement requirements: - !type:CharacterSpeciesRequirement @@ -13,10 +15,6 @@ - !type:CharacterTraitRequirement traits: - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - ShadowkinBlackeye - !type:CharacterTraitRequirement inverted: true traits: @@ -46,6 +44,8 @@ - type: BibleUser # Nyano - Lets them heal with bibles - type: Psionic # Nyano - They start with telepathic chat powerSlots: 3 + baselinePowerCost: 75 + nextPowerCost: 75 # No that's fully intended that he has the "Full" power pull. Have fun with being a crew-aligned wizard/cultist. - !type:AddImplantSpecial implants: [ MindShieldImplant ] - !type:AddComponentSpecial diff --git a/Resources/Prototypes/Traits/Psionics/casterTypes.yml b/Resources/Prototypes/Traits/Psionics/casterTypes.yml new file mode 100644 index 0000000000..510455eac1 --- /dev/null +++ b/Resources/Prototypes/Traits/Psionics/casterTypes.yml @@ -0,0 +1,134 @@ +- type: trait + id: LatentPsychic + category: TraitsPsionicsCasterTypes + points: -4 + functions: + - !type:TraitAddComponent + components: + - type: Psionic + requirements: + - !type:CharacterItemGroupRequirement + group: TraitsCasterType + - !type:CharacterJobRequirement + inverted: true + jobs: + - Borg + - MedicalBorg + - ResearchDirector + - ForensicMantis + - Chaplain + - Librarian + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterItemGroupRequirement + group: TraitsMachine + +- type: trait + id: PsionicInsulation + category: TraitsPsionicsCasterTypes + points: -10 #Buy a significant disability to get this. + functions: + - !type:TraitAddComponent + components: + - type: PsionicInsulation + - type: Mindbroken + requirements: + - !type:CharacterItemGroupRequirement + group: TraitsCasterType + - !type:CharacterJobRequirement + inverted: true + jobs: + - Borg + - MedicalBorg + - ResearchDirector + - ForensicMantis + - Chaplain + - Librarian + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + +- type: trait + id: PsychoHistorian + category: TraitsPsionicsCasterTypes + points: -4 + functions: + - !type:TraitAddComponent + components: + - type: Psionic + baselinePowerCost: 75 + nextPowerCost: 75 + removable: false + powerPool: PsychoHistorianPowerPool + - !type:TraitAddPsionics + psionicPowers: + - TelepathyPower + requirements: + - !type:CharacterItemGroupRequirement + group: TraitsCasterType + - !type:CharacterJobRequirement + inverted: true + jobs: + - Borg + - MedicalBorg + - ResearchDirector + - ForensicMantis + - Chaplain + - Librarian + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterItemGroupRequirement + group: TraitsMachine + +- type: trait + id: Elementalist + category: TraitsPsionicsCasterTypes + points: -5 + functions: + - !type:TraitAddComponent + components: + - type: Psionic + roller: false + requirements: + - !type:CharacterItemGroupRequirement + group: TraitsCasterType + - !type:CharacterJobRequirement + inverted: true + jobs: + - Borg + - MedicalBorg + - ResearchDirector + - ForensicMantis + - Chaplain + - Librarian + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterItemGroupRequirement + group: TraitsMachine diff --git a/Resources/Prototypes/Traits/Psionics/elementalistShop.yml b/Resources/Prototypes/Traits/Psionics/elementalistShop.yml new file mode 100644 index 0000000000..defd12e358 --- /dev/null +++ b/Resources/Prototypes/Traits/Psionics/elementalistShop.yml @@ -0,0 +1,103 @@ +- type: trait + id: ElementalistAnoigoPower + category: TraitsPsionicsPowers + points: -5 + requirements: + - !type:CharacterTraitRequirement + traits: + - Elementalist + functions: + - !type:TraitAddPsionics + psionicPowers: + - AnoigoPower + +- type: trait + id: ElementalistHealingWordPower + category: TraitsPsionicsPowers + points: -5 + requirements: + - !type:CharacterTraitRequirement + traits: + - Elementalist + functions: + - !type:TraitAddPsionics + psionicPowers: + - HealingWordPower + +- type: trait + id: ElementalistRevivifyPower + category: TraitsPsionicsPowers + points: -10 + requirements: + - !type:CharacterTraitRequirement + traits: + - ElementalistHealingWordPower + functions: + - !type:TraitAddPsionics + psionicPowers: + - RevivifyPower + +- type: trait + id: ElementalistShadeskipPower + category: TraitsPsionicsPowers + points: -3 + requirements: + - !type:CharacterTraitRequirement + traits: + - Elementalist + functions: + - !type:TraitAddPsionics + psionicPowers: + - ShadeskipPower + +- type: trait + id: ElementalistDarkSwapPower + category: TraitsPsionicsPowers + points: -10 + requirements: + - !type:CharacterTraitRequirement + traits: + - ElementalistShadeskipPower + functions: + - !type:TraitAddPsionics + psionicPowers: + - DarkSwapPower + +- type: trait + id: ElementalistTelekineticPulsePower + category: TraitsPsionicsPowers + points: -5 + requirements: + - !type:CharacterTraitRequirement + traits: + - Elementalist + functions: + - !type:TraitAddPsionics + psionicPowers: + - TelekineticPulsePower + +- type: trait + id: ElementalistPyrokineticFlarePower + category: TraitsPsionicsPowers + points: -4 + requirements: + - !type:CharacterTraitRequirement + traits: + - Elementalist + functions: + - !type:TraitAddPsionics + psionicPowers: + - PyrokineticFlare + +- type: trait + id: ElementalistNoosphericZapPower + category: TraitsPsionicsPowers + points: -6 + requirements: + - !type:CharacterTraitRequirement + traits: + - Elementalist + functions: + - !type:TraitAddPsionics + psionicPowers: + - NoosphericZapPower diff --git a/Resources/Prototypes/Traits/Psionics/feats.yml b/Resources/Prototypes/Traits/Psionics/feats.yml new file mode 100644 index 0000000000..0d44592102 --- /dev/null +++ b/Resources/Prototypes/Traits/Psionics/feats.yml @@ -0,0 +1,234 @@ +- type: trait + id: HighPotential + category: TraitsPsionicsFeats + points: -5 + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - PsychoHistorian + - Elementalist + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Oni + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Shadowkin + - !type:CharacterTraitRequirement + inverted: true + traits: + - LowPotential + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitReplaceComponent + components: + - type: PotentiaModifier + potentiaMultiplier: 1.5 + +- type: trait + id: LowPotential + category: TraitsPsionicsFeats + points: 5 + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - PsychoHistorian + - Elementalist + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Oni + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Shadowkin + - !type:CharacterTraitRequirement + inverted: true + traits: + - HighPotential + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitReplaceComponent + components: + - type: PotentiaModifier + potentiaMultiplier: 0.5 + +- type: trait + id: LowAmplification + category: TraitsPsionicsFeats + points: 3 + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - PsychoHistorian + - Elementalist + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Shadowkin + - !type:CharacterTraitRequirement + inverted: true + traits: + - HighAmplification + - PowerOverwhelming + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitAddPsionics + psionicPowers: + - LowAmplification + +- type: trait + id: HighAmplification + category: TraitsPsionicsFeats + points: -3 + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - PsychoHistorian + - Elementalist + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterTraitRequirement + inverted: true + traits: + - LowAmplification + - PowerOverwhelming + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitAddPsionics + psionicPowers: + - HighAmplification + +- type: trait + id: PowerOverwhelming + category: TraitsPsionicsFeats + points: -10 + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - PsychoHistorian + - Elementalist + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterTraitRequirement + inverted: true + traits: + - LowAmplification + - HighAmplification + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitAddPsionics + psionicPowers: + - PowerOverwhelming + +- type: trait + id: LowDampening + category: TraitsPsionicsFeats + points: 3 + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - PsychoHistorian + - Elementalist + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterTraitRequirement + inverted: true + traits: + - HighDampening + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitAddPsionics + psionicPowers: + - LowDampening + +- type: trait + id: HighDampening + category: TraitsPsionicsFeats + points: -3 + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - PsychoHistorian + - Elementalist + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterTraitRequirement + inverted: true + traits: + - LowDampening + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitAddPsionics + psionicPowers: + - HighDampening diff --git a/Resources/Prototypes/Traits/Psionics/latentShop.yml b/Resources/Prototypes/Traits/Psionics/latentShop.yml new file mode 100644 index 0000000000..72d9ca425d --- /dev/null +++ b/Resources/Prototypes/Traits/Psionics/latentShop.yml @@ -0,0 +1,160 @@ +- type: trait + id: DispelPower + category: TraitsPsionicsPowers + points: -4 + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterJobRequirement + inverted: true + jobs: + - ResearchDirector + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitAddPsionics + psionicPowers: + - DispelPower + +- type: trait + id: MetapsionicPower + category: TraitsPsionicsPowers + points: -2 + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterJobRequirement + inverted: true + jobs: + - ResearchDirector + - ForensicMantis + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitAddPsionics + psionicPowers: + - MetapsionicPower + +- type: trait + id: XenoglossyPower + category: TraitsPsionicsPowers + points: -10 + requirements: + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - NaturalTelepath + - !type:CharacterJobRequirement + jobs: + - Chaplain + - ResearchDirector + - ForensicMantis + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterJobRequirement + inverted: true + jobs: + - Librarian + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitAddPsionics + psionicPowers: + - XenoglossyPower + +- type: trait + id: PsychognomyPower + category: TraitsPsionicsPowers + points: -1 + requirements: + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - NaturalTelepath + - !type:CharacterJobRequirement + jobs: + - Chaplain + - ResearchDirector + - ForensicMantis + - Librarian + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitAddPsionics + psionicPowers: + - PsychognomyPower + +- type: trait + id: HealingWordPower + category: TraitsPsionicsPowers + points: -6 + requirements: + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterTraitRequirement + traits: + - LatentPsychic + - !type:CharacterJobRequirement + jobs: + - Librarian + - ForensicMantis + - ResearchDirector + - !type:CharacterLogicOrRequirement + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - IPC + - !type:CharacterTraitRequirement + traits: + - AnomalousPositronics + - !type:CharacterJobRequirement + inverted: true + jobs: + - Chaplain + - !type:CharacterItemGroupRequirement + group: TraitsMachine + functions: + - !type:TraitAddPsionics + psionicPowers: + - HealingWordPower diff --git a/Resources/Prototypes/Traits/Psionics/psychoHistorianShop.yml b/Resources/Prototypes/Traits/Psionics/psychoHistorianShop.yml new file mode 100644 index 0000000000..e7106d80ed --- /dev/null +++ b/Resources/Prototypes/Traits/Psionics/psychoHistorianShop.yml @@ -0,0 +1,104 @@ +- type: trait + id: PsychoHistorianMetapsionicPower + category: TraitsPsionicsPowers + points: -2 + requirements: + - !type:CharacterTraitRequirement + traits: + - PsychoHistorian + functions: + - !type:TraitAddPsionics + psionicPowers: + - MetapsionicPower + +- type: trait + id: PsychoHistorianDispelPower + category: TraitsPsionicsPowers + points: -2 + requirements: + - !type:CharacterTraitRequirement + traits: + - PsychoHistorian + functions: + - !type:TraitAddPsionics + psionicPowers: + - DispelPower + +- type: trait + id: PsychoHistorianTelegnosisPower + category: TraitsPsionicsPowers + points: -5 + requirements: + - !type:CharacterTraitRequirement + traits: + - PsychoHistorian + functions: + - !type:TraitAddPsionics + psionicPowers: + - TelegnosisPower + +# Seriously broken power, should probably bring this back as a single target ability. +# - type: trait +# id: PsychoHistorianMassSleepPower +# category: TraitsPsionicsPowers +# points: -10 +# requirements: +# - !type:CharacterTraitRequirement +# traits: +# - PsychoHistorian +# functions: +# - !type:TraitAddPsionics +# psionicPowers: +# - MassSleepPower + +- type: trait + id: PsychoHistorianPsionicInvisibilityPower + category: TraitsPsionicsPowers + points: -8 + requirements: + - !type:CharacterTraitRequirement + traits: + - PsychoHistorian + functions: + - !type:TraitAddPsionics + psionicPowers: + - PsionicInvisibilityPower + +- type: trait + id: PsychoHistorianXenoglossyPower + category: TraitsPsionicsPowers + points: -2 + requirements: + - !type:CharacterTraitRequirement + traits: + - PsychoHistorian + functions: + - !type:TraitAddPsionics + psionicPowers: + - XenoglossyPower + +- type: trait + id: PsychoHistorianPsychognomyPower + category: TraitsPsionicsPowers + points: -2 + requirements: + - !type:CharacterTraitRequirement + traits: + - PsychoHistorian + functions: + - !type:TraitAddPsionics + psionicPowers: + - PsychognomyPower + +- type: trait + id: PsychoHistorianAssayPower + category: TraitsPsionicsPowers + points: -2 + requirements: + - !type:CharacterTraitRequirement + traits: + - PsychoHistorianMetapsionicPower + functions: + - !type:TraitAddPsionics + psionicPowers: + - AssayPower diff --git a/Resources/Prototypes/Traits/categories.yml b/Resources/Prototypes/Traits/categories.yml index fcd89d5bbe..eb3c513e46 100644 --- a/Resources/Prototypes/Traits/categories.yml +++ b/Resources/Prototypes/Traits/categories.yml @@ -16,6 +16,23 @@ id: Physical root: true +- type: traitCategory + id: Psionics + root: true + subCategories: + - TraitsPsionicsCasterTypes + - TraitsPsionicsFeats + - TraitsPsionicsPowers + +- type: traitCategory + id: TraitsPsionicsCasterTypes + +- type: traitCategory + id: TraitsPsionicsFeats + +- type: traitCategory + id: TraitsPsionicsPowers + - type: traitCategory id: Speech root: true @@ -39,4 +56,4 @@ - type: traitCategory id: Language - root: true \ No newline at end of file + root: true diff --git a/Resources/Prototypes/Traits/mental.yml b/Resources/Prototypes/Traits/mental.yml deleted file mode 100644 index dcf0d1d60e..0000000000 --- a/Resources/Prototypes/Traits/mental.yml +++ /dev/null @@ -1,485 +0,0 @@ -- type: trait - id: HighPotential - category: Mental - points: -5 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - !type:CharacterJobRequirement - jobs: - - Chaplain - - Librarian - - ResearchDirector - - ForensicMantis - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterSpeciesRequirement - inverted: true - species: - - Oni - - !type:CharacterSpeciesRequirement - inverted: true - species: - - Shadowkin - - !type:CharacterTraitRequirement - inverted: true - traits: - - LowPotential - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitReplaceComponent - components: - - type: PotentiaModifier - potentiaMultiplier: 1.5 - -- type: trait - id: LowPotential - category: Mental - points: 5 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - !type:CharacterJobRequirement - jobs: - - Chaplain - - Librarian - - ResearchDirector - - ForensicMantis - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterSpeciesRequirement - inverted: true - species: - - Oni - - !type:CharacterSpeciesRequirement - inverted: true - species: - - Shadowkin - - !type:CharacterTraitRequirement - inverted: true - traits: - - HighPotential - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitReplaceComponent - components: - - type: PotentiaModifier - potentiaMultiplier: 0.5 - -- type: trait - id: LowAmplification - category: Mental - points: 3 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - !type:CharacterJobRequirement - jobs: - - Chaplain - - Librarian - - ResearchDirector - - ForensicMantis - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterSpeciesRequirement - inverted: true - species: - - Shadowkin - - !type:CharacterTraitRequirement - inverted: true - traits: - - HighAmplification - - PowerOverwhelming - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitAddPsionics - psionicPowers: - - LowAmplification - -- type: trait - id: HighAmplification - category: Mental - points: -3 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - !type:CharacterJobRequirement - jobs: - - Chaplain - - Librarian - - ResearchDirector - - ForensicMantis - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - LowAmplification - - PowerOverwhelming - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitAddPsionics - psionicPowers: - - HighAmplification - -- type: trait - id: PowerOverwhelming - category: Mental - points: -10 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - !type:CharacterJobRequirement - jobs: - - Chaplain - - Librarian - - ResearchDirector - - ForensicMantis - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - LowAmplification - - HighAmplification - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitAddPsionics - psionicPowers: - - PowerOverwhelming - -- type: trait - id: LowDampening - category: Mental - points: 3 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - !type:CharacterJobRequirement - jobs: - - Chaplain - - Librarian - - ResearchDirector - - ForensicMantis - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - HighDampening - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitAddPsionics - psionicPowers: - - LowDampening - -- type: trait - id: HighDampening - category: Mental - points: -3 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - !type:CharacterJobRequirement - jobs: - - Chaplain - - Librarian - - ResearchDirector - - ForensicMantis - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - LowDampening - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitAddPsionics - psionicPowers: - - HighDampening - -- type: trait - id: DispelPower - category: Mental - points: -4 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - species: - - Shadowkin # Innate Psionics - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - !type:CharacterJobRequirement - jobs: - - Chaplain - - Librarian - - ForensicMantis - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - ShadowkinBlackeye - - !type:CharacterJobRequirement - inverted: true - jobs: - - ResearchDirector - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitAddPsionics - psionicPowers: - - DispelPower - -- type: trait - id: MetapsionicPower - category: Mental - points: -2 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - species: - - Shadowkin # Innate Psionics - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - !type:CharacterJobRequirement - jobs: - - Chaplain - - Librarian - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - ShadowkinBlackeye - - !type:CharacterJobRequirement - inverted: true - jobs: - - ResearchDirector - - ForensicMantis - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitAddPsionics - psionicPowers: - - MetapsionicPower - -- type: trait - id: XenoglossyPower - category: Mental - points: -10 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - species: - - Shadowkin # Innate Psionics - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - NaturalTelepath - - !type:CharacterJobRequirement - jobs: - - Chaplain - - ResearchDirector - - ForensicMantis - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - ShadowkinBlackeye - - !type:CharacterJobRequirement - inverted: true - jobs: - - Librarian - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitAddPsionics - psionicPowers: - - XenoglossyPower - -- type: trait - id: PsychognomyPower - category: Mental - points: -1 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - species: - - Shadowkin # Innate Psionics - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - NaturalTelepath - - !type:CharacterJobRequirement - jobs: - - Chaplain - - ResearchDirector - - ForensicMantis - - Librarian - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterItemGroupRequirement - group: TraitsMachine - - !type:CharacterTraitRequirement - inverted: true - traits: - - ShadowkinBlackeye - functions: - - !type:TraitAddPsionics - psionicPowers: - - PsychognomyPower - -- type: trait - id: HealingWordPower - category: Mental - points: -6 - requirements: - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - species: - - Shadowkin # Innate Psionics - - !type:CharacterTraitRequirement - traits: - - LatentPsychic - - !type:CharacterJobRequirement - jobs: - - Librarian - - ForensicMantis - - ResearchDirector - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - ShadowkinBlackeye - - !type:CharacterJobRequirement - inverted: true - jobs: - - Chaplain - - !type:CharacterItemGroupRequirement - group: TraitsMachine - functions: - - !type:TraitAddPsionics - psionicPowers: - - HealingWordPower diff --git a/Resources/Prototypes/Traits/skills.yml b/Resources/Prototypes/Traits/skills.yml index 7241fcbd92..03604dfbee 100644 --- a/Resources/Prototypes/Traits/skills.yml +++ b/Resources/Prototypes/Traits/skills.yml @@ -207,85 +207,6 @@ - type: Singer proto: HarpySingerAll -- type: trait - id: LatentPsychic - category: Mental - points: -4 - functions: - - !type:TraitAddComponent - components: - - type: Psionic - requirements: - - !type:CharacterJobRequirement - inverted: true - jobs: - - Borg - - MedicalBorg - - ResearchDirector - - ForensicMantis - - Chaplain - - Librarian - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - Shadowkin - - !type:CharacterTraitRequirement - inverted: true - traits: - - PsionicInsulation - - !type:CharacterItemGroupRequirement - group: TraitsMachine - -- type: trait - id: PsionicInsulation - category: Mental - points: -10 #Buy a significant disability to get this. - functions: - - !type:TraitAddComponent - components: - - type: PsionicInsulation - - type: Mindbroken - requirements: - - !type:CharacterJobRequirement - inverted: true - jobs: - - Borg - - MedicalBorg - - ResearchDirector - - ForensicMantis - - Chaplain - - Librarian - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - IPC - - !type:CharacterTraitRequirement - traits: - - AnomalousPositronics - - !type:CharacterTraitRequirement - inverted: true - traits: - - LatentPsychic - - !type:CharacterLogicOrRequirement - requirements: - - !type:CharacterSpeciesRequirement - inverted: true - species: - - Shadowkin - - type: trait id: NaturalTelepath category: Mental