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