diff --git a/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt b/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt index aca2a99609..4a3b35de9e 100644 --- a/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt +++ b/Diagnostics/CE-Definitions-GuiPresentation-InvalidSyntaxTranslation-en.txt @@ -863,10 +863,10 @@ FeatGroupGrudgeBearer Description='You have a deep hatred for a particular kind FeatGroupHalfAttributes Description='Half Charisma, Half Constitution, Half Dexterity, Half Intelligence, Half Strength, Half Wisdom'. FeatGroupHalfCharisma Description='Aegis Touched [Cha], Apothecary [Cha], Awaken the Beast [Cha], Baleful Scion [Cha], Blessed Soul [Paladin], Celestial Touched [Cha], Charismatic Defense, Charismatic Precision, Creed of Solasta, Dragon Fear [Cha], Dragon Hide [Cha], Elven Accuracy [Cha], Fey Teleportation [Cha], Flame Touched [Cha], Flames of Phlegethos [Cha], Iridescent Touched [Cha], Menacing, Peregrination Touched [Cha], Retinue Touched [Cha], Second Chance [Cha], Shadow Touched [Cha], Telekinetic [Cha], Toxicologist [Cha], Verdant Touched [Cha]'. FeatGroupHalfConstitution Description='Awaken the Beast [Con], Badlands Marauder, Baleful Scion [Con], Chef [Con], Creed of Arun, Crusher [Con], Dragon Fear [Con], Dragon Hide [Con], Dwarven Fortitude, Enduring Body, Focused Sleeper, Frost Adaptation, Grudge Bearer [Con], Hard to Kill, Hardy [Con], Infernal Constitution, Orcish Aggression [Con], Orcish Fury [Con], Primal Rage [Con], Robust, Second Chance [Con], Sturdiness of the Tundra'. -FeatGroupHalfDexterity Description='Acrobat, Ambidextrous, Athlete [Dex], Awaken the Beast [Dex], Baleful Scion [Dex], Close Quarters [Dex], Creed of Misaye, Devastating Strikes [Dex], Discretion of the Coedymwarth, Eager for Battle, Elven Accuracy [Dex], Fade Away [Dex], Forest Runner, Longsword Finesse, Moderately Armored [Dex], Old Tactics [Dex], Piercer [Dex], Revenant Blade [Dex], Second Chance [Dex], Slasher [Dex], Squat Nimbleness [Dex], Steady Aim, Stealthy, Uncanny Accuracy, Weapon Master [Dex]'. +FeatGroupHalfDexterity Description='Acrobat, Ambidextrous, Athlete [Dex], Awaken the Beast [Dex], Baleful Scion [Dex], Close Quarters [Dex], Creed of Misaye, Devastating Strikes [Dex], Discretion of the Coedymwarth, Eager for Battle, Elven Accuracy [Dex], Fade Away [Dex], Forest Runner, Longsword Finesse, Moderately Armored [Dex], Old Tactics [Dex], Piercer [Dex], Revenant Blade [Dex], Second Chance [Dex], Slasher [Dex], Squat Nimbleness [Dex], Stealthy, Uncanny Accuracy, Weapon Master [Dex]'. FeatGroupHalfIntelligence Description='Aegis Touched [Int], Apothecary [Int], Arcane Defense, Arcane Precision, Arcanist, Awaken the Beast [Int], Baleful Scion [Int], Celestial Touched [Int], Close Quarters [Int], Creed of Pakri, Elven Accuracy [Int], Fade Away [Int], Fey Teleportation [Int], Flame Touched [Int], Flames of Phlegethos [Int], Iridescent Touched [Int], Peregrination Touched [Int], Retinue Touched [Int], Scriber, Shadow Touched [Int], Telekinetic [Int], Theologian, Toxicologist [Int], Verdant Touched [Int]'. -FeatGroupHalfStrength Description='Athlete [Str], Awaken the Beast [Str], Baleful Scion [Str], Creed of Einar, Crusher [Str], Devastating Strikes [Str], Dragon Fear [Str], Dragon Hide [Str], Grudge Bearer [Str], Hardy [Str], Hauler, Heavy Armor Master, Might of the Iron Legion, Moderately Armored [Str], Old Tactics [Str], Orcish Aggression [Str], Orcish Fury [Str], Piercer [Str], Primal Rage [Str], Revenant Blade [Str], Slasher [Str], Squat Nimbleness [Str], Weapon Master [Str]'. -FeatGroupHalfWisdom Description='Aegis Touched [Wis], Apothecary [Wis], Astral Reach, Awaken the Beast [Wis], Baleful Scion [Wis], Blessed Soul [Cleric], Celestial Touched [Wis], Chef [Wis], Creed of Maraike, Elven Accuracy [Wis], Expand the Hunt, Fey Teleportation [Wis], Flame Touched [Wis], Grudge Bearer [Wis], Iridescent Touched [Wis], Peregrination Touched [Wis], Retinue Touched [Wis], Shadow Touched [Wis], Telekinetic [Wis], Toxicologist [Wis], Verdant Touched [Wis], Wise Archery, Wise Defense, Wise Precision'. +FeatGroupHalfStrength Description='Athlete [Str], Awaken the Beast [Str], Baleful Scion [Str], Creed of Einar, Crusher [Str], Devastating Strikes [Str], Dragon Fear [Str], Dragon Hide [Str], Grudge Bearer [Str], Hardy [Str], Hauler, Heavy Armor Master, Might of the Iron Legion, Moderately Armored [Str], Old Tactics [Str], Orcish Aggression [Str], Orcish Fury [Str], Piercer [Str], Primal Rage [Str], Revenant Blade [Str], Slasher [Str], Squat Nimbleness [Str], Thrown Weapons Master, Weapon Master [Str]'. +FeatGroupHalfWisdom Description='Aegis Touched [Wis], Apothecary [Wis], Awaken the Beast [Wis], Baleful Scion [Wis], Blessed Soul [Cleric], Celestial Touched [Wis], Chef [Wis], Creed of Maraike, Elven Accuracy [Wis], Expand the Hunt, Fey Teleportation [Wis], Flame Touched [Wis], Grudge Bearer [Wis], Iridescent Touched [Wis], Peregrination Touched [Wis], Retinue Touched [Wis], Shadow Touched [Wis], Telekinetic [Wis], Toxicologist [Wis], Verdant Touched [Wis], Wise Archery, Wise Defense, Wise Precision'. FeatGroupHardy Description='Increase your Strength or Constitution by 1, to a maximum of 20. Whenever you use your second wind feature, you gain 1D10 + your class level temporary hit points.'. FeatGroupIridescentTouched Description='Increase one of your mental attributes by 1, to a maximum of 20. You gain the ability to cast the color spray, faerie fire and color burst spells once per long rest, and you can cast these spells with your spell slots.'. @@ -1351,6 +1351,9 @@ PowerMetamagicTransmutedSpellDamagePoison Title='Poison Damage'. PowerMetamagicTransmutedSpellDamagePoison Description='Replace the magic effect damage type with Poison Damage.'. PowerMetamagicTransmutedSpellDamageThunder Title='Thunder Damage'. PowerMetamagicTransmutedSpellDamageThunder Description='Replace the magic effect damage type with Thunder Damage.'. +PowerPathOfTheElementsBlizzard Description='While you are raging, all enemy creatures within 5 feet of you at the end of your turn take 1d6 Cold damage. This damage increases to 1d10 at 6th level, 2d6 at 10th level, and 2d10 at 14th level.'. +PowerPathOfTheElementsStorm Description='While you are raging, all enemy creatures within 5 feet of you at the end of your turn take 1d6 Lightning damage. This damage increases to 1d10 at 6th level, 2d6 at 10th level, and 2d10 at 14th level.'. +PowerPathOfTheElementsWildfire Description='While you are raging, all enemy creatures within 5 feet of you at the end of your turn take 1d6 Fire damage. This damage increases to 1d10 at 6th level, 2d6 at 10th level, and 2d10 at 14th level.'. PowerPathOfTheWildMagicDrain Title='Wild Surge: Drain'. PowerPathOfTheWildMagicDrain Description='Each creature within 30 feet of you must succeed on a Constitution saving throw or take 1d12 necrotic damage. You also gain 1d12 temporary hit points.'. PowerPathOfTheWildMagicWildSurgeAura Title='Wild Surge: Aura'. diff --git a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt index 0faeaf9f93..b620f4989e 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt +++ b/Diagnostics/UnfinishedBusinessBlueprints/Assets.txt @@ -771,7 +771,6 @@ ConditionFeatDungeonDelver ConditionDefinition ConditionDefinition a2a29893-ca95 ConditionFeatFlamesOfPhlegethos ConditionDefinition ConditionDefinition 0f2d858f-1d3a-5c61-9cfd-151814083b41 ConditionFeatGreatWeaponDefenseArmorClass ConditionDefinition ConditionDefinition d7f68159-9aa9-51e7-9aa0-e4a66dded588 ConditionFeatGreatWeaponDefenseMovement ConditionDefinition ConditionDefinition b876c72f-d643-54f3-bdad-1ee067c05dbc -ConditionFeatHammerThePointHammerThePoint ConditionDefinition ConditionDefinition 93cd67e0-8f5f-5c97-9116-54f81a11f0ea ConditionFeatMageSlayer ConditionDefinition ConditionDefinition 0eaa80b5-066e-58e5-a99a-c24a408ac20d ConditionFeatMenacingMark ConditionDefinition ConditionDefinition e954a5df-8fde-5da8-9aaf-4fa1181c9ba6 ConditionFeatMobileAfterDash ConditionDefinition ConditionDefinition 6b06ad33-0f23-5d55-8a25-3e12b2d30039 @@ -1127,6 +1126,13 @@ ConditionShelterFromEnergyDamageLightning ConditionDefinition ConditionDefinitio ConditionShelterFromEnergyDamageNecrotic ConditionDefinition ConditionDefinition 3ed7e389-052e-5f56-affb-ea8ee3c22646 ConditionShelterFromEnergyDamageRadiant ConditionDefinition ConditionDefinition b526fa38-0a7e-50ea-a5f2-41de5a744caf ConditionShelterFromEnergyDamageThunder ConditionDefinition ConditionDefinition 7ea42934-33a0-5eac-a2f2-cfe75f9dbd56 +ConditionSickeningRadiance ConditionDefinition ConditionDefinition 8e8f5489-4e47-5457-9038-7e3193e4686e +ConditionSickeningRadianceExhausted1 ConditionDefinition ConditionDefinition 294beaa0-e0ab-568f-9329-0b999035977c +ConditionSickeningRadianceExhausted2 ConditionDefinition ConditionDefinition f5eb4f9d-4c35-5d36-b3a1-fd0376d67ef7 +ConditionSickeningRadianceExhausted3 ConditionDefinition ConditionDefinition 509fb040-ddec-56b5-95c4-71b80fb9f314 +ConditionSickeningRadianceExhausted4 ConditionDefinition ConditionDefinition f1432c9c-b863-51a5-8bf2-dd0534f70b05 +ConditionSickeningRadianceExhausted5 ConditionDefinition ConditionDefinition eddc23ff-9c5e-5fa2-9dac-28c3c4d038e9 +ConditionSickeningRadianceMark ConditionDefinition ConditionDefinition e7c8bace-e63a-541f-a8a1-74ef61590f5a ConditionSignatureSpells ConditionDefinition ConditionDefinition 7d490159-e05b-5c67-ab55-1763b1188d63 ConditionSkinOfRetribution ConditionDefinition ConditionDefinition 756ee728-5506-5f03-b552-b94004839697 ConditionSorcerousSorrAkkathBloodOfSorrAkkath ConditionDefinition ConditionDefinition dc2b991d-480d-56a3-8811-9dddcf7d32e5 @@ -1230,6 +1236,7 @@ ProxyPathOfTheWildMagicGrowth EffectProxyDefinition EffectProxyDefinition 231c2e ProxyPathOfTheWildMagicSummon EffectProxyDefinition EffectProxyDefinition a07f1fcc-0bce-523e-b583-83cc9fed1093 ProxyPetalStorm EffectProxyDefinition EffectProxyDefinition 0e6a068f-fadd-5c5a-8737-b2e2723d7f3f ProxyProtectThreshold EffectProxyDefinition EffectProxyDefinition 2636ab53-e62a-53c9-8104-0521b1d84ca0 +ProxySickeningRadiance EffectProxyDefinition EffectProxyDefinition 3da14e42-a91a-5895-a8a6-fd1573c65fec ProxySpellWeb EffectProxyDefinition EffectProxyDefinition 4b62aa30-af66-5c43-880a-bb4379eeba5a FeatAcrobat FeatDefinition FeatDefinition b721dd41-86b6-53da-a7a7-c844674f46b3 FeatAegisTouchedCha FeatDefinition FeatDefinition 37bb8c57-b4e5-5c13-861d-9be7cde47ea0 @@ -1245,7 +1252,6 @@ FeatArcaneDefense FeatDefinition FeatDefinition cfc34cc9-97b0-5eec-a3ae-2014c544 FeatArcanePrecision FeatDefinition FeatDefinition 4b00a7f0-8ecc-5ac1-84a5-6a96b73d49f6 FeatArcanist FeatDefinition FeatDefinition b3de15dc-e66c-5e9b-9de6-3be9dca25482 FeatArchery FeatDefinitionWithPrerequisites FeatDefinition f1386edb-5dc2-59f3-b379-a506a35108bc -FeatAstralArms FeatDefinition FeatDefinition d52d661c-6596-5206-95de-0687bc6a2d42 FeatAstralReach FeatDefinitionWithPrerequisites FeatDefinition f54d8d34-36e9-5245-a407-b4d96d7a58f1 FeatAthleteDex FeatDefinition FeatDefinition 7d1a1ff0-cf50-53af-8f88-bb6be05a9975 FeatAthleteStr FeatDefinition FeatDefinition 5bce2e12-4225-51af-8c26-9a487dc50851 @@ -1416,7 +1422,6 @@ FeatGroupWeaponMaster FeatDefinition FeatDefinition b5135d1b-4309-5d0e-a75e-36b5 FeatGrudgeBearerCon FeatDefinitionWithPrerequisites FeatDefinition ad80b302-064a-5dad-b483-4fba286a8245 FeatGrudgeBearerStr FeatDefinitionWithPrerequisites FeatDefinition c53d92d3-66e8-5c23-8249-576157d393df FeatGrudgeBearerWis FeatDefinitionWithPrerequisites FeatDefinition edd3a449-64a9-5f81-9899-0dd7de0f146f -FeatHammerThePoint FeatDefinition FeatDefinition dca565d9-a216-5f92-890d-1747c649cbfb FeatHandAndAHalf FeatDefinitionWithPrerequisites FeatDefinition 494a65aa-32fa-5e8a-b1f1-4f3b351b291f FeatHardyCon FeatDefinitionWithPrerequisites FeatDefinition 5071951b-daaf-5905-853e-7c14dde363f4 FeatHardyStr FeatDefinitionWithPrerequisites FeatDefinition 6c01cae2-1420-5459-a5ee-a697bd0ef7a7 @@ -1444,11 +1449,10 @@ FeatMediumArmorDex FeatDefinition FeatDefinition 5cf08c9e-126a-5d79-b085-21952bb FeatMediumArmorMaster FeatDefinition FeatDefinition 54856802-e69c-52bc-969b-79089adfbd67 FeatMediumArmorStr FeatDefinition FeatDefinition 80edeffa-2a0e-55d2-bb69-54bb1c21366e FeatMenacing FeatDefinitionWithPrerequisites FeatDefinition 5a87a730-7598-5f80-8f4b-13499a99099d -FeatMerciless FeatDefinitionWithPrerequisites FeatDefinition f91e4faa-6d59-5cf1-964e-9dd2943ed8e8 +FeatMerciless FeatDefinition FeatDefinition f91e4faa-6d59-5cf1-964e-9dd2943ed8e8 FeatMetamagicAdept FeatDefinitionWithPrerequisites FeatDefinition 2f81cb57-a32f-515e-8a8d-a75c96ef957d FeatMobile FeatDefinition FeatDefinition 18295c91-9f65-57c4-b28d-eaf0711cf5de FeatMonkInitiate FeatDefinition FeatDefinition 5eb46cdf-c9c5-56b7-a66d-a3e747fe80ab -FeatMonkShieldExpert FeatDefinitionWithPrerequisites FeatDefinition 40aae7ca-8def-5541-a01c-e6f6374ec9cf FeatNaturalFluidity FeatDefinitionWithPrerequisites FeatDefinition 0f7ab357-9ce6-5a4e-8833-b25db493c19c FeatOldTacticsDex FeatDefinition FeatDefinition 6431e575-edf1-54b8-a5f6-802e190b9385 FeatOldTacticsStr FeatDefinition FeatDefinition 0aabc417-70b8-56e8-b2ff-c1cc2425bb5d @@ -1464,7 +1468,7 @@ FeatPiercerDex FeatDefinition FeatDefinition 83f56c16-81c6-56ae-bae5-90040b40be9 FeatPiercerStr FeatDefinition FeatDefinition 62e785f0-3e17-5635-97fa-4c97c07b6830 FeatPoisoner FeatDefinitionWithPrerequisites FeatDefinition 4ebd3fe5-310c-5620-a38f-9b40d6e1027b FeatPoisonousSkin FeatDefinition FeatDefinition 4eb4bebb-bd80-58fc-a7d0-832f0013471c -FeatPolearmExpert FeatDefinitionWithPrerequisites FeatDefinition cb389132-d8dc-597c-a510-15ee95d029e7 +FeatPolearmExpert FeatDefinition FeatDefinition cb389132-d8dc-597c-a510-15ee95d029e7 FeatPotentSpellcasterBard FeatDefinitionWithPrerequisites FeatDefinition 786c72cc-a7a0-54d0-bf2c-e0c327c9b71f FeatPotentSpellcasterCleric FeatDefinitionWithPrerequisites FeatDefinition da26887a-efc8-50f9-976d-e77ec117e506 FeatPotentSpellcasterDruid FeatDefinitionWithPrerequisites FeatDefinition 9cdcb7c8-7e11-5211-9b4c-37520b4593ee @@ -1484,16 +1488,16 @@ FeatRetinueTouchedInt FeatDefinition FeatDefinition 65992cc4-5314-571e-b12c-aab1 FeatRetinueTouchedWis FeatDefinition FeatDefinition ec222b4d-37f3-5a42-ba9d-6599a142be6e FeatRevenantGreatSwordDex FeatDefinitionWithPrerequisites FeatDefinition ec489b38-d0ef-5db6-a6c8-374091a91353 FeatRevenantGreatSwordStr FeatDefinitionWithPrerequisites FeatDefinition 9f8126fa-5634-5dc8-b9fa-ae83d8ef01d2 -FeatRopeItUp FeatDefinitionWithPrerequisites FeatDefinition f3b31d3e-1fd9-5aa3-ab73-1ba343a45840 +FeatRopeItUp FeatDefinition FeatDefinition f3b31d3e-1fd9-5aa3-ab73-1ba343a45840 FeatSavageAttack FeatDefinition FeatDefinition 9d9b6ca7-e9ff-5d6f-9a74-d1226e179ef4 FeatSecondChanceCha FeatDefinitionWithPrerequisites FeatDefinition 4990af6f-1705-541a-acb1-1931e88b0af2 FeatSecondChanceCon FeatDefinitionWithPrerequisites FeatDefinition e1376d00-a9ce-53a0-b6cb-4355e46a68b1 FeatSecondChanceDex FeatDefinitionWithPrerequisites FeatDefinition 947401e0-17dc-5f4c-bae5-c092e34a45c9 -FeatSentinel FeatDefinitionWithPrerequisites FeatDefinition 3682aea3-2741-538a-9471-d8d00bf2cd0f +FeatSentinel FeatDefinition FeatDefinition 3682aea3-2741-538a-9471-d8d00bf2cd0f FeatShadowTouchedCha FeatDefinition FeatDefinition 38c0a46e-5443-5fe2-aa4d-c726e0656514 FeatShadowTouchedInt FeatDefinition FeatDefinition b3d92fa6-273c-51c1-8a12-fd52fa5003da FeatShadowTouchedWis FeatDefinition FeatDefinition 19acb877-4540-5570-9223-72393d215b12 -FeatShieldExpert FeatDefinitionWithPrerequisites FeatDefinition 75c0d5b6-2fcf-56ef-8a01-aed0adc45084 +FeatShieldExpert FeatDefinition FeatDefinition 75c0d5b6-2fcf-56ef-8a01-aed0adc45084 FeatShieldTechniques FeatDefinition FeatDefinition c46efc4c-6363-5893-b56f-23f968875f4e FeatSlasherDex FeatDefinition FeatDefinition 2e921b1b-f659-5c0a-83f4-f0a64325017d FeatSlasherStr FeatDefinition FeatDefinition dc98aa3d-c4f7-52a6-ad94-b6666033fe66 @@ -1507,7 +1511,6 @@ FeatSpellSniperWizard FeatDefinition FeatDefinition 5b6f6b6c-c6d2-5863-9b63-ca88 FeatSpiritualFluidity FeatDefinitionWithPrerequisites FeatDefinition 3d0eaf78-8648-5481-be1d-9db2b81d29a5 FeatSquatNimblenessDex FeatDefinitionWithPrerequisites FeatDefinition 84951243-f193-55ce-8476-c6ad3ebf8632 FeatSquatNimblenessStr FeatDefinitionWithPrerequisites FeatDefinition 63675c16-7b29-54d8-8ab9-6911a9e680ee -FeatSteadyAim FeatDefinition FeatDefinition 8f954320-b56c-5ad6-8f80-b375a176c947 FeatStealthy FeatDefinition FeatDefinition 0a96b461-e5a1-55fe-af00-2af177702696 FeatSuperiorCritical FeatDefinitionWithPrerequisites FeatDefinition 0692ff14-3a3b-5996-93b5-7c3286665e60 FeatTacticianAdept FeatDefinitionWithPrerequisites FeatDefinition 6084bfd8-6fd0-5824-9371-547fa6d0da82 @@ -1700,7 +1703,6 @@ AdditionalDamageEnsnaringStrike FeatureDefinitionAdditionalDamage FeatureDefinit AdditionalDamageFeatBalefulScion FeatureDefinitionAdditionalDamage FeatureDefinition 3d0e1aa3-2e86-59ea-a2fa-866313231851 AdditionalDamageFeatCharger FeatureDefinitionAdditionalDamage FeatureDefinition 5e4d30ff-8673-591b-9ff6-833b76bc0696 AdditionalDamageFeatDevastatingStrikes FeatureDefinitionAdditionalDamage FeatureDefinition 784aeecc-2d96-5f0b-ba89-935e4432fa2d -AdditionalDamageFeatHammerThePointHammerThePoint FeatureDefinitionAdditionalDamage FeatureDefinition 26cad3da-5cf3-525a-b070-b8bd8a6f88fc AdditionalDamageFeatOrcishFury FeatureDefinitionAdditionalDamage FeatureDefinition 4164e6e5-bac4-50ea-8b60-03d23bed2641 AdditionalDamageFeatPiercer FeatureDefinitionAdditionalDamage FeatureDefinition 81ab79ca-7744-58e9-b5dc-1049e170defc AdditionalDamageFeatSlayTheEnemies FeatureDefinitionAdditionalDamage FeatureDefinition ba46226a-7f43-5e84-b774-ec3fd026ad08 @@ -1772,7 +1774,6 @@ AdditionalDamageStaggeringSmite FeatureDefinitionAdditionalDamage FeatureDefinit AdditionalDamageStrikeWithTheWind FeatureDefinitionAdditionalDamage FeatureDefinition fd6f9ee6-54aa-5eef-867a-01ba35c35370 AdditionalDamageSuckerPunch FeatureDefinitionAdditionalDamage FeatureDefinition bfc08531-f4aa-58f4-94f7-f0b06ad757a4 AdditionalDamageSunlightBlade FeatureDefinitionAdditionalDamage FeatureDefinition 1bd17141-b9ba-5502-a83b-00a846cf4c39 -AdditionalDamageTacticianTacticalAwareness FeatureDefinitionAdditionalDamage FeatureDefinition 8578c41d-ae85-5346-9f89-020167d17c71 AdditionalDamageTraditionLightRadiantStrikesLuminousKiD6 FeatureDefinitionAdditionalDamage FeatureDefinition 3c4f70ef-3a56-5436-b35a-3228d9e5fdaa AdditionalDamageTraditionLightRadiantStrikesShineD6 FeatureDefinitionAdditionalDamage FeatureDefinition 46d19e1f-83a7-5678-8cd6-edbc7b4b5e7c AdditionalDamageWayOfSilhouetteStrikeTheVitals FeatureDefinitionAdditionalDamage FeatureDefinition faeef1b6-3f34-5a9b-a26f-539f4d3bd1fd @@ -1940,6 +1941,7 @@ AttributeModifierRangerWildMasterHitPoints FeatureDefinitionAttributeModifier Fe AttributeModifierRoguishAcrobatProtector FeatureDefinitionAttributeModifier FeatureDefinition c67d0548-f770-521a-99a5-e8b2c13ed77a AttributeModifierRoguishDuelistSureFooted FeatureDefinitionAttributeModifier FeatureDefinition 909eb80e-64aa-55b2-8460-778554872e7f AttributeModifierRopeItUp FeatureDefinitionAttributeModifier FeatureDefinition 0cb22e4d-85a2-58b6-a418-e3e38de57520 +AttributeModifierSickeningRadianceExhausted4 FeatureDefinitionAttributeModifier FeatureDefinition 86a93483-bc8e-5c63-8b08-36224f6860be AttributeModifierSorcererSorceryPointsBonus2 FeatureDefinitionAttributeModifier FeatureDefinition c83ac082-07a8-539e-b6ae-157e640b3a3c AttributeModifierSorcerousSorrAkkathDarknessAffinity FeatureDefinitionAttributeModifier FeatureDefinition e7705f1d-4447-5473-ab90-afc44a172f5d AttributeModifierSorcerousSpellBladeBattleReflexes FeatureDefinitionAttributeModifier FeatureDefinition 2fa53023-9a27-55ae-a981-42b9aefc5992 @@ -2128,10 +2130,10 @@ CombatAffinityRoguishAcrobatFluidMotions FeatureDefinitionCombatAffinity Feature CombatAffinityRoguishBladeCallerBladeMark FeatureDefinitionCombatAffinity FeatureDefinition 39dca5c9-fd26-5e7b-b7e9-dfc2112b4c52 CombatAffinityRoguishOpportunistExposedWeakness FeatureDefinitionCombatAffinity FeatureDefinition 1f120df2-b5c1-5b8e-8f46-f1adc5d0b8f2 CombatAffinityRoyalKnightSpiritedSurge FeatureDefinitionCombatAffinity FeatureDefinition d42e798e-d827-549d-a6dc-d07844fec664 +CombatAffinitySickeningRadianceExhausted3 FeatureDefinitionCombatAffinity FeatureDefinition ed0bba01-a7af-58ff-b7e1-96650ddf5d76 CombatAffinitySoulExpulsion FeatureDefinitionCombatAffinity FeatureDefinition 2a270517-7b68-53ba-a2c7-36e7b6f36fd1 CombatAffinityStaggeringSmite FeatureDefinitionCombatAffinity FeatureDefinition bec893d0-747c-520d-a494-b5c9551b2c73 CombatAffinityStrikeWithTheWind FeatureDefinitionCombatAffinity FeatureDefinition 4a9706fc-be59-5efb-a679-00d13298b19f -CombatAffinityTacticianTacticalAwareness FeatureDefinitionCombatAffinity FeatureDefinition 9f8adbd8-c957-518c-a49d-c8679f32983b CombatAffinityTaunted FeatureDefinitionCombatAffinity FeatureDefinition 8a9c32ac-8aaa-5888-8a17-1f78d723b3a4 CombatAffinityWayOfSilhouetteSilhouetteStep FeatureDefinitionCombatAffinity FeatureDefinition a926a6b4-aa9f-5279-8aa6-fd357e746f91 CombatAffinityWayOfTheDiscordanceTurmoil FeatureDefinitionCombatAffinity FeatureDefinition 38754e5f-6a63-5bc1-8918-19c944826d34 @@ -2148,17 +2150,13 @@ ConditionAffinityInnovationArtilleristEldritchCannon FeatureDefinitionConditionA ConditionAffinityInnovationWeaponSteelDefenderInitiative FeatureDefinitionConditionAffinity FeatureDefinition c11f32f8-ec69-5ad2-8c43-d6b2743a6640 ConditionAffinityInsaneImmunity FeatureDefinitionConditionAffinity FeatureDefinition 5520ce48-52c7-5280-ac7d-168b75bb79c3 ConditionAffinityIrresistiblePerformanceImmunity FeatureDefinitionConditionAffinity FeatureDefinition 17e4f5dd-eb34-5dcd-b769-59f4521cb60b -ConditionAffinityPathOfTheLightIlluminatedPreventInvisible FeatureDefinitionConditionAffinity FeatureDefinition 4f245846-3fab-593a-aa14-45c19f8edb84 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisible_Green_Hag FeatureDefinitionConditionAffinity FeatureDefinition 0b93e0a9-5118-5d32-9d29-bf0956b6f646 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleBase FeatureDefinitionConditionAffinity FeatureDefinition 5ca9c244-f43c-5ea2-b72b-675db2ff40f5 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleGreater FeatureDefinitionConditionAffinity FeatureDefinition 7e9e7908-f57d-57b6-8653-e3852ae86286 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleOneWithShadows FeatureDefinitionConditionAffinity FeatureDefinition cfbc0e3f-664c-5c4d-a355-16bf8aefb1e0 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleUncatchable FeatureDefinitionConditionAffinity FeatureDefinition 528128e2-1394-50ea-825e-36511027d99c +ConditionAffinityPathOfTheLightIlluminatedPrevent FeatureDefinitionConditionAffinity FeatureDefinition c815cc55-499c-5563-ac65-644765780373 ConditionAffinityPathOfTheSpiritsHonedAnimalAspectsBear FeatureDefinitionConditionAffinity FeatureDefinition 99aef076-2914-5b24-bd13-b09f4cf95bf0 ConditionAffinityPathOfTheSpiritsWolfLeadershipPack FeatureDefinitionConditionAffinity FeatureDefinition 56bca621-33a9-53f3-b952-a2c14dc55a8e ConditionAffinityRangerSurvivalistDeafenedImmunity FeatureDefinitionConditionAffinity FeatureDefinition 7d3479ef-90c8-57a1-9650-fce705a9e7da ConditionAffinityRangerWildMasterBeastCompanion FeatureDefinitionConditionAffinity FeatureDefinition 2bd6cfd4-49bf-5687-9b68-4f3765984ce2 ConditionAffinityRiftWalkerRestrainedImmunity FeatureDefinitionConditionAffinity FeatureDefinition 92cb7a89-3554-567c-a62e-f72c78cd34f1 +ConditionAffinitySickeningRadiance FeatureDefinitionConditionAffinity FeatureDefinition fc61f40d-38f7-5a41-b8fb-d6e4464a3135 CraftingAffinityInventorMagicItemAdept FeatureDefinitionCraftingAffinity FeatureDefinition 26842e0a-9c1e-5740-ad4d-871da69932b1 CustomCodeBarbarianPrimalChampion FeatureDefinition FeatureDefinition 85dac7d1-5e2a-5f02-983b-65b1905810b3 CustomFeatBowMastery FeatureDefinitionAttackModifier FeatureDefinition 212038a4-5bbf-5f46-8cc9-f64d8c5a9470 @@ -2630,7 +2628,7 @@ FeatureSetSpellStoringItem FeatureDefinitionFeatureSet FeatureDefinition 60af9dd FeatureSetTacticianBattleClarity FeatureDefinitionFeatureSet FeatureDefinition f473d7da-4fae-5487-8385-08c181825099 FeatureSetTacticianHonedCraft FeatureDefinitionFeatureSet FeatureDefinition c3440a1e-19b8-5765-9b3a-682310d7f982 FeatureSetTacticianSharpMind FeatureDefinitionFeatureSet FeatureDefinition 4db7f8bb-dad9-5fa6-a85b-db8a535e0484 -FeatureSetTacticianTacticalAwareness FeatureDefinitionFeatureSet FeatureDefinition 706ec4b9-110b-5c3e-b6b5-fb1078e639bf +FeatureSetTacticianTacticalAwareness FeatureDefinition FeatureDefinition 706ec4b9-110b-5c3e-b6b5-fb1078e639bf FeatureSetTieflingFeralDemonicWings FeatureDefinitionFeatureSet FeatureDefinition d96ff7e0-0226-51e9-bc79-d1720563a88f FeatureSetTraditionLightPurityOfLight FeatureDefinitionFeatureSet FeatureDefinition 7acaa801-4e92-5327-a8e2-8e5d27466612 FeatureSetTraditionOpenHandQuiveringPalm FeatureDefinitionFeatureSet FeatureDefinition a9ec5960-aa15-581d-bf38-1a2b1d2d0fe5 @@ -3052,9 +3050,9 @@ PowerClericDivineInterventionImprovementWizard FeatureDefinitionPower FeatureDef PowerClericTurnUndead17 FeatureDefinitionPower FeatureDefinition 99897e79-a7cf-59f2-9ebb-0e835fa832f9 PowerCollegeOfAudacityAudaciousWhirl FeatureDefinitionPower FeatureDefinition 6cbd417e-e3ae-591b-9a60-218423f41191 PowerCollegeOfAudacityDefensiveWhirl FeatureDefinitionPower FeatureDefinition f65588e2-f61c-5696-a8cc-37ae9b68d963 -PowerCollegeOfAudacityMasterfulWhirl FeatureDefinitionPower FeatureDefinition 28130938-f181-5e81-a4b1-6dada78c7f2d PowerCollegeOfAudacityMobileWhirl FeatureDefinitionPower FeatureDefinition d25f08e6-bf49-5263-a074-21f469070669 PowerCollegeOfAudacitySlashingWhirl FeatureDefinitionPower FeatureDefinition 406a2915-7e83-5195-b545-989256071521 +PowerCollegeOfAudacitySlashingWhirlDamage FeatureDefinitionPower FeatureDefinition 75e28f91-6725-5ff1-b803-908a90664530 PowerCollegeOfEleganceAmazingDisplay FeatureDefinitionPower FeatureDefinition 1f5ddcc3-fc67-5649-b3f1-45c76bae6fbc PowerCollegeOfEleganceAmazingDisplayEnemy FeatureDefinitionPower FeatureDefinition 5dc2d4d2-d794-5cb9-a3e9-c4b1dd61973c PowerCollegeOfEleganceDash FeatureDefinitionPower FeatureDefinition 68a9b74d-5071-57f8-a3d4-c777f46e89c4 @@ -3528,6 +3526,7 @@ PowerLightningArrowLeap FeatureDefinitionPower FeatureDefinition 5a02449f-aac5-5 PowerLizardfolkHungryJaws FeatureDefinitionPower FeatureDefinition 4a3567e3-1747-59b1-a62e-93d3fd8cb32d PowerMalakhAngelicFlight FeatureDefinitionPower FeatureDefinition 43d93184-e3fe-5e9d-ada6-fc9bdcfec9a1 PowerMalakhAngelicRadiance FeatureDefinitionPower FeatureDefinition da692cfd-2a1e-5c2d-a919-3dafe53ab2cc +PowerMalakhAngelicRadianceDamage FeatureDefinitionPower FeatureDefinition edec8afa-5a52-5ec1-9bff-7f3e0b96d80d PowerMalakhAngelicVisage FeatureDefinitionPower FeatureDefinition d71f91ca-035b-583c-b612-6478801b8a3d PowerMalakhHealingTouch FeatureDefinitionPower FeatureDefinition 76546263-34e5-5f4c-a0f4-1b1bf26d5c45 PowerMartialArcaneArcherArcaneShot FeatureDefinitionPower FeatureDefinition 3bd8b406-0722-5aa1-9e50-f2e5b2d100ae @@ -3635,6 +3634,7 @@ PowerPathOfTheBeastInfectiousFury FeatureDefinitionPower FeatureDefinition 8ce5b PowerPathOfTheBeastInfectiousFuryCompelledStrike FeatureDefinitionPower FeatureDefinition 10081323-37d2-55f8-8d01-6c5e905025be PowerPathOfTheBeastInfectiousFuryMindlash FeatureDefinitionPower FeatureDefinition ff2e786c-c0ba-5934-a9e2-b5af9a707af4 PowerPathOfTheBeastTailSwipe FeatureDefinitionPower FeatureDefinition c42d99d0-5dfb-5a3a-a798-8626d73bd649 +PowerPathOfTheElementsBlizzard FeatureDefinitionPower FeatureDefinition d7a31d80-842a-501f-be65-27c349571abd PowerPathOfTheElementsElementalBlessingBlizzard FeatureDefinitionPower FeatureDefinition d5620bb2-934e-5aa0-b853-c823c68affc5 PowerPathOfTheElementsElementalBlessingStorm FeatureDefinitionPower FeatureDefinition fcf7651f-439e-5d9c-85e6-a83cc83ebc3c PowerPathOfTheElementsElementalBlessingWildfire FeatureDefinitionPower FeatureDefinition d375a137-21db-559f-9874-69d4d17bf698 @@ -3642,6 +3642,8 @@ PowerPathOfTheElementsElementalBurstBlizzard FeatureDefinitionPower FeatureDefin PowerPathOfTheElementsElementalBurstStorm FeatureDefinitionPower FeatureDefinition c375d81c-2479-5e97-b2a2-a50d80da8e9e PowerPathOfTheElementsElementalBurstWildfire FeatureDefinitionPower FeatureDefinition de072fc8-7fe0-5780-901e-9353517c02a0 PowerPathOfTheElementsElementalConduitStorm FeatureDefinitionPower FeatureDefinition 19b22e60-ee56-5272-97c1-93016008278c +PowerPathOfTheElementsStorm FeatureDefinitionPower FeatureDefinition daeb69ac-02ba-54ee-ba72-8929ebc573cb +PowerPathOfTheElementsWildfire FeatureDefinitionPower FeatureDefinition 316fcbaf-9d5f-5dd7-8a67-cdedbb86b2cb PowerPathOfTheLightEyesOfTruth FeatureDefinitionPower FeatureDefinition 8c1406f1-2959-5141-94fb-474d3f483bf2 PowerPathOfTheLightIlluminatingBurst FeatureDefinitionPower FeatureDefinition e4e99b02-b403-5b0a-9a8b-2b0343d90cf6 PowerPathOfTheLightIlluminatingBurstInitiator FeatureDefinitionPower FeatureDefinition 1b0b222a-d63b-5a1d-a7ff-32e0daee1c22 @@ -3827,6 +3829,7 @@ PowerSoulBladeSoulShield FeatureDefinitionPower FeatureDefinition 66b84def-ee8c- PowerSoulBladeSummonPactWeapon FeatureDefinitionPower FeatureDefinition eb40dd01-76b3-57d1-9d3a-243eef28250a PowerSoulExpulsion FeatureDefinitionPower FeatureDefinition 47f854be-18bc-5b7b-926c-9edf44d24b20 PowerSpellMasterBonusRecovery FeatureDefinitionPower FeatureDefinition 4481cd45-d08e-5964-8c38-e35bf60e168b +PowerSpellPoints FeatureDefinitionPower FeatureDefinition 467fdc6d-1c2e-5a48-983a-60d1a9338da3 PowerSpellShieldArcaneDeflection FeatureDefinitionPower FeatureDefinition 52e64530-4aec-5d0f-a053-4676e7ac6dde PowerSpikeBarrage FeatureDefinitionPower FeatureDefinition 112a3040-00da-5ed4-a93f-7096ac5eb01e PowerSteelWhirlwindTeleport FeatureDefinitionPower FeatureDefinition 8f74fc44-7afd-57f0-9cd4-c9e21998ec51 @@ -4004,7 +4007,6 @@ ProficiencyFeatLunger FeatureDefinitionProficiency FeatureDefinition 0da39cf7-2d ProficiencyFeatMediumArmor FeatureDefinitionProficiency FeatureDefinition ed422a81-c767-56b0-a455-ad1c88d88869 ProficiencyFeatMenacing FeatureDefinitionProficiency FeatureDefinition 124a0eba-3658-5337-a675-1de95d55c6ad ProficiencyFeatMerciless FeatureDefinitionProficiency FeatureDefinition 19a654a6-15c9-57af-a93f-f14f5eed5b71 -ProficiencyFeatMonkShieldExpert FeatureDefinitionProficiency FeatureDefinition 3c9cec58-0a28-5b43-b9e5-adaf1049543d ProficiencyFeatPickPocket FeatureDefinitionProficiency FeatureDefinition 3b9d1757-103e-57a0-bd7b-b9174e57400f ProficiencyFeatPoisoner FeatureDefinitionProficiency FeatureDefinition 9fcf9187-9d80-5363-b82e-e1f162565cab ProficiencyFeatPolearmExpert FeatureDefinitionProficiency FeatureDefinition 1c75c89c-a39e-5546-8bba-022b6b9b1271 @@ -4059,7 +4061,6 @@ ProficiencyMartialArcaneArcherArcana FeatureDefinitionProficiency FeatureDefinit ProficiencyMartialArcaneArcherNature FeatureDefinitionProficiency FeatureDefinition 91b27fc5-3efe-52b3-994e-841d3f98ae06 ProficiencyMartialGuardianSentinel FeatureDefinitionProficiency FeatureDefinition e8fcd6dd-8e93-5062-8b61-c0b4556f6f1c ProficiencyMartialGuardianUnyielding FeatureDefinitionProficiency FeatureDefinition 3377a4a1-b5e8-5838-aa80-4b332878779b -ProficiencyMonkShieldExpert FeatureDefinitionProficiency FeatureDefinition db009d3e-bbd3-5750-b5b2-24dab1d3ec3b ProficiencyObsidianDwarfLanguages FeatureDefinitionProficiency FeatureDefinition 0b99ff27-3652-5c77-abce-2b00cd7dec30 ProficiencyOligathLanguages FeatureDefinitionProficiency FeatureDefinition b4c55bc0-1663-5e3c-a660-3858df85ea98 ProficiencyOligathNaturalAthlete FeatureDefinitionProficiency FeatureDefinition 027ff7ae-3d0b-5451-a89c-95f3d4a5df64 @@ -4118,6 +4119,7 @@ SavingThrowAffinityRoguishArcaneScoundrelDistractingAmbush FeatureDefinitionSavi SavingThrowAffinityRoguishOpportunistDebilitatingStrike FeatureDefinitionSavingThrowAffinity FeatureDefinition 9606365c-6ee2-55cd-9a61-915464c3f215 SavingThrowAffinityRoguishOpportunistImprovedDebilitatingStrike FeatureDefinitionSavingThrowAffinity FeatureDefinition cdea0f41-45eb-564e-a83d-13a6a7787d3d SavingThrowAffinityRoyalKnightSpiritedSurge FeatureDefinitionSavingThrowAffinity FeatureDefinition a88e2078-1c9a-57ea-8789-506e26ac6489 +SavingThrowAffinitySickeningRadianceExhausted3 FeatureDefinitionSavingThrowAffinity FeatureDefinition bb2186f4-5847-5e4a-a3dc-f613ad953662 SavingThrowAffinitySorcerousSorrAkkathDarknessAffinity FeatureDefinitionSavingThrowAffinity FeatureDefinition 01d34613-f72b-596c-872f-ec312d19f26b SavingThrowAffinitySoulExpulsion FeatureDefinitionSavingThrowAffinity FeatureDefinition 76748aa6-df93-5909-8f20-1f7577272aa7 SavingThrowAffinitySpellMasterSpellResistance FeatureDefinitionSavingThrowAffinity FeatureDefinition 5f04b83f-67b6-58ee-856d-ec98d007859c @@ -4328,7 +4330,6 @@ AdditionalDamageEnsnaringStrike FeatureDefinitionAdditionalDamage FeatureDefinit AdditionalDamageFeatBalefulScion FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 3d0e1aa3-2e86-59ea-a2fa-866313231851 AdditionalDamageFeatCharger FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 5e4d30ff-8673-591b-9ff6-833b76bc0696 AdditionalDamageFeatDevastatingStrikes FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 784aeecc-2d96-5f0b-ba89-935e4432fa2d -AdditionalDamageFeatHammerThePointHammerThePoint FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 26cad3da-5cf3-525a-b070-b8bd8a6f88fc AdditionalDamageFeatOrcishFury FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 4164e6e5-bac4-50ea-8b60-03d23bed2641 AdditionalDamageFeatPiercer FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 81ab79ca-7744-58e9-b5dc-1049e170defc AdditionalDamageFeatSlayTheEnemies FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage ba46226a-7f43-5e84-b774-ec3fd026ad08 @@ -4394,7 +4395,6 @@ AdditionalDamageStaggeringSmite FeatureDefinitionAdditionalDamage FeatureDefinit AdditionalDamageStrikeWithTheWind FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage fd6f9ee6-54aa-5eef-867a-01ba35c35370 AdditionalDamageSuckerPunch FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage bfc08531-f4aa-58f4-94f7-f0b06ad757a4 AdditionalDamageSunlightBlade FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 1bd17141-b9ba-5502-a83b-00a846cf4c39 -AdditionalDamageTacticianTacticalAwareness FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 8578c41d-ae85-5346-9f89-020167d17c71 AdditionalDamageTraditionLightRadiantStrikesLuminousKiD6 FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 3c4f70ef-3a56-5436-b35a-3228d9e5fdaa AdditionalDamageTraditionLightRadiantStrikesShineD6 FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage 46d19e1f-83a7-5678-8cd6-edbc7b4b5e7c AdditionalDamageWayOfSilhouetteStrikeTheVitals FeatureDefinitionAdditionalDamage FeatureDefinitionAdditionalDamage faeef1b6-3f34-5a9b-a26f-539f4d3bd1fd @@ -4560,10 +4560,10 @@ CombatAffinityRoguishAcrobatFluidMotions FeatureDefinitionCombatAffinity Feature CombatAffinityRoguishBladeCallerBladeMark FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 39dca5c9-fd26-5e7b-b7e9-dfc2112b4c52 CombatAffinityRoguishOpportunistExposedWeakness FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 1f120df2-b5c1-5b8e-8f46-f1adc5d0b8f2 CombatAffinityRoyalKnightSpiritedSurge FeatureDefinitionCombatAffinity FeatureDefinitionAffinity d42e798e-d827-549d-a6dc-d07844fec664 +CombatAffinitySickeningRadianceExhausted3 FeatureDefinitionCombatAffinity FeatureDefinitionAffinity ed0bba01-a7af-58ff-b7e1-96650ddf5d76 CombatAffinitySoulExpulsion FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 2a270517-7b68-53ba-a2c7-36e7b6f36fd1 CombatAffinityStaggeringSmite FeatureDefinitionCombatAffinity FeatureDefinitionAffinity bec893d0-747c-520d-a494-b5c9551b2c73 CombatAffinityStrikeWithTheWind FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 4a9706fc-be59-5efb-a679-00d13298b19f -CombatAffinityTacticianTacticalAwareness FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 9f8adbd8-c957-518c-a49d-c8679f32983b CombatAffinityTaunted FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 8a9c32ac-8aaa-5888-8a17-1f78d723b3a4 CombatAffinityWayOfSilhouetteSilhouetteStep FeatureDefinitionCombatAffinity FeatureDefinitionAffinity a926a6b4-aa9f-5279-8aa6-fd357e746f91 CombatAffinityWayOfTheDiscordanceTurmoil FeatureDefinitionCombatAffinity FeatureDefinitionAffinity 38754e5f-6a63-5bc1-8918-19c944826d34 @@ -4580,17 +4580,13 @@ ConditionAffinityInnovationArtilleristEldritchCannon FeatureDefinitionConditionA ConditionAffinityInnovationWeaponSteelDefenderInitiative FeatureDefinitionConditionAffinity FeatureDefinitionAffinity c11f32f8-ec69-5ad2-8c43-d6b2743a6640 ConditionAffinityInsaneImmunity FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 5520ce48-52c7-5280-ac7d-168b75bb79c3 ConditionAffinityIrresistiblePerformanceImmunity FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 17e4f5dd-eb34-5dcd-b769-59f4521cb60b -ConditionAffinityPathOfTheLightIlluminatedPreventInvisible FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 4f245846-3fab-593a-aa14-45c19f8edb84 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisible_Green_Hag FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 0b93e0a9-5118-5d32-9d29-bf0956b6f646 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleBase FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 5ca9c244-f43c-5ea2-b72b-675db2ff40f5 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleGreater FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 7e9e7908-f57d-57b6-8653-e3852ae86286 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleOneWithShadows FeatureDefinitionConditionAffinity FeatureDefinitionAffinity cfbc0e3f-664c-5c4d-a355-16bf8aefb1e0 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleUncatchable FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 528128e2-1394-50ea-825e-36511027d99c +ConditionAffinityPathOfTheLightIlluminatedPrevent FeatureDefinitionConditionAffinity FeatureDefinitionAffinity c815cc55-499c-5563-ac65-644765780373 ConditionAffinityPathOfTheSpiritsHonedAnimalAspectsBear FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 99aef076-2914-5b24-bd13-b09f4cf95bf0 ConditionAffinityPathOfTheSpiritsWolfLeadershipPack FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 56bca621-33a9-53f3-b952-a2c14dc55a8e ConditionAffinityRangerSurvivalistDeafenedImmunity FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 7d3479ef-90c8-57a1-9650-fce705a9e7da ConditionAffinityRangerWildMasterBeastCompanion FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 2bd6cfd4-49bf-5687-9b68-4f3765984ce2 ConditionAffinityRiftWalkerRestrainedImmunity FeatureDefinitionConditionAffinity FeatureDefinitionAffinity 92cb7a89-3554-567c-a62e-f72c78cd34f1 +ConditionAffinitySickeningRadiance FeatureDefinitionConditionAffinity FeatureDefinitionAffinity fc61f40d-38f7-5a41-b8fb-d6e4464a3135 CraftingAffinityInventorMagicItemAdept FeatureDefinitionCraftingAffinity FeatureDefinitionAffinity 26842e0a-9c1e-5740-ad4d-871da69932b1 CustomFeatBowMastery FeatureDefinitionAttackModifier FeatureDefinitionAffinity 212038a4-5bbf-5f46-8cc9-f64d8c5a9470 CustomFeatCrossbowMastery FeatureDefinitionAttackModifier FeatureDefinitionAffinity a4ec8c17-b6fd-50b7-94db-fbc427328096 @@ -4828,6 +4824,7 @@ SavingThrowAffinityRoguishArcaneScoundrelDistractingAmbush FeatureDefinitionSavi SavingThrowAffinityRoguishOpportunistDebilitatingStrike FeatureDefinitionSavingThrowAffinity FeatureDefinitionAffinity 9606365c-6ee2-55cd-9a61-915464c3f215 SavingThrowAffinityRoguishOpportunistImprovedDebilitatingStrike FeatureDefinitionSavingThrowAffinity FeatureDefinitionAffinity cdea0f41-45eb-564e-a83d-13a6a7787d3d SavingThrowAffinityRoyalKnightSpiritedSurge FeatureDefinitionSavingThrowAffinity FeatureDefinitionAffinity a88e2078-1c9a-57ea-8789-506e26ac6489 +SavingThrowAffinitySickeningRadianceExhausted3 FeatureDefinitionSavingThrowAffinity FeatureDefinitionAffinity bb2186f4-5847-5e4a-a3dc-f613ad953662 SavingThrowAffinitySorcerousSorrAkkathDarknessAffinity FeatureDefinitionSavingThrowAffinity FeatureDefinitionAffinity 01d34613-f72b-596c-872f-ec312d19f26b SavingThrowAffinitySoulExpulsion FeatureDefinitionSavingThrowAffinity FeatureDefinitionAffinity 76748aa6-df93-5909-8f20-1f7577272aa7 SavingThrowAffinitySpellMasterSpellResistance FeatureDefinitionSavingThrowAffinity FeatureDefinitionAffinity 5f04b83f-67b6-58ee-856d-ec98d007859c @@ -5003,6 +5000,7 @@ AttributeModifierRangerWildMasterHitPoints FeatureDefinitionAttributeModifier Fe AttributeModifierRoguishAcrobatProtector FeatureDefinitionAttributeModifier FeatureDefinitionAttributeModifier c67d0548-f770-521a-99a5-e8b2c13ed77a AttributeModifierRoguishDuelistSureFooted FeatureDefinitionAttributeModifier FeatureDefinitionAttributeModifier 909eb80e-64aa-55b2-8460-778554872e7f AttributeModifierRopeItUp FeatureDefinitionAttributeModifier FeatureDefinitionAttributeModifier 0cb22e4d-85a2-58b6-a418-e3e38de57520 +AttributeModifierSickeningRadianceExhausted4 FeatureDefinitionAttributeModifier FeatureDefinitionAttributeModifier 86a93483-bc8e-5c63-8b08-36224f6860be AttributeModifierSorcererSorceryPointsBonus2 FeatureDefinitionAttributeModifier FeatureDefinitionAttributeModifier c83ac082-07a8-539e-b6ae-157e640b3a3c AttributeModifierSorcerousSorrAkkathDarknessAffinity FeatureDefinitionAttributeModifier FeatureDefinitionAttributeModifier e7705f1d-4447-5473-ab90-afc44a172f5d AttributeModifierSorcerousSpellBladeBattleReflexes FeatureDefinitionAttributeModifier FeatureDefinitionAttributeModifier 2fa53023-9a27-55ae-a981-42b9aefc5992 @@ -5191,10 +5189,10 @@ CombatAffinityRoguishAcrobatFluidMotions FeatureDefinitionCombatAffinity Feature CombatAffinityRoguishBladeCallerBladeMark FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 39dca5c9-fd26-5e7b-b7e9-dfc2112b4c52 CombatAffinityRoguishOpportunistExposedWeakness FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 1f120df2-b5c1-5b8e-8f46-f1adc5d0b8f2 CombatAffinityRoyalKnightSpiritedSurge FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity d42e798e-d827-549d-a6dc-d07844fec664 +CombatAffinitySickeningRadianceExhausted3 FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity ed0bba01-a7af-58ff-b7e1-96650ddf5d76 CombatAffinitySoulExpulsion FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 2a270517-7b68-53ba-a2c7-36e7b6f36fd1 CombatAffinityStaggeringSmite FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity bec893d0-747c-520d-a494-b5c9551b2c73 CombatAffinityStrikeWithTheWind FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 4a9706fc-be59-5efb-a679-00d13298b19f -CombatAffinityTacticianTacticalAwareness FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 9f8adbd8-c957-518c-a49d-c8679f32983b CombatAffinityTaunted FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 8a9c32ac-8aaa-5888-8a17-1f78d723b3a4 CombatAffinityWayOfSilhouetteSilhouetteStep FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity a926a6b4-aa9f-5279-8aa6-fd357e746f91 CombatAffinityWayOfTheDiscordanceTurmoil FeatureDefinitionCombatAffinity FeatureDefinitionCombatAffinity 38754e5f-6a63-5bc1-8918-19c944826d34 @@ -5211,17 +5209,13 @@ ConditionAffinityInnovationArtilleristEldritchCannon FeatureDefinitionConditionA ConditionAffinityInnovationWeaponSteelDefenderInitiative FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity c11f32f8-ec69-5ad2-8c43-d6b2743a6640 ConditionAffinityInsaneImmunity FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 5520ce48-52c7-5280-ac7d-168b75bb79c3 ConditionAffinityIrresistiblePerformanceImmunity FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 17e4f5dd-eb34-5dcd-b769-59f4521cb60b -ConditionAffinityPathOfTheLightIlluminatedPreventInvisible FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 4f245846-3fab-593a-aa14-45c19f8edb84 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisible_Green_Hag FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 0b93e0a9-5118-5d32-9d29-bf0956b6f646 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleBase FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 5ca9c244-f43c-5ea2-b72b-675db2ff40f5 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleGreater FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 7e9e7908-f57d-57b6-8653-e3852ae86286 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleOneWithShadows FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity cfbc0e3f-664c-5c4d-a355-16bf8aefb1e0 -ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleUncatchable FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 528128e2-1394-50ea-825e-36511027d99c +ConditionAffinityPathOfTheLightIlluminatedPrevent FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity c815cc55-499c-5563-ac65-644765780373 ConditionAffinityPathOfTheSpiritsHonedAnimalAspectsBear FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 99aef076-2914-5b24-bd13-b09f4cf95bf0 ConditionAffinityPathOfTheSpiritsWolfLeadershipPack FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 56bca621-33a9-53f3-b952-a2c14dc55a8e ConditionAffinityRangerSurvivalistDeafenedImmunity FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 7d3479ef-90c8-57a1-9650-fce705a9e7da ConditionAffinityRangerWildMasterBeastCompanion FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 2bd6cfd4-49bf-5687-9b68-4f3765984ce2 ConditionAffinityRiftWalkerRestrainedImmunity FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity 92cb7a89-3554-567c-a62e-f72c78cd34f1 +ConditionAffinitySickeningRadiance FeatureDefinitionConditionAffinity FeatureDefinitionConditionAffinity fc61f40d-38f7-5a41-b8fb-d6e4464a3135 CraftingAffinityInventorMagicItemAdept FeatureDefinitionCraftingAffinity FeatureDefinitionCraftingAffinity 26842e0a-9c1e-5740-ad4d-871da69932b1 DamageAffinityCollegeOfLifeNecroticResistance FeatureDefinitionDamageAffinity FeatureDefinitionDamageAffinity 6905cb79-96ab-5ccd-8b13-3f772741a763 DamageAffinityCorruptingBoltDamageAcid FeatureDefinitionDamageAffinity FeatureDefinitionDamageAffinity 8b5ccfca-1d48-5ab5-853a-aa90ee381b99 @@ -5514,7 +5508,6 @@ FeatureSetSpellStoringItem FeatureDefinitionFeatureSet FeatureDefinitionFeatureS FeatureSetTacticianBattleClarity FeatureDefinitionFeatureSet FeatureDefinitionFeatureSet f473d7da-4fae-5487-8385-08c181825099 FeatureSetTacticianHonedCraft FeatureDefinitionFeatureSet FeatureDefinitionFeatureSet c3440a1e-19b8-5765-9b3a-682310d7f982 FeatureSetTacticianSharpMind FeatureDefinitionFeatureSet FeatureDefinitionFeatureSet 4db7f8bb-dad9-5fa6-a85b-db8a535e0484 -FeatureSetTacticianTacticalAwareness FeatureDefinitionFeatureSet FeatureDefinitionFeatureSet 706ec4b9-110b-5c3e-b6b5-fb1078e639bf FeatureSetTieflingFeralDemonicWings FeatureDefinitionFeatureSet FeatureDefinitionFeatureSet d96ff7e0-0226-51e9-bc79-d1720563a88f FeatureSetTraditionLightPurityOfLight FeatureDefinitionFeatureSet FeatureDefinitionFeatureSet 7acaa801-4e92-5327-a8e2-8e5d27466612 FeatureSetTraditionOpenHandQuiveringPalm FeatureDefinitionFeatureSet FeatureDefinitionFeatureSet a9ec5960-aa15-581d-bf38-1a2b1d2d0fe5 @@ -5872,9 +5865,9 @@ PowerClericDivineInterventionImprovementWizard FeatureDefinitionPower FeatureDef PowerClericTurnUndead17 FeatureDefinitionPower FeatureDefinitionPower 99897e79-a7cf-59f2-9ebb-0e835fa832f9 PowerCollegeOfAudacityAudaciousWhirl FeatureDefinitionPower FeatureDefinitionPower 6cbd417e-e3ae-591b-9a60-218423f41191 PowerCollegeOfAudacityDefensiveWhirl FeatureDefinitionPower FeatureDefinitionPower f65588e2-f61c-5696-a8cc-37ae9b68d963 -PowerCollegeOfAudacityMasterfulWhirl FeatureDefinitionPower FeatureDefinitionPower 28130938-f181-5e81-a4b1-6dada78c7f2d PowerCollegeOfAudacityMobileWhirl FeatureDefinitionPower FeatureDefinitionPower d25f08e6-bf49-5263-a074-21f469070669 PowerCollegeOfAudacitySlashingWhirl FeatureDefinitionPower FeatureDefinitionPower 406a2915-7e83-5195-b545-989256071521 +PowerCollegeOfAudacitySlashingWhirlDamage FeatureDefinitionPower FeatureDefinitionPower 75e28f91-6725-5ff1-b803-908a90664530 PowerCollegeOfEleganceAmazingDisplay FeatureDefinitionPower FeatureDefinitionPower 1f5ddcc3-fc67-5649-b3f1-45c76bae6fbc PowerCollegeOfEleganceAmazingDisplayEnemy FeatureDefinitionPower FeatureDefinitionPower 5dc2d4d2-d794-5cb9-a3e9-c4b1dd61973c PowerCollegeOfEleganceDash FeatureDefinitionPower FeatureDefinitionPower 68a9b74d-5071-57f8-a3d4-c777f46e89c4 @@ -6348,6 +6341,7 @@ PowerLightningArrowLeap FeatureDefinitionPower FeatureDefinitionPower 5a02449f-a PowerLizardfolkHungryJaws FeatureDefinitionPower FeatureDefinitionPower 4a3567e3-1747-59b1-a62e-93d3fd8cb32d PowerMalakhAngelicFlight FeatureDefinitionPower FeatureDefinitionPower 43d93184-e3fe-5e9d-ada6-fc9bdcfec9a1 PowerMalakhAngelicRadiance FeatureDefinitionPower FeatureDefinitionPower da692cfd-2a1e-5c2d-a919-3dafe53ab2cc +PowerMalakhAngelicRadianceDamage FeatureDefinitionPower FeatureDefinitionPower edec8afa-5a52-5ec1-9bff-7f3e0b96d80d PowerMalakhAngelicVisage FeatureDefinitionPower FeatureDefinitionPower d71f91ca-035b-583c-b612-6478801b8a3d PowerMalakhHealingTouch FeatureDefinitionPower FeatureDefinitionPower 76546263-34e5-5f4c-a0f4-1b1bf26d5c45 PowerMartialArcaneArcherArcaneShot FeatureDefinitionPower FeatureDefinitionPower 3bd8b406-0722-5aa1-9e50-f2e5b2d100ae @@ -6454,6 +6448,7 @@ PowerPathOfTheBeastInfectiousFury FeatureDefinitionPower FeatureDefinitionPower PowerPathOfTheBeastInfectiousFuryCompelledStrike FeatureDefinitionPower FeatureDefinitionPower 10081323-37d2-55f8-8d01-6c5e905025be PowerPathOfTheBeastInfectiousFuryMindlash FeatureDefinitionPower FeatureDefinitionPower ff2e786c-c0ba-5934-a9e2-b5af9a707af4 PowerPathOfTheBeastTailSwipe FeatureDefinitionPower FeatureDefinitionPower c42d99d0-5dfb-5a3a-a798-8626d73bd649 +PowerPathOfTheElementsBlizzard FeatureDefinitionPower FeatureDefinitionPower d7a31d80-842a-501f-be65-27c349571abd PowerPathOfTheElementsElementalBlessingBlizzard FeatureDefinitionPower FeatureDefinitionPower d5620bb2-934e-5aa0-b853-c823c68affc5 PowerPathOfTheElementsElementalBlessingStorm FeatureDefinitionPower FeatureDefinitionPower fcf7651f-439e-5d9c-85e6-a83cc83ebc3c PowerPathOfTheElementsElementalBlessingWildfire FeatureDefinitionPower FeatureDefinitionPower d375a137-21db-559f-9874-69d4d17bf698 @@ -6461,6 +6456,8 @@ PowerPathOfTheElementsElementalBurstBlizzard FeatureDefinitionPower FeatureDefin PowerPathOfTheElementsElementalBurstStorm FeatureDefinitionPower FeatureDefinitionPower c375d81c-2479-5e97-b2a2-a50d80da8e9e PowerPathOfTheElementsElementalBurstWildfire FeatureDefinitionPower FeatureDefinitionPower de072fc8-7fe0-5780-901e-9353517c02a0 PowerPathOfTheElementsElementalConduitStorm FeatureDefinitionPower FeatureDefinitionPower 19b22e60-ee56-5272-97c1-93016008278c +PowerPathOfTheElementsStorm FeatureDefinitionPower FeatureDefinitionPower daeb69ac-02ba-54ee-ba72-8929ebc573cb +PowerPathOfTheElementsWildfire FeatureDefinitionPower FeatureDefinitionPower 316fcbaf-9d5f-5dd7-8a67-cdedbb86b2cb PowerPathOfTheLightEyesOfTruth FeatureDefinitionPower FeatureDefinitionPower 8c1406f1-2959-5141-94fb-474d3f483bf2 PowerPathOfTheLightIlluminatingBurst FeatureDefinitionPower FeatureDefinitionPower e4e99b02-b403-5b0a-9a8b-2b0343d90cf6 PowerPathOfTheLightIlluminatingBurstInitiator FeatureDefinitionPower FeatureDefinitionPower 1b0b222a-d63b-5a1d-a7ff-32e0daee1c22 @@ -6646,6 +6643,7 @@ PowerSoulBladeSoulShield FeatureDefinitionPower FeatureDefinitionPower 66b84def- PowerSoulBladeSummonPactWeapon FeatureDefinitionPower FeatureDefinitionPower eb40dd01-76b3-57d1-9d3a-243eef28250a PowerSoulExpulsion FeatureDefinitionPower FeatureDefinitionPower 47f854be-18bc-5b7b-926c-9edf44d24b20 PowerSpellMasterBonusRecovery FeatureDefinitionPower FeatureDefinitionPower 4481cd45-d08e-5964-8c38-e35bf60e168b +PowerSpellPoints FeatureDefinitionPower FeatureDefinitionPower 467fdc6d-1c2e-5a48-983a-60d1a9338da3 PowerSpellShieldArcaneDeflection FeatureDefinitionPower FeatureDefinitionPower 52e64530-4aec-5d0f-a053-4676e7ac6dde PowerSpikeBarrage FeatureDefinitionPower FeatureDefinitionPower 112a3040-00da-5ed4-a93f-7096ac5eb01e PowerSteelWhirlwindTeleport FeatureDefinitionPower FeatureDefinitionPower 8f74fc44-7afd-57f0-9cd4-c9e21998ec51 @@ -6813,7 +6811,6 @@ ProficiencyFeatLunger FeatureDefinitionProficiency FeatureDefinitionProficiency ProficiencyFeatMediumArmor FeatureDefinitionProficiency FeatureDefinitionProficiency ed422a81-c767-56b0-a455-ad1c88d88869 ProficiencyFeatMenacing FeatureDefinitionProficiency FeatureDefinitionProficiency 124a0eba-3658-5337-a675-1de95d55c6ad ProficiencyFeatMerciless FeatureDefinitionProficiency FeatureDefinitionProficiency 19a654a6-15c9-57af-a93f-f14f5eed5b71 -ProficiencyFeatMonkShieldExpert FeatureDefinitionProficiency FeatureDefinitionProficiency 3c9cec58-0a28-5b43-b9e5-adaf1049543d ProficiencyFeatPickPocket FeatureDefinitionProficiency FeatureDefinitionProficiency 3b9d1757-103e-57a0-bd7b-b9174e57400f ProficiencyFeatPoisoner FeatureDefinitionProficiency FeatureDefinitionProficiency 9fcf9187-9d80-5363-b82e-e1f162565cab ProficiencyFeatPolearmExpert FeatureDefinitionProficiency FeatureDefinitionProficiency 1c75c89c-a39e-5546-8bba-022b6b9b1271 @@ -6868,7 +6865,6 @@ ProficiencyMartialArcaneArcherArcana FeatureDefinitionProficiency FeatureDefinit ProficiencyMartialArcaneArcherNature FeatureDefinitionProficiency FeatureDefinitionProficiency 91b27fc5-3efe-52b3-994e-841d3f98ae06 ProficiencyMartialGuardianSentinel FeatureDefinitionProficiency FeatureDefinitionProficiency e8fcd6dd-8e93-5062-8b61-c0b4556f6f1c ProficiencyMartialGuardianUnyielding FeatureDefinitionProficiency FeatureDefinitionProficiency 3377a4a1-b5e8-5838-aa80-4b332878779b -ProficiencyMonkShieldExpert FeatureDefinitionProficiency FeatureDefinitionProficiency db009d3e-bbd3-5750-b5b2-24dab1d3ec3b ProficiencyObsidianDwarfLanguages FeatureDefinitionProficiency FeatureDefinitionProficiency 0b99ff27-3652-5c77-abce-2b00cd7dec30 ProficiencyOligathLanguages FeatureDefinitionProficiency FeatureDefinitionProficiency b4c55bc0-1663-5e3c-a660-3858df85ea98 ProficiencyOligathNaturalAthlete FeatureDefinitionProficiency FeatureDefinitionProficiency 027ff7ae-3d0b-5451-a89c-95f3d4a5df64 @@ -6919,6 +6915,7 @@ SavingThrowAffinityRoguishArcaneScoundrelDistractingAmbush FeatureDefinitionSavi SavingThrowAffinityRoguishOpportunistDebilitatingStrike FeatureDefinitionSavingThrowAffinity FeatureDefinitionSavingThrowAffinity 9606365c-6ee2-55cd-9a61-915464c3f215 SavingThrowAffinityRoguishOpportunistImprovedDebilitatingStrike FeatureDefinitionSavingThrowAffinity FeatureDefinitionSavingThrowAffinity cdea0f41-45eb-564e-a83d-13a6a7787d3d SavingThrowAffinityRoyalKnightSpiritedSurge FeatureDefinitionSavingThrowAffinity FeatureDefinitionSavingThrowAffinity a88e2078-1c9a-57ea-8789-506e26ac6489 +SavingThrowAffinitySickeningRadianceExhausted3 FeatureDefinitionSavingThrowAffinity FeatureDefinitionSavingThrowAffinity bb2186f4-5847-5e4a-a3dc-f613ad953662 SavingThrowAffinitySorcerousSorrAkkathDarknessAffinity FeatureDefinitionSavingThrowAffinity FeatureDefinitionSavingThrowAffinity 01d34613-f72b-596c-872f-ec312d19f26b SavingThrowAffinitySoulExpulsion FeatureDefinitionSavingThrowAffinity FeatureDefinitionSavingThrowAffinity 76748aa6-df93-5909-8f20-1f7577272aa7 SavingThrowAffinitySpellMasterSpellResistance FeatureDefinitionSavingThrowAffinity FeatureDefinitionSavingThrowAffinity 5f04b83f-67b6-58ee-856d-ec98d007859c @@ -6956,7 +6953,6 @@ HandAndAHalf FightingStyleDefinition FightingStyleDefinition 0d3fd48d-ae29-598e- Interception FightingStyleDefinition FightingStyleDefinition 047741c7-24ee-597e-b480-8f0d3d881712 Lunger FightingStyleDefinition FightingStyleDefinition b20cff60-4c4a-5c64-818f-c6102e5bfdb5 Merciless FightingStyleDefinition FightingStyleDefinition 6d7a4f67-8035-55e2-823e-619534487125 -MonkShieldExpert FightingStyleDefinition FightingStyleDefinition 1bfb8998-a933-52c1-9b4b-8f8ec5f85e83 PolearmExpert FightingStyleDefinition FightingStyleDefinition f595a71b-7902-5950-87d4-86abd4b656e9 Pugilist FightingStyleDefinition FightingStyleDefinition 00d288b7-bce4-54f4-903e-00299392f8c6 RemarkableTechnique FightingStyleDefinition FightingStyleDefinition 8cdb592b-9041-52a5-801f-fa620bdd9d0b @@ -12193,6 +12189,7 @@ SearingSmite SpellDefinition SpellDefinition 0a2bc8fc-9062-58d3-b7eb-8a775e5c62d ShadowBlade SpellDefinition SpellDefinition dc2aa74d-d731-50b9-81ab-ccc69d24440d Shapechange SpellDefinition SpellDefinition 92b23a62-e155-5ae0-8c2a-808403d61440 ShelterFromEnergy SpellDefinition SpellDefinition c4e00683-facd-5358-b4df-dc439587dd77 +SickeningRadiance SpellDefinition SpellDefinition ca4ad661-35e7-5913-b65d-87b87f63a03a SkinOfRetribution SpellDefinition SpellDefinition 424c953e-e984-58b1-a84f-b19bb50cdc1b SnillocSnowballStorm SpellDefinition SpellDefinition 576116cd-28a3-56c5-af47-9d247e2569dc SonicBoom SpellDefinition SpellDefinition 72b0aa11-cba8-5fcc-9f76-cab443e381ec diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/DomainNature.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/DomainNature.json index 915d616562..8e913217bd 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/DomainNature.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/DomainNature.json @@ -51,9 +51,9 @@ "description": "Subclass/&DomainNatureDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "05db759cf66168b4495b148ea71ec6c5", - "m_SubObjectName": "Wizard_Sylvan_Mage", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "cbd74311-3727-5bd4-a573-797100be050d", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/DomainTempest.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/DomainTempest.json index d3788c374b..d29aad5816 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/DomainTempest.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/DomainTempest.json @@ -51,9 +51,9 @@ "description": "Subclass/&DomainTempestDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "7b10e54d6037d314e93fd7e7f81c4798", - "m_SubObjectName": "Spellblade", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "ef1c8e62-edc3-54de-b4e9-741b11d41d0f", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/InnovationVitriolist.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/InnovationVitriolist.json index 27e0a75746..c70936a5ee 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/InnovationVitriolist.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/InnovationVitriolist.json @@ -36,9 +36,9 @@ "description": "Subclass/&InnovationVitriolistDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "85d76c7cb86d43d4d8986efa486bf78f", - "m_SubObjectName": "Wizard_Shock_Arcanist", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "cdef4aa1-cd48-5cf1-96b2-aa9639706404", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialArcaneArcher.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialArcaneArcher.json index 1029faf5d2..dce3217c35 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialArcaneArcher.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialArcaneArcher.json @@ -71,9 +71,9 @@ "description": "Subclass/&MartialArcaneArcherDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "2bc90f386449dab49a7897bfa72b4e16", - "m_SubObjectName": "Ranger_SwiftBlade", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "3056393d-28af-5548-a278-7614b46c2417", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialGuardian.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialGuardian.json index 5a19993323..9d4ababacb 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialGuardian.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialGuardian.json @@ -46,9 +46,9 @@ "description": "Subclass/&MartialGuardianDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "5d71490e307b6f84081ecb6b0c44b658", - "m_SubObjectName": "Protection", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "766b37d8-65c0-51ec-8d7b-12d11bf3d9e1", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialTactician.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialTactician.json index 630278b635..e62a176599 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialTactician.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/MartialTactician.json @@ -78,17 +78,17 @@ }, { "$type": "FeatureUnlockByLevel, Assembly-CSharp", - "featureDefinition": "Definition:InvocationPoolGambitUnlearn:444d8f27-2c19-580a-bb72-1fe476ae5ec6", + "featureDefinition": "Definition:FeatureSetTacticianTacticalAwareness:706ec4b9-110b-5c3e-b6b5-fb1078e639bf", "level": 18 }, { "$type": "FeatureUnlockByLevel, Assembly-CSharp", - "featureDefinition": "Definition:FeatureTacticianGambitDieSizeD12:e40d45bb-fc63-55a5-8d99-56561ba957fc", + "featureDefinition": "Definition:InvocationPoolGambitUnlearn:444d8f27-2c19-580a-bb72-1fe476ae5ec6", "level": 18 }, { "$type": "FeatureUnlockByLevel, Assembly-CSharp", - "featureDefinition": "Definition:FeatureSetTacticianTacticalAwareness:706ec4b9-110b-5c3e-b6b5-fb1078e639bf", + "featureDefinition": "Definition:FeatureTacticianGambitDieSizeD12:e40d45bb-fc63-55a5-8d99-56561ba957fc", "level": 18 } ], diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PathOfTheRavager.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PathOfTheRavager.json index 1ddd56608c..66559c46f6 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PathOfTheRavager.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PathOfTheRavager.json @@ -31,9 +31,9 @@ "description": "Subclass/&PathOfTheRavagerDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "aa99d934a7dfe064191c9a18e4822595", - "m_SubObjectName": "Barbarian_Path_Berserker", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "78c4fe16-60f6-549f-bfea-ac6b25217276", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronArchfey.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronArchfey.json index a1e7ca4821..88619ffdd0 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronArchfey.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronArchfey.json @@ -36,9 +36,9 @@ "description": "Subclass/&PatronArchfeyDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "e2e75a8dfa5339a4486b00747f23310e", - "m_SubObjectName": "Ranger_Shadow_Tamer", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "d9612842-7d1a-591c-b6d0-8da39f7ba514", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronCelestial.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronCelestial.json index 57971e5b8e..7ba8d3e726 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronCelestial.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronCelestial.json @@ -41,9 +41,9 @@ "description": "Subclass/&PatronCelestialDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "f13740c3947aa0f49a79fa8da3a44eba", - "m_SubObjectName": "DomainLife", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "4befd4b2-c278-552b-bd9e-c5cc43cbf9f0", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronMountain.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronMountain.json index 350f1a4cc5..36b7ebebe6 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronMountain.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/PatronMountain.json @@ -46,9 +46,9 @@ "description": "Subclass/&PatronMountainDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "66614872ccbd31747b1555dcb689b144", - "m_SubObjectName": "Mountaineer", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "b0afa966-2819-5e1b-a1c9-7b35689d8550", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/RangerSkyWarrior.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/RangerSkyWarrior.json index c98c81194d..113eaac376 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/RangerSkyWarrior.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/RangerSkyWarrior.json @@ -51,9 +51,9 @@ "description": "Subclass/&RangerSkyWarriorDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "a934d22a89555934da76c63cc0346839", - "m_SubObjectName": "Cleric_Battler", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "c76ebf72-3b89-592a-a6b1-c7b3a897ee5a", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/RoguishBladeCaller.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/RoguishBladeCaller.json index 1be103b6c3..433070bca4 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/RoguishBladeCaller.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/RoguishBladeCaller.json @@ -36,9 +36,9 @@ "description": "Subclass/&RoguishBladeCallerDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "2bc90f386449dab49a7897bfa72b4e16", - "m_SubObjectName": "Ranger_SwiftBlade", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "0cecd5c2-eb1e-562d-b8d8-1f3df44907ce", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/WayOfTheStormSoul.json b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/WayOfTheStormSoul.json index 0a15933e02..ce5c05ffd1 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/WayOfTheStormSoul.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/CharacterSubclassDefinition/WayOfTheStormSoul.json @@ -31,9 +31,9 @@ "description": "Subclass/&WayOfTheStormSoulDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "2e87609ff921809408f223c91150a5f8", - "m_SubObjectName": "Cleric_Storm", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "201f8991-bd33-5775-9d09-4643dc6a90c6", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionMalakhAngelicRadiance.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionMalakhAngelicRadiance.json index ce8ea3d1f1..a7830373c3 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionMalakhAngelicRadiance.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionMalakhAngelicRadiance.json @@ -4,7 +4,8 @@ "parentCondition": null, "conditionType": "Beneficial", "features": [ - "Definition:AdditionalDamageMalakhAngelicForm:e7f6ba68-8bdb-524d-b7af-33f4b608b1ea" + "Definition:AdditionalDamageMalakhAngelicForm:e7f6ba68-8bdb-524d-b7af-33f4b608b1ea", + "Definition:PowerMalakhAngelicRadianceDamage:edec8afa-5a52-5ec1-9bff-7f3e0b96d80d" ], "allowMultipleInstances": false, "silentWhenAdded": false, @@ -87,7 +88,7 @@ }, "timeToWaitBeforeApplyingShader": 0.5, "timeToWaitBeforeRemovingShader": 0.5, - "possessive": false, + "possessive": true, "amountOrigin": "None", "baseAmount": 0, "additiveAmount": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionRangerHellWalkerDammingStrike.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionRangerHellWalkerDammingStrike.json index 9803dc9d0a..0f353a9880 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionRangerHellWalkerDammingStrike.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionRangerHellWalkerDammingStrike.json @@ -15,7 +15,10 @@ "durationParameter": 1, "forceTurnOccurence": false, "turnOccurence": "StartOfTurn", - "specialInterruptions": [], + "specialInterruptions": [ + "Extinguish", + "Revive" + ], "interruptionRequiresSavingThrow": false, "interruptionSavingThrowComputationMethod": "SaveOverride", "interruptionSavingThrowAbility": "", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadiance.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadiance.json new file mode 100644 index 0000000000..2e45c2bc24 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadiance.json @@ -0,0 +1,157 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [ + "Definition:ConditionAffinitySickeningRadiance:fc61f40d-38f7-5a41-b8fb-d6e4464a3135" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": false, + "silentWhenRefreshed": true, + "terminateWhenRemoved": false, + "specialDuration": true, + "durationType": "Minute", + "durationParameterDie": "D1", + "durationParameter": 10, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "additionalDamageType": "", + "additionalDamageQuantity": "AbilityBonus", + "additionalDamageDieType": "D1", + "additionalDamageDieNumber": 1, + "additionalConditionWhenHit": false, + "additionalCondition": null, + "additionalConditionDurationType": "Round", + "additionalConditionDurationParameter": 1, + "additionalConditionTurnOccurenceType": "StartOfTurn", + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidParticleParameters": null, + "coldParticleParameters": null, + "fireParticleParameters": null, + "lightningParticleParameters": null, + "poisonParticleParameters": null, + "overrideCharacterShaderColors": false, + "firstCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "secondCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "timeToWaitBeforeApplyingShader": 0.5, + "timeToWaitBeforeRemovingShader": 0.5, + "possessive": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": false, + "followSourcePosition": false, + "disolveCharacterOnDeath": false, + "disolveParameters": { + "$type": "GraphicsCharacterDefinitions+DisolveParameters, Assembly-CSharp", + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "colorWidth": 0.0, + "noiseScale": 5.0, + "hueScale": 0.0, + "vertexOffset": 0.0, + "curve": { + "$type": "UnityEngine.AnimationCurve, UnityEngine.CoreModule" + }, + "startAfterDeathAnimation": false, + "duration": 0.0 + }, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Condition/&ConditionSickeningRadianceTitle", + "description": "Condition/&ConditionSickeningRadianceDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "972ed4fda488202498a29dc8a698c8e8", + "m_SubObjectName": "ConditionNegative", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "8e8f5489-4e47-5457-9038-7e3193e4686e", + "contentPack": 9999, + "name": "ConditionSickeningRadiance" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted1.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted1.json new file mode 100644 index 0000000000..9c5d91f25b --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted1.json @@ -0,0 +1,157 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [ + "Definition:AbilityCheckAffinityConditionExhausted:addbff861499fbc47a0c9505f58a5404" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": true, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": true, + "durationType": "Minute", + "durationParameterDie": "D1", + "durationParameter": 10, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "additionalDamageType": "", + "additionalDamageQuantity": "AbilityBonus", + "additionalDamageDieType": "D1", + "additionalDamageDieNumber": 1, + "additionalConditionWhenHit": false, + "additionalCondition": null, + "additionalConditionDurationType": "Round", + "additionalConditionDurationParameter": 1, + "additionalConditionTurnOccurenceType": "StartOfTurn", + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "4b0997de69b577c41a5016decc0f4a07", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "4758c4ccb17a08a43a638c9e8c7b5060", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "d7cb33f68cae01844a5aed6064f61fdc", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidParticleParameters": null, + "coldParticleParameters": null, + "fireParticleParameters": null, + "lightningParticleParameters": null, + "poisonParticleParameters": null, + "overrideCharacterShaderColors": false, + "firstCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "secondCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "timeToWaitBeforeApplyingShader": 0.5, + "timeToWaitBeforeRemovingShader": 0.5, + "possessive": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": false, + "followSourcePosition": false, + "disolveCharacterOnDeath": false, + "disolveParameters": { + "$type": "GraphicsCharacterDefinitions+DisolveParameters, Assembly-CSharp", + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "colorWidth": 0.0, + "noiseScale": 5.0, + "hueScale": 0.0, + "vertexOffset": 0.0, + "curve": { + "$type": "UnityEngine.AnimationCurve, UnityEngine.CoreModule" + }, + "startAfterDeathAnimation": false, + "duration": 0.0 + }, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Condition/&ConditionSickeningRadianceExhausted1Title", + "description": "Condition/&ConditionSickeningRadianceExhausted1Description", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "2ef089b370685bd44833c621471d754e", + "m_SubObjectName": "ConditionExhausted", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "294beaa0-e0ab-568f-9329-0b999035977c", + "contentPack": 9999, + "name": "ConditionSickeningRadianceExhausted1" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted2.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted2.json new file mode 100644 index 0000000000..115d685107 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted2.json @@ -0,0 +1,158 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [ + "Definition:AbilityCheckAffinityConditionExhausted:addbff861499fbc47a0c9505f58a5404", + "Definition:MovementAffinityConditionSlowed:d1cc31d667617454e9751c34328770d4" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": true, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": true, + "durationType": "Minute", + "durationParameterDie": "D1", + "durationParameter": 10, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "additionalDamageType": "", + "additionalDamageQuantity": "AbilityBonus", + "additionalDamageDieType": "D1", + "additionalDamageDieNumber": 1, + "additionalConditionWhenHit": false, + "additionalCondition": null, + "additionalConditionDurationType": "Round", + "additionalConditionDurationParameter": 1, + "additionalConditionTurnOccurenceType": "StartOfTurn", + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "4b0997de69b577c41a5016decc0f4a07", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "4758c4ccb17a08a43a638c9e8c7b5060", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "d7cb33f68cae01844a5aed6064f61fdc", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidParticleParameters": null, + "coldParticleParameters": null, + "fireParticleParameters": null, + "lightningParticleParameters": null, + "poisonParticleParameters": null, + "overrideCharacterShaderColors": false, + "firstCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "secondCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "timeToWaitBeforeApplyingShader": 0.5, + "timeToWaitBeforeRemovingShader": 0.5, + "possessive": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": false, + "followSourcePosition": false, + "disolveCharacterOnDeath": false, + "disolveParameters": { + "$type": "GraphicsCharacterDefinitions+DisolveParameters, Assembly-CSharp", + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "colorWidth": 0.0, + "noiseScale": 5.0, + "hueScale": 0.0, + "vertexOffset": 0.0, + "curve": { + "$type": "UnityEngine.AnimationCurve, UnityEngine.CoreModule" + }, + "startAfterDeathAnimation": false, + "duration": 0.0 + }, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Condition/&ConditionSickeningRadianceExhausted2Title", + "description": "Condition/&ConditionSickeningRadianceExhausted2Description", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "2ef089b370685bd44833c621471d754e", + "m_SubObjectName": "ConditionExhausted", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "f5eb4f9d-4c35-5d36-b3a1-fd0376d67ef7", + "contentPack": 9999, + "name": "ConditionSickeningRadianceExhausted2" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted3.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted3.json new file mode 100644 index 0000000000..453f3a631b --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted3.json @@ -0,0 +1,160 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [ + "Definition:AbilityCheckAffinityConditionExhausted:addbff861499fbc47a0c9505f58a5404", + "Definition:CombatAffinitySickeningRadianceExhausted3:ed0bba01-a7af-58ff-b7e1-96650ddf5d76", + "Definition:MovementAffinityConditionSlowed:d1cc31d667617454e9751c34328770d4", + "Definition:SavingThrowAffinitySickeningRadianceExhausted3:bb2186f4-5847-5e4a-a3dc-f613ad953662" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": true, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": true, + "durationType": "Minute", + "durationParameterDie": "D1", + "durationParameter": 10, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "additionalDamageType": "", + "additionalDamageQuantity": "AbilityBonus", + "additionalDamageDieType": "D1", + "additionalDamageDieNumber": 1, + "additionalConditionWhenHit": false, + "additionalCondition": null, + "additionalConditionDurationType": "Round", + "additionalConditionDurationParameter": 1, + "additionalConditionTurnOccurenceType": "StartOfTurn", + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "4b0997de69b577c41a5016decc0f4a07", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "4758c4ccb17a08a43a638c9e8c7b5060", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "d7cb33f68cae01844a5aed6064f61fdc", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidParticleParameters": null, + "coldParticleParameters": null, + "fireParticleParameters": null, + "lightningParticleParameters": null, + "poisonParticleParameters": null, + "overrideCharacterShaderColors": false, + "firstCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "secondCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "timeToWaitBeforeApplyingShader": 0.5, + "timeToWaitBeforeRemovingShader": 0.5, + "possessive": true, + "amountOrigin": "None", + "baseAmount": 0, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": false, + "followSourcePosition": false, + "disolveCharacterOnDeath": false, + "disolveParameters": { + "$type": "GraphicsCharacterDefinitions+DisolveParameters, Assembly-CSharp", + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "colorWidth": 0.0, + "noiseScale": 5.0, + "hueScale": 0.0, + "vertexOffset": 0.0, + "curve": { + "$type": "UnityEngine.AnimationCurve, UnityEngine.CoreModule" + }, + "startAfterDeathAnimation": false, + "duration": 0.0 + }, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Condition/&ConditionSickeningRadianceExhausted3Title", + "description": "Condition/&ConditionSickeningRadianceExhausted3Description", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "2ef089b370685bd44833c621471d754e", + "m_SubObjectName": "ConditionExhausted", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "509fb040-ddec-56b5-95c4-71b80fb9f314", + "contentPack": 9999, + "name": "ConditionSickeningRadianceExhausted3" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted4.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted4.json new file mode 100644 index 0000000000..d080861053 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted4.json @@ -0,0 +1,161 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [ + "Definition:AbilityCheckAffinityConditionExhausted:addbff861499fbc47a0c9505f58a5404", + "Definition:AttributeModifierSickeningRadianceExhausted4:86a93483-bc8e-5c63-8b08-36224f6860be", + "Definition:CombatAffinitySickeningRadianceExhausted3:ed0bba01-a7af-58ff-b7e1-96650ddf5d76", + "Definition:MovementAffinityConditionSlowed:d1cc31d667617454e9751c34328770d4", + "Definition:SavingThrowAffinitySickeningRadianceExhausted3:bb2186f4-5847-5e4a-a3dc-f613ad953662" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": true, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": true, + "durationType": "Minute", + "durationParameterDie": "D1", + "durationParameter": 10, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "additionalDamageType": "", + "additionalDamageQuantity": "AbilityBonus", + "additionalDamageDieType": "D1", + "additionalDamageDieNumber": 1, + "additionalConditionWhenHit": false, + "additionalCondition": null, + "additionalConditionDurationType": "Round", + "additionalConditionDurationParameter": 1, + "additionalConditionTurnOccurenceType": "StartOfTurn", + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "4b0997de69b577c41a5016decc0f4a07", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "4758c4ccb17a08a43a638c9e8c7b5060", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "d7cb33f68cae01844a5aed6064f61fdc", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidParticleParameters": null, + "coldParticleParameters": null, + "fireParticleParameters": null, + "lightningParticleParameters": null, + "poisonParticleParameters": null, + "overrideCharacterShaderColors": false, + "firstCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "secondCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "timeToWaitBeforeApplyingShader": 0.5, + "timeToWaitBeforeRemovingShader": 0.5, + "possessive": true, + "amountOrigin": "Fixed", + "baseAmount": 1, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": false, + "followSourcePosition": false, + "disolveCharacterOnDeath": false, + "disolveParameters": { + "$type": "GraphicsCharacterDefinitions+DisolveParameters, Assembly-CSharp", + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "colorWidth": 0.0, + "noiseScale": 5.0, + "hueScale": 0.0, + "vertexOffset": 0.0, + "curve": { + "$type": "UnityEngine.AnimationCurve, UnityEngine.CoreModule" + }, + "startAfterDeathAnimation": false, + "duration": 0.0 + }, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Condition/&ConditionSickeningRadianceExhausted4Title", + "description": "Condition/&ConditionSickeningRadianceExhausted4Description", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "2ef089b370685bd44833c621471d754e", + "m_SubObjectName": "ConditionExhausted", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "f1432c9c-b863-51a5-8bf2-dd0534f70b05", + "contentPack": 9999, + "name": "ConditionSickeningRadianceExhausted4" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted5.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted5.json new file mode 100644 index 0000000000..c1799fe7ce --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceExhausted5.json @@ -0,0 +1,161 @@ +{ + "$type": "ConditionDefinition, Assembly-CSharp", + "inDungeonEditor": false, + "parentCondition": null, + "conditionType": "Detrimental", + "features": [ + "Definition:AbilityCheckAffinityConditionExhausted:addbff861499fbc47a0c9505f58a5404", + "Definition:AttributeModifierSickeningRadianceExhausted4:86a93483-bc8e-5c63-8b08-36224f6860be", + "Definition:CombatAffinitySickeningRadianceExhausted3:ed0bba01-a7af-58ff-b7e1-96650ddf5d76", + "Definition:MovementAffinityConditionRestrained:ed9d9d5986e47f845819579f936ee8cc", + "Definition:SavingThrowAffinitySickeningRadianceExhausted3:bb2186f4-5847-5e4a-a3dc-f613ad953662" + ], + "allowMultipleInstances": false, + "silentWhenAdded": false, + "silentWhenRemoved": true, + "silentWhenRefreshed": false, + "terminateWhenRemoved": false, + "specialDuration": true, + "durationType": "Minute", + "durationParameterDie": "D1", + "durationParameter": 10, + "forceTurnOccurence": false, + "turnOccurence": "EndOfTurn", + "specialInterruptions": [], + "interruptionRequiresSavingThrow": false, + "interruptionSavingThrowComputationMethod": "SaveOverride", + "interruptionSavingThrowAbility": "", + "interruptionDamageThreshold": 0, + "keepConditionIfSavingThrowSucceeds": false, + "interruptionSavingThrowAffinity": "None", + "conditionTags": [], + "recurrentEffectForms": [], + "cancellingConditions": [], + "additionalDamageWhenHit": false, + "additionalDamageTypeDetermination": "Specific", + "additionalDamageType": "", + "additionalDamageQuantity": "AbilityBonus", + "additionalDamageDieType": "D1", + "additionalDamageDieNumber": 1, + "additionalConditionWhenHit": false, + "additionalCondition": null, + "additionalConditionDurationType": "Round", + "additionalConditionDurationParameter": 1, + "additionalConditionTurnOccurenceType": "StartOfTurn", + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "4b0997de69b577c41a5016decc0f4a07", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "4758c4ccb17a08a43a638c9e8c7b5060", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "d7cb33f68cae01844a5aed6064f61fdc", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "recurrentEffectParticleReference": null, + "characterShaderReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "particlesBasedOnAncestryDamageType": false, + "ancestryType": "Sorcerer", + "acidParticleParameters": null, + "coldParticleParameters": null, + "fireParticleParameters": null, + "lightningParticleParameters": null, + "poisonParticleParameters": null, + "overrideCharacterShaderColors": false, + "firstCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "secondCharacterShaderColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "timeToWaitBeforeApplyingShader": 0.5, + "timeToWaitBeforeRemovingShader": 0.5, + "possessive": true, + "amountOrigin": "Fixed", + "baseAmount": 1, + "additiveAmount": false, + "sourceAbilityBonusMinValue": 1, + "subsequentOnRemoval": null, + "subsequentHasSavingThrow": false, + "subsequentSavingThrowAbilityScore": "Constitution", + "subsequentVariableForDC": "FrenzyExhaustionDC", + "subsequentDCIncrease": 5, + "effectFormsOnRemoved": [], + "forceBehavior": false, + "addBehavior": false, + "fearSource": false, + "battlePackage": null, + "explorationPackage": null, + "removedFromTheGame": false, + "permanentlyRemovedIfExtraPlanar": false, + "refundReceivedDamageWhenRemoved": false, + "followSourcePosition": false, + "disolveCharacterOnDeath": false, + "disolveParameters": { + "$type": "GraphicsCharacterDefinitions+DisolveParameters, Assembly-CSharp", + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "colorWidth": 0.0, + "noiseScale": 5.0, + "hueScale": 0.0, + "vertexOffset": 0.0, + "curve": { + "$type": "UnityEngine.AnimationCurve, UnityEngine.CoreModule" + }, + "startAfterDeathAnimation": false, + "duration": 0.0 + }, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Condition/&ConditionSickeningRadianceExhausted5Title", + "description": "Condition/&ConditionSickeningRadianceExhausted5Description", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "2ef089b370685bd44833c621471d754e", + "m_SubObjectName": "ConditionExhausted", + "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "eddc23ff-9c5e-5fa2-9dac-28c3c4d038e9", + "contentPack": 9999, + "name": "ConditionSickeningRadianceExhausted5" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionFeatHammerThePointHammerThePoint.json b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceMark.json similarity index 94% rename from Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionFeatHammerThePointHammerThePoint.json rename to Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceMark.json index 9456eab417..58b8837d4d 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionFeatHammerThePointHammerThePoint.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/ConditionDefinition/ConditionSickeningRadianceMark.json @@ -4,17 +4,17 @@ "parentCondition": null, "conditionType": "Beneficial", "features": [], - "allowMultipleInstances": true, + "allowMultipleInstances": false, "silentWhenAdded": true, "silentWhenRemoved": true, "silentWhenRefreshed": false, "terminateWhenRemoved": false, - "specialDuration": true, - "durationType": "Round", + "specialDuration": false, + "durationType": "Hour", "durationParameterDie": "D4", - "durationParameter": 0, + "durationParameter": 1, "forceTurnOccurence": false, - "turnOccurence": "EndOfSourceTurn", + "turnOccurence": "EndOfTurn", "specialInterruptions": [], "interruptionRequiresSavingThrow": false, "interruptionSavingThrowComputationMethod": "SaveOverride", @@ -149,7 +149,7 @@ "usedInValleyDLC": false }, "contentCopyright": "UserContent", - "guid": "93cd67e0-8f5f-5c97-9116-54f81a11f0ea", + "guid": "e7c8bace-e63a-541f-a8a1-74ef61590f5a", "contentPack": 9999, - "name": "ConditionFeatHammerThePointHammerThePoint" + "name": "ConditionSickeningRadianceMark" } \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/EffectProxyDefinition/ProxySickeningRadiance.json b/Diagnostics/UnfinishedBusinessBlueprints/EffectProxyDefinition/ProxySickeningRadiance.json new file mode 100644 index 0000000000..61aaa9ce78 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/EffectProxyDefinition/ProxySickeningRadiance.json @@ -0,0 +1,143 @@ +{ + "$type": "EffectProxyDefinition, Assembly-CSharp", + "canMove": false, + "canRotate": false, + "canMoveOnCharacters": false, + "canAttack": false, + "canTriggerPower": false, + "autoTerminateOnTriggerPower": false, + "incrementalDamageDice": 0, + "actionId": "NoAction", + "freeActionId": "NoAction", + "attackMethod": "CasterSpellAbility", + "firstAttackIsFree": false, + "constrainedToSpellArea": false, + "damageDie": "D8", + "damageDieNum": 1, + "damageType": "DamageRadiant", + "addAbilityToDamage": false, + "attackPower": null, + "impactsPlacement": false, + "additionalFeatures": [], + "attackParticle": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "attackImpactParticle": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "addLightSource": true, + "lightSourceForm": { + "$type": "LightSourceForm, Assembly-CSharp", + "lightSourceType": "Basic", + "brightRange": 0, + "dimAdditionalRange": 6, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.5, + "g": 0.7, + "b": 0.3, + "a": 1.0 + }, + "graphicsPrefabReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "7ab0099a76371324799a14a592402456", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "applyToSelf": false, + "forceOnSelf": false + }, + "lightSourceOffset": { + "$type": "UnityEngine.Vector3, UnityEngine.CoreModule", + "x": 0.0, + "y": 0.5, + "z": 0.0 + }, + "spellImmunityFromOutside": false, + "maxSpellLevelImmunity": 1, + "hasPresentation": true, + "prefabReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "5ba593b4783994b4d8721ce359a5f729", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "isEmptyPresentation": false, + "modelScale": 1.0, + "showWorldLocationFeedbacks": false, + "hasPortrait": false, + "portraitSpriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "startEvent": { + "$type": "AK.Wwise.Event, AK.Wwise.Unity.API.WwiseTypes", + "WwiseObjectReference": null, + "idInternal": 0, + "valueGuidInternal": { + "$type": "System.Byte[], mscorlib", + "$value": "" + } + }, + "stopEvent": { + "$type": "AK.Wwise.Event, AK.Wwise.Unity.API.WwiseTypes", + "WwiseObjectReference": null, + "idInternal": 0, + "valueGuidInternal": { + "$type": "System.Byte[], mscorlib", + "$value": "" + } + }, + "soundEffectOnHitDescription": { + "$type": "SoundEffectOnHitDescription, Assembly-CSharp", + "switchOnHit": { + "$type": "AK.Wwise.Switch, AK.Wwise.Unity.API.WwiseTypes", + "WwiseObjectReference": null, + "groupIdInternal": 0, + "groupGuidInternal": { + "$type": "System.Byte[], mscorlib", + "$value": "" + }, + "idInternal": 0, + "valueGuidInternal": { + "$type": "System.Byte[], mscorlib", + "$value": "" + } + } + }, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Spell/&SickeningRadianceTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "3da14e42-a91a-5895-a8a6-fd1573c65fec", + "contentPack": 9999, + "name": "ProxySickeningRadiance" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatAstralArms.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatAstralArms.json deleted file mode 100644 index 3a61f11bee..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatAstralArms.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$type": "FeatDefinition, Assembly-CSharp", - "compatibleClassesPrerequisite": [], - "mustCastSpellsPrerequisite": false, - "compatibleRacesPrerequisite": [], - "minimalAbilityScorePrerequisite": false, - "minimalAbilityScoreValue": 13, - "minimalAbilityScoreName": "Strength", - "armorProficiencyPrerequisite": false, - "armorProficiencyCategory": "", - "hasFamilyTag": false, - "familyTag": "", - "knownFeatsPrerequisite": [], - "features": [ - "Definition:AttributeModifierCreed_Of_Maraike:7fd526d5e743c6f48bad92aac9b1738d" - ], - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "Feat/&FeatAstralArmsTitle", - "description": "Feat/&FeatAstralArmsDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "d52d661c-6596-5206-95de-0687bc6a2d42", - "contentPack": 9999, - "name": "FeatAstralArms" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfDexterity.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfDexterity.json index 93a961b7fd..ecd04c5eeb 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfDexterity.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfDexterity.json @@ -16,7 +16,7 @@ "$type": "GuiPresentation, Assembly-CSharp", "hidden": true, "title": "Feat/&FeatGroupHalfDexterityTitle", - "description": "Acrobat, Ambidextrous, Athlete [Dex], Awaken the Beast [Dex], Baleful Scion [Dex], Close Quarters [Dex], Creed of Misaye, Devastating Strikes [Dex], Discretion of the Coedymwarth, Eager for Battle, Elven Accuracy [Dex], Fade Away [Dex], Forest Runner, Longsword Finesse, Moderately Armored [Dex], Old Tactics [Dex], Piercer [Dex], Revenant Blade [Dex], Second Chance [Dex], Slasher [Dex], Squat Nimbleness [Dex], Steady Aim, Stealthy, Uncanny Accuracy, Weapon Master [Dex]", + "description": "Acrobat, Ambidextrous, Athlete [Dex], Awaken the Beast [Dex], Baleful Scion [Dex], Close Quarters [Dex], Creed of Misaye, Devastating Strikes [Dex], Discretion of the Coedymwarth, Eager for Battle, Elven Accuracy [Dex], Fade Away [Dex], Forest Runner, Longsword Finesse, Moderately Armored [Dex], Old Tactics [Dex], Piercer [Dex], Revenant Blade [Dex], Second Chance [Dex], Slasher [Dex], Squat Nimbleness [Dex], Stealthy, Uncanny Accuracy, Weapon Master [Dex]", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfStrength.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfStrength.json index 3da05d3413..2b471e3b53 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfStrength.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfStrength.json @@ -16,7 +16,7 @@ "$type": "GuiPresentation, Assembly-CSharp", "hidden": true, "title": "Feat/&FeatGroupHalfStrengthTitle", - "description": "Athlete [Str], Awaken the Beast [Str], Baleful Scion [Str], Creed of Einar, Crusher [Str], Devastating Strikes [Str], Dragon Fear [Str], Dragon Hide [Str], Grudge Bearer [Str], Hardy [Str], Hauler, Heavy Armor Master, Might of the Iron Legion, Moderately Armored [Str], Old Tactics [Str], Orcish Aggression [Str], Orcish Fury [Str], Piercer [Str], Primal Rage [Str], Revenant Blade [Str], Slasher [Str], Squat Nimbleness [Str], Weapon Master [Str]", + "description": "Athlete [Str], Awaken the Beast [Str], Baleful Scion [Str], Creed of Einar, Crusher [Str], Devastating Strikes [Str], Dragon Fear [Str], Dragon Hide [Str], Grudge Bearer [Str], Hardy [Str], Hauler, Heavy Armor Master, Might of the Iron Legion, Moderately Armored [Str], Old Tactics [Str], Orcish Aggression [Str], Orcish Fury [Str], Piercer [Str], Primal Rage [Str], Revenant Blade [Str], Slasher [Str], Squat Nimbleness [Str], Thrown Weapons Master, Weapon Master [Str]", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfWisdom.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfWisdom.json index 0d30a0c0b6..aab7d84173 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfWisdom.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatGroupHalfWisdom.json @@ -16,7 +16,7 @@ "$type": "GuiPresentation, Assembly-CSharp", "hidden": true, "title": "Feat/&FeatGroupHalfWisdomTitle", - "description": "Aegis Touched [Wis], Apothecary [Wis], Astral Reach, Awaken the Beast [Wis], Baleful Scion [Wis], Blessed Soul [Cleric], Celestial Touched [Wis], Chef [Wis], Creed of Maraike, Elven Accuracy [Wis], Expand the Hunt, Fey Teleportation [Wis], Flame Touched [Wis], Grudge Bearer [Wis], Iridescent Touched [Wis], Peregrination Touched [Wis], Retinue Touched [Wis], Shadow Touched [Wis], Telekinetic [Wis], Toxicologist [Wis], Verdant Touched [Wis], Wise Archery, Wise Defense, Wise Precision", + "description": "Aegis Touched [Wis], Apothecary [Wis], Awaken the Beast [Wis], Baleful Scion [Wis], Blessed Soul [Cleric], Celestial Touched [Wis], Chef [Wis], Creed of Maraike, Elven Accuracy [Wis], Expand the Hunt, Fey Teleportation [Wis], Flame Touched [Wis], Grudge Bearer [Wis], Iridescent Touched [Wis], Peregrination Touched [Wis], Retinue Touched [Wis], Shadow Touched [Wis], Telekinetic [Wis], Toxicologist [Wis], Verdant Touched [Wis], Wise Archery, Wise Defense, Wise Precision", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatHammerThePoint.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatHammerThePoint.json deleted file mode 100644 index 2a2e7b9a21..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatHammerThePoint.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$type": "FeatDefinition, Assembly-CSharp", - "compatibleClassesPrerequisite": [], - "mustCastSpellsPrerequisite": false, - "compatibleRacesPrerequisite": [], - "minimalAbilityScorePrerequisite": false, - "minimalAbilityScoreValue": 13, - "minimalAbilityScoreName": "Strength", - "armorProficiencyPrerequisite": false, - "armorProficiencyCategory": "", - "hasFamilyTag": false, - "familyTag": "", - "knownFeatsPrerequisite": [], - "features": [ - "Definition:AdditionalDamageFeatHammerThePointHammerThePoint:26cad3da-5cf3-525a-b070-b8bd8a6f88fc" - ], - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "Feat/&FeatHammerThePointTitle", - "description": "Feat/&FeatHammerThePointDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "dca565d9-a216-5f92-890d-1747c649cbfb", - "contentPack": 9999, - "name": "FeatHammerThePoint" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatMerciless.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatMerciless.json similarity index 82% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatMerciless.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatMerciless.json index 07a6b699f0..c686ad9a70 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatMerciless.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatMerciless.json @@ -1,5 +1,5 @@ { - "$type": "FeatDefinitionWithPrerequisites, SolastaUnfinishedBusiness", + "$type": "FeatDefinition, Assembly-CSharp", "compatibleClassesPrerequisite": [], "mustCastSpellsPrerequisite": false, "compatibleRacesPrerequisite": [], @@ -12,7 +12,8 @@ "familyTag": "", "knownFeatsPrerequisite": [], "features": [ - "Definition:ProficiencyFeatMerciless:19a654a6-15c9-57af-a93f-f14f5eed5b71" + "Definition:PowerFightingStyleMerciless:2500343e-570f-57ec-bf7c-02225d302cba", + "Definition:TargetReducedToZeroHpFightingStyleMerciless:915fb6af-6989-5e40-9087-1ce64a2bbfba" ], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", @@ -21,7 +22,7 @@ "description": "FightingStyle/&MercilessDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "e0b4a203-382b-5ab4-acfa-af309c1a019c", + "m_AssetGUID": "", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatPolearmExpert.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatPolearmExpert.json similarity index 84% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatPolearmExpert.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatPolearmExpert.json index 999d167b5a..b580535f74 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatPolearmExpert.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatPolearmExpert.json @@ -1,5 +1,5 @@ { - "$type": "FeatDefinitionWithPrerequisites, SolastaUnfinishedBusiness", + "$type": "FeatDefinition, Assembly-CSharp", "compatibleClassesPrerequisite": [], "mustCastSpellsPrerequisite": false, "compatibleRacesPrerequisite": [], @@ -12,7 +12,7 @@ "familyTag": "", "knownFeatsPrerequisite": [], "features": [ - "Definition:ProficiencyFeatPolearmExpert:1c75c89c-a39e-5546-8bba-022b6b9b1271" + "Definition:FeaturePolearm:8e6e835a-2424-5900-8677-034801779b88" ], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", @@ -21,7 +21,7 @@ "description": "FightingStyle/&PolearmExpertDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "4b56c077-b3ab-5cac-b4ae-1aa5a3ecdfd5", + "m_AssetGUID": "", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatRopeItUp.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatRopeItUp.json similarity index 84% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatRopeItUp.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatRopeItUp.json index 9d884263b2..2738ae27f4 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatRopeItUp.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatRopeItUp.json @@ -1,5 +1,5 @@ { - "$type": "FeatDefinitionWithPrerequisites, SolastaUnfinishedBusiness", + "$type": "FeatDefinition, Assembly-CSharp", "compatibleClassesPrerequisite": [], "mustCastSpellsPrerequisite": false, "compatibleRacesPrerequisite": [], @@ -12,7 +12,7 @@ "familyTag": "", "knownFeatsPrerequisite": [], "features": [ - "Definition:ProficiencyFeatRopeItUp:a85c3f98-b265-5c63-b11f-0e2299e0935c" + "Definition:AttributeModifierRopeItUp:0cb22e4d-85a2-58b6-a418-e3e38de57520" ], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", @@ -21,7 +21,7 @@ "description": "FightingStyle/&RopeItUpDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "54c7e250-8ec1-5fac-9a50-f273402e0a62", + "m_AssetGUID": "", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatSentinel.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatSentinel.json similarity index 84% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatSentinel.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatSentinel.json index 78ac7a39d3..9f3a16d64a 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatSentinel.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatSentinel.json @@ -1,5 +1,5 @@ { - "$type": "FeatDefinitionWithPrerequisites, SolastaUnfinishedBusiness", + "$type": "FeatDefinition, Assembly-CSharp", "compatibleClassesPrerequisite": [], "mustCastSpellsPrerequisite": false, "compatibleRacesPrerequisite": [], @@ -12,7 +12,7 @@ "familyTag": "", "knownFeatsPrerequisite": [], "features": [ - "Definition:ProficiencyFeatSentinel:69cd3b17-4a21-5c62-bd20-818e72c83031" + "Definition:OnAttackHitEffectFeatSentinel:1a2abf93-483e-5e6e-8408-bc553864469f" ], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", @@ -21,7 +21,7 @@ "description": "FightingStyle/&SentinelDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "c694eed9-c1d3-5d5b-b69d-b9459bf27cb9", + "m_AssetGUID": "", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatShieldExpert.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatShieldExpert.json similarity index 84% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatShieldExpert.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatShieldExpert.json index da3b344fbd..ab0ff0407b 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatShieldExpert.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatShieldExpert.json @@ -1,5 +1,5 @@ { - "$type": "FeatDefinitionWithPrerequisites, SolastaUnfinishedBusiness", + "$type": "FeatDefinition, Assembly-CSharp", "compatibleClassesPrerequisite": [], "mustCastSpellsPrerequisite": false, "compatibleRacesPrerequisite": [], @@ -12,7 +12,7 @@ "familyTag": "", "knownFeatsPrerequisite": [], "features": [ - "Definition:ProficiencyFeatShieldExpert:6fd6a6d7-783e-52d3-8122-7d906ebcb8cd" + "Definition:AddExtraAttackShieldExpert:4c494f10-3661-54c4-a7bd-1de696250ba4" ], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", @@ -21,7 +21,7 @@ "description": "FightingStyle/&ShieldExpertDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "12d11a0c-b767-586b-9508-df780e4f477d", + "m_AssetGUID": "", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatSteadyAim.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatSteadyAim.json deleted file mode 100644 index 5bb78a1248..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinition/FeatSteadyAim.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "$type": "FeatDefinition, Assembly-CSharp", - "compatibleClassesPrerequisite": [], - "mustCastSpellsPrerequisite": false, - "compatibleRacesPrerequisite": [], - "minimalAbilityScorePrerequisite": false, - "minimalAbilityScoreValue": 13, - "minimalAbilityScoreName": "Strength", - "armorProficiencyPrerequisite": false, - "armorProficiencyCategory": "", - "hasFamilyTag": false, - "familyTag": "", - "knownFeatsPrerequisite": [], - "features": [ - "Definition:AttributeModifierCreed_Of_Misaye:74d55f601f8ad8246b18a19766524280", - "Definition:PowerFeatSteadyAim:fdf6c521-1f01-5d34-8ad9-2c147657c79d" - ], - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "Feat/&FeatSteadyAimTitle", - "description": "Feat/&FeatSteadyAimDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "8f954320-b56c-5ad6-8f80-b375a176c947", - "contentPack": 9999, - "name": "FeatSteadyAim" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatInterception.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatInterception.json index 0b87376cd2..7606ee1064 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatInterception.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatInterception.json @@ -21,9 +21,9 @@ "description": "FightingStyle/&InterceptionDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "204f9387786340a42bbbadd75d56cc98", - "m_SubObjectName": "Defense", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "1ff9dc49-7b82-5486-a562-0988e0ed0ed6", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatMonkShieldExpert.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatMonkShieldExpert.json deleted file mode 100644 index 5f971a4f7d..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatDefinitionWithPrerequisites/FeatMonkShieldExpert.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$type": "FeatDefinitionWithPrerequisites, SolastaUnfinishedBusiness", - "compatibleClassesPrerequisite": [], - "mustCastSpellsPrerequisite": false, - "compatibleRacesPrerequisite": [], - "minimalAbilityScorePrerequisite": false, - "minimalAbilityScoreValue": 13, - "minimalAbilityScoreName": "Strength", - "armorProficiencyPrerequisite": false, - "armorProficiencyCategory": "", - "hasFamilyTag": false, - "familyTag": "", - "knownFeatsPrerequisite": [], - "features": [ - "Definition:ProficiencyFeatMonkShieldExpert:3c9cec58-0a28-5b43-b9e5-adaf1049543d" - ], - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "FightingStyle/&MonkShieldExpertTitle", - "description": "FightingStyle/&MonkShieldExpertDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "7dd630bc-c1c3-5f9e-8d78-a83e3b769927", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "40aae7ca-8def-5541-a01c-e6f6374ec9cf", - "contentPack": 9999, - "name": "FeatMonkShieldExpert" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetTacticianTacticalAwareness.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinition/FeatureSetTacticianTacticalAwareness.json similarity index 64% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetTacticianTacticalAwareness.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinition/FeatureSetTacticianTacticalAwareness.json index 65d1e97897..a9c5165147 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetTacticianTacticalAwareness.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinition/FeatureSetTacticianTacticalAwareness.json @@ -1,16 +1,5 @@ { - "$type": "FeatureDefinitionFeatureSet, Assembly-CSharp", - "featureSet": [ - "Definition:AdditionalDamageTacticianTacticalAwareness:8578c41d-ae85-5346-9f89-020167d17c71", - "Definition:CombatAffinityTacticianTacticalAwareness:9f8adbd8-c957-518c-a49d-c8679f32983b" - ], - "mode": "Union", - "ancestryDamageTypeMap": [], - "ancestryType": "Sorcerer", - "defaultSelection": 0, - "uniqueChoices": false, - "enumerateInDescription": false, - "hasRacialAffinity": false, + "$type": "FeatureDefinition, Assembly-CSharp", "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageFeatHammerThePointHammerThePoint.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageFeatHammerThePointHammerThePoint.json deleted file mode 100644 index ac62a44f70..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageFeatHammerThePointHammerThePoint.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "$type": "FeatureDefinitionAdditionalDamage, Assembly-CSharp", - "notificationTag": "", - "limitedUsage": "None", - "firstTargetOnly": true, - "targetSide": "Enemy", - "otherSimilarAdditionalDamages": [], - "triggerCondition": "AlwaysActive", - "requiredProperty": "None", - "attackModeOnly": true, - "attackOnly": false, - "requiredTargetCondition": null, - "requiredTargetSenseType": "Darkvision", - "requiredTargetCreatureTag": "", - "requiredCharacterFamily": null, - "requiredSpecificSpell": null, - "requiredAncestryType": "Sorcerer", - "damageValueDetermination": "Die", - "flatBonus": 0, - "damageDieType": "D6", - "damageDiceNumber": 0, - "additionalDamageType": "SameAsBaseDamage", - "specificDamageType": "Radiant", - "ancestryTypeForDamageType": "Sorcerer", - "damageAdvancement": "None", - "diceByRankTable": [], - "familiesWithAdditionalDice": [], - "familiesDiceNumber": 1, - "ignoreCriticalDoubleDice": false, - "hasSavingThrow": false, - "savingThrowAbility": "Dexterity", - "dcComputation": "FixedValue", - "savingThrowDC": 10, - "savingThrowDCAbilityModifier": "Dexterity", - "damageSaveAffinity": "None", - "conditionOperations": [ - { - "$type": "ConditionOperationDescription, Assembly-CSharp", - "hasSavingThrow": false, - "operation": "Add", - "conditionName": "", - "conditionDefinition": "Definition:ConditionFeatHammerThePointHammerThePoint:93cd67e0-8f5f-5c97-9116-54f81a11f0ea", - "saveAffinity": "None", - "canSaveToCancel": false, - "saveOccurence": "EndOfTurn" - } - ], - "addLightSource": false, - "lightSourceForm": null, - "impactParticleReference": null, - "particlesBasedOnAncestryDamageType": false, - "ancestryType": "Sorcerer", - "acidImpactParticleReference": null, - "coldImpactParticleReference": null, - "fireImpactParticleReference": null, - "lightningImpactParticleReference": null, - "poisonImpactParticleReference": null, - "computeDescription": false, - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "Feature/&NoContentTitle", - "description": "Feature/&NoContentTitle", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "26cad3da-5cf3-525a-b070-b8bd8a6f88fc", - "contentPack": 9999, - "name": "AdditionalDamageFeatHammerThePointHammerThePoint" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamagePathOfTheLightIlluminatingStrike.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamagePathOfTheLightIlluminatingStrike.json index e3977978ad..ee99f9be83 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamagePathOfTheLightIlluminatingStrike.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamagePathOfTheLightIlluminatingStrike.json @@ -135,26 +135,6 @@ "savingThrowDCAbilityModifier": "Dexterity", "damageSaveAffinity": "None", "conditionOperations": [ - { - "$type": "ConditionOperationDescription, Assembly-CSharp", - "hasSavingThrow": false, - "operation": "Remove", - "conditionName": "", - "conditionDefinition": "Definition:ConditionInvisible:6fff2284783105e4fa9793d4bf8afa3f", - "saveAffinity": "None", - "canSaveToCancel": false, - "saveOccurence": "EndOfTurn" - }, - { - "$type": "ConditionOperationDescription, Assembly-CSharp", - "hasSavingThrow": false, - "operation": "Remove", - "conditionName": "", - "conditionDefinition": "Definition:ConditionInvisible_Green_Hag:4095f3b0e1935f348ae2510402cd953f", - "saveAffinity": "None", - "canSaveToCancel": false, - "saveOccurence": "EndOfTurn" - }, { "$type": "ConditionOperationDescription, Assembly-CSharp", "hasSavingThrow": false, @@ -165,36 +145,6 @@ "canSaveToCancel": false, "saveOccurence": "EndOfTurn" }, - { - "$type": "ConditionOperationDescription, Assembly-CSharp", - "hasSavingThrow": false, - "operation": "Remove", - "conditionName": "", - "conditionDefinition": "Definition:ConditionInvisibleGreater:59190d77c6803cf4f8c35b057aab3737", - "saveAffinity": "None", - "canSaveToCancel": false, - "saveOccurence": "EndOfTurn" - }, - { - "$type": "ConditionOperationDescription, Assembly-CSharp", - "hasSavingThrow": false, - "operation": "Remove", - "conditionName": "", - "conditionDefinition": "Definition:ConditionInvisibleOneWithShadows:405ef1e99e1c0264b8b2816a537e3d36", - "saveAffinity": "None", - "canSaveToCancel": false, - "saveOccurence": "EndOfTurn" - }, - { - "$type": "ConditionOperationDescription, Assembly-CSharp", - "hasSavingThrow": false, - "operation": "Remove", - "conditionName": "", - "conditionDefinition": "Definition:ConditionInvisibleUncatchable:66bbc257eb8991b4799a2056830429e0", - "saveAffinity": "None", - "canSaveToCancel": false, - "saveOccurence": "EndOfTurn" - }, { "$type": "ConditionOperationDescription, Assembly-CSharp", "hasSavingThrow": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageTacticianTacticalAwareness.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageTacticianTacticalAwareness.json deleted file mode 100644 index 25550632ce..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAdditionalDamage/AdditionalDamageTacticianTacticalAwareness.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "$type": "FeatureDefinitionAdditionalDamage, Assembly-CSharp", - "notificationTag": "TacticalAwareness", - "limitedUsage": "OncePerTurn", - "firstTargetOnly": true, - "targetSide": "Enemy", - "otherSimilarAdditionalDamages": [], - "triggerCondition": "AlwaysActive", - "requiredProperty": "None", - "attackModeOnly": false, - "attackOnly": false, - "requiredTargetCondition": null, - "requiredTargetSenseType": "Darkvision", - "requiredTargetCreatureTag": "", - "requiredCharacterFamily": null, - "requiredSpecificSpell": null, - "requiredAncestryType": "Sorcerer", - "damageValueDetermination": "ProficiencyBonus", - "flatBonus": 0, - "damageDieType": "D6", - "damageDiceNumber": 0, - "additionalDamageType": "SameAsBaseDamage", - "specificDamageType": "Radiant", - "ancestryTypeForDamageType": "Sorcerer", - "damageAdvancement": "None", - "diceByRankTable": [], - "familiesWithAdditionalDice": [], - "familiesDiceNumber": 1, - "ignoreCriticalDoubleDice": false, - "hasSavingThrow": false, - "savingThrowAbility": "Dexterity", - "dcComputation": "FixedValue", - "savingThrowDC": 10, - "savingThrowDCAbilityModifier": "Dexterity", - "damageSaveAffinity": "None", - "conditionOperations": [], - "addLightSource": false, - "lightSourceForm": null, - "impactParticleReference": null, - "particlesBasedOnAncestryDamageType": false, - "ancestryType": "Sorcerer", - "acidImpactParticleReference": null, - "coldImpactParticleReference": null, - "fireImpactParticleReference": null, - "lightningImpactParticleReference": null, - "poisonImpactParticleReference": null, - "computeDescription": false, - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "Feature/&NoContentTitle", - "description": "Feature/&NoContentTitle", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "8578c41d-ae85-5346-9f89-020167d17c71", - "contentPack": 9999, - "name": "AdditionalDamageTacticianTacticalAwareness" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleGreater.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAttributeModifier/AttributeModifierSickeningRadianceExhausted4.json similarity index 58% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleGreater.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAttributeModifier/AttributeModifierSickeningRadianceExhausted4.json index 5edc69f752..7bfffee036 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleGreater.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionAttributeModifier/AttributeModifierSickeningRadianceExhausted4.json @@ -1,14 +1,12 @@ { - "$type": "FeatureDefinitionConditionAffinity, Assembly-CSharp", - "conditionType": "ConditionInvisibleGreater", - "savingThrowAdvantageType": "None", - "savingThrowModifier": 0, - "conditionAffinityType": "Immunity", - "silent": false, - "rerollSaveWhenGained": false, - "rerollAdvantageType": "None", - "myselfFamilyRestrictions": [], - "otherCharacterFamilyRestrictions": [], + "$type": "FeatureDefinitionAttributeModifier, Assembly-CSharp", + "modifiedAttribute": "HitPoints", + "modifierOperation": "AddConditionAmount", + "modifierValue": 1, + "modifierAbilityScore": "Constitution", + "situationalContext": "None", + "minimum1": false, + "useBonusFromCaster": false, "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", "hidden": true, @@ -33,7 +31,7 @@ "usedInValleyDLC": false }, "contentCopyright": "UserContent", - "guid": "7e9e7908-f57d-57b6-8653-e3852ae86286", + "guid": "86a93483-bc8e-5c63-8b08-36224f6860be", "contentPack": 9999, - "name": "ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleGreater" + "name": "AttributeModifierSickeningRadianceExhausted4" } \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityFeatSteadyAim.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityFeatSteadyAim.json index 0adfafbd13..23c445cc0e 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityFeatSteadyAim.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityFeatSteadyAim.json @@ -35,7 +35,7 @@ "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, - "title": "Feat/&FeatSteadyAimTitle", + "title": "Feature/&PowerFeatSteadyAimTitle", "description": "Feature/&NoContentTitle", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityTacticianTacticalAwareness.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinitySickeningRadianceExhausted3.json similarity index 83% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityTacticianTacticalAwareness.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinitySickeningRadianceExhausted3.json index 8d290b7028..9b1e52d9f9 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinityTacticianTacticalAwareness.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionCombatAffinity/CombatAffinitySickeningRadianceExhausted3.json @@ -3,13 +3,13 @@ "initiativeAffinity": "None", "canRageToOvercomeSurprise": false, "attackOfOpportunityImmunity": false, - "attackOfOpportunityOnMeAdvantageType": "Disadvantage", + "attackOfOpportunityOnMeAdvantageType": "None", "attackOnMeAdvantage": "None", "attackOnMeCountLimit": -1, "autoCritical": false, "criticalHitImmunity": false, "myAttackAffinityFilter": "Always", - "myAttackAdvantage": "None", + "myAttackAdvantage": "Disadvantage", "ignoreCover": false, "permanentCover": "None", "ignoreRangeAdvantage": false, @@ -35,8 +35,8 @@ "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", "hidden": false, - "title": "Feature/&FeatureSetTacticianTacticalAwarenessTitle", - "description": "Feature/&FeatureSetTacticianTacticalAwarenessDescription", + "title": "Condition/&ConditionSickeningRadianceExhausted3Title", + "description": "Feature/&NoContentTitle", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "", @@ -56,7 +56,7 @@ "usedInValleyDLC": false }, "contentCopyright": "UserContent", - "guid": "9f8adbd8-c957-518c-a49d-c8679f32983b", + "guid": "ed0bba01-a7af-58ff-b7e1-96650ddf5d76", "contentPack": 9999, - "name": "CombatAffinityTacticianTacticalAwareness" + "name": "CombatAffinitySickeningRadianceExhausted3" } \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleBase.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPrevent.json similarity index 89% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleBase.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPrevent.json index f4fcf06605..0c1b7c8ec2 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleBase.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPrevent.json @@ -33,7 +33,7 @@ "usedInValleyDLC": false }, "contentCopyright": "UserContent", - "guid": "5ca9c244-f43c-5ea2-b72b-675db2ff40f5", + "guid": "c815cc55-499c-5563-ac65-644765780373", "contentPack": 9999, - "name": "ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleBase" + "name": "ConditionAffinityPathOfTheLightIlluminatedPrevent" } \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleOneWithShadows.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleOneWithShadows.json deleted file mode 100644 index f2468c80d8..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleOneWithShadows.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$type": "FeatureDefinitionConditionAffinity, Assembly-CSharp", - "conditionType": "ConditionInvisibleOneWithShadows", - "savingThrowAdvantageType": "None", - "savingThrowModifier": 0, - "conditionAffinityType": "Immunity", - "silent": false, - "rerollSaveWhenGained": false, - "rerollAdvantageType": "None", - "myselfFamilyRestrictions": [], - "otherCharacterFamilyRestrictions": [], - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "Feature/&NoContentTitle", - "description": "Feature/&NoContentTitle", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "cfbc0e3f-664c-5c4d-a355-16bf8aefb1e0", - "contentPack": 9999, - "name": "ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleOneWithShadows" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleUncatchable.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleUncatchable.json deleted file mode 100644 index 64b52d35b6..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleUncatchable.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$type": "FeatureDefinitionConditionAffinity, Assembly-CSharp", - "conditionType": "ConditionInvisibleUncatchable", - "savingThrowAdvantageType": "None", - "savingThrowModifier": 0, - "conditionAffinityType": "Immunity", - "silent": false, - "rerollSaveWhenGained": false, - "rerollAdvantageType": "None", - "myselfFamilyRestrictions": [], - "otherCharacterFamilyRestrictions": [], - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "Feature/&NoContentTitle", - "description": "Feature/&NoContentTitle", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "528128e2-1394-50ea-825e-36511027d99c", - "contentPack": 9999, - "name": "ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleUncatchable" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisible_Green_Hag.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisible_Green_Hag.json deleted file mode 100644 index 7296141056..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisible_Green_Hag.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$type": "FeatureDefinitionConditionAffinity, Assembly-CSharp", - "conditionType": "ConditionInvisible_Green_Hag", - "savingThrowAdvantageType": "None", - "savingThrowModifier": 0, - "conditionAffinityType": "Immunity", - "silent": false, - "rerollSaveWhenGained": false, - "rerollAdvantageType": "None", - "myselfFamilyRestrictions": [], - "otherCharacterFamilyRestrictions": [], - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "Feature/&NoContentTitle", - "description": "Feature/&NoContentTitle", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "0b93e0a9-5118-5d32-9d29-bf0956b6f646", - "contentPack": 9999, - "name": "ConditionAffinityPathOfTheLightIlluminatedPreventInvisible_Green_Hag" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisible.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinitySickeningRadiance.json similarity index 81% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisible.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinitySickeningRadiance.json index 2d88e9e0fc..8de006da51 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinityPathOfTheLightIlluminatedPreventInvisible.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionConditionAffinity/ConditionAffinitySickeningRadiance.json @@ -1,6 +1,6 @@ { "$type": "FeatureDefinitionConditionAffinity, Assembly-CSharp", - "conditionType": "ConditionInvisible", + "conditionType": "ConditionInvisibleBase", "savingThrowAdvantageType": "None", "savingThrowModifier": 0, "conditionAffinityType": "Immunity", @@ -11,8 +11,8 @@ "otherCharacterFamilyRestrictions": [], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "Feature/&NoContentTitle", + "hidden": false, + "title": "Condition/&ConditionSickeningRadianceTitle", "description": "Feature/&NoContentTitle", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", @@ -33,7 +33,7 @@ "usedInValleyDLC": false }, "contentCopyright": "UserContent", - "guid": "4f245846-3fab-593a-aa14-45c19f8edb84", + "guid": "fc61f40d-38f7-5a41-b8fb-d6e4464a3135", "contentPack": 9999, - "name": "ConditionAffinityPathOfTheLightIlluminatedPreventInvisible" + "name": "ConditionAffinitySickeningRadiance" } \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetCollegeOfAudacityMasterfulWhirl.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetCollegeOfAudacityMasterfulWhirl.json index 1cf8a28f79..c56e5bcfcd 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetCollegeOfAudacityMasterfulWhirl.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetCollegeOfAudacityMasterfulWhirl.json @@ -1,8 +1,7 @@ { "$type": "FeatureDefinitionFeatureSet, Assembly-CSharp", "featureSet": [ - "Definition:ActionAffinityMasterfulWhirlToggle:1aa8d4ea-4e03-589b-91ef-4c6b8adaa679", - "Definition:PowerCollegeOfAudacityMasterfulWhirl:28130938-f181-5e81-a4b1-6dada78c7f2d" + "Definition:ActionAffinityMasterfulWhirlToggle:1aa8d4ea-4e03-589b-91ef-4c6b8adaa679" ], "mode": "Union", "ancestryDamageTypeMap": [], diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetPathOfTheLightIlluminatedPreventInvisibility.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetPathOfTheLightIlluminatedPreventInvisibility.json index 6fcfbee449..a01f8b11fe 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetPathOfTheLightIlluminatedPreventInvisibility.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionFeatureSet/FeatureSetPathOfTheLightIlluminatedPreventInvisibility.json @@ -1,12 +1,7 @@ { "$type": "FeatureDefinitionFeatureSet, Assembly-CSharp", "featureSet": [ - "Definition:ConditionAffinityPathOfTheLightIlluminatedPreventInvisible:4f245846-3fab-593a-aa14-45c19f8edb84", - "Definition:ConditionAffinityPathOfTheLightIlluminatedPreventInvisible_Green_Hag:0b93e0a9-5118-5d32-9d29-bf0956b6f646", - "Definition:ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleBase:5ca9c244-f43c-5ea2-b72b-675db2ff40f5", - "Definition:ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleGreater:7e9e7908-f57d-57b6-8653-e3852ae86286", - "Definition:ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleOneWithShadows:cfbc0e3f-664c-5c4d-a355-16bf8aefb1e0", - "Definition:ConditionAffinityPathOfTheLightIlluminatedPreventInvisibleUncatchable:528128e2-1394-50ea-825e-36511027d99c" + "Definition:ConditionAffinityPathOfTheLightIlluminatedPrevent:c815cc55-499c-5563-ac65-644765780373" ], "mode": "Union", "ancestryDamageTypeMap": [], diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityAudaciousWhirl.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityAudaciousWhirl.json index f7d1f93b2e..fe1aaeae70 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityAudaciousWhirl.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityAudaciousWhirl.json @@ -264,7 +264,7 @@ "delegatedToAction": false, "surrogateToSpell": null, "triggeredBySpecialMove": false, - "activationTime": "OnAttackHitMelee", + "activationTime": "NoCost", "autoActivationRequiredTargetSenseType": "None", "autoActivationRequiredTargetCreatureTag": "", "autoActivationPowerTag": "", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityDefensiveWhirl.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityDefensiveWhirl.json index a6250f31fd..7c13be817a 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityDefensiveWhirl.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityDefensiveWhirl.json @@ -299,7 +299,7 @@ "includeBaseDescription": false, "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle", "description": "Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription", "spriteReference": { diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityMobileWhirl.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityMobileWhirl.json index 2124e8f59c..bf616a9c2d 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityMobileWhirl.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityMobileWhirl.json @@ -299,7 +299,7 @@ "includeBaseDescription": false, "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "Feature/&PowerCollegeOfAudacityMobileWhirlTitle", "description": "Feature/&PowerCollegeOfAudacityMobileWhirlDescription", "spriteReference": { diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacitySlashingWhirl.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacitySlashingWhirl.json index 4dd7cb6b16..bebb74ec10 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacitySlashingWhirl.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacitySlashingWhirl.json @@ -299,7 +299,7 @@ "includeBaseDescription": false, "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "Feature/&PowerCollegeOfAudacitySlashingWhirlTitle", "description": "Feature/&PowerCollegeOfAudacitySlashingWhirlDescription", "spriteReference": { diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityMasterfulWhirl.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacitySlashingWhirlDamage.json similarity index 87% rename from Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityMasterfulWhirl.json rename to Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacitySlashingWhirlDamage.json index 77ce509b68..66c32accab 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacityMasterfulWhirl.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerCollegeOfAudacitySlashingWhirlDamage.json @@ -31,9 +31,9 @@ "targetConditionName": "", "targetConditionAsset": null, "targetSide": "Enemy", - "durationType": "Round", - "durationParameter": 0, - "endOfEffect": "StartOfTurn", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", "hasSavingThrow": false, "disableSavingThrowOnAllies": false, "savingThrowAbility": "Dexterity", @@ -60,7 +60,43 @@ "effectPoolAmount": 60, "effectApplication": "All", "effectFormFilters": [], - "effectForms": [], + "effectForms": [ + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Damage", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": false, + "savingThrowAffinity": "None", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "damageForm": { + "$type": "DamageForm, Assembly-CSharp", + "versatile": false, + "diceNumber": 1, + "dieType": "D6", + "overrideWithBardicInspirationDie": false, + "versatileDieType": "D1", + "bonusDamage": 0, + "damageType": "DamageBludgeoning", + "ancestryType": "Sorcerer", + "healFromInflictedDamage": "Never", + "hitPointsFloor": 0, + "forceKillOnZeroHp": false, + "specialDeathCondition": null, + "ignoreFlyingCharacters": false, + "ignoreCriticalDoubleDice": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], "specialFormsDescription": "", "effectAdvancement": { "$type": "EffectAdvancement, Assembly-CSharp", @@ -264,7 +300,7 @@ "delegatedToAction": false, "surrogateToSpell": null, "triggeredBySpecialMove": false, - "activationTime": "OnAttackHitMelee", + "activationTime": "NoCost", "autoActivationRequiredTargetSenseType": "None", "autoActivationRequiredTargetCreatureTag": "", "autoActivationPowerTag": "", @@ -300,8 +336,8 @@ "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", "hidden": true, - "title": "Feature/&NoContentTitle", - "description": "Feature/&NoContentTitle", + "title": "Feature/&PowerCollegeOfAudacitySlashingWhirlTitle", + "description": "Feature/&PowerCollegeOfAudacitySlashingWhirlDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", "m_AssetGUID": "", @@ -321,7 +357,7 @@ "usedInValleyDLC": false }, "contentCopyright": "UserContent", - "guid": "28130938-f181-5e81-a4b1-6dada78c7f2d", + "guid": "75e28f91-6725-5ff1-b803-908a90664530", "contentPack": 9999, - "name": "PowerCollegeOfAudacityMasterfulWhirl" + "name": "PowerCollegeOfAudacitySlashingWhirlDamage" } \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerMalakhAngelicRadiance.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerMalakhAngelicRadiance.json index 8bd215108d..30de1e3ef7 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerMalakhAngelicRadiance.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerMalakhAngelicRadiance.json @@ -154,7 +154,7 @@ "$type": "EffectParticleParameters, Assembly-CSharp", "casterParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "81560ac3813217d4d9fd281d5e73c234", + "m_AssetGUID": "35827af9d640e9444bc22fb37cf7e00a", "m_SubObjectName": "", "m_SubObjectType": "" }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerMalakhAngelicRadianceDamage.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerMalakhAngelicRadianceDamage.json new file mode 100644 index 0000000000..229674df2c --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerMalakhAngelicRadianceDamage.json @@ -0,0 +1,363 @@ +{ + "$type": "FeatureDefinitionPower, Assembly-CSharp", + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 6, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "IndividualsUnique", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "Enemy", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": false, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Dexterity", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 15, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "advantageForEnemies": false, + "canBeDispersed": false, + "hasVelocity": false, + "velocityCellsPerRound": 2, + "velocityType": "AwayFromSourceOriginalPosition", + "restrictedCreatureFamilies": [], + "immuneCreatureFamilies": [], + "restrictedCharacterSizes": [], + "hasLimitedEffectPool": false, + "effectPoolAmount": 60, + "effectApplication": "All", + "effectFormFilters": [], + "effectForms": [ + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Damage", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": false, + "savingThrowAffinity": "None", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "damageForm": { + "$type": "DamageForm, Assembly-CSharp", + "versatile": false, + "diceNumber": 1, + "dieType": "D4", + "overrideWithBardicInspirationDie": false, + "versatileDieType": "D1", + "bonusDamage": 0, + "damageType": "DamageRadiant", + "ancestryType": "Sorcerer", + "healFromInflictedDamage": "Never", + "hitPointsFloor": 0, + "forceKillOnZeroHp": false, + "specialDeathCondition": null, + "ignoreFlyingCharacters": false, + "ignoreCriticalDoubleDice": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "None", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 0, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 0, + "additionalItemBonus": 0, + "additionalWeaponDie": 0, + "alteredDuration": "None" + }, + "speedType": "Instant", + "speedParameter": 10.0, + "offsetImpactTimeBasedOnDistance": false, + "offsetImpactTimeBasedOnDistanceFactor": 0.1, + "offsetImpactTimePerTarget": 0.0, + "effectParticleParameters": { + "$type": "EffectParticleParameters, Assembly-CSharp", + "casterParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "81560ac3813217d4d9fd281d5e73c234", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterSelfParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterQuickSpellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "targetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectSubTargetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "zoneParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "5cdd6944009a9f14eae5a1f5e9bc0a82", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "emissiveBorderCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "forceApplyZoneParticle": false, + "applyEmissionColorOnWeapons": false, + "emissionColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "emissionColorFadeInDuration": 0.0, + "emissionColorFadeOutDuration": 0.0 + }, + "effectAIParameters": { + "$type": "EffectAIParameters, Assembly-CSharp", + "aoeScoreMultiplier": 1.0, + "cooldownForCaster": 0, + "cooldownForBattle": 0, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "delegatedToAction": false, + "surrogateToSpell": null, + "triggeredBySpecialMove": false, + "activationTime": "NoCost", + "autoActivationRequiredTargetSenseType": "None", + "autoActivationRequiredTargetCreatureTag": "", + "autoActivationPowerTag": "", + "triggeringPower": null, + "copyTargetingFromTriggeringPower": false, + "reactionContext": "None", + "damageTypes": [], + "reactionName": "", + "reactionActingCharacterParamIdx": 0, + "reactionAttackerParamIdx": -1, + "hasCastingFailure": false, + "castingSuccessComputation": "CasterLevel", + "canUseInDialog": false, + "disableIfConditionIsOwned": null, + "disableIfTargetConditionIsOwned": null, + "rechargeRate": "AtWill", + "costPerUse": 1, + "spellcastingFeature": null, + "usesDetermination": "Fixed", + "abilityScoreDetermination": "Explicit", + "usesAbilityScoreName": "Charisma", + "fixedUsesPerRecharge": 1, + "abilityScore": "Intelligence", + "attackHitComputation": "AbilityScore", + "fixedAttackHit": 0, + "abilityScoreBonusToAttack": false, + "proficiencyBonusToAttack": false, + "uniqueInstance": false, + "showCasting": false, + "shortTitleOverride": "", + "overriddenPower": null, + "includeBaseDescription": false, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&PowerMalakhAngelicRadianceTitle", + "description": "Feature/&PowerMalakhAngelicRadianceDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "edec8afa-5a52-5ec1-9bff-7f3e0b96d80d", + "contentPack": 9999, + "name": "PowerMalakhAngelicRadianceDamage" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheElementsBlizzard.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheElementsBlizzard.json new file mode 100644 index 0000000000..883e44a9bf --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheElementsBlizzard.json @@ -0,0 +1,363 @@ +{ + "$type": "FeatureDefinitionPower, Assembly-CSharp", + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 6, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "IndividualsUnique", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "Enemy", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": false, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Dexterity", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 15, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "advantageForEnemies": false, + "canBeDispersed": false, + "hasVelocity": false, + "velocityCellsPerRound": 2, + "velocityType": "AwayFromSourceOriginalPosition", + "restrictedCreatureFamilies": [], + "immuneCreatureFamilies": [], + "restrictedCharacterSizes": [], + "hasLimitedEffectPool": false, + "effectPoolAmount": 60, + "effectApplication": "All", + "effectFormFilters": [], + "effectForms": [ + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Damage", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": false, + "savingThrowAffinity": "None", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "damageForm": { + "$type": "DamageForm, Assembly-CSharp", + "versatile": false, + "diceNumber": 1, + "dieType": "D6", + "overrideWithBardicInspirationDie": false, + "versatileDieType": "D1", + "bonusDamage": 0, + "damageType": "DamageCold", + "ancestryType": "Sorcerer", + "healFromInflictedDamage": "Never", + "hitPointsFloor": 0, + "forceKillOnZeroHp": false, + "specialDeathCondition": null, + "ignoreFlyingCharacters": false, + "ignoreCriticalDoubleDice": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "None", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 0, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 0, + "additionalItemBonus": 0, + "additionalWeaponDie": 0, + "alteredDuration": "None" + }, + "speedType": "Instant", + "speedParameter": 10.0, + "offsetImpactTimeBasedOnDistance": false, + "offsetImpactTimeBasedOnDistanceFactor": 0.1, + "offsetImpactTimePerTarget": 0.0, + "effectParticleParameters": { + "$type": "EffectParticleParameters, Assembly-CSharp", + "casterParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "81560ac3813217d4d9fd281d5e73c234", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterSelfParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterQuickSpellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "targetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectSubTargetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "zoneParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "51cf46189b99f0f48bfbf3b8c6e4a355", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "emissiveBorderCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "forceApplyZoneParticle": false, + "applyEmissionColorOnWeapons": false, + "emissionColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "emissionColorFadeInDuration": 0.0, + "emissionColorFadeOutDuration": 0.0 + }, + "effectAIParameters": { + "$type": "EffectAIParameters, Assembly-CSharp", + "aoeScoreMultiplier": 1.0, + "cooldownForCaster": 0, + "cooldownForBattle": 0, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "delegatedToAction": false, + "surrogateToSpell": null, + "triggeredBySpecialMove": false, + "activationTime": "NoCost", + "autoActivationRequiredTargetSenseType": "None", + "autoActivationRequiredTargetCreatureTag": "", + "autoActivationPowerTag": "", + "triggeringPower": null, + "copyTargetingFromTriggeringPower": false, + "reactionContext": "None", + "damageTypes": [], + "reactionName": "", + "reactionActingCharacterParamIdx": 0, + "reactionAttackerParamIdx": -1, + "hasCastingFailure": false, + "castingSuccessComputation": "CasterLevel", + "canUseInDialog": false, + "disableIfConditionIsOwned": null, + "disableIfTargetConditionIsOwned": null, + "rechargeRate": "AtWill", + "costPerUse": 1, + "spellcastingFeature": null, + "usesDetermination": "Fixed", + "abilityScoreDetermination": "Explicit", + "usesAbilityScoreName": "Charisma", + "fixedUsesPerRecharge": 1, + "abilityScore": "Intelligence", + "attackHitComputation": "AbilityScore", + "fixedAttackHit": 0, + "abilityScoreBonusToAttack": false, + "proficiencyBonusToAttack": false, + "uniqueInstance": false, + "showCasting": false, + "shortTitleOverride": "", + "overriddenPower": null, + "includeBaseDescription": false, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&AncestryPathOfTheElementsWildfireTitle", + "description": "While you are raging, all enemy creatures within 5 feet of you at the end of your turn take 1d6 Cold damage. This damage increases to 1d10 at 6th level, 2d6 at 10th level, and 2d10 at 14th level.", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "d7a31d80-842a-501f-be65-27c349571abd", + "contentPack": 9999, + "name": "PowerPathOfTheElementsBlizzard" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheElementsStorm.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheElementsStorm.json new file mode 100644 index 0000000000..b3c7fb42fc --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheElementsStorm.json @@ -0,0 +1,363 @@ +{ + "$type": "FeatureDefinitionPower, Assembly-CSharp", + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 6, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "IndividualsUnique", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "Enemy", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": false, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Dexterity", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 15, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "advantageForEnemies": false, + "canBeDispersed": false, + "hasVelocity": false, + "velocityCellsPerRound": 2, + "velocityType": "AwayFromSourceOriginalPosition", + "restrictedCreatureFamilies": [], + "immuneCreatureFamilies": [], + "restrictedCharacterSizes": [], + "hasLimitedEffectPool": false, + "effectPoolAmount": 60, + "effectApplication": "All", + "effectFormFilters": [], + "effectForms": [ + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Damage", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": false, + "savingThrowAffinity": "None", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "damageForm": { + "$type": "DamageForm, Assembly-CSharp", + "versatile": false, + "diceNumber": 1, + "dieType": "D6", + "overrideWithBardicInspirationDie": false, + "versatileDieType": "D1", + "bonusDamage": 0, + "damageType": "DamageLightning", + "ancestryType": "Sorcerer", + "healFromInflictedDamage": "Never", + "hitPointsFloor": 0, + "forceKillOnZeroHp": false, + "specialDeathCondition": null, + "ignoreFlyingCharacters": false, + "ignoreCriticalDoubleDice": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "None", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 0, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 0, + "additionalItemBonus": 0, + "additionalWeaponDie": 0, + "alteredDuration": "None" + }, + "speedType": "Instant", + "speedParameter": 10.0, + "offsetImpactTimeBasedOnDistance": false, + "offsetImpactTimeBasedOnDistanceFactor": 0.1, + "offsetImpactTimePerTarget": 0.0, + "effectParticleParameters": { + "$type": "EffectParticleParameters, Assembly-CSharp", + "casterParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "81560ac3813217d4d9fd281d5e73c234", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterSelfParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterQuickSpellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "targetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectSubTargetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "zoneParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "7ee946178940d56438b69281484e7a39", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "emissiveBorderCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "forceApplyZoneParticle": false, + "applyEmissionColorOnWeapons": false, + "emissionColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "emissionColorFadeInDuration": 0.0, + "emissionColorFadeOutDuration": 0.0 + }, + "effectAIParameters": { + "$type": "EffectAIParameters, Assembly-CSharp", + "aoeScoreMultiplier": 1.0, + "cooldownForCaster": 0, + "cooldownForBattle": 0, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "delegatedToAction": false, + "surrogateToSpell": null, + "triggeredBySpecialMove": false, + "activationTime": "NoCost", + "autoActivationRequiredTargetSenseType": "None", + "autoActivationRequiredTargetCreatureTag": "", + "autoActivationPowerTag": "", + "triggeringPower": null, + "copyTargetingFromTriggeringPower": false, + "reactionContext": "None", + "damageTypes": [], + "reactionName": "", + "reactionActingCharacterParamIdx": 0, + "reactionAttackerParamIdx": -1, + "hasCastingFailure": false, + "castingSuccessComputation": "CasterLevel", + "canUseInDialog": false, + "disableIfConditionIsOwned": null, + "disableIfTargetConditionIsOwned": null, + "rechargeRate": "AtWill", + "costPerUse": 1, + "spellcastingFeature": null, + "usesDetermination": "Fixed", + "abilityScoreDetermination": "Explicit", + "usesAbilityScoreName": "Charisma", + "fixedUsesPerRecharge": 1, + "abilityScore": "Intelligence", + "attackHitComputation": "AbilityScore", + "fixedAttackHit": 0, + "abilityScoreBonusToAttack": false, + "proficiencyBonusToAttack": false, + "uniqueInstance": false, + "showCasting": false, + "shortTitleOverride": "", + "overriddenPower": null, + "includeBaseDescription": false, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&AncestryPathOfTheElementsWildfireTitle", + "description": "While you are raging, all enemy creatures within 5 feet of you at the end of your turn take 1d6 Lightning damage. This damage increases to 1d10 at 6th level, 2d6 at 10th level, and 2d10 at 14th level.", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "daeb69ac-02ba-54ee-ba72-8929ebc573cb", + "contentPack": 9999, + "name": "PowerPathOfTheElementsStorm" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheElementsWildfire.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheElementsWildfire.json new file mode 100644 index 0000000000..6faa6ce7f1 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheElementsWildfire.json @@ -0,0 +1,363 @@ +{ + "$type": "FeatureDefinitionPower, Assembly-CSharp", + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 6, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "IndividualsUnique", + "itemSelectionType": "None", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "Enemy", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": false, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Dexterity", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 15, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "advantageForEnemies": false, + "canBeDispersed": false, + "hasVelocity": false, + "velocityCellsPerRound": 2, + "velocityType": "AwayFromSourceOriginalPosition", + "restrictedCreatureFamilies": [], + "immuneCreatureFamilies": [], + "restrictedCharacterSizes": [], + "hasLimitedEffectPool": false, + "effectPoolAmount": 60, + "effectApplication": "All", + "effectFormFilters": [], + "effectForms": [ + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Damage", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": false, + "savingThrowAffinity": "None", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "damageForm": { + "$type": "DamageForm, Assembly-CSharp", + "versatile": false, + "diceNumber": 1, + "dieType": "D6", + "overrideWithBardicInspirationDie": false, + "versatileDieType": "D1", + "bonusDamage": 0, + "damageType": "DamageFire", + "ancestryType": "Sorcerer", + "healFromInflictedDamage": "Never", + "hitPointsFloor": 0, + "forceKillOnZeroHp": false, + "specialDeathCondition": null, + "ignoreFlyingCharacters": false, + "ignoreCriticalDoubleDice": false + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "None", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 0, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 0, + "additionalItemBonus": 0, + "additionalWeaponDie": 0, + "alteredDuration": "None" + }, + "speedType": "Instant", + "speedParameter": 10.0, + "offsetImpactTimeBasedOnDistance": false, + "offsetImpactTimeBasedOnDistanceFactor": 0.1, + "offsetImpactTimePerTarget": 0.0, + "effectParticleParameters": { + "$type": "EffectParticleParameters, Assembly-CSharp", + "casterParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "81560ac3813217d4d9fd281d5e73c234", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterSelfParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterQuickSpellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "targetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectSubTargetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "zoneParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "e446eddf529bfc94c9b972fc384b9986", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "emissiveBorderCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "forceApplyZoneParticle": false, + "applyEmissionColorOnWeapons": false, + "emissionColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "emissionColorFadeInDuration": 0.0, + "emissionColorFadeOutDuration": 0.0 + }, + "effectAIParameters": { + "$type": "EffectAIParameters, Assembly-CSharp", + "aoeScoreMultiplier": 1.0, + "cooldownForCaster": 0, + "cooldownForBattle": 0, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "delegatedToAction": false, + "surrogateToSpell": null, + "triggeredBySpecialMove": false, + "activationTime": "NoCost", + "autoActivationRequiredTargetSenseType": "None", + "autoActivationRequiredTargetCreatureTag": "", + "autoActivationPowerTag": "", + "triggeringPower": null, + "copyTargetingFromTriggeringPower": false, + "reactionContext": "None", + "damageTypes": [], + "reactionName": "", + "reactionActingCharacterParamIdx": 0, + "reactionAttackerParamIdx": -1, + "hasCastingFailure": false, + "castingSuccessComputation": "CasterLevel", + "canUseInDialog": false, + "disableIfConditionIsOwned": null, + "disableIfTargetConditionIsOwned": null, + "rechargeRate": "AtWill", + "costPerUse": 1, + "spellcastingFeature": null, + "usesDetermination": "Fixed", + "abilityScoreDetermination": "Explicit", + "usesAbilityScoreName": "Charisma", + "fixedUsesPerRecharge": 1, + "abilityScore": "Intelligence", + "attackHitComputation": "AbilityScore", + "fixedAttackHit": 0, + "abilityScoreBonusToAttack": false, + "proficiencyBonusToAttack": false, + "uniqueInstance": false, + "showCasting": false, + "shortTitleOverride": "", + "overriddenPower": null, + "includeBaseDescription": false, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&AncestryPathOfTheElementsWildfireTitle", + "description": "While you are raging, all enemy creatures within 5 feet of you at the end of your turn take 1d6 Fire damage. This damage increases to 1d10 at 6th level, 2d6 at 10th level, and 2d10 at 14th level.", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "316fcbaf-9d5f-5dd7-8a67-cdedbb86b2cb", + "contentPack": 9999, + "name": "PowerPathOfTheElementsWildfire" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheWildMagicUnstableBacklash.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheWildMagicUnstableBacklash.json index 0637d131ca..c6cdeaad82 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheWildMagicUnstableBacklash.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPathOfTheWildMagicUnstableBacklash.json @@ -60,35 +60,7 @@ "effectPoolAmount": 60, "effectApplication": "All", "effectFormFilters": [], - "effectForms": [ - { - "$type": "EffectForm, Assembly-CSharp", - "formType": "Condition", - "addBonusMode": "None", - "applyLevel": "No", - "levelType": "ClassLevel", - "levelMultiplier": 1, - "diceByLevelTable": [], - "createdByCharacter": true, - "createdByCondition": false, - "hasSavingThrow": false, - "savingThrowAffinity": "None", - "dcModifier": 0, - "canSaveToCancel": false, - "saveOccurence": "EndOfTurn", - "conditionForm": { - "$type": "ConditionForm, Assembly-CSharp", - "conditionDefinitionName": "ConditionDummy", - "conditionDefinition": "Definition:ConditionDummy:dd1143496d6a85245bc154674f730e7d", - "operation": "Add", - "conditionsList": [], - "applyToSelf": false, - "forceOnSelf": false - }, - "hasFilterId": false, - "filterId": 0 - } - ], + "effectForms": [], "specialFormsDescription": "", "effectAdvancement": { "$type": "EffectAdvancement, Assembly-CSharp", @@ -107,7 +79,7 @@ "alteredDuration": "None" }, "speedType": "Instant", - "speedParameter": -1.0, + "speedParameter": 10.0, "offsetImpactTimeBasedOnDistance": false, "offsetImpactTimeBasedOnDistanceFactor": 0.1, "offsetImpactTimePerTarget": 0.0, @@ -127,7 +99,7 @@ }, "casterQuickSpellParticleReference": { "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", - "m_AssetGUID": "81560ac3813217d4d9fd281d5e73c234", + "m_AssetGUID": "", "m_SubObjectName": "", "m_SubObjectType": "" }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPatronMountainClingingStrength.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPatronMountainClingingStrength.json index d2b1cf426b..8eeb9d637c 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPatronMountainClingingStrength.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerPatronMountainClingingStrength.json @@ -332,7 +332,7 @@ "description": "Feature/&PowerPatronMountainClingingStrengthDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "", + "m_AssetGUID": "0f5fb5b6-f59d-5ed3-8e45-166a5e7f60a9", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerRingOfBlades.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerRingOfBlades.json index 95ec62690e..9a2d71fd5f 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerRingOfBlades.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerRingOfBlades.json @@ -324,7 +324,7 @@ "usesAbilityScoreName": "Charisma", "fixedUsesPerRecharge": 6, "abilityScore": "Intelligence", - "attackHitComputation": "AbilityScore", + "attackHitComputation": 9000, "fixedAttackHit": 0, "abilityScoreBonusToAttack": false, "proficiencyBonusToAttack": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerRingOfBladesFree.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerRingOfBladesFree.json index 8af24def60..cd0372bd15 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerRingOfBladesFree.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerRingOfBladesFree.json @@ -324,7 +324,7 @@ "usesAbilityScoreName": "Charisma", "fixedUsesPerRecharge": 6, "abilityScore": "Intelligence", - "attackHitComputation": "AbilityScore", + "attackHitComputation": 9000, "fixedAttackHit": 0, "abilityScoreBonusToAttack": false, "proficiencyBonusToAttack": false, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerSpellPoints.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerSpellPoints.json new file mode 100644 index 0000000000..1d9c970f0f --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionPower/PowerSpellPoints.json @@ -0,0 +1,202 @@ +{ + "$type": "FeatureDefinitionPower, Assembly-CSharp", + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Self", + "rangeParameter": 0, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "Self", + "itemSelectionType": "Equiped", + "targetParameter": 1, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "AllCharacterAndGadgets", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "No", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "Enemy", + "durationType": "Instantaneous", + "durationParameter": 1, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": false, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Dexterity", + "ignoreCover": false, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": false, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 15, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "advantageForEnemies": false, + "canBeDispersed": false, + "hasVelocity": false, + "velocityCellsPerRound": 2, + "velocityType": "AwayFromSourceOriginalPosition", + "restrictedCreatureFamilies": [], + "immuneCreatureFamilies": [], + "restrictedCharacterSizes": [], + "hasLimitedEffectPool": false, + "effectPoolAmount": 60, + "effectApplication": "All", + "effectFormFilters": [], + "effectForms": [], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "None", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 0, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 0, + "additionalItemBonus": 0, + "additionalWeaponDie": 0, + "alteredDuration": "None" + }, + "speedType": "Instant", + "speedParameter": 10.0, + "offsetImpactTimeBasedOnDistance": false, + "offsetImpactTimeBasedOnDistanceFactor": 0.1, + "offsetImpactTimePerTarget": 0.0, + "effectParticleParameters": { + "$type": "EffectParticleParameters, Assembly-CSharp", + "casterParticleReference": null, + "casterSelfParticleReference": null, + "casterQuickSpellParticleReference": null, + "targetParticleReference": null, + "effectParticleReference": null, + "effectSubTargetParticleReference": null, + "zoneParticleReference": null, + "beforeImpactParticleReference": null, + "impactParticleReference": null, + "activeEffectImpactParticleReference": null, + "activeEffectCellStartParticleReference": null, + "activeEffectCellParticleReference": null, + "activeEffectCellEndParticleReference": null, + "activeEffectSurfaceStartParticleReference": null, + "activeEffectSurfaceParticleReference": null, + "activeEffectSurfaceEndParticleReference": null, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "emissiveBorderCellStartParticleReference": null, + "emissiveBorderCellParticleReference": null, + "emissiveBorderCellEndParticleReference": null, + "emissiveBorderSurfaceStartParticleReference": null, + "emissiveBorderSurfaceParticleReference": null, + "emissiveBorderSurfaceEndParticleReference": null, + "conditionStartParticleReference": null, + "conditionParticleReference": null, + "conditionEndParticleReference": null, + "forceApplyZoneParticle": false, + "applyEmissionColorOnWeapons": false, + "emissionColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "emissionColorFadeInDuration": 0.0, + "emissionColorFadeOutDuration": 0.0 + }, + "effectAIParameters": { + "$type": "EffectAIParameters, Assembly-CSharp", + "aoeScoreMultiplier": 1.0, + "cooldownForCaster": 0, + "cooldownForBattle": 0, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "delegatedToAction": false, + "surrogateToSpell": null, + "triggeredBySpecialMove": false, + "activationTime": "NoCost", + "autoActivationRequiredTargetSenseType": "None", + "autoActivationRequiredTargetCreatureTag": "", + "autoActivationPowerTag": "", + "triggeringPower": null, + "copyTargetingFromTriggeringPower": false, + "reactionContext": "None", + "damageTypes": [], + "reactionName": "", + "reactionActingCharacterParamIdx": 0, + "reactionAttackerParamIdx": -1, + "hasCastingFailure": false, + "castingSuccessComputation": "CasterLevel", + "canUseInDialog": false, + "disableIfConditionIsOwned": null, + "disableIfTargetConditionIsOwned": null, + "rechargeRate": "LongRest", + "costPerUse": 1, + "spellcastingFeature": null, + "usesDetermination": "Fixed", + "abilityScoreDetermination": "Explicit", + "usesAbilityScoreName": "Charisma", + "fixedUsesPerRecharge": 0, + "abilityScore": "Intelligence", + "attackHitComputation": "AbilityScore", + "fixedAttackHit": 0, + "abilityScoreBonusToAttack": false, + "proficiencyBonusToAttack": false, + "uniqueInstance": false, + "showCasting": true, + "shortTitleOverride": "", + "overriddenPower": null, + "includeBaseDescription": false, + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": true, + "title": "Feature/&NoContentTitle", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "467fdc6d-1c2e-5a48-983a-60d1a9338da3", + "contentPack": 9999, + "name": "PowerSpellPoints" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatInterception.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatInterception.json index 68e451127a..6fb6d36771 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatInterception.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatInterception.json @@ -12,9 +12,9 @@ "description": "FightingStyle/&InterceptionDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "204f9387786340a42bbbadd75d56cc98", - "m_SubObjectName": "Defense", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "1ff9dc49-7b82-5486-a562-0988e0ed0ed6", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatMerciless.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatMerciless.json index 86c2f8126b..0e5b89d062 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatMerciless.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatMerciless.json @@ -1,21 +1,16 @@ { "$type": "FeatureDefinitionProficiency, Assembly-CSharp", - "proficiencyType": "FightingStyle", + "proficiencyType": "Feat", "proficiencies": [ - "Merciless" + "FeatMerciless" ], "forbiddenItemTags": [], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "FightingStyle/&MercilessTitle", - "description": "FightingStyle/&MercilessDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "e0b4a203-382b-5ab4-acfa-af309c1a019c", - "m_SubObjectName": null, - "m_SubObjectType": null - }, + "hidden": false, + "title": "Feature/&Emptystring", + "description": "Feature/&Emptystring", + "spriteReference": null, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", "r": 1.0, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatMonkShieldExpert.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatMonkShieldExpert.json deleted file mode 100644 index 9fb6b964fe..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatMonkShieldExpert.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$type": "FeatureDefinitionProficiency, Assembly-CSharp", - "proficiencyType": "FightingStyle", - "proficiencies": [ - "MonkShieldExpert" - ], - "forbiddenItemTags": [], - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "FightingStyle/&MonkShieldExpertTitle", - "description": "FightingStyle/&MonkShieldExpertDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "7dd630bc-c1c3-5f9e-8d78-a83e3b769927", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "3c9cec58-0a28-5b43-b9e5-adaf1049543d", - "contentPack": 9999, - "name": "ProficiencyFeatMonkShieldExpert" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatPolearmExpert.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatPolearmExpert.json index 19b6cbc76b..af6b95ecaa 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatPolearmExpert.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatPolearmExpert.json @@ -1,21 +1,16 @@ { "$type": "FeatureDefinitionProficiency, Assembly-CSharp", - "proficiencyType": "FightingStyle", + "proficiencyType": "Feat", "proficiencies": [ - "PolearmExpert" + "FeatPolearmExpert" ], "forbiddenItemTags": [], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "FightingStyle/&PolearmExpertTitle", - "description": "FightingStyle/&PolearmExpertDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "4b56c077-b3ab-5cac-b4ae-1aa5a3ecdfd5", - "m_SubObjectName": null, - "m_SubObjectType": null - }, + "hidden": false, + "title": "Feature/&Emptystring", + "description": "Feature/&Emptystring", + "spriteReference": null, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", "r": 1.0, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatRopeItUp.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatRopeItUp.json index 497dd23b32..93371bc322 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatRopeItUp.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatRopeItUp.json @@ -1,21 +1,16 @@ { "$type": "FeatureDefinitionProficiency, Assembly-CSharp", - "proficiencyType": "FightingStyle", + "proficiencyType": "Feat", "proficiencies": [ - "RopeItUp" + "FeatRopeItUp" ], "forbiddenItemTags": [], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "FightingStyle/&RopeItUpTitle", - "description": "FightingStyle/&RopeItUpDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "54c7e250-8ec1-5fac-9a50-f273402e0a62", - "m_SubObjectName": null, - "m_SubObjectType": null - }, + "hidden": false, + "title": "Feature/&Emptystring", + "description": "Feature/&Emptystring", + "spriteReference": null, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", "r": 1.0, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatSentinel.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatSentinel.json index d1344bdca4..9d82a825e0 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatSentinel.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatSentinel.json @@ -1,21 +1,16 @@ { "$type": "FeatureDefinitionProficiency, Assembly-CSharp", - "proficiencyType": "FightingStyle", + "proficiencyType": "Feat", "proficiencies": [ - "Sentinel" + "FeatSentinel" ], "forbiddenItemTags": [], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "FightingStyle/&SentinelTitle", - "description": "FightingStyle/&SentinelDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "c694eed9-c1d3-5d5b-b69d-b9459bf27cb9", - "m_SubObjectName": null, - "m_SubObjectType": null - }, + "hidden": false, + "title": "Feature/&Emptystring", + "description": "Feature/&Emptystring", + "spriteReference": null, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", "r": 1.0, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatShieldExpert.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatShieldExpert.json index a3e4d2d4fd..c6ec222bc7 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatShieldExpert.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyFeatShieldExpert.json @@ -1,21 +1,16 @@ { "$type": "FeatureDefinitionProficiency, Assembly-CSharp", - "proficiencyType": "FightingStyle", + "proficiencyType": "Feat", "proficiencies": [ - "ShieldExpert" + "FeatShieldExpert" ], "forbiddenItemTags": [], "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": true, - "title": "FightingStyle/&ShieldExpertTitle", - "description": "FightingStyle/&ShieldExpertDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "12d11a0c-b767-586b-9508-df780e4f477d", - "m_SubObjectName": null, - "m_SubObjectType": null - }, + "hidden": false, + "title": "Feature/&Emptystring", + "description": "Feature/&Emptystring", + "spriteReference": null, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", "r": 1.0, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyMartialGuardianSentinel.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyMartialGuardianSentinel.json index 9686e6540b..73b0b2d36b 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyMartialGuardianSentinel.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyMartialGuardianSentinel.json @@ -1,8 +1,8 @@ { "$type": "FeatureDefinitionProficiency, Assembly-CSharp", - "proficiencyType": "FightingStyle", + "proficiencyType": "Feat", "proficiencies": [ - "Sentinel" + "FeatSentinel" ], "forbiddenItemTags": [], "guiPresentation": { diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyMonkShieldExpert.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyMonkShieldExpert.json deleted file mode 100644 index 2c0d96f44b..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionProficiency/ProficiencyMonkShieldExpert.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$type": "FeatureDefinitionProficiency, Assembly-CSharp", - "proficiencyType": "Armor", - "proficiencies": [ - "ShieldCategory" - ], - "forbiddenItemTags": [], - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, - "title": "Equipment/&ShieldCategoryTitle", - "description": "Equipment/&ShieldCategoryDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "db009d3e-bbd3-5750-b5b2-24dab1d3ec3b", - "contentPack": 9999, - "name": "ProficiencyMonkShieldExpert" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionSavingThrowAffinity/SavingThrowAffinitySickeningRadianceExhausted3.json b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionSavingThrowAffinity/SavingThrowAffinitySickeningRadianceExhausted3.json new file mode 100644 index 0000000000..55a79afbbf --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/FeatureDefinitionSavingThrowAffinity/SavingThrowAffinitySickeningRadianceExhausted3.json @@ -0,0 +1,117 @@ +{ + "$type": "FeatureDefinitionSavingThrowAffinity, Assembly-CSharp", + "useControllerSavingThrows": false, + "priorityAbilityScore": "", + "affinityGroups": [ + { + "$type": "FeatureDefinitionSavingThrowAffinity+SavingThrowAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Charisma", + "affinity": "Disadvantage", + "savingThrowModifierType": "AddDice", + "savingThrowModifierDiceNumber": 0, + "savingThrowModifierDieType": "D1", + "restrictedForms": [], + "restrictedSchools": [], + "restrictedSpells": [], + "restrictedPowers": [], + "savingThrowContext": "None" + }, + { + "$type": "FeatureDefinitionSavingThrowAffinity+SavingThrowAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Constitution", + "affinity": "Disadvantage", + "savingThrowModifierType": "AddDice", + "savingThrowModifierDiceNumber": 0, + "savingThrowModifierDieType": "D1", + "restrictedForms": [], + "restrictedSchools": [], + "restrictedSpells": [], + "restrictedPowers": [], + "savingThrowContext": "None" + }, + { + "$type": "FeatureDefinitionSavingThrowAffinity+SavingThrowAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Dexterity", + "affinity": "Disadvantage", + "savingThrowModifierType": "AddDice", + "savingThrowModifierDiceNumber": 0, + "savingThrowModifierDieType": "D1", + "restrictedForms": [], + "restrictedSchools": [], + "restrictedSpells": [], + "restrictedPowers": [], + "savingThrowContext": "None" + }, + { + "$type": "FeatureDefinitionSavingThrowAffinity+SavingThrowAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Intelligence", + "affinity": "Disadvantage", + "savingThrowModifierType": "AddDice", + "savingThrowModifierDiceNumber": 0, + "savingThrowModifierDieType": "D1", + "restrictedForms": [], + "restrictedSchools": [], + "restrictedSpells": [], + "restrictedPowers": [], + "savingThrowContext": "None" + }, + { + "$type": "FeatureDefinitionSavingThrowAffinity+SavingThrowAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Strength", + "affinity": "Disadvantage", + "savingThrowModifierType": "AddDice", + "savingThrowModifierDiceNumber": 0, + "savingThrowModifierDieType": "D1", + "restrictedForms": [], + "restrictedSchools": [], + "restrictedSpells": [], + "restrictedPowers": [], + "savingThrowContext": "None" + }, + { + "$type": "FeatureDefinitionSavingThrowAffinity+SavingThrowAffinityGroup, Assembly-CSharp", + "abilityScoreName": "Wisdom", + "affinity": "Disadvantage", + "savingThrowModifierType": "AddDice", + "savingThrowModifierDiceNumber": 0, + "savingThrowModifierDieType": "D1", + "restrictedForms": [], + "restrictedSchools": [], + "restrictedSpells": [], + "restrictedPowers": [], + "savingThrowContext": "None" + } + ], + "indomitableSavingThrows": 0, + "canBorrowLuck": false, + "canUseDiamondSoul": false, + "myselfFamilyRestrictions": [], + "otherCharacterFamilyRestrictions": [], + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Condition/&ConditionSickeningRadianceExhausted3Title", + "description": "Feature/&NoContentTitle", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "bb2186f4-5847-5e4a-a3dc-f613ad953662", + "contentPack": 9999, + "name": "SavingThrowAffinitySickeningRadianceExhausted3" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Interception.json b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Interception.json index 035974a0d3..355e6ec541 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Interception.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Interception.json @@ -11,9 +11,9 @@ "description": "FightingStyle/&InterceptionDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "204f9387786340a42bbbadd75d56cc98", - "m_SubObjectName": "Defense", - "m_SubObjectType": "UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" + "m_AssetGUID": "1ff9dc49-7b82-5486-a562-0988e0ed0ed6", + "m_SubObjectName": null, + "m_SubObjectType": null }, "color": { "$type": "UnityEngine.Color, UnityEngine.CoreModule", diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Merciless.json b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Merciless.json index 26a8ef4b63..a706bf989f 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Merciless.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Merciless.json @@ -1,18 +1,17 @@ { "$type": "FightingStyleDefinition, Assembly-CSharp", "features": [ - "Definition:PowerFightingStyleMerciless:2500343e-570f-57ec-bf7c-02225d302cba", - "Definition:TargetReducedToZeroHpFightingStyleMerciless:915fb6af-6989-5e40-9087-1ce64a2bbfba" + "Definition:ProficiencyFeatMerciless:19a654a6-15c9-57af-a93f-f14f5eed5b71" ], "condition": "RangedWeaponAttack", "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "FightingStyle/&MercilessTitle", "description": "FightingStyle/&MercilessDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "e0b4a203-382b-5ab4-acfa-af309c1a019c", + "m_AssetGUID": "", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/MonkShieldExpert.json b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/MonkShieldExpert.json deleted file mode 100644 index 464c83d472..0000000000 --- a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/MonkShieldExpert.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$type": "FightingStyleDefinition, Assembly-CSharp", - "features": [ - "Definition:ProficiencyMonkShieldExpert:db009d3e-bbd3-5750-b5b2-24dab1d3ec3b" - ], - "condition": "RangedWeaponAttack", - "guiPresentation": { - "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, - "title": "FightingStyle/&MonkShieldExpertTitle", - "description": "FightingStyle/&MonkShieldExpertDescription", - "spriteReference": { - "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "7dd630bc-c1c3-5f9e-8d78-a83e3b769927", - "m_SubObjectName": null, - "m_SubObjectType": null - }, - "color": { - "$type": "UnityEngine.Color, UnityEngine.CoreModule", - "r": 1.0, - "g": 1.0, - "b": 1.0, - "a": 1.0 - }, - "symbolChar": "221E", - "sortOrder": 0, - "unusedInSolastaCOTM": false, - "usedInValleyDLC": false - }, - "contentCopyright": "UserContent", - "guid": "1bfb8998-a933-52c1-9b4b-8f8ec5f85e83", - "contentPack": 9999, - "name": "MonkShieldExpert" -} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/PolearmExpert.json b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/PolearmExpert.json index 6074a5acd4..477aacc8c4 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/PolearmExpert.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/PolearmExpert.json @@ -1,17 +1,17 @@ { "$type": "FightingStyleDefinition, Assembly-CSharp", "features": [ - "Definition:FeaturePolearm:8e6e835a-2424-5900-8677-034801779b88" + "Definition:ProficiencyFeatPolearmExpert:1c75c89c-a39e-5546-8bba-022b6b9b1271" ], "condition": "RangedWeaponAttack", "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "FightingStyle/&PolearmExpertTitle", "description": "FightingStyle/&PolearmExpertDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "4b56c077-b3ab-5cac-b4ae-1aa5a3ecdfd5", + "m_AssetGUID": "", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/RopeItUp.json b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/RopeItUp.json index e27d349e4f..518f54c18a 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/RopeItUp.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/RopeItUp.json @@ -1,17 +1,17 @@ { "$type": "FightingStyleDefinition, Assembly-CSharp", "features": [ - "Definition:AttributeModifierRopeItUp:0cb22e4d-85a2-58b6-a418-e3e38de57520" + "Definition:ProficiencyFeatRopeItUp:a85c3f98-b265-5c63-b11f-0e2299e0935c" ], "condition": "RangedWeaponAttack", "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "FightingStyle/&RopeItUpTitle", "description": "FightingStyle/&RopeItUpDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "54c7e250-8ec1-5fac-9a50-f273402e0a62", + "m_AssetGUID": "", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Sentinel.json b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Sentinel.json index 1c73380db1..f64d0b859d 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Sentinel.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/Sentinel.json @@ -1,17 +1,17 @@ { "$type": "FightingStyleDefinition, Assembly-CSharp", "features": [ - "Definition:OnAttackHitEffectFeatSentinel:1a2abf93-483e-5e6e-8408-bc553864469f" + "Definition:ProficiencyFeatSentinel:69cd3b17-4a21-5c62-bd20-818e72c83031" ], "condition": "RangedWeaponAttack", "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "FightingStyle/&SentinelTitle", "description": "FightingStyle/&SentinelDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "c694eed9-c1d3-5d5b-b69d-b9459bf27cb9", + "m_AssetGUID": "", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/ShieldExpert.json b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/ShieldExpert.json index e0a7f02953..1e16517b42 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/ShieldExpert.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/FightingStyleDefinition/ShieldExpert.json @@ -1,17 +1,17 @@ { "$type": "FightingStyleDefinition, Assembly-CSharp", "features": [ - "Definition:AddExtraAttackShieldExpert:4c494f10-3661-54c4-a7bd-1de696250ba4" + "Definition:ProficiencyFeatShieldExpert:6fd6a6d7-783e-52d3-8122-7d906ebcb8cd" ], "condition": "RangedWeaponAttack", "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "FightingStyle/&ShieldExpertTitle", "description": "FightingStyle/&ShieldExpertDescription", "spriteReference": { "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", - "m_AssetGUID": "12d11a0c-b767-586b-9508-df780e4f477d", + "m_AssetGUID": "", "m_SubObjectName": null, "m_SubObjectType": null }, diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SickeningRadiance.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SickeningRadiance.json new file mode 100644 index 0000000000..70682aa895 --- /dev/null +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SickeningRadiance.json @@ -0,0 +1,438 @@ +{ + "$type": "SpellDefinition, Assembly-CSharp", + "spellsBundle": false, + "subspellsList": [], + "compactSubspellsTooltip": false, + "implemented": true, + "schoolOfMagic": "SchoolEvocation", + "spellLevel": 4, + "ritual": false, + "uniqueInstance": false, + "castingTime": "Action", + "reactionContext": "None", + "ritualCastingTime": "Action", + "requiresConcentration": true, + "effectDescription": { + "$type": "EffectDescription, Assembly-CSharp", + "rangeType": "Distance", + "rangeParameter": 24, + "halfDamageOnAMiss": false, + "hitAffinitiesByTargetTag": [], + "targetType": "Sphere", + "itemSelectionType": "None", + "targetParameter": 6, + "targetParameter2": 2, + "emissiveBorder": "None", + "emissiveParameter": 1, + "requiresTargetProximity": false, + "targetProximityDistance": 6, + "targetExcludeCaster": false, + "canBePlacedOnCharacter": true, + "affectOnlyGround": false, + "targetFilteringMethod": "CharacterOnly", + "targetFilteringTag": "No", + "requiresVisibilityForPosition": true, + "inviteOptionalAlly": false, + "slotTypes": [], + "recurrentEffect": "OnTurnStart, OnEnter", + "retargetAfterDeath": false, + "retargetActionType": "Bonus", + "poolFilterDiceNumber": 5, + "poolFilterDieType": "D8", + "trapRangeType": "Triggerer", + "targetConditionName": "", + "targetConditionAsset": null, + "targetSide": "All", + "durationType": "Minute", + "durationParameter": 10, + "endOfEffect": "EndOfTurn", + "hasSavingThrow": true, + "disableSavingThrowOnAllies": false, + "savingThrowAbility": "Constitution", + "ignoreCover": true, + "grantedConditionOnSave": null, + "rollSaveOnlyIfRelevantForms": false, + "hasShoveRoll": false, + "createdByCharacter": true, + "difficultyClassComputation": "SpellCastingFeature", + "savingThrowDifficultyAbility": "Wisdom", + "fixedSavingThrowDifficultyClass": 10, + "savingThrowAffinitiesBySense": [], + "savingThrowAffinitiesByFamily": [], + "damageAffinitiesByFamily": [], + "advantageForEnemies": false, + "canBeDispersed": false, + "hasVelocity": false, + "velocityCellsPerRound": 2, + "velocityType": "AwayFromSourceOriginalPosition", + "restrictedCreatureFamilies": [], + "immuneCreatureFamilies": [], + "restrictedCharacterSizes": [], + "hasLimitedEffectPool": false, + "effectPoolAmount": 60, + "effectApplication": "All", + "effectFormFilters": [], + "effectForms": [ + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Damage", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "damageForm": { + "$type": "DamageForm, Assembly-CSharp", + "versatile": false, + "diceNumber": 4, + "dieType": "D10", + "overrideWithBardicInspirationDie": false, + "versatileDieType": "D1", + "bonusDamage": 0, + "damageType": "DamageRadiant", + "ancestryType": "Sorcerer", + "healFromInflictedDamage": "Never", + "hitPointsFloor": 0, + "forceKillOnZeroHp": false, + "specialDeathCondition": null, + "ignoreFlyingCharacters": false, + "ignoreCriticalDoubleDice": false + }, + "hasFilterId": false, + "filterId": 0 + }, + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Condition", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": true, + "savingThrowAffinity": "Negates", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "conditionForm": { + "$type": "ConditionForm, Assembly-CSharp", + "conditionDefinitionName": "ConditionSickeningRadiance", + "conditionDefinition": "Definition:ConditionSickeningRadiance:8e8f5489-4e47-5457-9038-7e3193e4686e", + "operation": "Add", + "conditionsList": [], + "applyToSelf": false, + "forceOnSelf": false + }, + "hasFilterId": false, + "filterId": 0 + }, + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Summon", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": false, + "savingThrowAffinity": "None", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "summonForm": { + "$type": "SummonForm, Assembly-CSharp", + "summonType": "EffectProxy", + "itemDefinition": null, + "trackItem": false, + "monsterDefinitionName": "", + "number": 0, + "conditionDefinition": null, + "persistOnConcentrationLoss": true, + "decisionPackage": null, + "effectProxyDefinitionName": "ProxySickeningRadiance" + }, + "hasFilterId": false, + "filterId": 0 + }, + { + "$type": "EffectForm, Assembly-CSharp", + "formType": "Condition", + "addBonusMode": "None", + "applyLevel": "No", + "levelType": "ClassLevel", + "levelMultiplier": 1, + "diceByLevelTable": [], + "createdByCharacter": true, + "createdByCondition": false, + "hasSavingThrow": false, + "savingThrowAffinity": "None", + "dcModifier": 0, + "canSaveToCancel": false, + "saveOccurence": "EndOfTurn", + "conditionForm": { + "$type": "ConditionForm, Assembly-CSharp", + "conditionDefinitionName": "ConditionSickeningRadianceMark", + "conditionDefinition": "Definition:ConditionSickeningRadianceMark:e7c8bace-e63a-541f-a8a1-74ef61590f5a", + "operation": "Add", + "conditionsList": [], + "applyToSelf": true, + "forceOnSelf": true + }, + "hasFilterId": false, + "filterId": 0 + } + ], + "specialFormsDescription": "", + "effectAdvancement": { + "$type": "EffectAdvancement, Assembly-CSharp", + "effectIncrementMethod": "None", + "incrementMultiplier": 1, + "additionalTargetsPerIncrement": 0, + "additionalSubtargetsPerIncrement": 0, + "additionalDicePerIncrement": 0, + "additionalSpellLevelPerIncrement": 0, + "additionalSummonsPerIncrement": 0, + "additionalHPPerIncrement": 0, + "additionalTempHPPerIncrement": 0, + "additionalTargetCellsPerIncrement": 0, + "additionalItemBonus": 0, + "additionalWeaponDie": 0, + "alteredDuration": "None" + }, + "speedType": "Instant", + "speedParameter": 10.0, + "offsetImpactTimeBasedOnDistance": false, + "offsetImpactTimeBasedOnDistanceFactor": 0.1, + "offsetImpactTimePerTarget": 0.0, + "effectParticleParameters": { + "$type": "EffectParticleParameters, Assembly-CSharp", + "casterParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "05c3d612ff8259942a4747346716c95c", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterSelfParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "casterQuickSpellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "targetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "effectSubTargetParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "zoneParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "beforeImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "impactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "79dc2f6ea0fb8f44ba249db5f834c8c9", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectImpactParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "activeEffectSurfaceParticlePerIndex": "", + "activeEffectSurfaceParticlePerIndexCount": 0, + "emissiveBorderCellStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderCellEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "emissiveBorderSurfaceEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionStartParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "conditionEndParticleReference": { + "$type": "UnityEngine.AddressableAssets.AssetReference, Unity.Addressables", + "m_AssetGUID": "", + "m_SubObjectName": "", + "m_SubObjectType": "" + }, + "forceApplyZoneParticle": false, + "applyEmissionColorOnWeapons": false, + "emissionColor": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "emissionColorFadeInDuration": 0.0, + "emissionColorFadeOutDuration": 0.0 + }, + "effectAIParameters": { + "$type": "EffectAIParameters, Assembly-CSharp", + "aoeScoreMultiplier": 1.0, + "cooldownForCaster": 0, + "cooldownForBattle": 0, + "sortingScoreMultiplier": 1.0, + "dynamicCooldown": false + }, + "animationMagicEffect": "Animation0", + "lightCounterDispellsEffect": false, + "hideSavingThrowAnimation": false + }, + "aiParameters": { + "$type": "SpellAIParameters, Assembly-CSharp", + "learnPriority": "Low", + "preparePriority": "Low" + }, + "concentrationAction": "None", + "verboseComponent": true, + "somaticComponent": true, + "materialComponentType": "Mundane", + "specificMaterialComponentTag": "Diamond", + "specificMaterialComponentCostGp": 100, + "specificMaterialComponentConsumed": true, + "terminateOnItemUnequip": false, + "displayConditionDuration": false, + "vocalSpellSemeType": "Attack", + "guiPresentation": { + "$type": "GuiPresentation, Assembly-CSharp", + "hidden": false, + "title": "Spell/&SickeningRadianceTitle", + "description": "Spell/&SickeningRadianceDescription", + "spriteReference": { + "$type": "UnityEngine.AddressableAssets.AssetReferenceSprite, Unity.Addressables", + "m_AssetGUID": "09f39768-c026-56c8-95ce-976198d8a35e", + "m_SubObjectName": null, + "m_SubObjectType": null + }, + "color": { + "$type": "UnityEngine.Color, UnityEngine.CoreModule", + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "symbolChar": "221E", + "sortOrder": 0, + "unusedInSolastaCOTM": false, + "usedInValleyDLC": false + }, + "contentCopyright": "UserContent", + "guid": "ca4ad661-35e7-5913-b65d-87b87f63a03a", + "contentPack": 9999, + "name": "SickeningRadiance" +} \ No newline at end of file diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacityDefensiveWhirl.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacityDefensiveWhirl.json index 0aab22893e..ed72deba55 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacityDefensiveWhirl.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacityDefensiveWhirl.json @@ -165,7 +165,7 @@ "vocalSpellSemeType": "None", "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle", "description": "Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription", "spriteReference": { diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacityMobileWhirl.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacityMobileWhirl.json index 635c90dc35..93ea54a623 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacityMobileWhirl.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacityMobileWhirl.json @@ -165,7 +165,7 @@ "vocalSpellSemeType": "None", "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "Feature/&PowerCollegeOfAudacityMobileWhirlTitle", "description": "Feature/&PowerCollegeOfAudacityMobileWhirlDescription", "spriteReference": { diff --git a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacitySlashingWhirl.json b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacitySlashingWhirl.json index 455b850c74..ab1a8527b1 100644 --- a/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacitySlashingWhirl.json +++ b/Diagnostics/UnfinishedBusinessBlueprints/SpellDefinition/SpellPowerCollegeOfAudacitySlashingWhirl.json @@ -165,7 +165,7 @@ "vocalSpellSemeType": "None", "guiPresentation": { "$type": "GuiPresentation, Assembly-CSharp", - "hidden": false, + "hidden": true, "title": "Feature/&PowerCollegeOfAudacitySlashingWhirlTitle", "description": "Feature/&PowerCollegeOfAudacitySlashingWhirlDescription", "spriteReference": { diff --git a/Documentation/Spells.md b/Documentation/Spells.md index 04183f3fb6..2f085d0176 100644 --- a/Documentation/Spells.md +++ b/Documentation/Spells.md @@ -940,147 +940,151 @@ You unleash a debilitating wave of mental power in a 30-foot cone. Each creature You unleash a shimmering lance of psychic power from your forehead at a creature that you can see within range. It must succeed on an Intelligence saving throw or take 7d6 psychic damage and be incapacitated until the end of your next turn. On a successful save, the creature takes half damage and isn't incapacitated. At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 4th. -# 229. - *Staggering Smite* © (V) level 4 Evocation [Concentration] [UB] +# 229. - *Sickening Radiance* © (V,S) level 4 Evocation [Concentration] [UB] + +Dim light spreads within a 30-foot-radius sphere centered on a point you choose within range. The light spreads around corners, and it lasts until the spell ends. When a creature moves into the spell's area for the first time on a turn or starts its turn there, that creature must succeed on a Constitution saving throw or take 4d10 radiant damage, and it suffers one level of exhaustion and emits a dim light in a 5-foot radius. This light makes it impossible for the creature to benefit from being invisible. The light and any levels of exhaustion caused by this spell go away when the spell ends. + +# 230. - *Staggering Smite* © (V) level 4 Evocation [Concentration] [UB] The next time you hit a creature with a weapon attack during this spell's duration, your weapon pierces both body and mind, and the attack deals an extra 4d6 psychic damage to the target. The target must make a Wisdom saving throw. On a failed save, it has disadvantage on attack rolls and ability checks, and can't take reactions, until the end of its next turn. -# 230. - Stoneskin (M,V,S) level 4 Abjuration [Concentration] [SOL] +# 231. - Stoneskin (M,V,S) level 4 Abjuration [Concentration] [SOL] Grants resistance to non-magical bludgeoning, slashing, and piercing damage. -# 231. - *Vitriolic Sphere* © (V,S) level 4 Evocation [UB] +# 232. - *Vitriolic Sphere* © (V,S) level 4 Evocation [UB] You point at a place within range, and a glowing 1-foot ball of emerald acid streaks there and explodes in a 20-foot radius. Each creature in that area must make a Dexterity saving throw. On a failed save, a creature takes 10d4 acid damage and 5d4 acid damage at the end of its next turn. On a successful save, a creature takes half the initial damage and no damage at the end of its next turn. When you cast this spell using a spell slot of 5th level or higher, the initial damage increases by 2d4 for each slot level above 4th. -# 232. - Wall of Fire (V,S) level 4 Evocation [Concentration] [SOL] +# 233. - Wall of Fire (V,S) level 4 Evocation [Concentration] [SOL] Create a burning wall that injures creatures in or next to it. -# 233. - *Banishing Smite* © (V) level 5 Abjuration [Concentration] [UB] +# 234. - *Banishing Smite* © (V) level 5 Abjuration [Concentration] [UB] Your next hit deals additional 5d10 force damage with your weapon. Additionally, if this attack reduces the target to 50 hit points of fewer, you banish it for 1 min. -# 234. - *Circle of Power* © (V) level 5 Abjuration [Concentration] [UB] +# 235. - *Circle of Power* © (V) level 5 Abjuration [Concentration] [UB] Divine energy radiates from you, distorting and diffusing magical energy within 30 feet of you. Until the spell ends, the sphere moves with you, centered on you. For the duration, each friendly creature in the area, including you, has advantage on saving throws against spells and other magical effects. Additionally, when an affected creature succeeds on a saving throw made against a spell or magical effect that allows it to make a saving throw to take only half damage, it instead takes no damage if it succeeds on the saving throws. -# 235. - Cloudkill (V,S) level 5 Conjuration [Concentration] [SOL] +# 236. - Cloudkill (V,S) level 5 Conjuration [Concentration] [SOL] Creates an obscuring and poisonous cloud. The cloud moves every round. -# 236. - Cone of Cold (V,S) level 5 Evocation [SOL] +# 237. - Cone of Cold (V,S) level 5 Evocation [SOL] Inflicts massive cold damage in the cone of effect. -# 237. - Conjure Elemental (V,S) level 5 Conjuration [Concentration] [SOL] +# 238. - Conjure Elemental (V,S) level 5 Conjuration [Concentration] [SOL] Conjures an elemental of the chosen element that fights alongside you. If you lose concentration, the elemental remains and becomes hostile. -# 238. - Contagion (V,S) level 5 Necromancy [SOL] +# 239. - Contagion (V,S) level 5 Necromancy [SOL] Hit a creature to inflict a disease from the options. -# 239. - *Dawn* © (V,S) level 5 Evocation [Concentration] [UB] +# 240. - *Dawn* © (V,S) level 5 Evocation [Concentration] [UB] The light of dawn shines down on a location you specify within range. Until the spell ends, a 30-foot-radius, 40-foot-high cylinder of bright light glimmers there. This light is sunlight. When the cylinder appears, each creature in it must make a Constitution saving throw, taking 4d10 radiant damage on a failed save, or half as much damage on a successful one. A creature must also make this saving throw whenever it ends its turn in the cylinder. If you're within 60 feet of the cylinder, you can move it up to 60 feet as a bonus action on your turn. -# 240. - *Destructive Wave* © (V) level 5 Evocation [UB] +# 241. - *Destructive Wave* © (V) level 5 Evocation [UB] You strike the ground, creating a burst of divine energy that ripples outward from you. Each creature you choose within 30 feet of you must succeed on a Constitution saving throw or take 5d6 thunder damage, as well as 5d6 radiant or necrotic damage, and be knocked prone. A creature that succeeds on its saving throw takes half as much damage and isn't knocked prone. -# 241. - Dispel Evil and Good (V,S) level 5 Abjuration [Concentration] [SOL] +# 242. - Dispel Evil and Good (V,S) level 5 Abjuration [Concentration] [SOL] Celestial, elementals, feys, fiends, and undead have disadvantage on attacks against you. This spell also allows you to cancel hostile enchantments or dismiss extraplanar creatures hit by your attacks once. -# 242. - Dominate Person (V,S) level 5 Enchantment [Concentration] [SOL] +# 243. - Dominate Person (V,S) level 5 Enchantment [Concentration] [SOL] Grants you control over an enemy creature. -# 243. - *Far Step* © (V) level 5 Conjuration [Concentration] [UB] +# 244. - *Far Step* © (V) level 5 Conjuration [Concentration] [UB] You teleport up to 60 ft to an unoccupied space you can see. On each of your turns before the spell ends, you can use a bonus action to teleport in this way again. -# 244. - Flame Strike (V,S) level 5 Evocation [SOL] +# 245. - Flame Strike (V,S) level 5 Evocation [SOL] Conjures a burning column of fire and radiance affecting all creatures inside. -# 245. - Greater Restoration (V,S) level 5 Abjuration [SOL] +# 246. - Greater Restoration (V,S) level 5 Abjuration [SOL] Removes one detrimental condition, such as a charm or curse, or an effect that reduces an ability score or hit points. -# 246. - Hold Monster (V,S) level 5 Enchantment [Concentration] [SOL] +# 247. - Hold Monster (V,S) level 5 Enchantment [Concentration] [SOL] Paralyzes a creature unless it succeeds a WIS saving throw. No effect on undead. -# 247. - *Immolation* © (V) level 5 Evocation [Concentration] [UB] +# 248. - *Immolation* © (V) level 5 Evocation [Concentration] [UB] Flames wreathe one creature you can see within range. The target must make a Dexterity saving throw. It takes 8d6 fire damage on a failed save, or half as much damage on a successful one. On a failed save, the target also burns for the spell's duration. The burning target sheds bright light in a 30-foot radius and dim light for an additional 30 feet and takes 8d6 fire damage at the start of each of its turns. -# 248. - Insect Plague (V,S) level 5 Conjuration [Concentration] [SOL] +# 249. - Insect Plague (V,S) level 5 Conjuration [Concentration] [SOL] Summons a sphere of biting insects. -# 249. - Mantle of Thorns (V,S) level 5 Transmutation [Concentration] [UB] +# 250. - Mantle of Thorns (V,S) level 5 Transmutation [Concentration] [UB] Surround yourself with an aura of thorns. Those that start or walk through take 2d8 piercing damage. This damage scales at higher levels by 1d8 per slot. -# 250. - Mass Cure Wounds (V,S) level 5 Evocation [SOL] +# 251. - Mass Cure Wounds (V,S) level 5 Evocation [SOL] Heals up to 6 creatures. -# 251. - Mind Twist (V,S) level 5 Enchantment [SOL] +# 252. - Mind Twist (V,S) level 5 Enchantment [SOL] Causes massive psychic damage to all creatures around you, and incapacitates them if they fail their INT saving throw. -# 252. - Raise Dead (M,V,S) level 5 Necromancy [SOL] +# 253. - Raise Dead (M,V,S) level 5 Necromancy [SOL] Brings one creature back to life, up to 10 days after death. -# 253. - *Skill Empowerment* © (V,S) level 5 Divination [UB] +# 254. - *Skill Empowerment* © (V,S) level 5 Divination [UB] Your magic deepens a creature's understanding of its own talent. You touch one willing creature and give it expertise in one skill of your choice; until the spell ends, the creature doubles its proficiency bonus for ability checks it makes that use the chosen skill. For 1 hour, you have proficiency in the chosen skill. The spell ends early if you cast it again. You must choose a skill in which the target is proficient and that isn't already benefiting from expertise. -# 254. - Sonic Boom (V,S) level 5 Evocation [UB] +# 255. - Sonic Boom (V,S) level 5 Evocation [UB] A small orb the same color as the balloon used appears at a point you choose within range then expands with a loud crack into an explosion of force. Each creature in a 30-foot radius must make a Strength saving throw. A target is pushed up to 30 feet away from the center and dealt 6d8 thunder damage on a failed save, or half as much damage and no movement on a successful one. -# 255. - *Steel Wind Strike* © (M,S) level 5 Conjuration [UB] +# 256. - *Steel Wind Strike* © (M,S) level 5 Conjuration [UB] You flourish the weapon used in the casting and then vanish to strike like the wind. Choose up to five creatures you can see within range. Make a melee spell attack against each target. On a hit, a target takes 6d10 force damage. You can then teleport to an unoccupied space you can see within 5 feet of one of the targets you hit or missed. -# 256. - *Synaptic Static* © (V) level 5 Evocation [UB] +# 257. - *Synaptic Static* © (V) level 5 Evocation [UB] You choose a point within range and cause psychic energy to explode there. Each creature in a 20-foot-radius sphere centered on that point must make an Intelligence saving throw. A target takes 8d6 psychic damage on a failed save, or half as much damage on a successful After a failed save, a target has muddled thoughts for 1 minute. During that time, it rolls a d6 and subtracts the number rolled from all its attack rolls and ability checks. The target can make an Intelligence saving throw at the end of each of its turns, ending the effect on itself on a success. -# 257. - *Telekinesis* © (V,S) level 5 Transmutation [Concentration] [UB] +# 258. - *Telekinesis* © (V,S) level 5 Transmutation [Concentration] [UB] You can try to move a Huge or smaller creature. Make an ability check with your spellcasting ability contested by the creature's Strength check. If you win the contest, you move the creature up to 30 feet in any direction, but not beyond the range of this spell. Until the end of your next turn, the creature is restrained in your telekinetic grip. On subsequent rounds, you can use your action to attempt to maintain your telekinetic grip on the creature by repeating the contest, or target a new creature, ending the restrained effect on the previously affected creature. -# 258. - Blade Barrier (V,S) level 6 Evocation [Concentration] [SOL] +# 259. - Blade Barrier (V,S) level 6 Evocation [Concentration] [SOL] Conjures a wall of razor sharp blades which causes 6d10 slashing damage to anyone crossing it -# 259. - Chain Lightning (V,S) level 6 Evocation [SOL] +# 260. - Chain Lightning (V,S) level 6 Evocation [SOL] Target a creature with lightning, which can arc to 3 other targets within 6 cells. -# 260. - Circle of Death (M,V,S) level 6 Necromancy [SOL] +# 261. - Circle of Death (M,V,S) level 6 Necromancy [SOL] A sphere of negative energy causes Necrotic damage from a point you choose -# 261. - Conjure Fey (V,S) level 6 Conjuration [Concentration] [SOL] +# 262. - Conjure Fey (V,S) level 6 Conjuration [Concentration] [SOL] Conjures a fey creature of challenge rating 1 to 6 to fight alongside you. If you lose concentration, the creature stays but becomes hostile. -# 262. - Disintegrate (V,S) level 6 Transmutation [SOL] +# 263. - Disintegrate (V,S) level 6 Transmutation [SOL] Causes massive force damage on the target, which can be disintegrated if reduced to 0 hit points -# 263. - Eyebite (V,S) level 6 Necromancy [Concentration] [SOL] +# 264. - Eyebite (V,S) level 6 Necromancy [Concentration] [SOL] Your eyes gain a specific property which can target a creature each turn -# 264. - *Fizban's Platinum Shield* © (M,V,S) level 6 Abjuration [Concentration] [UB] +# 265. - *Fizban's Platinum Shield* © (M,V,S) level 6 Abjuration [Concentration] [UB] You create a field of silvery light that surrounds a creature of your choice within range. The field sheds dim light out to 5 feet. While surrounded by the field, a creature gains the following benefits: • The creature has half cover. @@ -1088,59 +1092,59 @@ You create a field of silvery light that surrounds a creature of your choice wit • If the creature is subjected to an effect that allows it to make a Dexterity saving throw to take only half damage, the creature instead takes no damage if it succeeds on the saving throw, and only half damage if it fails. As a bonus action on subsequent turns, you can move the field to another creature within 60 feet of the field. -# 265. - Flash Freeze (V,S) level 6 Evocation [UB] +# 266. - Flash Freeze (V,S) level 6 Evocation [UB] You attempt to encase a creature you can see within range in a prison of solid ice. The target must make a Dexterity saving throw. On a failed save, the target takes 10d6 cold damage and becomes restrained in layers of thick ice. On a successful save, the target takes half as much damage and is not restrained. The spell can only be used on creatures up to large size. To break out, the restrained target can make a Strength check as an action against your spell save DC. On success, the target escapes and is no longer restrained. When you cast this spell using a spell slot of 7th level or higher, the cold damage increases by 2d6 for each slot level above 6th. -# 266. - Freezing Sphere (V,S) level 6 Evocation [SOL] +# 267. - Freezing Sphere (V,S) level 6 Evocation [SOL] Toss a huge ball of cold energy that explodes on impact -# 267. - Globe Of Invulnerability (V,S) level 6 Abjuration [Concentration] [SOL] +# 268. - Globe Of Invulnerability (V,S) level 6 Abjuration [Concentration] [SOL] A sphere surrounding you prevents any spell up to 5th level to affect anyone inside it. -# 268. - Harm (V,S) level 6 Necromancy [SOL] +# 269. - Harm (V,S) level 6 Necromancy [SOL] Inflicts devastating necrotic damage and reduces the maximum hit points accordingly. Cannot drop the target below 1 hit points -# 269. - Heal (V,S) level 6 Evocation [SOL] +# 270. - Heal (V,S) level 6 Evocation [SOL] Heals 70 hit points and also removes blindness and diseases -# 270. - Heroes Feast (M,V,S) level 6 Conjuration [SOL] +# 271. - Heroes Feast (M,V,S) level 6 Conjuration [SOL] Summons a feast which cures most ailments and grants immunity to poisonand being frightened, WIS save advantage, and increased maximum hitpoints -# 271. - Hilarity (V) level 6 Enchantment [Concentration] [SOL] +# 272. - Hilarity (V) level 6 Enchantment [Concentration] [SOL] Choose one target. They fall down laughing, becoming prone and incapacitated, and take psychic damage until they save at the end of one of their turns, or until the spell ends. -# 272. - Poison Wave (M,V,S) level 6 Evocation [UB] +# 273. - Poison Wave (M,V,S) level 6 Evocation [UB] A poisonous wave erupts from you, engulfing those close by. Each creature within the spell's radius must make a Constitution saving throw, taking 6d10 poison damage on a failure, or half as much damage on a successful one. A creature who fails their saving throw is also poisoned for 1 minute, and can repeat the saving throw at the end of each of its turn. When you cast this spell using a slot of 7th level or higher, the damage increases by 1d10 for each slot level above 6th. -# 273. - Ring of Blades (M,V,S) level 6 Conjuration [Concentration] [UB] +# 274. - Ring of Blades (M,V,S) level 6 Conjuration [Concentration] [UB] You raise both hands as you evoke six transparent blades around you as a bonus action. When you cast this spell, and as a bonus action on each subsequent turn, you can throw one of these blades at a creature within 60 feet from you. Make a ranged spell attack. On a hit, the target takes 4d10 force damage. When you cast this spell using a spell slot of 7th level or higher, the damage of each blade increases by 1d10 for each slot level above 6th. -# 274. - *Scatter* © (V) level 6 Conjuration [UB] +# 275. - *Scatter* © (V) level 6 Conjuration [UB] The air quivers around up to five creatures of your choice that you can see within range. An unwilling creature must succeed on a Wisdom saving throw to resist this spell. You teleport each affected target to an unoccupied space that you can see within 120 feet of you. That space must be on the ground or on a floor. -# 275. - Shelter from Energy (V,S) level 6 Abjuration [UB] +# 276. - Shelter from Energy (V,S) level 6 Abjuration [UB] Choose one of the following damage types: acid, cold, fire, lightning, necrotic, radiant, or thunder, and then choose up to six willing creatures that you can see within range. For 1 hour, targets have resistance to that damage type. When you cast this spell using a spell slot of 7th level or higher, you may target up to one additional willing creature for each slot level above 6th. -# 276. - Sunbeam (V,S) level 6 Evocation [Concentration] [SOL] +# 277. - Sunbeam (V,S) level 6 Evocation [Concentration] [SOL] You conjure a line of radiance which can burn and blind creatures in the line of effect; undead and oozes save with disadvantage. The beam can be retargeted each turn -# 277. - *Tasha's Otherworldly Guise* © (M,V,S) level 6 Transmutation [Concentration] [UB] +# 278. - *Tasha's Otherworldly Guise* © (M,V,S) level 6 Transmutation [Concentration] [UB] Uttering an incantation, you draw on the magic of the Lower Planes or Upper Planes (your choice) to transform yourself. -# 278. - *Tenser's Transformation* © (V,S) level 6 Transmutation [Concentration] [UB] +# 279. - *Tenser's Transformation* © (V,S) level 6 Transmutation [Concentration] [UB] You endow yourself with endurance and martial prowess fueled by magic. Until the spell ends, you can't cast spells, and you gain the following benefits: • You gain 50 temporary hit points. If any of these remain when the spell ends, they are lost. @@ -1150,170 +1154,170 @@ You endow yourself with endurance and martial prowess fueled by magic. Until the • You can attack twice, instead of once, when you take the Attack action on your turn. Immediately after the spell ends, you must succeed on a DC 15 Constitution saving throw or suffer one level of exhaustion. -# 279. - True Seeing (V,S) level 6 Divination [SOL] +# 280. - True Seeing (V,S) level 6 Divination [SOL] A creature you touch gains True Sight for one hour -# 280. - Wall of Thorns (V,S) level 6 Conjuration [Concentration] [SOL] +# 281. - Wall of Thorns (V,S) level 6 Conjuration [Concentration] [SOL] Creates a wall of tough of needle-sharp thorns, that hurts and slows every creature in it. -# 281. - Arcane Sword (M,V,S) level 7 Evocation [Concentration] [SOL] +# 282. - Arcane Sword (M,V,S) level 7 Evocation [Concentration] [SOL] Summon a weapon that fights for you. -# 282. - Conjure Celestial (V,S) level 7 Conjuration [Concentration] [SOL] +# 283. - Conjure Celestial (V,S) level 7 Conjuration [Concentration] [SOL] Conjures a celestial creature of challenge rating 4 that fights alongside you. If you lose concentration, the creature is dismissed. -# 283. - *Crown of Stars* © (V,S) level 7 Evocation [UB] +# 284. - *Crown of Stars* © (V,S) level 7 Evocation [UB] Seven star-like motes of light appear and orbit your head until the spell ends. You can use a bonus action to send one of the motes streaking toward one creature or object within 120 feet of you. When you do so, make a ranged spell attack. On a hit, the target takes 4d12 radiant damage. Whether you hit or miss, the mote is expended. The spell ends early if you expend the last mote. If you have four or more motes remaining, they shed bright light in a 30-foot radius and dim light for an additional 30 feet. If you have one to three motes remaining, they shed dim light in a 30-foot radius. When you cast this spell using a spell slot of 8th level or higher, the number of motes created increases by two for each slot level above 7th. -# 284. - Delayed Blast Fireball (V,S) level 7 Evocation [Concentration] [SOL] +# 285. - Delayed Blast Fireball (V,S) level 7 Evocation [Concentration] [SOL] Conjures a ball of fire that grows more powerful with time, detonating when a creature enters its space or when the spell ends. -# 285. - Divine Word (V) level 7 Evocation [SOL] +# 286. - Divine Word (V) level 7 Evocation [SOL] Utter a divine word that inflicts various negative conditions on enemies you can see, based on their HP. Also banishes all celestials, elementals, feys, and fiends if they fail their saving throws. -# 286. - *Draconic Transformation* © (M,V,S) level 7 Transmutation [Concentration] [UB] +# 287. - *Draconic Transformation* © (M,V,S) level 7 Transmutation [Concentration] [UB] With a roar, you draw on the magic of dragons to transform yourself, taking on draconic features. You gain the following benefits until the spell ends: • You have blindsight with a range of 30 feet. • When you cast this spell, and as a bonus action on subsequent turns for the duration, you can exhale shimmering energy in a 60-foot cone. Each creature in that area must make a Dexterity saving throw, taking 6d8 force damage on a failed save, or half as much damage on a successful one. • Incorporeal wings sprout from your back, giving you a flying speed of 60 feet. -# 287. - Finger of Death (V,S) level 7 Necromancy [SOL] +# 288. - Finger of Death (V,S) level 7 Necromancy [SOL] Send negative energy coursing through a creature within range. -# 288. - Fire Storm (V,S) level 7 Evocation [SOL] +# 289. - Fire Storm (V,S) level 7 Evocation [SOL] Causes a wide wall of roaring flames to burst up wherever you choose within range. -# 289. - Gravity Slam (V,S) level 7 Transmutation [SOL] +# 290. - Gravity Slam (V,S) level 7 Transmutation [SOL] Increase gravity to slam everyone in a specific area onto the ground. -# 290. - Prismatic Spray (V,S) level 7 Evocation [SOL] +# 291. - Prismatic Spray (V,S) level 7 Evocation [SOL] Each creature within the cone of effect is randomly affected by one or two (roll 8 on d8) rays with the following effects: -# 291. - Regenerate (V,S) level 7 Transmutation [SOL] +# 292. - Regenerate (V,S) level 7 Transmutation [SOL] Touch a creature and stimulate its natural healing ability. -# 292. - Rescue the Dying (V) level 7 Transmutation [UB] +# 293. - Rescue the Dying (V) level 7 Transmutation [UB] With a word, you call positive energy into the target's body to heal and ward it. The target regains a number of hit points equal to 4d10 + 30. It also gains temporary hit points equal to half that amount and resistance to all damage, both lasting until the end of your next turn. When you cast this spell using a spell slot of 8th level or higher, the healing increases by 2d10 for each slot level above 7th. -# 293. - Resurrection (M,V,S) level 7 Necromancy [SOL] +# 294. - Resurrection (M,V,S) level 7 Necromancy [SOL] Brings one creature back to life, up to 100 years after death. -# 294. - *Reverse Gravity* © (V,S) level 7 Transmutation [Concentration] [UB] +# 295. - *Reverse Gravity* © (V,S) level 7 Transmutation [Concentration] [UB] This spell reverses gravity in a 50-foot-radius, 100-foot-high cylinder centered on a point within range. -# 295. - Symbol (V,S) level 7 Abjuration [SOL] +# 296. - Symbol (V,S) level 7 Abjuration [SOL] Inscribe a glyph on a surface. When an enemy starts its turn in the area or enters it, the glyph's effect is applied in a sphere with a 12-cell radius. -# 296. - *Abi-Dalzim's Horrid Wilting* © (V,S) level 8 Necromancy [UB] +# 297. - *Abi-Dalzim's Horrid Wilting* © (V,S) level 8 Necromancy [UB] You draw the moisture from every creature in a 30-foot cube centered on a point you choose within range. Each creature in that area must make a Constitution saving throw. Constructs and undead aren't affected, and plants and ice elementals make this saving throw with disadvantage. A creature takes 10d8 necrotic damage on a failed save, or half as much damage on a successful one. -# 297. - Divine Blade (V,S) level 8 Evocation [Concentration] [SOL] +# 298. - Divine Blade (V,S) level 8 Evocation [Concentration] [SOL] A glowing blade of pure energy springs from your hand. On a hit, the target takes 6d8 radiant damage and must roll a Wisdom saving throw to avoid being stunned until the end of its next turn. -# 298. - Dominate Monster (V,S) level 8 Enchantment [Concentration] [SOL] +# 299. - Dominate Monster (V,S) level 8 Enchantment [Concentration] [SOL] Grants you control over an enemy creature of any type. -# 299. - Earthquake (V,S) level 8 Evocation [Concentration] [SOL] +# 300. - Earthquake (V,S) level 8 Evocation [Concentration] [SOL] You create a seismic disturbance that violently shakes the ground and the creatures standing on it for the duration of the spell. -# 300. - Feeblemind (V,S) level 8 Enchantment [SOL] +# 301. - Feeblemind (V,S) level 8 Enchantment [SOL] You blast the mind of one creature, attempting to shatter its intellect and personality. The target takes 4d6 psychic damage and must make an Intelligence saving throw. On a failed save, the creature's Intelligence, Charisma and Wisdom scores become 1 and it is unable to cast spells. These effects last for 1 minute. -# 301. - Holy Aura (V,S) level 8 Abjuration [Concentration] [SOL] +# 302. - Holy Aura (V,S) level 8 Abjuration [Concentration] [SOL] Allies within 6 cells of you when you cast Holy Aura gain advantage on all saving throws, and other creatures have disadvantage on attack rolls against them until the spell ends. In addition, when a fiend or an undead hits an affected creature with a melee attack, they must succeed on a Constitution saving throw or be blinded until the spell ends. -# 302. - Incendiary Cloud (V,S) level 8 Conjuration [Concentration] [SOL] +# 303. - Incendiary Cloud (V,S) level 8 Conjuration [Concentration] [SOL] A cloud of smoke appears in a sphere with a 4-cell radius. The cloud damages each creature inside it, and moves away from you each turn until the end of the spell's duration or until a moderate wind disperses the cloud. -# 303. - *Maddening Darkness* © (V) level 8 Evocation [Concentration] [UB] +# 304. - *Maddening Darkness* © (V) level 8 Evocation [Concentration] [UB] Magical darkness spreads from a point you choose within range to fill a 60-foot-radius sphere until the spell ends. Shrieks, gibbering, and mad laughter can be heard within the sphere. On activation, and whenever a creature ends its turn in the sphere, it must make a Wisdom saving throw, taking 6d8 psychic damage on a failed save, or half as much damage on a successful one. -# 304. - Maze (V,S) level 8 Abjuration [Concentration] [SOL] +# 305. - Maze (V,S) level 8 Abjuration [Concentration] [SOL] You banish a creature that you can see within range into a labyrinthine demiplane. The target remains there for the spell's duration or until it escapes the maze. -# 305. - *Mind Blank* © (V,S) level 8 Transmutation [UB] +# 306. - *Mind Blank* © (V,S) level 8 Transmutation [UB] Until the spell ends, one willing creature you touch is immune to psychic damage, any effect that would sense its emotions or read its thoughts, divination spells, and the charmed condition. -# 306. - Power Word Stun (V) level 8 Enchantment [SOL] +# 307. - Power Word Stun (V) level 8 Enchantment [SOL] Overwhelm the mind of a creature that has 150 hit points or fewer, leaving it stunned. -# 307. - Soul Expulsion (V,S) level 8 Necromancy [UB] +# 308. - Soul Expulsion (V,S) level 8 Necromancy [UB] You blast a foe's soul with magical power, causing it to glow with otherwordly light. Choose one creature that you can see within range, which must make a Charisma saving throw. On a failed saving throw, the target takes 11d8 necrotic damage and is stunned until the start of your next turn. On a successful saving throw, the target takes half damage and isn't stunned. Each enemy other than the target that is within 60 feet of the target must make a Wisdom saving throw. On a failed save, a creature takes 7d8 radiant damage and has disadvantage on attack rolls until the end of your next turn. On a successful saving throw a creature takes half damage and nothing else. When this spell targets undead, the spell ignores any resistance or immunity to necrotic damage, and the target has disadvantage on the saving throw. When you cast this spell using a spell slot of 9th level, both the necrotic damage and radiant damage increase by 2d8. -# 308. - Spell Ward (V,S) level 8 Abjuration [Concentration] [SOL] +# 309. - Spell Ward (V,S) level 8 Abjuration [Concentration] [SOL] Creates a mobile globe that is impenetrable to enemy spells cast from outside it. -# 309. - Sunburst (V,S) level 8 Evocation [SOL] +# 310. - Sunburst (V,S) level 8 Evocation [SOL] Brilliant sunlight blazes in a sphere with a 12-cell radius. Each creature that fails a Constitution saving throw takes radiant damage and is blinded for 1 minute. Any darkness created by a spell in the area is dispelled. -# 310. - Thunderstorm (V,S) level 8 Transmutation [SOL] +# 311. - Thunderstorm (V,S) level 8 Transmutation [SOL] You create a blast of thunder in a sphere that causes thunder and lightning damage to everyone, and can blind or stun those who fail a CON saving throw. -# 311. - Wild Shapes (V,S) level 8 Transmutation [Concentration] [SOL] +# 312. - Wild Shapes (V,S) level 8 Transmutation [Concentration] [SOL] Turns other creatures in to beasts for one day. -# 312. - *Foresight* © (V,S) level 9 Transmutation [UB] +# 313. - *Foresight* © (V,S) level 9 Transmutation [UB] You touch a willing creature and bestow a limited ability to see into the immediate future. For the duration, the target can't be surprised and has advantage on attack rolls, ability checks, and saving throws. Additionally, other creatures have disadvantage on attack rolls against the target for the duration. -# 313. - *Mass Heal* © (V,S) level 9 Transmutation [UB] +# 314. - *Mass Heal* © (V,S) level 9 Transmutation [UB] A flood of healing energy flows from you into injured creatures around you. You restore 120 hit points each to 6 creatures that you can see within range. Creatures healed by this spell are also cured of all diseases and any effect making them blinded or deafened. This spell has no effect on undead or constructs. -# 314. - *Meteor Swarm* © (V,S) level 9 Transmutation [UB] +# 315. - *Meteor Swarm* © (V,S) level 9 Transmutation [UB] Blazing orbs of fire plummet to the ground at a single point you can see within range. Each creature in a 40-foot-radius sphere centered on the point you choose must make a Dexterity saving throw. The sphere spreads around corners. A creature takes 20d6 fire damage and 20d6 bludgeoning damage on a failed save, or half as much damage on a successful one. A creature in the area of more than one fiery burst is affected only once. -# 315. - *Power Word Heal* © (V,S) level 9 Enchantment [UB] +# 316. - *Power Word Heal* © (V,S) level 9 Enchantment [UB] A wave of healing energy washes over the creature you touch. The target regains all its hit points. If the creature is charmed, frightened, paralyzed, or stunned, the condition ends. If the creature is prone, it can use its reaction to stand up. This spell has no effect on undead or constructs. -# 316. - *Power Word Kill* © (V,S) level 9 Transmutation [UB] +# 317. - *Power Word Kill* © (V,S) level 9 Transmutation [UB] You utter a word of power that can compel one creature you can see within range to die instantly. If the creature you choose has 100 hit points or fewer, it dies. Otherwise, the spell has no effect. -# 317. - *Shapechange* © (M,V,S) level 9 Transmutation [Concentration] [UB] +# 318. - *Shapechange* © (M,V,S) level 9 Transmutation [Concentration] [UB] You assume the form of a different creature for the duration. The new form can be of any creature with a challenge rating equal to your level or lower. -# 318. - *Time Stop* © (V) level 9 Transmutation [UB] +# 319. - *Time Stop* © (V) level 9 Transmutation [UB] You briefly stop the flow of time for everyone but yourself. No time passes for other creatures, while you take 1d4 + 1 turns in a row, during which you can use actions and move as normal. -# 319. - *Weird* © (V,S) level 9 Illusion [Concentration] [UB] +# 320. - *Weird* © (V,S) level 9 Illusion [Concentration] [UB] Drawing on the deepest fears of a group of creatures, you create illusory creatures in their minds, visible only to them. Each enemy in a 30-foot-radius sphere centered on a point of your choice within range must make a Wisdom saving throw. On a failed save, a creature becomes frightened for the duration. The illusion calls on the creature's deepest fears, manifesting its worst nightmares as an implacable threat. At the end of each of the frightened creature's turns, it must succeed on a Wisdom saving throw or take 4d10 psychic damage. On a successful save, the spell ends for that creature. diff --git a/Documentation/Subclasses.md b/Documentation/Subclasses.md index 2f3c8e0b71..00b0758223 100644 --- a/Documentation/Subclasses.md +++ b/Documentation/Subclasses.md @@ -448,6 +448,8 @@ Once per rest as a free action, you can choose one benefit which will last until When you hit a creature with your natural weapons while you are raging, the beast within you can curse your target with rabid fury. The target must succeed on a Wisdom saving throw (DC equal to 8 + your Constitution modifier + your proficiency bonus) or suffer one of the following effects (your choice). +You can use this feature a number of times equal to your proficiency bonus, and you regain all expended uses when you finish a long rest. + * Infectious Fury: Compelled Strike Target attacks another creature of your choice within the target's reach. @@ -1164,12 +1166,12 @@ Bards of the College of Swords entertain through daring feats of weapon prowess. ### Level 3 -* Audacious Whirl +* Blade Flourish Whenever you take the Attack action on your turn, your walking speed increases by 10 feet until the end of the turn, and if a melee weapon attack that you make as part of this action hits a creature, you can expend one use of your Bardic Inspiration to cause the weapon to deal extra damage to the target you hit. The damage equals the number you roll on the Bardic Inspiration die. You also choose a particular maneuver: -• Defensive Whirl: You add the Bardic Inspiration die roll to your AC until the start of your next turn. -• Slashing Whirl: You deal the extra damage to all other enemy creatures within 5 feet of you. -• Mobile Whirl: You gain benefits of disengage until the end of your turn. +• Defensive Flourish: You add the Bardic Inspiration die roll to your AC until the start of your next turn. +• Slashing Flourish: You deal the extra damage to all other enemy creatures within 5 feet of you. +• Mobile Flourish: You gain benefits of disengage until the end of your turn. * Bonus Proficiencies @@ -1193,9 +1195,9 @@ You gain an extra attack and can now attack up to 2 times in your turn. ### Level 14 -* Masterful Whirl +* Master's Flourish -Whenever you use an Audacious Whirl option, you can roll a D6 and use it instead of expending a Bardic Inspiration die. +Whenever you use a Blade Flourish option, you can roll a D6 and use it instead of expending a Bardic Inspiration die. @@ -2985,6 +2987,10 @@ For battle masters, a battle is a test of wit as much as a test of might. They e ### Level 3 +* Additional Superiority Die + +You gain an additional superiority die. + * Maneuvers You learn three special techniques called maneuvers. Using a maneuver costs one superiority die. Most maneuvers enhance your attacks in a way and add the superiority die's roll to the attack's damage. You can only have one maneuver active at a time. Some of your maneuvers require your target to make a saving throw to avoid its detrimental effects. The Maneuver DC of these maneuvers is 8 + proficiency bonus + Strength or Dexterity modifier, whichever is higher. @@ -3053,6 +3059,10 @@ You can replace one maneuver you know with a new one. ### Level 18 +* Master of Warfare + +During combat, you regain a superiority die at the start of each of your turns. + * Replace Maneuver You can replace one maneuver you know with a new one. @@ -3061,13 +3071,6 @@ You can replace one maneuver you know with a new one. Your superiority die is upgraded to D12. -* Tactical Awareness - -While you are not incapacitated, you gain the following benefits: -• Once per turn, your weapon attack deals extra damage equal to your proficiency bonus. -• Attacks of Opportunity you make are done with advantage. -• Attacks of Opportunity against you are done with disadvantage. - ## 4. Champion [SOL] diff --git a/Media/TidalWave.png b/Media/TidalWave.png deleted file mode 100644 index eda52335fa..0000000000 Binary files a/Media/TidalWave.png and /dev/null differ diff --git a/Media/WaterySphere.png b/Media/WaterySphere.png deleted file mode 100644 index 58afa7d7f9..0000000000 Binary files a/Media/WaterySphere.png and /dev/null differ diff --git a/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs b/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs index 1a5dda7ef7..bd73ada085 100644 --- a/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs +++ b/SolastaUnfinishedBusiness/Api/DatabaseHelper-RELEASE.cs @@ -27,6 +27,8 @@ internal static class FeatureDefinitionPerceptionAffinitys internal static class ActionDefinitions { internal static ActionDefinition ActionSurge { get; } = GetDefinition("ActionSurge"); + internal static ActionDefinition CastMain { get; } = GetDefinition("CastMain"); + internal static ActionDefinition CastBonus { get; } = GetDefinition("CastBonus"); internal static ActionDefinition CastInvocation { get; } = GetDefinition("CastInvocation"); internal static ActionDefinition DashBonus { get; } = GetDefinition("DashBonus"); internal static ActionDefinition SpiritRage { get; } = GetDefinition("SpiritRage"); @@ -125,8 +127,6 @@ internal static class CharacterClassDefinitions internal static class CharacterFamilyDefinitions { - internal static CharacterFamilyDefinition Beast { get; } = GetDefinition("Beast"); - internal static CharacterFamilyDefinition Construct { get; } = GetDefinition("Construct"); @@ -136,8 +136,6 @@ internal static class CharacterFamilyDefinitions internal static CharacterFamilyDefinition Humanoid { get; } = GetDefinition("Humanoid"); - internal static CharacterFamilyDefinition Plant { get; } = GetDefinition("Plant"); - internal static CharacterFamilyDefinition Undead { get; } = GetDefinition("Undead"); } @@ -287,9 +285,6 @@ internal static class CharacterSubclassDefinitions internal static CharacterSubclassDefinition TraditionFreedom { get; } = GetDefinition("TraditionFreedom"); - internal static CharacterSubclassDefinition TraditionGreenmage { get; } = - GetDefinition("TraditionGreenmage"); - internal static CharacterSubclassDefinition TraditionShockArcanist { get; } = GetDefinition("TraditionShockArcanist"); @@ -305,9 +300,6 @@ internal static class CharacterSubclassDefinitions internal static class ConditionDefinitions { - internal static ConditionDefinition ConditionDummy { get; } = - GetDefinition("ConditionDummy"); - internal static ConditionDefinition ConditionFeebleMinded { get; } = GetDefinition("ConditionFeebleMinded"); @@ -753,6 +745,9 @@ internal static class DeityDefinitions internal static class EffectProxyDefinitions { + internal static EffectProxyDefinition ProxyIndomitableLight { get; } = + GetDefinition("ProxyIndomitableLight"); + internal static EffectProxyDefinition ProxyDelayedBlastFireball { get; } = GetDefinition("ProxyDelayedBlastFireball"); @@ -1600,6 +1595,9 @@ internal static class FeatureDefinitionMovementAffinitys internal static FeatureDefinitionMovementAffinity MovementAffinityCarriedByWind { get; } = GetDefinition("MovementAffinityCarriedByWind"); + internal static FeatureDefinitionMovementAffinity MovementAffinityConditionSlowed { get; } = + GetDefinition("MovementAffinityConditionSlowed"); + internal static FeatureDefinitionMovementAffinity MovementAffinityConditionFlyingAdaptive { get; } = GetDefinition("MovementAffinityConditionFlyingAdaptive"); @@ -1720,6 +1718,9 @@ internal static class FeatureDefinitionPointPools internal static class FeatureDefinitionPowers { + internal static FeatureDefinitionPower PowerSymbolOfHopelessness { get; } = + GetDefinition("PowerSymbolOfHopelessness"); + internal static FeatureDefinitionPower PowerBulette_Snow_Leap { get; } = GetDefinition("PowerBulette_Snow_Leap"); diff --git a/SolastaUnfinishedBusiness/Api/GameExtensions/EnumExtensions.cs b/SolastaUnfinishedBusiness/Api/GameExtensions/EnumExtensions.cs index 2ecf3d1e14..794e3c3c36 100644 --- a/SolastaUnfinishedBusiness/Api/GameExtensions/EnumExtensions.cs +++ b/SolastaUnfinishedBusiness/Api/GameExtensions/EnumExtensions.cs @@ -118,7 +118,8 @@ internal enum ExtraAdditionalDamageValueDetermination internal enum ExtraAncestryType { PathOfTheElements = 9000, - WayOfTheDragon + WayOfTheDragon, + CollegeOfAudacityDefensiveWhirl } internal enum ExtraCombatAffinityValueDetermination diff --git a/SolastaUnfinishedBusiness/Api/GameExtensions/RulesetCharacterExtensions.cs b/SolastaUnfinishedBusiness/Api/GameExtensions/RulesetCharacterExtensions.cs index 3a5617dcea..c1d0e3967c 100644 --- a/SolastaUnfinishedBusiness/Api/GameExtensions/RulesetCharacterExtensions.cs +++ b/SolastaUnfinishedBusiness/Api/GameExtensions/RulesetCharacterExtensions.cs @@ -7,7 +7,6 @@ using SolastaUnfinishedBusiness.Behaviors; using SolastaUnfinishedBusiness.Behaviors.Specific; using SolastaUnfinishedBusiness.Classes; -using SolastaUnfinishedBusiness.FightingStyles; using SolastaUnfinishedBusiness.Interfaces; using SolastaUnfinishedBusiness.Validators; using static RuleDefinitions; @@ -600,11 +599,4 @@ internal static bool HasTemporaryConditionOfType(this RulesetCharacter character .Any(condition => condition.ConditionDefinition.IsSubtypeOf(conditionName) && condition.DurationType != DurationType.Permanent); } - - internal static bool HasMonkShieldExpert(this RulesetCharacter character) - { - var hero = character.GetOriginalHero(); - - return hero != null && hero.TrainedFightingStyles.Any(x => x.Name == MonkShieldExpert.ShieldExpertName); - } } diff --git a/SolastaUnfinishedBusiness/Behaviors/CustomSituationalContext.cs b/SolastaUnfinishedBusiness/Behaviors/CustomSituationalContext.cs index 2afc887229..18fd304503 100644 --- a/SolastaUnfinishedBusiness/Behaviors/CustomSituationalContext.cs +++ b/SolastaUnfinishedBusiness/Behaviors/CustomSituationalContext.cs @@ -84,17 +84,6 @@ internal static bool IsContextValid( ExtraSituationalContext.IsConcentratingOnSpell => contextParams.source.ConcentratedSpell != null, - // supports Monk Shield Expert scenarios - (ExtraSituationalContext)SituationalContext.NotWearingArmorOrShield => - !contextParams.source.IsWearingArmor() && - (!contextParams.source.IsWearingShield() || contextParams.source.HasMonkShieldExpert()), - - // supports Monk Shield Expert scenarios - (ExtraSituationalContext)SituationalContext.NotWearingArmorOrMageArmorOrShield => - !contextParams.source.IsWearingArmor() && - !contextParams.source.HasConditionOfTypeOrSubType(ConditionMagicallyArmored) && - (!contextParams.source.IsWearingShield() || contextParams.source.HasMonkShieldExpert()), - _ => def }; } diff --git a/SolastaUnfinishedBusiness/Behaviors/TrackItemsCarefully.cs b/SolastaUnfinishedBusiness/Behaviors/TrackItemsCarefully.cs index 9fddbc5760..b34895668c 100644 --- a/SolastaUnfinishedBusiness/Behaviors/TrackItemsCarefully.cs +++ b/SolastaUnfinishedBusiness/Behaviors/TrackItemsCarefully.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Api.Helpers; @@ -19,7 +20,7 @@ internal static void Process(RulesetEffect activeEffect) } var entityService = ServiceRepository.GetService(); - var allEntities = entityService.RulesetEntities.Values; + var allEntities = entityService?.RulesetEntities.Values; ProcessSummonedItems(activeEffect, allEntities); ProcessItemProperties(activeEffect, allEntities); @@ -55,16 +56,14 @@ private static bool IsOrphaned(RulesetItemProperty p) } private static void ProcessSummonedItems(RulesetEffect activeEffect, - Dictionary.ValueCollection allEntities) + [CanBeNull] Dictionary.ValueCollection allEntities) { - var characters = allEntities - .Select(e => e as RulesetCharacter) - .Where(e => e != null) + var characters = allEntities? + .OfType() .ToList(); - var containers = allEntities - .Select(e => e as RulesetContainer) - .Where(e => e != null) + var containers = allEntities? + .OfType() .ToList(); var itemService = ServiceRepository.GetService(); @@ -81,14 +80,20 @@ private static void ProcessSummonedItems(RulesetEffect activeEffect, continue; } - foreach (var character in characters) + if (characters != null) { - character.LoseItem(trackedItem); + foreach (var character in characters) + { + character.LoseItem(trackedItem); + } } - foreach (var slot in containers.Select(container => container.FindSlotHoldingItem(trackedItem))) + if (containers != null) { - slot?.UnequipItem(true, true); + foreach (var slot in containers.Select(container => container.FindSlotHoldingItem(trackedItem))) + { + slot?.UnequipItem(true, true); + } } itemService?.LootItem(trackedItem); @@ -99,9 +104,10 @@ private static void ProcessSummonedItems(RulesetEffect activeEffect, activeEffect.TrackedSummonedItemGuids.Clear(); } - private static void ProcessItemProperties(RulesetEffect activeEffect, IEnumerable allEntities) + private static void ProcessItemProperties( + RulesetEffect activeEffect, [CanBeNull] IEnumerable allEntities) { - if (activeEffect.TrackedItemPropertyGuids.Count == 0) + if (allEntities == null || activeEffect.TrackedItemPropertyGuids.Count == 0) { return; } diff --git a/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionCastSpellBuilder.cs b/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionCastSpellBuilder.cs index 4e63d073f0..bda9964585 100644 --- a/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionCastSpellBuilder.cs +++ b/SolastaUnfinishedBusiness/Builders/Features/FeatureDefinitionCastSpellBuilder.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.Diagnostics; using SolastaUnfinishedBusiness.Api.LanguageExtensions; @@ -95,7 +96,8 @@ internal static void EnumerateKnownSpells( internal static void EnumerateSlotsPerLevel( CasterProgression progression, - List slotsPerLevels) + List slotsPerLevels, + bool forceOnes = false) { slotsPerLevels.Clear(); @@ -126,7 +128,10 @@ internal static void EnumerateSlotsPerLevel( { var slotsForLevel = new FeatureDefinitionCastSpell.SlotsByLevelDuplet { - Level = level, Slots = SlotsByCasterLevel[level - startingLevel + 1] + Level = level, + Slots = SlotsByCasterLevel[level - startingLevel + 1] + .Select(x => x == 0 ? 0 : forceOnes ? 1 : x) + .ToList() }; slotsPerLevels.Add(slotsForLevel); @@ -139,7 +144,10 @@ internal static void EnumerateSlotsPerLevel( { var slotsForLevel = new FeatureDefinitionCastSpell.SlotsByLevelDuplet { - Level = level, Slots = SlotsByCasterLevel[((level - startingLevel + 1) / 2) + 1] + Level = level, + Slots = SlotsByCasterLevel[((level - startingLevel + 1) / 2) + 1] + .Select(x => x == 0 ? 0 : forceOnes ? 1 : x) + .ToList() }; slotsPerLevels.Add(slotsForLevel); @@ -151,7 +159,10 @@ internal static void EnumerateSlotsPerLevel( { var slotsForLevel = new FeatureDefinitionCastSpell.SlotsByLevelDuplet { - Level = level, Slots = SlotsByCasterLevel[((level - startingLevel + 2) / 3) + 1] + Level = level, + Slots = SlotsByCasterLevel[((level - startingLevel + 2) / 3) + 1] + .Select(x => x == 0 ? 0 : forceOnes ? 1 : x) + .ToList() }; slotsPerLevels.Add(slotsForLevel); diff --git a/SolastaUnfinishedBusiness/ChangelogHistory.txt b/SolastaUnfinishedBusiness/ChangelogHistory.txt index e459a08973..4eb8eda23c 100644 --- a/SolastaUnfinishedBusiness/ChangelogHistory.txt +++ b/SolastaUnfinishedBusiness/ChangelogHistory.txt @@ -1,3 +1,21 @@ +1.5.97.20: + +- added Interface > Game UI > 'Camera never moves during enemy turns' +- added Interface > Game UI > 'Enable elevation camera to stay at position' +- added Interface > Game UI > 'Increase elevation camera max height by X cells' +- added Sickening Radiance spell, and variant spell points rules +- fixed Alert feat not working on overland map encounters +- fixed Arcane Archer arcane shot soft lock when enemy already dead +- fixed cast main action leaving available cast bonus action behind +- fixed Export Hero and RESPEC auras, infusions, etc. termination +- fixed Ring of Knifes spell follow up power to-hit modifier +- fixed selection on Field Manipulator displacement, and Scatter spell + +KNOWN ISSUES: + +- Artillerist Force Ballista tiny cannon doesn't force attack DIS within 5 ft +- Chaos Bolt spell damage will be of wrong type under multiplayer if twinned and one bolt misses + 1.5.97.19: all fixes marked with * were introduced with the IsMelee change on v18 @@ -24,10 +42,6 @@ all fixes marked with * were introduced with the IsMelee change on v18 * fixed Wendigo natural lunger increase weapon reach validator * fixed Wyrmkin reactive retribution attack mode validator -KNOWN ISSUES: - -- Artillerist Force Ballista tiny cannon doesn't force attack DIS within 5 ft -- Chaos Bolt damage will be of wrong type under multiplayer if twinned and any bolt misses 1.5.97.18: diff --git a/SolastaUnfinishedBusiness/Displays/CreditsDisplay.cs b/SolastaUnfinishedBusiness/Displays/CreditsDisplay.cs index 916447f5f0..3cce7eac3e 100644 --- a/SolastaUnfinishedBusiness/Displays/CreditsDisplay.cs +++ b/SolastaUnfinishedBusiness/Displays/CreditsDisplay.cs @@ -34,7 +34,7 @@ internal static class CreditsDisplay "Sorcerous Field Manipulator, Sorcerous Forceblade, Sorcerous Scion, Sorcerous Sorr-Akkath, Sorcerous Spellblade, " + "Way of Discordance, Way of Shadow, Way of Storm Soul, Way of Weal and Woe, Way of Zen Archery, " + "Wizard Bladesinger, Wizard Deadmaster, Wizard War Magic, " + - "Lighting and Obscurement, Level 20, Multiclass"), + "Lighting and Obscurement, Variant Spell Rules, Level 20, Multiclass"), ("HiddenHax", "quality assurance, SFX, sprites, homebrew design [" + @@ -54,6 +54,7 @@ internal static class CreditsDisplay "Innovation Armor, Innovation Grenadier, Innovation Weapon, Martial Tactician, Patron Elementalist, Patron Soulblade, Artificer"), ("ImpPhil", "api, builders, infrastructure, gameplay, quality of life, rules"), + ("ChrisJohnDigital", "feats, fighting styles, items & crafting, Martial Eldritch Knight, Wizard Arcane Fighter, Wizard Spellmaster"), @@ -86,10 +87,13 @@ internal static class CreditsDisplay ("Vess", "homebrew design [Innovation Vitriolist]"), ("Narria", "modKit, Party Editor"), + ("Artyoan", "pre-gen heroes portraits, sample portraits"), ("Thaladar", "QA, monster portraits, sample portraits"), ("Zeke", "sample portraits"), ("Digital Primus", "sample portraits"), + ("frost", "sample portraits"), + ("nat", "sample portraits"), ("team-waldo", "korean translations"), ("Dovel", "russian translations"), diff --git a/SolastaUnfinishedBusiness/Displays/GameUiDisplay.cs b/SolastaUnfinishedBusiness/Displays/GameUiDisplay.cs index 3a7dd469a7..483a540356 100644 --- a/SolastaUnfinishedBusiness/Displays/GameUiDisplay.cs +++ b/SolastaUnfinishedBusiness/Displays/GameUiDisplay.cs @@ -296,6 +296,12 @@ internal static void DisplayGameUi() Main.Settings.DontFollowMargin = intValue; } + toggle = Main.Settings.NeverMoveCameraOnEnemyTurn; + if (UI.Toggle(Gui.Localize("ModUi/&NeverMoveCameraOnEnemyTurn"), ref toggle, UI.AutoWidth())) + { + Main.Settings.NeverMoveCameraOnEnemyTurn = toggle; + } + UI.Label(); } @@ -362,6 +368,27 @@ internal static void DisplayGameUi() #endregion + #region Camera + + UI.Label(); + UI.Label(Gui.Localize("ModUi/&Camera")); + UI.Label(); + + toggle = Main.Settings.EnableElevationCameraToStayAtPosition; + if (UI.Toggle(Gui.Localize("ModUi/&EnableElevationCameraToStayAtPosition"), ref toggle, UI.AutoWidth())) + { + Main.Settings.EnableElevationCameraToStayAtPosition = toggle; + } + + intValue = Main.Settings.SetElevationCameraMaxHeightBy; + if (UI.Slider(Gui.Localize("ModUi/&SetElevationCameraMaxHeightBy"), ref intValue, 0, 24, + 4, "cells", UI.AutoWidth())) + { + Main.Settings.SetElevationCameraMaxHeightBy = intValue; + } + + #endregion + #region Formation UI.Label(); diff --git a/SolastaUnfinishedBusiness/Displays/RulesDisplay.cs b/SolastaUnfinishedBusiness/Displays/RulesDisplay.cs index 46f00893bf..4846693491 100644 --- a/SolastaUnfinishedBusiness/Displays/RulesDisplay.cs +++ b/SolastaUnfinishedBusiness/Displays/RulesDisplay.cs @@ -78,12 +78,6 @@ internal static void DisplayRules() SrdAndHouseRulesContext.SwitchOfficialFoodRationsWeight(); } - toggle = Main.Settings.UseOfficialSmallRacesDisWithHeavyWeapons; - if (UI.Toggle(Gui.Localize("ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons"), ref toggle, UI.AutoWidth())) - { - Main.Settings.UseOfficialSmallRacesDisWithHeavyWeapons = toggle; - } - toggle = Main.Settings.UseOfficialLightingObscurementAndVisionRules; if (UI.Toggle(Gui.Localize("ModUi/&UseOfficialObscurementRules"), ref toggle, UI.AutoWidth())) { @@ -96,11 +90,10 @@ internal static void DisplayRules() LightingAndObscurementContext.SwitchOfficialObscurementRules(); } - UI.Label(); - UI.Label(); - if (Main.Settings.UseOfficialLightingObscurementAndVisionRules) { + UI.Label(Gui.Localize("ModUi/&UseOfficialObscurementRulesHelp")); + toggle = Main.Settings.OfficialObscurementRulesInvisibleCreaturesCanBeTarget; if (UI.Toggle(Gui.Localize("ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget"), ref toggle, UI.AutoWidth())) @@ -137,6 +130,29 @@ internal static void DisplayRules() Main.Settings.OfficialObscurementRulesTweakMonsters = toggle; LightingAndObscurementContext.SwitchMonstersOnObscurementRules(); } + + if (Main.Settings.OfficialObscurementRulesTweakMonsters) + { + UI.Label(Gui.Localize("ModUi/&OfficialObscurementRulesTweakMonstersHelp")); + } + } + + toggle = Main.Settings.UseOfficialSmallRacesDisWithHeavyWeapons; + if (UI.Toggle(Gui.Localize("ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons"), ref toggle, UI.AutoWidth())) + { + Main.Settings.UseOfficialSmallRacesDisWithHeavyWeapons = toggle; + } + + toggle = Main.Settings.UseAlternateSpellPointsSystem; + if (UI.Toggle(Gui.Localize("ModUi/&UseAlternateSpellPointsSystem"), ref toggle, UI.AutoWidth())) + { + Main.Settings.UseAlternateSpellPointsSystem = toggle; + SpellPointsContext.SwitchFeatureDefinitionCastSpellSlots(); + } + + if (Main.Settings.UseAlternateSpellPointsSystem) + { + UI.Label(Gui.Localize("ModUi/&UseAlternateSpellPointsSystemHelp")); } UI.Label(); diff --git a/SolastaUnfinishedBusiness/Displays/_ModUi.cs b/SolastaUnfinishedBusiness/Displays/_ModUi.cs index 65aa68988e..29d7244fb7 100644 --- a/SolastaUnfinishedBusiness/Displays/_ModUi.cs +++ b/SolastaUnfinishedBusiness/Displays/_ModUi.cs @@ -249,6 +249,7 @@ internal static class ModUi "ShadowBlade", "ShadowOfMoil", "Shapechange", + "SickeningRadiance", "SkinOfRetribution", "SorcerousDivineHeart", "SnillocSnowballStorm", diff --git a/SolastaUnfinishedBusiness/Feats/ClassFeats.cs b/SolastaUnfinishedBusiness/Feats/ClassFeats.cs index 24da9ce455..acecc28534 100644 --- a/SolastaUnfinishedBusiness/Feats/ClassFeats.cs +++ b/SolastaUnfinishedBusiness/Feats/ClassFeats.cs @@ -505,8 +505,10 @@ internal sealed class ActionFinishedByMeFeatAwakenTheBeastWithin : IActionFinish public IEnumerator OnActionFinishedByMe(CharacterAction action) { + var actingCharacter = action.ActingCharacter; + if (action is not CharacterActionRevertShape || - action.ActingCharacter.RulesetCharacter is not RulesetCharacterMonster rulesetCharacterMonster) + actingCharacter.RulesetCharacter is not RulesetCharacterMonster rulesetCharacterMonster) { yield break; } diff --git a/SolastaUnfinishedBusiness/Feats/MeleeCombatFeats.cs b/SolastaUnfinishedBusiness/Feats/MeleeCombatFeats.cs index f9f391e1a8..c52dc7ea66 100644 --- a/SolastaUnfinishedBusiness/Feats/MeleeCombatFeats.cs +++ b/SolastaUnfinishedBusiness/Feats/MeleeCombatFeats.cs @@ -46,9 +46,6 @@ internal static class MeleeCombatFeats internal static void CreateFeats([NotNull] List feats) { - // kept for backward compatibility - _ = BuildHammerThePoint(); - var featAlwaysReady = BuildAlwaysReady(); var featBladeMastery = BuildBladeMastery(); var featCharger = BuildCharger(); @@ -832,89 +829,6 @@ public IEnumerator OnTryAlterOutcomeAttack( #endregion - #region Hammer the Point - - private static FeatDefinition BuildHammerThePoint() - { - const string Name = "FeatHammerThePoint"; - - var conditionHammerThePoint = ConditionDefinitionBuilder - .Create($"Condition{Name}HammerThePoint") - .SetGuiPresentationNoContent(true) - .SetSilent(Silent.WhenAddedOrRemoved) - .SetSpecialDuration(DurationType.Round, 0, TurnOccurenceType.EndOfSourceTurn) - .AllowMultipleInstances() - .AddToDB(); - - var additionalDamageHammerThePoint = FeatureDefinitionAdditionalDamageBuilder - .Create($"AdditionalDamage{Name}HammerThePoint") - .SetGuiPresentationNoContent(true) - .SetAttackModeOnly() - .AddConditionOperation(ConditionOperationDescription.ConditionOperation.Add, conditionHammerThePoint) - .AddToDB(); - - var featHammerThePoint = FeatDefinitionBuilder - .Create(Name) - .SetGuiPresentation(Category.Feat, hidden: true) - .SetFeatures(additionalDamageHammerThePoint) - .AddToDB(); - - additionalDamageHammerThePoint.AddCustomSubFeatures( - new PhysicalAttackInitiatedByMeFeatHammerThePoint(conditionHammerThePoint, featHammerThePoint)); - - return featHammerThePoint; - } - - private sealed class PhysicalAttackInitiatedByMeFeatHammerThePoint( - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - ConditionDefinition conditionHammerThePoint, - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - FeatDefinition featHammerThePoint) - : IPhysicalAttackInitiatedByMe - { - public IEnumerator OnPhysicalAttackInitiatedByMe( - GameLocationBattleManager battleManager, - CharacterAction action, - GameLocationCharacter attacker, - GameLocationCharacter defender, - ActionModifier attackModifier, - RulesetAttackMode attackMode) - { - var rulesetDefender = defender.RulesetActor; - - if (rulesetDefender is not { IsDeadOrDyingOrUnconscious: false }) - { - yield break; - } - - var attackedThisTurnCount = rulesetDefender.AllConditions - .Count(x => x.ConditionDefinition == conditionHammerThePoint); - - if (attackedThisTurnCount == 0) - { - yield break; - } - - var trendInfo = new TrendInfo( - attackedThisTurnCount, FeatureSourceType.Feat, featHammerThePoint.Name, featHammerThePoint); - - attackModifier.AttackRollModifier += attackedThisTurnCount; - attackModifier.AttacktoHitTrends.Add(trendInfo); - - var damage = attackMode?.EffectDescription.FindFirstDamageForm(); - - if (damage == null) - { - yield break; - } - - damage.BonusDamage += attackedThisTurnCount; - damage.DamageBonusTrends.Add(trendInfo); - } - } - - #endregion - #region Old Tactics internal static readonly FeatDefinition FeatOldTacticsStr = FeatDefinitionBuilder diff --git a/SolastaUnfinishedBusiness/Feats/OtherFeats.cs b/SolastaUnfinishedBusiness/Feats/OtherFeats.cs index dd41ae12fa..94897b9710 100644 --- a/SolastaUnfinishedBusiness/Feats/OtherFeats.cs +++ b/SolastaUnfinishedBusiness/Feats/OtherFeats.cs @@ -12,7 +12,6 @@ using SolastaUnfinishedBusiness.Builders.Features; using SolastaUnfinishedBusiness.Classes; using SolastaUnfinishedBusiness.CustomUI; -using SolastaUnfinishedBusiness.FightingStyles; using SolastaUnfinishedBusiness.Interfaces; using SolastaUnfinishedBusiness.Models; using SolastaUnfinishedBusiness.Properties; @@ -30,6 +29,8 @@ using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionFeatureSets; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionPowers; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.SpellDefinitions; +using static SolastaUnfinishedBusiness.Api.DatabaseHelper.WeaponTypeDefinitions; +using static SolastaUnfinishedBusiness.Models.CustomWeaponsContext; namespace SolastaUnfinishedBusiness.Feats; @@ -43,9 +44,6 @@ internal static class OtherFeats internal static void CreateFeats([NotNull] List feats) { - // kept for backward compatibility - _ = BuildAstralArms(); - var featAcrobat = BuildAcrobat(); var featArcaneArcherAdept = BuildArcaneArcherAdept(); var featDungeonDelver = BuildDungeonDelver(); @@ -76,14 +74,11 @@ internal static void CreateFeats([NotNull] List feats) var elementalMasterGroup = BuildElementalMaster(feats); var weaponMasterGroup = BuildWeaponMaster(feats); - // building this way to keep backward compatibility - _ = BuildFeatFromFightingStyle(MonkShieldExpert.ShieldExpertName); - - var featMerciless = BuildFeatFromFightingStyle(Merciless.MercilessName); - var featPolearmExpert = BuildFeatFromFightingStyle(PolearmExpert.PolearmExpertName); - var featRopeIpUp = BuildFeatFromFightingStyle(RopeItUp.RopeItUpName); - var featSentinel = BuildFeatFromFightingStyle(Sentinel.SentinelName); - var featShieldExpert = BuildFeatFromFightingStyle(ShieldExpert.ShieldExpertName); + var featMerciless = BuildMerciless(); + var featPolearmExpert = BuildPolearmExpert(); + var featRopeIpUp = BuildRopeItUp(); + var featSentinel = FeatSentinel; + var featShieldExpert = BuildShieldExpert(); feats.AddRange( featAcrobat, @@ -204,28 +199,6 @@ private static FeatDefinitionWithPrerequisites BuildArcaneArcherAdept() #endregion - #region Astral Arms - - private static FeatDefinition BuildAstralArms() - { - return FeatDefinitionBuilder - .Create("FeatAstralArms") - .SetGuiPresentation(Category.Feat, hidden: true) - .SetFeatures( - AttributeModifierCreed_Of_Maraike) - .AddCustomSubFeatures( - new CanMakeAoOOnReachEntered { AllowRange = false, WeaponValidator = ValidWeapon }, - new IncreaseWeaponReach(1, ValidWeapon)) - .AddToDB(); - - static bool ValidWeapon(RulesetAttackMode attackMode, RulesetItem item, RulesetCharacter character) - { - return ValidatorsWeapon.IsUnarmed(attackMode); - } - } - - #endregion - #region Eldritch Adept private static FeatDefinitionWithPrerequisites BuildEldritchAdept() @@ -512,9 +485,9 @@ private static FeatDefinition BuildWeaponMaster(List feats) var simpleOrMartialWeapons = DatabaseRepository.GetDatabase() .Where(x => - x != WeaponTypeDefinitions.UnarmedStrikeType && - x != CustomWeaponsContext.ThunderGauntletType && - x != CustomWeaponsContext.LightningLauncherType); + x != UnarmedStrikeType && + x != ThunderGauntletType && + x != LightningLauncherType); foreach (var weaponTypeDefinition in simpleOrMartialWeapons) { @@ -530,7 +503,7 @@ private static FeatDefinition BuildWeaponMaster(List feats) .SetGuiPresentation( weaponTypeDefinition.GuiPresentation.Title, weaponTypeDefinition.GuiPresentation.Description, - CustomWeaponsContext.GetStandardWeaponOfType(weaponTypeDefinition.Name)) + GetStandardWeaponOfType(weaponTypeDefinition.Name)) .SetPoolType(InvocationPoolTypeCustom.Pools.WeaponMasterChoice) .SetGrantedFeature(featureMonkWeaponSpecialization) .AddCustomSubFeatures(ModifyInvocationVisibility.Marker) @@ -565,6 +538,55 @@ private static FeatDefinition BuildWeaponMaster(List feats) #endregion + #region Shield Expert + + private static FeatDefinition BuildShieldExpert() + { + const string ShieldExpertName = "ShieldExpert"; + + return FeatDefinitionBuilder + .Create($"Feat{ShieldExpertName}") + .SetGuiPresentation(ShieldExpertName, Category.FightingStyle) + .SetFeatures( + FeatureDefinitionBuilder + .Create("AddExtraAttackShieldExpert") + .SetGuiPresentationNoContent(true) + .AddCustomSubFeatures(new AddBonusShieldAttack()) + .AddToDB()) + .AddToDB(); + } + + #endregion + + #region Polearm Expert + + private static FeatDefinition BuildPolearmExpert() + { + const string PolearmExpertName = "PolearmExpert"; + + return FeatDefinitionBuilder + .Create($"Feat{PolearmExpertName}") + .SetGuiPresentation(PolearmExpertName, Category.FightingStyle) + .SetFeatures( + FeatureDefinitionBuilder + .Create("FeaturePolearm") + .SetGuiPresentationNoContent(true) + .AddCustomSubFeatures( + new CanMakeAoOOnReachEntered + { + WeaponValidator = (mode, _, _) => ValidatorsWeapon.IsPolearmType(mode) + }, + new AddPolearmFollowUpAttack(QuarterstaffType), + new AddPolearmFollowUpAttack(SpearType), + new AddPolearmFollowUpAttack(HalberdWeaponType), + new AddPolearmFollowUpAttack(PikeWeaponType), + new AddPolearmFollowUpAttack(LongMaceWeaponType)) + .AddToDB()) + .AddToDB(); + } + + #endregion + #region Stealthy private const string FeatStealthyName = "FeatStealthy"; @@ -1245,9 +1267,27 @@ private static FeatDefinition BuildAthlete(List feats) .SetGuiPresentationNoContent(true) .SetConditionAffinityType(ConditionAffinityType.Immunity) .SetConditionType(ConditionDefinitions.ConditionSurprised) + .AddCustomSubFeatures(new OnCharacterBattleStartedFeatAlert()) .AddToDB()) .AddToDB(); + private sealed class OnCharacterBattleStartedFeatAlert : ICharacterBattleStartedListener + { + public void OnCharacterBattleStarted(GameLocationCharacter locationCharacter, bool surprise) + { + var rulesetCharacter = locationCharacter.RulesetCharacter; + + if (!surprise || + !rulesetCharacter.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagCombat, ConditionSurprised, out var activeCondition)) + { + return; + } + + rulesetCharacter.RemoveCondition(activeCondition); + } + } + #endregion #region Chef @@ -1511,38 +1551,15 @@ public bool CanModifyRoll( #region Fighting Initiate - private static FeatDefinitionWithPrerequisites BuildFeatFromFightingStyle(string fightingStyleName) - { - var db = DatabaseRepository.GetDatabase(); - var feat = BuildFightingStyleFeat(db.GetElement(fightingStyleName)); - - feat.Validators.Clear(); - feat.familyTag = string.Empty; - feat.hasFamilyTag = false; - - return feat; - } - private static FeatDefinition BuildFightingInitiate() { - var fightingStyleFeats = DatabaseRepository - .GetDatabase() - .Where(x => - x.ContentPack == CeContentPackContext.CeContentPack && - !FightingStyleContext.DemotedFightingStyles.Contains(x.Name)) - .Select(BuildFightingStyleFeat) - .OfType() - .ToArray(); - - var vanillaFightingStyleFeats = DatabaseRepository + GroupFeats.FeatGroupFightingStyle.AddFeats( + DatabaseRepository .GetDatabase() - .Where(x => x.ContentPack != CeContentPackContext.CeContentPack) + .Where(x => !FightingStyleContext.DemotedFightingStyles.Contains(x.Name)) .Select(BuildFightingStyleFeat) .OfType() - .ToArray(); - - GroupFeats.FeatGroupFightingStyle.AddFeats(fightingStyleFeats); - GroupFeats.FeatGroupFightingStyle.AddFeats(vanillaFightingStyleFeats); + .ToArray()); return GroupFeats.FeatGroupFightingStyle; } @@ -2867,4 +2884,269 @@ private WarCasterMarker() } #endregion + + #region Merciless + + private const string MercilessName = "Merciless"; + + private static FeatDefinition BuildMerciless() + { + var powerFightingStyleMerciless = FeatureDefinitionPowerBuilder + .Create($"PowerFightingStyle{MercilessName}") + .SetGuiPresentation(MercilessName, Category.FightingStyle, hidden: true) + .SetUsesFixed(ActivationTime.NoCost) + .SetShowCasting(false) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.Enemy, RangeType.Touch, 0, TargetType.IndividualsUnique) + .SetDurationData(DurationType.Round, 1, TurnOccurenceType.EndOfSourceTurn) + .SetSavingThrowData( + false, + AttributeDefinitions.Wisdom, + true, + EffectDifficultyClassComputation.AbilityScoreAndProficiency, + AttributeDefinitions.Strength) + .SetEffectForms( + EffectFormBuilder + .Create() + .SetConditionForm(ConditionDefinitions.ConditionFrightened, + ConditionForm.ConditionOperation.Add) + .HasSavingThrow(EffectSavingThrowType.Negates) + .Build()) + .Build()) + .AddToDB(); + + return FeatDefinitionBuilder + .Create($"Feat{MercilessName}") + .SetGuiPresentation(MercilessName, Category.FightingStyle) + .SetFeatures( + powerFightingStyleMerciless, + FeatureDefinitionBuilder + .Create($"TargetReducedToZeroHpFightingStyle{MercilessName}") + .SetGuiPresentationNoContent(true) + .AddCustomSubFeatures(new OnReducedToZeroHpByMeMerciless(powerFightingStyleMerciless)) + .AddToDB()) + .AddToDB(); + } + + + private sealed class OnReducedToZeroHpByMeMerciless(FeatureDefinitionPower powerMerciless) + : IOnReducedToZeroHpByMe, IPhysicalAttackBeforeHitConfirmedOnEnemy, IPhysicalAttackFinishedByMe + { + public IEnumerator HandleReducedToZeroHpByMe( + GameLocationCharacter attacker, + GameLocationCharacter downedCreature, + RulesetAttackMode attackMode, + RulesetEffect activeEffect) + { + if (Gui.Battle == null) + { + yield break; + } + + if (!ValidatorsWeapon.IsMelee(attackMode) && !ValidatorsWeapon.IsUnarmed(attackMode)) + { + yield break; + } + + var rulesetAttacker = attacker.RulesetCharacter; + var proficiencyBonus = rulesetAttacker.TryGetAttributeValue(AttributeDefinitions.ProficiencyBonus); + var distance = attacker.UsedSpecialFeatures.TryGetValue(MercilessName, out var value) && value == 1 + ? proficiencyBonus + : (proficiencyBonus + 1) / 2; + + var implementationManager = + ServiceRepository.GetService() as RulesetImplementationManager; + + var usablePower = PowerProvider.Get(powerMerciless, rulesetAttacker); + var targets = Gui.Battle.GetContenders( + downedCreature, attacker, isOppositeSide: false, hasToPerceivePerceiver: true, withinRange: distance); + var actionModifiers = new List(); + + for (var i = 0; i < targets.Count; i++) + { + actionModifiers.Add(new ActionModifier()); + } + + var actionParams = new CharacterActionParams(attacker, ActionDefinitions.Id.PowerNoCost) + { + ActionModifiers = actionModifiers, + RulesetEffect = implementationManager + .MyInstantiateEffectPower(rulesetAttacker, usablePower, false), + UsablePower = usablePower, + targetCharacters = targets + }; + + // must enqueue actions whenever within an attack workflow otherwise game won't consume attack + ServiceRepository.GetService()? + .ExecuteAction(actionParams, null, true); + } + + public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnEnemy( + GameLocationBattleManager battleManager, + GameLocationCharacter attacker, + GameLocationCharacter defender, + ActionModifier actionModifier, + RulesetAttackMode attackMode, + bool rangedAttack, + AdvantageType advantageType, + List actualEffectForms, + bool firstTarget, + bool criticalHit) + { + attacker.UsedSpecialFeatures.TryAdd(MercilessName, criticalHit ? 1 : 0); + + yield break; + } + + public IEnumerator OnPhysicalAttackFinishedByMe( + GameLocationBattleManager battleManager, + CharacterAction action, + GameLocationCharacter attacker, + GameLocationCharacter defender, + RulesetAttackMode attackMode, + RollOutcome rollOutcome, + int damageAmount) + { + attacker.UsedSpecialFeatures.Remove(MercilessName); + + yield break; + } + } + + #endregion + + #region Rope it Up + + private static FeatDefinition BuildRopeItUp() + { + const string RopeItUpName = "RopeItUp"; + + var featureRopeItUp = FeatureDefinitionAttributeModifierBuilder + .Create($"AttributeModifier{RopeItUpName}") + .SetGuiPresentation(RopeItUpName, Category.FightingStyle) + .AddCustomSubFeatures(ReturningWeapon.AlwaysValid, new ModifyWeaponAttackModeRopeItUp()) + .AddToDB(); + + return FeatDefinitionBuilder + .Create($"Feat{RopeItUpName}") + .SetGuiPresentation(RopeItUpName, Category.FightingStyle) + .SetFeatures(featureRopeItUp) + .AddToDB(); + } + + private sealed class ModifyWeaponAttackModeRopeItUp : IModifyWeaponAttackMode + { + public void ModifyAttackMode(RulesetCharacter character, RulesetAttackMode attackMode) + { + if (attackMode?.thrown != true) + { + return; + } + + attackMode.closeRange += 2; + attackMode.maxRange += 4; + } + } + + #endregion + + #region Sentinel + + private const string SentinelName = "Sentinel"; + + internal static FeatDefinition FeatSentinel { get; } = FeatDefinitionBuilder + .Create($"Feat{SentinelName}") + .SetGuiPresentation(SentinelName, Category.FightingStyle) + .SetFeatures( + FeatureDefinitionBuilder + .Create("OnAttackHitEffectFeatSentinel") + .SetGuiPresentationNoContent(true) + .AddCustomSubFeatures( + AttacksOfOpportunity.IgnoreDisengage, + AttacksOfOpportunity.SentinelFeatMarker, + new PhysicalAttackFinishedByMeFeatSentinel( + CustomConditionsContext.StopMovement, + ConditionDefinitionBuilder + .Create("ConditionPreventAttackAtReach") + .SetGuiPresentationNoContent(true) + .SetSilent(Silent.WhenAddedOrRemoved) + .SetFeatures( + // this is a hack to ensure game engine won't execute the attack even at reach + // given that game AI will only run an enemy towards an ally with an attack intention + // this should be good enough as enemy won't run next to other allies + FeatureDefinitionActionAffinityBuilder + .Create($"ActionAffinity{SentinelName}StopMovement") + .SetGuiPresentationNoContent(true) + .SetForbiddenActions( + ActionDefinitions.Id.Shove, + ActionDefinitions.Id.ShoveBonus, + ActionDefinitions.Id.AttackMain, + ActionDefinitions.Id.AttackOff, + ActionDefinitions.Id.AttackFree) + .AddToDB()) + .AddToDB())) + .AddToDB()) + .AddToDB(); + + private sealed class PhysicalAttackFinishedByMeFeatSentinel( + ConditionDefinition conditionSentinelStopMovement, + ConditionDefinition conditionPreventAttackAtReach) : IPhysicalAttackBeforeHitConfirmedOnEnemy + { + public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnEnemy( + GameLocationBattleManager battleManager, + GameLocationCharacter attacker, + GameLocationCharacter defender, + ActionModifier actionModifier, + RulesetAttackMode attackMode, + bool rangedAttack, + AdvantageType advantageType, + List actualEffectForms, + bool firstTarget, + bool criticalHit) + { + if (attackMode.ActionType != ActionDefinitions.ActionType.Reaction || + attackMode.AttackTags.Contains(AttacksOfOpportunity.NotAoOTag)) + { + yield break; + } + + var rulesetAttacker = attacker.RulesetCharacter; + var rulesetDefender = defender.RulesetActor; + + rulesetDefender.InflictCondition( + conditionSentinelStopMovement.Name, + DurationType.Round, + 0, + TurnOccurenceType.EndOfSourceTurn, + AttributeDefinitions.TagEffect, + rulesetAttacker.guid, + rulesetAttacker.CurrentFaction.Name, + 1, + conditionSentinelStopMovement.Name, + 0, + 0, + 0); + + if (attackMode.Reach) + { + rulesetDefender.InflictCondition( + conditionPreventAttackAtReach.Name, + DurationType.Round, + 0, + TurnOccurenceType.EndOfTurn, + AttributeDefinitions.TagEffect, + rulesetAttacker.guid, + rulesetAttacker.CurrentFaction.Name, + 1, + conditionPreventAttackAtReach.Name, + 0, + 0, + 0); + } + } + } + + #endregion } diff --git a/SolastaUnfinishedBusiness/Feats/RangedCombatFeats.cs b/SolastaUnfinishedBusiness/Feats/RangedCombatFeats.cs index 8042b2a9f4..b665adf06d 100644 --- a/SolastaUnfinishedBusiness/Feats/RangedCombatFeats.cs +++ b/SolastaUnfinishedBusiness/Feats/RangedCombatFeats.cs @@ -12,10 +12,8 @@ using SolastaUnfinishedBusiness.Properties; using SolastaUnfinishedBusiness.Subclasses; using SolastaUnfinishedBusiness.Validators; -using UnityEngine.AddressableAssets; using static RuleDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.WeaponTypeDefinitions; -using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionMovementAffinitys; namespace SolastaUnfinishedBusiness.Feats; @@ -23,9 +21,6 @@ internal static class RangedCombatFeats { internal static void CreateFeats([NotNull] List feats) { - // kept for backward compatibility - _ = BuildSteadyAim(); - var featBowMastery = BuildBowMastery(); var featCrossbowMastery = BuildCrossbowMastery(); var featDeadEye = BuildDeadEye(); @@ -268,73 +263,4 @@ public void ModifyAttackMode(RulesetCharacter character, [CanBeNull] RulesetAtta featDefinition)); } } - - #region Steady Aim - - private const string FeatSteadyAim = "FeatSteadyAim"; - - internal static readonly FeatureDefinitionPower PowerFeatSteadyAim = FeatureDefinitionPowerBuilder - .Create($"Power{FeatSteadyAim}") - .SetGuiPresentation(Category.Feature, Sprites.GetSprite(FeatSteadyAim, Resources.PowerSteadyAim, 256, 128)) - .SetUsesFixed(ActivationTime.BonusAction) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetDurationData(DurationType.Round) - .SetTargetingData(Side.Ally, RangeType.Self, 0, TargetType.Self) - .SetEffectForms( - EffectFormBuilder - .Create() - .SetConditionForm( - ConditionDefinitionBuilder - .Create($"Condition{FeatSteadyAim}Advantage") - .SetGuiPresentation(Category.Condition, - DatabaseHelper.ConditionDefinitions.ConditionGuided) - .SetPossessive() - .SetSilent(Silent.WhenAddedOrRemoved) - .SetSpecialInterruptions(ConditionInterruption.Attacks) - .AddFeatures( - FeatureDefinitionCombatAffinityBuilder - .Create($"CombatAffinity{FeatSteadyAim}") - .SetGuiPresentation(FeatSteadyAim, Category.Feat, Gui.NoLocalization) - .SetMyAttackAdvantage(AdvantageType.Advantage) - .AddToDB()) - .AddToDB(), - ConditionForm.ConditionOperation.Add) - .Build(), - EffectFormBuilder - .Create() - .SetConditionForm( - ConditionDefinitionBuilder - .Create($"Condition{FeatSteadyAim}Restrained") - .SetGuiPresentation(Category.Condition) - .SetSilent(Silent.WhenAddedOrRemoved) - .AddFeatures(MovementAffinityConditionRestrained) - .AddToDB(), - ConditionForm.ConditionOperation.Add) - .Build()) - .SetParticleEffectParameters(DatabaseHelper.FeatureDefinitionPowers.PowerFunctionWandFearCommand) - .SetImpactEffectParameters(new AssetReference()) - .Build()) - .AddCustomSubFeatures( - new ValidatorsValidatePowerUse(character => - { - var gameLocationCharacter = GameLocationCharacter.GetFromActor(character); - - return gameLocationCharacter == null || gameLocationCharacter.UsedTacticalMoves == 0; - })) - .AddToDB(); - - private static FeatDefinition BuildSteadyAim() - { - return FeatDefinitionBuilder - .Create(FeatSteadyAim) - .SetGuiPresentation(Category.Feat, hidden: true) - .SetFeatures( - DatabaseHelper.FeatureDefinitionAttributeModifiers.AttributeModifierCreed_Of_Misaye, - PowerFeatSteadyAim) - .AddToDB(); - } - - #endregion } diff --git a/SolastaUnfinishedBusiness/FightingStyles/Interception.cs b/SolastaUnfinishedBusiness/FightingStyles/Interception.cs index 6316bf236b..523fd4f1f1 100644 --- a/SolastaUnfinishedBusiness/FightingStyles/Interception.cs +++ b/SolastaUnfinishedBusiness/FightingStyles/Interception.cs @@ -1,7 +1,6 @@ using System.Collections; using System.Collections.Generic; using System.Linq; -using SolastaUnfinishedBusiness.Api; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Api.LanguageExtensions; using SolastaUnfinishedBusiness.Behaviors; @@ -10,6 +9,7 @@ using SolastaUnfinishedBusiness.CustomUI; using SolastaUnfinishedBusiness.Interfaces; using SolastaUnfinishedBusiness.Models; +using SolastaUnfinishedBusiness.Properties; using SolastaUnfinishedBusiness.Validators; using static RuleDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionFightingStyleChoices; @@ -22,7 +22,7 @@ internal sealed class Interception : AbstractFightingStyle internal override FightingStyleDefinition FightingStyle { get; } = FightingStyleBuilder .Create(Name) - .SetGuiPresentation(Category.FightingStyle, DatabaseHelper.FightingStyleDefinitions.Defense) + .SetGuiPresentation(Category.FightingStyle, Sprites.GetSprite(Name, Resources.Interception, 256)) .SetFeatures( FeatureDefinitionPowerBuilder .Create($"Power{Name}") diff --git a/SolastaUnfinishedBusiness/FightingStyles/Merciless.cs b/SolastaUnfinishedBusiness/FightingStyles/Merciless.cs deleted file mode 100644 index 608b373211..0000000000 --- a/SolastaUnfinishedBusiness/FightingStyles/Merciless.cs +++ /dev/null @@ -1,154 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using SolastaUnfinishedBusiness.Api.GameExtensions; -using SolastaUnfinishedBusiness.Behaviors; -using SolastaUnfinishedBusiness.Builders; -using SolastaUnfinishedBusiness.Builders.Features; -using SolastaUnfinishedBusiness.CustomUI; -using SolastaUnfinishedBusiness.Interfaces; -using SolastaUnfinishedBusiness.Models; -using SolastaUnfinishedBusiness.Properties; -using SolastaUnfinishedBusiness.Validators; -using static RuleDefinitions; -using static SolastaUnfinishedBusiness.Api.DatabaseHelper; -using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionFightingStyleChoices; - -namespace SolastaUnfinishedBusiness.FightingStyles; - -internal sealed class Merciless : AbstractFightingStyle -{ - internal const string MercilessName = "Merciless"; - - private static readonly FeatureDefinitionPower PowerFightingStyleMerciless = FeatureDefinitionPowerBuilder - .Create($"PowerFightingStyle{MercilessName}") - .SetGuiPresentation(MercilessName, Category.FightingStyle, hidden: true) - .SetUsesFixed(ActivationTime.NoCost) - .SetShowCasting(false) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetTargetingData(Side.Enemy, RangeType.Touch, 0, TargetType.IndividualsUnique) - .SetDurationData(DurationType.Round, 1, TurnOccurenceType.EndOfSourceTurn) - .SetSavingThrowData( - false, - AttributeDefinitions.Wisdom, - true, - EffectDifficultyClassComputation.AbilityScoreAndProficiency, - AttributeDefinitions.Strength) - .SetEffectForms( - EffectFormBuilder - .Create() - .SetConditionForm(ConditionDefinitions.ConditionFrightened, - ConditionForm.ConditionOperation.Add) - .HasSavingThrow(EffectSavingThrowType.Negates) - .Build()) - .Build()) - .AddToDB(); - - internal override FightingStyleDefinition FightingStyle { get; } = FightingStyleBuilder - .Create(MercilessName) - .SetGuiPresentation(Category.FightingStyle, Sprites.GetSprite(MercilessName, Resources.Merciless, 256)) - .SetFeatures( - PowerFightingStyleMerciless, - FeatureDefinitionBuilder - .Create($"TargetReducedToZeroHpFightingStyle{MercilessName}") - .SetGuiPresentationNoContent(true) - .AddCustomSubFeatures(new OnReducedToZeroHpByMeMerciless()) - .AddToDB()) - .AddToDB(); - - internal override List FightingStyleChoice => - [ - CharacterContext.FightingStyleChoiceBarbarian, - CharacterContext.FightingStyleChoiceMonk, - CharacterContext.FightingStyleChoiceRogue, - FightingStyleChampionAdditional, - FightingStyleFighter, - FightingStylePaladin, - FightingStyleRanger - ]; - - private sealed class OnReducedToZeroHpByMeMerciless - : IOnReducedToZeroHpByMe, IPhysicalAttackBeforeHitConfirmedOnEnemy, IPhysicalAttackFinishedByMe - { - public IEnumerator HandleReducedToZeroHpByMe( - GameLocationCharacter attacker, - GameLocationCharacter downedCreature, - RulesetAttackMode attackMode, - RulesetEffect activeEffect) - { - if (Gui.Battle == null) - { - yield break; - } - - if (!ValidatorsWeapon.IsMelee(attackMode) && !ValidatorsWeapon.IsUnarmed(attackMode)) - { - yield break; - } - - var rulesetAttacker = attacker.RulesetCharacter; - var proficiencyBonus = rulesetAttacker.TryGetAttributeValue(AttributeDefinitions.ProficiencyBonus); - var distance = attacker.UsedSpecialFeatures.TryGetValue(MercilessName, out var value) && value == 1 - ? proficiencyBonus - : (proficiencyBonus + 1) / 2; - - var implementationManager = - ServiceRepository.GetService() as RulesetImplementationManager; - - var usablePower = PowerProvider.Get(PowerFightingStyleMerciless, rulesetAttacker); - var targets = Gui.Battle.GetContenders( - downedCreature, attacker, isOppositeSide: false, hasToPerceivePerceiver: true, withinRange: distance); - var actionModifiers = new List(); - - for (var i = 0; i < targets.Count; i++) - { - actionModifiers.Add(new ActionModifier()); - } - - var actionParams = new CharacterActionParams(attacker, ActionDefinitions.Id.PowerNoCost) - { - ActionModifiers = actionModifiers, - RulesetEffect = implementationManager - .MyInstantiateEffectPower(rulesetAttacker, usablePower, false), - UsablePower = usablePower, - targetCharacters = targets - }; - - // must enqueue actions whenever within an attack workflow otherwise game won't consume attack - ServiceRepository.GetService()? - .ExecuteAction(actionParams, null, true); - } - - public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnEnemy( - GameLocationBattleManager battleManager, - GameLocationCharacter attacker, - GameLocationCharacter defender, - ActionModifier actionModifier, - RulesetAttackMode attackMode, - bool rangedAttack, - AdvantageType advantageType, - List actualEffectForms, - bool firstTarget, - bool criticalHit) - { - attacker.UsedSpecialFeatures.TryAdd(MercilessName, criticalHit ? 1 : 0); - - yield break; - } - - public IEnumerator OnPhysicalAttackFinishedByMe( - GameLocationBattleManager battleManager, - CharacterAction action, - GameLocationCharacter attacker, - GameLocationCharacter defender, - RulesetAttackMode attackMode, - RollOutcome rollOutcome, - int damageAmount) - { - attacker.UsedSpecialFeatures.Remove(MercilessName); - - yield break; - } - } -} diff --git a/SolastaUnfinishedBusiness/FightingStyles/MonkShieldExpert.cs b/SolastaUnfinishedBusiness/FightingStyles/MonkShieldExpert.cs deleted file mode 100644 index 94f40b9638..0000000000 --- a/SolastaUnfinishedBusiness/FightingStyles/MonkShieldExpert.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections.Generic; -using SolastaUnfinishedBusiness.Builders; -using SolastaUnfinishedBusiness.Builders.Features; -using SolastaUnfinishedBusiness.CustomUI; -using SolastaUnfinishedBusiness.Properties; - -namespace SolastaUnfinishedBusiness.FightingStyles; - -internal class MonkShieldExpert : AbstractFightingStyle -{ - internal const string ShieldExpertName = "MonkShieldExpert"; - - internal override FightingStyleDefinition FightingStyle { get; } = FightingStyleBuilder - .Create(ShieldExpertName) - .SetGuiPresentation(Category.FightingStyle, Sprites.GetSprite(ShieldExpertName, Resources.ShieldExpert, 256)) - .SetFeatures( - FeatureDefinitionProficiencyBuilder - .Create($"Proficiency{ShieldExpertName}") - .SetGuiPresentation("ShieldCategory", Category.Equipment) - .SetProficiencies(RuleDefinitions.ProficiencyType.Armor, EquipmentDefinitions.ShieldCategory) - .AddToDB()) - .AddToDB(); - - internal override List FightingStyleChoice => []; -} diff --git a/SolastaUnfinishedBusiness/FightingStyles/PolearmExpert.cs b/SolastaUnfinishedBusiness/FightingStyles/PolearmExpert.cs deleted file mode 100644 index ea8d8391c6..0000000000 --- a/SolastaUnfinishedBusiness/FightingStyles/PolearmExpert.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Collections.Generic; -using SolastaUnfinishedBusiness.Behaviors; -using SolastaUnfinishedBusiness.Behaviors.Specific; -using SolastaUnfinishedBusiness.Builders; -using SolastaUnfinishedBusiness.Builders.Features; -using SolastaUnfinishedBusiness.CustomUI; -using SolastaUnfinishedBusiness.Properties; -using SolastaUnfinishedBusiness.Validators; -using static SolastaUnfinishedBusiness.Api.DatabaseHelper.WeaponTypeDefinitions; -using static SolastaUnfinishedBusiness.Models.CustomWeaponsContext; - -namespace SolastaUnfinishedBusiness.FightingStyles; - -internal sealed class PolearmExpert : AbstractFightingStyle -{ - internal const string PolearmExpertName = "PolearmExpert"; - - internal override FightingStyleDefinition FightingStyle { get; } = FightingStyleBuilder - .Create(PolearmExpertName) - .SetGuiPresentation(Category.FightingStyle, Sprites.GetSprite(PolearmExpertName, Resources.PolearmExpert, 256)) - .SetFeatures( - FeatureDefinitionBuilder - .Create("FeaturePolearm") - .SetGuiPresentationNoContent(true) - .AddCustomSubFeatures( - new CanMakeAoOOnReachEntered - { - WeaponValidator = (mode, _, _) => ValidatorsWeapon.IsPolearmType(mode) - }, - new AddPolearmFollowUpAttack(QuarterstaffType), - new AddPolearmFollowUpAttack(SpearType), - new AddPolearmFollowUpAttack(HalberdWeaponType), - new AddPolearmFollowUpAttack(PikeWeaponType), - new AddPolearmFollowUpAttack(LongMaceWeaponType)) - .AddToDB()) - .AddToDB(); - - internal override List FightingStyleChoice => []; -} diff --git a/SolastaUnfinishedBusiness/FightingStyles/RopeItUp.cs b/SolastaUnfinishedBusiness/FightingStyles/RopeItUp.cs deleted file mode 100644 index 13f00737b7..0000000000 --- a/SolastaUnfinishedBusiness/FightingStyles/RopeItUp.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System.Collections.Generic; -using SolastaUnfinishedBusiness.Behaviors.Specific; -using SolastaUnfinishedBusiness.Builders; -using SolastaUnfinishedBusiness.Builders.Features; -using SolastaUnfinishedBusiness.CustomUI; -using SolastaUnfinishedBusiness.Interfaces; -using SolastaUnfinishedBusiness.Models; -using SolastaUnfinishedBusiness.Properties; -using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionFightingStyleChoices; - -namespace SolastaUnfinishedBusiness.FightingStyles; - -internal class RopeItUp : AbstractFightingStyle -{ - internal const string RopeItUpName = "RopeItUp"; - - private static readonly FeatureDefinition FeatureRopeItUp = FeatureDefinitionAttributeModifierBuilder - .Create($"AttributeModifier{RopeItUpName}") - .SetGuiPresentation(RopeItUpName, Category.FightingStyle) - .AddCustomSubFeatures(ReturningWeapon.AlwaysValid, new ModifyWeaponAttackModeRopeItUp()) - .AddToDB(); - - internal override FightingStyleDefinition FightingStyle { get; } = FightingStyleBuilder - .Create(RopeItUpName) - .SetGuiPresentation(Category.FightingStyle, Sprites.GetSprite(RopeItUpName, Resources.RopeItUp, 256)) - .SetFeatures(FeatureRopeItUp) - .AddToDB(); - - internal override List FightingStyleChoice => - [ - CharacterContext.FightingStyleChoiceBarbarian, - CharacterContext.FightingStyleChoiceMonk, - CharacterContext.FightingStyleChoiceRogue, - FightingStyleChampionAdditional, - FightingStyleFighter, - FightingStylePaladin, - FightingStyleRanger - ]; - - private sealed class ModifyWeaponAttackModeRopeItUp : IModifyWeaponAttackMode - { - public void ModifyAttackMode(RulesetCharacter character, RulesetAttackMode attackMode) - { - if (attackMode?.thrown != true) - { - return; - } - - attackMode.closeRange += 2; - attackMode.maxRange += 4; - } - } -} diff --git a/SolastaUnfinishedBusiness/FightingStyles/Sentinel.cs b/SolastaUnfinishedBusiness/FightingStyles/Sentinel.cs deleted file mode 100644 index 68144ca9f6..0000000000 --- a/SolastaUnfinishedBusiness/FightingStyles/Sentinel.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using SolastaUnfinishedBusiness.Behaviors.Specific; -using SolastaUnfinishedBusiness.Builders; -using SolastaUnfinishedBusiness.Builders.Features; -using SolastaUnfinishedBusiness.CustomUI; -using SolastaUnfinishedBusiness.Interfaces; -using SolastaUnfinishedBusiness.Models; -using SolastaUnfinishedBusiness.Properties; -using static RuleDefinitions; - -namespace SolastaUnfinishedBusiness.FightingStyles; - -internal sealed class Sentinel : AbstractFightingStyle -{ - internal const string SentinelName = "Sentinel"; - - internal override FightingStyleDefinition FightingStyle { get; } = FightingStyleBuilder - .Create(SentinelName) - .SetGuiPresentation(Category.FightingStyle, Sprites.GetSprite("Sentinel", Resources.Sentinel, 256)) - .SetFeatures( - FeatureDefinitionBuilder - .Create("OnAttackHitEffectFeatSentinel") - .SetGuiPresentationNoContent(true) - .AddCustomSubFeatures( - AttacksOfOpportunity.IgnoreDisengage, - AttacksOfOpportunity.SentinelFeatMarker, - new PhysicalAttackFinishedByMeFeatSentinel( - CustomConditionsContext.StopMovement, - ConditionDefinitionBuilder - .Create("ConditionPreventAttackAtReach") - .SetGuiPresentationNoContent(true) - .SetSilent(Silent.WhenAddedOrRemoved) - .SetFeatures( - // this is a hack to ensure game engine won't execute the attack even at reach - // given that game AI will only run an enemy towards an ally with an attack intention - // this should be good enough as enemy won't run next to other allies - FeatureDefinitionActionAffinityBuilder - .Create($"ActionAffinity{SentinelName}StopMovement") - .SetGuiPresentationNoContent(true) - .SetForbiddenActions( - ActionDefinitions.Id.Shove, - ActionDefinitions.Id.ShoveBonus, - ActionDefinitions.Id.AttackMain, - ActionDefinitions.Id.AttackOff, - ActionDefinitions.Id.AttackFree) - .AddToDB()) - .AddToDB())) - .AddToDB()) - .AddToDB(); - - internal override List FightingStyleChoice => []; - - private sealed class PhysicalAttackFinishedByMeFeatSentinel( - ConditionDefinition conditionSentinelStopMovement, - ConditionDefinition conditionPreventAttackAtReach) : IPhysicalAttackBeforeHitConfirmedOnEnemy - { - public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnEnemy( - GameLocationBattleManager battleManager, - GameLocationCharacter attacker, - GameLocationCharacter defender, - ActionModifier actionModifier, - RulesetAttackMode attackMode, - bool rangedAttack, - AdvantageType advantageType, - List actualEffectForms, - bool firstTarget, - bool criticalHit) - { - if (attackMode.ActionType != ActionDefinitions.ActionType.Reaction || - attackMode.AttackTags.Contains(AttacksOfOpportunity.NotAoOTag)) - { - yield break; - } - - var rulesetAttacker = attacker.RulesetCharacter; - var rulesetDefender = defender.RulesetActor; - - rulesetDefender.InflictCondition( - conditionSentinelStopMovement.Name, - DurationType.Round, - 0, - TurnOccurenceType.EndOfSourceTurn, - AttributeDefinitions.TagEffect, - rulesetAttacker.guid, - rulesetAttacker.CurrentFaction.Name, - 1, - conditionSentinelStopMovement.Name, - 0, - 0, - 0); - - if (attackMode.Reach) - { - rulesetDefender.InflictCondition( - conditionPreventAttackAtReach.Name, - DurationType.Round, - 0, - TurnOccurenceType.EndOfTurn, - AttributeDefinitions.TagEffect, - rulesetAttacker.guid, - rulesetAttacker.CurrentFaction.Name, - 1, - conditionPreventAttackAtReach.Name, - 0, - 0, - 0); - } - } - } -} diff --git a/SolastaUnfinishedBusiness/FightingStyles/ShieldExpert.cs b/SolastaUnfinishedBusiness/FightingStyles/ShieldExpert.cs deleted file mode 100644 index 9d65aecaeb..0000000000 --- a/SolastaUnfinishedBusiness/FightingStyles/ShieldExpert.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Collections.Generic; -using SolastaUnfinishedBusiness.Behaviors; -using SolastaUnfinishedBusiness.Builders; -using SolastaUnfinishedBusiness.Builders.Features; -using SolastaUnfinishedBusiness.CustomUI; -using SolastaUnfinishedBusiness.Models; -using SolastaUnfinishedBusiness.Properties; -using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionFightingStyleChoices; - -namespace SolastaUnfinishedBusiness.FightingStyles; - -internal class ShieldExpert : AbstractFightingStyle -{ - internal const string ShieldExpertName = "ShieldExpert"; - - internal override FightingStyleDefinition FightingStyle { get; } = FightingStyleBuilder - .Create(ShieldExpertName) - .SetGuiPresentation(Category.FightingStyle, Sprites.GetSprite(ShieldExpertName, Resources.ShieldExpert, 256)) - .SetFeatures( - FeatureDefinitionBuilder - .Create("AddExtraAttackShieldExpert") - .SetGuiPresentationNoContent(true) - .AddCustomSubFeatures(new AddBonusShieldAttack()) - .AddToDB()) - .AddToDB(); - - internal override List FightingStyleChoice => - [ - CharacterContext.FightingStyleChoiceBarbarian, - CharacterContext.FightingStyleChoiceMonk, - CharacterContext.FightingStyleChoiceRogue, - FightingStyleChampionAdditional, - FightingStyleFighter, - FightingStylePaladin, - FightingStyleRanger - ]; -} diff --git a/SolastaUnfinishedBusiness/Info.json b/SolastaUnfinishedBusiness/Info.json index f5f9e6a65b..837f9a6c44 100644 --- a/SolastaUnfinishedBusiness/Info.json +++ b/SolastaUnfinishedBusiness/Info.json @@ -1,7 +1,7 @@ { "Id": "SolastaUnfinishedBusiness", "DisplayName": "[Un] Finished Business", - "Version": "1.5.97.19", + "Version": "1.5.97.20", "GameVersion": "1.5.97", "ManagerVersion": "0.24.0", "AssemblyName": "SolastaUnfinishedBusiness.dll", diff --git a/SolastaUnfinishedBusiness/Models/BootContext.cs b/SolastaUnfinishedBusiness/Models/BootContext.cs index 1c48f7d287..942d85043e 100644 --- a/SolastaUnfinishedBusiness/Models/BootContext.cs +++ b/SolastaUnfinishedBusiness/Models/BootContext.cs @@ -132,6 +132,9 @@ internal static void Startup() // Save by location initialization depends on services to be ready SaveByLocationContext.LateLoad(); + // Spell Points should load closer to the bottom after all other blueprints initiated + SpellPointsContext.LateLoad(); + // Recache all gui collections GuiWrapperContext.Recache(); diff --git a/SolastaUnfinishedBusiness/Models/CharacterUAContext.cs b/SolastaUnfinishedBusiness/Models/CharacterUAContext.cs index 94d6334e39..9379557f77 100644 --- a/SolastaUnfinishedBusiness/Models/CharacterUAContext.cs +++ b/SolastaUnfinishedBusiness/Models/CharacterUAContext.cs @@ -10,11 +10,11 @@ using SolastaUnfinishedBusiness.Builders; using SolastaUnfinishedBusiness.Builders.Features; using SolastaUnfinishedBusiness.CustomUI; -using SolastaUnfinishedBusiness.Feats; using SolastaUnfinishedBusiness.Interfaces; using SolastaUnfinishedBusiness.Properties; using SolastaUnfinishedBusiness.Subclasses; using SolastaUnfinishedBusiness.Validators; +using UnityEngine.AddressableAssets; using static RuleDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.ActionDefinitions; @@ -1105,7 +1105,6 @@ internal MonkWeaponSpecializationDiceUpgrade(WeaponTypeDefinition weaponTypeDefi (attackMode?.SourceDefinition as ItemDefinition)?.WeaponDescription.WeaponTypeDefinition; return (OperationType.Or, - character.HasMonkShieldExpert() || character.GetSubFeaturesByType().Exists( x => x._weaponTypeDefinition == attackModeWeaponType)); } @@ -1159,6 +1158,61 @@ internal static void SwitchRangerNatureShroud() #region Rogue + private const string FeatSteadyAim = "FeatSteadyAim"; + + private static readonly FeatureDefinitionPower PowerFeatSteadyAim = FeatureDefinitionPowerBuilder + .Create($"Power{FeatSteadyAim}") + .SetGuiPresentation(Category.Feature, Sprites.GetSprite(FeatSteadyAim, Resources.PowerSteadyAim, 256, 128)) + .SetUsesFixed(ActivationTime.BonusAction) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetDurationData(DurationType.Round) + .SetTargetingData(Side.Ally, RangeType.Self, 0, TargetType.Self) + .SetEffectForms( + EffectFormBuilder + .Create() + .SetConditionForm( + ConditionDefinitionBuilder + .Create($"Condition{FeatSteadyAim}Advantage") + .SetGuiPresentation(Category.Condition, + ConditionDefinitions.ConditionGuided) + .SetPossessive() + .SetSilent(Silent.WhenAddedOrRemoved) + .SetSpecialInterruptions(ConditionInterruption.Attacks) + .AddFeatures( + FeatureDefinitionCombatAffinityBuilder + .Create($"CombatAffinity{FeatSteadyAim}") + .SetGuiPresentation($"Power{FeatSteadyAim}", Category.Feature, + Gui.NoLocalization) + .SetMyAttackAdvantage(AdvantageType.Advantage) + .AddToDB()) + .AddToDB(), + ConditionForm.ConditionOperation.Add) + .Build(), + EffectFormBuilder + .Create() + .SetConditionForm( + ConditionDefinitionBuilder + .Create($"Condition{FeatSteadyAim}Restrained") + .SetGuiPresentation(Category.Condition) + .SetSilent(Silent.WhenAddedOrRemoved) + .AddFeatures(MovementAffinityConditionRestrained) + .AddToDB(), + ConditionForm.ConditionOperation.Add) + .Build()) + .SetParticleEffectParameters(PowerFunctionWandFearCommand) + .SetImpactEffectParameters(new AssetReference()) + .Build()) + .AddCustomSubFeatures( + new ValidatorsValidatePowerUse(character => + { + var gameLocationCharacter = GameLocationCharacter.GetFromActor(character); + + return gameLocationCharacter == null || gameLocationCharacter.UsedTacticalMoves == 0; + })) + .AddToDB(); + internal static readonly ConditionDefinition ConditionReduceSneakDice = ConditionDefinitionBuilder .Create("ConditionReduceSneakDice") .SetGuiPresentationNoContent(true) @@ -1700,12 +1754,12 @@ internal static void SwitchRogueSteadyAim() { if (Main.Settings.EnableRogueSteadyAim) { - Rogue.FeatureUnlocks.TryAdd(new FeatureUnlockByLevel(RangedCombatFeats.PowerFeatSteadyAim, 3)); + Rogue.FeatureUnlocks.TryAdd(new FeatureUnlockByLevel(PowerFeatSteadyAim, 3)); } else { Rogue.FeatureUnlocks.RemoveAll(x => - x.level == 3 && x.FeatureDefinition == RangedCombatFeats.PowerFeatSteadyAim); + x.level == 3 && x.FeatureDefinition == PowerFeatSteadyAim); } if (Main.Settings.EnableSortingFutureFeatures) diff --git a/SolastaUnfinishedBusiness/Models/CustomActionIdContext.cs b/SolastaUnfinishedBusiness/Models/CustomActionIdContext.cs index 7288138083..79427eb40f 100644 --- a/SolastaUnfinishedBusiness/Models/CustomActionIdContext.cs +++ b/SolastaUnfinishedBusiness/Models/CustomActionIdContext.cs @@ -231,13 +231,6 @@ void DoReorder(Id actionId, int overrideIndex = -1) private static void BuildCustomToggleActions() { - ActionDefinitionBuilder - .Create(MetamagicToggle, "AudaciousWhirlToggle") - .SetOrUpdateGuiPresentation(Category.Action) - .RequiresAuthorization() - .SetActionId(ExtraActionId.AudaciousWhirlToggle) - .AddToDB(); - ActionDefinitionBuilder .Create(MetamagicToggle, "BrutalStrikeToggle") .SetOrUpdateGuiPresentation(Category.Action) diff --git a/SolastaUnfinishedBusiness/Models/CustomConditionsContext.cs b/SolastaUnfinishedBusiness/Models/CustomConditionsContext.cs index 3ca24e9549..92a2fcae37 100644 --- a/SolastaUnfinishedBusiness/Models/CustomConditionsContext.cs +++ b/SolastaUnfinishedBusiness/Models/CustomConditionsContext.cs @@ -480,24 +480,23 @@ Id.AttackReadied or } var actingCharacter = characterAction.ActingCharacter; - var rulesetCharacter = actingCharacter.RulesetCharacter; var targets = Gui.Battle.GetContenders(actingCharacter); foreach (var target in targets) { - var rulesetCondition = target.RulesetCharacter.AllConditions.FirstOrDefault(x => - x.ConditionDefinition.Name == Taunted.Name && - x.SourceGuid == rulesetCharacter.Guid); + var rulesetTarget = target.RulesetActor; - if (rulesetCondition == null) + if (!rulesetTarget.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, Taunted.Name, out var activeCondition) && + activeCondition.SourceGuid == actingCharacter.Guid) { continue; } // ruleset amount carries the max range for the condition - if (!actingCharacter.IsWithinRange(target, rulesetCondition.Amount)) + if (!actingCharacter.IsWithinRange(target, activeCondition.Amount)) { - target.RulesetCharacter.RemoveCondition(rulesetCondition); + target.RulesetCharacter.RemoveCondition(activeCondition); } } } diff --git a/SolastaUnfinishedBusiness/Models/FightingStyleContext.cs b/SolastaUnfinishedBusiness/Models/FightingStyleContext.cs index 74b1226ed6..f0e41963f2 100644 --- a/SolastaUnfinishedBusiness/Models/FightingStyleContext.cs +++ b/SolastaUnfinishedBusiness/Models/FightingStyleContext.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; +using SolastaUnfinishedBusiness.Builders; +using SolastaUnfinishedBusiness.Builders.Features; using SolastaUnfinishedBusiness.Feats; using SolastaUnfinishedBusiness.FightingStyles; @@ -8,14 +10,13 @@ namespace SolastaUnfinishedBusiness.Models; internal static class FightingStyleContext { - internal static readonly HashSet DemotedFightingStyles = + internal static readonly List DemotedFightingStyles = [ - Merciless.MercilessName, - MonkShieldExpert.ShieldExpertName, - PolearmExpert.PolearmExpertName, - RopeItUp.RopeItUpName, - Sentinel.SentinelName, - ShieldExpert.ShieldExpertName + "Merciless", + "PolearmExpert", + "RopeItUp", + "Sentinel", + "ShieldExpert" ]; private static Dictionary> @@ -25,13 +26,7 @@ private static Dictionary()) .AddToDB(); - conditionMindDominatedByHauntedSoul.AddCustomSubFeatures( - new OnConditionAddedOrRemovedPossession(conditionMindDominatedByHauntedSoul)); - var powerSorcererHauntedSoulPossession = FeatureDefinitionPowerBuilder .Create("PowerSorcererHauntedSoulPossession") .SetGuiPresentation(Category.Feature, PowerSorcererHauntedSoulVengefulSpirits) @@ -1738,8 +1736,7 @@ public void OnAttackComputeModifier( // // ReSharper disable once SuggestBaseTypeForParameterInConstructor - private sealed class OnConditionAddedOrRemovedPossession(ConditionDefinition conditionPossession) - : IOnConditionAddedOrRemoved + private sealed class OnConditionAddedOrRemovedPossession : IOnConditionAddedOrRemoved { public void OnConditionAdded(RulesetCharacter target, RulesetCondition rulesetCondition) { @@ -1748,18 +1745,7 @@ public void OnConditionAdded(RulesetCharacter target, RulesetCondition rulesetCo public void OnConditionRemoved(RulesetCharacter target, RulesetCondition rulesetCondition) { - if (rulesetCondition.ConditionDefinition != conditionPossession) - { - return; - } - var rulesetAttacker = EffectHelpers.GetCharacterByGuid(rulesetCondition.SourceGuid); - - if (rulesetAttacker == null) - { - return; - } - var conditionExhausted = ConditionDefinitions.ConditionExhausted; target.InflictCondition( @@ -1801,25 +1787,17 @@ public void OnSavingThrowFinished( ref int outcomeDelta, List effectForms) { - if (outcome is not (RollOutcome.Success or RollOutcome.CriticalSuccess)) - { - return; - } - var hero = defender.GetOriginalHero(); - if (hero == null) + if (outcome is not (RollOutcome.Success or RollOutcome.CriticalSuccess) || + hero == null) { return; } var character = GameLocationCharacter.GetFromActor(hero); - if (character != null) - { - EffectHelpers.StartVisualEffect(character, character, MageArmor, EffectHelpers.EffectType.Caster); - } - + EffectHelpers.StartVisualEffect(character, character, MageArmor, EffectHelpers.EffectType.Caster); hero.LogCharacterUsedFeature(featureManaOverflow); hero.GainSorceryPoints(1); } @@ -1902,11 +1880,6 @@ public IEnumerator HandleReducedToZeroHpByEnemy( var rulesetCharacter = defender.RulesetCharacter; - if (rulesetCharacter == null) - { - yield break; - } - var actionService = ServiceRepository.GetService(); var implementationManager = ServiceRepository.GetService() as RulesetImplementationManager; @@ -2038,20 +2011,20 @@ public IEnumerator OnPowerOrSpellFinishedByMe(CharacterActionMagicEffect action, yield break; } + var attacker = action.ActingCharacter; + var rulesetAttacker = attacker.RulesetCharacter; var target = action.ActionParams.TargetCharacters[0]; var rulesetTarget = target.RulesetCharacter; if (!rulesetTarget.TryGetConditionOfCategoryAndType( - AttributeDefinitions.TagEffect, conditionDefinition.Name, out var activeCondition)) + AttributeDefinitions.TagEffect, conditionDefinition.Name, out var activeCondition) && + activeCondition.SourceGuid != attacker.Guid) { yield break; } rulesetTarget.RemoveCondition(activeCondition); - var attacker = action.ActingCharacter; - var rulesetAttacker = attacker.RulesetCharacter; - // takes 10d10 Necrotic if (action.SaveOutcome is RollOutcome.Success or RollOutcome.CriticalSuccess) { diff --git a/SolastaUnfinishedBusiness/Models/LevelUpContext.cs b/SolastaUnfinishedBusiness/Models/LevelUpContext.cs index 16dfb01faf..fd128f5ebf 100644 --- a/SolastaUnfinishedBusiness/Models/LevelUpContext.cs +++ b/SolastaUnfinishedBusiness/Models/LevelUpContext.cs @@ -17,8 +17,8 @@ namespace SolastaUnfinishedBusiness.Models; internal static class LevelUpContext { - internal const string ExtraClassTag = "@Class"; - internal const string ExtraSubclassTag = "@Subclass"; + internal const string ExtraClassTag = ""; //""@Class"; + internal const string ExtraSubclassTag = ""; //""@Subclass"; // keeps a tab on all heroes leveling up private static readonly Dictionary LevelUpTab = new(); diff --git a/SolastaUnfinishedBusiness/Models/MulticlassGameUiContext.cs b/SolastaUnfinishedBusiness/Models/MulticlassGameUiContext.cs index 69af752dcb..93edbc5a38 100644 --- a/SolastaUnfinishedBusiness/Models/MulticlassGameUiContext.cs +++ b/SolastaUnfinishedBusiness/Models/MulticlassGameUiContext.cs @@ -139,9 +139,11 @@ internal static void PaintPactSlots( int totalSlotsCount, int totalSlotsRemainingCount, int slotLevel, - [NotNull] RectTransform rectTransform, + int spellsAtLevel, + SlotStatusTable slotStatusTable, bool ignorePactSlots = false) { + var rectTransform = slotStatusTable.table; var warlockSpellRepertoire = SharedSpellsContext.GetWarlockSpellRepertoire(hero); var warlockSpellLevel = SharedSpellsContext.GetWarlockSpellLevel(hero); @@ -193,7 +195,16 @@ internal static void PaintPactSlots( // paint spell slots white if (index >= pactSlotsCount || slotLevel > warlockSpellLevel) { - SetRegularSlotImage(component.Available.GetComponent()); + //PATCH: support display cost on spell level blocks (SPELL_POINTS) + if (Main.Settings.UseAlternateSpellPointsSystem) + { + SpellPointsContext.DisplayCostOnSpellLevelBlocks(slotStatusTable, component, slotLevel, + spellsAtLevel); + } + else + { + SetRegularSlotImage(component.Available.GetComponent()); + } } else { @@ -285,7 +296,16 @@ internal static void PaintPactSlotsAlternate( } else { - SetRegularSlotImage(component.Available.GetComponent()); + //PATCH: support alternate spell system to avoid displaying spell slots on selection (SPELL_POINTS) + if (Main.Settings.UseAlternateSpellPointsSystem) + { + component.Used.gameObject.SetActive(false); + component.Available.gameObject.SetActive(false); + } + else + { + SetRegularSlotImage(component.Available.GetComponent()); + } } } } diff --git a/SolastaUnfinishedBusiness/Models/SharedSpellsContext.cs b/SolastaUnfinishedBusiness/Models/SharedSpellsContext.cs index d9ecd7cd83..8a35707d91 100644 --- a/SolastaUnfinishedBusiness/Models/SharedSpellsContext.cs +++ b/SolastaUnfinishedBusiness/Models/SharedSpellsContext.cs @@ -22,10 +22,7 @@ internal static class SharedSpellsContext { internal const int PactMagicSlotsTab = -1; - // supports custom MaxSpellLevelOfSpellCastLevel behaviors - internal static bool UseMaxSpellLevelOfSpellCastingLevelDefaultBehavior { get; private set; } - - internal static Dictionary RecoverySlots { get; } = new() + internal static readonly Dictionary RecoverySlots = new() { { PowerCircleLandNaturalRecovery.Name, Druid }, { PowerWizardArcaneRecovery.Name, Wizard }, @@ -33,7 +30,7 @@ internal static class SharedSpellsContext { WizardSpellMaster.PowerSpellMasterBonusRecoveryName, Wizard } }; - private static Dictionary ClassCasterType { get; } = new() + private static readonly Dictionary ClassCasterType = new() { { Bard.Name, CasterProgression.Full }, { Cleric.Name, CasterProgression.Full }, @@ -45,7 +42,7 @@ internal static class SharedSpellsContext { InventorClass.ClassName, CasterProgression.HalfRoundUp } }; - private static Dictionary SubclassCasterType { get; } = new() + private static readonly Dictionary SubclassCasterType = new() { { MartialSpellblade.Name, CasterProgression.OneThird }, { RoguishArcaneScoundrel.Name, CasterProgression.OneThird }, @@ -53,8 +50,11 @@ internal static class SharedSpellsContext { MartialSpellShield.FullName, CasterProgression.OneThird } }; + // supports custom MaxSpellLevelOfSpellCastLevel behaviors + internal static bool UseMaxSpellLevelOfSpellCastingLevelDefaultBehavior { get; private set; } + // supports auto prepared spells scenarios on subs - private static CasterProgression GetCasterTypeForClassOrSubclass( + internal static CasterProgression GetCasterTypeForClassOrSubclass( [CanBeNull] string characterClassDefinition, string characterSubclassDefinition) { @@ -199,6 +199,13 @@ internal static int GetSharedSpellLevel(RulesetCharacterHero rulesetCharacterHer { var sharedCasterLevel = GetSharedCasterLevel(rulesetCharacterHero); + if (Main.Settings.UseAlternateSpellPointsSystem) + { + return sharedCasterLevel > 0 + ? SpellPointsContext.SpellPointsFullCastingSlots[sharedCasterLevel - 1].Slots.IndexOf(0) + : 0; + } + return sharedCasterLevel > 0 ? FullCastingSlots[sharedCasterLevel - 1].Slots.IndexOf(0) : 0; } @@ -206,6 +213,9 @@ internal static void LateLoad() { PatchMaxSpellLevelOfSpellCastingLevel(); EnumerateSlotsPerLevel(CasterProgression.Full, FullCastingSlots); + EnumerateSlotsPerLevel(CasterProgression.Half, HalfCastingSlots); + EnumerateSlotsPerLevel(CasterProgression.HalfRoundUp, HalfRoundUpCastingSlots); + EnumerateSlotsPerLevel(CasterProgression.OneThird, OneThirdCastingSlots); } private static void PatchMaxSpellLevelOfSpellCastingLevel() @@ -339,56 +349,55 @@ internal int GetCasterLevel() #region Slots Definitions - internal static IEnumerable InitiateCastingSlots { get; } = new List - { - new() { Slots = [1], Level = 01 }, - new() { Slots = [1], Level = 02 }, - new() { Slots = [1], Level = 03 }, - new() { Slots = [1], Level = 04 }, - new() { Slots = [1], Level = 05 }, - new() { Slots = [1], Level = 06 }, - new() { Slots = [1], Level = 07 }, - new() { Slots = [1], Level = 08 }, - new() { Slots = [1], Level = 09 }, - new() { Slots = [1], Level = 10 }, - new() { Slots = [1], Level = 11 }, - new() { Slots = [1], Level = 12 }, - new() { Slots = [1], Level = 13 }, - new() { Slots = [1], Level = 14 }, - new() { Slots = [1], Level = 15 }, - new() { Slots = [1], Level = 16 }, - new() { Slots = [1], Level = 17 }, - new() { Slots = [1], Level = 18 }, - new() { Slots = [1], Level = 19 }, - new() { Slots = [1], Level = 20 } - }; + internal static readonly List InitiateCastingSlots = + [ + new SlotsByLevelDuplet { Slots = [1], Level = 01 }, + new SlotsByLevelDuplet { Slots = [1], Level = 02 }, + new SlotsByLevelDuplet { Slots = [1], Level = 03 }, + new SlotsByLevelDuplet { Slots = [1], Level = 04 }, + new SlotsByLevelDuplet { Slots = [1], Level = 05 }, + new SlotsByLevelDuplet { Slots = [1], Level = 06 }, + new SlotsByLevelDuplet { Slots = [1], Level = 07 }, + new SlotsByLevelDuplet { Slots = [1], Level = 08 }, + new SlotsByLevelDuplet { Slots = [1], Level = 09 }, + new SlotsByLevelDuplet { Slots = [1], Level = 10 }, + new SlotsByLevelDuplet { Slots = [1], Level = 11 }, + new SlotsByLevelDuplet { Slots = [1], Level = 12 }, + new SlotsByLevelDuplet { Slots = [1], Level = 13 }, + new SlotsByLevelDuplet { Slots = [1], Level = 14 }, + new SlotsByLevelDuplet { Slots = [1], Level = 15 }, + new SlotsByLevelDuplet { Slots = [1], Level = 16 }, + new SlotsByLevelDuplet { Slots = [1], Level = 17 }, + new SlotsByLevelDuplet { Slots = [1], Level = 18 }, + new SlotsByLevelDuplet { Slots = [1], Level = 19 }, + new SlotsByLevelDuplet { Slots = [1], Level = 20 } + ]; - internal static IEnumerable RaceCastingSlots { get; } = new List - { - new() { Slots = [0, 0], Level = 01 }, - new() { Slots = [0, 0], Level = 02 }, - new() { Slots = [1, 0], Level = 03 }, - new() { Slots = [1, 0], Level = 04 }, - new() { Slots = [1, 1], Level = 05 }, - new() { Slots = [1, 1], Level = 06 }, - new() { Slots = [1, 1], Level = 07 }, - new() { Slots = [1, 1], Level = 08 }, - new() { Slots = [1, 1], Level = 09 }, - new() { Slots = [1, 1], Level = 10 }, - new() { Slots = [1, 1], Level = 11 }, - new() { Slots = [1, 1], Level = 12 }, - new() { Slots = [1, 1], Level = 13 }, - new() { Slots = [1, 1], Level = 14 }, - new() { Slots = [1, 1], Level = 15 }, - new() { Slots = [1, 1], Level = 16 }, - new() { Slots = [1, 1], Level = 17 }, - new() { Slots = [1, 1], Level = 18 }, - new() { Slots = [1, 1], Level = 19 }, - new() { Slots = [1, 1], Level = 20 } - }; + internal static readonly List RaceCastingSlots = + [ + new SlotsByLevelDuplet { Slots = [0, 0], Level = 01 }, + new SlotsByLevelDuplet { Slots = [0, 0], Level = 02 }, + new SlotsByLevelDuplet { Slots = [1, 0], Level = 03 }, + new SlotsByLevelDuplet { Slots = [1, 0], Level = 04 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 05 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 06 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 07 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 08 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 09 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 10 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 11 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 12 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 13 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 14 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 15 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 16 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 17 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 18 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 19 }, + new SlotsByLevelDuplet { Slots = [1, 1], Level = 20 } + ]; - // ReSharper disable once ReturnTypeCanBeEnumerable.Global - internal static List RaceEmptyCastingSlots { get; } = + internal static readonly List RaceEmptyCastingSlots = [ new SlotsByLevelDuplet { Slots = [0], Level = 01 }, new SlotsByLevelDuplet { Slots = [0], Level = 02 }, @@ -413,7 +422,7 @@ internal int GetCasterLevel() ]; // game uses IndexOf(0) on these sub lists reason why the last 0 there - private static List WarlockCastingSlots { get; } = + private static readonly List WarlockCastingSlots = [ new SlotsByLevelDuplet { @@ -696,12 +705,14 @@ internal int GetCasterLevel() } ]; - // game uses IndexOf(0) on these sub lists reason why the last 0 there - internal static List FullCastingSlots { get; } = []; + internal static readonly List FullCastingSlots = []; + internal static readonly List HalfCastingSlots = []; + internal static readonly List HalfRoundUpCastingSlots = []; + internal static readonly List OneThirdCastingSlots = []; // additional spells supporting collections - internal static IEnumerable WarlockKnownSpells { get; } = new List - { + internal static readonly List WarlockKnownSpells = + [ 2, 3, 4, @@ -722,7 +733,7 @@ internal int GetCasterLevel() 14, 15, 15 - }; + ]; #endregion } diff --git a/SolastaUnfinishedBusiness/Models/SpellPointsContext.cs b/SolastaUnfinishedBusiness/Models/SpellPointsContext.cs new file mode 100644 index 0000000000..fc89572817 --- /dev/null +++ b/SolastaUnfinishedBusiness/Models/SpellPointsContext.cs @@ -0,0 +1,380 @@ +using System.Collections.Generic; +using System.Linq; +using SolastaUnfinishedBusiness.Api; +using SolastaUnfinishedBusiness.Api.GameExtensions; +using SolastaUnfinishedBusiness.Behaviors; +using SolastaUnfinishedBusiness.Builders; +using SolastaUnfinishedBusiness.Builders.Features; +using SolastaUnfinishedBusiness.Classes; +using SolastaUnfinishedBusiness.Interfaces; +using SolastaUnfinishedBusiness.Subclasses; +using TMPro; +using UnityEngine; +using static FeatureDefinitionCastSpell; +using static RuleDefinitions; +using static SolastaUnfinishedBusiness.Builders.Features.FeatureDefinitionCastSpellBuilder; +using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionCastSpells; + +namespace SolastaUnfinishedBusiness.Models; + +internal static class SpellPointsContext +{ + private static readonly List SpellCostByLevel = [0, 2, 3, 5, 6, 7, 9, 10, 11, 13]; + + internal static readonly List SpellPointsFullCastingSlots = []; + private static readonly List SpellPointsHalfCastingSlots = []; + private static readonly List SpellPointsHalfRoundUpCastingSlots = []; + private static readonly List SpellPointsOneThirdCastingSlots = []; + + private static readonly List<(string, List, List)> + FeatureDefinitionCastSpellTab = + [ + (CastSpellBard.Name, SharedSpellsContext.FullCastingSlots, SpellPointsFullCastingSlots), + (CastSpellCleric.Name, SharedSpellsContext.FullCastingSlots, SpellPointsFullCastingSlots), + (CastSpellDruid.Name, SharedSpellsContext.FullCastingSlots, SpellPointsFullCastingSlots), + (CastSpellPaladin.Name, SharedSpellsContext.HalfCastingSlots, SpellPointsHalfCastingSlots), + (CastSpellRanger.Name, SharedSpellsContext.HalfCastingSlots, SpellPointsHalfCastingSlots), + (CastSpellSorcerer.Name, SharedSpellsContext.FullCastingSlots, SpellPointsFullCastingSlots), + (CastSpellWizard.Name, SharedSpellsContext.FullCastingSlots, SpellPointsFullCastingSlots), + (CastSpellMartialSpellBlade.Name, SharedSpellsContext.OneThirdCastingSlots, + SpellPointsOneThirdCastingSlots), + (CastSpellShadowcaster.Name, SharedSpellsContext.OneThirdCastingSlots, + SpellPointsOneThirdCastingSlots), + (InventorClass.SpellCasting.Name, SharedSpellsContext.HalfRoundUpCastingSlots, + SpellPointsHalfRoundUpCastingSlots), + (RoguishArcaneScoundrel.CastSpellName, SharedSpellsContext.OneThirdCastingSlots, + SpellPointsOneThirdCastingSlots), + (MartialSpellShield.CastSpellName, SharedSpellsContext.OneThirdCastingSlots, + SpellPointsOneThirdCastingSlots) + ]; + + private static readonly FeatureDefinitionPower PowerSpellPoints = FeatureDefinitionPowerBuilder + .Create("PowerSpellPoints") + .SetGuiPresentationNoContent(true) + .SetUsesFixed(ActivationTime.NoCost, RechargeRate.LongRest, 1, 0) + .AddCustomSubFeatures( + HasModifiedUses.Marker, + new ModifyPowerPoolAmountPowerSpellPoints()) + .AddToDB(); + + internal static void LateLoad() + { + EnumerateSlotsPerLevel(CasterProgression.Full, SpellPointsFullCastingSlots, true); + EnumerateSlotsPerLevel(CasterProgression.Half, SpellPointsHalfCastingSlots, true); + EnumerateSlotsPerLevel(CasterProgression.HalfRoundUp, SpellPointsHalfRoundUpCastingSlots, true); + EnumerateSlotsPerLevel(CasterProgression.OneThird, SpellPointsOneThirdCastingSlots, true); + SwitchFeatureDefinitionCastSpellSlots(); + } + + internal static void SwitchFeatureDefinitionCastSpellSlots() + { + var db = DatabaseRepository.GetDatabase(); + + foreach (var (name, slotsVanilla, slotsSpellPoints) in FeatureDefinitionCastSpellTab) + { + var featureCastSpell = db.GetElement(name); + + featureCastSpell.slotsPerLevels = + Main.Settings.UseAlternateSpellPointsSystem ? slotsSpellPoints : slotsVanilla; + } + } + + private static int GetMaxSpellPoints(RulesetCharacter rulesetCharacter) + { + var usablePower = PowerProvider.Get(PowerSpellPoints, rulesetCharacter); + var maxUsesOfPower = rulesetCharacter.GetMaxUsesOfPower(usablePower); + + return maxUsesOfPower; + } + + private static int GetRemainingSpellPoints(RulesetCharacter rulesetCharacter) + { + var usablePower = PowerProvider.Get(PowerSpellPoints, rulesetCharacter); + var remainingUsesOfPower = rulesetCharacter.GetRemainingUsesOfPower(usablePower); + + return remainingUsesOfPower; + } + + internal static void HideSpellSlots(RulesetCharacterHero hero, RectTransform table) + { + if (!Main.Settings.UseAlternateSpellPointsSystem || + SharedSpellsContext.GetWarlockSpellRepertoire(hero) != null) + { + return; + } + + for (var index = 0; index < table.childCount; ++index) + { + var component = table.GetChild(index).GetComponent(); + + component.Used.gameObject.SetActive(false); + component.Available.gameObject.SetActive(false); + } + } + + internal static void DisplayRemainingSpellPointsOnCastActions( + GuiCharacterAction guiCharacterAction, + RectTransform useSlotsTable, + GuiLabel highSlotNumber) + { + if (!Main.Settings.UseAlternateSpellPointsSystem || + (guiCharacterAction.ActionDefinition != DatabaseHelper.ActionDefinitions.CastMain && + guiCharacterAction.ActionDefinition != DatabaseHelper.ActionDefinitions.CastBonus)) + { + return; + } + + var rulesetCharacter = guiCharacterAction.ActingCharacter.RulesetCharacter; + var remainingSpellPoints = GetRemainingSpellPoints(rulesetCharacter).ToString(); + + highSlotNumber.gameObject.SetActive(true); + useSlotsTable.gameObject.SetActive(false); + highSlotNumber.Text = remainingSpellPoints; + highSlotNumber.GuiTooltip.Content = + Gui.Format("Screen/&SpellAlternatePointsTooltip", remainingSpellPoints); + } + + internal static void DisplayMaxSpellPointsOnInspectionScreen( + CharacterInspectionScreen __instance, RulesetCharacterHero heroCharacter) + { + var maxSpellPoints = GetMaxSpellPoints(heroCharacter).ToString(); + + for (var i = 0; i < __instance.spellPanelsContainer.childCount; i++) + { + var child = __instance.spellPanelsContainer.GetChild(i); + var repertoireTitle = child.GetChild(1).GetChild(1).GetComponent(); + var spellRepertoire = __instance.InspectedCharacter.RulesetCharacterHero.SpellRepertoires[i]; + + if (Main.Settings.UseAlternateSpellPointsSystem && + (SharedSpellsContext.IsMulticaster(heroCharacter) || + SharedSpellsContext.GetWarlockSpellRepertoire(heroCharacter) == null) && + spellRepertoire.SpellCastingFeature.SpellCastingOrigin + is CastingOrigin.Class + or CastingOrigin.Subclass) + { + var postfix = Gui.Format("Screen/&SpellAlternatePointsCostTooltip", maxSpellPoints); + + repertoireTitle.text = Gui.Localize("Screen/&RepertoireSpellsTitle") + ": " + postfix; + } + else + { + repertoireTitle.text = Gui.Localize("Screen/&RepertoireSpellsTitle"); + } + } + } + + internal static void DisplayCostOnSpellLevelBlocks( + SlotStatusTable slotStatusTable, SlotStatus slotStatus, int slotLevel, int spellsAtLevel) + { + var cost = SpellCostByLevel[slotLevel].ToString(); + + slotStatus.Used.gameObject.SetActive(false); + slotStatus.Available.gameObject.SetActive(false); + slotStatusTable.slotsText.gameObject.SetActive(true); + slotStatusTable.slotsText.Text = + spellsAtLevel < 2 ? cost : Gui.Format("Screen/&SpellAlternatePointsCostTooltip", cost); + } + + internal static void GrantPowerSpellPoints(RulesetCharacterHero hero) + { + if (hero.HasAnyFeature(PowerSpellPoints)) + { + return; + } + + hero.ActiveFeatures[AttributeDefinitions.TagRace].Add(PowerSpellPoints); + + var usablePower = PowerProvider.Get(PowerSpellPoints, hero); + var poolSize = hero.GetMaxUsesOfPower(usablePower); + + usablePower.remainingUses = poolSize; + hero.UsablePowers.Add(usablePower); + } + + internal static void ConsumeSlotsAtLevelsPointsCannotCastAnymore( + RulesetCharacterHero hero, RulesetSpellRepertoire repertoire, int slotLevel, + bool consume = true, bool isMulticaster = false) + { + // consume points + var usablePower = PowerProvider.Get(PowerSpellPoints, hero); + + if (consume) + { + var cost = SpellCostByLevel[slotLevel]; + + usablePower.remainingUses -= cost; + } + + // consume spell slots at levels points cannot cast anymore + var level = isMulticaster + ? SharedSpellsContext.GetSharedSpellLevel(hero) + : repertoire.MaxSpellLevelOfSpellCastingLevel; + + var warlockLevel = SharedSpellsContext.GetWarlockSpellLevel(hero); + + for (var i = level; i > 0; i--) + { + if (usablePower.RemainingUses >= SpellCostByLevel[i] && + // handle scenario where spells at level 6 and above can only be cast once per level + slotLevel <= 5) + { + continue; + } + + var usedWarlockSlots = 0; + + if (level == warlockLevel && + repertoire.usedSpellsSlots.TryGetValue(SharedSpellsContext.PactMagicSlotsTab, out var usedSlots)) + { + usedWarlockSlots = usedSlots; + } + + var usedSpellsSlots = repertoire.usedSpellsSlots; + + usedSpellsSlots.TryAdd(i, 0); + usedSpellsSlots[i] = usedWarlockSlots + 1; + } + + repertoire.RepertoireRefreshed?.Invoke(repertoire); + } + + internal static void ConvertAdditionalSlotsIntoSpellPointsBeforeRefreshSpellRepertoire(RulesetCharacterHero hero) + { + var usablePower = PowerProvider.Get(PowerSpellPoints, hero); + var activeConditions = hero.AllConditions.ToList(); + + foreach (var activeCondition in activeConditions) + { + var removeCondition = false; + + foreach (var magicAffinity in activeCondition.ConditionDefinition.Features + .OfType() + .Where(x => x.AdditionalSlots.Count > 0)) + { + // ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator + foreach (var additionalSlot in magicAffinity.AdditionalSlots) + { + var slotCount = additionalSlot.SlotsNumber; + var slotLevel = additionalSlot.SlotLevel; + var totalPoints = slotCount * SpellCostByLevel[slotLevel]; + + usablePower.remainingUses += totalPoints; + + removeCondition = true; + } + } + + if (removeCondition) + { + hero.RemoveCondition(activeCondition); + } + } + } + + internal static void RefreshActionPanelAfterFlexibleCastingItem() + { + if (!Main.Settings.UseAlternateSpellPointsSystem) + { + return; + } + + var gameLocationScreenExploration = Gui.GuiService.GetScreen(); + + if (gameLocationScreenExploration.Visible) + { + // ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator + foreach (var panel in gameLocationScreenExploration.CharacterControlPanel.ActionPanels) + { + foreach (var characterActionItem in + panel.actionItems.Where(x => + x.CurrentItemForm.GuiCharacterAction.ActionDefinition == + DatabaseHelper.ActionDefinitions.CastMain || + x.CurrentItemForm.GuiCharacterAction.ActionDefinition == + DatabaseHelper.ActionDefinitions.CastBonus)) + { + characterActionItem.CurrentItemForm.Refresh(); + } + } + + return; + } + + var gameLocationScreenBattle = Gui.GuiService.GetScreen(); + + // ReSharper disable once InvertIf + if (gameLocationScreenBattle.Visible) + { + // ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator + foreach (var panel in gameLocationScreenBattle.CharacterControlPanel.ActionPanels) + { + foreach (var characterActionItem in + panel.actionItems.Where(x => + x.CurrentItemForm.GuiCharacterAction.ActionDefinition == + DatabaseHelper.ActionDefinitions.CastMain || + x.CurrentItemForm.GuiCharacterAction.ActionDefinition == + DatabaseHelper.ActionDefinitions.CastBonus)) + { + characterActionItem.CurrentItemForm.Refresh(); + } + } + } + } + + private sealed class ModifyPowerPoolAmountPowerSpellPoints : IModifyPowerPoolAmount + { + private static readonly List SpellPointsByLevel = + [ + 0, 4, 6, 14, 17, + // 5 + 27, 32, 38, 44, 57, + // 10 + 64, 73, 73, 83, 83, + // 15 + 94, 94, 107, 114, 123, + // 20 + 133 + ]; + + public FeatureDefinitionPower PowerPool => PowerSpellPoints; + + public int PoolChangeAmount(RulesetCharacter character) + { + var hero = character.GetOriginalHero(); + var casterLevel = GetCasterLevel(hero); + + return SpellPointsByLevel[casterLevel]; + } + + private static int GetCasterLevel(RulesetCharacterHero hero) + { + if (SharedSpellsContext.IsMulticaster(hero)) + { + return SharedSpellsContext.GetSharedCasterLevel(hero); + } + + var spellRepertoire = hero.SpellRepertoires.FirstOrDefault(x => + x.SpellCastingFeature.SpellCastingOrigin + is CastingOrigin.Class + or CastingOrigin.Subclass); + + if (spellRepertoire == null) + { + return 0; + } + + var characterLevel = hero.TryGetAttributeValue(AttributeDefinitions.CharacterLevel); + var casterType = SharedSpellsContext.GetCasterTypeForClassOrSubclass( + spellRepertoire.SpellCastingClass?.Name, spellRepertoire.SpellCastingSubclass?.Name); + + return casterType switch + { + CasterProgression.Full => characterLevel, + CasterProgression.Half when characterLevel <= 1 => 0, + CasterProgression.Half => (characterLevel + 1) / 2, + CasterProgression.HalfRoundUp => (characterLevel + 1) / 2, + CasterProgression.OneThird => (characterLevel + 2) / 3, + _ => 0 + }; + } + } +} diff --git a/SolastaUnfinishedBusiness/Models/SpellsContext.cs b/SolastaUnfinishedBusiness/Models/SpellsContext.cs index 76fbe3f455..997014eef8 100644 --- a/SolastaUnfinishedBusiness/Models/SpellsContext.cs +++ b/SolastaUnfinishedBusiness/Models/SpellsContext.cs @@ -344,6 +344,7 @@ internal static void LateLoad() RegisterSpell(BuildIrresistiblePerformance(), 0, SpellListBard); RegisterSpell(BuildPsychicLance(), 0, SpellListBard, SpellListSorcerer, SpellListWarlock, SpellListWizard); RegisterSpell(BuildPsionicBlast(), 0, SpellListSorcerer, SpellListWarlock, SpellListWizard); + RegisterSpell(BuildSickeningRadiance(), 0, SpellListSorcerer, SpellListWarlock, SpellListWizard); RegisterSpell(StaggeringSmite, 0, SpellListPaladin); RegisterSpell(VitriolicSphere, 0, SpellListSorcerer, SpellListWizard); diff --git a/SolastaUnfinishedBusiness/Models/ToolsContext.cs b/SolastaUnfinishedBusiness/Models/ToolsContext.cs index a8c5da20ff..163cd98e30 100644 --- a/SolastaUnfinishedBusiness/Models/ToolsContext.cs +++ b/SolastaUnfinishedBusiness/Models/ToolsContext.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using HarmonyLib; using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.Helpers; using SolastaUnfinishedBusiness.Builders; @@ -232,6 +233,9 @@ private static void FinalizeRespec([NotNull] RulesetCharacterHero oldHero, newHero.usedMagicAndPowers = oldHero.usedMagicAndPowers; newHero.knockOuts = oldHero.knockOuts; + TransferConditionsOfCategory(oldHero, newHero, AttributeDefinitions.TagEffect); + CleanupOldHeroConditions(oldHero, newHero); + CopyInventoryOver(oldHero, gameLocationCharacter.LocationPosition); gameCampaignCharacters.Find(x => x.RulesetCharacter == oldHero).RulesetCharacter = newHero; @@ -262,6 +266,28 @@ private static void FinalizeRespec([NotNull] RulesetCharacterHero oldHero, IsRespecing = false; } + private static void TransferConditionsOfCategory(RulesetActor oldHero, RulesetActor newHero, string category) + { + if (!oldHero.conditionsByCategory.TryGetValue(category, out var conditions)) + { + return; + } + + newHero.AddConditionCategoryAsNeeded(category); + newHero.conditionsByCategory[category].AddRange(conditions); + newHero.allConditions.AddRange(conditions); + } + + private static void CleanupOldHeroConditions(RulesetCharacterHero oldHero, RulesetCharacterHero newHero) + { + //Unregister all conditions that are not present in new hero + oldHero.allConditions + .Where(c => !newHero.AllConditions.Contains(c)) + .Do(c => c.Unregister()); + oldHero.allConditions.Clear(); + oldHero.conditionsByCategory.Clear(); + } + private static void CopyInventoryOver([NotNull] RulesetCharacter oldHero, int3 position) { var personalSlots = oldHero.CharacterInventory.PersonalContainer.InventorySlots; diff --git a/SolastaUnfinishedBusiness/Patches/CameraControllerLocationPatcher.cs b/SolastaUnfinishedBusiness/Patches/CameraControllerLocationPatcher.cs index 13f62136ae..f3af2c489e 100644 --- a/SolastaUnfinishedBusiness/Patches/CameraControllerLocationPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/CameraControllerLocationPatcher.cs @@ -8,51 +8,125 @@ namespace SolastaUnfinishedBusiness.Patches; [UsedImplicitly] public static class CameraControllerLocationPatcher { + /// + /// Allows the user to prevent the battle camera always following the current character if that character is + /// in view (on the monitor). + /// The battle camera will still move if the character is off screen or within x% (definable) of the screen edge. + /// + private static bool InterruptCamera( + CameraControllerLocation __instance, + GameLocationCharacter character, + Vector3 position, + bool alwaysInterruptIfZero = true) + { + //PATCH: camera don't follow character in battle + if (!Main.Settings.DontFollowCharacterInBattle) + { + return true; + } + + if (alwaysInterruptIfZero && + Main.Settings.DontFollowMargin == 0) + { + return false; + } + + // Ensure all Unity objects are valid + if (!__instance || + (character == null && position == Vector3.zero) || + !__instance.CurrentCameraMode || + __instance.CurrentCameraMode.CameraService == null || + !__instance.CurrentCameraMode.CameraService.MainCamera) + { + return true; + } + + // Get character's location in screen co-ords + var width = Screen.width; + var height = Screen.height; + var margin = Main.Settings.DontFollowMargin / 100f; + + Vector3 finalPosition; + + if (character != null) + { + var characterLocation = character.LocationPosition; + + finalPosition = new Vector3(characterLocation.x, characterLocation.y, characterLocation.z); + } + else + { + finalPosition = position; + } + + var screenPoint = __instance + .CurrentCameraMode.CameraService.MainCamera + .WorldToScreenPoint(finalPosition); + + var followCharacter = screenPoint.x < width * margin + || screenPoint.x > width * (1 - margin) + || screenPoint.y < height * margin + || screenPoint.y > height * (1 - margin); + + // return true to allow follow character code to run/false to disable + return followCharacter; + } + [HarmonyPatch(typeof(CameraControllerLocation), nameof(CameraControllerLocation.FollowCharacterForBattle))] [SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "Patch")] [UsedImplicitly] public static class FollowCharacterForBattle_Patch { - /// - /// Allows the user to prevent the battle camera always following the current character if that character is - /// in view (on the monitor). - /// The battle camera will still move if the character is off screen or within x% (definable) of the screen edge. - /// [UsedImplicitly] public static bool Prefix(CameraControllerLocation __instance, GameLocationCharacter character) { - //PATCH: camera don't follow character in battle - if (!Main.Settings.DontFollowCharacterInBattle) + if (Main.Settings.NeverMoveCameraOnEnemyTurn && character.Side == RuleDefinitions.Side.Enemy) { - return true; + return false; } - // Ensure all Unity objects are valid - if (!__instance - || character == null - || !__instance.CurrentCameraMode - || __instance.CurrentCameraMode.CameraService == null - || !__instance.CurrentCameraMode.CameraService.MainCamera) + return InterruptCamera(__instance, character, Vector3.zero, false); + } + } + + [HarmonyPatch(typeof(CameraControllerLocation), nameof(CameraControllerLocation.FocusCharacterOnMap))] + [SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "Patch")] + [UsedImplicitly] + public static class FocusCharacterOnMap_Patch + { + [UsedImplicitly] + public static bool Prefix(CameraControllerLocation __instance, GameLocationCharacter character) + { + if (Main.Settings.NeverMoveCameraOnEnemyTurn && character.Side == RuleDefinitions.Side.Enemy) { - return true; + return false; } - // Get character's location in screen co-ords - var width = Screen.width; - var height = Screen.height; - var margin = Main.Settings.DontFollowMargin / 100f; - var characterLocation = character.LocationPosition; - var screenPoint = __instance - .CurrentCameraMode.CameraService.MainCamera - .WorldToScreenPoint(new Vector3(characterLocation.x, characterLocation.y, characterLocation.z)); + return InterruptCamera(__instance, character, Vector3.zero); + } + } - var followCharacter = screenPoint.x < width * margin - || screenPoint.x > width * (1 - margin) - || screenPoint.y < height * margin - || screenPoint.y > height * (1 - margin); + [HarmonyPatch(typeof(CameraControllerLocation), nameof(CameraControllerLocation.FocusPositionForBattle))] + [SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "Patch")] + [UsedImplicitly] + public static class FocusPositionForBattle_Patch + { + [UsedImplicitly] + public static bool Prefix(CameraControllerLocation __instance, Vector3 position) + { + return InterruptCamera(__instance, null, position); + } + } - // return true to allow follow character code to run/false to disable - return followCharacter; + [HarmonyPatch(typeof(CameraControllerLocation), nameof(CameraControllerLocation.FocusCharacterToManualBattle))] + [SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "Patch")] + [UsedImplicitly] + public static class FocusCharacterToManualBattle_Patch + { + [UsedImplicitly] + public static bool Prefix(CameraControllerLocation __instance, GameLocationCharacter character) + { + return InterruptCamera(__instance, character, Vector3.zero); } } } diff --git a/SolastaUnfinishedBusiness/Patches/CameraModeManualPatcher.cs b/SolastaUnfinishedBusiness/Patches/CameraModeManualPatcher.cs new file mode 100644 index 0000000000..21db29f457 --- /dev/null +++ b/SolastaUnfinishedBusiness/Patches/CameraModeManualPatcher.cs @@ -0,0 +1,59 @@ +using System.Diagnostics.CodeAnalysis; +using HarmonyLib; +using JetBrains.Annotations; +using UnityEngine; + +namespace SolastaUnfinishedBusiness.Patches; + +[UsedImplicitly] +public static class CameraModeManualPatcher +{ + //PATCH: supports camera settings in Mod UI + [HarmonyPatch(typeof(CameraModeManual), nameof(CameraModeManual.Parameters), MethodType.Getter)] + [SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "Patch")] + [UsedImplicitly] + public static class Parameters_Getter_Patch + { + [UsedImplicitly] + public static void Prefix(CameraModeManual __instance) + { + // don't mess up with camera while location is building + if (Gui.GameLocation?.Initialized != true) + { + return; + } + + __instance.parameters.hasElevationCorrection = !Main.Settings.EnableElevationCameraToStayAtPosition; + __instance.parameters.elevationType = Main.Settings.SetElevationCameraMaxHeightBy == 0 + ? CameraModeManualParameters.CameraElevationType.Auto + : CameraModeManualParameters.CameraElevationType.Free; + } + } + + //PATCH: supports camera settings in Mod UI + [HarmonyPatch(typeof(CameraModeManual), nameof(CameraModeManual.SetBounds))] + [SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "Patch")] + [UsedImplicitly] + public static class TargetBounds_Getter_Patch + { + [UsedImplicitly] + public static void Prefix(ref Bounds bounds, CameraController.CameraBoundsSource source) + { + // don't mess up with camera while location is building + if (Gui.GameLocation?.Initialized != true) + { + return; + } + + if (Main.Settings.SetElevationCameraMaxHeightBy != 0) + { + bounds = new Bounds( + bounds.center, + new Vector3( + bounds.size.x, + bounds.size.y + Main.Settings.SetElevationCameraMaxHeightBy, + bounds.size.z)); + } + } + } +} diff --git a/SolastaUnfinishedBusiness/Patches/CharacterActionItemFormPatcher.cs b/SolastaUnfinishedBusiness/Patches/CharacterActionItemFormPatcher.cs index f27a67f698..b43aabd660 100644 --- a/SolastaUnfinishedBusiness/Patches/CharacterActionItemFormPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/CharacterActionItemFormPatcher.cs @@ -3,6 +3,7 @@ using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Interfaces; +using SolastaUnfinishedBusiness.Models; using TA.AddressableAssets; using UnityEngine; @@ -39,6 +40,10 @@ public static class Refresh_Patch [UsedImplicitly] public static void Postfix(CharacterActionItemForm __instance) { + //PATCH: support display remaining spell points on cast actions (SPELL_POINTS) + SpellPointsContext.DisplayRemainingSpellPointsOnCastActions( + __instance.GuiCharacterAction, __instance.useSlotsTable, __instance.highSlotNumber); + //PATCH: support for `IActionItemDiceBox` showing custom dice number/size var action = __instance.guiCharacterAction.ActionDefinition; var provider = action.GetFirstSubFeatureOfType(); diff --git a/SolastaUnfinishedBusiness/Patches/CharacterActionMagicEffectPatcher.cs b/SolastaUnfinishedBusiness/Patches/CharacterActionMagicEffectPatcher.cs index d238337aa5..78264f7f22 100644 --- a/SolastaUnfinishedBusiness/Patches/CharacterActionMagicEffectPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/CharacterActionMagicEffectPatcher.cs @@ -391,12 +391,13 @@ private static IEnumerator ExecuteImpl(CharacterActionMagicEffect __instance) // BEGIN PATCH - //PATCH: mark if bonus spell was used for correct action surge interaction - if (__instance is CharacterActionCastSpell { ActionType: ActionDefinitions.ActionType.Bonus }) + //PATCH: mark if levelled spell was used for correct action surge interaction + if (__instance is CharacterActionCastSpell actionCastSpell && + actionCastSpell.ActiveSpell.SpellDefinition.SpellLevel > 0) { - actingCharacter.UsedSpecialFeatures.TryAdd("BonusSpell", 0); + actingCharacter.UsedSpecialFeatures.TryAdd("LevelledSpell", 0); } - + //PATCH: skip spell animation if this is an AttackAfterMagicEffect spell if (baseDefinition.HasSubFeatureOfType()) { @@ -604,11 +605,6 @@ private static IEnumerator ExecuteImpl(CharacterActionMagicEffect __instance) .Where(affectedCharacter => targets.TryAdd(affectedCharacter)) .Select(_ => new ActionModifier())); - __instance.SpendMagicEffectUses(); - - // This is used to remove invisibility (for example) when casting a spell - __instance.CheckInterruptionBefore(); - // BEGIN PATCH //PATCH: supports `IPowerOrSpellInitiatedByMe` @@ -649,6 +645,11 @@ private static IEnumerator ExecuteImpl(CharacterActionMagicEffect __instance) // END PATCH + __instance.SpendMagicEffectUses(); + + // This is used to remove invisibility (for example) when casting a spell + __instance.CheckInterruptionBefore(); + // Handle spell countering yield return __instance.WaitSpellCastAction(battleManager); diff --git a/SolastaUnfinishedBusiness/Patches/CharacterBuildingManagerPatcher.cs b/SolastaUnfinishedBusiness/Patches/CharacterBuildingManagerPatcher.cs index 1b70873967..a6c21aaf14 100644 --- a/SolastaUnfinishedBusiness/Patches/CharacterBuildingManagerPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/CharacterBuildingManagerPatcher.cs @@ -165,6 +165,9 @@ public static void Prefix([NotNull] CharacterBuildingManager __instance, [NotNul __instance.GrantCantripsAndSpellsByTag(buildingData, AttributeDefinitions.TagBackground, featureDefinitionCastSpell); } + + //PATCH: grants the power spell points to any created hero including pre-gen ones (SPELL_POINTS) + SpellPointsContext.GrantPowerSpellPoints(hero); } //PATCH: grants custom features diff --git a/SolastaUnfinishedBusiness/Patches/CharacterInspectionScreenPatcher.cs b/SolastaUnfinishedBusiness/Patches/CharacterInspectionScreenPatcher.cs index 5bb3f7cb8f..db308466b8 100644 --- a/SolastaUnfinishedBusiness/Patches/CharacterInspectionScreenPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/CharacterInspectionScreenPatcher.cs @@ -30,14 +30,20 @@ public static void Prefix(CharacterInspectionScreen __instance, RulesetCharacter [UsedImplicitly] public static void Postfix(CharacterInspectionScreen __instance, RulesetCharacterHero heroCharacter) { + //PATCH: support display max spell points on inspection screen (SPELL_POINTS) + SpellPointsContext.DisplayMaxSpellPointsOnInspectionScreen(__instance, heroCharacter); + //PATCH: hide repertoires that have hidden spell casting feature for (var index = 3; index < __instance.toggleGroup.transform.childCount; ++index) { var child = __instance.toggleGroup.transform.GetChild(index); - if (index <= 3 && Gui.Game) + if (index <= 3) { - continue; + if (Gui.Game) + { + continue; + } } var repertoire = heroCharacter.SpellRepertoires[index - __instance.staticTogglesNumber]; diff --git a/SolastaUnfinishedBusiness/Patches/CharacterReactionSubitemPatcher.cs b/SolastaUnfinishedBusiness/Patches/CharacterReactionSubitemPatcher.cs index a2ea29a090..6053a5b4c7 100644 --- a/SolastaUnfinishedBusiness/Patches/CharacterReactionSubitemPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/CharacterReactionSubitemPatcher.cs @@ -22,18 +22,30 @@ public static void Postfix( RulesetSpellRepertoire spellRepertoire, int slotLevel) { - var heroWithSpellRepertoire = spellRepertoire?.GetCasterHero(); + var hero = spellRepertoire?.GetCasterHero(); - if (heroWithSpellRepertoire == null || - !SharedSpellsContext.IsMulticaster(heroWithSpellRepertoire) || spellRepertoire.SpellCastingRace) + if (hero == null) { return; } + if (spellRepertoire.SpellCastingRace) + { + return; + } + + if (!SharedSpellsContext.IsMulticaster(hero)) + { + //PATCH: support alternate spell system to avoid displaying spell slots on selection (SPELL_POINTS) + SpellPointsContext.HideSpellSlots(hero, __instance.slotStatusTable); + + return; + } + spellRepertoire.GetSlotsNumber(slotLevel, out var totalSlotsRemainingCount, out var totalSlotsCount); MulticlassGameUiContext.PaintPactSlotsAlternate( - heroWithSpellRepertoire, totalSlotsCount, totalSlotsRemainingCount, slotLevel, + hero, totalSlotsCount, totalSlotsRemainingCount, slotLevel, __instance.slotStatusTable); } } diff --git a/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs b/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs index b6d6ea3213..ae2137f57f 100644 --- a/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/CursorLocationSelectTargetPatcher.cs @@ -129,6 +129,7 @@ public static void Prefix(params object[] parameters) rulesetEffect.EffectDescription.TargetType = TargetType.IndividualsUnique; rulesetEffect.EffectDescription.TargetSide = modifyTeleportEffectBehavior.AllyOnly ? Side.Ally : Side.All; rulesetEffect.EffectDescription.targetExcludeCaster = modifyTeleportEffectBehavior.TeleportSelf; + rulesetEffect.EffectDescription.inviteOptionalAlly = modifyTeleportEffectBehavior.AllyOnly; } [UsedImplicitly] @@ -164,6 +165,7 @@ public static void Prefix(CursorLocationSelectTarget __instance) rulesetEffect.EffectDescription.TargetType = TargetType.Position; rulesetEffect.EffectDescription.TargetSide = Side.Ally; rulesetEffect.EffectDescription.targetExcludeCaster = false; + rulesetEffect.EffectDescription.inviteOptionalAlly = true; } } diff --git a/SolastaUnfinishedBusiness/Patches/FlexibleCastingItemPatcher.cs b/SolastaUnfinishedBusiness/Patches/FlexibleCastingItemPatcher.cs index 934f212f6d..98d6fd9248 100644 --- a/SolastaUnfinishedBusiness/Patches/FlexibleCastingItemPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/FlexibleCastingItemPatcher.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using HarmonyLib; using JetBrains.Annotations; +using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Models; namespace SolastaUnfinishedBusiness.Patches; @@ -22,19 +23,23 @@ public static void Postfix( { //PATCH: creates different slots colors and pop up messages depending on slot types (MULTICLASS) var flexibleCastingModal = __instance.GetComponentInParent(); + var hero = flexibleCastingModal.caster.GetOriginalHero(); - if (flexibleCastingModal.caster is not RulesetCharacterHero caster) + if (hero == null) { return; } - if (!SharedSpellsContext.IsMulticaster(caster)) + if (!SharedSpellsContext.IsMulticaster(hero)) { + //PATCH: support alternate spell system to avoid displaying spell slots on selection (SPELL_POINTS) + SpellPointsContext.HideSpellSlots(hero, __instance.slotStatusTable); + return; } MulticlassGameUiContext.PaintPactSlotsAlternate( - caster, maxSlots, remainingSlots, slotLevel, __instance.slotStatusTable); + hero, maxSlots, remainingSlots, slotLevel, __instance.slotStatusTable); } } @@ -45,6 +50,9 @@ public static class Unbind_Patch [UsedImplicitly] public static void Prefix(FlexibleCastingItem __instance) { + //PATCH: support alternate spell system to ensure points display is refreshed (SPELL_POINTS) + SpellPointsContext.RefreshActionPanelAfterFlexibleCastingItem(); + //PATCH: ensures slot colors are white before getting back to pool (MULTICLASS) MulticlassGameUiContext.PaintSlotsWhite(__instance.slotStatusTable); } diff --git a/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs b/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs index 6865b72865..0033eebb0d 100644 --- a/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/GameLocationBattleManagerPatcher.cs @@ -960,9 +960,7 @@ public static IEnumerator Postfix( rulesetCharacter.IsWieldingMonkWeapon() && !rulesetCharacter.IsWearingArmor() && !rulesetCharacter.HasConditionOfTypeOrSubType(ConditionMagicallyArmored) && - // BEGIN PATCH - (!rulesetCharacter.IsWearingShield() || rulesetCharacter.HasMonkShieldExpert()) && - // END PATCH + !rulesetCharacter.IsWearingShield() && !rulesetCharacter.HasConditionOfType(ConditionMonkDeflectMissile) && !rulesetCharacter.HasConditionOfType(ConditionMonkMartialArtsUnarmedStrikeBonus) && attacker.GetActionTypeStatus(ActionDefinitions.ActionType.Bonus) == diff --git a/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs b/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs index e51f152645..5f2ae9a1cd 100644 --- a/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/GameLocationCharacterPatcher.cs @@ -472,9 +472,10 @@ public static void Postfix( CharacterActionParams actionParams, ActionDefinitions.ActionScope scope) { - //PATCH: ensure we block casting main spells if bonus spell was used - if (__instance.UsedSpecialFeatures.TryGetValue("BonusSpell", out _)) + //PATCH: ensure we can only cast one levelled spell per turn (required by action surge) + if (__instance.UsedSpecialFeatures.TryGetValue("LevelledSpell", out _)) { + __instance.UsedBonusSpell = true; __instance.UsedMainSpell = true; } diff --git a/SolastaUnfinishedBusiness/Patches/GuiCharacterPatcher.cs b/SolastaUnfinishedBusiness/Patches/GuiCharacterPatcher.cs index 490f373a30..028bbbab09 100644 --- a/SolastaUnfinishedBusiness/Patches/GuiCharacterPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/GuiCharacterPatcher.cs @@ -42,12 +42,13 @@ public static void Postfix( // need to check for not null hero as we don't wanna these slots displayed under WS var hero = __instance.RulesetCharacterHero; - if (hero != null && !Main.Settings.DisplayPactSlotsOnSpellSelectionPanel) + if (hero != null && + !(Main.Settings.DisplayPactSlotsOnSpellSelectionPanel && + !Main.Settings.UseAlternateSpellPointsSystem)) { return; } - if (hero != null && !SharedSpellsContext.IsMulticaster(hero)) { return; diff --git a/SolastaUnfinishedBusiness/Patches/RulesetCharacterPatcher.cs b/SolastaUnfinishedBusiness/Patches/RulesetCharacterPatcher.cs index 410e8604bc..4b81f48505 100644 --- a/SolastaUnfinishedBusiness/Patches/RulesetCharacterPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/RulesetCharacterPatcher.cs @@ -1245,10 +1245,28 @@ public static IEnumerable Transpiler([NotNull] IEnumerable); } + [UsedImplicitly] + public static void Prefix(RulesetCharacter __instance) + { + var hero = __instance.GetOriginalHero(); + + if (hero != null && + Main.Settings.UseAlternateSpellPointsSystem) + { + SpellPointsContext.ConvertAdditionalSlotsIntoSpellPointsBeforeRefreshSpellRepertoire( + __instance.GetOriginalHero()); + } + } + [UsedImplicitly] public static void Postfix(RulesetCharacter __instance) { - if (__instance is not RulesetCharacterHero hero || !SharedSpellsContext.IsMulticaster(hero)) + if (__instance is not RulesetCharacterHero hero) + { + return; + } + + if (!SharedSpellsContext.IsMulticaster(hero)) { return; } @@ -1274,7 +1292,9 @@ public static void Postfix(RulesetCharacter __instance) for (var i = 1; i <= sharedSpellLevel; i++) { slots.TryAdd(i, 0); - slots[i] += SharedSpellsContext.FullCastingSlots[sharedCasterLevel - 1].Slots[i - 1]; + slots[i] += Main.Settings.UseAlternateSpellPointsSystem + ? SpellPointsContext.SpellPointsFullCastingSlots[sharedCasterLevel - 1].Slots[i - 1] + : SharedSpellsContext.FullCastingSlots[sharedCasterLevel - 1].Slots[i - 1]; } var warlockSpellLevel = SharedSpellsContext.GetWarlockSpellLevel(hero); @@ -1820,7 +1840,6 @@ public static bool Prefix(RulesetCharacter __instance) } } - //PATCH: support adding required action affinities to classes that can use toggles [HarmonyPatch(typeof(RulesetCharacter), nameof(RulesetCharacter.PostLoad))] [SuppressMessage("Minor Code Smell", "S101:Types should be named in PascalCase", Justification = "Patch")] [UsedImplicitly] @@ -1834,6 +1853,10 @@ public static void Postfix(RulesetCharacter __instance) return; } + //PATCH: support adding required power to keep a tab on spell points (SPELL_POINTS) + SpellPointsContext.GrantPowerSpellPoints(hero); + + //PATCH: support adding required action affinities to classes that can use toggles if (hero.ClassesHistory.Contains(Paladin)) { var tag = AttributeDefinitions.GetClassTag(Paladin, 1); @@ -1859,6 +1882,7 @@ public static void Postfix(RulesetCharacter __instance) } } + //PATCH: fix scenarios where hero doesn't have an instance of a usable power if (hero.ActiveFeatures .SelectMany(k => k.Value) .OfType() diff --git a/SolastaUnfinishedBusiness/Patches/RulesetImplementationManagerPatcher.cs b/SolastaUnfinishedBusiness/Patches/RulesetImplementationManagerPatcher.cs index ab7fd7db28..4de62db4f3 100644 --- a/SolastaUnfinishedBusiness/Patches/RulesetImplementationManagerPatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/RulesetImplementationManagerPatcher.cs @@ -258,14 +258,21 @@ private static int RollDamage( canRerollDice = true; } - //PATCH: supports different critical damage algorithms + int damage; + if (!criticalSuccess) { - return rulesetActor.RollDamage( + damage = rulesetActor.RollDamage( damageForm, addDice, false, additionalDamage, damageRollReduction, damageMultiplier, maximumDamage, useVersatileDamage, attackModeDamage, rolledValues, canRerollDice); + + //PATCH: supports College of Audacity defensive whirl + CollegeOfAudacity.HandleDefensiveWhirl(formsParams.sourceCharacter, damageForm, damage); + + return damage; } + //PATCH: supports different critical damage algorithms var rollDamageOption = rulesetActor.Side switch { Side.Ally => Main.Settings.CriticalHitModeAllies, @@ -282,7 +289,7 @@ private static int RollDamage( rollDamageOption = 2; } - var damage = rollDamageOption switch + damage = rollDamageOption switch { 1 => RollDamageOption1( rulesetActor, damageForm, addDice, additionalDamage, damageRollReduction, damageMultiplier, @@ -298,10 +305,12 @@ private static int RollDamage( useVersatileDamage, attackModeDamage, rolledValues, canRerollDice) }; + //PATCH: supports College of Audacity defensive whirl + CollegeOfAudacity.HandleDefensiveWhirl(formsParams.sourceCharacter, damageForm, damage); + return damage; } - [NotNull] [UsedImplicitly] public static IEnumerable Transpiler([NotNull] IEnumerable instructions) { @@ -1013,32 +1022,4 @@ private static IEnumerable Transpiler(IEnumerable x.SpellCastingFeature.SpellCastingOrigin != FeatureDefinitionCastSpell.CastingOrigin.Race)) { - var usedSpellsSlots = spellRepertoire.usedSpellsSlots; + if (Main.Settings.UseAlternateSpellPointsSystem) + { + SpellPointsContext.ConsumeSlotsAtLevelsPointsCannotCastAnymore( + hero, spellRepertoire, slotLevel, consume, true); - usedSpellsSlots.TryAdd(slotLevel, 0); - usedSpellsSlots[slotLevel]++; - spellRepertoire.RepertoireRefreshed?.Invoke(spellRepertoire); + consume = false; + } + else + { + ConsumeSlot(spellRepertoire, slotLevel); + } } } - // handles MC Warlock else { - SpendMulticasterWarlockSlots(__instance, heroWithSpellRepertoire, slotLevel); + SpendMulticasterWarlockSlots(__instance, hero, slotLevel); } - - return false; } - private static void SpendWarlockSlots(RulesetSpellRepertoire rulesetSpellRepertoire, - RulesetCharacterHero heroWithSpellRepertoire) + private static void SpendWarlockSlots( + RulesetSpellRepertoire rulesetSpellRepertoire, RulesetCharacterHero heroWithSpellRepertoire) { var warlockSpellLevel = SharedSpellsContext.GetWarlockSpellLevel(heroWithSpellRepertoire); - var usedSpellsSlots = - rulesetSpellRepertoire.usedSpellsSlots; + var usedSpellsSlots = rulesetSpellRepertoire.usedSpellsSlots; for (var i = SharedSpellsContext.PactMagicSlotsTab; i <= warlockSpellLevel; i++) { @@ -140,14 +176,12 @@ private static void SpendWarlockSlots(RulesetSpellRepertoire rulesetSpellReperto } private static void SpendMulticasterWarlockSlots( - RulesetSpellRepertoire __instance, - RulesetCharacterHero heroWithSpellRepertoire, - int slotLevel) + RulesetSpellRepertoire __instance, RulesetCharacterHero hero, int slotLevel) { - var pactMaxSlots = SharedSpellsContext.GetWarlockMaxSlots(heroWithSpellRepertoire); - var pactUsedSlots = SharedSpellsContext.GetWarlockUsedSlots(heroWithSpellRepertoire); + var pactMaxSlots = SharedSpellsContext.GetWarlockMaxSlots(hero); + var pactUsedSlots = SharedSpellsContext.GetWarlockUsedSlots(hero); - var warlockSpellLevel = SharedSpellsContext.GetWarlockSpellLevel(heroWithSpellRepertoire); + var warlockSpellLevel = SharedSpellsContext.GetWarlockSpellLevel(hero); var canConsumePactSlot = pactMaxSlots - pactUsedSlots > 0 && slotLevel <= warlockSpellLevel; __instance.GetSlotsNumber(slotLevel, out var totalRemainingSlots, out var totalMaxSlots); @@ -158,11 +192,7 @@ private static void SpendMulticasterWarlockSlots( var isShiftPressed = !Global.IsMultiplayer && (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)); -#if false - var isShiftPressed = (Global.CurrentAction is CharacterActionCastSpell or CharacterActionSpendSpellSlot - && Global.CurrentAction.actionParams.BoolParameter5) || - (Global.CurrentAction is null && isShiftPressedForSlotsPointsConversion); -#endif + var forceConsumePactSlot = sharedUsedSlots == sharedMaxSlots || (__instance.SpellCastingClass != DatabaseHelper.CharacterClassDefinitions.Warlock && isShiftPressed) || @@ -172,26 +202,34 @@ private static void SpendMulticasterWarlockSlots( // uses short rest slots across all non race repertoires if (canConsumePactSlot && forceConsumePactSlot) { - foreach (var spellRepertoire in heroWithSpellRepertoire.SpellRepertoires + foreach (var spellRepertoire in hero.SpellRepertoires .Where(x => x.SpellCastingFeature.SpellCastingOrigin != FeatureDefinitionCastSpell.CastingOrigin.Race)) { - SpendWarlockSlots(spellRepertoire, heroWithSpellRepertoire); + SpendWarlockSlots(spellRepertoire, hero); } } - // otherwise uses long rest slots across all non race repertoires + // otherwise uses long rest slots across all non-race repertoires else { - foreach (var spellRepertoire in heroWithSpellRepertoire.SpellRepertoires + var consume = true; + + foreach (var spellRepertoire in hero.SpellRepertoires .Where(x => x.SpellCastingFeature.SpellCastingOrigin != FeatureDefinitionCastSpell.CastingOrigin.Race)) { - var usedSpellsSlots = spellRepertoire.usedSpellsSlots; + if (Main.Settings.UseAlternateSpellPointsSystem) + { + SpellPointsContext.ConsumeSlotsAtLevelsPointsCannotCastAnymore( + hero, spellRepertoire, slotLevel, consume, true); - usedSpellsSlots.TryAdd(slotLevel, 0); - usedSpellsSlots[slotLevel]++; - spellRepertoire.RepertoireRefreshed?.Invoke(spellRepertoire); + consume = false; + } + else + { + ConsumeSlot(spellRepertoire, slotLevel); + } } } } @@ -369,7 +407,7 @@ public static bool Prefix(RulesetSpellRepertoire __instance, ref int __result) var warlockSpellLevel = SharedSpellsContext.GetWarlockSpellLevel(hero); - // get off here if doesn't have any Warlock level + // get off here if it doesn't have any Warlock level if (warlockSpellLevel == 0) { return true; diff --git a/SolastaUnfinishedBusiness/Patches/SlotStatusTablePatcher.cs b/SolastaUnfinishedBusiness/Patches/SlotStatusTablePatcher.cs index 7709d63372..dcbfc86992 100644 --- a/SolastaUnfinishedBusiness/Patches/SlotStatusTablePatcher.cs +++ b/SolastaUnfinishedBusiness/Patches/SlotStatusTablePatcher.cs @@ -46,27 +46,54 @@ public static IEnumerable Transpiler([NotNull] IEnumerable spells, int spellLevel) { - var heroWithSpellRepertoire = spellRepertoire?.GetCasterHero(); + var hero = spellRepertoire?.GetCasterHero(); // spellRepertoire is null during level up... - if (heroWithSpellRepertoire == null || spellLevel == 0 || - !SharedSpellsContext.IsMulticaster(heroWithSpellRepertoire) || spellRepertoire.SpellCastingRace) + if (spellLevel == 0 || hero == null) { return; } + if (spellRepertoire.SpellCastingRace) + { + return; + } + + if (!SharedSpellsContext.IsMulticaster(hero)) + { + //PATCH: support display cost on spell level blocks (SPELL_POINTS) + // ReSharper disable once InvertIf + if (Main.Settings.UseAlternateSpellPointsSystem && + spellRepertoire.spellCastingClass != Warlock) + { + for (var index = 0; index < __instance.table.childCount; ++index) + { + var component = __instance.table.GetChild(index).GetComponent(); + + SpellPointsContext.DisplayCostOnSpellLevelBlocks(__instance, component, spellLevel, + spells.Count); + } + } + + return; + } + spellRepertoire.GetSlotsNumber(spellLevel, out var totalSlotsRemainingCount, out var totalSlotsCount); MulticlassGameUiContext.PaintPactSlots( - heroWithSpellRepertoire, + hero, totalSlotsCount, totalSlotsRemainingCount, spellLevel, - __instance.table, - (Global.InspectedHero != null && spellRepertoire.spellCastingClass == Warlock) - || (Global.InspectedHero == null && !Main.Settings.DisplayPactSlotsOnSpellSelectionPanel)); + spells.Count, + __instance, + (Global.InspectedHero != null && spellRepertoire.spellCastingClass == Warlock) || + (Global.InspectedHero == null && + !(Main.Settings.DisplayPactSlotsOnSpellSelectionPanel && + !Main.Settings.UseAlternateSpellPointsSystem))); } } diff --git a/SolastaUnfinishedBusiness/Portraits/Achtung.png b/SolastaUnfinishedBusiness/Portraits/Achtung.png new file mode 100644 index 0000000000..ceba862e7c Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/Achtung.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/Bawwit.png b/SolastaUnfinishedBusiness/Portraits/Bawwit.png new file mode 100644 index 0000000000..5cb8f7afbd Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/Bawwit.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/DrowFemale.png b/SolastaUnfinishedBusiness/Portraits/DrowFemale.png new file mode 100644 index 0000000000..d0547f9fa5 Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/DrowFemale.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/ElvenDruid3.png b/SolastaUnfinishedBusiness/Portraits/ElvenDruid3.png new file mode 100644 index 0000000000..1a420f82ab Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/ElvenDruid3.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/ElvenRogue9.png b/SolastaUnfinishedBusiness/Portraits/ElvenRogue9.png new file mode 100644 index 0000000000..c197dffe81 Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/ElvenRogue9.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/Halfling.png b/SolastaUnfinishedBusiness/Portraits/Halfling.png new file mode 100644 index 0000000000..2b627214b2 Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/Halfling.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/Haveruss.png b/SolastaUnfinishedBusiness/Portraits/Haveruss.png new file mode 100644 index 0000000000..d13de10560 Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/Haveruss.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/Kirian.png b/SolastaUnfinishedBusiness/Portraits/Kirian.png new file mode 100644 index 0000000000..59c6011a1a Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/Kirian.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/OrcFemale.png b/SolastaUnfinishedBusiness/Portraits/OrcFemale.png new file mode 100644 index 0000000000..a36e24bde3 Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/OrcFemale.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/Sohrden.png b/SolastaUnfinishedBusiness/Portraits/Sohrden.png new file mode 100644 index 0000000000..fadd9a3d60 Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/Sohrden.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/Thaelen.png b/SolastaUnfinishedBusiness/Portraits/Thaelen.png new file mode 100644 index 0000000000..3da8520155 Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/Thaelen.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/Thieflings.png b/SolastaUnfinishedBusiness/Portraits/Thieflings.png new file mode 100644 index 0000000000..6d0bc55e5f Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/Thieflings.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/TieflingMale3.png b/SolastaUnfinishedBusiness/Portraits/TieflingMale3.png new file mode 100644 index 0000000000..879ea65425 Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/TieflingMale3.png differ diff --git a/SolastaUnfinishedBusiness/Portraits/Tijiriu.png b/SolastaUnfinishedBusiness/Portraits/Tijiriu.png new file mode 100644 index 0000000000..dfc741e4e9 Binary files /dev/null and b/SolastaUnfinishedBusiness/Portraits/Tijiriu.png differ diff --git a/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs b/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs index 5344bc6a01..3aaeacff0c 100644 --- a/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs +++ b/SolastaUnfinishedBusiness/Properties/Resources.Designer.cs @@ -909,6 +909,16 @@ public static byte[] CircleOfTheAncientForest { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] CircleOfTheCosmos { + get { + object obj = ResourceManager.GetObject("CircleOfTheCosmos", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -1199,6 +1209,16 @@ public static byte[] DomainDefiler { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] DomainNature { + get { + object obj = ResourceManager.GetObject("DomainNature", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -1209,6 +1229,16 @@ public static byte[] DomainSmith { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] DomainTempest { + get { + object obj = ResourceManager.GetObject("DomainTempest", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -2019,6 +2049,16 @@ public static byte[] IntellectFortress { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] Interception { + get { + object obj = ResourceManager.GetObject("Interception", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -2089,6 +2129,16 @@ public static byte[] InventorQuickWit { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] InventorVitriolist { + get { + object obj = ResourceManager.GetObject("InventorVitriolist", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -2312,9 +2362,29 @@ public static byte[] MantleOfThorns { /// /// Looks up a localized resource of type System.Byte[]. /// - public static byte[] MartialMarshal { + public static byte[] MartialArcaneArcher { + get { + object obj = ResourceManager.GetObject("MartialArcaneArcher", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] MartialForceKnight { + get { + object obj = ResourceManager.GetObject("MartialForceKnight", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] MartialGuardian { get { - object obj = ResourceManager.GetObject("MartialMarshal", resourceCulture); + object obj = ResourceManager.GetObject("MartialGuardian", resourceCulture); return ((byte[])(obj)); } } @@ -2352,9 +2422,9 @@ public static byte[] MartialTactician { /// /// Looks up a localized resource of type System.Byte[]. /// - public static byte[] MartialWeaponMaster { + public static byte[] MartialWarlord { get { - object obj = ResourceManager.GetObject("MartialWeaponMaster", resourceCulture); + object obj = ResourceManager.GetObject("MartialWarlord", resourceCulture); return ((byte[])(obj)); } } @@ -2362,9 +2432,9 @@ public static byte[] MartialWeaponMaster { /// /// Looks up a localized resource of type System.Byte[]. /// - public static byte[] Merciless { + public static byte[] MartialWeaponMaster { get { - object obj = ResourceManager.GetObject("Merciless", resourceCulture); + object obj = ResourceManager.GetObject("MartialWeaponMaster", resourceCulture); return ((byte[])(obj)); } } @@ -2612,6 +2682,16 @@ public static byte[] PathOfTheLight { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] PathOfTheRavager { + get { + object obj = ResourceManager.GetObject("PathOfTheRavager", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -2662,6 +2742,26 @@ public static byte[] PathOfTheYeoman { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] PatronArchfey { + get { + object obj = ResourceManager.GetObject("PatronArchfey", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] PatronCelestial { + get { + object obj = ResourceManager.GetObject("PatronCelestial", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -2692,6 +2792,16 @@ public static byte[] PatronMoonlit { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] PatronMountain { + get { + object obj = ResourceManager.GetObject("PatronMountain", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -2782,16 +2892,6 @@ public static byte[] PoisonWave { } } - /// - /// Looks up a localized resource of type System.Byte[]. - /// - public static byte[] PolearmExpert { - get { - object obj = ResourceManager.GetObject("PolearmExpert", resourceCulture); - return ((byte[])(obj)); - } - } - /// /// Looks up a localized resource of type System.Byte[]. /// @@ -2942,6 +3042,16 @@ public static byte[] PowerCharmAnimalsAndPlants { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] PowerClingeStrength { + get { + object obj = ResourceManager.GetObject("PowerClingeStrength", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -3962,6 +4072,26 @@ public static byte[] RangerArcanist { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] RangerFeyWanderer { + get { + object obj = ResourceManager.GetObject("RangerFeyWanderer", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] RangerGloomStalker { + get { + object obj = ResourceManager.GetObject("RangerGloomStalker", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -3982,6 +4112,16 @@ public static byte[] RangerLightBearer { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] RangerSkyWarrior { + get { + object obj = ResourceManager.GetObject("RangerSkyWarrior", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -4092,6 +4232,16 @@ public static byte[] RoguishArcaneScoundrel { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] RoguishBladeCaller { + get { + object obj = ResourceManager.GetObject("RoguishBladeCaller", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -4135,9 +4285,9 @@ public static byte[] RoguishSlayer { /// /// Looks up a localized resource of type System.Byte[]. /// - public static byte[] RopeItUp { + public static byte[] RoguishUmbralStalker { get { - object obj = ResourceManager.GetObject("RopeItUp", resourceCulture); + object obj = ResourceManager.GetObject("RoguishUmbralStalker", resourceCulture); return ((byte[])(obj)); } } @@ -4172,16 +4322,6 @@ public static byte[] SearingSmite { } } - /// - /// Looks up a localized resource of type System.Byte[]. - /// - public static byte[] Sentinel { - get { - object obj = ResourceManager.GetObject("Sentinel", resourceCulture); - return ((byte[])(obj)); - } - } - /// /// Looks up a localized resource of type System.Byte[]. /// @@ -4225,9 +4365,9 @@ public static byte[] ShelterFromEnergy { /// /// Looks up a localized resource of type System.Byte[]. /// - public static byte[] ShieldExpert { + public static byte[] SickeningRadiance { get { - object obj = ResourceManager.GetObject("ShieldExpert", resourceCulture); + object obj = ResourceManager.GetObject("SickeningRadiance", resourceCulture); return ((byte[])(obj)); } } @@ -4282,6 +4422,16 @@ public static byte[] SorcererDivineHeart { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] SorcererPsion { + get { + object obj = ResourceManager.GetObject("SorcererPsion", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -4865,9 +5015,9 @@ public static byte[] WayOfTheDiscordance { /// /// Looks up a localized resource of type System.Byte[]. /// - public static byte[] WayOfTheDistantHand { + public static byte[] WayOfTheDragon { get { - object obj = ResourceManager.GetObject("WayOfTheDistantHand", resourceCulture); + object obj = ResourceManager.GetObject("WayOfTheDragon", resourceCulture); return ((byte[])(obj)); } } @@ -4875,9 +5025,9 @@ public static byte[] WayOfTheDistantHand { /// /// Looks up a localized resource of type System.Byte[]. /// - public static byte[] WayOfTheDragon { + public static byte[] WayOfTheSilhouette { get { - object obj = ResourceManager.GetObject("WayOfTheDragon", resourceCulture); + object obj = ResourceManager.GetObject("WayOfTheSilhouette", resourceCulture); return ((byte[])(obj)); } } @@ -4885,9 +5035,29 @@ public static byte[] WayOfTheDragon { /// /// Looks up a localized resource of type System.Byte[]. /// - public static byte[] WayOfTheSilhouette { + public static byte[] WayOfTheStormSoul { get { - object obj = ResourceManager.GetObject("WayOfTheSilhouette", resourceCulture); + object obj = ResourceManager.GetObject("WayOfTheStormSoul", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] WayOfTheWealAndWoe { + get { + object obj = ResourceManager.GetObject("WayOfTheWealAndWoe", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] WayOfTheZenArchery { + get { + object obj = ResourceManager.GetObject("WayOfTheZenArchery", resourceCulture); return ((byte[])(obj)); } } @@ -5012,6 +5182,16 @@ public static byte[] WizardSpellMaster { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + public static byte[] WizardWarMagic { + get { + object obj = ResourceManager.GetObject("WizardWarMagic", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// diff --git a/SolastaUnfinishedBusiness/Properties/Resources.resx b/SolastaUnfinishedBusiness/Properties/Resources.resx index bb0711bdd0..7fd2085d62 100644 --- a/SolastaUnfinishedBusiness/Properties/Resources.resx +++ b/SolastaUnfinishedBusiness/Properties/Resources.resx @@ -152,6 +152,11 @@ PublicKeyToken=b77a5c561934e089 + + ../Resources/Spells/SickeningRadiance.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + ../Resources/Spells/ShelterFromEnergy.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -297,6 +302,11 @@ PublicKeyToken=b77a5c561934e089 + + ../Resources/Powers/PowerClingeStrength.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + ../Resources/Powers/PowerSpiritTeleport.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -1289,36 +1299,11 @@ PublicKeyToken=b03f5f7f11d50a3a - - ../Resources/FightingStyles/Merciless.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b03f5f7f11d50a3a - - - - ../Resources/FightingStyles/PolearmExpert.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b03f5f7f11d50a3a - - ../Resources/FightingStyles/Pugilist.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ../Resources/FightingStyles/RopeItUp.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b03f5f7f11d50a3a - - - - ../Resources/FightingStyles/Sentinel.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b03f5f7f11d50a3a - - - - ../Resources/FightingStyles/ShieldExpert.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b03f5f7f11d50a3a - - ../Resources/FightingStyles/Torchbearer.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2010,6 +1995,11 @@ Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\CircleOfTheCosmos.png;System.Byte[], mscorlib, Version=4.0.0.0, + Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\CircleOfTheForestGuardian.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2060,6 +2050,16 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\DomainNature.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\Subclasses\DomainTempest.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\DomainDefiler.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2092,13 +2092,34 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\InventorVitriolist.png;System.Byte[], mscorlib, Version=4.0.0.0, + Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\InventorWeapon.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Subclasses\MartialMarshal.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + + ..\Resources\Subclasses\MartialArcaneArcher.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\Subclasses\MartialGuardian.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\Subclasses\MartialWarlord.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\Subclasses\MartialForceKnight.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2153,8 +2174,23 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\PatronArchfey.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\Subclasses\PatronCelestial.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + - ..\Resources\Subclasses\PatronElementalist.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + ..\Resources\Subclasses\PatronArchfey.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\Subclasses\PatronMountain.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2168,6 +2204,11 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\PathOfTheRavager.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\PathOfTheReaver.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2231,6 +2272,16 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\RangerFeyWanderer.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\Subclasses\RangerGloomStalker.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\RangerLightBearer.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2241,6 +2292,11 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\RangerSkyWarrior.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\RangerSurvivalist.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2262,6 +2318,12 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\RoguishBladeCaller.png;System.Byte[], mscorlib, Version=4.0.0.0, + Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\RoguishDuelist.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2282,12 +2344,23 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\RoguishUmbralStalker.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\SorcererDivineHeart.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\SorcererPsion.png;System.Byte[], mscorlib, Version=4.0.0.0, + Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\SorcererFieldManipulator.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2309,8 +2382,14 @@ PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Subclasses\WayOfTheDistantHand.png;System.Byte[], mscorlib, Version=4.0.0.0, + + ..\Resources\Subclasses\WayOfTheStormSoul.png;System.Byte[], mscorlib, Version=4.0.0.0, + Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\Subclasses\WayOfTheZenArchery.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2325,6 +2404,11 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\WayOfTheWealAndWoe.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\WizardArcaneFighter.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, @@ -2351,6 +2435,11 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Subclasses\WizardWarMagic.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\PreferredEnemy\PreferredEnemyAberration.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -2387,6 +2476,12 @@ PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\FightingStyles\Interception.png;System.Byte[], mscorlib, Version=4.0.0.0, + Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\PreferredEnemy\PreferredEnemyFiend.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/SolastaUnfinishedBusiness/Races/Fairy.cs b/SolastaUnfinishedBusiness/Races/Fairy.cs index cf8993110c..56f1adbf57 100644 --- a/SolastaUnfinishedBusiness/Races/Fairy.cs +++ b/SolastaUnfinishedBusiness/Races/Fairy.cs @@ -1,5 +1,4 @@ -using System.Linq; -using JetBrains.Annotations; +using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Builders; using SolastaUnfinishedBusiness.Builders.Features; @@ -169,12 +168,10 @@ public void OnItemEquipped(RulesetCharacterHero hero) return; } - var rulesetCondition = hero.AllConditions - .FirstOrDefault(x => x.ConditionDefinition == condition); - - if (rulesetCondition != null) + if (hero.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, condition.Name, out var activeCondition)) { - hero.RemoveCondition(rulesetCondition); + hero.RemoveCondition(activeCondition); } } } diff --git a/SolastaUnfinishedBusiness/Races/Malakh.cs b/SolastaUnfinishedBusiness/Races/Malakh.cs index 6352c8cba7..a78a346287 100644 --- a/SolastaUnfinishedBusiness/Races/Malakh.cs +++ b/SolastaUnfinishedBusiness/Races/Malakh.cs @@ -1,6 +1,6 @@ -using JetBrains.Annotations; +using System.Collections.Generic; +using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; -using SolastaUnfinishedBusiness.Api.Helpers; using SolastaUnfinishedBusiness.Api.LanguageExtensions; using SolastaUnfinishedBusiness.Behaviors; using SolastaUnfinishedBusiness.Builders; @@ -230,12 +230,33 @@ private static FeatureDefinitionPower BuildAngelicFlight(FeatureDefinition addit private static FeatureDefinitionPower BuildAngelicRadiance(FeatureDefinition additionalDamageMalakhAngelicForm) { + var powerMalakhAngelicRadianceDamage = FeatureDefinitionPowerBuilder + .Create($"Power{Name}AngelicRadianceDamage") + .SetGuiPresentation($"Power{Name}AngelicRadiance", Category.Feature, hidden: true) + .SetUsesFixed(ActivationTime.NoCost) + .SetShowCasting(false) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.Enemy, RangeType.Distance, 6, TargetType.IndividualsUnique) + .SetEffectForms(EffectFormBuilder.DamageForm(DamageTypeRadiant, 1, DieType.D4)) + .SetImpactEffectParameters(FeatureDefinitionAdditionalDamages.AdditionalDamageBrandingSmite + .impactParticleReference) + .Build()) + .AddToDB(); + + powerMalakhAngelicRadianceDamage.AddCustomSubFeatures( + new ModifyEffectDescriptionAngelicRadianceDamage(powerMalakhAngelicRadianceDamage)); + var conditionAngelicRadiance = ConditionDefinitionBuilder .Create($"Condition{Name}AngelicRadiance") .SetGuiPresentation(Category.Condition, ConditionDefinitions.ConditionDivineFavor) .SetConditionType(ConditionType.Beneficial) - .AddFeatures(additionalDamageMalakhAngelicForm) - .AddCustomSubFeatures(new CharacterTurnEndListenerAngelicRadiance()) + .SetPossessive() + .AddFeatures(additionalDamageMalakhAngelicForm, powerMalakhAngelicRadianceDamage) + .AddCustomSubFeatures( + AddUsablePowersFromCondition.Marker, + new CharacterTurnEndListenerAngelicRadiance(powerMalakhAngelicRadianceDamage)) .AddToDB(); var faerieFireLightSource = @@ -259,30 +280,29 @@ private static FeatureDefinitionPower BuildAngelicRadiance(FeatureDefinition add faerieFireLightSource.lightSourceForm.color, faerieFireLightSource.lightSourceForm.graphicsPrefabReference) .Build()) + .SetCasterEffectParameters(SpellDefinitions.BrandingSmite) .Build()) .AddToDB(); return powerMalakhAngelicRadiance; } - private class CharacterTurnEndListenerAngelicRadiance : ICharacterBeforeTurnEndListener + private sealed class ModifyEffectDescriptionAngelicRadianceDamage(FeatureDefinitionPower powerDamage) + : IModifyEffectDescription { - public void OnCharacterBeforeTurnEnded(GameLocationCharacter locationCharacter) + public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) { - if (Gui.Battle == null) - { - return; - } - - var rulesetCharacter = locationCharacter.RulesetCharacter; - - if (rulesetCharacter is not { IsDeadOrDyingOrUnconscious: false }) - { - return; - } + return definition == powerDamage; + } - var characterLevel = rulesetCharacter.TryGetAttributeValue(AttributeDefinitions.CharacterLevel); - var dieType = characterLevel switch + public EffectDescription GetEffectDescription( + BaseDefinition definition, + EffectDescription effectDescription, + RulesetCharacter character, + RulesetEffect rulesetEffect) + { + var levels = character.TryGetAttributeValue(AttributeDefinitions.CharacterLevel); + var dieType = levels switch { < 5 => DieType.D4, < 9 => DieType.D6, @@ -291,35 +311,48 @@ public void OnCharacterBeforeTurnEnded(GameLocationCharacter locationCharacter) _ => DieType.D12 }; - var damageForm = new DamageForm + effectDescription.EffectForms[0].DamageForm.DieType = dieType; + + return effectDescription; + } + } + + private sealed class CharacterTurnEndListenerAngelicRadiance( + FeatureDefinitionPower powerAngelicRadianceDamage) : ICharacterBeforeTurnEndListener + { + public void OnCharacterBeforeTurnEnded(GameLocationCharacter locationCharacter) + { + if (Gui.Battle == null) { - DamageType = DamageTypeRadiant, - DieType = dieType, - DiceNumber = 1, - BonusDamage = 0, - IgnoreCriticalDoubleDice = true - }; + return; + } + + var rulesetAttacker = locationCharacter.RulesetCharacter; + + var implementationManager = + ServiceRepository.GetService() as RulesetImplementationManager; + + var targets = Gui.Battle.GetContenders(locationCharacter, withinRange: 3); - var implementationService = ServiceRepository.GetService(); + var actionModifiers = new List(); - // ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator - foreach (var enemy in Gui.Battle.GetContenders(locationCharacter, withinRange: 3)) + for (var i = 0; i < targets.Count; i++) { - var applyFormsParams = new RulesetImplementationDefinitions.ApplyFormsParams - { - sourceCharacter = rulesetCharacter, - targetCharacter = enemy.RulesetCharacter, - position = enemy.LocationPosition - }; - - EffectHelpers.StartVisualEffect(locationCharacter, enemy, SpellDefinitions.BrandingSmite); - implementationService.ApplyEffectForms( - [new EffectForm { damageForm = damageForm }], - applyFormsParams, - [DamageTypeRadiant], - out _, - out _); + actionModifiers.Add(new ActionModifier()); } + + var usablePower = PowerProvider.Get(powerAngelicRadianceDamage, rulesetAttacker); + var actionParams = new CharacterActionParams(locationCharacter, ActionDefinitions.Id.SpendPower) + { + ActionModifiers = actionModifiers, + RulesetEffect = implementationManager + .MyInstantiateEffectPower(rulesetAttacker, usablePower, false), + UsablePower = usablePower, + targetCharacters = targets + }; + + ServiceRepository.GetService()? + .ExecuteAction(actionParams, null, true); } } } diff --git a/SolastaUnfinishedBusiness/Races/TieflingVariant.cs b/SolastaUnfinishedBusiness/Races/TieflingVariant.cs index 1fafdae943..762f58c2de 100644 --- a/SolastaUnfinishedBusiness/Races/TieflingVariant.cs +++ b/SolastaUnfinishedBusiness/Races/TieflingVariant.cs @@ -1,5 +1,4 @@ -using System.Linq; -using JetBrains.Annotations; +using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Api.LanguageExtensions; using SolastaUnfinishedBusiness.Builders; @@ -277,12 +276,10 @@ public void OnItemEquipped(RulesetCharacterHero hero) return; } - var rulesetCondition = hero.AllConditions - .FirstOrDefault(x => x.ConditionDefinition == condition); - - if (rulesetCondition != null) + if (hero.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, condition.Name, out var activeCondition)) { - hero.RemoveCondition(rulesetCondition); + hero.RemoveCondition(activeCondition); } } } diff --git a/SolastaUnfinishedBusiness/Resources/FightingStyles/RopeItUp.png b/SolastaUnfinishedBusiness/Resources/FightingStyles/Interception.png similarity index 100% rename from SolastaUnfinishedBusiness/Resources/FightingStyles/RopeItUp.png rename to SolastaUnfinishedBusiness/Resources/FightingStyles/Interception.png diff --git a/SolastaUnfinishedBusiness/Resources/FightingStyles/PolearmExpert.png b/SolastaUnfinishedBusiness/Resources/FightingStyles/PolearmExpert.png deleted file mode 100644 index d2df5b7dd2..0000000000 Binary files a/SolastaUnfinishedBusiness/Resources/FightingStyles/PolearmExpert.png and /dev/null differ diff --git a/SolastaUnfinishedBusiness/Resources/Names.txt b/SolastaUnfinishedBusiness/Resources/Names.txt index ecad8bc845..42aa0490b8 100644 --- a/SolastaUnfinishedBusiness/Resources/Names.txt +++ b/SolastaUnfinishedBusiness/Resources/Names.txt @@ -591,9 +591,6 @@ RaceFairy Sur Maeradok RaceFairy Sur Ceinnath RaceFairy Sur Joxisys RaceFairy Sur Mossy -RaceFairy Sur Ourrith -RaceFairy Sur Urchin -RaceFairy Sur Yeswenys RaceOligath Sur Sulzar RaceOligath Sur Runnern RaceOligath Sur Zaztej @@ -614,7 +611,6 @@ RaceWyrmkin Sur Thraksaeurt RaceWyrmkin Sur Vernart RaceWyrmkin Sur Maeradok RaceWendigo Sur Drucnur -RaceWendigo Sur Fenthwick RaceWendigo Sur Wayrick RaceWendigo Sur Koemi RaceWendigo Sur Demi @@ -622,12 +618,7 @@ RaceWendigo Male Mirayarus RaceWendigo Male Fenmyar RaceWendigo Male Mirayarus RaceWendigo Male Yeljor -RaceWendigo Male Corfra -RaceWendigo Male Aeghal -RaceWendigo Male Stone RaceWendigo Female Lucky RaceWendigo Female Nightfall RaceWendigo Female Sylmoira -RaceWendigo Female Fastina -RaceWendigo Female Envaris -RaceWendigo Female Wuenwetel \ No newline at end of file +RaceWendigo Female Fastina \ No newline at end of file diff --git a/Media/PowerMarkForDeath.png b/SolastaUnfinishedBusiness/Resources/Powers/PowerClingeStrength.png similarity index 100% rename from Media/PowerMarkForDeath.png rename to SolastaUnfinishedBusiness/Resources/Powers/PowerClingeStrength.png diff --git a/SolastaUnfinishedBusiness/Resources/Spells/SickeningRadiance.png b/SolastaUnfinishedBusiness/Resources/Spells/SickeningRadiance.png new file mode 100644 index 0000000000..a59bc55a07 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Spells/SickeningRadiance.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/CircleOfTheCosmos.png b/SolastaUnfinishedBusiness/Resources/Subclasses/CircleOfTheCosmos.png new file mode 100644 index 0000000000..509ebd4320 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/CircleOfTheCosmos.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/CircleOfTheWildfire.png b/SolastaUnfinishedBusiness/Resources/Subclasses/CircleOfTheWildfire.png index 3b05dae85c..3965b5c9d6 100644 Binary files a/SolastaUnfinishedBusiness/Resources/Subclasses/CircleOfTheWildfire.png and b/SolastaUnfinishedBusiness/Resources/Subclasses/CircleOfTheWildfire.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/CollegeOfElegance.png b/SolastaUnfinishedBusiness/Resources/Subclasses/CollegeOfElegance.png index de652ccc16..51d57acc9e 100644 Binary files a/SolastaUnfinishedBusiness/Resources/Subclasses/CollegeOfElegance.png and b/SolastaUnfinishedBusiness/Resources/Subclasses/CollegeOfElegance.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/CollegeOfValiance.png b/SolastaUnfinishedBusiness/Resources/Subclasses/CollegeOfValiance.png index 96062c5cb2..cb3954629c 100644 Binary files a/SolastaUnfinishedBusiness/Resources/Subclasses/CollegeOfValiance.png and b/SolastaUnfinishedBusiness/Resources/Subclasses/CollegeOfValiance.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/DomainNature.png b/SolastaUnfinishedBusiness/Resources/Subclasses/DomainNature.png new file mode 100644 index 0000000000..0027440098 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/DomainNature.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/DomainTempest.png b/SolastaUnfinishedBusiness/Resources/Subclasses/DomainTempest.png new file mode 100644 index 0000000000..3db055c2a4 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/DomainTempest.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/InventorVitriolist.png b/SolastaUnfinishedBusiness/Resources/Subclasses/InventorVitriolist.png new file mode 100644 index 0000000000..318a184a41 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/InventorVitriolist.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/MartialArcaneArcher.png b/SolastaUnfinishedBusiness/Resources/Subclasses/MartialArcaneArcher.png new file mode 100644 index 0000000000..48ab557e2e Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/MartialArcaneArcher.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/MartialForceKnight.png b/SolastaUnfinishedBusiness/Resources/Subclasses/MartialForceKnight.png new file mode 100644 index 0000000000..a668c4a731 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/MartialForceKnight.png differ diff --git a/SolastaUnfinishedBusiness/Resources/FightingStyles/ShieldExpert.png b/SolastaUnfinishedBusiness/Resources/Subclasses/MartialGuardian.png similarity index 100% rename from SolastaUnfinishedBusiness/Resources/FightingStyles/ShieldExpert.png rename to SolastaUnfinishedBusiness/Resources/Subclasses/MartialGuardian.png diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/MartialMarshal.png b/SolastaUnfinishedBusiness/Resources/Subclasses/MartialWarlord.png similarity index 100% rename from SolastaUnfinishedBusiness/Resources/Subclasses/MartialMarshal.png rename to SolastaUnfinishedBusiness/Resources/Subclasses/MartialWarlord.png diff --git a/SolastaUnfinishedBusiness/Resources/FightingStyles/Merciless.png b/SolastaUnfinishedBusiness/Resources/Subclasses/PathOfTheRavager.png similarity index 100% rename from SolastaUnfinishedBusiness/Resources/FightingStyles/Merciless.png rename to SolastaUnfinishedBusiness/Resources/Subclasses/PathOfTheRavager.png diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/PatronArchfey.png b/SolastaUnfinishedBusiness/Resources/Subclasses/PatronArchfey.png new file mode 100644 index 0000000000..5bf924cc99 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/PatronArchfey.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/PatronCelestial.png b/SolastaUnfinishedBusiness/Resources/Subclasses/PatronCelestial.png new file mode 100644 index 0000000000..9875221aa1 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/PatronCelestial.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/PatronMountain.png b/SolastaUnfinishedBusiness/Resources/Subclasses/PatronMountain.png new file mode 100644 index 0000000000..4dfda3c9ad Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/PatronMountain.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/RangerFeyWanderer.png b/SolastaUnfinishedBusiness/Resources/Subclasses/RangerFeyWanderer.png new file mode 100644 index 0000000000..280699881a Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/RangerFeyWanderer.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/RangerGloomStalker.png b/SolastaUnfinishedBusiness/Resources/Subclasses/RangerGloomStalker.png new file mode 100644 index 0000000000..292a260848 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/RangerGloomStalker.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/RangerSkyWarrior.png b/SolastaUnfinishedBusiness/Resources/Subclasses/RangerSkyWarrior.png new file mode 100644 index 0000000000..dc5ff90cfd Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/RangerSkyWarrior.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/RoguishAcrobat.png b/SolastaUnfinishedBusiness/Resources/Subclasses/RoguishAcrobat.png index 9d6d5f4110..d2df5b7dd2 100644 Binary files a/SolastaUnfinishedBusiness/Resources/Subclasses/RoguishAcrobat.png and b/SolastaUnfinishedBusiness/Resources/Subclasses/RoguishAcrobat.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/RoguishBladeCaller.png b/SolastaUnfinishedBusiness/Resources/Subclasses/RoguishBladeCaller.png new file mode 100644 index 0000000000..9d6d5f4110 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/RoguishBladeCaller.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/RoguishUmbralStalker.png b/SolastaUnfinishedBusiness/Resources/Subclasses/RoguishUmbralStalker.png new file mode 100644 index 0000000000..223e4a8d21 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/RoguishUmbralStalker.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/SorcererPsion.png b/SolastaUnfinishedBusiness/Resources/Subclasses/SorcererPsion.png new file mode 100644 index 0000000000..6f6e161aa1 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/SorcererPsion.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/WayOfTheStormSoul.png b/SolastaUnfinishedBusiness/Resources/Subclasses/WayOfTheStormSoul.png new file mode 100644 index 0000000000..2042dfc04f Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/WayOfTheStormSoul.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/WayOfTheWealAndWoe.png b/SolastaUnfinishedBusiness/Resources/Subclasses/WayOfTheWealAndWoe.png new file mode 100644 index 0000000000..6de758e840 Binary files /dev/null and b/SolastaUnfinishedBusiness/Resources/Subclasses/WayOfTheWealAndWoe.png differ diff --git a/SolastaUnfinishedBusiness/Resources/Subclasses/WayOfTheDistantHand.png b/SolastaUnfinishedBusiness/Resources/Subclasses/WayOfTheZenArchery.png similarity index 100% rename from SolastaUnfinishedBusiness/Resources/Subclasses/WayOfTheDistantHand.png rename to SolastaUnfinishedBusiness/Resources/Subclasses/WayOfTheZenArchery.png diff --git a/SolastaUnfinishedBusiness/Resources/FightingStyles/Sentinel.png b/SolastaUnfinishedBusiness/Resources/Subclasses/WizardWarMagic.png similarity index 100% rename from SolastaUnfinishedBusiness/Resources/FightingStyles/Sentinel.png rename to SolastaUnfinishedBusiness/Resources/Subclasses/WizardWarMagic.png diff --git a/SolastaUnfinishedBusiness/Settings.cs b/SolastaUnfinishedBusiness/Settings.cs index 094f373456..46f1bf10b6 100644 --- a/SolastaUnfinishedBusiness/Settings.cs +++ b/SolastaUnfinishedBusiness/Settings.cs @@ -237,6 +237,7 @@ public class Settings : UnityModManager.ModSettings // // SRD + public bool UseAlternateSpellPointsSystem { get; set; } public bool UseOfficialAdvantageDisadvantageRules { get; set; } public bool UseOfficialFlankingRules { get; set; } public bool UseMathFlankingRules { get; set; } @@ -400,6 +401,7 @@ public class Settings : UnityModManager.ModSettings // Battle public bool DontFollowCharacterInBattle { get; set; } + public bool NeverMoveCameraOnEnemyTurn { get; set; } public int DontFollowMargin { get; set; } = 5; public int GridSelectedColor { get; set; } = 1; public int MovementGridWidthModifier { get; set; } = 100; @@ -410,6 +412,10 @@ public class Settings : UnityModManager.ModSettings public int HighContrastTargetingAoeSelectedColor { get; set; } public int HighContrastTargetingSingleSelectedColor { get; set; } + // Camera + public bool EnableElevationCameraToStayAtPosition { get; set; } + public int SetElevationCameraMaxHeightBy { get; set; } + // Formation public int FormationGridSelectedSet { get; set; } = -1; diff --git a/SolastaUnfinishedBusiness/Settings/empty.xml b/SolastaUnfinishedBusiness/Settings/empty.xml index a24ed5a8ff..10c5c30a9e 100644 --- a/SolastaUnfinishedBusiness/Settings/empty.xml +++ b/SolastaUnfinishedBusiness/Settings/empty.xml @@ -359,6 +359,7 @@ false false false + false false false false @@ -865,6 +866,7 @@ false false false + false 5 1 100 @@ -873,6 +875,9 @@ false 0 0 + false + false + 0 0 diff --git a/SolastaUnfinishedBusiness/Settings/hiddenHax.xml b/SolastaUnfinishedBusiness/Settings/hiddenHax.xml deleted file mode 100644 index abf6e105c3..0000000000 --- a/SolastaUnfinishedBusiness/Settings/hiddenHax.xml +++ /dev/null @@ -1,1748 +0,0 @@ - - - 0 - 0 - 4 - true - true - true - true - true - true - true - true - false - false - true - true - - - - Barbarian - - - true - - - - - Bard - - - true - - - - - Cleric - - - true - - - - - Druid - - - true - - - - - Fighter - - - true - - - - - Monk - - - true - - - - - Paladin - - - true - - - - - Ranger - - - true - - - - - Rogue - - - true - - - - - Sorcerer - - - true - - - - - Warlock - - - true - - - - - Wizard - - - true - - - - - Inventor - - - true - - - - - - - SpellListBard - - - true - - - - - SpellListCleric - - - true - - - - - SpellListDruid - - - true - - - - - SpellListInventor - - - true - - - - - SpellListPaladin - - - true - - - - - SpellListRanger - - - true - - - - - SpellListSorcerer - - - true - - - - - SpellListWarlock - - - true - - - - - SpellListMonkTraditionLight - - - true - - - - - SpellListWizard - - - true - - - - true - true - true - true - true - true - true - true - true - - Adam_The_Twelth - DLC3_Elven_07_Guard - SRD_DLC_Mage - SRD_Mage - DLC1_NPC_Forge_Escorted_01 - DLC3_NPC_Generic_ElvenCitizen_Husk - Generic_Darkweaver - DLC3_ElvenClans_Leralyn - DLC3_NPC_Elven3_DLC3_Ending - DLC3_NPC_Elven5_DLC3_Ending - Generic_HighPriest - DLC3_Elven_Suspect_05_Guard_Traitor - DLC3_Elven_06_Guard - SRD_DLC3_Archmage - Generic_ShockArcanist - Mutant_Ape - Mutant_Ape_Range - Mutant_Direwolf - Badlands_Ape_MonsterDefinition - BadlandsBear - BadlandsBear_POI_ONLY - Eagle_Matriarch - KindredSpiritApe - KindredSpiritBear - KindredSpiritEagle - KindredSpiritTiger - KindredSpiritViper - KindredSpiritWolf - WildshapeDirewolf - WildShapeWolf - AlphaWolf - ConjuredEightBeast_Wolf - ConjuredTwoBeast_Direwolf - Direwolf - DLC1_Complex_Trained_Direwolf - DLC1_Complex_Trained_Wolf - StarvingWolf - Wolf - FeyBear - FeyGiant_Eagle - FeyGiantApe - FeyWolf - SRD_Werewolf - Captain_Verissa_Ironshell - Conjuration_TheSuperEgo_Master_Humanoid - DLC1_Complex_NPC_Sitinero - DLC1_Complex_NPC_Sitinero_DM_Monster - DLC1_NPC_Fusioned_Orenetis_Sitenero - DLC1_NPC_Sitenero - DLC1_NPC_Tuznut - DLC1_NPC_Tuznut_Hostile - DLC1_NPC_Tuznut_Hostile_DM_Monster - DLC1_Valley_NPC_Samko_Flint - DLC1_Valley_NPC_Telerien_Purevoice - DLC1_NPC_Forge_Hasdrubal - DLC1_NPC_Nobleman_ThePeople07 - DLC1_NPC_Orenetis_Apprentice - DLC1_NPC_ThePeople_Reya_Outpost - DLC3_NPC_Einareum_Merchant_General - DLC3_NPC_SouthernClans_Generic_Cousin_Husk - Lizzaria_Of_Grimhold - Merchant_Gorim_Ironsoot - Merchant_Hugo_Requer - Priest_Of_Misaye_Nel - - - Couatl - CubeOfLight - Conjuration_TheSuperEgo_Master_Humanoid - - - Aksha - Aksha_Legendary - - - Aksha - Aksha_Legendary - - - AcidSplash - Aid - AnimalShapes - BeaconOfHope - Bless - BlessingOfRime - BoomingBlade - DispelMagic - FeatherFall - Knock - Levitate - MassCureWounds - PassWithoutTrace - PowerBarbarianBrutalStrike - PowerBardHopeWordsOfHope6 - PowerBardTraditionManacalonsPerfection - PowerCelestialSearingVengeance - PowerCollegeOfAudacityDefensiveWhirl - PowerCollegeOfAudacityMobileWhirl - PowerCollegeOfValianceHeroicInspiration - PowerDomainElementalHeraldOfTheElementsThunder - PowerFeatChefCookMeal - PowerFeatOrcishAggression - PowerInnovationWeaponArcaneJolt - PowerOathOfJugementPurgeCorruption - PowerOathOfJugementRetribution - PowerOathOfThunderThunderousRebuke - PowerPatronFiendHurlThroughHell - PowerRangerHellWalkerMarkOfTheDammed - PowerRangerLightBearerBlessedWarrior - PowerRiftWalkerRiftStrike - PowerSorcerousPsionMindOverMatter - PowerTraditionOpenHandQuiveringPalmTrigger - PowerWayOfTheDistantHandZenArrowTechnique - PowerWayOfTheDistantHandZenArrowUpgradedTechnique - RayOfEnfeeblement - ResonatingStrike - Sanctuary - ShieldOfFaith - Sparkle - SunlightBlade - TrueStrike - CommandApproach - CommandDrop - CommandFlee - CommandGrovel - CommandHalt - AnimateDead - ArcaneSword - ConjureAnimalsFourBeasts - ConjureAnimalsOneBeast - ConjureAnimalsTwoBeasts - ConjureCelestial - ConjureCelestialCouatl - ConjureCelestialKutkartal - ConjureCelestialMelek - ConjureElemental - ConjureElementalAir - ConjureElementalEarth - ConjureElementalFire - ConjureFey_Ape - ConjureFey_Bear - ConjureFey_Dryad - ConjureFey_Eagle - ConjureFey_GreenHag - ConjureFey_Wolf - ConjureFey - ConjureGoblinoids - ConjureMinorElementals - ConjureMinorElementalsFour - ConjureMinorElementalsOne_b - ConjureMinorElementalsOne - ConjureMinorElementalsTwo - CreateDeadRisenGhost - CreateDeadRisenGhoul - CreateDeadRisenSkeleton_Archer - CreateDeadRisenSkeleton_Enforcer - CreateDeadRisenSkeleton_Knight - CreateDeadRisenSkeleton_Marksman - CreateDeadRisenSkeleton - CreateDeadRisenWight - CreateDeadRisenWightLord - DancingLights - DimensionDoor - FindFamiliar - GiantInsect - SpiritualWeapon - WaterBreathing - WaterWalk - - true - false - false - false - true - - Korragos - Hurk - Perra - Serenrae - - false - true - true - false - false - 100 - 4 - false - 1.5 - 5 - false - false - false - false - true - true - true - true - 0 - false - false - false - true - false - 3 - true - false - true - true - false - false - false - true - true - true - true - false - true - true - true - false - false - true - false - true - - true - false - true - true - true - true - false - true - false - true - false - true - true - true - true - true - true - true - true - true - true - false - true - false - false - false - false - false - false - true - true - true - true - false - - false - - true - true - true - true - true - true - true - true - true - - true - false - true - true - - true - true - true - true - false - true - true - true - true - false - false - false - false - true - false - true - false - false - false - true - true - true - true - false - false - false - false - false - true - true - false - false - true - false - false - true - true - - true - true - 1 - 0 - 0 - 0 - true - true - false - 200 - 0 - 0 - 3 - - - - false - false - false - false - false - false - false - false - false - 4 - - RaceOligath - RaceMalakh - RaceWendigo - RaceImp - RaceWyrmkin - RaceBolgrif - RaceBattleborn - RaceOni - RaceWildling - RaceLizardfolk - - 4 - - RaceDarkelf - RaceHalfElfDark - RaceTieflingMephistopheles - RaceTieflingDevilTongue - RaceHalfElfHigh - RaceTieflingFeral - RaceHalfElfSylvan - RaceTieflingZariel - RaceObsidianDwarf - RaceIronbornDwarf - RaceGrayDwarf - RaceShadarKai - - 4 - - BackgroundDevoted - BackgroundTroublemaker - BackgroundMilitia - - - - - Barbarian - - - 4 - - - - - Bard - - - 4 - - - - - Cleric - - - 4 - - - - - Druid - - - 4 - - - - - Fighter - - - 4 - - - - - Monk - - - 4 - - - - - Paladin - - - 4 - - - - - Ranger - - - 4 - - - - - Rogue - - - 4 - - - - - Sorcerer - - - 4 - - - - - Warlock - - - 4 - - - - - Wizard - - - 4 - - - - - Inventor - - - 4 - - - - - - - Barbarian - - - - PathOfTheElements - PathOfTheLight - PathOfTheReaver - PathOfTheSavagery - PathOfTheSpirits - PathOfTheRavager - - - - - - Bard - - - - CollegeOfAudacity - CollegeOfValiance - CollegeOfGuts - CollegeOfLife - CollegeOfThespian - CollegeOfElegance - - - - - - Cleric - - - - DomainDefiler - DomainSmith - DomainNature - DomainTempest - - - - - - Druid - - - - CircleOfTheLife - CircleOfTheNight - CircleOfTheForestGuardian - CircleOfTheCosmos - - - - - - Fighter - - - - MartialArcaneArcher - MartialSpellShield - MartialTactician - MartialWeaponMaster - MartialRoyalKnight - MartialGuardian - MartialWarlord - MartialForceKnight - - - - - - Monk - - - - WayOfTheDiscordance - WayOfTheDragon - WayOfSilhouette - WayOfZenArchery - WayOfTheStormSoul - - - - - - Paladin - - - - OathOfHatred - OathOfAncients - OathOfDread - - - - - - Ranger - - - - RangerArcanist - RangerSurvivalist - RangerHellWalker - RangerWildMaster - RangerLightBearer - RangerGloomStalker - RangerFeyWanderer - - - - - - Rogue - - - - RoguishOpportunist - RoguishArcaneScoundrel - RoguishBladeCaller - RoguishSlayer - RoguishDuelist - RoguishRavenScion - RoguishUmbralStalker - - - - - - Sorcerer - - - - SorcerousDivineHeart - SorcerousFieldManipulator - SorcerousSorrAkkath - SorcerousSpellBlade - SorcerousPsion - - - - - - Warlock - - - - PatronSoulBlade - PatronCelestial - PatronMoonlitScion - PatronArchfey - - - - - - Wizard - - - - WizardBladeDancer - WizardGraviturgist - WizardWarMagic - - - - - - Inventor - - - - InnovationAlchemy - InnovationArmor - InnovationArtillerist - InnovationVitriolist - InnovationVivisectionist - InnovationWeapon - - - - - 4 - - FeatGroupApothecary - FeatGroupAwakenTheBeastWithin - FeatBladeMastery - FeatGroupBlessedSoul - FeatCallForCharge - FeatCleavingAttack - FeatGroupCloseQuarters - FeatGroupCrusher - FeatCunningEscape - FeatDefensiveDuelist - FeatDevastatingStrikes - FeatDragonWings - FeatDualFlurry - FeatDualWeaponDefense - FeatGroupElementalAdept - FeatGroupElvenAccuracy - FeatExpandTheHunt - FeatExploiter - FeatGroupFadeAway - FeatFellHanded - FeatGroupHardy - FeatHeavyArmorMaster - FeatInfernalConstitution - FeatInspiringLeader - FeatLongswordFinesse - FeatGroupMagicInitiate - FeatGroupMediumArmor - FeatMetamagicAdept - FeatMobile - FeatMonkInitiate - FeatNaturalFluidity - FeatPickPocket - FeatGroupPiercer - FeatPoisoner - FeatPolearmExpert - FeatGroupPotentSpellcaster - FeatGroupPrecisionFocused - FeatGroupPrimalRage - FeatGroupRevenantGreatSword - FeatSentinel - FeatGroupSlasher - FeatSpearMastery - FeatGroupSpellSniper - FeatSpiritualFluidity - FeatGroupSquatNimbleness - FeatGroupTelekinetic - FeatTough - FeatGroupToxicologist - FeatGroupDefenseExpert - FeatWarCaster - FeatMediumArmorMaster - FeatFencer - FeatZenArcher - FeatFrostAdaptation - FeatShieldTechniques - FeatEldritchAdept - FeatGroupFightingStyle - FeatTacticianAdept - FeatGroupSecondChance - FeatGiftOfTheChromaticDragon - FeatArcaneArcherAdept - FeatCharger - FeatGroupChef - FeatAlert - FeatGroupFlamesOfPhlegethos - FeatDwarvenFortitude - FeatGroupOrcishFury - FeatMageSlayer - FeatWoodElfMagic - FeatDarkElfMagic - FeatGroupFeyTeleport - FeatGroupDragonFear - FeatGroupDragonHide - FeatBountifulLuck - FeatGroupWeaponMaster - FeatHealer - FeatGroupGrudgeBearer - FeatGroupOrcishAggression - FeatGroupAthlete - FeatInfusionsAdept - FeatLucky - FeatDungeonDelver - FeatGroupBalefulScion - FeatMenacing - FeatArcanist - FeatAcrobat - FeatTheologian - FeatStealthy - FeatBowMastery - FeatCrossbowMastery - FeatMerciless - FeatRopeItUp - FeatShieldExpert - FeatSuperiorCritical - FeatImprovedCritical - FeatAlwaysReady - FeatGreatWeaponDefense - FeatGroupWhirlWindAttack - - 4 - - FeatGroupArmor - FeatGroupBodyResilience - FeatGroupClassBound - FeatGroupAgilityCombat - FeatGroupDefenseCombat - FeatGroupMeleeCombat - FeatGroupRangedCombat - FeatGroupSpellCombat - FeatGroupSupportCombat - FeatGroupTwoHandedCombat - FeatGroupTwoWeaponCombat - FeatGroupUnarmoredCombat - FeatGroupCreed - FeatGroupGeneralAdept - FeatGroupRaceBound - FeatGroupSkills - FeatGroupTools - FeatGroupHalfAttributes - FeatGroupElementalTouch - FeatGroupPlaneMagic - - 4 - - Interception - BlindFighting - RemarkableTechnique - HandAndAHalf - AstralReach - Crippling - Executioner - Pugilist - - 4 - - InvocationAspectOfTheMoon - InvocationBondOfTheTalisman - InvocationEldritchMind - InvocationEldritchSmite - InvocationGiftOfTheEverLivingOnes - InvocationGiftOfTheProtectors - InvocationGraspingBlast - InvocationHinderingBlast - InvocationImprovedPactWeapon - InvocationShroudOfShadow - InvocationSuperiorPactWeapon - InvocationTrickstersEscape - InvocationUltimatePactWeapon - InvocationUndyingServitude - InvocationBreakerAndBanisher - InvocationDiscerningGaze - InvocationGiftOfTheHunter - InvocationSpectralShield - InvocationCallOfTheBeast - InvocationTenaciousPlague - InvocationVerdantArmor - InvocationInexorableHex - InvocationVexingHex - InvocationTombOfFrost - InvocationPerniciousCloak - InvocationStasis - InvocationChillingHex - InvocationBurningHex - InvocationPsychicBlast - InvocationFulminateBlast - InvocationFieryBlast - InvocationChillingBlast - InvocationPoisonousBlast - InvocationThunderBlast - InvocationNecroticBlast - InvocationCorrosiveBlast - InvocationRadiantBlast - InvocationBreathOfTheNight - - 4 - - MetamagicSeekingSpell - MetamagicTransmutedSpell - MetamagicWidenedSpell - - false - false - - - - SpellListBard - - - 4 - - - - - SpellListCleric - - - 4 - - - - - SpellListDruid - - - 4 - - - - - SpellListInventor - - - 4 - - - - - SpellListPaladin - - - 4 - - - - - SpellListRanger - - - 4 - - - - - SpellListSorcerer - - - 4 - - - - - SpellListWarlock - - - 4 - - - - - SpellListMonkTraditionLight - - - 4 - - - - - SpellListWizard - - - 4 - - - - - - - SpellListBard - - - - AirBlast - BoomingBlade - ResonatingStrike - SunlightBlade - BladeWard - IlluminatingSphere - MinorLifesteal - StarryWisp - ThunderStrike - EarthTremor - Mule - CloudOfDaggers - MirrorImage - BlessingOfRime - BrainBulwark - IrresistiblePerformance - PsychicLance - MindBlank - Foresight - PowerWordHeal - PowerWordKill - - - - - - SpellListCleric - - - - AirBlast - ElementalWeapon - TollTheDead - BurstOfRadiance - Wrack - Sanctuary - ProtectThreshold - AuraOfLife - VitalityTransfer - SpiritShroud - AuraOfVitality - AuraOfPerseverance - Dawn - MassHeal - PowerWordHeal - - - - - - SpellListDruid - - - - AcidClaws - AirBlast - StarryWisp - ThornyVines - ThunderStrike - ElementalInfusion - EarthTremor - IceBlade - ConjureGoblinoids - NoxiousSpray - PetalStorm - ProtectThreshold - WitherAndBloom - AdderFangs - ElementalWeapon - FlameArrows - WinterBreath - BlessingOfRime - ForestGuardian - MantleOfThorns - FlashFreeze - DraconicTransformation - ReverseGravity - Foresight - Shapechange - - - - - - SpellListInventor - - - - BoomingBlade - ResonatingStrike - LightningLure - SunlightBlade - SwordStorm - ThornyVines - ThunderStrike - CausticZap - RadiantMotes - Sanctuary - VileBrew - ColorBurst - SpellWeb - ElementalWeapon - FlameArrows - BrainBulwark - FaithfulHound - - - - - - SpellListPaladin - - - - SearingSmite - ThunderousSmite - WrathfulSmite - ProtectThreshold - AuraOfLife - BlindingSmite - CrusadersMantle - ElementalWeapon - SpiritShroud - AuraOfVitality - AuraOfPerseverance - StaggeringSmite - BanishingSmite - CircleOfMagicalNegation - DivineWrath - - - - - - SpellListRanger - - - - ElementalInfusion - EnsnaringStrike - SpikeBarrage - SearingSmite - StrikeWithTheWind - ConjureGoblinoids - AdderFangs - ElementalWeapon - FlameArrows - LightningArrow - BlessingOfRime - ForestGuardian - SteelWhirlwind - - - - - - SpellListSorcerer - - - - HeroicInfusion - Foresight - BladeWard - BoomingBlade - ResonatingStrike - AirBlast - IlluminatingSphere - LightningLure - MindSpike - MinorLifesteal - SunlightBlade - SwordStorm - ThunderStrike - ElementalInfusion - CausticZap - ChaosBolt - ChromaticOrb - EarthTremor - IceBlade - Mule - VileBrew - WitchBolt - AganazzarScorcher - CloudOfDaggers - ColorBurst - MirrorImage - NoxiousSpray - BindingIce - ShadowBlade - SnillocSnowballStorm - PsychicWhip - SpellWeb - WitherAndBloom - AdderFangs - CorruptingBolt - FlameArrows - BoomingStep - WinterBreath - BrainBulwark - PsychicLance - FarStep - Incineration - SonicBoom - Telekinesis - FizbanPlatinumShield - FlashFreeze - MysticalCloak - DraconicTransformation - ReverseGravity - MeteorSwarmSingleTarget - PowerWordKill - TimeStop - - - - - - SpellListWarlock - - - - BladeWard - BoomingBlade - ResonatingStrike - LightningLure - MindSpike - MinorLifesteal - SunlightBlade - SwordStorm - ThunderStrike - TollTheDead - SkinOfRetribution - VoidGrasp - Mule - WitchBolt - CloudOfDaggers - MirrorImage - NoxiousSpray - ShadowBlade - AdderFangs - CorruptingBolt - HungerOfTheVoid - SpiritShroud - BoomingStep - BrainBulwark - PsychicLance - FarStep - FlashFreeze - MysticalCloak - MaddeningDarkness - Foresight - PowerWordKill - Weird - - - - - - SpellListMonkTraditionLight - - - - - - - - SpellListWizard - - - - BladeWard - BoomingBlade - ResonatingStrike - AirBlast - IlluminatingSphere - LightningLure - MindSpike - MinorLifesteal - EnduringSting - SunlightBlade - SwordStorm - ThunderStrike - TollTheDead - ElementalInfusion - CausticZap - ChromaticOrb - EarthTremor - FindFamiliar - GiftOfAlacrity - IceBlade - MagnifyGravity - Mule - RadiantMotes - VileBrew - WitchBolt - AganazzarScorcher - CloudOfDaggers - ColorBurst - MirrorImage - NoxiousSpray - BindingIce - ShadowBlade - SnillocSnowballStorm - PsychicWhip - SpellWeb - WitherAndBloom - CorruptingBolt - FlameArrows - VitalityTransfer - PulseWave - SpiritShroud - BoomingStep - WinterBreath - BrainBulwark - GravitySinkhole - FaithfulHound - PsychicLance - Dawn - FarStep - Incineration - SonicBoom - SteelWhirlwind - Telekinesis - FizbanPlatinumShield - PoisonWave - RingOfBlades - MysticalCloak - HeroicInfusion - DraconicTransformation - ReverseGravity - MaddeningDarkness - MindBlank - Foresight - MeteorSwarmSingleTarget - PowerWordKill - Shapechange - TimeStop - Weird - - - - - false - true - true - true - true - false - false - false - false - true - true - true - true - false - false - false - false - true - 5 - 1 - 100 - 100 - 100 - false - 0 - 0 - 0 - - - - 0 - 0 - 1 - 1 - 0 - - - 0 - 0 - 1 - 1 - 0 - - - 0 - 0 - 1 - 1 - 0 - - - 0 - 0 - 1 - 1 - 0 - - - 0 - 0 - 0 - 0 - 0 - - - - - 0 - 0 - 1 - 0 - 0 - - - 0 - 1 - 0 - 1 - 0 - - - 1 - 0 - 1 - 0 - 1 - - - 0 - 1 - 0 - 1 - 0 - - - 0 - 0 - 0 - 0 - 0 - - - - - 0 - 0 - 1 - 0 - 0 - - - 0 - 0 - 0 - 0 - 0 - - - 0 - 1 - 1 - 1 - 0 - - - 0 - 1 - 0 - 1 - 0 - - - 1 - 0 - 0 - 0 - 1 - - - - - 0 - 1 - 0 - 1 - 0 - - - 0 - 0 - 1 - 0 - 0 - - - 0 - 0 - 1 - 0 - 0 - - - 0 - 1 - 0 - 1 - 0 - - - 0 - 1 - 0 - 1 - 0 - - - - - 0 - 1 - 0 - 1 - 0 - - - 0 - 0 - 0 - 0 - 0 - - - 0 - 1 - 0 - 1 - 0 - - - 0 - 1 - 0 - 1 - 0 - - - 0 - 1 - 0 - 1 - 0 - - - - false - false - false - true - true - true - false - false - false - true - false - true - false - false - false - true - true - false - false - false - false - true - false - false - true - false - true - false - en - false - false - false - false - false - false - \ No newline at end of file diff --git a/SolastaUnfinishedBusiness/Settings/zappastuff.xml b/SolastaUnfinishedBusiness/Settings/zappastuff.xml index 1365ebe3c6..db72be448e 100644 --- a/SolastaUnfinishedBusiness/Settings/zappastuff.xml +++ b/SolastaUnfinishedBusiness/Settings/zappastuff.xml @@ -456,6 +456,7 @@ true true true + false false true true @@ -1542,6 +1543,7 @@ BrainBulwark PsionicBlast PsychicLance + SickeningRadiance VitriolicSphere FarStep Incineration @@ -1602,6 +1604,7 @@ ElementalBane PsionicBlast PsychicLance + SickeningRadiance FarStep SynapticStatic FlashFreeze @@ -1683,6 +1686,7 @@ FaithfulHound PsionicBlast PsychicLance + SickeningRadiance VitriolicSphere Dawn FarStep @@ -1734,6 +1738,7 @@ true false false + false 5 1 100 @@ -1742,6 +1747,9 @@ true 0 0 + false + true + 12 0 diff --git a/SolastaUnfinishedBusiness/SolastaUnfinishedBusiness.csproj b/SolastaUnfinishedBusiness/SolastaUnfinishedBusiness.csproj index 4bb6fdbbaa..0d7fc2d200 100644 --- a/SolastaUnfinishedBusiness/SolastaUnfinishedBusiness.csproj +++ b/SolastaUnfinishedBusiness/SolastaUnfinishedBusiness.csproj @@ -3,7 +3,7 @@ 12 net48 - 1.5.97.19 + 1.5.97.20 https://github.com/SolastaMods/SolastaUnfinishedBusiness git Debug Install;Release Install diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel02.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel02.cs index a2a4d5fa6c..8232fdc15c 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel02.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel02.cs @@ -714,6 +714,7 @@ public IEnumerator OnPowerOrSpellFinishedByMe(CharacterActionMagicEffect action, if (rulesetCharacter.TryGetConditionOfCategoryAndType( AttributeDefinitions.TagEffect, conditionName, out var activeCondition) && + activeCondition.SourceGuid == actingCharacter.Guid && !selectedPower.Name.Contains(skill.Name)) { rulesetCharacter.RemoveCondition(activeCondition); diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs index 0985cdc30f..79a9e75da0 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel03.cs @@ -1468,14 +1468,14 @@ public IEnumerator OnPhysicalAttackFinishedByMe( }; RulesetActor.InflictDamage( - damageRoll / 2, + damageRoll, damageForm, damageForm.DamageType, applyFormsParams, rulesetDefender, false, rulesetAttacker.Guid, - false, + true, attackMode.AttackTags, new RollInfo(damageForm.DieType, rolls, 0), false, diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs index b56621d2eb..001ad42b72 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel04.cs @@ -7,7 +7,7 @@ using SolastaUnfinishedBusiness.Builders.Features; using SolastaUnfinishedBusiness.CustomUI; using SolastaUnfinishedBusiness.Interfaces; -using SolastaUnfinishedBusiness.Properties; +using UnityEngine; using UnityEngine.AddressableAssets; using static ActionDefinitions; using static RuleDefinitions; @@ -17,6 +17,7 @@ using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionConditionAffinitys; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionDamageAffinitys; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionPowers; +using Resources = SolastaUnfinishedBusiness.Properties.Resources; namespace SolastaUnfinishedBusiness.Spells; @@ -314,6 +315,375 @@ internal static SpellDefinition BuildStaggeringSmite() #endregion + #region Sickening Radiance + + internal static SpellDefinition BuildSickeningRadiance() + { + const string NAME = "SickeningRadiance"; + + var proxy = EffectProxyDefinitionBuilder + .Create(EffectProxyDefinitions.ProxyIndomitableLight, $"Proxy{NAME}") + .SetGuiPresentation(NAME, Category.Spell, Gui.NoLocalization) + .AddToDB(); + + proxy.addLightSource = true; + proxy.lightSourceForm.brightRange = 0; + proxy.lightSourceForm.dimAdditionalRange = 6; + proxy.lightSourceForm.color = new Color(0.5f, 0.7f, 0.3f, 1.0f); + + var conditionExhausted1 = ConditionDefinitionBuilder + .Create($"Condition{NAME}Exhausted1") + .SetGuiPresentation(Category.Condition, ConditionLethargic) + .SetConditionType(ConditionType.Detrimental) + .SetPossessive() + .SetSilent(Silent.WhenRemoved) + .SetSpecialDuration(DurationType.Minute, 10) + .SetFeatures(FeatureDefinitionAbilityCheckAffinitys.AbilityCheckAffinityConditionExhausted) + .SetConditionParticleReference(ConditionHopeless) + .AddToDB(); + + var conditionExhausted2 = ConditionDefinitionBuilder + .Create($"Condition{NAME}Exhausted2") + .SetGuiPresentation(Category.Condition, ConditionLethargic) + .SetConditionType(ConditionType.Detrimental) + .SetPossessive() + .SetSilent(Silent.WhenRemoved) + .SetSpecialDuration(DurationType.Minute, 10) + .SetFeatures( + FeatureDefinitionAbilityCheckAffinitys.AbilityCheckAffinityConditionExhausted, + FeatureDefinitionMovementAffinitys.MovementAffinityConditionSlowed) + .SetConditionParticleReference(ConditionHopeless) + .AddToDB(); + + var combatAffinityExhausted3 = FeatureDefinitionCombatAffinityBuilder + .Create($"CombatAffinity{NAME}Exhausted3") + .SetGuiPresentation($"Condition{NAME}Exhausted3", Category.Condition, Gui.NoLocalization) + .SetMyAttackAdvantage(AdvantageType.Disadvantage) + .AddToDB(); + + var savingThrowAffinityExhausted3 = FeatureDefinitionSavingThrowAffinityBuilder + .Create($"SavingThrowAffinity{NAME}Exhausted3") + .SetGuiPresentation($"Condition{NAME}Exhausted3", Category.Condition, Gui.NoLocalization) + .SetAffinities(CharacterSavingThrowAffinity.Disadvantage, false, + AttributeDefinitions.Strength, + AttributeDefinitions.Dexterity, + AttributeDefinitions.Constitution, + AttributeDefinitions.Intelligence, + AttributeDefinitions.Wisdom, + AttributeDefinitions.Charisma) + .AddToDB(); + + var conditionExhausted3 = ConditionDefinitionBuilder + .Create($"Condition{NAME}Exhausted3") + .SetGuiPresentation(Category.Condition, ConditionLethargic) + .SetConditionType(ConditionType.Detrimental) + .SetPossessive() + .SetSilent(Silent.WhenRemoved) + .SetSpecialDuration(DurationType.Minute, 10) + .SetFeatures( + FeatureDefinitionAbilityCheckAffinitys.AbilityCheckAffinityConditionExhausted, + FeatureDefinitionMovementAffinitys.MovementAffinityConditionSlowed, + combatAffinityExhausted3, + savingThrowAffinityExhausted3) + .SetConditionParticleReference(ConditionHopeless) + .AddToDB(); + + var attributeModifierExhausted4 = FeatureDefinitionAttributeModifierBuilder + .Create($"AttributeModifier{NAME}Exhausted4") + .SetGuiPresentationNoContent(true) + .SetAddConditionAmount(AttributeDefinitions.HitPoints) + .AddToDB(); + + var conditionExhausted4 = ConditionDefinitionBuilder + .Create($"Condition{NAME}Exhausted4") + .SetGuiPresentation(Category.Condition, ConditionLethargic) + .SetConditionType(ConditionType.Detrimental) + .SetPossessive() + .SetSilent(Silent.WhenRemoved) + .SetSpecialDuration(DurationType.Minute, 10) + .SetFixedAmount(1) + .SetFeatures( + FeatureDefinitionAbilityCheckAffinitys.AbilityCheckAffinityConditionExhausted, + FeatureDefinitionMovementAffinitys.MovementAffinityConditionSlowed, + combatAffinityExhausted3, + savingThrowAffinityExhausted3, + attributeModifierExhausted4) + .SetConditionParticleReference(ConditionHopeless) + .AddToDB(); + + var conditionExhausted5 = ConditionDefinitionBuilder + .Create($"Condition{NAME}Exhausted5") + .SetGuiPresentation(Category.Condition, ConditionLethargic) + .SetConditionType(ConditionType.Detrimental) + .SetPossessive() + .SetSilent(Silent.WhenRemoved) + .SetSpecialDuration(DurationType.Minute, 10) + .SetFixedAmount(1) + .SetFeatures( + FeatureDefinitionAbilityCheckAffinitys.AbilityCheckAffinityConditionExhausted, + FeatureDefinitionMovementAffinitys.MovementAffinityConditionRestrained, + combatAffinityExhausted3, + savingThrowAffinityExhausted3, + attributeModifierExhausted4) + .SetConditionParticleReference(ConditionHopeless) + .AddToDB(); + + ConditionDefinition[] conditionsExhausted = + [ + conditionExhausted1, + conditionExhausted2, + conditionExhausted3, + conditionExhausted4, + conditionExhausted5 + ]; + + var conditionSickenedRadiance = ConditionDefinitionBuilder + .Create($"Condition{NAME}") + .SetGuiPresentation(Category.Condition, ConditionBaned) + .SetConditionType(ConditionType.Detrimental) + .SetPossessive() + .SetSpecialDuration(DurationType.Minute, 10) + .SetFeatures( + FeatureDefinitionConditionAffinityBuilder + .Create($"ConditionAffinity{NAME}") + .SetGuiPresentation($"Condition{NAME}", Category.Condition, Gui.NoLocalization) + .SetConditionType(ConditionInvisibleBase) + .SetConditionAffinityType(ConditionAffinityType.Immunity) + .AddToDB()) + .AddCustomSubFeatures(new OnConditionAddedOrRemovedSickeningRadiance(conditionsExhausted)) + .AddToDB(); + + conditionSickenedRadiance.silentWhenRefreshed = true; + + var conditionMark = ConditionDefinitionBuilder + .Create($"Condition{NAME}Mark") + .SetGuiPresentationNoContent(true) + .SetSilent(Silent.WhenAddedOrRemoved) + .AddCustomSubFeatures( + new OnConditionAddedOrRemovedSickeningRadianceSelf(conditionSickenedRadiance, conditionsExhausted)) + .AddToDB(); + + var spell = SpellDefinitionBuilder + .Create(NAME) + .SetGuiPresentation(Category.Spell, Sprites.GetSprite(NAME, Resources.SickeningRadiance, 128)) + .SetSchoolOfMagic(SchoolOfMagicDefinitions.SchoolEvocation) + .SetSpellLevel(4) + .SetCastingTime(ActivationTime.Action) + .SetMaterialComponent(MaterialComponentType.Mundane) + .SetSomaticComponent(true) + .SetVerboseComponent(true) + .SetVocalSpellSameType(VocalSpellSemeType.Attack) + .SetRequiresConcentration(true) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetDurationData(DurationType.Minute, 10) + .SetTargetingData(Side.All, RangeType.Distance, 24, TargetType.Sphere, 6) + .SetSavingThrowData( + false, + AttributeDefinitions.Constitution, + true, + EffectDifficultyClassComputation.SpellCastingFeature) + .SetRecurrentEffect(RecurrentEffect.OnEnter | RecurrentEffect.OnTurnStart) + .SetEffectForms( + EffectFormBuilder + .Create() + .HasSavingThrow(EffectSavingThrowType.Negates) + .SetDamageForm(DamageTypeRadiant, 4, DieType.D10) + .Build(), + EffectFormBuilder + .Create() + .HasSavingThrow(EffectSavingThrowType.Negates) + .SetConditionForm(conditionSickenedRadiance, ConditionForm.ConditionOperation.Add) + .Build(), + EffectFormBuilder + .Create() + .SetSummonEffectProxyForm(proxy) + .Build(), + EffectFormBuilder.ConditionForm(conditionMark, ConditionForm.ConditionOperation.Add, true, + true)) + .SetCasterEffectParameters(GuardianOfFaith) + .SetImpactEffectParameters(PowerSymbolOfHopelessness) + .Build()) + .AddToDB(); + + return spell; + } + + private sealed class OnConditionAddedOrRemovedSickeningRadianceSelf( + ConditionDefinition conditionSickenedRadiance, + params ConditionDefinition[] conditionsExhausted) : IOnConditionAddedOrRemoved + { + public void OnConditionAdded(RulesetCharacter target, RulesetCondition rulesetCondition) + { + // empty + } + + public void OnConditionRemoved(RulesetCharacter target, RulesetCondition rulesetCondition) + { + var locationCharacterService = ServiceRepository.GetService(); + var contenders = + Gui.Battle?.AllContenders ?? + locationCharacterService.PartyCharacters.Union(locationCharacterService.GuestCharacters); + + foreach (var contender in contenders) + { + var rulesetContender = contender.RulesetActor; + + if (contender.RulesetCharacter.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionSickenedRadiance.Name, out var activeCondition) && + activeCondition.SourceGuid == rulesetCondition.SourceGuid) + { + rulesetContender.RemoveCondition(activeCondition); + } + + foreach (var conditionExhausted in conditionsExhausted) + { + if (contender.RulesetCharacter.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionExhausted.Name, out var exhaustedCondition) && + exhaustedCondition.SourceGuid == rulesetCondition.SourceGuid) + { + rulesetContender.RemoveCondition(exhaustedCondition); + } + } + } + } + } + + private sealed class OnConditionAddedOrRemovedSickeningRadiance(params ConditionDefinition[] conditionsExhausted) + : IOnConditionAddedOrRemoved + { + public void OnConditionAdded(RulesetCharacter rulesetTarget, RulesetCondition rulesetCondition) + { + var rulesetCaster = EffectHelpers.GetCharacterByGuid(rulesetCondition.SourceGuid); + + if (rulesetCaster?.ConcentratedSpell == null) + { + return; + } + + rulesetCondition.RemainingRounds = rulesetCaster.ConcentratedSpell.RemainingRounds; + + HandleExhaustedCondition(rulesetCaster, rulesetTarget, rulesetCondition.RemainingRounds); + + var effectGuid = rulesetCaster.ConcentratedSpell.Guid; + + if (rulesetTarget is not (RulesetCharacterHero or RulesetCharacterMonster) || + rulesetTarget.PersonalLightSource?.EffectGuid == effectGuid) + { + return; + } + + var visibilityService = ServiceRepository.GetService(); + var lightSourceForm = FaerieFire.EffectDescription + .GetFirstFormOfType(EffectForm.EffectFormType.LightSource).LightSourceForm; + + var rulesetLightSource = new RulesetLightSource(new Color(0, 0.6f, 0), 0, 1, + lightSourceForm.GraphicsPrefabAssetGUID, + LightSourceType.Basic, + rulesetCondition.effectDefinitionName, + rulesetTarget.Guid, + effectGuid: effectGuid); + + var target = GameLocationCharacter.GetFromActor(rulesetTarget); + + visibilityService.AddCharacterLightSource(target, rulesetLightSource); + } + + public void OnConditionRemoved(RulesetCharacter rulesetTarget, RulesetCondition rulesetCondition) + { + var rulesetCaster = EffectHelpers.GetCharacterByGuid(rulesetCondition.SourceGuid); + + if (rulesetCaster?.ConcentratedSpell == null) + { + return; + } + + var effectGuid = rulesetCaster.ConcentratedSpell.Guid; + + if (rulesetTarget is not (RulesetCharacterHero or RulesetCharacterMonster) || + rulesetTarget.PersonalLightSource?.EffectGuid != effectGuid) + { + return; + } + + var visibilityService = ServiceRepository.GetService(); + var target = GameLocationCharacter.GetFromActor(rulesetTarget); + + visibilityService.RemoveCharacterLightSource(target, rulesetTarget.PersonalLightSource); + } + + private void HandleExhaustedCondition( + RulesetCharacter rulesetCaster, RulesetCharacter rulesetTarget, int remainingRounds) + { + var amount = 0; + var conditionName = string.Empty; + + if (rulesetTarget.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionsExhausted[4].Name, out var exhaustedCondition5) && + exhaustedCondition5.SourceGuid == rulesetCaster.Guid) + { + rulesetTarget.SustainDamage(1000, "DamagePure", false, rulesetCaster.Guid, null, out _); + } + else if (rulesetTarget.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionsExhausted[3].Name, out var exhaustedCondition4) && + exhaustedCondition4.SourceGuid == rulesetCaster.Guid) + { + conditionName = conditionsExhausted[4].Name; + + rulesetTarget.RemoveCondition(exhaustedCondition4); + } + else if (rulesetTarget.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionsExhausted[2].Name, out var exhaustedCondition3) && + exhaustedCondition3.SourceGuid == rulesetCaster.Guid) + { + amount = -rulesetTarget.GetAttribute(AttributeDefinitions.HitPoints).BaseValue / 2; + conditionName = conditionsExhausted[3].Name; + + rulesetTarget.RemoveCondition(exhaustedCondition3); + } + else if (rulesetTarget.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionsExhausted[1].Name, out var exhaustedCondition2) && + exhaustedCondition2.SourceGuid == rulesetCaster.Guid) + { + conditionName = conditionsExhausted[2].Name; + + rulesetTarget.RemoveCondition(exhaustedCondition2); + } + else if (rulesetTarget.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionsExhausted[0].Name, out var exhaustedCondition1) && + exhaustedCondition1.SourceGuid == rulesetCaster.Guid) + { + conditionName = conditionsExhausted[1].Name; + + rulesetTarget.RemoveCondition(exhaustedCondition1); + } + else + { + conditionName = conditionsExhausted[0].Name; + } + + if (conditionName != string.Empty) + { + rulesetTarget.InflictCondition( + conditionName, + DurationType.Round, + remainingRounds, + TurnOccurenceType.EndOfTurn, + AttributeDefinitions.TagEffect, + rulesetCaster.guid, + rulesetCaster.CurrentFaction.Name, + 1, + conditionName, + amount, + 0, + 0); + } + } + } + + #endregion + #region Vitriolic Sphere internal static SpellDefinition BuildVitriolicSphere() diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel06.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel06.cs index dc3d4c3418..882cf2fc70 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel06.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel06.cs @@ -677,6 +677,7 @@ internal static SpellDefinition BuildRingOfBlades() .Create($"Power{NAME}") .SetGuiPresentation(Category.Feature, Sprites.GetSprite($"Power{NAME}", Resources.PowerRingOfBlades, 128)) .SetUsesFixed(ActivationTime.BonusAction, RechargeRate.None, 1, 6) + .SetUseSpellAttack() .SetEffectDescription( EffectDescriptionBuilder .Create() @@ -692,6 +693,7 @@ internal static SpellDefinition BuildRingOfBlades() .SetGuiPresentation($"Power{NAME}", Category.Feature, Sprites.GetSprite($"Power{NAME}", Resources.PowerRingOfBlades, 128)) .SetUsesFixed(ActivationTime.NoCost, RechargeRate.None, 1, 6) + .SetUseSpellAttack() .SetEffectDescription( EffectDescriptionBuilder .Create() diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel07.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel07.cs index aa03090bc0..c4f98330a3 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel07.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel07.cs @@ -451,7 +451,7 @@ public IEnumerator OnPowerOrSpellFinishedByMe(CharacterActionMagicEffect action, // ReSharper disable once ConvertIfStatementToSwitchStatement if (remainingUses == 0 && - action.ActingCharacter.RulesetCharacter.TryGetConditionOfCategoryAndType( + rulesetCharacter.TryGetConditionOfCategoryAndType( AttributeDefinitions.TagEffect, conditionCrownOfStars.Name, out var activeCondition)) { rulesetCharacter.RemoveCondition(activeCondition); diff --git a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel08.cs b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel08.cs index e91e4ab89f..62209e8a7c 100644 --- a/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel08.cs +++ b/SolastaUnfinishedBusiness/Spells/SpellBuildersLevel08.cs @@ -155,7 +155,7 @@ public IEnumerator OnPowerOrSpellInitiatedByMe(CharacterActionMagicEffect action continue; } - if (rulesetCharacterMonster.CharacterFamily == CharacterFamilyDefinitions.Plant.Name || + if (rulesetCharacterMonster.CharacterFamily == "Plant" || rulesetCharacterMonster.MonsterDefinition == MonsterDefinitions.Ice_Elemental || rulesetCharacterMonster.MonsterDefinition == CircleOfTheNight.WildShapeWaterElemental) { diff --git a/SolastaUnfinishedBusiness/Subclasses/Builders/GambitsBuilders.cs b/SolastaUnfinishedBusiness/Subclasses/Builders/GambitsBuilders.cs index 3faf1baac8..606c7b591e 100644 --- a/SolastaUnfinishedBusiness/Subclasses/Builders/GambitsBuilders.cs +++ b/SolastaUnfinishedBusiness/Subclasses/Builders/GambitsBuilders.cs @@ -514,9 +514,18 @@ internal static void BuildGambits() .AddCustomSubFeatures(AddUsablePowersFromCondition.Marker) .AddToDB())) .Build()) + .AddCustomSubFeatures(ForcePowerUseInSpendPowerAction.Marker) .AddToDB(); - reactionPower.AddCustomSubFeatures(ForcePowerUseInSpendPowerAction.Marker); + var conditionReaction = ConditionDefinitionBuilder + .Create($"Condition{name}") + .SetGuiPresentation(name, Category.Feature, Sprites.ConditionGambit) + .SetPossessive() + .SetFeatures(reactionPower) + .AddCustomSubFeatures(AddUsablePowersFromCondition.Marker) + .AddToDB(); + + conditionReaction.AddCustomSubFeatures(new CoordinatedAttackReaction(conditionReaction)); power = FeatureDefinitionPowerBuilder .Create($"Power{name}Activate") @@ -532,14 +541,7 @@ internal static void BuildGambits() .SetDurationData(DurationType.Round) .SetEffectForms( EffectFormBuilder.ConditionForm(conditionGambitDieDamage), - EffectFormBuilder.ConditionForm( - ConditionDefinitionBuilder - .Create($"Condition{name}") - .SetGuiPresentation(name, Category.Feature, Sprites.ConditionGambit) - .SetPossessive() - .SetFeatures(reactionPower) - .AddCustomSubFeatures(AddUsablePowersFromCondition.Marker) - .AddToDB())) + EffectFormBuilder.ConditionForm(conditionReaction)) .Build()) .AddToDB(); @@ -1851,6 +1853,31 @@ public IEnumerator OnTryAlterOutcomeAttack( // Coordinated Attack // + private sealed class CoordinatedAttackReaction(ConditionDefinition conditionReaction) : IPhysicalAttackFinishedByMe + { + public IEnumerator OnPhysicalAttackFinishedByMe( + GameLocationBattleManager battleManager, + CharacterAction action, + GameLocationCharacter attacker, + GameLocationCharacter defender, + RulesetAttackMode attackMode, + RollOutcome rollOutcome, + int damageAmount) + { + var rulesetAttacker = attacker.RulesetCharacter; + + // no need to check for source here as these are all self conditions + if (rollOutcome is not (RollOutcome.Success or RollOutcome.CriticalSuccess) || + !rulesetAttacker.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionReaction.Name, out var activeCondition)) + { + yield break; + } + + rulesetAttacker.RemoveCondition(activeCondition); + } + } + private sealed class CoordinatedAttack : IFilterTargetingCharacter, ISelectPositionAfterCharacter, IFilterTargetingPosition, IPowerOrSpellFinishedByMe, IIgnoreInvisibilityInterruptionCheck diff --git a/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs b/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs index 664ebb7722..26a2243a22 100644 --- a/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs +++ b/SolastaUnfinishedBusiness/Subclasses/Builders/InvocationsBuilders.cs @@ -1620,11 +1620,8 @@ public void OnConditionRemoved(RulesetCharacter target, RulesetCondition ruleset { var glc = GameLocationCharacter.GetFromActor(target); - if (glc != null) - { - EffectHelpers.StartVisualEffect( - glc, glc, PowerDomainElementalHeraldOfTheElementsCold, EffectHelpers.EffectType.Effect); - } + EffectHelpers.StartVisualEffect( + glc, glc, PowerDomainElementalHeraldOfTheElementsCold, EffectHelpers.EffectType.Effect); target.InflictCondition( conditionTombOfFrost.Name, diff --git a/SolastaUnfinishedBusiness/Subclasses/CircleOfTheCosmos.cs b/SolastaUnfinishedBusiness/Subclasses/CircleOfTheCosmos.cs index 60f74f94e6..a7bfa4ccdf 100644 --- a/SolastaUnfinishedBusiness/Subclasses/CircleOfTheCosmos.cs +++ b/SolastaUnfinishedBusiness/Subclasses/CircleOfTheCosmos.cs @@ -301,7 +301,7 @@ public CircleOfTheCosmos() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.PatronEldritchSurge, 256)) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.CircleOfTheCosmos, 256)) .AddFeaturesAtLevel(2, featureSetConstellationMap, featureSetConstellationForm) .AddFeaturesAtLevel(6, powerCosmosOmen, powerCosmosOmenPool) .AddFeaturesAtLevel(10, featureSetTwinklingStars) @@ -712,6 +712,7 @@ public IEnumerator OnPowerOrSpellFinishedByMe(CharacterActionMagicEffect action, { var rulesetCharacter = action.ActingCharacter.RulesetCharacter; + // no need to check for source here as these are all self conditions if (rulesetCharacter.TryGetConditionOfCategoryAndType( AttributeDefinitions.TagEffect, conditionArcherNoCost.Name, out var activeCondition)) { @@ -740,6 +741,7 @@ public IEnumerator OnMagicEffectFinishedByMe( var rulesetAttacker = attacker.RulesetCharacter; var rulesetEffect = action.ActionParams.RulesetEffect; + // no need to check for source here as these are all self conditions if (rulesetEffect.SourceDefinition == powerChalice && rulesetAttacker.TryGetConditionOfCategoryAndType( AttributeDefinitions.TagEffect, conditionChaliceHealing.Name, out var activeCondition)) @@ -1287,6 +1289,7 @@ public IEnumerator OnPowerOrSpellFinishedByMe(CharacterActionMagicEffect action, var remainingRounds = activeCondition.RemainingRounds; + // no need to check for source here as these are all self conditions rulesetCharacter.RemoveCondition(activeCondition); var implementationManager = ServiceRepository.GetService() diff --git a/SolastaUnfinishedBusiness/Subclasses/CircleOfTheLife.cs b/SolastaUnfinishedBusiness/Subclasses/CircleOfTheLife.cs index 3787c444d1..baa6d6e0a4 100644 --- a/SolastaUnfinishedBusiness/Subclasses/CircleOfTheLife.cs +++ b/SolastaUnfinishedBusiness/Subclasses/CircleOfTheLife.cs @@ -308,15 +308,13 @@ public void OnCharacterTurnStarted(GameLocationCharacter locationCharacter) return; } - var rulesetCondition = rulesetCharacter.AllConditions - .FirstOrDefault(x => x.ConditionDefinition.Name == ConditionSeedOfLife); - - if (rulesetCondition == null) + if (!rulesetCharacter.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, ConditionSeedOfLife, out var activeCondition)) { return; } - var caster = EffectHelpers.GetCharacterByGuid(rulesetCondition.SourceGuid); + var caster = EffectHelpers.GetCharacterByGuid(activeCondition.SourceGuid); if (caster is not { IsDeadOrDyingOrUnconscious: false }) { diff --git a/SolastaUnfinishedBusiness/Subclasses/CollegeOfAudacity.cs b/SolastaUnfinishedBusiness/Subclasses/CollegeOfAudacity.cs index bc262a2aa3..d6d71c8c9c 100644 --- a/SolastaUnfinishedBusiness/Subclasses/CollegeOfAudacity.cs +++ b/SolastaUnfinishedBusiness/Subclasses/CollegeOfAudacity.cs @@ -1,8 +1,9 @@ using System.Collections; using System.Collections.Generic; +using System.Linq; using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; -using SolastaUnfinishedBusiness.Api.LanguageExtensions; +using SolastaUnfinishedBusiness.Api.Helpers; using SolastaUnfinishedBusiness.Behaviors; using SolastaUnfinishedBusiness.Behaviors.Specific; using SolastaUnfinishedBusiness.Builders; @@ -10,8 +11,10 @@ using SolastaUnfinishedBusiness.CustomUI; using SolastaUnfinishedBusiness.Interfaces; using SolastaUnfinishedBusiness.Properties; +using SolastaUnfinishedBusiness.Validators; using static RuleDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper; +using static SolastaUnfinishedBusiness.Api.DatabaseHelper.ActionDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionActionAffinitys; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionSubclassChoices; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.WeaponTypeDefinitions; @@ -23,10 +26,10 @@ namespace SolastaUnfinishedBusiness.Subclasses; public sealed class CollegeOfAudacity : AbstractSubclass { private const string Name = "CollegeOfAudacity"; - private const string WhirlMarker = "Whirl"; - + private const string ConditionDefensiveWhirl = $"Condition{Name}DefensiveWhirl"; private const ActionDefinitions.Id AudaciousWhirlToggle = (ActionDefinitions.Id)ExtraActionId.AudaciousWhirlToggle; private const ActionDefinitions.Id MasterfulWhirlToggle = (ActionDefinitions.Id)ExtraActionId.MasterfulWhirlToggle; + private const string WhirlDamage = "WhirlDamage"; public CollegeOfAudacity() { @@ -68,24 +71,23 @@ public CollegeOfAudacity() // Defensive Whirl - var attributeModifierDefensiveWhirl = FeatureDefinitionAttributeModifierBuilder - .Create($"AttributeModifier{Name}DefensiveWhirl") - .SetGuiPresentation(Category.Feature) - .SetAddConditionAmount(AttributeDefinitions.ArmorClass) - .AddToDB(); - - var conditionDefensiveWhirl = ConditionDefinitionBuilder - .Create($"Condition{Name}DefensiveWhirl") + _ = ConditionDefinitionBuilder + .Create(ConditionDefensiveWhirl) .SetGuiPresentation($"AttributeModifier{Name}DefensiveWhirl", Category.Feature, Gui.NoLocalization, ConditionDefinitions.ConditionMagicallyArmored.GuiPresentation.SpriteReference) .SetPossessive() - .SetFeatures(attributeModifierDefensiveWhirl) + .SetFeatures( + FeatureDefinitionAttributeModifierBuilder + .Create($"AttributeModifier{Name}DefensiveWhirl") + .SetGuiPresentation(Category.Feature) + .SetAddConditionAmount(AttributeDefinitions.ArmorClass) + .AddToDB()) .SetAmountOrigin(ConditionDefinition.OriginOfAmount.Fixed) .AddToDB(); var powerDefensiveWhirl = FeatureDefinitionPowerBuilder .Create($"Power{Name}DefensiveWhirl") - .SetGuiPresentation(Category.Feature) + .SetGuiPresentation(Category.Feature, hidden: true) .SetUsesFixed(ActivationTime.NoCost) .SetEffectDescription( EffectDescriptionBuilder @@ -93,14 +95,13 @@ public CollegeOfAudacity() .SetDurationData(DurationType.Round, 1, TurnOccurenceType.StartOfTurn) .SetTargetingData(Side.Enemy, RangeType.Distance, 1, TargetType.Individuals) .Build()) - .AddCustomSubFeatures(ModifyPowerVisibility.Hidden) .AddToDB(); // Mobile Whirl var powerMobileWhirl = FeatureDefinitionPowerBuilder .Create($"Power{Name}MobileWhirl") - .SetGuiPresentation(Category.Feature) + .SetGuiPresentation(Category.Feature, hidden: true) .SetUsesFixed(ActivationTime.NoCost) .SetEffectDescription( EffectDescriptionBuilder @@ -108,21 +109,31 @@ public CollegeOfAudacity() .SetDurationData(DurationType.Round, 0, TurnOccurenceType.StartOfTurn) .SetTargetingData(Side.Enemy, RangeType.Distance, 1, TargetType.Individuals) .Build()) - .AddCustomSubFeatures(ModifyPowerVisibility.Hidden) .AddToDB(); // Slashing Whirl + var powerSlashingWhirlDamage = FeatureDefinitionPowerBuilder + .Create($"Power{Name}SlashingWhirlDamage") + .SetGuiPresentation($"Power{Name}SlashingWhirl", Category.Feature, hidden: true) + .SetUsesFixed(ActivationTime.NoCost) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.Enemy, RangeType.Distance, 1, TargetType.Individuals) + .SetEffectForms(EffectFormBuilder.DamageForm(DamageTypeBludgeoning, 1, DieType.D6)) + .Build()) + .AddToDB(); + var powerSlashingWhirl = FeatureDefinitionPowerBuilder .Create($"Power{Name}SlashingWhirl") - .SetGuiPresentation(Category.Feature) + .SetGuiPresentation(Category.Feature, hidden: true) .SetUsesFixed(ActivationTime.NoCost) .SetEffectDescription( EffectDescriptionBuilder .Create() .SetTargetingData(Side.Enemy, RangeType.Distance, 1, TargetType.Individuals) .Build()) - .AddCustomSubFeatures(ModifyPowerVisibility.Hidden) .AddToDB(); // Audacious Whirl @@ -149,7 +160,7 @@ public CollegeOfAudacity() var powerAudaciousWhirl = FeatureDefinitionPowerBuilder .Create($"Power{Name}AudaciousWhirl") .SetGuiPresentationNoContent(true) - .SetUsesFixed(ActivationTime.OnAttackHitMelee, RechargeRate.BardicInspiration) + .SetUsesFixed(ActivationTime.NoCost, RechargeRate.BardicInspiration) .SetEffectDescription( EffectDescriptionBuilder .Create() @@ -159,24 +170,27 @@ public CollegeOfAudacity() .AddToDB(); powerAudaciousWhirl.AddCustomSubFeatures( - new CustomBehaviorWhirl( - conditionAudaciousWhirlExtraMovement, - conditionDefensiveWhirl, - powerDefensiveWhirl, - powerSlashingWhirl, - powerMobileWhirl), ReactionResourceBardicInspiration.Instance, - new RestrictReactionAttackMode((_, attacker, _, _, _) => - attacker.OnceInMyTurnIsValid(WhirlMarker) && - attacker.RulesetCharacter.IsToggleEnabled(AudaciousWhirlToggle))); + new CustomBehaviorAudaciousWhirl( + powerAudaciousWhirl, powerSlashingWhirl, powerSlashingWhirlDamage, + conditionAudaciousWhirlExtraMovement)); PowerBundle.RegisterPowerBundle( powerAudaciousWhirl, - true, + false, powerDefensiveWhirl, powerSlashingWhirl, powerMobileWhirl); + _ = ActionDefinitionBuilder + .Create(MetamagicToggle, "AudaciousWhirlToggle") + .SetOrUpdateGuiPresentation(Category.Action) + .RequiresAuthorization() + .SetActionId(ExtraActionId.AudaciousWhirlToggle) + .AddCustomSubFeatures( + new ValidateDefinitionApplication(ValidatorsCharacter.HasAvailablePowerUsage(powerAudaciousWhirl))) + .AddToDB(); + var featureSetAudaciousWhirl = FeatureDefinitionFeatureSetBuilder .Create($"FeatureSet{Name}AudaciousWhirl") .SetGuiPresentation(Category.Feature) @@ -192,29 +206,6 @@ public CollegeOfAudacity() // Masterful Whirl - var powerMasterfulWhirl = FeatureDefinitionPowerBuilder - .Create($"Power{Name}MasterfulWhirl") - .SetGuiPresentationNoContent(true) - .SetUsesFixed(ActivationTime.OnAttackHitMelee) - .SetEffectDescription( - EffectDescriptionBuilder - .Create() - .SetDurationData(DurationType.Round, 0, TurnOccurenceType.StartOfTurn) - .SetTargetingData(Side.Enemy, RangeType.Distance, 1, TargetType.Individuals) - .Build()) - .AddToDB(); - - powerMasterfulWhirl.AddCustomSubFeatures( - new CustomBehaviorWhirl( - conditionAudaciousWhirlExtraMovement, - conditionDefensiveWhirl, - powerDefensiveWhirl, - powerSlashingWhirl, - powerMobileWhirl), - new RestrictReactionAttackMode((_, attacker, _, _, _) => - attacker.OnceInMyTurnIsValid(WhirlMarker) && - attacker.RulesetCharacter.IsToggleEnabled(MasterfulWhirlToggle))); - var actionAffinityMasterfulWhirlToggle = FeatureDefinitionActionAffinityBuilder .Create(ActionAffinitySorcererMetamagicToggle, "ActionAffinityMasterfulWhirlToggle") .SetGuiPresentationNoContent(true) @@ -224,7 +215,7 @@ public CollegeOfAudacity() var featureSetMasterfulWhirl = FeatureDefinitionFeatureSetBuilder .Create($"FeatureSet{Name}MasterfulWhirl") .SetGuiPresentation(Category.Feature) - .AddFeatureSet(actionAffinityMasterfulWhirlToggle, powerMasterfulWhirl) + .AddFeatureSet(actionAffinityMasterfulWhirlToggle) .AddToDB(); // MAIN @@ -247,175 +238,106 @@ public CollegeOfAudacity() // ReSharper disable once UnassignedGetOnlyAutoProperty internal override DeityDefinition DeityDefinition { get; } - private sealed class CustomBehaviorWhirl( - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - ConditionDefinition conditionExtraMovement, - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - ConditionDefinition conditionDefensiveWhirl, - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - FeatureDefinitionPower powerDefensiveWhirl, - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - FeatureDefinitionPower powerSlashingWhirl, - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - FeatureDefinitionPower powerMobileWhirl) - : IActionFinishedByMe, IPhysicalAttackBeforeHitConfirmedOnEnemy, IPhysicalAttackFinishedByMe + internal static void HandleDefensiveWhirl(RulesetCharacter rulesetCharacter, DamageForm damageForm, int damage) { - private readonly List _tags = []; - private bool _criticalHit; - private string _damageType; - - public IEnumerator OnActionFinishedByMe(CharacterAction characterAction) + if (damageForm.AncestryType != (AncestryType)ExtraAncestryType.CollegeOfAudacityDefensiveWhirl) { - if (_damageType == null) - { - yield break; - } - - if (characterAction is not CharacterActionSpendPower actionSpendPower) - { - yield break; - } + return; + } - var power = actionSpendPower.activePower.PowerDefinition; + var character = GameLocationCharacter.GetFromActor(rulesetCharacter); - if (power != powerDefensiveWhirl && - power != powerSlashingWhirl && - power != powerMobileWhirl) - { - yield break; - } + character.UsedSpecialFeatures.TryAdd(WhirlDamage, 0); + character.UsedSpecialFeatures[WhirlDamage] = damage; + } - var actingCharacter = actionSpendPower.ActingCharacter; - var rulesetCharacter = actingCharacter.RulesetCharacter; + private sealed class CustomBehaviorAudaciousWhirl( + FeatureDefinitionPower powerAudaciousWhirl, + FeatureDefinitionPower powerSlashingWhirl, + FeatureDefinitionPower powerSlashingWhirlDamage, + ConditionDefinition conditionExtraMovement) + : IMagicEffectBeforeHitConfirmedOnEnemy, IModifyEffectDescription, + IPhysicalAttackBeforeHitConfirmedOnEnemy, IPhysicalAttackFinishedByMe + { + private const string WhirlMarker = "WhirlMarker"; + private const string WhirlDamageType = "WhirlDamageType"; + private const string WhirlSelectedPower = "WhirlSelectedPower"; - if (rulesetCharacter is not { IsDeadOrDyingOrUnconscious: false }) + public IEnumerator OnMagicEffectBeforeHitConfirmedOnEnemy( + GameLocationBattleManager battleManager, + GameLocationCharacter attacker, + GameLocationCharacter defender, + ActionModifier actionModifier, + RulesetEffect rulesetEffect, + List actualEffectForms, + bool firstTarget, + bool criticalHit) + { + if (rulesetEffect.SourceDefinition != powerSlashingWhirl) { yield break; } - actingCharacter.UsedSpecialFeatures.TryAdd(WhirlMarker, 1); + var rulesetAttacker = attacker.RulesetCharacter; + var implementationManager = + ServiceRepository.GetService() as RulesetImplementationManager; - // targets - var targetCharacters = new List(); + var targets = Gui.Battle.GetContenders(attacker, withinRange: 1).Where(x => x != defender).ToList(); - // masterful whirl? - var isMasterfulWhirl = rulesetCharacter.IsToggleEnabled(MasterfulWhirlToggle); + var actionModifiers = new List(); - // damage roll - var dieType = isMasterfulWhirl ? DieType.D6 : rulesetCharacter.GetBardicInspirationDieValue(); - var damageForm = new DamageForm + for (var i = 0; i < targets.Count; i++) { - DamageType = _damageType, DieType = dieType, DiceNumber = 1, BonusDamage = 0 - }; - var rolls = new List(); - var damageRoll = - rulesetCharacter.RollDamage(damageForm, 0, _criticalHit, 0, 0, 1, false, false, false, rolls); + actionModifiers.Add(new ActionModifier()); + } - // add damage whirl condition and target - if (power == powerDefensiveWhirl) + var usablePower = PowerProvider.Get(powerSlashingWhirlDamage, rulesetAttacker); + var actionParams = new CharacterActionParams(attacker, ActionDefinitions.Id.SpendPower) { - targetCharacters.Add(actionSpendPower.ActionParams.TargetCharacters[0]); - - var firstRoll = rolls[0]; + ActionModifiers = actionModifiers, + RulesetEffect = implementationManager + .MyInstantiateEffectPower(rulesetAttacker, usablePower, false), + UsablePower = usablePower, + targetCharacters = targets + }; - rulesetCharacter.InflictCondition( - conditionDefensiveWhirl.Name, - DurationType.Round, - 1, - TurnOccurenceType.StartOfTurn, - AttributeDefinitions.TagEffect, - rulesetCharacter.guid, - rulesetCharacter.CurrentFaction.Name, - 1, - conditionDefensiveWhirl.Name, - firstRoll, - 0, - 0); - } + ServiceRepository.GetService()? + .ExecuteAction(actionParams, null, true); + } - // add mobile whirl condition and target - else if (power == powerMobileWhirl) - { - targetCharacters.Add(actionSpendPower.ActionParams.TargetCharacters[0]); + public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) + { + return definition == powerSlashingWhirlDamage; + } - rulesetCharacter.InflictCondition( - ConditionDisengaging, - DurationType.Round, - 0, - TurnOccurenceType.EndOfTurn, - // all disengaging in game is set under TagCombat (why?) - AttributeDefinitions.TagCombat, - rulesetCharacter.guid, - rulesetCharacter.CurrentFaction.Name, - 1, - ConditionDisengaging, - 0, - 0, - 0); - } + public EffectDescription GetEffectDescription( + BaseDefinition definition, + EffectDescription effectDescription, + RulesetCharacter rulesetCharacter, + RulesetEffect rulesetEffect) + { + var character = GameLocationCharacter.GetFromActor(rulesetCharacter); - // add slashing whirl targets - else if (power == powerSlashingWhirl) + if (character == null) { - if (Gui.Battle != null) - { - targetCharacters.AddRange(Gui.Battle - .GetContenders(actingCharacter, hasToPerceiveTarget: true, withinRange: 1)); - } + return effectDescription; } - // apply damage to targets - var isFirstTarget = true; - - foreach (var defender in targetCharacters) + if (character.UsedSpecialFeatures.TryGetValue(WhirlDamageType, out var damageIndex)) { - if (isFirstTarget) - { - isFirstTarget = false; - } - // reroll for each target on Slashing Whirl scenario - else - { - rolls = []; - damageRoll = - rulesetCharacter.RollDamage(damageForm, 0, _criticalHit, 0, 0, 1, false, false, false, rolls); - } - - var rulesetDefender = defender.RulesetActor; - var applyFormsParams = new RulesetImplementationDefinitions.ApplyFormsParams - { - sourceCharacter = rulesetCharacter, - targetCharacter = rulesetDefender, - position = defender.LocationPosition - }; + var damageTypeDefinition = + DatabaseRepository.GetDatabase().ToList().ElementAt(damageIndex); - RulesetActor.InflictDamage( - damageRoll, - damageForm, - _damageType, - applyFormsParams, - rulesetDefender, - false, - rulesetCharacter.Guid, - false, - _tags, - new RollInfo(dieType, rolls, 0), - false, - out _); + effectDescription.EffectForms[0].DamageForm.DamageType = damageTypeDefinition.Name; } - // consume bardic inspiration if not a masterful whirl - if (isMasterfulWhirl) - { - yield break; - } + var isMasterfulWhirl = rulesetCharacter.IsToggleEnabled(MasterfulWhirlToggle); + + effectDescription.EffectForms[0].DamageForm.OverrideWithBardicInspirationDie = !isMasterfulWhirl; - rulesetCharacter.UsedBardicInspiration++; - rulesetCharacter.BardicInspirationAltered?.Invoke( - rulesetCharacter, rulesetCharacter.RemainingBardicInspirations); + return effectDescription; } - // collect damage type public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnEnemy( GameLocationBattleManager battleManager, GameLocationCharacter attacker, @@ -428,16 +350,88 @@ public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnEnemy( bool firstTarget, bool criticalHit) { - var damageForm = attackMode.EffectDescription.FindFirstDamageForm(); + var actionManager = + ServiceRepository.GetService() as GameLocationActionManager; + + var rulesetAttacker = attacker.RulesetCharacter; + var usablePower = PowerProvider.Get(powerAudaciousWhirl, rulesetAttacker); + var isAudaciousWhirl = rulesetAttacker.IsToggleEnabled(AudaciousWhirlToggle); + var hasAvailablePowerUses = rulesetAttacker.GetRemainingUsesOfPower(usablePower) > 0; + var isMasterfulWhirl = rulesetAttacker.IsToggleEnabled(MasterfulWhirlToggle); + + if (!actionManager || + !attacker.OnceInMyTurnIsValid(WhirlMarker) || + !((isAudaciousWhirl && hasAvailablePowerUses) || isMasterfulWhirl)) + { + yield break; + } + + var implementationManager = + ServiceRepository.GetService() as RulesetImplementationManager; - _damageType = damageForm?.damageType; - _criticalHit = criticalHit; - _tags.SetRange(attackMode.AttackTags); + var actionParams = + new CharacterActionParams(attacker, ActionDefinitions.Id.SpendPower) + { + ActionModifiers = { new ActionModifier() }, + StringParameter = powerAudaciousWhirl.Name, + RulesetEffect = implementationManager + .MyInstantiateEffectPower(rulesetAttacker, usablePower, false), + UsablePower = usablePower, + TargetCharacters = { defender } + }; + var count = actionManager.PendingReactionRequestGroups.Count; + var reactionRequest = new ReactionRequestSpendBundlePower(actionParams); - yield break; + actionManager.AddInterruptRequest(reactionRequest); + + yield return battleManager.WaitForReactions(attacker, actionManager, count); + + attacker.UsedSpecialFeatures.TryAdd(WhirlSelectedPower, -1); + + if (!actionParams.ReactionValidated) + { + yield break; + } + + attacker.UsedSpecialFeatures[WhirlSelectedPower] = reactionRequest.SelectedSubOption; + attacker.UsedSpecialFeatures.TryAdd(WhirlMarker, 1); + + var firstDamageForm = actualEffectForms.FirstOrDefault(x => x.FormType == EffectForm.EffectFormType.Damage); + + if (firstDamageForm != null) + { + var damageType = firstDamageForm.DamageForm.DamageType; + var effectDamageForm = EffectFormBuilder.DamageForm(damageType, 1, DieType.D6); + + effectDamageForm.DamageForm.OverrideWithBardicInspirationDie = !isMasterfulWhirl; + + if (reactionRequest.SelectedSubOption == 0) + { + effectDamageForm.DamageForm.AncestryType = + (AncestryType)ExtraAncestryType.CollegeOfAudacityDefensiveWhirl; + } + + var index = actualEffectForms.IndexOf(firstDamageForm); + + actualEffectForms.Insert(index + 1, effectDamageForm); + + var damageTypes = DatabaseRepository.GetDatabase().ToList(); + var damageTypeDefinition = damageTypes.FirstOrDefault(x => x.Name == damageType); + var damageIndex = damageTypes.IndexOf(damageTypeDefinition); + + attacker.UsedSpecialFeatures.TryAdd(WhirlDamageType, damageIndex); + } + + if (isMasterfulWhirl) + { + yield break; + } + + rulesetAttacker.UsedBardicInspiration++; + rulesetAttacker.BardicInspirationAltered?.Invoke( + rulesetAttacker, rulesetAttacker.RemainingBardicInspirations); } - // add extra movement on any attack public IEnumerator OnPhysicalAttackFinishedByMe( GameLocationBattleManager battleManager, CharacterAction action, @@ -447,17 +441,17 @@ public IEnumerator OnPhysicalAttackFinishedByMe( RollOutcome rollOutcome, int damageAmount) { - var rulesetCharacter = attacker.RulesetCharacter; + var rulesetAttacker = attacker.RulesetCharacter; - if (rulesetCharacter is not { IsDeadOrDyingOrUnconscious: false }) + if (rulesetAttacker is not { IsDeadOrDyingOrUnconscious: false }) { yield break; } - if (!rulesetCharacter.HasConditionOfCategoryAndType( + if (!rulesetAttacker.HasConditionOfCategoryAndType( AttributeDefinitions.TagEffect, conditionExtraMovement.Name)) { - rulesetCharacter.InflictCondition( + rulesetAttacker.InflictCondition( conditionExtraMovement.Name, DurationType.Round, 0, @@ -471,6 +465,62 @@ public IEnumerator OnPhysicalAttackFinishedByMe( 0, 0); } + + if (!attacker.UsedSpecialFeatures.TryGetValue(WhirlSelectedPower, out var value)) + { + yield break; + } + + attacker.UsedSpecialFeatures.Remove(WhirlSelectedPower); + + switch (value) + { + case 0 when + attacker.UsedSpecialFeatures.TryGetValue(WhirlDamage, out var damage): + var isMasterfulWhirl = rulesetAttacker.IsToggleEnabled(MasterfulWhirlToggle); + var dieType = isMasterfulWhirl ? DieType.D6 : rulesetAttacker.GetBardicInspirationDieValue(); + + rulesetAttacker.LogCharacterActivatesAbility( + Gui.NoLocalization, "Feedback/&CollegeOfAudacityDefensiveWhirl", true, + extra: + [ + (ConsoleStyleDuplet.ParameterType.AbilityInfo, Gui.FormatDieTitle(dieType)), + (ConsoleStyleDuplet.ParameterType.Positive, damage.ToString()) + ]); + rulesetAttacker.InflictCondition( + ConditionDefensiveWhirl, + DurationType.Round, + 1, + TurnOccurenceType.StartOfTurn, + AttributeDefinitions.TagEffect, + rulesetAttacker.guid, + rulesetAttacker.CurrentFaction.Name, + 1, + ConditionDefensiveWhirl, + damage, + 0, + 0); + break; + case 1: + rulesetAttacker.LogCharacterUsedPower(powerSlashingWhirl); + break; + case 2: + rulesetAttacker.InflictCondition( + ConditionDisengaging, + DurationType.Round, + 0, + TurnOccurenceType.EndOfTurn, + // all disengaging in game is set under TagCombat (why?) + AttributeDefinitions.TagCombat, + rulesetAttacker.guid, + rulesetAttacker.CurrentFaction.Name, + 1, + ConditionDisengaging, + 0, + 0, + 0); + break; + } } } } diff --git a/SolastaUnfinishedBusiness/Subclasses/CollegeOfValiance.cs b/SolastaUnfinishedBusiness/Subclasses/CollegeOfValiance.cs index 3e1cb83f9a..01dd84a1d2 100644 --- a/SolastaUnfinishedBusiness/Subclasses/CollegeOfValiance.cs +++ b/SolastaUnfinishedBusiness/Subclasses/CollegeOfValiance.cs @@ -155,8 +155,7 @@ public void MinRoll( ref int rollModifier, ref int minRoll) { - if (character != null && - abilityScoreName == AttributeDefinitions.Charisma && + if (abilityScoreName == AttributeDefinitions.Charisma && proficiencyName is SkillDefinitions.Deception or SkillDefinitions.Persuasion) { minRoll = Math.Max(minRoll, 10); @@ -188,12 +187,9 @@ public void OnSavingThrowFinished( return; } - defender.TryGetConditionOfCategoryAndType( - AttributeDefinitions.TagEffect, - conditionDishearteningPerformance.Name, - out var activeCondition); - - if (activeCondition == null) + // no need to check for source guid here + if (!defender.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionDishearteningPerformance.Name, out var activeCondition)) { return; } diff --git a/SolastaUnfinishedBusiness/Subclasses/DomainNature.cs b/SolastaUnfinishedBusiness/Subclasses/DomainNature.cs index 8e918a6e70..82f5d02280 100644 --- a/SolastaUnfinishedBusiness/Subclasses/DomainNature.cs +++ b/SolastaUnfinishedBusiness/Subclasses/DomainNature.cs @@ -124,9 +124,7 @@ public DomainNature() .Create() .SetDurationData(DurationType.Minute, 1) .SetTargetingData(Side.Enemy, RangeType.Self, 0, TargetType.Sphere, 6) - .SetRestrictedCreatureFamilies( - CharacterFamilyDefinitions.Beast.Name, - CharacterFamilyDefinitions.Plant.Name) + .SetRestrictedCreatureFamilies("Beast", "Plant") .SetSavingThrowData( false, AttributeDefinitions.Wisdom, @@ -222,9 +220,7 @@ public DomainNature() .Create() .SetDurationData(DurationType.Minute, 1) .SetTargetingData(Side.Enemy, RangeType.Self, 0, TargetType.Sphere, 6) - .SetRestrictedCreatureFamilies( - CharacterFamilyDefinitions.Beast.Name, - CharacterFamilyDefinitions.Plant.Name) + .SetRestrictedCreatureFamilies("Beast", "Plant") .SetSavingThrowData( false, AttributeDefinitions.Wisdom, @@ -255,7 +251,7 @@ public DomainNature() _domainNature = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, CharacterSubclassDefinitions.TraditionGreenmage) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.DomainNature, 256)) .AddFeaturesAtLevel(1, autoPreparedSpellsDomainNature, featureSetAcolyteOfNature, featureSetBonusProficiency) .AddFeaturesAtLevel(2, featureSetCharmAnimalsAndPlants) diff --git a/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs b/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs index bb342c8e4b..b63f76100c 100644 --- a/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs +++ b/SolastaUnfinishedBusiness/Subclasses/DomainTempest.cs @@ -258,7 +258,7 @@ public DomainTempest() Subclass = CharacterSubclassDefinitionBuilder .Create(NAME) - .SetGuiPresentation(Category.Subclass, CharacterSubclassDefinitions.MartialSpellblade) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(NAME, Resources.DomainTempest, 256)) .AddFeaturesAtLevel(1, autoPreparedSpellsDomainNature, featureSetBonusProficiency, diff --git a/SolastaUnfinishedBusiness/Subclasses/InnovationVitriolist.cs b/SolastaUnfinishedBusiness/Subclasses/InnovationVitriolist.cs index cdb8a8eafc..4ffb1ee038 100644 --- a/SolastaUnfinishedBusiness/Subclasses/InnovationVitriolist.cs +++ b/SolastaUnfinishedBusiness/Subclasses/InnovationVitriolist.cs @@ -9,11 +9,12 @@ using SolastaUnfinishedBusiness.Builders; using SolastaUnfinishedBusiness.Builders.Features; using SolastaUnfinishedBusiness.Classes; +using SolastaUnfinishedBusiness.CustomUI; using SolastaUnfinishedBusiness.Interfaces; using SolastaUnfinishedBusiness.Models; +using SolastaUnfinishedBusiness.Properties; using static RuleDefinitions; using static FeatureDefinitionAttributeModifier; -using static SolastaUnfinishedBusiness.Api.DatabaseHelper.CharacterSubclassDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionDamageAffinitys; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.FeatureDefinitionPowers; @@ -329,7 +330,7 @@ public InnovationVitriolist() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, TraditionShockArcanist) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.InventorVitriolist, 256)) .AddFeaturesAtLevel(3, autoPreparedSpells, featureSetMixture) .AddFeaturesAtLevel(5, featureSetVitriolicInfusion) .AddFeaturesAtLevel(9, featureSetArsenal) diff --git a/SolastaUnfinishedBusiness/Subclasses/MartialArcaneArcher.cs b/SolastaUnfinishedBusiness/Subclasses/MartialArcaneArcher.cs index 42b4a469df..a51ab362a0 100644 --- a/SolastaUnfinishedBusiness/Subclasses/MartialArcaneArcher.cs +++ b/SolastaUnfinishedBusiness/Subclasses/MartialArcaneArcher.cs @@ -10,6 +10,7 @@ using SolastaUnfinishedBusiness.Builders.Features; using SolastaUnfinishedBusiness.CustomUI; using SolastaUnfinishedBusiness.Interfaces; +using SolastaUnfinishedBusiness.Properties; using SolastaUnfinishedBusiness.Validators; using static RuleDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper; @@ -25,10 +26,28 @@ public sealed class MartialArcaneArcher : AbstractSubclass private const string Name = "MartialArcaneArcher"; private const ActionDefinitions.Id ArcaneArcherToggle = (ActionDefinitions.Id)ExtraActionId.ArcaneArcherToggle; - // referenced by feat Arcane Archer Adept - internal static FeatureDefinitionPower PowerArcaneShot; - internal static FeatureDefinitionActionAffinity ActionAffinityArcaneArcherToggle; - internal static FeatureDefinitionCustomInvocationPool InvocationPoolArcaneShotChoice2; + internal static readonly FeatureDefinitionPower PowerArcaneShot = FeatureDefinitionPowerBuilder + .Create($"Power{Name}ArcaneShot") + .SetGuiPresentation($"FeatureSet{Name}ArcaneShot", Category.Feature) + .SetUsesFixed(ActivationTime.NoCost, RechargeRate.ShortRest, 1, 0) + .DelegatedToAction() + .AddToDB(); + + internal static readonly FeatureDefinitionActionAffinity ActionAffinityArcaneArcherToggle = + FeatureDefinitionActionAffinityBuilder + .Create(ActionAffinitySorcererMetamagicToggle, "ActionAffinityArcaneArcherToggle") + .SetGuiPresentationNoContent(true) + .SetAuthorizedActions(ArcaneArcherToggle) + .AddCustomSubFeatures( + new ValidateDefinitionApplication(ValidatorsCharacter.HasAvailablePowerUsage(PowerArcaneShot))) + .AddToDB(); + + internal static readonly FeatureDefinitionCustomInvocationPool InvocationPoolArcaneShotChoice2 = + CustomInvocationPoolDefinitionBuilder + .Create("InvocationPoolArcaneShotChoice2") + .SetGuiPresentation(Category.Feature) + .Setup(InvocationPoolTypeCustom.Pools.ArcaneShotChoice, 2) + .AddToDB(); public MartialArcaneArcher() { @@ -75,19 +94,12 @@ public MartialArcaneArcher() // Arcane Shot - PowerArcaneShot = FeatureDefinitionPowerBuilder - .Create($"Power{Name}ArcaneShot") - .SetGuiPresentation($"FeatureSet{Name}ArcaneShot", Category.Feature) - .SetUsesFixed(ActivationTime.NoCost, RechargeRate.ShortRest, 1, 0) - .DelegatedToAction() - .AddToDB(); - var arcaneShotPowers = BuildArcaneShotPowers(PowerArcaneShot, out var powerBurstingArrow, out var powerBurstingArrowDamage); PowerArcaneShot.AddCustomSubFeatures( HasModifiedUses.Marker, - new PhysicalAttackFinishedByMeArcaneShot(powerBurstingArrow, powerBurstingArrowDamage)); + new CustomBehaviorArcaneShot(powerBurstingArrow, powerBurstingArrowDamage)); PowerBundle.RegisterPowerBundle(PowerArcaneShot, false, arcaneShotPowers); @@ -99,14 +111,6 @@ public MartialArcaneArcher() .SetActivatedPower(PowerArcaneShot) .AddToDB(); - ActionAffinityArcaneArcherToggle = FeatureDefinitionActionAffinityBuilder - .Create(ActionAffinitySorcererMetamagicToggle, "ActionAffinityArcaneArcherToggle") - .SetGuiPresentationNoContent(true) - .SetAuthorizedActions(ArcaneArcherToggle) - .AddCustomSubFeatures( - new ValidateDefinitionApplication(ValidatorsCharacter.HasAvailablePowerUsage(PowerArcaneShot))) - .AddToDB(); - var powerArcaneShotAdditionalUse2 = FeatureDefinitionPowerUseModifierBuilder .Create($"PowerUseModifier{Name}ArcaneShotUse2") .SetGuiPresentationNoContent(true) @@ -120,13 +124,6 @@ public MartialArcaneArcher() .Setup(InvocationPoolTypeCustom.Pools.ArcaneShotChoice) .AddToDB(); - InvocationPoolArcaneShotChoice2 = - CustomInvocationPoolDefinitionBuilder - .Create("InvocationPoolArcaneShotChoice2") - .SetGuiPresentation(Category.Feature) - .Setup(InvocationPoolTypeCustom.Pools.ArcaneShotChoice, 2) - .AddToDB(); - var featureSetArcaneShot = FeatureDefinitionFeatureSetBuilder .Create($"FeatureSet{Name}ArcaneShot") .SetGuiPresentation(Category.Feature) @@ -195,7 +192,7 @@ public MartialArcaneArcher() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, CharacterSubclassDefinitions.RangerSwiftBlade) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.MartialArcaneArcher, 256)) .AddFeaturesAtLevel(3, featureSetArcaneLore, castSpellArcaneMagic, @@ -590,25 +587,32 @@ private static List BuildArcaneShotPowers( // Arcane Shot // - private sealed class PhysicalAttackFinishedByMeArcaneShot( + private sealed class CustomBehaviorArcaneShot( FeatureDefinitionPower powerBurstingArrow, - FeatureDefinitionPower powerBurstingArrowDamage) : IPhysicalAttackFinishedByMe + FeatureDefinitionPower powerBurstingArrowDamage) + : IPhysicalAttackBeforeHitConfirmedOnEnemy, IPhysicalAttackFinishedByMe { private const string ArcaneShotMarker = "ArcaneShot"; - public IEnumerator OnPhysicalAttackFinishedByMe( + public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnEnemy( GameLocationBattleManager battleManager, - CharacterAction action, GameLocationCharacter attacker, GameLocationCharacter defender, + ActionModifier actionModifier, RulesetAttackMode attackMode, - RollOutcome rollOutcome, - int damageAmount) + bool rangedAttack, + AdvantageType advantageType, + List actualEffectForms, + bool firstTarget, + bool criticalHit) { - if (rollOutcome is not (RollOutcome.Success or RollOutcome.CriticalSuccess) || - !attacker.OnceInMyTurnIsValid(ArcaneShotMarker) || + var rulesetAttacker = attacker.RulesetCharacter; + var usablePower = PowerProvider.Get(PowerArcaneShot, rulesetAttacker); + + if (!attacker.OnceInMyTurnIsValid(ArcaneShotMarker) || !attacker.RulesetCharacter.IsToggleEnabled(ArcaneArcherToggle) || - !IsBow(attackMode, null, null)) + !IsBow(attackMode, null, null) || + rulesetAttacker.GetRemainingUsesOfPower(usablePower) == 0) { yield break; } @@ -624,9 +628,6 @@ public IEnumerator OnPhysicalAttackFinishedByMe( var implementationManager = ServiceRepository.GetService() as RulesetImplementationManager; - var rulesetAttacker = attacker.RulesetCharacter; - var usablePower = PowerProvider.Get(PowerArcaneShot, rulesetAttacker); - var actionParams = new CharacterActionParams(GameLocationCharacter.GetFromActor(rulesetAttacker), ActionDefinitions.Id.SpendPower) @@ -645,6 +646,9 @@ public IEnumerator OnPhysicalAttackFinishedByMe( yield return battleManager.WaitForReactions(attacker, actionManager, count); + attacker.UsedSpecialFeatures.TryAdd(powerBurstingArrow.Name, 0); + attacker.UsedSpecialFeatures[powerBurstingArrow.Name] = -1; + if (!actionParams.ReactionValidated) { yield break; @@ -658,10 +662,28 @@ public IEnumerator OnPhysicalAttackFinishedByMe( if (subPowers != null && subPowers[option] == powerBurstingArrow) { - HandleBurstingArrow(attacker, defender); + attacker.UsedSpecialFeatures[powerBurstingArrow.Name] = 0; } } + public IEnumerator OnPhysicalAttackFinishedByMe( + GameLocationBattleManager battleManager, + CharacterAction action, + GameLocationCharacter attacker, + GameLocationCharacter defender, + RulesetAttackMode attackMode, + RollOutcome rollOutcome, + int damageAmount) + { + if (!attacker.UsedSpecialFeatures.TryGetValue(powerBurstingArrow.Name, out var value) || value < 0) + { + yield break; + } + + attacker.UsedSpecialFeatures[powerBurstingArrow.Name] = -1; + HandleBurstingArrow(attacker, defender); + } + private void HandleBurstingArrow(GameLocationCharacter attacker, GameLocationCharacter defender) { var rulesetAttacker = attacker.RulesetCharacter; @@ -680,7 +702,7 @@ private void HandleBurstingArrow(GameLocationCharacter attacker, GameLocationCha } var usablePower = PowerProvider.Get(powerBurstingArrowDamage, rulesetAttacker); - var actionParams = new CharacterActionParams(attacker, ActionDefinitions.Id.PowerNoCost) + var actionParams = new CharacterActionParams(attacker, ActionDefinitions.Id.SpendPower) { ActionModifiers = actionModifiers, RulesetEffect = implementationManager diff --git a/SolastaUnfinishedBusiness/Subclasses/MartialForceKnight.cs b/SolastaUnfinishedBusiness/Subclasses/MartialForceKnight.cs index 59b644c0cb..2e8d6e2faf 100644 --- a/SolastaUnfinishedBusiness/Subclasses/MartialForceKnight.cs +++ b/SolastaUnfinishedBusiness/Subclasses/MartialForceKnight.cs @@ -538,7 +538,7 @@ public MartialForceKnight() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.WizardGravityMage, 256)) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.MartialForceKnight, 256)) .AddFeaturesAtLevel(3, featureSetPsionicInitiate) .AddFeaturesAtLevel(6, BuildPowerModifier(PowerPsionicInitiate, 6)) .AddFeaturesAtLevel(7, featureSetPsionicAdept, featureSetPsionicPropulsion) @@ -997,6 +997,7 @@ public void OnConditionRemoved(RulesetCharacter target, RulesetCondition ruleset .Select(y => y.RulesetCharacter) .Where(x => x is { IsDeadOrDyingOrUnconscious: false })) { + // should only check the condition from the same source if (ally.TryGetConditionOfCategoryAndType( AttributeDefinitions.TagEffect, conditionForceBulwark.Name, out var activeCondition) && activeCondition.SourceGuid == target.Guid) diff --git a/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs b/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs index 0139e6b54c..f5a95ec027 100644 --- a/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs +++ b/SolastaUnfinishedBusiness/Subclasses/MartialGuardian.cs @@ -7,6 +7,7 @@ using SolastaUnfinishedBusiness.Builders; using SolastaUnfinishedBusiness.Builders.Features; using SolastaUnfinishedBusiness.CustomUI; +using SolastaUnfinishedBusiness.Feats; using SolastaUnfinishedBusiness.Interfaces; using SolastaUnfinishedBusiness.Models; using SolastaUnfinishedBusiness.Properties; @@ -39,12 +40,12 @@ public MartialGuardian() .AddCustomSubFeatures(new PhysicalAttackBeforeHitConfirmedOnEnemyCompellingStrike()) .AddToDB(); - // Stalwart Front (Sentinel FS) + // Stalwart Front (Sentinel Feat) var proficiencySentinel = FeatureDefinitionProficiencyBuilder .Create($"Proficiency{Name}Sentinel") .SetGuiPresentation(Category.Feature) - .SetProficiencies(ProficiencyType.FightingStyle, "Sentinel") + .SetProficiencies(ProficiencyType.Feat, OtherFeats.FeatSentinel.Name) .AddToDB(); // @@ -133,7 +134,7 @@ public MartialGuardian() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, FightingStyleDefinitions.Protection) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.MartialGuardian, 256)) .AddFeaturesAtLevel(3, actionAffinityCompellingStrike, proficiencySentinel) .AddFeaturesAtLevel(7, savingThrowAffinityUnyielding) .AddFeaturesAtLevel(10, powerGrandChallenge) diff --git a/SolastaUnfinishedBusiness/Subclasses/MartialSpellShield.cs b/SolastaUnfinishedBusiness/Subclasses/MartialSpellShield.cs index d5be05e406..07eccba66b 100644 --- a/SolastaUnfinishedBusiness/Subclasses/MartialSpellShield.cs +++ b/SolastaUnfinishedBusiness/Subclasses/MartialSpellShield.cs @@ -20,6 +20,7 @@ namespace SolastaUnfinishedBusiness.Subclasses; public sealed class MartialSpellShield : AbstractSubclass { private const string Name = "SpellShield"; + internal const string CastSpellName = $"CastSpell{Name}"; internal const string FullName = $"Martial{Name}"; public MartialSpellShield() @@ -27,7 +28,7 @@ public MartialSpellShield() // Spell Casting var castSpell = FeatureDefinitionCastSpellBuilder - .Create($"CastSpell{Name}") + .Create(CastSpellName) .SetGuiPresentation(Category.Feature) .SetSpellCastingOrigin(FeatureDefinitionCastSpell.CastingOrigin.Subclass) .SetSpellCastingAbility(Intelligence) diff --git a/SolastaUnfinishedBusiness/Subclasses/MartialTactician.cs b/SolastaUnfinishedBusiness/Subclasses/MartialTactician.cs index e4638a6291..d91ba1407f 100644 --- a/SolastaUnfinishedBusiness/Subclasses/MartialTactician.cs +++ b/SolastaUnfinishedBusiness/Subclasses/MartialTactician.cs @@ -4,6 +4,7 @@ using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Api.Helpers; +using SolastaUnfinishedBusiness.Behaviors; using SolastaUnfinishedBusiness.Behaviors.Specific; using SolastaUnfinishedBusiness.Builders; using SolastaUnfinishedBusiness.Builders.Features; @@ -33,7 +34,7 @@ public MartialTactician() .Create(Name) .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.MartialTactician, 256)) - .AddFeaturesAtLevel(3, BuildSharpMind(), BuildGambitPoolIncrease(3, Name), + .AddFeaturesAtLevel(3, BuildSharpMind(), BuildGambitPoolIncrease(4, Name), GambitsBuilders.Learn3Gambit, GambitsBuilders.GambitPool) .AddFeaturesAtLevel(7, BuildHonedCraft(), BuildGambitPoolIncrease(), @@ -205,30 +206,16 @@ private static FeatureDefinition BuildGambitDieSize(DieType size) .AddToDB(); } - private static FeatureDefinitionFeatureSet BuildTacticalAwareness() + private static FeatureDefinition BuildTacticalAwareness() { - var additionalDamageTacticalAwareness = FeatureDefinitionAdditionalDamageBuilder - .Create("AdditionalDamageTacticianTacticalAwareness") - .SetGuiPresentationNoContent(true) - .SetNotificationTag("TacticalAwareness") - .SetDamageValueDetermination(AdditionalDamageValueDetermination.ProficiencyBonus) - .SetFrequencyLimit(FeatureLimitedUsage.OncePerTurn) - .AddToDB(); - - var combatAffinityTacticalAwareness = FeatureDefinitionCombatAffinityBuilder - .Create("CombatAffinityTacticianTacticalAwareness") - .SetGuiPresentation("FeatureSetTacticianTacticalAwareness", Category.Feature) - .SetAttackOfOpportunityOnMeAdvantage(AdvantageType.Disadvantage) - .AddToDB(); - - combatAffinityTacticalAwareness.AddCustomSubFeatures( - new PhysicalAttackInitiatedByMeTacticalAwareness(combatAffinityTacticalAwareness)); - - return FeatureDefinitionFeatureSetBuilder + var feature = FeatureDefinitionBuilder .Create("FeatureSetTacticianTacticalAwareness") .SetGuiPresentation(Category.Feature) - .AddFeatureSet(additionalDamageTacticalAwareness, combatAffinityTacticalAwareness) .AddToDB(); + + feature.AddCustomSubFeatures(new CharacterTurnStartListenerTacticalAwareness(feature)); + + return feature; } private class PhysicalAttackFinishedByMeAdaptiveStrategy( @@ -330,27 +317,26 @@ public void OnConditionRemoved(RulesetCharacter target, RulesetCondition ruleset } } - private sealed class PhysicalAttackInitiatedByMeTacticalAwareness( - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - FeatureDefinition featureDefinition) : IPhysicalAttackInitiatedByMe + private sealed class CharacterTurnStartListenerTacticalAwareness(FeatureDefinition featureDefinition) + : ICharacterTurnStartListener { - public IEnumerator OnPhysicalAttackInitiatedByMe( - GameLocationBattleManager battleManager, - CharacterAction action, - GameLocationCharacter attacker, - GameLocationCharacter defender, - ActionModifier attackModifier, - RulesetAttackMode attackMode) + public void OnCharacterTurnStarted(GameLocationCharacter character) { - if ((action.ActionType is not ActionDefinitions.ActionType.Reaction || - attackMode.AttackTags.Contains(AttacksOfOpportunity.NotAoOTag)) && - !attackMode.attackTags.Contains(TacticalAwareness)) + var rulesetCharacter = character.RulesetCharacter; + var usablePower = PowerProvider.Get(GambitsBuilders.GambitPool, rulesetCharacter); + var maxUses = rulesetCharacter.GetMaxUsesOfPower(usablePower); + + // cannot call RepayUse() here as a dynamic pool + usablePower.remainingUses++; + + if (usablePower.remainingUses > maxUses) { - yield break; + usablePower.remainingUses = maxUses; + } + else + { + rulesetCharacter.LogCharacterUsedFeature(featureDefinition); } - - attackModifier.attackAdvantageTrends.Add( - new TrendInfo(1, FeatureSourceType.CharacterFeature, featureDefinition.Name, featureDefinition)); } } } diff --git a/SolastaUnfinishedBusiness/Subclasses/MartialWarlord.cs b/SolastaUnfinishedBusiness/Subclasses/MartialWarlord.cs index de634b7170..18a62dbad9 100644 --- a/SolastaUnfinishedBusiness/Subclasses/MartialWarlord.cs +++ b/SolastaUnfinishedBusiness/Subclasses/MartialWarlord.cs @@ -327,7 +327,7 @@ public MartialWarlord() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.MartialMarshal, 256)) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.MartialWarlord, 256)) .AddFeaturesAtLevel(3, featureBattlefieldExperience, featureSetPressTheAdvantage) .AddFeaturesAtLevel(7, powerStrategicRepositioning) .AddFeaturesAtLevel(10, featureSetCoordinatedAssault) diff --git a/SolastaUnfinishedBusiness/Subclasses/PathOfTheBeast.cs b/SolastaUnfinishedBusiness/Subclasses/PathOfTheBeast.cs index 99616fadc9..dcef2f212f 100644 --- a/SolastaUnfinishedBusiness/Subclasses/PathOfTheBeast.cs +++ b/SolastaUnfinishedBusiness/Subclasses/PathOfTheBeast.cs @@ -16,7 +16,6 @@ using SolastaUnfinishedBusiness.Validators; using static FeatureDefinitionAttributeModifier; using static RuleDefinitions; -using static RulesetImplementationDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper; namespace SolastaUnfinishedBusiness.Subclasses; @@ -286,32 +285,9 @@ public IEnumerator OnPhysicalAttackFinishedByMe( var rulesetAttacker = attacker.RulesetCharacter; var bonus = rulesetAttacker.TryGetAttributeValue(AttributeDefinitions.ProficiencyBonus); - var applyFormsParams = new ApplyFormsParams - { - sourceCharacter = rulesetAttacker, - targetCharacter = rulesetAttacker, - position = attacker.LocationPosition - }; - - var healingForm = new HealingForm - { - healingComputation = HealingComputation.Dice, - bonusHealing = bonus, - diceNumber = 0, - healingCap = HealingCap.HalfMaximumHitPoints - }; - - var implementationService = ServiceRepository.GetService(); - - implementationService.ApplyEffectForms( - [new EffectForm { healingForm = healingForm, formType = EffectForm.EffectFormType.Healing }], - applyFormsParams, - [], - out _, - out _); - - EffectHelpers.StartVisualEffect(attacker, attacker, SpellDefinitions.CureWounds, - EffectHelpers.EffectType.Effect); + EffectHelpers.StartVisualEffect( + attacker, attacker, SpellDefinitions.CureWounds, EffectHelpers.EffectType.Effect); + rulesetAttacker.ReceiveHealing(bonus, true, rulesetAttacker.Guid, HealingCap.HalfMaximumHitPoints); } protected override AttackModeOrder GetOrder(RulesetCharacter character) @@ -988,27 +964,7 @@ public IEnumerator OnActionFinishedByMe(CharacterAction characterAction) yield break; } - var applyFormsParams = new ApplyFormsParams - { - sourceCharacter = rulesetCharacter, - targetCharacter = rulesetCharacter, - position = character.locationPosition - }; - - _ = implementationManager!.ApplyEffectForms( - [ - new EffectForm - { - formType = EffectForm.EffectFormType.TemporaryHitPoints, - temporaryHitPointsForm = new TemporaryHitPointsForm - { - applyToSelf = true, bonusHitPoints = 15, diceNumber = 0 - } - } - ], - applyFormsParams, - [], - out _, - out _); + rulesetCharacter.ReceiveTemporaryHitPoints( + 15, DurationType.UntilAnyRest, 1, TurnOccurenceType.EndOfTurn, rulesetCharacter.Guid); } } diff --git a/SolastaUnfinishedBusiness/Subclasses/PathOfTheElements.cs b/SolastaUnfinishedBusiness/Subclasses/PathOfTheElements.cs index 5a2e193a53..9cc79d6143 100644 --- a/SolastaUnfinishedBusiness/Subclasses/PathOfTheElements.cs +++ b/SolastaUnfinishedBusiness/Subclasses/PathOfTheElements.cs @@ -1,4 +1,5 @@ using System.Collections; +using System.Collections.Generic; using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Api.Helpers; @@ -38,6 +39,24 @@ public PathOfTheElements() // Elemental Fury + var powerStorm = FeatureDefinitionPowerBuilder + .Create($"Power{Name}Storm") + .SetGuiPresentation($"Ancestry{Name}Wildfire", Category.Feature, + Gui.Format($"Feature/&Ancestry{Name}AllDescription", Gui.Localize("Rules/&DamageLightningTitle")), + hidden: true) + .SetUsesFixed(ActivationTime.NoCost) + .SetShowCasting(false) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.Enemy, RangeType.Distance, 6, TargetType.IndividualsUnique) + .SetEffectForms(EffectFormBuilder.DamageForm(DamageTypeLightning, 1, DieType.D6)) + .SetImpactEffectParameters(SpellDefinitions.LightningBolt) + .Build()) + .AddToDB(); + + powerStorm.AddCustomSubFeatures(new ModifyEffectDescriptionElementalFuryDamage(powerStorm)); + var ancestryStorm = FeatureDefinitionAncestryBuilder .Create($"Ancestry{Name}Storm") .SetGuiPresentation(Category.Feature, @@ -46,8 +65,25 @@ public PathOfTheElements() .SetDamageType(DamageTypeLightning) .AddToDB(); - ancestryStorm.AddCustomSubFeatures( - new CharacterTurnEndedElementalFury(ancestryStorm, SpellDefinitions.LightningBolt)); + ancestryStorm.AddCustomSubFeatures(new CharacterTurnEndedElementalFury(powerStorm)); + + var powerBlizzard = FeatureDefinitionPowerBuilder + .Create($"Power{Name}Blizzard") + .SetGuiPresentation($"Ancestry{Name}Wildfire", Category.Feature, + Gui.Format($"Feature/&Ancestry{Name}AllDescription", Gui.Localize("Rules/&DamageColdTitle")), + hidden: true) + .SetUsesFixed(ActivationTime.NoCost) + .SetShowCasting(false) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.Enemy, RangeType.Distance, 6, TargetType.IndividualsUnique) + .SetEffectForms(EffectFormBuilder.DamageForm(DamageTypeCold, 1, DieType.D6)) + .SetImpactEffectParameters(SpellDefinitions.RayOfFrost) + .Build()) + .AddToDB(); + + powerBlizzard.AddCustomSubFeatures(new ModifyEffectDescriptionElementalFuryDamage(powerBlizzard)); var ancestryBlizzard = FeatureDefinitionAncestryBuilder .Create($"Ancestry{Name}Blizzard") @@ -57,8 +93,25 @@ public PathOfTheElements() .SetDamageType(DamageTypeCold) .AddToDB(); - ancestryBlizzard.AddCustomSubFeatures( - new CharacterTurnEndedElementalFury(ancestryBlizzard, SpellDefinitions.RayOfFrost)); + ancestryBlizzard.AddCustomSubFeatures(new CharacterTurnEndedElementalFury(powerBlizzard)); + + var powerWildfire = FeatureDefinitionPowerBuilder + .Create($"Power{Name}Wildfire") + .SetGuiPresentation($"Ancestry{Name}Wildfire", Category.Feature, + Gui.Format($"Feature/&Ancestry{Name}AllDescription", Gui.Localize("Rules/&DamageFireTitle")), + hidden: true) + .SetUsesFixed(ActivationTime.NoCost) + .SetShowCasting(false) + .SetEffectDescription( + EffectDescriptionBuilder + .Create() + .SetTargetingData(Side.Enemy, RangeType.Distance, 6, TargetType.IndividualsUnique) + .SetEffectForms(EffectFormBuilder.DamageForm(DamageTypeFire, 1, DieType.D6)) + .SetImpactEffectParameters(SpellDefinitions.FireBolt) + .Build()) + .AddToDB(); + + powerWildfire.AddCustomSubFeatures(new ModifyEffectDescriptionElementalFuryDamage(powerWildfire)); var ancestryWildfire = FeatureDefinitionAncestryBuilder .Create($"Ancestry{Name}Wildfire") @@ -68,8 +121,7 @@ public PathOfTheElements() .SetDamageType(DamageTypeFire) .AddToDB(); - ancestryWildfire.AddCustomSubFeatures( - new CharacterTurnEndedElementalFury(ancestryWildfire, SpellDefinitions.FireBolt)); + ancestryWildfire.AddCustomSubFeatures(new CharacterTurnEndedElementalFury(powerWildfire)); // keep sorted FeatureSetElementalFury.FeatureSet.Add(ancestryBlizzard); @@ -418,9 +470,52 @@ public PathOfTheElements() // Elemental Fury // - private sealed class CharacterTurnEndedElementalFury( - FeatureDefinitionAncestry ancestry, - IMagicEffect magicEffect) + private sealed class ModifyEffectDescriptionElementalFuryDamage(FeatureDefinitionPower powerDamage) + : IModifyEffectDescription + { + public bool IsValid(BaseDefinition definition, RulesetCharacter character, EffectDescription effectDescription) + { + return definition == powerDamage; + } + + public EffectDescription GetEffectDescription( + BaseDefinition definition, + EffectDescription effectDescription, + RulesetCharacter character, + RulesetEffect rulesetEffect) + { + var classLevel = character.GetClassLevel(CharacterClassDefinitions.Barbarian); + int diceNumber; + DieType dieType; + + switch (classLevel) + { + case < 6: + diceNumber = 1; + dieType = DieType.D6; + break; + case < 10: + diceNumber = 1; + dieType = DieType.D10; + break; + case < 14: + diceNumber = 2; + dieType = DieType.D6; + break; + default: + diceNumber = 2; + dieType = DieType.D10; + break; + } + + effectDescription.EffectForms[0].DamageForm.DiceNumber = diceNumber; + effectDescription.EffectForms[0].DamageForm.DieType = dieType; + + return effectDescription; + } + } + + private sealed class CharacterTurnEndedElementalFury(FeatureDefinitionPower powerDamage) : ICharacterBeforeTurnEndListener { public void OnCharacterBeforeTurnEnded(GameLocationCharacter locationCharacter) @@ -437,63 +532,31 @@ public void OnCharacterBeforeTurnEnded(GameLocationCharacter locationCharacter) return; } - foreach (var targetLocationCharacter in Gui.Battle - .GetContenders(locationCharacter, withinRange: 1)) - { - var rulesetDefender = targetLocationCharacter.RulesetCharacter; - var classLevel = rulesetAttacker.GetClassLevel(CharacterClassDefinitions.Barbarian); - int diceNumber; - DieType dieType; - - switch (classLevel) - { - case < 6: - diceNumber = 1; - dieType = DieType.D6; - break; - case < 10: - diceNumber = 1; - dieType = DieType.D10; - break; - case < 14: - diceNumber = 2; - dieType = DieType.D6; - break; - default: - diceNumber = 2; - dieType = DieType.D10; - break; - } - - var applyFormsParams = new RulesetImplementationDefinitions.ApplyFormsParams - { - sourceCharacter = rulesetAttacker, - targetCharacter = rulesetDefender, - position = targetLocationCharacter.LocationPosition - }; - - var damageForm = new DamageForm - { - DamageType = ancestry.damageType, - DieType = dieType, - DiceNumber = diceNumber, - BonusDamage = 0, - IgnoreCriticalDoubleDice = true - }; - - EffectHelpers.StartVisualEffect(locationCharacter, targetLocationCharacter, magicEffect); + var implementationManager = + ServiceRepository.GetService() as RulesetImplementationManager; - var implementationService = ServiceRepository.GetService(); + var targets = Gui.Battle.GetContenders(locationCharacter, withinRange: 1); - implementationService.ApplyEffectForms( - [new EffectForm { damageForm = damageForm }], - applyFormsParams, - [ancestry.damageType], - out _, - out _); + var actionModifiers = new List(); - rulesetAttacker.LogCharacterUsedFeature(ancestry); + for (var i = 0; i < targets.Count; i++) + { + actionModifiers.Add(new ActionModifier()); } + + var usablePower = PowerProvider.Get(powerDamage, rulesetAttacker); + var actionParams = new CharacterActionParams(locationCharacter, ActionDefinitions.Id.SpendPower) + { + ActionModifiers = actionModifiers, + RulesetEffect = implementationManager + .MyInstantiateEffectPower(rulesetAttacker, usablePower, false), + UsablePower = usablePower, + targetCharacters = targets + }; + + rulesetAttacker.LogCharacterUsedPower(powerDamage); + ServiceRepository.GetService()? + .ExecuteAction(actionParams, null, true); } } diff --git a/SolastaUnfinishedBusiness/Subclasses/PathOfTheLight.cs b/SolastaUnfinishedBusiness/Subclasses/PathOfTheLight.cs index 9a5d7fb816..0fd8e3eb41 100644 --- a/SolastaUnfinishedBusiness/Subclasses/PathOfTheLight.cs +++ b/SolastaUnfinishedBusiness/Subclasses/PathOfTheLight.cs @@ -1,5 +1,4 @@ -using System.Linq; -using JetBrains.Annotations; +using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Builders; using SolastaUnfinishedBusiness.Builders.Features; @@ -29,10 +28,6 @@ public PathOfTheLight() var faerieFireLightSource = FaerieFire.EffectDescription.GetFirstFormOfType(EffectForm.EffectFormType.LightSource); - var invisibleConditions = DatabaseRepository.GetDatabase() - .Where(x => x.IsSubtypeOf(ConditionInvisibleBase.Name)) - .ToList(); - var attackDisadvantageAgainstNonSourcePathOfTheLightIlluminated = FeatureDefinitionCombatAffinityBuilder .Create("AttackDisadvantageAgainstNonSourcePathOfTheLightIlluminated") @@ -46,16 +41,12 @@ public PathOfTheLight() .Create("FeatureSetPathOfTheLightIlluminatedPreventInvisibility") .SetGuiPresentation(Category.Feature) .AddFeatureSet( - invisibleConditions.Select(x => - FeatureDefinitionConditionAffinityBuilder - .Create("ConditionAffinityPathOfTheLightIlluminatedPrevent" + - x.Name.Replace("Condition", string.Empty)) - .SetGuiPresentationNoContent(true) - .SetConditionAffinityType(ConditionAffinityType.Immunity) - .SetConditionType(x) - .AddToDB()) - .OfType() - .ToArray()) + FeatureDefinitionConditionAffinityBuilder + .Create("ConditionAffinityPathOfTheLightIlluminatedPrevent") + .SetGuiPresentationNoContent(true) + .SetConditionAffinityType(ConditionAffinityType.Immunity) + .SetConditionType(ConditionInvisibleBase) + .AddToDB()) .AddToDB(); var conditionPathOfTheLightIlluminated = ConditionDefinitionBuilder @@ -89,11 +80,11 @@ public PathOfTheLight() .SetTriggerCondition(AdditionalDamageTriggerCondition.AlwaysActive) .SetFrequencyLimit(FeatureLimitedUsage.OnceInMyTurn) .SetConditionOperations( - invisibleConditions.Select(x => - new ConditionOperationDescription - { - Operation = ConditionOperationDescription.ConditionOperation.Remove, ConditionDefinition = x - }).ToArray()) + new ConditionOperationDescription + { + Operation = ConditionOperationDescription.ConditionOperation.Remove, + ConditionDefinition = ConditionInvisibleBase + }) .AddConditionOperation( ConditionOperationDescription.ConditionOperation.Add, conditionPathOfTheLightIlluminated) .SetAddLightSource(true) @@ -380,12 +371,7 @@ private static void HandleAfterIlluminatedConditionRemoved(RulesetActor removedF var visibilityService = ServiceRepository.GetService(); var gameLocationCharacter = GameLocationCharacter.GetFromActor(removedFrom); - if (gameLocationCharacter != null) - { - visibilityService.RemoveCharacterLightSource(gameLocationCharacter, character.PersonalLightSource); - } - - character.PersonalLightSource = null; + visibilityService.RemoveCharacterLightSource(gameLocationCharacter, character.PersonalLightSource); } } } diff --git a/SolastaUnfinishedBusiness/Subclasses/PathOfTheRavager.cs b/SolastaUnfinishedBusiness/Subclasses/PathOfTheRavager.cs index c648d9332b..a52316bb0c 100644 --- a/SolastaUnfinishedBusiness/Subclasses/PathOfTheRavager.cs +++ b/SolastaUnfinishedBusiness/Subclasses/PathOfTheRavager.cs @@ -101,7 +101,7 @@ public PathOfTheRavager() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, CharacterSubclassDefinitions.PathBerserker) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.PathOfTheRavager, 256)) .AddFeaturesAtLevel(3, additionalDamageBrutalStrike) .AddFeaturesAtLevel(6, PowerBerserkerMindlessRage) .AddFeaturesAtLevel(10, ActionAffinityRetaliation) diff --git a/SolastaUnfinishedBusiness/Subclasses/PathOfTheWildMagic.cs b/SolastaUnfinishedBusiness/Subclasses/PathOfTheWildMagic.cs index 6b09df9427..d725054f35 100644 --- a/SolastaUnfinishedBusiness/Subclasses/PathOfTheWildMagic.cs +++ b/SolastaUnfinishedBusiness/Subclasses/PathOfTheWildMagic.cs @@ -1322,10 +1322,8 @@ private static FeatureDefinitionPower BuildFeatureUnstableBacklash(WildSurgeHand .SetEffectDescription( EffectDescriptionBuilder .Create() - .SetTargetingData(Side.Enemy, RangeType.Distance, 24, TargetType.Individuals) - .UseQuickAnimations() .SetDurationData(DurationType.Round) - .SetEffectForms(EffectFormBuilder.ConditionForm(ConditionDefinitions.ConditionDummy)) + .SetTargetingData(Side.Enemy, RangeType.Distance, 24, TargetType.Individuals) .Build()) .AddCustomSubFeatures(new UnstableBackslashHandler(wildSurgeHandler)) .AddToDB(); diff --git a/SolastaUnfinishedBusiness/Subclasses/PatronArchfey.cs b/SolastaUnfinishedBusiness/Subclasses/PatronArchfey.cs index 91454c7c3f..52f96c5501 100644 --- a/SolastaUnfinishedBusiness/Subclasses/PatronArchfey.cs +++ b/SolastaUnfinishedBusiness/Subclasses/PatronArchfey.cs @@ -310,7 +310,7 @@ public PatronArchfey() Subclass = CharacterSubclassDefinitionBuilder .Create($"Patron{Name}") - .SetGuiPresentation(Category.Subclass, CharacterSubclassDefinitions.RangerShadowTamer) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.PatronArchfey, 256)) .AddFeaturesAtLevel(1, magicAffinityExpandedSpells, featureSetFeyPresence) .AddFeaturesAtLevel(6, powerMistyEscape) .AddFeaturesAtLevel(10, featureSetBeguilingDefenses) diff --git a/SolastaUnfinishedBusiness/Subclasses/PatronCelestial.cs b/SolastaUnfinishedBusiness/Subclasses/PatronCelestial.cs index 2afd722bb8..ae58f681c3 100644 --- a/SolastaUnfinishedBusiness/Subclasses/PatronCelestial.cs +++ b/SolastaUnfinishedBusiness/Subclasses/PatronCelestial.cs @@ -8,8 +8,10 @@ using SolastaUnfinishedBusiness.Behaviors.Specific; using SolastaUnfinishedBusiness.Builders; using SolastaUnfinishedBusiness.Builders.Features; +using SolastaUnfinishedBusiness.CustomUI; using SolastaUnfinishedBusiness.Interfaces; using SolastaUnfinishedBusiness.Models; +using SolastaUnfinishedBusiness.Properties; using SolastaUnfinishedBusiness.Validators; using static RuleDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper; @@ -236,7 +238,7 @@ public PatronCelestial() Subclass = CharacterSubclassDefinitionBuilder .Create($"Patron{Name}") - .SetGuiPresentation(Category.Subclass, CharacterSubclassDefinitions.DomainLife) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.PatronCelestial, 256)) .AddFeaturesAtLevel(1, magicAffinityExpandedSpells, bonusCantripCelestial, featureSetHealingLight) .AddFeaturesAtLevel(6, featureSetRadiantSoul) .AddFeaturesAtLevel(10, powerCelestialResistance) diff --git a/SolastaUnfinishedBusiness/Subclasses/PatronMoonlitScion.cs b/SolastaUnfinishedBusiness/Subclasses/PatronMoonlitScion.cs index bf841c61b8..4309d0e2de 100644 --- a/SolastaUnfinishedBusiness/Subclasses/PatronMoonlitScion.cs +++ b/SolastaUnfinishedBusiness/Subclasses/PatronMoonlitScion.cs @@ -420,6 +420,7 @@ public IEnumerator OnPowerOrSpellFinishedByMe(CharacterActionMagicEffect action, { var rulesetCharacter = action.ActingCharacter.RulesetCharacter; + // no need to check for source here as these are all self conditions if (rulesetCharacter.TryGetConditionOfCategoryAndType( AttributeDefinitions.TagEffect, conditionFree.Name, out var activeCondition)) { diff --git a/SolastaUnfinishedBusiness/Subclasses/PatronMountain.cs b/SolastaUnfinishedBusiness/Subclasses/PatronMountain.cs index e8cfe54460..cd1c359083 100644 --- a/SolastaUnfinishedBusiness/Subclasses/PatronMountain.cs +++ b/SolastaUnfinishedBusiness/Subclasses/PatronMountain.cs @@ -6,8 +6,10 @@ using SolastaUnfinishedBusiness.Behaviors.Specific; using SolastaUnfinishedBusiness.Builders; using SolastaUnfinishedBusiness.Builders.Features; +using SolastaUnfinishedBusiness.CustomUI; using SolastaUnfinishedBusiness.Interfaces; using SolastaUnfinishedBusiness.Models; +using SolastaUnfinishedBusiness.Properties; using static RuleDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper; using static SolastaUnfinishedBusiness.Api.DatabaseHelper.SpellDefinitions; @@ -128,7 +130,7 @@ public PatronMountain() var powerClingingStrength = FeatureDefinitionPowerBuilder .Create($"Power{Name}ClingingStrength") - .SetGuiPresentation(Category.Feature) + .SetGuiPresentation(Category.Feature, Sprites.GetSprite(Name, Resources.PowerClingeStrength, 128, 64)) .SetUsesFixed(ActivationTime.BonusAction, RechargeRate.ShortRest) .SetEffectDescription( EffectDescriptionBuilder @@ -200,7 +202,7 @@ public PatronMountain() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, CharacterSubclassDefinitions.MartialMountaineer) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.PatronMountain, 256)) .AddFeaturesAtLevel(1, magicAffinityExpandedSpells, featureSetKnowledgeOfAeons, diff --git a/SolastaUnfinishedBusiness/Subclasses/RangerFeyWanderer.cs b/SolastaUnfinishedBusiness/Subclasses/RangerFeyWanderer.cs index 9307cacbc4..45a8cd539d 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RangerFeyWanderer.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RangerFeyWanderer.cs @@ -204,7 +204,7 @@ public RangerFeyWanderer() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.CircleOfTheAncientForest, 256)) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.RangerFeyWanderer, 256)) .AddFeaturesAtLevel(3, autoPreparedSpells, additionalDamageDreadfulStrikes, featureSetOtherworldlyGlamour) .AddFeaturesAtLevel(7, diff --git a/SolastaUnfinishedBusiness/Subclasses/RangerGloomStalker.cs b/SolastaUnfinishedBusiness/Subclasses/RangerGloomStalker.cs index e4c8ff7f38..dfda6cd978 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RangerGloomStalker.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RangerGloomStalker.cs @@ -173,7 +173,7 @@ public RangerGloomStalker() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.WayOfTheSilhouette, 256)) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.RangerGloomStalker, 256)) .AddFeaturesAtLevel(3, autoPreparedSpells, attributeModifierDreadAmbusher, featureUmbralSight) .AddFeaturesAtLevel(7, featureSetIronMind) diff --git a/SolastaUnfinishedBusiness/Subclasses/RangerHellWalker.cs b/SolastaUnfinishedBusiness/Subclasses/RangerHellWalker.cs index 35e99c537a..49c6350ab3 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RangerHellWalker.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RangerHellWalker.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections; +using System.Collections; using System.Collections.Generic; using System.Linq; using JetBrains.Annotations; @@ -82,7 +81,6 @@ public RangerHellWalker() .Create(ConditionDefinitions.ConditionOnFire, $"Condition{Name}DammingStrike") .SetParentCondition(ConditionDefinitions.ConditionOnFire) .SetFeatures() - .SetSpecialInterruptions(Array.Empty()) .AddToDB(); var additionalDamageDammingStrike = FeatureDefinitionAdditionalDamageBuilder @@ -255,19 +253,19 @@ public RangerHellWalker() // private sealed class OnConditionAddedOrRemovedDammingStrike( - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - ConditionDefinition conditionDefinition) - : IOnConditionAddedOrRemoved + ConditionDefinition conditionMarkOfTheDammed) : IOnConditionAddedOrRemoved { public void OnConditionAdded(RulesetCharacter target, RulesetCondition rulesetCondition) { // empty } + // should only remove the condition from the same source public void OnConditionRemoved(RulesetCharacter target, RulesetCondition rulesetCondition) { - if (target.TryGetConditionOfCategoryAndType(AttributeDefinitions.TagEffect, conditionDefinition.Name, - out var activeCondition)) + if (target.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionMarkOfTheDammed.Name, out var activeCondition) && + activeCondition.SourceGuid == rulesetCondition.SourceGuid) { target.RemoveCondition(activeCondition); } @@ -326,16 +324,18 @@ public IEnumerator OnPowerOrSpellFinishedByMe(CharacterActionMagicEffect action, var gameLocationDefender = action.actionParams.targetCharacters[0]; // remove this condition from all other enemies + // ReSharper disable once ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator foreach (var gameLocationCharacter in Gui.Battle .GetContenders(gameLocationDefender, isOppositeSide: false)) { var rulesetDefender = gameLocationCharacter.RulesetCharacter; - var rulesetCondition = rulesetDefender.AllConditions - .FirstOrDefault(x => x.ConditionDefinition == conditionDefinition); - if (rulesetCondition != null) + // should only check the condition from the same source + if (rulesetDefender.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionDefinition.Name, out var activeCondition) && + activeCondition.SourceGuid == action.ActingCharacter.Guid) { - rulesetDefender.RemoveCondition(rulesetCondition); + rulesetDefender.RemoveCondition(activeCondition); } } } diff --git a/SolastaUnfinishedBusiness/Subclasses/RangerLightBearer.cs b/SolastaUnfinishedBusiness/Subclasses/RangerLightBearer.cs index ea1f90efda..7e4a46489c 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RangerLightBearer.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RangerLightBearer.cs @@ -365,9 +365,11 @@ public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnEnemy( var rulesetDefender = defender.RulesetActor; + // should only check the condition from the same source if (rulesetDefender is not { IsDeadOrDyingOrUnconscious: false } || - !rulesetDefender.HasConditionOfCategoryAndType(AttributeDefinitions.TagEffect, - conditionDefinition.Name)) + !rulesetDefender.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionDefinition.Name, out var activeCondition) || + activeCondition.SourceGuid != attacker.Guid) { yield break; } @@ -390,13 +392,7 @@ public IEnumerator OnPhysicalAttackBeforeHitConfirmedOnEnemy( EffectFormBuilder.DamageForm(DamageTypeRadiant, diceNumber, DieType.D8)); } - if (rulesetDefender.TryGetConditionOfCategoryAndType( - AttributeDefinitions.TagEffect, - conditionDefinition.Name, - out var activeCondition)) - { - rulesetDefender.RemoveCondition(activeCondition); - } + rulesetDefender.RemoveCondition(activeCondition); } } diff --git a/SolastaUnfinishedBusiness/Subclasses/RangerSkyWarrior.cs b/SolastaUnfinishedBusiness/Subclasses/RangerSkyWarrior.cs index f33670beb9..41698ba711 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RangerSkyWarrior.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RangerSkyWarrior.cs @@ -238,7 +238,7 @@ public RangerSkyWarrior() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, CharacterSubclassDefinitions.DomainBattle) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.RangerSkyWarrior, 256)) .AddFeaturesAtLevel(3, autoPreparedSpells, additionalDamageGiftOfTheWind, powerGiftOfTheWind, proficiencyAerialAgility) .AddFeaturesAtLevel(7, @@ -266,6 +266,7 @@ private sealed class ItemEquippedCheckHeroStillHasShield( { public void OnItemEquipped(RulesetCharacterHero hero) { + // no need to check for source here as these are all self conditions if (!ValidatorsCharacter.HasShield(hero) && hero.TryGetConditionOfCategoryAndType( AttributeDefinitions.TagEffect, condition.Name, out var activeCondition)) diff --git a/SolastaUnfinishedBusiness/Subclasses/RangerWildMaster.cs b/SolastaUnfinishedBusiness/Subclasses/RangerWildMaster.cs index b249a87020..00a7ac334d 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RangerWildMaster.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RangerWildMaster.cs @@ -417,14 +417,19 @@ public void OnConditionAdded(RulesetCharacter target, RulesetCondition rulesetCo return; } - foreach (var enemy in Gui.Battle.GetMyContenders(target.Side) - .Where(x => x.RulesetActor is { IsDeadOrDyingOrUnconscious: false } && - x.RulesetActor != target)) + foreach (var ally in Gui.Battle.GetMyContenders(target.Side) + .Where(x => + x.RulesetActor is { IsDeadOrDyingOrUnconscious: false } && + x.RulesetActor != target)) { - if (enemy.RulesetActor.TryGetConditionOfCategoryAndType( - AttributeDefinitions.TagEffect, conditionKillCommand.Name, out var activeCondition)) + var rulesetAlly = ally.RulesetActor; + + // should only remove the conditions from the same source + if (rulesetAlly.TryGetConditionOfCategoryAndType( + AttributeDefinitions.TagEffect, conditionKillCommand.Name, out var activeCondition) && + activeCondition.SourceGuid == rulesetCondition.SourceGuid) { - enemy.RulesetActor.RemoveCondition(activeCondition); + rulesetAlly.RemoveCondition(activeCondition); } } } diff --git a/SolastaUnfinishedBusiness/Subclasses/RoguishArcaneScoundrel.cs b/SolastaUnfinishedBusiness/Subclasses/RoguishArcaneScoundrel.cs index ffd377aff8..bfac969889 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RoguishArcaneScoundrel.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RoguishArcaneScoundrel.cs @@ -23,6 +23,7 @@ public sealed class RoguishArcaneScoundrel : AbstractSubclass { internal const string Name = "RoguishArcaneScoundrel"; internal const int DistractingAmbushLevel = 9; + internal const string CastSpellName = $"CastSpell{Name}"; private const string DistractingAmbush = "DistractingAmbush"; private const string ConditionDistractingAmbushName = $"Condition{Name}{DistractingAmbush}"; @@ -34,7 +35,7 @@ public RoguishArcaneScoundrel() // Spell Casting var castSpell = FeatureDefinitionCastSpellBuilder - .Create($"CastSpell{Name}") + .Create(CastSpellName) .SetGuiPresentation(Category.Feature) .SetSpellCastingOrigin(FeatureDefinitionCastSpell.CastingOrigin.Subclass) .SetSpellCastingAbility(AttributeDefinitions.Intelligence) @@ -134,7 +135,7 @@ public RoguishArcaneScoundrel() powerArcaneBackslashCounterSpell.AddCustomSubFeatures( new ModifyEffectDescriptionArcaneBackslashCounterSpell(powerArcaneBackslashCounterSpell)); - var powerArcaneBacklash = FeatureDefinitionPowerBuilder + var powerArcaneBacklashSneakDamage = FeatureDefinitionPowerBuilder .Create($"Power{Name}ArcaneBackslash") .SetGuiPresentation(Category.Feature) .SetUsesFixed(ActivationTime.NoCost) @@ -154,9 +155,10 @@ public RoguishArcaneScoundrel() .Build()) .AddToDB(); - powerArcaneBacklash.AddCustomSubFeatures( + powerArcaneBacklashSneakDamage.AddCustomSubFeatures( ModifyPowerVisibility.Hidden, - new ActionFinishedByMeArcaneBackslash(powerArcaneBacklash, powerArcaneBackslashCounterSpell)); + new MagicEffectFinishedByMeArcaneBackslash( + powerArcaneBacklashSneakDamage, powerArcaneBackslashCounterSpell)); // LEVEL 17 @@ -223,7 +225,7 @@ public RoguishArcaneScoundrel() .AddFeaturesAtLevel(9, additionalDamageDistractingAmbush) .AddFeaturesAtLevel(13, - autoPreparedSpellsArcaneBackslash, powerArcaneBacklash, powerArcaneBackslashCounterSpell) + autoPreparedSpellsArcaneBackslash, powerArcaneBacklashSneakDamage, powerArcaneBackslashCounterSpell) .AddFeaturesAtLevel(17, featureSetTricksOfTheTrade) .AddToDB(); @@ -267,7 +269,6 @@ private static bool CanUseEssenceTheft(RulesetCharacter character) } private sealed class ModifyEffectDescriptionArcaneBackslashCounterSpell( - // ReSharper disable once SuggestBaseTypeForParameterInConstructor FeatureDefinitionPower powerArcaneBackslashCounterSpell) : IModifyEffectDescription { public bool IsValid( @@ -275,8 +276,8 @@ public bool IsValid( RulesetCharacter character, EffectDescription effectDescription) { - return definition == powerArcaneBackslashCounterSpell - && character.GetClassLevel(CharacterClassDefinitions.Rogue) >= 19; + return definition == powerArcaneBackslashCounterSpell && + character.GetClassLevel(CharacterClassDefinitions.Rogue) >= 19; } public EffectDescription GetEffectDescription( @@ -291,9 +292,8 @@ public EffectDescription GetEffectDescription( } } - private sealed class ActionFinishedByMeArcaneBackslash( + private sealed class MagicEffectFinishedByMeArcaneBackslash( FeatureDefinitionPower powerArcaneBackslash, - // ReSharper disable once SuggestBaseTypeForParameterInConstructor FeatureDefinitionPower powerCounterSpell) : IMagicEffectFinishedByMe { public IEnumerator OnMagicEffectFinishedByMe( @@ -341,11 +341,8 @@ public IEnumerator OnMagicEffectFinishedByMe( } private sealed class CustomBehaviorEssenceTheft( - // ReSharper disable once SuggestBaseTypeForParameterInConstructor FeatureDefinitionPower powerEssenceTheft, - // ReSharper disable once SuggestBaseTypeForParameterInConstructor - ConditionDefinition conditionPossessed) - : IFilterTargetingCharacter, IModifyEffectDescription + ConditionDefinition conditionPossessed) : IFilterTargetingCharacter, IModifyEffectDescription { public bool EnforceFullSelection => false; @@ -379,22 +376,11 @@ public EffectDescription GetEffectDescription( { var hero = character.GetOriginalHero(); - if (hero == null) + if (hero != null && + (hero.TrainedFeats.Contains(ClassFeats.CloseQuartersDex) || + hero.TrainedFeats.Contains(ClassFeats.CloseQuartersInt))) { - return effectDescription; - } - - var damageForm = effectDescription.FindFirstDamageForm(); - - if (damageForm == null) - { - return effectDescription; - } - - if (hero.TrainedFeats.Contains(ClassFeats.CloseQuartersDex) || - hero.TrainedFeats.Contains(ClassFeats.CloseQuartersInt)) - { - damageForm.DieType = DieType.D8; + effectDescription.EffectForms[0].DamageForm.DieType = DieType.D8; } return effectDescription; diff --git a/SolastaUnfinishedBusiness/Subclasses/RoguishBladeCaller.cs b/SolastaUnfinishedBusiness/Subclasses/RoguishBladeCaller.cs index 6ff7559cf8..b4c7cd6360 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RoguishBladeCaller.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RoguishBladeCaller.cs @@ -6,7 +6,9 @@ using SolastaUnfinishedBusiness.Behaviors.Specific; using SolastaUnfinishedBusiness.Builders; using SolastaUnfinishedBusiness.Builders.Features; +using SolastaUnfinishedBusiness.CustomUI; using SolastaUnfinishedBusiness.Interfaces; +using SolastaUnfinishedBusiness.Properties; using SolastaUnfinishedBusiness.Validators; using static RuleDefinitions; using static SolastaUnfinishedBusiness.Api.DatabaseHelper; @@ -164,7 +166,8 @@ public RoguishBladeCaller() new CustomBehaviorBladeMark(conditionBladeMark, conditionBladeSurge, powerHailOfBlades)); Subclass = CharacterSubclassDefinitionBuilder - .Create(Name).SetGuiPresentation(Category.Subclass, CharacterSubclassDefinitions.RangerSwiftBlade) + .Create(Name).SetGuiPresentation(Category.Subclass, + Sprites.GetSprite(Name, Resources.OathOfDemonHunter, 256)) .AddFeaturesAtLevel(3, featureBladeBond, featureSetBladeMark) .AddFeaturesAtLevel(9, featureSetHailOfBlades) .AddFeaturesAtLevel(13, featureBladeSurge) diff --git a/SolastaUnfinishedBusiness/Subclasses/RoguishDuelist.cs b/SolastaUnfinishedBusiness/Subclasses/RoguishDuelist.cs index 31f45d5193..f3ecf1cea9 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RoguishDuelist.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RoguishDuelist.cs @@ -229,8 +229,10 @@ public IEnumerator OnPhysicalAttackFinishedByMe( yield break; } + // should only check the condition from the same source if (!rulesetDefender.TryGetConditionOfCategoryAndType( - AttributeDefinitions.TagEffect, conditionDaringDuel.Name, out var activeCondition)) + AttributeDefinitions.TagEffect, conditionDaringDuel.Name, out var activeCondition) && + activeCondition.SourceGuid != attacker.Guid) { yield break; } diff --git a/SolastaUnfinishedBusiness/Subclasses/RoguishUmbralStalker.cs b/SolastaUnfinishedBusiness/Subclasses/RoguishUmbralStalker.cs index e2da493d98..6404fde5be 100644 --- a/SolastaUnfinishedBusiness/Subclasses/RoguishUmbralStalker.cs +++ b/SolastaUnfinishedBusiness/Subclasses/RoguishUmbralStalker.cs @@ -205,7 +205,7 @@ public RoguishUmbralStalker() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.WayOfTheSilhouette, 256)) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.RoguishUmbralStalker, 256)) .AddFeaturesAtLevel(3, featureSetDeadlyShadows, actionAffinityHailOfBladesToggle) .AddFeaturesAtLevel(9, featureSetShadowStride) .AddFeaturesAtLevel(13, featureSetUmbralSoul) @@ -246,8 +246,7 @@ private static bool CanUseShadowStride(RulesetCharacter character, bool enableOf var locationCharacter = GameLocationCharacter.GetFromActor(character); - return locationCharacter != null && - locationCharacter.OnceInMyTurnIsValid("ShadowStride") && + return locationCharacter.OnceInMyTurnIsValid("ShadowStride") && ValidatorsCharacter.IsNotInBrightLight(character); } diff --git a/SolastaUnfinishedBusiness/Subclasses/SorcerousPsion.cs b/SolastaUnfinishedBusiness/Subclasses/SorcerousPsion.cs index 0e36240d9e..9aea381be3 100644 --- a/SolastaUnfinishedBusiness/Subclasses/SorcerousPsion.cs +++ b/SolastaUnfinishedBusiness/Subclasses/SorcerousPsion.cs @@ -244,7 +244,7 @@ public SorcerousPsion() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.PathOfTheElements, 256)) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.SorcererPsion, 256)) .AddFeaturesAtLevel(1, autoPreparedSpellsPsion, bonusCantripsPsionicMind, featureSetPsychokinesis) .AddFeaturesAtLevel(6, actionAffinityMindSculpt) .AddFeaturesAtLevel(14, powerMindOverMatter) diff --git a/SolastaUnfinishedBusiness/Subclasses/WayOfTheStormSoul.cs b/SolastaUnfinishedBusiness/Subclasses/WayOfTheStormSoul.cs index d68d18363b..a2767506d5 100644 --- a/SolastaUnfinishedBusiness/Subclasses/WayOfTheStormSoul.cs +++ b/SolastaUnfinishedBusiness/Subclasses/WayOfTheStormSoul.cs @@ -182,7 +182,7 @@ public WayOfTheStormSoul() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, CharacterSubclassDefinitions.DomainElementalLighting) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.WayOfTheStormSoul, 256)) .AddFeaturesAtLevel(3, additionalDamageDiscipleOfStorms) .AddFeaturesAtLevel(6, featureSetLightningWarrior) .AddFeaturesAtLevel(11, powerTempestFury) diff --git a/SolastaUnfinishedBusiness/Subclasses/WayOfTheWealAndWoe.cs b/SolastaUnfinishedBusiness/Subclasses/WayOfTheWealAndWoe.cs index bcb0ecd58e..2de9d42b18 100644 --- a/SolastaUnfinishedBusiness/Subclasses/WayOfTheWealAndWoe.cs +++ b/SolastaUnfinishedBusiness/Subclasses/WayOfTheWealAndWoe.cs @@ -105,7 +105,7 @@ public WayOfTheWealAndWoe() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.OathOfDemonHunter, 256)) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.WayOfTheWealAndWoe, 256)) .AddFeaturesAtLevel(3, featureWeal, featureWoe) .AddFeaturesAtLevel(6, featureSelfPropelledWeal) .AddFeaturesAtLevel(11, featureBrutalWeal) diff --git a/SolastaUnfinishedBusiness/Subclasses/WayOfTheZenArchery.cs b/SolastaUnfinishedBusiness/Subclasses/WayOfTheZenArchery.cs index 03e6bada5a..4966254cc6 100644 --- a/SolastaUnfinishedBusiness/Subclasses/WayOfTheZenArchery.cs +++ b/SolastaUnfinishedBusiness/Subclasses/WayOfTheZenArchery.cs @@ -128,7 +128,7 @@ public WayOfZenArchery() Subclass = CharacterSubclassDefinitionBuilder .Create(Name) - .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.WayOfTheDistantHand, 256)) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.WayOfTheZenArchery, 256)) .AddFeaturesAtLevel(3, proficiencyOneWithTheBow, featureFlurryOfArrows) .AddFeaturesAtLevel(6, featureKiEmpoweredArrows) .AddFeaturesAtLevel(11, featureUnerringPrecision) diff --git a/SolastaUnfinishedBusiness/Subclasses/WizardBladeDancer.cs b/SolastaUnfinishedBusiness/Subclasses/WizardBladeDancer.cs index 5d53d2e603..9a0c5411e9 100644 --- a/SolastaUnfinishedBusiness/Subclasses/WizardBladeDancer.cs +++ b/SolastaUnfinishedBusiness/Subclasses/WizardBladeDancer.cs @@ -1,5 +1,4 @@ -using System.Linq; -using JetBrains.Annotations; +using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Builders; using SolastaUnfinishedBusiness.Builders.Features; @@ -222,14 +221,13 @@ public void OnItemEquipped(RulesetCharacterHero hero) return; } - foreach (var rulesetCondition in hero.allConditions - .Where(x => x.ConditionDefinition == ConditionBladeDancerBladeDance || - x.ConditionDefinition == ConditionBladeDancerDanceOfDefense || - x.ConditionDefinition == ConditionBladeDancerDanceOfVictory) - .ToList()) - { - hero.RemoveCondition(rulesetCondition); - } + // no need to check for source here as these are all self conditions + hero.RemoveAllConditionsOfCategoryAndType( + AttributeDefinitions.TagEffect, ConditionBladeDancerBladeDance.Name); + hero.RemoveAllConditionsOfCategoryAndType( + AttributeDefinitions.TagEffect, ConditionBladeDancerDanceOfDefense.Name); + hero.RemoveAllConditionsOfCategoryAndType( + AttributeDefinitions.TagEffect, ConditionBladeDancerDanceOfVictory.Name); } } } diff --git a/SolastaUnfinishedBusiness/Subclasses/WizardWarMagic.cs b/SolastaUnfinishedBusiness/Subclasses/WizardWarMagic.cs index 9c90d464b8..0716bc637c 100644 --- a/SolastaUnfinishedBusiness/Subclasses/WizardWarMagic.cs +++ b/SolastaUnfinishedBusiness/Subclasses/WizardWarMagic.cs @@ -139,7 +139,7 @@ public WizardWarMagic() Subclass = CharacterSubclassDefinitionBuilder .Create($"Wizard{Name}") - .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.WizardArcaneFighter, 256)) + .SetGuiPresentation(Category.Subclass, Sprites.GetSprite(Name, Resources.WizardWarMagic, 256)) .AddFeaturesAtLevel(2, featureArcaneDeflection, attributeModifierTacticalWit) .AddFeaturesAtLevel(6, featureSetPowerSurge) .AddFeaturesAtLevel(10, featureDurableMagic) diff --git a/SolastaUnfinishedBusiness/Subclasses/_CommonBuilders.cs b/SolastaUnfinishedBusiness/Subclasses/_CommonBuilders.cs index 7d5fc7573b..a312120c4a 100644 --- a/SolastaUnfinishedBusiness/Subclasses/_CommonBuilders.cs +++ b/SolastaUnfinishedBusiness/Subclasses/_CommonBuilders.cs @@ -1,5 +1,6 @@ using System.Collections; using System.Collections.Generic; +using JetBrains.Annotations; using SolastaUnfinishedBusiness.Api; using SolastaUnfinishedBusiness.Api.GameExtensions; using SolastaUnfinishedBusiness.Behaviors; @@ -133,7 +134,7 @@ internal static class CommonBuilders .AddCustomSubFeatures(new AttackReplaceWithCantrip()) .AddToDB(); - internal static readonly DieTypeDefinition DieTypeD3 = + [UsedImplicitly] internal static readonly DieTypeDefinition DieTypeD3 = DieTypeDefinitionBuilder .Create(DatabaseHelper.GetDefinition("DieTypeD6"), "DieTypeD3") .SetOrUpdateGuiPresentation("Rules/&DieD3Title", Gui.NoLocalization) diff --git a/SolastaUnfinishedBusiness/Translations/de/Feats/MeleeCombat-de.txt b/SolastaUnfinishedBusiness/Translations/de/Feats/MeleeCombat-de.txt index 5c6eef17bb..229a8722ef 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Feats/MeleeCombat-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Feats/MeleeCombat-de.txt @@ -34,8 +34,6 @@ Feat/&FeatFencerDescription=Wenn Sie in Ihrem Zug die Angriffsaktion ausführen, Feat/&FeatFencerTitle=Fechter Feat/&FeatGreatWeaponDefenseDescription=Du kämpfst hart mit großen Waffen und erhältst dadurch folgende Vorteile:\n• Wenn du die Trefferpunkte einer Kreatur auf 0 bringst oder mit einer Nahkampfwaffe einen kritischen Treffer landest, erhöht sich deine Bewegungsgeschwindigkeit bis zum Ende deines Zuges um 15 Fuß.\n• Wenn du die Angriffsaktion ausführst, während du eine schwere Nahkampfwaffe oder eine vielseitige Waffe in beiden Händen führst, erhältst du bis zum Beginn deines nächsten Zuges +2AC. Du verlierst diesen Vorteil, wenn du eine andere Waffe oder einen Schild ausrüstest. Feat/&FeatGreatWeaponDefenseTitle=Kampfeseifer -Feat/&FeatHammerThePointDescription=Sie wissen, wie Sie sich auf den gleichen Punkt fokussieren und konzentrieren können. Nachdem du einen Angriffswurf gegen ein Ziel durchgeführt hast, erhältst du bis zum Ende deines Zuges +1 auf Angriffs- und Schadenswürfe gegen dieses Ziel [Stapel]. -Feat/&FeatHammerThePointTitle=Hämmern Sie den Punkt Feat/&FeatLongswordFinesseDescription=Sie stammen von einem Meister des Langschwerts ab, und ein Teil dieser Meisterschaft ist auf Sie übergegangen. Sie erhalten die folgenden Vorteile:\n• Erhöhen Sie Ihre Geschicklichkeit um 1 auf maximal 20.\n• Während Sie ein Langschwert tragen, erhalten Sie einen Bonus von +1 auf die Rüstungsklasse.\n• Langschwert hat die Finesse-Eigenschaft, wenn Sie sie einsetzen. Feat/&FeatLongswordFinesseTitle=Langschwert-Finesse Feat/&FeatOldTacticsDexDescription=Erhöhen Sie Ihre Geschicklichkeit um 1. Einmal pro Runde können Sie einen Gelegenheitsangriff gegen das Ziel durchführen, wenn ein liegender Feind in Reichweite Ihrer Nahkampfwaffe aufsteht. diff --git a/SolastaUnfinishedBusiness/Translations/de/Feats/OtherFeats-de.txt b/SolastaUnfinishedBusiness/Translations/de/Feats/OtherFeats-de.txt index 330b5be179..d7c7f3edf9 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Feats/OtherFeats-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Feats/OtherFeats-de.txt @@ -8,8 +8,6 @@ Feat/&FeatAlertDescription=Immer auf der Suche nach Gefahren, erhältst du die f Feat/&FeatAlertTitle=Alarm Feat/&FeatArcaneArcherAdeptDescription=Du verfügst über arkane Magie und eine Bogenausbildung, die es dir ermöglicht, spezielle Kampfmanöver durchzuführen. Feat/&FeatArcaneArcherAdeptTitle=Arkaner Bogenschützen-Adept -Feat/&FeatAstralArmsDescription=Erhöhe deine Weisheit um 1 auf maximal 20.\nWenn du in deinem Zug einen unbewaffneten Schlag ausführst, beträgt deine Reichweite dafür 10 Fuß. Andere Kreaturen provozieren einen Gelegenheitsangriff von dir, wenn sie in die Reichweite gelangen, die du mit unbewaffnetem Angriff hast . -Feat/&FeatAstralArmsTitle=Astralreichweite Feat/&FeatAthleteDexDescription=Sie haben ein umfangreiches körperliches Training absolviert, um die folgenden Vorteile zu erlangen:\n• Steigern Sie Ihre Geschicklichkeit um 1 bis auf maximal 20.\n• Wenn Sie liegen, kostet Sie das Aufstehen keine Bewegung.\n• Klettern kostet Sie keine zusätzliche Bewegung.\n• Sie erwerben Kenntnisse im Bereich Athletik oder Fachkenntnisse, wenn Sie bereits über Kenntnisse darin verfügen. Feat/&FeatAthleteDexTitle=Athlet [Dex] Feat/&FeatAthleteStrDescription=Sie haben ein umfangreiches körperliches Training absolviert, um die folgenden Vorteile zu erzielen:\n• Erhöhen Sie Ihre Kraft um 1 auf maximal 20.\n• Wenn Sie in Bauchlage sind, kostet Sie das Aufstehen keine Bewegung.\n• Klettern kostet Sie keine zusätzliche Bewegung.\n• Sie erwerben Kenntnisse in Leichtathletik oder Fachwissen, wenn Sie bereits über Kenntnisse verfügen. diff --git a/SolastaUnfinishedBusiness/Translations/de/Feats/RangedCombat-de.txt b/SolastaUnfinishedBusiness/Translations/de/Feats/RangedCombat-de.txt index 1c9e1b55e8..83bc49a1e9 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Feats/RangedCombat-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Feats/RangedCombat-de.txt @@ -10,8 +10,6 @@ Feat/&FeatDeadeyeDescription=Sie haben gelernt, Genauigkeit einzutauschen, um t Feat/&FeatDeadeyeTitle=Scharfschütze Feat/&FeatRangedExpertDescription=Ihr Expertentraining mit Fernkampfwaffen gewährt Ihnen folgende Vorteile:\n• Angriffe auf Nahkampfreichweite verursachen keinen Nachteil.\n• Wenn Sie in Ihrem Zug die Angriffsaktion ausführen, können Sie einen zusätzlichen einhändigen Fernkampfangriff ausführen Ihr Attributmodifikator für Schaden. Feat/&FeatRangedExpertTitle=Armbrustexperte -Feat/&FeatSteadyAimDescription=Erhöhen Sie Ihre Geschicklichkeit um 1 auf maximal 20. Als Bonusaktion verschaffen Sie sich bei Ihrem nächsten Angriffswurf in der aktuellen Runde einen Vorteil. Du kannst diese Bonusaktion nur nutzen, wenn du dich in diesem Zug nicht bewegt hast, und nachdem du die Bonusaktion genutzt hast, ist deine Geschwindigkeit bis zum Ende des aktuellen Zuges 0. -Feat/&FeatSteadyAimTitle=Zielsicher Feature/&PowerFeatSteadyAimDescription=Als Bonusaktion verschaffen Sie sich einen Vorteil bei Ihrem nächsten Angriffswurf in der aktuellen Runde. Du kannst diese Bonusaktion nur nutzen, wenn du dich in diesem Zug nicht bewegt hast, und nachdem du die Bonusaktion genutzt hast, ist deine Geschwindigkeit bis zum Ende des aktuellen Zuges 0. Feature/&PowerFeatSteadyAimTitle=Zielsicher Tooltip/&DeadeyeConcentration=Deaktivieren Sie Sharpshooter diff --git a/SolastaUnfinishedBusiness/Translations/de/FightingStyles-de.txt b/SolastaUnfinishedBusiness/Translations/de/FightingStyles-de.txt index 8bd2c92428..e3bacea4f8 100644 --- a/SolastaUnfinishedBusiness/Translations/de/FightingStyles-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/FightingStyles-de.txt @@ -22,8 +22,6 @@ FightingStyle/&LungerDescription=Die Reichweite Ihrer Nahkampfwaffe erhöht sich FightingStyle/&LungerTitle=Lunge FightingStyle/&MercilessDescription=Wenn Sie in Ihrem Zug ein Ziel mit einem Nahkampfwaffenangriff auf 0 HP reduzieren, müssen Feinde in einem Umkreis des niedergeschlagenen Ziels in Höhe der Hälfte Ihres Fähigkeitsbonus (aufgerundet) und die das Ziel sehen können, einen Weisheitswurf (SG 8 +) machen Ihr Fähigkeitsbonus + Ihr Stärkemodifikator) oder bis zum Ende Ihres nächsten Zuges Angst vor Ihnen haben. Wenn der auslösende Angriff ein kritischer Treffer ist, entspricht der Radius stattdessen Ihrem Fähigkeitsbonus. FightingStyle/&MercilessTitle=Gnadenlos -FightingStyle/&MonkShieldExpertDescription=Du erwirbst Schildfähigkeiten und sie hindern dich nicht daran, mit dieser Hand unbewaffnete Angriffe durchzuführen. Darüber hinaus funktionieren alle deine Mönchsfähigkeiten, auch wenn du einen Schild trägst. -FightingStyle/&MonkShieldExpertTitle=Klosterschildtraining FightingStyle/&PolearmExpertDescription=Ihr Expertentraining mit einer Stangenwaffe gewährt Ihnen diese Vorteile:\n• Wenn Sie die Angriffsaktion ausführen und nur mit einer Stangenwaffe angreifen, können Sie eine Bonusaktion verwenden, um einen Nahkampfangriff mit dem anderen Ende der Waffe durchzuführen. Dieser Angriff verwendet denselben Fähigkeitsmodifikator wie der Primärangriff und verursacht 1W4 Wuchtschaden.\n• Andere Kreaturen provozieren einen Gelegenheitsangriff von dir, wenn sie in die Reichweite gelangen, die du mit einer Stangenwaffe hast. FightingStyle/&PolearmExpertTitle=Stangenwaffenmeister FightingStyle/&PugilistDescription=Deine unbewaffneten Schläge verursachen zusätzlich 1W4 Wuchtschaden und als Bonusaktion kannst du mit der Nebenhand zuschlagen. Sie können als Bonusaktion schieben, wenn Sie keine andere Waffe oder keinen anderen Schild haben. diff --git a/SolastaUnfinishedBusiness/Translations/de/Others-de.txt b/SolastaUnfinishedBusiness/Translations/de/Others-de.txt index a418af27f4..872dd7bb9c 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Others-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Others-de.txt @@ -281,6 +281,8 @@ Screen/&RangerSpellTitle=Ranger Screen/&RepertoireHeaderFormat={0} Screen/&RoguishSpellDescription=Dieser Zauber wurde von Ihrem Schurken-Archetyp verliehen und gilt als Ihnen bekannt. Screen/&RoguishSpellTitle=Schalkhaft +Screen/&SpellAlternatePointsCostTooltip={0} Punkte +Screen/&SpellAlternatePointsTooltip=Dir verbleiben {0} Zauberpunkte. Screen/&SpellSlotsUsedLongDescription=Du hast auf dieser Stufe {0} Zauberslot(s) verbraucht. Screen/&SpellSlotsUsedShortDescription=Du hast {0} Paktmagieplätze verbraucht. Screen/&SpellSlotsUsedShortLongDescription=Du hast auf dieser Stufe {0} Paktmagie-Slot(s) und {1} Zauberslot(s) verbraucht. diff --git a/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt b/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt index d0aa7776e9..e417664811 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Settings-de.txt @@ -42,6 +42,7 @@ ModUi/&Bestiary=Bestiarium ModUi/&BestowCurseNoConcentrationRequiredForSlotLevel5OrAbove=Fluch verleihen erfordert keine Konzentration, wenn es mit einem L5+-Zauberslot gewirkt wird ModUi/&BlindedConditionDontAllowAttackOfOpportunity=Der Zustand Blind erlaubt keinen Gelegenheitsangriff ModUi/&Blueprints=Blaupausen +ModUi/&Camera=Kamera: ModUi/&Campaigns=Kampagnen: ModUi/&CampaignsAndLocations=Kampagnen und Standorte: ModUi/&Category=Kategorie @@ -118,6 +119,7 @@ ModUi/&EnableCheatMenu=Aktivieren Sie das Cheats-Menü ModUi/&EnableCustomPortraits=Aktivieren Sie benutzerdefinierte Porträts ModUi/&EnableCustomPortraitsHelp=• Platzieren Sie Ihre benutzerdefinierten Porträts in den Unterordnern Personal oder PreGen , benannt nach dem Vornamen des Helden [d. h.: Anton, Celia, Nialla usw.]\n• Verwenden Sie PNG Bilder, 256 x 384 Pixel groß, mit einer Transparenzebene [verwenden Sie GIMP für beste Ergebnisse] ModUi/&EnableDungeonMakerModdedContent=Aktivieren Sie Dungeon Maker Pro\n[einschließlich flacher Räume, Dungeongrößen von 150 x 150 und 200 x 200 und ohne Schnickschnack, bei dem Assets aus allen Umgebungen gemischt werden] +ModUi/&EnableElevationCameraToStayAtPosition=Höhenkamera so aktivieren, dass sie nach der Deaktivierung an ihrer Position bleibt ModUi/&EnableEpicPointsAndArray=Aktivieren Sie ein episches 35-Punkte-Kaufsystem und Array [17,15,13,12,10,8] [Neustart erforderlich] ModUi/&EnableExtendedProficienciesPanelDisplay=Aktivieren Sie die Anzeige der erweiterten Kompetenzen [Arkane Schüsse, Infusionen, Manöver und Vielseitigkeiten]\n[Leistung Treffer bei der Charakterinspektion. Nutzung auf eigene Gefahr] ModUi/&EnableFeatsAtEvenLevels=Aktivieren Sie die Auswahl von Talenten auf den Stufen 2, 10 und 18 @@ -233,13 +235,15 @@ ModUi/&Monsters=Monster: ModUi/&MovementGridWidthModifier=Multiplizieren Sie die Breite des Bewegungsrasters mit [%] ModUi/&MulticlassKeyHelp=UMSCHALT-Klick auf einen Zauber kehrt den verbrauchten Standardrepertoire-Slottyp um.\n[Hexenmeister gibt weiße Zauberslots aus und andere geben Paktgrüne aus] ModUi/&MultiplyTheExperienceGainedBy=Multiplizieren Sie die gewonnene Erfahrung mit [%] +ModUi/&NeverMoveCameraOnEnemyTurn=+ Die Kamera bewegt sich nie während der Züge des Gegners ModUi/&NoExperienceOnLevelUp=Für den Levelaufstieg ist keine Erfahrung erforderlich ModUi/&OfferAdditionalLoreFriendlyNames=Bieten Sie bei der Charaktererstellung zusätzliche Lore-freundliche Namen an ModUi/&OfficialObscurementRulesCancelAdvDisPairs=+ Abbrechen Vorteil/Nachteil geblendete, unsichtbare und wahrgenommene Paare [nützlich in Verbindung mit offiziellem Vorteil/Nachteil Regeln] ModUi/&OfficialObscurementRulesHeavilyObscuredAsProjectileBlocker=+ Ändern Sie stark verdeckte Bereiche in Projektilblocker [Cloud Kill, Nebelwolke , Brandwolke, Blütenblattsturm, Graupelsturm, Stinkende Wolke] ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget=+ Unsichtbare Kreaturen sind stark verdeckt und können als Ziel ausgewählt werden, Angriffswürfe gegen die Kreatur haben einen Nachteil und die Angriffswürfe der Kreatur haben einen Vorteil ModUi/&OfficialObscurementRulesMagicalDarknessAsProjectileBlocker=+ magisch verborgene Bereiche in Projektilblocker ändern [jede Quelle des Zaubereffekts Dunkelheit] -ModUi/&OfficialObscurementRulesTweakMonsters=+ Füge Monstern und NPCs bei Bedarf Darkvision, BlindSight und TrueSight hinzu.\n [Einstellungssammlungen MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] +ModUi/&OfficialObscurementRulesTweakMonsters=+ Füge Monstern und NPCs bei Bedarf Dunkelsicht, Blindsicht und Wahrsicht hinzu +ModUi/&OfficialObscurementRulesTweakMonstersHelp=[Einstellungssammlungen Monster, die über Dunkelsicht verfügen sollten, Monster, die über echte Sicht verfügen sollten, Monster, die über blinde Sicht verfügen sollten] ModUi/&OnlyShowMostPowerfulUpcastConjuredElementalOrFey=+ Zeigt nur die mächtigsten Kreaturen in der Beschwörungsliste an ModUi/&OutlineGridWidthModifier=Multiplizieren Sie die Breite des Umrissgitters mit [%] ModUi/&OutlineGridWidthSpeed=Multiplizieren Sie die Animationsgeschwindigkeit des Umrissgitters mit [%] @@ -276,6 +280,7 @@ ModUi/&SelectTabletop=Wählen Sie Tischplatte ModUi/&SenseNormalVisionRangeMultiplier=Ändern Sie den Bereich der Normalen Sicht [nur in Schlachten] ModUi/&Services=Dienstleistungen ModUi/&SetBeltOfDwarvenKindBeardChances=Gürtel der Zwergen Bart-Erscheinungschancen +ModUi/&SetElevationCameraMaxHeightBy=Maximale Höhe der Höhenkamera erhöhen um ModUi/&SettingsExport=Export ModUi/&SettingsHelp=• Als Host können Sie Ihre aktuelle Konfiguration exportieren, den Exportordner öffnen und ganz einfach mit Ihren Kollegen teilen.\n• Als Gast können Sie den Exportordner öffnen, die freigegebene Datei vom Host einfügen und über [Neustart erforderlich] ModUi/&SettingsLoad=• Laden Sie eine exportierte Einstellung @@ -317,6 +322,8 @@ ModUi/&UnlockGlowingEyeColors=Fügen Sie leuchtende Augenfarben hinzu ModUi/&UnlockMarkAndTattoosForAllCharacters=Schalte Zauberer-Ursprungsmarkierungen und Tätowierungen für alle Charaktere frei ModUi/&UnlockSkinColors=Schalte Hautfarben frei ModUi/&Update=Aktualisieren +ModUi/&UseAlternateSpellPointsSystem=Benutze offizielle Varianten-Zauberpunkt-Regeln +ModUi/&UseAlternateSpellPointsSystemHelp=[Sie verfügen über einen Pool an Zauberpunkten, der mit der Zauberstufe steigt\nL01: 04 L02: 06 L03: 14 L04: 17 L05: 27 L06: 32 L07: 38 L08: 44 L09: 57 L10: 64\nL11: 73 L12: 73 L13: 83 L14: 83 L15: 94 L16: 94 L17: 107 L18: 114 L19: 123 L20: 133\nKosten zum Wirken von Zaubersprüchen sind SL1: 2 SL2: 3 SL3: 5 SL4: 6 SL5: 7 SL6: 9 SL7: 10 SL8: 11 SL9: 13\nDie Wiederherstellungsfunktionen für kurze Ruheslots werden unter diesem System nicht ausgelöst] ModUi/&UseElfFaceModelsOnTieflings=Verwenden Sie Elfen-Gesichtsmodelle für Tieflings ModUi/&UseHeightOneCylinderEffect=Verwenden Sie einen Zylindereffekt der Höhe 1, wenn Sie Black Tentacles, Entangle, Grease [square] oder Spike Growth [round] ModUi/&UseMathFlankingRules=+ Verwenden Sie präzise Mathematik, um flankierende [kann sich auf langsamen Maschinen auf die Leistung auswirken] zu bestimmen @@ -326,6 +333,7 @@ ModUi/&UseOfficialFlankingRulesAlsoForRanged=+ Auch für Fernangriffe aktivie ModUi/&UseOfficialFlankingRulesAlsoForReach=+ Auch für Reichweitenangriffe aktivieren [Präzise Mathematik deaktivieren] ModUi/&UseOfficialFlankingRulesButAddAttackModifier=+ Anstelle des Vorteils gewähre +1 auf den Angriffswurf ModUi/&UseOfficialFoodRationsWeight=Verwenden Sie die offizielle Lebensmittelration mit einem Gewicht von 2 Pfund -ModUi/&UseOfficialObscurementRules=Benutzen Sie die offiziellen Kampfregeln für Beleuchtung, Verdunkelung und Sicht\n[Angreifer, der wahrnimmt, Verteidiger, der es nicht wahrnimmt, erhalten ADV, und Angreifer, der dies nicht tut Der Verteidiger, der es wahrnehmen kann, erhält DIS\n. Stark verdeckte Bereiche verursachen einen geblendeten Zustand, in dem Angriffswürfe gegen die Kreatur ADV haben und die Angriffswürfe der Kreatur DIS\n. Alle Distanzzauber, die auf Einzelpersonen abzielen, können nicht gewirkt werden, wenn der Angreifer keine Sicht hat , mit Ausnahme derjenigen, die eindeutig nicht angeben, dass Sehvermögen erforderlich ist] +ModUi/&UseOfficialObscurementRules=Benutze die offiziellen Kampfregeln für Beleuchtung, Verdunkelung und Sicht +ModUi/&UseOfficialObscurementRulesHelp=[Angreifer, der wahrnimmt, Verteidiger, der es nicht wahrnehmen kann, erhält ADV, und Angreifer, der es nicht wahrnimmt, Verteidiger, der es wahrnehmen kann, erhält DIS\n stark verdeckte Bereiche verursachen den Zustand der Erblindung, wobei Angriffswürfe gegen die Kreatur ADV haben und die Angriffswürfe der Kreatur DIS\n alle Distanzzauber, die auf Einzelpersonen zielen, können nicht gewirkt werden, wenn der Angreifer keine Sicht hat, außer denen, bei denen nicht klar angegeben ist, dass Sicht erforderlich ist] ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons=Befolgen Sie die offiziellen Regeln für kleine Rassen, wenn Sie schwere Waffen einsetzen [Ihre Angriffe haben Nachteile] ModUi/&Visuals=Visuals: [Neustart erforderlich] diff --git a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt index 3c843bf257..6696b79864 100644 --- a/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/Spells/Spells04-de.txt @@ -13,6 +13,18 @@ Condition/&ConditionElementalBaneTitle=Elementarfluch: {0} Condition/&ConditionIrresistiblePerformanceDescription=Sie können keine Aktionen ausführen, die Ihre Hände oder Ihren Mund erfordern, können sich aber ansonsten normal verhalten. Condition/&ConditionIrresistiblePerformanceTitle=Dinah-Moe Humm Condition/&ConditionPsionicBlastTitle=Verwirrter Geist +Condition/&ConditionSickeningRadianceDescription=Sie strahlen ein schwaches Licht in einem Radius von 1,5 Metern aus. Dieses Licht macht es unmöglich, dass Sie unsichtbar sind. +Condition/&ConditionSickeningRadianceExhausted1Description=Sie sind bei Fähigkeitsprüfungen im Nachteil. +Condition/&ConditionSickeningRadianceExhausted1Title=Erschöpft 1 +Condition/&ConditionSickeningRadianceExhausted2Description=Ihre Geschwindigkeit wird halbiert und Sie sind bei Fähigkeitsprüfungen im Nachteil. +Condition/&ConditionSickeningRadianceExhausted2Title=Erschöpft 2 +Condition/&ConditionSickeningRadianceExhausted3Description=Ihre Geschwindigkeit wird halbiert und Sie sind bei Fähigkeitsprüfungen, Angriffswürfen und Rettungswürfen im Nachteil. +Condition/&ConditionSickeningRadianceExhausted3Title=Erschöpft 3 +Condition/&ConditionSickeningRadianceExhausted4Description=Ihre Geschwindigkeit und Ihre maximalen Trefferpunkte werden halbiert und Sie sind bei Fähigkeitsüberprüfungen, Angriffswürfen und Rettungswürfen im Nachteil. +Condition/&ConditionSickeningRadianceExhausted4Title=Erschöpft 4 +Condition/&ConditionSickeningRadianceExhausted5Description=Ihre Geschwindigkeit beträgt 0, Ihre maximalen Trefferpunkte sind halbiert und Sie sind bei Fähigkeitsüberprüfungen, Angriffswürfen und Rettungswürfen im Nachteil. +Condition/&ConditionSickeningRadianceExhausted5Title=Erschöpft 5 +Condition/&ConditionSickeningRadianceTitle=Krankmachende Ausstrahlung Condition/&ConditionStaggeringSmiteEnemyDescription=Du wirst von psychischem Schaden getroffen. Condition/&ConditionStaggeringSmiteEnemyTitle=Atemberaubender Schlag Condition/&ConditionTreeForestGuardianDescription=Du erhältst 10 temporäre Trefferpunkte, du führst konstitutionsrettende Würfe mit Vorteil aus und du führst auf Geschicklichkeit und Weisheit basierende Angriffswürfe mit Vorteil durch. @@ -50,6 +62,8 @@ Spell/&PsionicBlastDescription=Du entfesselst eine lähmende Welle mentaler Kraf Spell/&PsionicBlastTitle=Psi-Explosion Spell/&PsychicLanceDescription=Sie entfesseln eine schimmernde Lanze psychischer Kraft von Ihrer Stirn auf eine Kreatur, die Sie in Reichweite sehen können. Ein Intelligenzrettungswurf muss ihm gelingen, sonst erleidet er 7W6 psychischen Schaden und ist bis zum Ende deines nächsten Zuges außer Gefecht gesetzt. Bei einem erfolgreichen Rettungswurf erleidet die Kreatur den halben Schaden und wird nicht außer Gefecht gesetzt. Auf höheren Ebenen. Wenn Sie diesen Zauber mit einem Zauberslot der 4. Stufe oder höher wirken, erhöht sich der Schaden um 1W6 für jede Slotstufe über der 4. Stufe. Spell/&PsychicLanceTitle=Raulothims psychische Lanze +Spell/&SickeningRadianceDescription=Schwaches Licht breitet sich in einer Kugel mit einem Radius von 30 Fuß aus, deren Mittelpunkt ein von dir gewählter Punkt innerhalb der Reichweite ist. Das Licht breitet sich um Ecken aus und hält an, bis der Zauber endet. Wenn sich eine Kreatur während einer Runde zum ersten Mal in den Bereich des Zaubers bewegt oder ihre Runde dort beginnt, muss diese Kreatur einen Konstitutionsrettungswurf bestehen oder 4W10 Strahlungsschaden erleiden, erleidet eine Stufe Erschöpfung und strahlt ein schwaches Licht in einem Radius von 5 Fuß aus. Dieses Licht macht es der Kreatur unmöglich, von ihrer Unsichtbarkeit zu profitieren. Das Licht und alle Stufen der Erschöpfung, die durch diesen Zauber verursacht wurden, verschwinden, wenn der Zauber endet. +Spell/&SickeningRadianceTitle=Krankmachende Ausstrahlung Spell/&StaggeringSmiteDescription=Wenn du während der Dauer dieses Zaubers das nächste Mal eine Kreatur mit einem Waffenangriff triffst, durchdringt deine Waffe Körper und Geist und der Angriff fügt dem Ziel zusätzlich 4W6 psychischen Schaden zu. Das Ziel muss einen Weisheitsrettungswurf durchführen. Bei einem fehlgeschlagenen Rettungswurf hat es bis zum Ende seines nächsten Zuges einen Nachteil bei Angriffswürfen und Fähigkeitsüberprüfungen und kann keine Reaktionen annehmen. Spell/&StaggeringSmiteTitle=Atemberaubender Schlag Spell/&TreeForestGuardianDescription=Ihre Haut erscheint rindenartig, Blätter sprießen aus Ihrem Haar und Sie erhalten die folgenden Vorteile:\n• Sie erhalten 10 temporäre Trefferpunkte.\n• Sie machen Konstitutionsrettungswürfe mit Vorteil.\n• Sie machen Geschicklichkeits- und Weisheitsbasierte Angriffswürfe mit Vorteil.\n• Kreaturen im Umkreis von 30 Fuß um Sie müssen einen Stärkerettungswurf machen oder werden für die Dauer des Zaubers behindert. Sie können den Rettungswurf zu Beginn jeder Runde wiederholen. diff --git a/SolastaUnfinishedBusiness/Translations/de/SubClasses/CollegeOfAudacity-de.txt b/SolastaUnfinishedBusiness/Translations/de/SubClasses/CollegeOfAudacity-de.txt index 36f7bf19a8..a06076eb25 100644 --- a/SolastaUnfinishedBusiness/Translations/de/SubClasses/CollegeOfAudacity-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/SubClasses/CollegeOfAudacity-de.txt @@ -1,26 +1,27 @@ -Action/&AudaciousWhirlToggleDescription=Audacious Whirl aktivieren/deaktivieren -Action/&AudaciousWhirlToggleTitle=Kühner Wirbel -Action/&MasterfulWhirlToggleDescription=Masterful Whirl aktivieren/deaktivieren -Action/&MasterfulWhirlToggleTitle=Meisterhafter Wirbel -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Wirbelrolle auf AC. -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Defensiver Wirbel -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Immer wenn Sie in Ihrem Zug die Angriffsaktion ausführen, erhöht sich Ihre Gehgeschwindigkeit bis zum Ende des Zuges um 10 Fuß. Wenn ein Nahkampfwaffenangriff, den Sie im Rahmen dieser Aktion ausführen, eine Kreatur trifft, können Sie einen Einsatz Ihres Bardens aufwenden Inspiration, die dazu führt, dass die Waffe dem getroffenen Ziel zusätzlichen Schaden zufügt. Der Schaden entspricht der Zahl, die Sie auf dem Bardic Inspiration-Würfel würfeln. Du wählst auch ein bestimmtes Manöver:\n• Defensiver Wirbel: Du fügst den Bardic Inspiration-Würfelwurf bis zum Beginn deines nächsten Zuges zu deiner AC hinzu.\n• Slashing Whirl: Du fügst allen anderen gegnerischen Kreaturen in einem Umkreis von 5 Fuß um dich herum den zusätzlichen Schaden zu.\n• Mobiler Wirbel: Du erhältst bis zum Ende deines Zuges die Vorteile des Rückzugs. -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Kühner Wirbel -Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=Sie erlangen Kenntnisse im Umgang mit mittlerer Rüstung und dem Krummsäbel. Sie können Ihre Waffe auch als Zauberfokus für Ihre Bardenzauber verwenden. +Action/&AudaciousWhirlToggleDescription=Blade Flourish aktivieren/deaktivieren +Action/&AudaciousWhirlToggleTitle=Klingenschwung +Action/&MasterfulWhirlToggleDescription=Aktivieren/Deaktivieren von Master’s Flourish +Action/&MasterfulWhirlToggleTitle=Meisterhafte Blüte +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Flourish-Rolle zu AC. +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Defensives Gedeihen +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Wann immer Sie in Ihrem Zug die Aktion „Angriff“ ausführen, erhöht sich Ihre Gehgeschwindigkeit bis zum Ende des Zuges um 10 Fuß, und wenn ein Nahkampfangriff, den Sie als Teil dieser Aktion ausführen, eine Kreatur trifft, können Sie eine Anwendung Ihrer Bardischen Inspiration aufwenden, damit die Waffe dem getroffenen Ziel zusätzlichen Schaden zufügt. Der Schaden entspricht der Zahl, die Sie auf dem Bardischen Inspirationswürfel würfeln. Sie wählen außerdem ein bestimmtes Manöver:\n• Defensives Gedeihen: Sie addieren den Würfelwurf der Bardischen Inspiration bis zum Beginn Ihres nächsten Zuges zu Ihrer RK.\n• Schneidendes Gedeihen: Sie fügen allen anderen feindlichen Kreaturen im Umkreis von 5 Fuß um Sie herum den zusätzlichen Schaden zu.\n• Mobiles Gedeihen: Sie erhalten bis zum Ende Ihres Zuges die Vorteile der Rückzugsmöglichkeit. +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Klingenschwung +Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=Du erlangst Kenntnisse im Umgang mit mittlerer Rüstung und dem Krummsäbel. Du kannst deine Waffe auch als Fokus für deine Bardenzauber verwenden. Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=Bonus-Fertigkeiten -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Wann immer Sie die Option „Audacious Whirl“ verwenden, können Sie einen W6 würfeln und ihn verwenden, anstatt einen bardischen Inspirationswürfel auszugeben. -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Meisterhafter Wirbel -Feature/&FightingStyleChoiceCollegeOfAudacityDescription=Sie machen sich einen bestimmten Kampfstil zu Ihrer Spezialität. Wählen Sie entweder Duell oder Zwei-Waffen-Kampf. +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Wenn Sie die Option „Blade Flourish“ verwenden, können Sie einen W6 würfeln und ihn verwenden, anstatt einen Bardic Inspiration-Würfel auszugeben. +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Meisterhafte Blüte +Feature/&FightingStyleChoiceCollegeOfAudacityDescription=Sie legen einen bestimmten Kampfstil als Ihre Spezialität fest. Wählen Sie entweder Duell oder Kampf mit zwei Waffen. Feature/&FightingStyleChoiceCollegeOfAudacityTitle=Kampfstil -Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Du kannst eine Anwendung deiner bardischen Inspiration nutzen, um die Waffe dazu zu bringen, dem von dir getroffenen Ziel zusätzlichen Schaden zuzufügen. Der Schaden entspricht der Zahl, die Sie auf dem Bardic Inspiration-Würfel würfeln, oder einem W6, wenn es sich um einen Masterful Whirl handelt. Außerdem addierst du die gewürfelte Zahl bis zum Beginn deines nächsten Zuges zu deinem AC. -Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Defensiver Wirbel -Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Du kannst eine Anwendung deiner bardischen Inspiration nutzen, um die Waffe dazu zu bringen, dem von dir getroffenen Ziel zusätzlichen Schaden zuzufügen. Der Schaden entspricht der Zahl, die Sie auf dem Bardic Inspiration-Würfel würfeln, oder einem W6, wenn es sich um einen Masterful Whirl handelt. Bis zum Ende Ihres Zuges erhalten Sie die Vorteile des Rückzugs. -Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Mobiler Wirbel -Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Du kannst eine Anwendung deiner bardischen Inspiration nutzen, um die Waffe dazu zu bringen, dem von dir getroffenen Ziel und allen anderen feindlichen Kreaturen im Umkreis von 1,5 m um dich herum zusätzlichen Schaden zuzufügen. Der Schaden entspricht der Zahl, die Sie auf dem Bardic Inspiration-Würfel würfeln, oder einem W6, wenn es sich um einen Masterful Whirl handelt. -Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Schneidwirbel -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} kann dazu führen, dass die Waffe dem Ziel zusätzlichen Schaden zufügt. Der Schaden entspricht der Zahl, die Sie auf dem Bardic Inspiration-Würfel würfeln, oder einem W6, wenn es sich um einen Masterful Whirl handelt. -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Wirbeln -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Wirbeln -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Wirbeln -Subclass/&CollegeOfAudacityDescription=Barden des College of Swords unterhalten durch gewagte Heldentaten der Waffenkunst. Sie führen Stunts wie Schwertschlucken, Messerwerfen und Jonglieren sowie Scheinkämpfe vor. Obwohl sie ihre Waffen zur Unterhaltung nutzen, sind sie auch selbst gut ausgebildete und erfahrene Krieger. +Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Sie können eine Verwendung Ihrer Bardic Inspiration aufwenden, damit die Waffe dem getroffenen Ziel zusätzlichen Schaden zufügt. Der Schaden entspricht der Zahl, die Sie auf dem Bardic Inspiration-Würfel würfeln, oder einem W6, wenn es sich um einen Master's Flourish handelt. Sie addieren die gewürfelte Zahl außerdem bis zum Beginn Ihres nächsten Zuges zu Ihrer AC. +Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Defensives Gedeihen +Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Sie können eine Verwendung Ihrer Bardic Inspiration aufwenden, damit die Waffe dem getroffenen Ziel zusätzlichen Schaden zufügt. Der Schaden entspricht der Zahl, die Sie auf dem Bardic Inspiration-Würfel würfeln, oder einem W6, wenn es sich um einen Master's Flourish handelt. Sie erhalten bis zum Ende Ihres Zuges die Vorteile der Ausschaltung. +Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Mobiles Gedeihen +Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Sie können Ihre Bardic Inspiration einmal einsetzen, damit die Waffe dem getroffenen Ziel und allen anderen feindlichen Kreaturen im Umkreis von 1,5 Metern zusätzlichen Schaden zufügt. Der Schaden entspricht der Zahl, die Sie auf dem Bardic Inspiration-Würfel würfeln, oder einem W6, wenn es sich um einen Master's Flourish handelt. +Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Schnörkel +Feedback/&CollegeOfAudacityDefensiveWhirl={0} würfelt mit {2} und addiert {3} zu AC. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} kann dazu führen, dass die Waffe dem Ziel zusätzlichen Schaden zufügt. Der Schaden entspricht der Zahl, die Sie auf dem Bardic Inspiration-Würfel würfeln, oder einem W6, wenn es sich um einen Master's Flourish handelt. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Blühen +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Blühen +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Blühen +Subclass/&CollegeOfAudacityDescription=Barden des College of Swords unterhalten durch waghalsige Kunststücke mit Waffengewalt. Sie führen Kunststücke wie Schwertschlucken, Messerwerfen und Jonglieren sowie Scheinkämpfe vor. Obwohl sie ihre Waffen zur Unterhaltung einsetzen, sind sie selbst auch hochtrainierte und fähige Krieger. Subclass/&CollegeOfAudacityTitle=Hochschule der Schwerter diff --git a/SolastaUnfinishedBusiness/Translations/de/SubClasses/MartialTactician-de.txt b/SolastaUnfinishedBusiness/Translations/de/SubClasses/MartialTactician-de.txt index a920ea4bd0..64150c195a 100644 --- a/SolastaUnfinishedBusiness/Translations/de/SubClasses/MartialTactician-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/SubClasses/MartialTactician-de.txt @@ -12,8 +12,8 @@ Feature/&FeatureSetTacticianHonedCraftDescription=Erlangen Sie Fachwissen zu ein Feature/&FeatureSetTacticianHonedCraftTitle=Geschliffenes Können Feature/&FeatureSetTacticianSharpMindDescription=Erwerben Sie Kenntnisse in einer Fertigkeit Ihrer Wahl. Feature/&FeatureSetTacticianSharpMindTitle=Scharfer Verstand -Feature/&FeatureSetTacticianTacticalAwarenessDescription=Solange Sie nicht handlungsunfähig sind, erhalten Sie die folgenden Vorteile:\n• Einmal pro Spielzug verursacht Ihr Waffenangriff zusätzlichen Schaden in Höhe Ihres Fähigkeitsbonus.\n• Von Ihnen durchgeführte Gelegenheitsangriffe werden mit Vorteil ausgeführt.\n• Gelegenheitsangriffe gegen Sie erfolgen mit Nachteil. -Feature/&FeatureSetTacticianTacticalAwarenessTitle=Taktisches Bewusstsein +Feature/&FeatureSetTacticianTacticalAwarenessDescription=Während des Kampfes erhalten Sie zu Beginn jedes Ihrer Züge einen Überlegenheitswürfel zurück. +Feature/&FeatureSetTacticianTacticalAwarenessTitle=Meister der Kriegsführung Feature/&FeatureTacticianGambitDieSizeD10Description=Dein Überlegenheitswürfel wird auf W10 aufgewertet. Feature/&FeatureTacticianGambitDieSizeD10Title=Überlegenheitswürfelgröße (d10) Feature/&FeatureTacticianGambitDieSizeD12Description=Dein Überlegenheitswürfel wird auf W12 aufgewertet. diff --git a/SolastaUnfinishedBusiness/Translations/de/SubClasses/PathOfTheBeast-de.txt b/SolastaUnfinishedBusiness/Translations/de/SubClasses/PathOfTheBeast-de.txt index 1dcf02ebfd..781503b09e 100644 --- a/SolastaUnfinishedBusiness/Translations/de/SubClasses/PathOfTheBeast-de.txt +++ b/SolastaUnfinishedBusiness/Translations/de/SubClasses/PathOfTheBeast-de.txt @@ -24,7 +24,7 @@ Feature/&PowerPathOfTheBeastFormOfTheBeastTailTitle=Form: Schwanz Feature/&PowerPathOfTheBeastFormOfTheBeastTitle=Gestalt des Tieres Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeDescription=Das Ziel greift eine andere Kreatur deiner Wahl innerhalb der Reichweite des Ziels an. Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeTitle=Ansteckende Wut: Erzwungener Schlag -Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Wenn du in deinem Zorn eine Kreatur mit deinen natürlichen Waffen triffst, kann das Biest in dir dein Ziel mit tollwütiger Wut verfluchen. Das Ziel muss einen Weisheitsrettungswurf bestehen (DC entspricht 8 + deinem Konstitutionsmodifikator + deinem Kompetenzbonus) oder einen der folgenden Effekte erleiden (deine Wahl). +Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Wenn du ein Wesen mit deinen natürlichen Waffen triffst, während du wütend bist, kann das Biest in dir dein Ziel mit tollwütiger Wut verfluchen. Das Ziel muss einen Weisheitsrettungswurf bestehen (DC entspricht 8 + deinem Konstitutionsmodifikator + deinem Kompetenzbonus) oder einen der folgenden Effekte erleiden (deine Wahl).\n\nDu kannst diese Funktion so oft verwenden, wie dein Kompetenzbonus beträgt, und du erhältst alle verbrauchten Anwendungen zurück, wenn du eine lange Ruhepause beendest. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashDescription=Das Ziel erleidet 2W12 psychischen Schaden. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashTitle=Ansteckende Wut: Mindlash Feature/&PowerPathOfTheBeastInfectiousFuryTitle=Ansteckende Wut diff --git a/SolastaUnfinishedBusiness/Translations/en/Feats/MeleeCombat-en.txt b/SolastaUnfinishedBusiness/Translations/en/Feats/MeleeCombat-en.txt index f6647e57a4..ccb8ff3dba 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Feats/MeleeCombat-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Feats/MeleeCombat-en.txt @@ -34,8 +34,6 @@ Feat/&FeatFencerDescription=If you take the Attack action on your turn while hol Feat/&FeatFencerTitle=Fencer Feat/&FeatGreatWeaponDefenseDescription=You fight arduously with large weapons, gaining the following benefits:\n• When you reduce a creature to 0 hit points or deliver a critical strike with a melee weapon, your movement speed increases by 15ft until the end of your turn.\n• When you take the Attack action while wielding a heavy melee or versatile weapon in two hands, you gain +2AC until the start of your next turn. You lose this benefit if you equip a different weapon or a shield. Feat/&FeatGreatWeaponDefenseTitle=Battle Fervor -Feat/&FeatHammerThePointDescription=You know how to focus and concentrate on the same spot. After you make an attack roll against a target, get a +1 to attack and damage rolls against this target until the end of you turn [stacks]. -Feat/&FeatHammerThePointTitle=Hammer the Point Feat/&FeatLongswordFinesseDescription=You are descended from a master of the longsword, and some of that mastery has passed on to you. You gain the following benefits:\n• Increase your Dexterity by 1, to a maximum of 20.\n• While you are holding a longsword, you gain a +1 bonus to armor class.\n• Longsword has the finesse property when you wield it. Feat/&FeatLongswordFinesseTitle=Longsword Finesse Feat/&FeatOldTacticsDexDescription=Increase your Dexterity by 1. Once per round, when a prone enemy within range of your melee weapon stands up you may make an attack of opportunity against the target. diff --git a/SolastaUnfinishedBusiness/Translations/en/Feats/OtherFeats-en.txt b/SolastaUnfinishedBusiness/Translations/en/Feats/OtherFeats-en.txt index 31d6882d7e..1ca55c3521 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Feats/OtherFeats-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Feats/OtherFeats-en.txt @@ -8,8 +8,6 @@ Feat/&FeatAlertDescription=Always on the lookout for danger, you gain the follow Feat/&FeatAlertTitle=Alert Feat/&FeatArcaneArcherAdeptDescription=You have arcane magic and bow training that allows you to perform special combat maneuvers. Feat/&FeatArcaneArcherAdeptTitle=Arcane Archer Adept -Feat/&FeatAstralArmsDescription=Increase your Wisdom by 1, to a maximum of 20.\nWhen you make an unarmed strike on your turn, your reach for it is 10 ft. Other creatures provoke an opportunity attack from you when they enter the reach you have with unarmed. -Feat/&FeatAstralArmsTitle=Astral Reach Feat/&FeatAthleteDexDescription=You have undergone extensive physical training to gain the following benefits:\n• Increase your Dexterity by 1, to a maximum of 20.\n• When you are prone, standing up doesn't cost you movement.\n• Climbing doesn't cost you extra movement.\n• You gain proficiency with Athletics skill or expertise if you are already proficient. Feat/&FeatAthleteDexTitle=Athlete [Dex] Feat/&FeatAthleteStrDescription=You have undergone extensive physical training to gain the following benefits:\n• Increase your Strength by 1, to a maximum of 20.\n• When you are prone, standing up doesn't cost you movement.\n• Climbing doesn't cost you extra movement.\n• You gain proficiency with Athletics skill or expertise if you are already proficient. diff --git a/SolastaUnfinishedBusiness/Translations/en/Feats/RangedCombat-en.txt b/SolastaUnfinishedBusiness/Translations/en/Feats/RangedCombat-en.txt index 48e9260c19..f9ce1f712b 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Feats/RangedCombat-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Feats/RangedCombat-en.txt @@ -10,8 +10,6 @@ Feat/&FeatDeadeyeDescription=You have learned to trade accuracy to land deadlier Feat/&FeatDeadeyeTitle=Sharpshooter Feat/&FeatRangedExpertDescription=Your expert training with ranged weapons grants you these benefits:\n• Attacks at melee range don't impose disadvantage.\n• If you take the attack action on your turn, you can make one one-handed ranged bonus attack adding your attribute modifier to damage. Feat/&FeatRangedExpertTitle=Crossbow Expert -Feat/&FeatSteadyAimDescription=Increase your Dexterity by 1, to a maximum of 20. As a bonus action, you give yourself advantage on your next attack roll on the current turn. You can use this bonus action only if you haven't moved during this turn, and after you use the bonus action, your speed is 0 until the end of the current turn. -Feat/&FeatSteadyAimTitle=Steady Aim Feature/&PowerFeatSteadyAimDescription=As a bonus action, you give yourself advantage on your next attack roll on the current turn. You can use this bonus action only if you haven't moved during this turn, and after you use the bonus action, your speed is 0 until the end of the current turn. Feature/&PowerFeatSteadyAimTitle=Steady Aim Tooltip/&DeadeyeConcentration=Disable Sharpshooter diff --git a/SolastaUnfinishedBusiness/Translations/en/FightingStyles-en.txt b/SolastaUnfinishedBusiness/Translations/en/FightingStyles-en.txt index a0777f3846..f3367b9a42 100644 --- a/SolastaUnfinishedBusiness/Translations/en/FightingStyles-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/FightingStyles-en.txt @@ -22,8 +22,6 @@ FightingStyle/&LungerDescription=Your melee weapon reach increases by 5 ft while FightingStyle/&LungerTitle=Lunger FightingStyle/&MercilessDescription=When you reduce a target to 0 HP using a melee weapon attack on your turn, enemies within a radius of the downed target equal to half of your proficiency bonus (rounded up) who can see the target must make a Wisdom save (DC 8 + your proficiency bonus + your Strength modifier) or become frightened of you until the end of your next turn. If the triggering attack is a critical hit, the radius is instead equal to your proficiency bonus. FightingStyle/&MercilessTitle=Merciless -FightingStyle/&MonkShieldExpertDescription=You gain Shield proficiency, and they don't stop you from making unarmed attacks with that hand. In addition, all your monk abilities work even when wielding a Shield. -FightingStyle/&MonkShieldExpertTitle=Monastic Shield Training FightingStyle/&PolearmExpertDescription=Your expert training with a polearm grants you these benefits:\n• When you take the Attack action and attack with only a polearm weapon, you can use a bonus action to make a melee attack with the opposite end of the weapon. This attack uses the same ability modifier as the primary attack and deals 1d4 bludgeoning damage.\n• Other creatures provoke an opportunity attack from you when they enter the reach you have with wielding a polearm weapon. FightingStyle/&PolearmExpertTitle=Polearm Master FightingStyle/&PugilistDescription=Your unarmed strikes deal an additional 1d4 bludgeoning damage, and you can punch with your offhand as a bonus action. You can shove as a bonus action if you have no other weapon or shield. diff --git a/SolastaUnfinishedBusiness/Translations/en/Others-en.txt b/SolastaUnfinishedBusiness/Translations/en/Others-en.txt index 81d5112cd1..6faf05dff9 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Others-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Others-en.txt @@ -281,6 +281,8 @@ Screen/&RangerSpellTitle=Ranger Screen/&RepertoireHeaderFormat={0} Screen/&RoguishSpellDescription=This spell has been granted by your Roguish archetype and is considered known to you. Screen/&RoguishSpellTitle=Roguish +Screen/&SpellAlternatePointsCostTooltip={0} points +Screen/&SpellAlternatePointsTooltip=You have {0} spell points remaining. Screen/&SpellSlotsUsedLongDescription=You have expended {0} spell slot(s) at this level. Screen/&SpellSlotsUsedShortDescription=You have expended {0} pact magic slot(s). Screen/&SpellSlotsUsedShortLongDescription=You have expended {0} pact magic slot(s) and {1} spell slot(s) at this level. diff --git a/SolastaUnfinishedBusiness/Translations/en/Settings-en.txt b/SolastaUnfinishedBusiness/Translations/en/Settings-en.txt index b105c4ab74..70b24fc89e 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Settings-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Settings-en.txt @@ -42,6 +42,7 @@ ModUi/&Bestiary=Bestiary ModUi/&BestowCurseNoConcentrationRequiredForSlotLevel5OrAbove=Bestow Curse does not require concentration when cast with a L5+ spell slot ModUi/&BlindedConditionDontAllowAttackOfOpportunity=The Blinded condition doesn't allow attack of opportunity ModUi/&Blueprints=Blueprints +ModUi/&Camera=Camera: ModUi/&Campaigns=Campaigns: ModUi/&CampaignsAndLocations=Campaigns and locations: ModUi/&Category=Category @@ -118,6 +119,7 @@ ModUi/&EnableCheatMenu=Enable the cheats menu ModUi/&EnableCustomPortraits=Enable custom portraits ModUi/&EnableCustomPortraitsHelp=• Place your custom portraits under subfolders Personal or PreGen, named after the hero first name [i.e.: Anton, Celia, Nialla, etc.]\n• Use PNG images, 256 x 384 pixels in size, with a transparency layer [use GIMP for best results] ModUi/&EnableDungeonMakerModdedContent=Enable Dungeon Maker Pro\n[include flat rooms, 150x150 & 200x200 dungeon sizes and no frills mixing assets from all environments] +ModUi/&EnableElevationCameraToStayAtPosition=Enable elevation camera to stay at position after disabled ModUi/&EnableEpicPointsAndArray=Enable an epic 35 points buy system and array [17,15,13,12,10,8] [Requires Restart] ModUi/&EnableExtendedProficienciesPanelDisplay=Enable extended proficiencies panel display [Arcane Shots, Infusions, Maneuvers, and Versatilities]\n[performance hit on character inspection. use at your own risk] ModUi/&EnableFeatsAtEvenLevels=Enable feats selection at levels 2, 10 and 18 @@ -233,13 +235,15 @@ ModUi/&Monsters=Monsters: ModUi/&MovementGridWidthModifier=Multiply the movement grid width by [%] ModUi/&MulticlassKeyHelp=SHIFT click on a spell inverts the default repertoire slot type consumed\n[Warlock spends white spell slots and others spend pact green ones] ModUi/&MultiplyTheExperienceGainedBy=Multiply the experience gained by [%] +ModUi/&NeverMoveCameraOnEnemyTurn=+ Camera never moves during enemy turns ModUi/&NoExperienceOnLevelUp=No experience is required to level up ModUi/&OfferAdditionalLoreFriendlyNames=Offer additional lore friendly names on character creation ModUi/&OfficialObscurementRulesCancelAdvDisPairs=+ Cancel advantage / disadvantage blinded, invisible, and perceived pairs [useful in conjunction with official advantage / disadvantage rules] ModUi/&OfficialObscurementRulesHeavilyObscuredAsProjectileBlocker=+ Change heavily obscured areas to be projectile blockers [Cloud Kill, Fog Cloud, Incendiary Cloud, Petal Storm, Sleet Storm, Stinking Cloud] ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget=+ Invisible creatures are heavily obscured and can be target, attack rolls against the creature have disadvantage, and the creature's attack rolls have advantage ModUi/&OfficialObscurementRulesMagicalDarknessAsProjectileBlocker=+ Change magically obscured areas to be projectile blockers [any source of the Darkness spell effect] -ModUi/&OfficialObscurementRulesTweakMonsters=+ Add Darkvision, BlindSight, and TrueSight to monsters and NPCs whenever appropriate\n[settings' collections MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] +ModUi/&OfficialObscurementRulesTweakMonsters=+ Add Darkvision, BlindSight, and TrueSight to monsters and NPCs whenever appropriate +ModUi/&OfficialObscurementRulesTweakMonstersHelp=[settings' collections MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] ModUi/&OnlyShowMostPowerfulUpcastConjuredElementalOrFey=+ Only show the most powerful creatures in the conjuration list ModUi/&OutlineGridWidthModifier=Multiply the outline grid width by [%] ModUi/&OutlineGridWidthSpeed=Multiply the outline grid animation speed by [%] @@ -276,6 +280,7 @@ ModUi/&SelectTabletop=Select Tabletop ModUi/&SenseNormalVisionRangeMultiplier=Modify Normal Vision range [only in battles] ModUi/&Services=Services ModUi/&SetBeltOfDwarvenKindBeardChances=Belt of Dwarvenkind beard appearing chances +ModUi/&SetElevationCameraMaxHeightBy=Increase elevation camera max height by ModUi/&SettingsExport=Export ModUi/&SettingsHelp=• As a host you can export your current configuration, open the exports folder and easily share with your peers\n• As a guest you can open the exports folder, paste the shared file from the host and load it over [Requires Restart] ModUi/&SettingsLoad=• Load an exported setting @@ -317,6 +322,8 @@ ModUi/&UnlockGlowingEyeColors=Add glowing eye colors ModUi/&UnlockMarkAndTattoosForAllCharacters=Unlock Sorcerer origin markings and tattoos for all characters ModUi/&UnlockSkinColors=Unlock skin colors ModUi/&Update=Update +ModUi/&UseAlternateSpellPointsSystem=Use official variant spell points rules +ModUi/&UseAlternateSpellPointsSystemHelp=[You have a pool of spell points that increases with caster level\nL01: 04 L02: 06 L03: 14 L04: 17 L05: 27 L06: 32 L07: 38 L08: 44 L09: 57 L10: 64\nL11: 73 L12: 73 L13: 83 L14: 83 L15: 94 L16: 94 L17: 107 L18: 114 L19: 123 L20: 133\nCost to cast spells is SL1: 2 SL2: 3 SL3: 5 SL4: 6 SL5: 7 SL6: 9 SL7: 10 SL8: 11 SL9: 13\nShort rest slots recovery features won't be triggered under this system] ModUi/&UseElfFaceModelsOnTieflings=Use Elf face models on Tieflings ModUi/&UseHeightOneCylinderEffect=Use a height 1 cylinder effect when casting Black Tentacles, Entangle, Grease [square] or Spike Growth [round] ModUi/&UseMathFlankingRules=+ Use precise math to determine flanking [may have a performance impact on slow machines] @@ -326,6 +333,7 @@ ModUi/&UseOfficialFlankingRulesAlsoForRanged=+ Also enable for ranged attacks ModUi/&UseOfficialFlankingRulesAlsoForReach=+ Also enable for reach attacks [disable precise math] ModUi/&UseOfficialFlankingRulesButAddAttackModifier=+ Instead of advantage grant +1 to attack roll ModUi/&UseOfficialFoodRationsWeight=Use official food ration weight of 2 pounds -ModUi/&UseOfficialObscurementRules=Use official lighting, obscurement, and vision combat rules\n[attacker who perceive defender who cannot perceive it gets ADV, and attacker who doesn't perceive defender who can perceive it gets DIS\n heavily obscured areas inflict blinded condition, where attack rolls against the creature have ADV, and the creature's attack rolls have DIS\n all distance spells targeting individuals cannot be cast if attacker has no sight, except for the ones that clearly don't state sight is required] +ModUi/&UseOfficialObscurementRules=Use official lighting, obscurement, and vision combat rules +ModUi/&UseOfficialObscurementRulesHelp=[attacker who perceive defender who cannot perceive it gets ADV, and attacker who doesn't perceive defender who can perceive it gets DIS\n heavily obscured areas inflict blinded condition, where attack rolls against the creature have ADV, and the creature's attack rolls have DIS\n all distance spells targeting individuals cannot be cast if attacker has no sight, except for the ones that clearly don't state sight is required] ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons=Use official small races rules when wielding heavy weapons [your attacks have disadvantage] ModUi/&Visuals=Visuals: [Requires Restart] diff --git a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt index 80d1e8859f..454d5d23c9 100644 --- a/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/Spells/Spells04-en.txt @@ -13,6 +13,18 @@ Condition/&ConditionElementalBaneTitle=Elemental Bane: {0} Condition/&ConditionIrresistiblePerformanceDescription=You cannot perform any actions that require your hands or mouth but can otherwise act normally. Condition/&ConditionIrresistiblePerformanceTitle=Dinah-Moe Humm Condition/&ConditionPsionicBlastTitle=Muddled Mind +Condition/&ConditionSickeningRadianceDescription=You emit a dim light in a 5-foot radius. This light makes it impossible for you from being invisible. +Condition/&ConditionSickeningRadianceExhausted1Description=You have disadvantage on ability checks. +Condition/&ConditionSickeningRadianceExhausted1Title=Exhausted 1 +Condition/&ConditionSickeningRadianceExhausted2Description=Your speed is halved, and you have disadvantage on ability checks. +Condition/&ConditionSickeningRadianceExhausted2Title=Exhausted 2 +Condition/&ConditionSickeningRadianceExhausted3Description=Your speed is halved, and you have disadvantage on ability checks, attack rolls, and saving throws. +Condition/&ConditionSickeningRadianceExhausted3Title=Exhausted 3 +Condition/&ConditionSickeningRadianceExhausted4Description=Your speed and maximum hit points are halved, and you have disadvantage on ability checks, attack rolls, and saving throws. +Condition/&ConditionSickeningRadianceExhausted4Title=Exhausted 4 +Condition/&ConditionSickeningRadianceExhausted5Description=Your speed is 0, your maximum hit points is halved, and you have disadvantage on ability checks, attack rolls, and saving throws. +Condition/&ConditionSickeningRadianceExhausted5Title=Exhausted 5 +Condition/&ConditionSickeningRadianceTitle=Sickening Radiance Condition/&ConditionStaggeringSmiteEnemyDescription=You're hit by psychic damage. Condition/&ConditionStaggeringSmiteEnemyTitle=Staggering Smite Condition/&ConditionTreeForestGuardianDescription=You gain 10 temporary hit points, you make Constitution saving throws with advantage, and you make Dexterity and Wisdom-based attack rolls with advantage. @@ -50,6 +62,8 @@ Spell/&PsionicBlastDescription=You unleash a debilitating wave of mental power i Spell/&PsionicBlastTitle=Psionic Blast Spell/&PsychicLanceDescription=You unleash a shimmering lance of psychic power from your forehead at a creature that you can see within range. It must succeed on an Intelligence saving throw or take 7d6 psychic damage and be incapacitated until the end of your next turn. On a successful save, the creature takes half damage and isn't incapacitated. At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 4th. Spell/&PsychicLanceTitle=Raulothim's Psychic Lance +Spell/&SickeningRadianceDescription=Dim light spreads within a 30-foot-radius sphere centered on a point you choose within range. The light spreads around corners, and it lasts until the spell ends. When a creature moves into the spell's area for the first time on a turn or starts its turn there, that creature must succeed on a Constitution saving throw or take 4d10 radiant damage, and it suffers one level of exhaustion and emits a dim light in a 5-foot radius. This light makes it impossible for the creature to benefit from being invisible. The light and any levels of exhaustion caused by this spell go away when the spell ends. +Spell/&SickeningRadianceTitle=Sickening Radiance Spell/&StaggeringSmiteDescription=The next time you hit a creature with a weapon attack during this spell's duration, your weapon pierces both body and mind, and the attack deals an extra 4d6 psychic damage to the target. The target must make a Wisdom saving throw. On a failed save, it has disadvantage on attack rolls and ability checks, and can't take reactions, until the end of its next turn. Spell/&StaggeringSmiteTitle=Staggering Smite Spell/&TreeForestGuardianDescription=Your skin appears barky, leaves sprout from your hair, and you gain the following benefits:\n• You gain 10 temporary hit points.\n• You make Constitution saving throws with advantage.\n• You make Dexterity and Wisdom-based attack rolls with advantage.\n• Creatures within 30 feet of you must make a Strength saving throw or be hindered for the spell duration. They can retry the save every turn start. diff --git a/SolastaUnfinishedBusiness/Translations/en/SubClasses/CollegeOfAudacity-en.txt b/SolastaUnfinishedBusiness/Translations/en/SubClasses/CollegeOfAudacity-en.txt index 2f7f0eb5d1..03810c4d76 100644 --- a/SolastaUnfinishedBusiness/Translations/en/SubClasses/CollegeOfAudacity-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/SubClasses/CollegeOfAudacity-en.txt @@ -1,26 +1,27 @@ -Action/&AudaciousWhirlToggleDescription=Activate/deactivate Audacious Whirl -Action/&AudaciousWhirlToggleTitle=Audacious Whirl -Action/&MasterfulWhirlToggleDescription=Activate/deactivate Masterful Whirl -Action/&MasterfulWhirlToggleTitle=Masterful Whirl -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Whirl roll to AC. -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Defensive Whirl -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Whenever you take the Attack action on your turn, your walking speed increases by 10 feet until the end of the turn, and if a melee weapon attack that you make as part of this action hits a creature, you can expend one use of your Bardic Inspiration to cause the weapon to deal extra damage to the target you hit. The damage equals the number you roll on the Bardic Inspiration die. You also choose a particular maneuver:\n• Defensive Whirl: You add the Bardic Inspiration die roll to your AC until the start of your next turn.\n• Slashing Whirl: You deal the extra damage to all other enemy creatures within 5 feet of you.\n• Mobile Whirl: You gain benefits of disengage until the end of your turn. -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Audacious Whirl +Action/&AudaciousWhirlToggleDescription=Activate/deactivate Blade Flourish +Action/&AudaciousWhirlToggleTitle=Blade Flourish +Action/&MasterfulWhirlToggleDescription=Activate/deactivate Master's Flourish +Action/&MasterfulWhirlToggleTitle=Master's Flourish +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Flourish roll to AC. +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Defensive Flourish +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Whenever you take the Attack action on your turn, your walking speed increases by 10 feet until the end of the turn, and if a melee weapon attack that you make as part of this action hits a creature, you can expend one use of your Bardic Inspiration to cause the weapon to deal extra damage to the target you hit. The damage equals the number you roll on the Bardic Inspiration die. You also choose a particular maneuver:\n• Defensive Flourish: You add the Bardic Inspiration die roll to your AC until the start of your next turn.\n• Slashing Flourish: You deal the extra damage to all other enemy creatures within 5 feet of you.\n• Mobile Flourish: You gain benefits of disengage until the end of your turn. +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Blade Flourish Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=You gain proficiency with medium armor and the scimitar. You can also use your weapon as a spellcasting focus for your bard spells. Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=Bonus Proficiencies -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Whenever you use an Audacious Whirl option, you can roll a D6 and use it instead of expending a Bardic Inspiration die. -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Masterful Whirl +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Whenever you use a Blade Flourish option, you can roll a D6 and use it instead of expending a Bardic Inspiration die. +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Master's Flourish Feature/&FightingStyleChoiceCollegeOfAudacityDescription=You adopt a particular style of fighting as your specialty. Choose either Dueling or Two Weapon Fighting. Feature/&FightingStyleChoiceCollegeOfAudacityTitle=Fighting Style -Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=You can expend one use of your Bardic Inspiration to cause the weapon to deal extra damage to the target you hit. The damage equals the number you roll on the Bardic Inspiration die or a D6 if a Masterful Whirl. You also add the number rolled to your AC until the start of your next turn. -Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Defensive Whirl -Feature/&PowerCollegeOfAudacityMobileWhirlDescription=You can expend one use of your Bardic Inspiration to cause the weapon to deal extra damage to the target you hit. The damage equals the number you roll on the Bardic Inspiration die or a D6 if a Masterful Whirl. You gain benefits of disengage until the end of your turn. -Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Mobile Whirl -Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=You can expend one use of your Bardic Inspiration to cause the weapon to deal extra damage to target you hit and to all other enemy creatures within 5 feet of you. The damage equals the number you roll on the Bardic Inspiration die or a D6 if a Masterful Whirl. -Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Slashing Whirl -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} can cause the weapon to deal extra damage to the target. The damage is equal to the number you roll on the Bardic Inspiration die or a D6 if a Masterful Whirl. -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Whirl -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Whirl -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Whirl +Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=You can expend one use of your Bardic Inspiration to cause the weapon to deal extra damage to the target you hit. The damage equals the number you roll on the Bardic Inspiration die or a D6 if a Master's Flourish. You also add the number rolled to your AC until the start of your next turn. +Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Defensive Flourish +Feature/&PowerCollegeOfAudacityMobileWhirlDescription=You can expend one use of your Bardic Inspiration to cause the weapon to deal extra damage to the target you hit. The damage equals the number you roll on the Bardic Inspiration die or a D6 if a Master's Flourish. You gain benefits of disengage until the end of your turn. +Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Mobile Flourish +Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=You can expend one use of your Bardic Inspiration to cause the weapon to deal extra damage to target you hit and to all other enemy creatures within 5 feet of you. The damage equals the number you roll on the Bardic Inspiration die or a D6 if a Master's Flourish. +Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Slashing Flourish +Feedback/&CollegeOfAudacityDefensiveWhirl={0} rolls a {2} die, adding {3} to AC. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} can cause the weapon to deal extra damage to the target. The damage is equal to the number you roll on the Bardic Inspiration die or a D6 if a Master's Flourish. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Flourish +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Flourish +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Flourish Subclass/&CollegeOfAudacityDescription=Bards of the College of Swords entertain through daring feats of weapon prowess. They perform stunts such as sword swallowing, knife throwing and juggling, and mock combats. Though they use their weapons to entertain, they are also highly trained and skilled warriors in their own right. Subclass/&CollegeOfAudacityTitle=College of Swords diff --git a/SolastaUnfinishedBusiness/Translations/en/SubClasses/MartialTactician-en.txt b/SolastaUnfinishedBusiness/Translations/en/SubClasses/MartialTactician-en.txt index 586332ae5c..ef1ce4b408 100644 --- a/SolastaUnfinishedBusiness/Translations/en/SubClasses/MartialTactician-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/SubClasses/MartialTactician-en.txt @@ -12,8 +12,8 @@ Feature/&FeatureSetTacticianHonedCraftDescription=Gain expertise with a skill or Feature/&FeatureSetTacticianHonedCraftTitle=Honed Skill Feature/&FeatureSetTacticianSharpMindDescription=Gain proficiency with a skill of your choice. Feature/&FeatureSetTacticianSharpMindTitle=Sharp Mind -Feature/&FeatureSetTacticianTacticalAwarenessDescription=While you are not incapacitated, you gain the following benefits:\n• Once per turn, your weapon attack deals extra damage equal to your proficiency bonus.\n• Attacks of Opportunity you make are done with advantage.\n• Attacks of Opportunity against you are done with disadvantage. -Feature/&FeatureSetTacticianTacticalAwarenessTitle=Tactical Awareness +Feature/&FeatureSetTacticianTacticalAwarenessDescription=During combat, you regain a superiority die at the start of each of your turns. +Feature/&FeatureSetTacticianTacticalAwarenessTitle=Master of Warfare Feature/&FeatureTacticianGambitDieSizeD10Description=Your superiority die is upgraded to D10. Feature/&FeatureTacticianGambitDieSizeD10Title=Superiority Die Size (d10) Feature/&FeatureTacticianGambitDieSizeD12Description=Your superiority die is upgraded to D12. diff --git a/SolastaUnfinishedBusiness/Translations/en/SubClasses/PathOfTheBeast-en.txt b/SolastaUnfinishedBusiness/Translations/en/SubClasses/PathOfTheBeast-en.txt index 6a051675a4..2b80715ff9 100644 --- a/SolastaUnfinishedBusiness/Translations/en/SubClasses/PathOfTheBeast-en.txt +++ b/SolastaUnfinishedBusiness/Translations/en/SubClasses/PathOfTheBeast-en.txt @@ -24,7 +24,7 @@ Feature/&PowerPathOfTheBeastFormOfTheBeastTailTitle=Form: Tail Feature/&PowerPathOfTheBeastFormOfTheBeastTitle=Form of the Beast Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeDescription=Target attacks another creature of your choice within the target's reach. Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeTitle=Infectious Fury: Compelled Strike -Feature/&PowerPathOfTheBeastInfectiousFuryDescription=When you hit a creature with your natural weapons while you are raging, the beast within you can curse your target with rabid fury. The target must succeed on a Wisdom saving throw (DC equal to 8 + your Constitution modifier + your proficiency bonus) or suffer one of the following effects (your choice). +Feature/&PowerPathOfTheBeastInfectiousFuryDescription=When you hit a creature with your natural weapons while you are raging, the beast within you can curse your target with rabid fury. The target must succeed on a Wisdom saving throw (DC equal to 8 + your Constitution modifier + your proficiency bonus) or suffer one of the following effects (your choice).\n\nYou can use this feature a number of times equal to your proficiency bonus, and you regain all expended uses when you finish a long rest. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashDescription=Target takes 2d12 Psychic Damage. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashTitle=Infectious Fury: Mindlash Feature/&PowerPathOfTheBeastInfectiousFuryTitle=Infectious Fury diff --git a/SolastaUnfinishedBusiness/Translations/es/Feats/MeleeCombat-es.txt b/SolastaUnfinishedBusiness/Translations/es/Feats/MeleeCombat-es.txt index 4918661502..f9f694423c 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Feats/MeleeCombat-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Feats/MeleeCombat-es.txt @@ -34,8 +34,6 @@ Feat/&FeatFencerDescription=Si realizas la acción de Ataque en tu turno mientra Feat/&FeatFencerTitle=Esgrimidor Feat/&FeatGreatWeaponDefenseDescription=Luchas arduamente con armas grandes, obteniendo los siguientes beneficios:\n• Cuando reduces a una criatura a 0 puntos de golpe o asestas un golpe crítico con un arma cuerpo a cuerpo, tu velocidad de movimiento aumenta en 15 pies hasta el final de tu turno.\n• Cuando realizas la acción de Ataque mientras empuñas un arma cuerpo a cuerpo pesada o un arma versátil en dos manos, obtienes +2 CA hasta el comienzo de tu siguiente turno. Pierdes este beneficio si equipas un arma diferente o un escudo. Feat/&FeatGreatWeaponDefenseTitle=Fervor de batalla -Feat/&FeatHammerThePointDescription=Sabes cómo enfocarte y concentrarte en el mismo lugar. Después de realizar una tirada de ataque contra un objetivo, obtienes un +1 a las tiradas de ataque y daño contra este objetivo hasta el final de tu turno [acumulaciones]. -Feat/&FeatHammerThePointTitle=Martilla la punta Feat/&FeatLongswordFinesseDescription=Eres descendiente de un maestro de la espada larga y parte de ese dominio te ha pasado a ti. Obtienes los siguientes beneficios:\n• Aumenta tu destreza en 1, hasta un máximo de 20.\n• Mientras sostienes una espada larga, obtienes una bonificación de +1 a la clase de armadura.\n• La espada larga tiene la Propiedad de delicadeza cuando la empuñas. Feat/&FeatLongswordFinesseTitle=Delicadeza de espada larga Feat/&FeatOldTacticsDexDescription=Aumenta tu Destreza en 1. Una vez por ronda, cuando un enemigo tumbado dentro del alcance de tu arma cuerpo a cuerpo se levanta, puedes realizar un ataque de oportunidad contra el objetivo. diff --git a/SolastaUnfinishedBusiness/Translations/es/Feats/OtherFeats-es.txt b/SolastaUnfinishedBusiness/Translations/es/Feats/OtherFeats-es.txt index 4b1d74fd5d..b6e48176c4 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Feats/OtherFeats-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Feats/OtherFeats-es.txt @@ -8,8 +8,6 @@ Feat/&FeatAlertDescription=Siempre atento al peligro, obtienes los siguientes be Feat/&FeatAlertTitle=Alerta Feat/&FeatArcaneArcherAdeptDescription=Tienes magia arcana y entrenamiento con arco que te permite realizar maniobras de combate especiales. Feat/&FeatArcaneArcherAdeptTitle=Adepto Arquero Arcano -Feat/&FeatAstralArmsDescription=Aumenta tu Sabiduría en 1, hasta un máximo de 20.\nCuando realizas un ataque desarmado en tu turno, tu alcance es de 10 pies. Otras criaturas provocan un ataque de oportunidad de tu parte cuando entran en el alcance que tienes con armas desarmadas. . -Feat/&FeatAstralArmsTitle=Alcance Astral Feat/&FeatAthleteDexDescription=Has realizado un entrenamiento físico exhaustivo para obtener los siguientes beneficios:\n• Aumenta tu Destreza en 1, hasta un máximo de 20.\n• Cuando estás boca abajo, ponerte de pie no te cuesta movimiento.\n• Escalar no te cuesta movimiento adicional.\n• Obtienes competencia con la habilidad o experiencia de Atletismo si ya eres competente. Feat/&FeatAthleteDexTitle=Atleta [Dex] Feat/&FeatAthleteStrDescription=Has realizado un entrenamiento físico exhaustivo para obtener los siguientes beneficios:\n• Aumenta tu fuerza en 1, hasta un máximo de 20.\n• Cuando estás boca abajo, ponerte de pie no te cuesta movimiento.\n• Escalar no te cuesta movimiento adicional.\n• Obtienes competencia con la habilidad o experiencia de Atletismo si ya eres competente. diff --git a/SolastaUnfinishedBusiness/Translations/es/Feats/RangedCombat-es.txt b/SolastaUnfinishedBusiness/Translations/es/Feats/RangedCombat-es.txt index f19333f306..503ff7c5d0 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Feats/RangedCombat-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Feats/RangedCombat-es.txt @@ -10,8 +10,6 @@ Feat/&FeatDeadeyeDescription=Has aprendido a cambiar la precisión para acertar Feat/&FeatDeadeyeTitle=Tirador de primera Feat/&FeatRangedExpertDescription=Tu entrenamiento experto con armas a distancia te otorga estos beneficios:\n• Los ataques cuerpo a cuerpo no imponen desventaja.\n• Si realizas la acción de ataque en tu turno, puedes realizar un ataque adicional a distancia con una mano agregando tu modificador de atributo para dañar. Feat/&FeatRangedExpertTitle=Experto en ballesta -Feat/&FeatSteadyAimDescription=Aumenta tu Destreza en 1, hasta un máximo de 20. Como acción adicional, te das ventaja en tu próxima tirada de ataque del turno actual. Puedes usar esta acción adicional solo si no te has movido durante este turno, y después de usar la acción adicional, tu velocidad es 0 hasta el final del turno actual. -Feat/&FeatSteadyAimTitle=Buena puntería Feature/&PowerFeatSteadyAimDescription=Como acción adicional, te das ventaja en tu próxima tirada de ataque en el turno actual. Puedes usar esta acción adicional solo si no te has movido durante este turno, y después de usar la acción adicional, tu velocidad es 0 hasta el final del turno actual. Feature/&PowerFeatSteadyAimTitle=Buena puntería Tooltip/&DeadeyeConcentration=Desactivar francotirador diff --git a/SolastaUnfinishedBusiness/Translations/es/FightingStyles-es.txt b/SolastaUnfinishedBusiness/Translations/es/FightingStyles-es.txt index c328bbd298..157e71d5a9 100644 --- a/SolastaUnfinishedBusiness/Translations/es/FightingStyles-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/FightingStyles-es.txt @@ -22,8 +22,6 @@ FightingStyle/&LungerDescription=El alcance de tu arma cuerpo a cuerpo aumenta e FightingStyle/&LungerTitle=Pulmones FightingStyle/&MercilessDescription=Cuando reduces a un objetivo a 0 HP usando un ataque con arma cuerpo a cuerpo en tu turno, los enemigos dentro de un radio del objetivo derribado igual a la mitad de tu bonificación de competencia (redondeado hacia arriba) que puedan ver al objetivo deben realizar una salvación de Sabiduría (CD 8 + tu bonificación de competencia + tu modificador de Fuerza) o tener miedo de ti hasta el final de tu siguiente turno. Si el ataque desencadenante es un golpe crítico, el radio es igual a tu bonificación de competencia. FightingStyle/&MercilessTitle=Despiadado -FightingStyle/&MonkShieldExpertDescription=Obtienes competencia en Escudo y eso no te impide realizar ataques desarmados con esa mano. Además, todas tus habilidades de monje funcionan incluso cuando empuñas un escudo. -FightingStyle/&MonkShieldExpertTitle=Entrenamiento con escudo monástico FightingStyle/&PolearmExpertDescription=Tu entrenamiento experto con un arma de asta te otorga estos beneficios:\n• Cuando realizas la acción de Ataque y atacas solo con un arma de asta, puedes usar una acción adicional para realizar un ataque cuerpo a cuerpo con el extremo opuesto del arma. Este ataque utiliza el mismo modificador de habilidad que el ataque principal e inflige 1d4 de daño contundente.\n• Otras criaturas provocan un ataque de oportunidad de tu parte cuando entran en tu alcance empuñando un arma de asta. FightingStyle/&PolearmExpertTitle=Maestro de armas de asta FightingStyle/&PugilistDescription=Tus golpes desarmados causan 1d4 de daño contundente adicional y puedes golpear con la mano izquierda como acción adicional. Puedes empujar como acción adicional si no tienes otra arma o escudo. diff --git a/SolastaUnfinishedBusiness/Translations/es/Others-es.txt b/SolastaUnfinishedBusiness/Translations/es/Others-es.txt index c0069b827a..717c4fa682 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Others-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Others-es.txt @@ -281,6 +281,8 @@ Screen/&RangerSpellTitle=Guardabosque Screen/&RepertoireHeaderFormat={0} Screen/&RoguishSpellDescription=Este hechizo ha sido otorgado por tu arquetipo de Pícaro y lo consideras conocido. Screen/&RoguishSpellTitle=Picaresco +Screen/&SpellAlternatePointsCostTooltip={0} puntos +Screen/&SpellAlternatePointsTooltip=Te quedan {0} puntos de hechizo. Screen/&SpellSlotsUsedLongDescription=Has gastado {0} espacios para hechizos en este nivel. Screen/&SpellSlotsUsedShortDescription=Has gastado {0} espacios mágicos del pacto. Screen/&SpellSlotsUsedShortLongDescription=Has gastado {0} espacios de magia de pacto y {1} espacios de hechizo en este nivel. diff --git a/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt b/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt index 76be61026c..a10c5389ba 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Settings-es.txt @@ -42,6 +42,7 @@ ModUi/&Bestiary=Bestiario ModUi/&BestowCurseNoConcentrationRequiredForSlotLevel5OrAbove=Otorgar maldición no requiere concentración cuando se lanza con un espacio de hechizo N5+ ModUi/&BlindedConditionDontAllowAttackOfOpportunity=La condición Cegado no permite ataques de oportunidad. ModUi/&Blueprints=Planos +ModUi/&Camera=Cámara: ModUi/&Campaigns=Campañas: ModUi/&CampaignsAndLocations=Campañas y ubicaciones: ModUi/&Category=Categoría @@ -118,6 +119,7 @@ ModUi/&EnableCheatMenu=Habilitar el menú de trucos ModUi/&EnableCustomPortraits=Habilitar retratos personalizados ModUi/&EnableCustomPortraitsHelp=• Coloque sus retratos personalizados en las subcarpetas Personal o PreGen , que lleva el nombre del nombre del héroe [es decir: Anton, Celia, Nialla, etc.]\n• Utilice PNG imágenes, de 256 x 384 píxeles de tamaño, con una capa de transparencia [use GIMP para obtener mejores resultados] ModUi/&EnableDungeonMakerModdedContent=Habilite Dungeon Maker Pro\n[incluye salas planas, tamaños de mazmorra de 150 x 150 y 200 x 200 y una combinación sencilla de recursos de todos los entornos] +ModUi/&EnableElevationCameraToStayAtPosition=Habilite la cámara de elevación para permanecer en su posición después de desactivarla ModUi/&EnableEpicPointsAndArray=Habilite un sistema de compra épico de 35 puntos y una matriz [17,15,13,12,10,8] [Requiere reinicio] ModUi/&EnableExtendedProficienciesPanelDisplay=Habilitar visualización del panel de competencias extendidas [Disparos arcanos, infusiones, maniobras y versatilidades]\n[rendimiento éxito en la inspección del personaje. úsalo bajo tu propia responsabilidad] ModUi/&EnableFeatsAtEvenLevels=Habilite la selección de dotes en los niveles 2, 10 y 18 @@ -233,13 +235,15 @@ ModUi/&Monsters=Monstruos: ModUi/&MovementGridWidthModifier=Multiplica el ancho de la cuadrícula de movimiento por [%] ModUi/&MulticlassKeyHelp=SHIFT hace clic en un hechizo para invertir el tipo de espacio de repertorio predeterminado consumido\n[Brujo gasta espacios de hechizo blancos y otros gastan los verdes de pacto] ModUi/&MultiplyTheExperienceGainedBy=Multiplica la experiencia obtenida por [%] +ModUi/&NeverMoveCameraOnEnemyTurn=+ La cámara nunca se mueve durante los turnos del enemigo ModUi/&NoExperienceOnLevelUp=No se requiere experiencia para subir de nivel. ModUi/&OfferAdditionalLoreFriendlyNames=Ofrecer nombres adicionales amigables con la historia en la creación de personajes. ModUi/&OfficialObscurementRulesCancelAdvDisPairs=+ Cancelar ventaja/desventaja pares cegados, invisibles y percibidos [útil junto con la ventaja/desventaja oficial reglas] ModUi/&OfficialObscurementRulesHeavilyObscuredAsProjectileBlocker=+ Cambia las áreas muy oscurecidas para que sean bloqueadores de proyectiles [Cloud Kill, Nube de niebla , Nube incendiaria, Tormenta de pétalos, Tormenta de aguanieve, Nube apestosa] ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget=+ Las criaturas invisibles están muy oscurecidas y pueden ser objetivos, las tiradas de ataque contra la criatura tienen desventaja y las tiradas de ataque de la criatura tienen ventaja ModUi/&OfficialObscurementRulesMagicalDarknessAsProjectileBlocker=+ Cambia las áreas oscurecidas mágicamente para que sean bloqueadores de proyectiles [cualquier fuente del efecto de hechizo Oscuridad] -ModUi/&OfficialObscurementRulesTweakMonsters=+ Añade Darkvision, BlindSight y TrueSight a monstruos y NPC cuando sea apropiado.\n [colecciones de configuración MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] +ModUi/&OfficialObscurementRulesTweakMonsters=+ Añade Darkvision, BlindSight y TrueSight a monstruos y NPC cuando sea apropiado +ModUi/&OfficialObscurementRulesTweakMonstersHelp=[colecciones de configuración MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] ModUi/&OnlyShowMostPowerfulUpcastConjuredElementalOrFey=+ Mostrar solo las criaturas más poderosas en la lista de conjuración ModUi/&OutlineGridWidthModifier=Multiplica el ancho de la cuadrícula del contorno por [%] ModUi/&OutlineGridWidthSpeed=Multiplica la velocidad de animación de la cuadrícula del contorno por [%] @@ -276,6 +280,7 @@ ModUi/&SelectTabletop=Seleccionar tablero ModUi/&SenseNormalVisionRangeMultiplier=Modificar el rango de Visión normal [solo en batallas] ModUi/&Services=Servicios ModUi/&SetBeltOfDwarvenKindBeardChances=Cinturón de los enanos Probabilidades de aparición de barba +ModUi/&SetElevationCameraMaxHeightBy=Aumentar la altura máxima de la cámara de elevación en ModUi/&SettingsExport=Exportar ModUi/&SettingsHelp=• Como anfitrión, puedes exportar tu configuración actual, abrir la carpeta de exportaciones y compartirla fácilmente con tus compañeros.\n• Como invitado, puedes abrir la carpeta de exportaciones, pegar el archivo compartido desde el anfitrión y cargarlo <. i>[Requiere reinicio] ModUi/&SettingsLoad=• Cargar una configuración exportada @@ -317,6 +322,8 @@ ModUi/&UnlockGlowingEyeColors=Añade colores de ojos brillantes ModUi/&UnlockMarkAndTattoosForAllCharacters=Desbloquea marcas de origen y tatuajes de Hechicero para todos los personajes. ModUi/&UnlockSkinColors=Desbloquear colores de piel ModUi/&Update=Actualizar +ModUi/&UseAlternateSpellPointsSystem=Utilice las reglas oficiales de puntos de hechizo variantes +ModUi/&UseAlternateSpellPointsSystemHelp=[Tienes una reserva de puntos de hechizo que aumenta con el nivel del lanzador\nL01: 04 L02: 06 L03 : 14 L04: 17 L05: 27 L06: 32 L07: < color=blanco>38 L08: 44 L09: 57 L10: 64\nL11: 73 L12: 73 L13: 83 L14: 83 L15: 94 L16: 94 L17: 107 L18: 114 L19: 123 L20: 133\nEl costo de lanzar hechizos es SL1: 2 SL2: 3 SL3: 5 SL4: 6 SL5: 7 SL6: 9 SL7: 10 SL8: 11 SL9: 13\nLas funciones de recuperación de espacios de descanso breves no se activarán en este sistema ] ModUi/&UseElfFaceModelsOnTieflings=Utilice modelos de cara de Elfo en Teflings ModUi/&UseHeightOneCylinderEffect=Utilice un efecto de cilindro de altura 1 al lanzar Tentáculos negros, Enredar, Grasa [cuadrado] o Crecimiento máximo [ronda] ModUi/&UseMathFlankingRules=+ Utilice matemáticas precisas para determinar el flanqueo [puede tener un impacto en el rendimiento en máquinas lentas] @@ -326,6 +333,7 @@ ModUi/&UseOfficialFlankingRulesAlsoForRanged=+ También habilitar para ataque ModUi/&UseOfficialFlankingRulesAlsoForReach=+ Habilitar también para ataques de alcance [deshabilitar matemáticas precisas] ModUi/&UseOfficialFlankingRulesButAddAttackModifier=+ En lugar de ventaja otorga +1 a la tirada de ataque ModUi/&UseOfficialFoodRationsWeight=Utilice una ración de alimentos oficial de 2 libras -ModUi/&UseOfficialObscurementRules=Utilice las reglas de combate oficiales de iluminación, oscurecimiento y visión\n[el atacante que percibe al defensor que no puede percibirlo obtiene ADV y el atacante que no percibir al defensor que puede percibirlo obtiene DIS\n las áreas muy oscurecidas infligen una condición de ceguera, donde las tiradas de ataque contra la criatura tienen ADV y las tiradas de ataque de la criatura tienen DIS\n todos los hechizos de distancia dirigidos a individuos no se pueden lanzar si el atacante no tiene vista , excepto aquellos que claramente no indican que se requiere visión] +ModUi/&UseOfficialObscurementRules=Utilice las reglas oficiales de combate de iluminación, oscurecimiento y visión +ModUi/&UseOfficialObscurementRulesHelp=[el atacante que percibe al defensor que no puede percibirlo obtiene ADV, y el atacante que no percibe al defensor que puede percibirlo obtiene DIS\n las áreas muy oscurecidas infligen una condición de ceguera, donde el ataque rueda contra el La criatura tiene ADV y las tiradas de ataque de la criatura tienen DIS\n todos los hechizos de distancia dirigidos a individuos no se pueden lanzar si el atacante no tiene vista, excepto aquellos que claramente no indican que se requiere vista] ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons=Usa las reglas oficiales de razas pequeñas cuando empuñas armas pesadas [tus ataques tienen desventaja] ModUi/&Visuals=Imágenes visuales: [Requiere reinicio] diff --git a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt index 28c5e0662e..c925116edc 100644 --- a/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/Spells/Spells04-es.txt @@ -13,6 +13,18 @@ Condition/&ConditionElementalBaneTitle=Perdición elemental: {0} Condition/&ConditionIrresistiblePerformanceDescription=No puede realizar ninguna acción que requiera el uso de las manos o la boca, pero por lo demás puede actuar con normalidad. Condition/&ConditionIrresistiblePerformanceTitle=Dinah Moe Humm Condition/&ConditionPsionicBlastTitle=Mente confusa +Condition/&ConditionSickeningRadianceDescription=Emites una luz tenue en un radio de 5 pies. Esta luz te hace imposible ser invisible. +Condition/&ConditionSickeningRadianceExhausted1Description=Tienes desventaja en las pruebas de habilidad. +Condition/&ConditionSickeningRadianceExhausted1Title=Agotado 1 +Condition/&ConditionSickeningRadianceExhausted2Description=Tu velocidad se reduce a la mitad y tienes desventaja en las pruebas de habilidad. +Condition/&ConditionSickeningRadianceExhausted2Title=Agotado 2 +Condition/&ConditionSickeningRadianceExhausted3Description=Tu velocidad se reduce a la mitad y tienes desventaja en las pruebas de habilidad, tiradas de ataque y tiros de salvación. +Condition/&ConditionSickeningRadianceExhausted3Title=Agotado 3 +Condition/&ConditionSickeningRadianceExhausted4Description=Tu velocidad y puntos de vida máximos se reducen a la mitad y tienes desventaja en las pruebas de habilidad, tiradas de ataque y tiros de salvación. +Condition/&ConditionSickeningRadianceExhausted4Title=Agotado 4 +Condition/&ConditionSickeningRadianceExhausted5Description=Tu velocidad es 0, tus puntos de vida máximos se reducen a la mitad y tienes desventaja en las pruebas de habilidad, tiradas de ataque y tiros de salvación. +Condition/&ConditionSickeningRadianceExhausted5Title=Agotado 5 +Condition/&ConditionSickeningRadianceTitle=Resplandor repugnante Condition/&ConditionStaggeringSmiteEnemyDescription=Estás golpeado por daño psíquico. Condition/&ConditionStaggeringSmiteEnemyTitle=Golpe asombroso Condition/&ConditionTreeForestGuardianDescription=Obtienes 10 puntos de vida temporales, realizas tiradas de salvación de Constitución con ventaja y realizas tiradas de ataque basadas en Destreza y Sabiduría con ventaja. @@ -50,6 +62,8 @@ Spell/&PsionicBlastDescription=Desatas una ola debilitante de poder mental en un Spell/&PsionicBlastTitle=Explosión psiónica Spell/&PsychicLanceDescription=Liberas una lanza brillante de poder psíquico desde tu frente hacia una criatura que puedes ver dentro del alcance. Debe superar una tirada de salvación de Inteligencia o sufrir 7d6 de daño psíquico y quedar incapacitado hasta el final de tu siguiente turno. Con una salvación exitosa, la criatura sufre la mitad del daño y no queda incapacitada. En niveles superiores. Cuando lanzas este hechizo usando un espacio de hechizo de 4º nivel o superior, el daño aumenta en 1d6 por cada nivel de espacio por encima del 4º. Spell/&PsychicLanceTitle=Lanza psíquica de Raulothim +Spell/&SickeningRadianceDescription=La luz tenue se propaga dentro de una esfera de 30 pies de radio centrada en un punto que elijas dentro del alcance. La luz se esparce por las esquinas y dura hasta que termina el hechizo. Cuando una criatura se mueve al área del hechizo por primera vez en un turno o comienza su turno allí, esa criatura debe superar una tirada de salvación de Constitución o sufrir 4d10 de daño radiante, sufre un nivel de agotamiento y emite una luz tenue en un Radio de 5 pies. Esta luz hace imposible que la criatura se beneficie de ser invisible. La luz y cualquier nivel de agotamiento causado por este hechizo desaparecen cuando termina el hechizo. +Spell/&SickeningRadianceTitle=Resplandor repugnante Spell/&StaggeringSmiteDescription=La próxima vez que golpees a una criatura con un ataque con arma durante la duración de este hechizo, tu arma atravesará tanto el cuerpo como la mente, y el ataque causará 4d6 daños psíquicos adicionales al objetivo. El objetivo debe realizar una tirada de salvación de Sabiduría. En una salvación fallida, tiene desventaja en las tiradas de ataque y pruebas de habilidad, y no puede reaccionar hasta el final de su siguiente turno. Spell/&StaggeringSmiteTitle=Golpe asombroso Spell/&TreeForestGuardianDescription=Tu piel parece corteza, brotan hojas de tu cabello y obtienes los siguientes beneficios:\n• Obtienes 10 puntos de vida temporales.\n• Realizas tiradas de salvación de Constitución con ventaja.\n• Obtienes Destreza y Sabiduría. tiradas de ataque basadas en ataques con ventaja.\n• Las criaturas a 30 pies de ti deben realizar una tirada de salvación de Fuerza o quedarán obstaculizadas durante la duración del hechizo. Pueden volver a intentar guardar cada inicio de turno. diff --git a/SolastaUnfinishedBusiness/Translations/es/SubClasses/CollegeOfAudacity-es.txt b/SolastaUnfinishedBusiness/Translations/es/SubClasses/CollegeOfAudacity-es.txt index a0cd333fa9..63e2b26f1f 100644 --- a/SolastaUnfinishedBusiness/Translations/es/SubClasses/CollegeOfAudacity-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/SubClasses/CollegeOfAudacity-es.txt @@ -1,26 +1,27 @@ -Action/&AudaciousWhirlToggleDescription=Activar/desactivar Audacious Whirl -Action/&AudaciousWhirlToggleTitle=Giro audaz -Action/&MasterfulWhirlToggleDescription=Activar/desactivar Masterful Whirl -Action/&MasterfulWhirlToggleTitle=Giro magistral -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Gire hacia AC. -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Giro defensivo -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Siempre que realizas la acción de Ataque en tu turno, tu velocidad al caminar aumenta en 10 pies hasta el final del turno, y si un ataque con arma cuerpo a cuerpo que realizas como parte de esta acción golpea a una criatura, puedes gastar un uso de tu Bárdico. Inspiración para hacer que el arma cause daño adicional al objetivo al que golpeas. El daño es igual al número que tiras en el dado de Inspiración Bárdica. También eliges una maniobra concreta:\n• Remolino defensivo: añades la tirada de Inspiración bárdica a tu CA hasta el comienzo de tu siguiente turno.\n• Remolino cortante: Infliges daño adicional a todas las demás criaturas enemigas que se encuentren a 5 pies de ti.\n• Mobile Whirl: Obtienes los beneficios de desconectarte hasta el final de tu turno. -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Giro audaz +Action/&AudaciousWhirlToggleDescription=Activar/desactivar Blade Flourish +Action/&AudaciousWhirlToggleTitle=Florecimiento de la hoja +Action/&MasterfulWhirlToggleDescription=Activar/desactivar Master's Flourish +Action/&MasterfulWhirlToggleTitle=El florecimiento del maestro +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Rollo de florecimiento a AC. +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Florecimiento defensivo +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Siempre que realizas la acción de Ataque en tu turno, tu velocidad al caminar aumenta en 10 pies hasta el final del turno, y si un ataque con arma cuerpo a cuerpo que realizas como parte de esta acción golpea a una criatura, puedes gastar un uso de tu Bárdico. Inspiración para hacer que el arma cause daño adicional al objetivo al que golpeas. El daño es igual al número que tiras en el dado de Inspiración Bárdica. También eliges una maniobra concreta:\n• Florecimiento defensivo: añades la tirada de Inspiración bárdica a tu CA hasta el comienzo de tu siguiente turno.\n• Florecimiento cortante: Infliges daño adicional a todas las demás criaturas enemigas que se encuentren a 5 pies de ti.\n• Mobile Flourish: Obtienes los beneficios de desconectarte hasta el final de tu turno. +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Florecimiento de la hoja Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=Obtienes competencia con la armadura media y la cimitarra. También puedes usar tu arma como foco de lanzamiento de hechizos para tus hechizos de bardo. Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=Competencias adicionales -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Siempre que uses una opción de Audacious Whirl, puedes tirar un D6 y usarlo en lugar de gastar un dado de Bardic Inspiration. -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Giro magistral +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Siempre que uses una opción Blade Flourish, puedes tirar un D6 y usarlo en lugar de gastar un dado de Bardic Inspiration. +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=El florecimiento del maestro Feature/&FightingStyleChoiceCollegeOfAudacityDescription=Adoptas un estilo particular de lucha como especialidad. Elige entre Duelo o Lucha con dos armas. Feature/&FightingStyleChoiceCollegeOfAudacityTitle=Estilo de lucha -Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Puedes gastar un uso de tu Bardic Inspiration para hacer que el arma cause daño adicional al objetivo que golpeas. El daño es igual al número que tiras en el dado Bardic Inspiration o un D6 si es un Masterful Whirl. También sumas el número obtenido a tu CA hasta el comienzo de tu próximo turno. -Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Giro defensivo -Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Puedes gastar un uso de tu Bardic Inspiration para hacer que el arma cause daño adicional al objetivo que golpeas. El daño es igual al número que tiras en el dado Bardic Inspiration o un D6 si es un Masterful Whirl. Obtienes los beneficios de desconectarte hasta el final de tu turno. -Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Remolino móvil -Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Puedes gastar un uso de tu Inspiración Bárdica para hacer que el arma cause daño adicional al objetivo que golpeas y a todas las demás criaturas enemigas dentro de 5 pies de ti. El daño es igual al número que tiras en el dado Bardic Inspiration o un D6 si es un Masterful Whirl. -Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Remolino cortante -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} puede hacer que el arma cause daño adicional al objetivo. El daño es igual al número que tiras en el dado Bardic Inspiration o un D6 si es un Masterful Whirl. -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Giro -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Giro -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Giro +Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Puedes gastar un uso de tu Bardic Inspiration para hacer que el arma cause daño adicional al objetivo que golpeas. El daño es igual al número que tiras en el dado de Inspiración Bárdica o un D6 si es un Florecimiento del Maestro. También sumas el número obtenido a tu CA hasta el comienzo de tu próximo turno. +Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Florecimiento defensivo +Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Puedes gastar un uso de tu Bardic Inspiration para hacer que el arma cause daño adicional al objetivo que golpeas. El daño es igual al número que tiras en el dado de Inspiración Bárdica o un D6 si es un Florecimiento del Maestro. Obtienes los beneficios de desconectarte hasta el final de tu turno. +Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Florecimiento móvil +Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Puedes gastar un uso de tu Inspiración Bárdica para hacer que el arma cause daño adicional al objetivo que golpeas y a todas las demás criaturas enemigas dentro de 5 pies de ti. El daño es igual al número que tiras en el dado de Inspiración Bárdica o un D6 si es un Florecimiento del Maestro. +Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Florecimiento cortante +Feedback/&CollegeOfAudacityDefensiveWhirl={0} tira un {2} dado, sumando {3} a la CA. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} puede hacer que el arma cause daño adicional al objetivo. El daño es igual al número que tiras en el dado de Inspiración Bárdica o un D6 si es un Florecimiento del Maestro. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Florecer +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Florecer +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Florecer Subclass/&CollegeOfAudacityDescription=Los bardos del Colegio de Espadas entretienen a través de atrevidas hazañas de destreza con las armas. Realizan acrobacias como tragar espadas, lanzar cuchillos, hacer malabarismos y simulacros de combates. Aunque usan sus armas para entretener, también son guerreros altamente entrenados y hábiles por derecho propio. Subclass/&CollegeOfAudacityTitle=Colegio de espadas diff --git a/SolastaUnfinishedBusiness/Translations/es/SubClasses/MartialTactician-es.txt b/SolastaUnfinishedBusiness/Translations/es/SubClasses/MartialTactician-es.txt index e2eb3bf504..b6fc8342c5 100644 --- a/SolastaUnfinishedBusiness/Translations/es/SubClasses/MartialTactician-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/SubClasses/MartialTactician-es.txt @@ -12,8 +12,8 @@ Feature/&FeatureSetTacticianHonedCraftDescription=Adquiera experiencia con una h Feature/&FeatureSetTacticianHonedCraftTitle=Habilidad perfeccionada Feature/&FeatureSetTacticianSharpMindDescription=Adquiera competencia con una habilidad de su elección. Feature/&FeatureSetTacticianSharpMindTitle=Mente aguda -Feature/&FeatureSetTacticianTacticalAwarenessDescription=Mientras no estés incapacitado, obtienes los siguientes beneficios:\n• Una vez por turno, tu ataque con arma causa daño adicional equivalente a tu bonificación de competencia.\n• Los ataques de oportunidad que realices se realizan con ventaja.\n• Los ataques de oportunidad contra ti se realizan con desventaja. -Feature/&FeatureSetTacticianTacticalAwarenessTitle=Conciencia táctica +Feature/&FeatureSetTacticianTacticalAwarenessDescription=Durante el combate, recuperas un dado de superioridad al comienzo de cada uno de tus turnos. +Feature/&FeatureSetTacticianTacticalAwarenessTitle=Maestro de la guerra Feature/&FeatureTacticianGambitDieSizeD10Description=Tu dado de superioridad se actualiza a D10. Feature/&FeatureTacticianGambitDieSizeD10Title=Tamaño del troquel de superioridad (d10) Feature/&FeatureTacticianGambitDieSizeD12Description=Tu dado de superioridad se actualiza a D12. diff --git a/SolastaUnfinishedBusiness/Translations/es/SubClasses/PathOfTheBeast-es.txt b/SolastaUnfinishedBusiness/Translations/es/SubClasses/PathOfTheBeast-es.txt index f0761bc9a0..6cfc77e5cc 100644 --- a/SolastaUnfinishedBusiness/Translations/es/SubClasses/PathOfTheBeast-es.txt +++ b/SolastaUnfinishedBusiness/Translations/es/SubClasses/PathOfTheBeast-es.txt @@ -24,7 +24,7 @@ Feature/&PowerPathOfTheBeastFormOfTheBeastTailTitle=Forma: Cola Feature/&PowerPathOfTheBeastFormOfTheBeastTitle=Forma de la bestia Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeDescription=El objetivo ataca a otra criatura de tu elección que esté dentro del alcance del objetivo. Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeTitle=Furia infecciosa: ataque forzado -Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Cuando golpeas a una criatura con tus armas naturales mientras estás furioso, la bestia dentro de ti puede maldecir a tu objetivo con furia rabiosa. El objetivo debe superar una tirada de salvación de Sabiduría (CD igual a 8 + tu modificador de Constitución + tu bonificación de competencia) o sufrir uno de los siguientes efectos (tu elección). +Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Cuando golpeas a una criatura con tus armas naturales mientras estás furioso, la bestia dentro de ti puede maldecir a tu objetivo con furia rabiosa. El objetivo debe superar una tirada de salvación de Sabiduría (CD igual a 8 + tu modificador de Constitución + tu bonificación de competencia) o sufrir uno de los siguientes efectos (tu elección).\n\nPuedes usar esta característica varias veces igual a tu bonificación de competencia, y recuperas todos los usos gastados cuando terminas un descanso prolongado. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashDescription=El objetivo sufre 2d12 de daño psíquico. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashTitle=Furia infecciosa: Mindlash Feature/&PowerPathOfTheBeastInfectiousFuryTitle=Furia infecciosa diff --git a/SolastaUnfinishedBusiness/Translations/fr/Feats/MeleeCombat-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Feats/MeleeCombat-fr.txt index 3a98bb8f2b..39acc00e33 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Feats/MeleeCombat-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Feats/MeleeCombat-fr.txt @@ -34,8 +34,6 @@ Feat/&FeatFencerDescription=Si vous effectuez l'action Attaque à votre tour tou Feat/&FeatFencerTitle=Escrimeur Feat/&FeatGreatWeaponDefenseDescription=Vous combattez durement avec de grosses armes et bénéficiez des avantages suivants : \n• Lorsque vous réduisez une créature à 0 point de vie ou effectuez un coup critique avec une arme de mêlée, votre vitesse de déplacement augmente de 15 pieds jusqu'à la fin de votre tour.{99 }• Lorsque vous effectuez l'action Attaque tout en maniant une arme lourde de mêlée ou polyvalente à deux mains, vous gagnez +2AC jusqu'au début de votre prochain tour. Vous perdez cet avantage si vous équipez une arme ou un bouclier différent. Feat/&FeatGreatWeaponDefenseTitle=Ferveur de bataille -Feat/&FeatHammerThePointDescription=Vous savez vous concentrer et vous concentrer au même endroit. Après avoir effectué un jet d'attaque contre une cible, obtenez un +1 aux jets d'attaque et de dégâts contre cette cible jusqu'à la fin de votre tour [piles]. -Feat/&FeatHammerThePointTitle=Marteler le point Feat/&FeatLongswordFinesseDescription=Vous descendez d'un maître de l'épée longue, et une partie de cette maîtrise vous a été transmise. Vous bénéficiez des avantages suivants :\n• Augmentez votre Dextérité de 1, jusqu'à un maximum de 20.\n• Pendant que vous tenez une épée longue, vous bénéficiez d'un bonus de +1 à la classe d'armure.\n• L'épée longue a le propriété de finesse lorsque vous l'utilisez. Feat/&FeatLongswordFinesseTitle=Finesse de l'épée longue Feat/&FeatOldTacticsDexDescription=Augmentez votre Dextérité de 1. Une fois par round, lorsqu'un ennemi à terre à portée de votre arme de mêlée se relève, vous pouvez effectuer une attaque d'opportunité contre la cible. diff --git a/SolastaUnfinishedBusiness/Translations/fr/Feats/OtherFeats-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Feats/OtherFeats-fr.txt index 8cbaea8f1b..704e4e9b60 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Feats/OtherFeats-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Feats/OtherFeats-fr.txt @@ -8,8 +8,6 @@ Feat/&FeatAlertDescription=Toujours à l'affût du danger, vous bénéficiez des Feat/&FeatAlertTitle=Alerte Feat/&FeatArcaneArcherAdeptDescription=Vous disposez d'un entraînement à la magie arcanique et à l'arc qui vous permet d'effectuer des manœuvres de combat spéciales. Feat/&FeatArcaneArcherAdeptTitle=Adepte archer arcanique -Feat/&FeatAstralArmsDescription=Augmentez votre Sagesse de 1, jusqu'à un maximum de 20.\nLorsque vous effectuez une frappe à mains nues pendant votre tour, votre portée est de 10 pieds. D'autres créatures provoquent une attaque d'opportunité de votre part lorsqu'elles entrent dans la portée que vous avez avec des mains non armées. . -Feat/&FeatAstralArmsTitle=Portée astrale Feat/&FeatAthleteDexDescription=Vous avez suivi un entraînement physique approfondi pour bénéficier des avantages suivants :\n• Augmentez votre dextérité de 1, jusqu'à un maximum de 20.\n• Lorsque vous êtes couché, vous lever ne vous coûte pas de mouvement.\n• L'escalade ne vous coûte pas de mouvement supplémentaire.\n• Vous maîtrisez les compétences ou l'expertise en athlétisme si vous les maîtrisez déjà. Feat/&FeatAthleteDexTitle=Athlète [Dex] Feat/&FeatAthleteStrDescription=Vous avez suivi un entraînement physique approfondi pour bénéficier des avantages suivants :\n• Augmentez votre force de 1, jusqu'à un maximum de 20.\n• Lorsque vous êtes couché, vous lever ne vous coûte pas de mouvement.\n• L'escalade ne vous coûte pas de mouvement supplémentaire.\n• Vous maîtrisez les compétences ou l'expertise en athlétisme si vous les maîtrisez déjà. diff --git a/SolastaUnfinishedBusiness/Translations/fr/Feats/RangedCombat-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Feats/RangedCombat-fr.txt index 9c61f43092..cc10f45456 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Feats/RangedCombat-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Feats/RangedCombat-fr.txt @@ -10,8 +10,6 @@ Feat/&FeatDeadeyeDescription=Vous avez appris à troquer la précision pour tire Feat/&FeatDeadeyeTitle=Tireur d'élite Feat/&FeatRangedExpertDescription=Votre entraînement expert avec les armes à distance vous accorde les avantages suivants :\n• Les attaques au corps à corps n'imposent aucun désavantage.\n• Si vous effectuez l'action d'attaque à votre tour, vous pouvez effectuer une attaque bonus à distance à une main en ajoutant votre modificateur d'attribut aux dégâts. Feat/&FeatRangedExpertTitle=Expert en arbalète -Feat/&FeatSteadyAimDescription=Augmentez votre Dextérité de 1, jusqu'à un maximum de 20. Par une action bonus, vous vous donnez un avantage lors de votre prochain jet d'attaque du tour en cours. Vous ne pouvez utiliser cette action bonus que si vous n'avez pas bougé pendant ce tour, et après avoir utilisé l'action bonus, votre vitesse est de 0 jusqu'à la fin du tour en cours. -Feat/&FeatSteadyAimTitle=Objectif constant Feature/&PowerFeatSteadyAimDescription=Par une action bonus, vous vous donnez un avantage lors de votre prochain jet d'attaque du tour en cours. Vous ne pouvez utiliser cette action bonus que si vous n'avez pas bougé pendant ce tour, et après avoir utilisé l'action bonus, votre vitesse est de 0 jusqu'à la fin du tour en cours. Feature/&PowerFeatSteadyAimTitle=Objectif constant Tooltip/&DeadeyeConcentration=Désactiver le tireur d'élite diff --git a/SolastaUnfinishedBusiness/Translations/fr/FightingStyles-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/FightingStyles-fr.txt index 5fe9f93c97..43d9d0c659 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/FightingStyles-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/FightingStyles-fr.txt @@ -22,8 +22,6 @@ FightingStyle/&LungerDescription=La portée de votre arme de mêlée augmente de FightingStyle/&LungerTitle=Poumons FightingStyle/&MercilessDescription=Lorsque vous réduisez une cible à 0 PV en utilisant une attaque au corps à corps pendant votre tour, les ennemis dans un rayon de la cible abattue égal à la moitié de votre bonus de maîtrise (arrondi au supérieur) et qui peuvent voir la cible doivent effectuer un jet de Sagesse (DD 8 + votre bonus de maîtrise + votre modificateur de Force) ou ayez peur de vous jusqu'à la fin de votre prochain tour. Si l'attaque déclenchante est un coup critique, le rayon est alors égal à votre bonus de maîtrise. FightingStyle/&MercilessTitle=Sans merci -FightingStyle/&MonkShieldExpertDescription=Vous gagnez la maîtrise du Bouclier, et cela ne vous empêche pas de lancer des attaques à mains nues avec cette main. De plus, toutes vos capacités de moine fonctionnent même lorsque vous brandissez un bouclier. -FightingStyle/&MonkShieldExpertTitle=Formation au Bouclier Monastique FightingStyle/&PolearmExpertDescription=Votre entraînement expert avec une arme d'hast vous accorde les avantages suivants :\n• Lorsque vous effectuez l'action d'attaque et attaquez avec uniquement une arme d'hast, vous pouvez utiliser une action bonus pour effectuer une attaque au corps à corps avec l'extrémité opposée de l'arme. Cette attaque utilise le même modificateur de capacité que l'attaque principale et inflige 1d4 dégâts contondants.\n• D'autres créatures provoquent une attaque d'opportunité de votre part lorsqu'elles entrent dans la portée que vous avez en brandissant une arme d'hast. FightingStyle/&PolearmExpertTitle=Maître d'arme d'hast FightingStyle/&PugilistDescription=Vos frappes à mains nues infligent 1d4 dégâts contondants supplémentaires et vous pouvez frapper avec votre main secondaire en tant qu'action bonus. Vous pouvez pousser comme une action bonus si vous n'avez pas d'autre arme ou bouclier. diff --git a/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt index 7a85890d21..829934e2c0 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Others-fr.txt @@ -281,6 +281,8 @@ Screen/&RangerSpellTitle=Ranger Screen/&RepertoireHeaderFormat={0} Screen/&RoguishSpellDescription=Ce sort a été accordé par votre archétype Roguish et est considéré comme connu de vous. Screen/&RoguishSpellTitle=Coquin +Screen/&SpellAlternatePointsCostTooltip={0} points +Screen/&SpellAlternatePointsTooltip=Il vous reste {0} points de sort. Screen/&SpellSlotsUsedLongDescription=Vous avez dépensé {0} emplacement(s) de sort à ce niveau. Screen/&SpellSlotsUsedShortDescription=Vous avez dépensé {0} emplacement(s) magique(s) de pacte. Screen/&SpellSlotsUsedShortLongDescription=Vous avez dépensé {0} emplacement(s) de magie de pacte et {1} emplacement(s) de sort à ce niveau. diff --git a/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt index d67dba3f76..da094e1b4b 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Settings-fr.txt @@ -42,6 +42,7 @@ ModUi/&Bestiary=Bestiaire ModUi/&BestowCurseNoConcentrationRequiredForSlotLevel5OrAbove=Accorder une malédiction ne nécessite pas de concentration lorsqu'il est lancé avec un emplacement de sort L5+. ModUi/&BlindedConditionDontAllowAttackOfOpportunity=La condition Aveuglé ne permet pas l'attaque d'opportunité. ModUi/&Blueprints=Plans +ModUi/&Camera=Caméra : ModUi/&Campaigns=Campagnes : ModUi/&CampaignsAndLocations=Campagnes et emplacements : ModUi/&Category=Catégorie @@ -118,6 +119,7 @@ ModUi/&EnableCheatMenu=Activer le menu des astuces ModUi/&EnableCustomPortraits=Activer les portraits personnalisés ModUi/&EnableCustomPortraitsHelp=• Placez vos portraits personnalisés dans les sous-dossiers Personnel ou PreGen. , nommé d'après le prénom du héros [c'est-à-dire : Anton, Celia, Nialla, etc.]\n• Utiliser PNG images, d'une taille de 256 x 384 pixels, avec un calque de transparence [utilisez GIMP pour de meilleurs résultats] ModUi/&EnableDungeonMakerModdedContent=Activer Dungeon Maker Pro\n[inclut des salles plates, des donjons de 150 x 150 et 200 x 200 et un mélange sans fioritures des ressources de tous les environnements] +ModUi/&EnableElevationCameraToStayAtPosition=Permettre à la caméra d'élévation de rester en position après sa désactivation ModUi/&EnableEpicPointsAndArray=Activez un système et un tableau d'achat épiques de 35 points [17,15,13,12,10,8] [Nécessite un redémarrage] ModUi/&EnableExtendedProficienciesPanelDisplay=Activer l'affichage du panneau de compétences étendues [Tirs arcaniques, infusions, manœuvres et polyvalences]\n[performance frappé sur l'inspection du caractère. utilisez à vos propres risques] ModUi/&EnableFeatsAtEvenLevels=Activer la sélection des exploits aux niveaux 2, 10 et 18 @@ -233,13 +235,15 @@ ModUi/&Monsters=Monstres : ModUi/&MovementGridWidthModifier=Multipliez la largeur de la grille de mouvement par [%] ModUi/&MulticlassKeyHelp=SHIFT cliquez sur un sort pour inverser le type d'emplacement de répertoire par défaut consommé\n[Warlock dépense des emplacements de sorts blancs et d'autres dépensent des verts du pacte] ModUi/&MultiplyTheExperienceGainedBy=Multipliez l'expérience acquise par [%] +ModUi/&NeverMoveCameraOnEnemyTurn=+ La caméra ne bouge jamais pendant les tours ennemis ModUi/&NoExperienceOnLevelUp=Aucune expérience n'est requise pour passer au niveau supérieur ModUi/&OfferAdditionalLoreFriendlyNames=Proposer des noms supplémentaires conviviaux lors de la création de personnages ModUi/&OfficialObscurementRulesCancelAdvDisPairs=+ Annuler l'avantage/inconvénient les paires aveuglées, invisibles et perçues [utile en conjonction avec l'avantage/inconvénient officiel règles] ModUi/&OfficialObscurementRulesHeavilyObscuredAsProjectileBlocker=+ Remplacer les zones fortement obscurcies par des bloqueurs de projectiles [Cloud Kill, Nuage de brouillard , Nuage incendiaire, Tempête de pétales, Tempête de grésil, Nuage puant] ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget=+ Les créatures invisibles sont fortement obscurcies et peuvent être ciblées, les jets d'attaque contre la créature ont un désavantage et les jets d'attaque de la créature ont un avantage ModUi/&OfficialObscurementRulesMagicalDarknessAsProjectileBlocker=+ Changer les zones obscurcies par magie en bloqueurs de projectiles [n'importe quelle source de l'effet du sort Obscurité] -ModUi/&OfficialObscurementRulesTweakMonsters=+ Ajoutez Darkvision, BlindSight et TrueSight aux monstres et aux PNJ lorsque cela est approprié\n [collections de paramètres MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] +ModUi/&OfficialObscurementRulesTweakMonsters=+ Ajoutez Darkvision, BlindSight et TrueSight aux monstres et aux PNJ lorsque cela est approprié +ModUi/&OfficialObscurementRulesTweakMonstersHelp=[collections de paramètres MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] ModUi/&OnlyShowMostPowerfulUpcastConjuredElementalOrFey=+ Afficher uniquement les créatures les plus puissantes de la liste de conjuration ModUi/&OutlineGridWidthModifier=Multipliez la largeur de la grille de contour par [%] ModUi/&OutlineGridWidthSpeed=Multipliez la vitesse d'animation de la grille de contour par [%] @@ -276,6 +280,7 @@ ModUi/&SelectTabletop=Sélectionnez une table ModUi/&SenseNormalVisionRangeMultiplier=Modifier la portée de la Vision normale [uniquement en bataille] ModUi/&Services=Prestations de service ModUi/&SetBeltOfDwarvenKindBeardChances=Ceinture des nains chances d'apparition de la barbe +ModUi/&SetElevationCameraMaxHeightBy=Augmenter la hauteur maximale de la caméra d'élévation de ModUi/&SettingsExport=Exporter ModUi/&SettingsHelp=• En tant qu'hôte, vous pouvez exporter votre configuration actuelle, ouvrir le dossier des exportations et la partager facilement avec vos pairs.\n• En tant qu'invité, vous pouvez ouvrir le dossier des exportations, coller le fichier partagé depuis l'hôte et le charger sur [Redémarrage requis] ModUi/&SettingsLoad=• Charger un paramètre exporté @@ -317,6 +322,8 @@ ModUi/&UnlockGlowingEyeColors=Ajoutez des couleurs d'yeux éclatantes ModUi/&UnlockMarkAndTattoosForAllCharacters=Débloquez les marques et tatouages d'origine Sorcier pour tous les personnages. ModUi/&UnlockSkinColors=Débloquez les couleurs de peau ModUi/&Update=Mise à jour +ModUi/&UseAlternateSpellPointsSystem=Utiliser les règles officielles des variantes de points de sort +ModUi/&UseAlternateSpellPointsSystemHelp=[Vous disposez d'une réserve de points de sort qui augmente avec le niveau du lanceur de sorts\nL01 : 04 L02 : 06 L03 : 14 L04 : 17 L05 : 27 L06 : 32 L07 : < color=white>38 L08 : 44 L09 : 57 L10 : 64\nL11 : 73 L12 : 73 L13 : 83 L14 : 83 L15 : 94 L16 : 94 L17 : 107 L18 : 114 L19 : 123 L20 : 133\nLe coût pour lancer des sorts est SL1 : 2 SL2 : 3 SL3 : 5 SL4 : 6 SL5 : 7 SL6 : 9 SL7 : 10 SL8 : 11 SL9 : 13\nLes fonctionnalités de récupération des créneaux de repos courts ne seront pas déclenchées avec ce système ] ModUi/&UseElfFaceModelsOnTieflings=Utilisez des modèles de visage Elfe sur les Tieflings ModUi/&UseHeightOneCylinderEffect=Utilisez un effet de cylindre de hauteur 1 lors du lancement de Tentacules noires, enchevêtrement, graisse [carré] ou Pic de croissance [rond] ModUi/&UseMathFlankingRules=+ Utilisez des calculs précis pour déterminer le contournement [peut avoir un impact sur les performances sur les machines lentes] @@ -326,6 +333,7 @@ ModUi/&UseOfficialFlankingRulesAlsoForRanged=+ Activer également les attaque ModUi/&UseOfficialFlankingRulesAlsoForReach=+ Activer également les attaques par portée [désactiver les calculs précis] ModUi/&UseOfficialFlankingRulesButAddAttackModifier=+ Au lieu de l'avantage, accordez +1 au jet d'attaque ModUi/&UseOfficialFoodRationsWeight=Utilisez une ration alimentaire officielle d'un poids de 2 livres. -ModUi/&UseOfficialObscurementRules=Utilisez les règles officielles de combat d'éclairage, d'obscurcissement et de vision\n[l'attaquant qui perçoit le défenseur qui ne peut pas le percevoir obtient l'ADV, et l'attaquant qui ne le perçoit pas percevoir le défenseur qui peut le percevoir obtient un DIS\n les zones fortement obscurcies infligent un état d'aveuglement, où les jets d'attaque contre la créature ont ADV, et les jets d'attaque de la créature ont DIS\n tous les sorts à distance ciblant des individus ne peuvent pas être lancés si l'attaquant n'a pas de vue , sauf ceux qui n'indiquent clairement pas que la vue est requise] +ModUi/&UseOfficialObscurementRules=Utilisez les règles officielles de combat d'éclairage, d'obscurcissement et de vision. +ModUi/&UseOfficialObscurementRulesHelp=[l'attaquant qui perçoit le défenseur qui ne peut pas le percevoir obtient l'ADV, et l'attaquant qui ne perçoit pas le défenseur qui peut le percevoir obtient le DIS\n les zones fortement obscurcies infligent un état aveuglé, où l'attaque lance un jet contre le la créature a ADV, et les jets d'attaque de la créature ont DIS\n tous les sorts à distance ciblant des individus ne peuvent pas être lancés si l'attaquant n'a pas de vue, sauf ceux qui n'indiquent clairement pas que la vue est requise] ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons=Utilisez les règles officielles des petites races lorsque vous maniez des armes lourdes [vos attaques ont un désavantage] ModUi/&Visuals=Visuels : [Nécessite un redémarrage] diff --git a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt index bf06db0454..55e56d3c16 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/Spells/Spells04-fr.txt @@ -13,6 +13,18 @@ Condition/&ConditionElementalBaneTitle=Fléau élémentaire : {0} Condition/&ConditionIrresistiblePerformanceDescription=Vous ne pouvez effectuer aucune action nécessitant vos mains ou votre bouche, mais vous pouvez autrement agir normalement. Condition/&ConditionIrresistiblePerformanceTitle=Dinah Moe Humm Condition/&ConditionPsionicBlastTitle=Esprit confus +Condition/&ConditionSickeningRadianceDescription=Vous émettez une faible lumière dans un rayon de 1,50 mètre. Cette lumière vous empêche d’être invisible. +Condition/&ConditionSickeningRadianceExhausted1Description=Vous êtes désavantagé aux tests de capacité. +Condition/&ConditionSickeningRadianceExhausted1Title=Épuisé 1 +Condition/&ConditionSickeningRadianceExhausted2Description=Votre vitesse est divisée par deux et vous avez un désavantage aux tests de capacité. +Condition/&ConditionSickeningRadianceExhausted2Title=Épuisé 2 +Condition/&ConditionSickeningRadianceExhausted3Description=Votre vitesse est réduite de moitié et vous êtes désavantagé aux tests de caractéristiques, aux jets d’attaque et aux jets de sauvegarde. +Condition/&ConditionSickeningRadianceExhausted3Title=Épuisé 3 +Condition/&ConditionSickeningRadianceExhausted4Description=Votre vitesse et vos points de vie maximum sont réduits de moitié, et vous êtes désavantagé aux tests de caractéristiques, aux jets d'attaque et aux jets de sauvegarde. +Condition/&ConditionSickeningRadianceExhausted4Title=Épuisé 4 +Condition/&ConditionSickeningRadianceExhausted5Description=Votre vitesse est de 0, vos points de vie maximum sont réduits de moitié et vous êtes désavantagé aux tests de caractéristiques, aux jets d'attaque et aux jets de sauvegarde. +Condition/&ConditionSickeningRadianceExhausted5Title=Épuisé 5 +Condition/&ConditionSickeningRadianceTitle=Radiance écoeurante Condition/&ConditionStaggeringSmiteEnemyDescription=Vous êtes touché par des dégâts psychiques. Condition/&ConditionStaggeringSmiteEnemyTitle=Châtiment stupéfiant Condition/&ConditionTreeForestGuardianDescription=Vous gagnez 10 points de vie temporaires, vous effectuez des jets de sauvegarde de Constitution avec avantage et vous effectuez des jets d'attaque basés sur la Dextérité et la Sagesse avec avantage. @@ -50,6 +62,8 @@ Spell/&PsionicBlastDescription=Vous déchaînez une vague de puissance mentale d Spell/&PsionicBlastTitle=Explosion psionique Spell/&PsychicLanceDescription=Vous lancez une lance scintillante de pouvoir psychique depuis votre front sur une créature que vous pouvez voir à portée. Il doit réussir un jet de sauvegarde d'Intelligence ou subir 7d6 dégâts psychiques et être neutralisé jusqu'à la fin de votre prochain tour. En cas de sauvegarde réussie, la créature subit la moitié des dégâts et n'est pas incapable d'agir. Aux niveaux supérieurs. Lorsque vous lancez ce sort en utilisant un emplacement de sort de niveau 4 ou supérieur, les dégâts augmentent de 1d6 pour chaque niveau d'emplacement supérieur au 4e. Spell/&PsychicLanceTitle=Lance psychique de Raulothim +Spell/&SickeningRadianceDescription=Une faible lumière se propage dans une sphère de 9 mètres de rayon centrée sur un point que vous choisissez à portée. La lumière se propage dans les coins et dure jusqu'à la fin du sort. Lorsqu'une créature entre dans la zone du sort pour la première fois au cours d'un tour ou y commence son tour, cette créature doit réussir un jet de sauvegarde de Constitution ou subir 4d10 dégâts radiants, et elle subit un niveau d'épuisement et émet une faible lumière dans un instant. Rayon de 5 pieds. Cette lumière empêche la créature de bénéficier de l'invisibilité. La lumière et tout niveau d'épuisement provoqué par ce sort disparaissent à la fin du sort. +Spell/&SickeningRadianceTitle=Éclat écœurant Spell/&StaggeringSmiteDescription=La prochaine fois que vous toucherez une créature avec une attaque avec une arme pendant la durée de ce sort, votre arme transperce à la fois le corps et l'esprit, et l'attaque inflige 4d6 dégâts psychiques supplémentaires à la cible. La cible doit effectuer un jet de sauvegarde de Sagesse. En cas d'échec, il est désavantagé aux jets d'attaque et aux tests de caractéristiques, et ne peut pas réagir jusqu'à la fin de son prochain tour. Spell/&StaggeringSmiteTitle=Châtiment stupéfiant Spell/&TreeForestGuardianDescription=Votre peau semble aboyer, des feuilles poussent sur vos cheveux et vous bénéficiez des avantages suivants :\n• Vous gagnez 10 points de vie temporaires.\n• Vous effectuez des jets de sauvegarde de Constitution avec avantage.\n• Vous gagnez de la Dextérité et de la Sagesse. -les jets d'attaque basés sur l'avantage sont avantageux.\n• Les créatures à moins de 9 mètres de vous doivent effectuer un jet de sauvegarde de Force ou être gênées pendant la durée du sort. Ils peuvent réessayer la sauvegarde à chaque début de tour. diff --git a/SolastaUnfinishedBusiness/Translations/fr/SubClasses/CollegeOfAudacity-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/SubClasses/CollegeOfAudacity-fr.txt index b0c8c080d3..b9154726cf 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/SubClasses/CollegeOfAudacity-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/SubClasses/CollegeOfAudacity-fr.txt @@ -1,26 +1,27 @@ -Action/&AudaciousWhirlToggleDescription=Activer/désactiver Audacious Whirl -Action/&AudaciousWhirlToggleTitle=Tourbillon audacieux -Action/&MasterfulWhirlToggleDescription=Activer/désactiver Masterful Whirl -Action/&MasterfulWhirlToggleTitle=Tourbillon magistral -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Faites tourner le rouleau jusqu'à AC. -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Tourbillon défensif -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Chaque fois que vous effectuez l'action Attaque à votre tour, votre vitesse de marche augmente de 3 mètres jusqu'à la fin du tour, et si une attaque avec une arme de mêlée que vous effectuez dans le cadre de cette action touche une créature, vous pouvez dépenser une utilisation de votre arme bardique. Inspiration pour que l'arme inflige des dégâts supplémentaires à la cible que vous touchez. Les dégâts sont égaux au nombre obtenu sur le dé d'inspiration bardique. Vous choisissez également une manœuvre particulière :\n• Tourbillon défensif : vous ajoutez le jet de dé d'inspiration bardique à votre CA jusqu'au début de votre prochain tour.\n• Tourbillon tranchant. b> : vous infligez des dégâts supplémentaires à toutes les autres créatures ennemies à moins de 1,50 mètre de vous.\n• Tourbillon mobile : vous bénéficiez des avantages de désengagement jusqu'à la fin de votre tour. -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Tourbillon audacieux +Action/&AudaciousWhirlToggleDescription=Activer/désactiver Blade Flourish +Action/&AudaciousWhirlToggleTitle=Épanouissement de la lame +Action/&MasterfulWhirlToggleDescription=Activer/désactiver Master's Flourish +Action/&MasterfulWhirlToggleTitle=L'épanouissement du Maître +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=S'épanouir rouler jusqu'à AC. +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Épanouissement défensif +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Chaque fois que vous effectuez l'action Attaque à votre tour, votre vitesse de marche augmente de 3 mètres jusqu'à la fin du tour, et si une attaque avec une arme de mêlée que vous effectuez dans le cadre de cette action touche une créature, vous pouvez dépenser une utilisation de votre arme bardique. Inspiration pour que l'arme inflige des dégâts supplémentaires à la cible que vous touchez. Les dégâts sont égaux au nombre obtenu sur le dé d’inspiration bardique. Vous choisissez également une manœuvre particulière :\n• Épanouissement défensif : vous ajoutez le jet de dé d'inspiration bardique à votre CA jusqu'au début de votre prochain tour.\n• Épanouissement tranchant. b> : vous infligez des dégâts supplémentaires à toutes les autres créatures ennemies à moins de 1,50 pieds de vous.\n• Épanouissement mobile : vous bénéficiez des avantages du désengagement jusqu'à la fin de votre tour. +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Épanouissement de la lame Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=Vous gagnez en maîtrise avec l'armure moyenne et le cimeterre. Vous pouvez également utiliser votre arme comme foyer de lancement de sorts pour vos sorts de barde. Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=Compétences bonus -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Chaque fois que vous utilisez une option Audacious Whirl, vous pouvez lancer un D6 et l'utiliser au lieu de dépenser un dé d'inspiration bardique. -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Tourbillon magistral +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Chaque fois que vous utilisez une option Blade Flourish, vous pouvez lancer un D6 et l’utiliser au lieu de dépenser un dé d’inspiration bardique. +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=L'épanouissement du Maître Feature/&FightingStyleChoiceCollegeOfAudacityDescription=Vous adoptez un style de combat particulier comme spécialité. Choisissez soit le duel, soit le combat à deux armes. Feature/&FightingStyleChoiceCollegeOfAudacityTitle=Style de combat -Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Vous pouvez dépenser une utilisation de votre Inspiration bardique pour que l'arme inflige des dégâts supplémentaires à la cible que vous touchez. Les dégâts sont égaux au nombre obtenu sur le dé d'inspiration bardique ou à un D6 s'il s'agit d'un tourbillon magistral. Vous ajoutez également le nombre obtenu à votre CA jusqu'au début de votre prochain tour. -Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Tourbillon défensif -Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Vous pouvez dépenser une utilisation de votre Inspiration bardique pour que l'arme inflige des dégâts supplémentaires à la cible que vous touchez. Les dégâts sont égaux au nombre obtenu sur le dé d'inspiration bardique ou à un D6 s'il s'agit d'un tourbillon magistral. Vous bénéficiez des avantages du désengagement jusqu'à la fin de votre tour. -Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Tourbillon mobile -Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Vous pouvez dépenser une utilisation de votre Inspiration bardique pour que l'arme inflige des dégâts supplémentaires à la cible que vous touchez et à toutes les autres créatures ennemies à moins de 1,50 mètre de vous. Les dégâts sont égaux au nombre obtenu sur le dé d'inspiration bardique ou à un D6 s'il s'agit d'un tourbillon magistral. -Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Tourbillon tranchant -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} peut amener l'arme à infliger des dégâts supplémentaires à la cible. Les dégâts sont égaux au nombre obtenu sur le dé d'Inspiration bardique ou à un D6 s'il s'agit d'un Tourbillon magistral. -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Tourbillon -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Tourbillon -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Tourbillon -Subclass/&CollegeOfAudacityDescription=Les bardes du Collège des Épées divertissent grâce à des prouesses audacieuses en matière d'armes. Ils effectuent des cascades telles que avaler des épées, lancer des couteaux, jongler et simuler des combats. Bien qu'ils utilisent leurs armes pour se divertir, ils sont également des guerriers hautement qualifiés et compétents. +Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Vous pouvez dépenser une utilisation de votre Inspiration bardique pour que l'arme inflige des dégâts supplémentaires à la cible que vous touchez. Les dégâts sont égaux au nombre obtenu sur le dé d'inspiration bardique ou à un D6 en cas d'épanouissement du maître. Vous ajoutez également le nombre obtenu à votre CA jusqu'au début de votre prochain tour. +Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Épanouissement défensif +Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Vous pouvez dépenser une utilisation de votre Inspiration bardique pour que l'arme inflige des dégâts supplémentaires à la cible que vous touchez. Les dégâts sont égaux au nombre obtenu sur le dé d'inspiration bardique ou à un D6 en cas d'épanouissement du maître. Vous bénéficiez des avantages du désengagement jusqu'à la fin de votre tour. +Feature/&PowerCollegeOfAudacityMobileWhirlTitle=S'épanouir sur mobile +Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Vous pouvez dépenser une utilisation de votre Inspiration bardique pour que l'arme inflige des dégâts supplémentaires à la cible que vous touchez et à toutes les autres créatures ennemies à moins de 1,50 mètre de vous. Les dégâts sont égaux au nombre obtenu sur le dé d'inspiration bardique ou à un D6 en cas d'épanouissement du maître. +Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=S'épanouir +Feedback/&CollegeOfAudacityDefensiveWhirl={0} lance un dé {2}, ajoutant {3} à la CA. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} peut amener l'arme à infliger des dégâts supplémentaires à la cible. Les dégâts sont égaux au nombre obtenu sur le dé d'Inspiration bardique ou à un D6 en cas d'Épanouissement du Maître. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Fleurir +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Fleurir +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Fleurir +Subclass/&CollegeOfAudacityDescription=Les bardes du Collège des Épées divertissent grâce à des prouesses audacieuses en matière d'armes. Ils effectuent des cascades telles que avaler des épées, lancer des couteaux, jongler et simuler des combats. Bien qu’ils utilisent leurs armes pour se divertir, ils sont également des guerriers hautement qualifiés et compétents. Subclass/&CollegeOfAudacityTitle=Collège des Épées diff --git a/SolastaUnfinishedBusiness/Translations/fr/SubClasses/MartialTactician-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/SubClasses/MartialTactician-fr.txt index 00ef0b85fa..f4674542b9 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/SubClasses/MartialTactician-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/SubClasses/MartialTactician-fr.txt @@ -12,8 +12,8 @@ Feature/&FeatureSetTacticianHonedCraftDescription=Gagnez en expertise avec une c Feature/&FeatureSetTacticianHonedCraftTitle=Compétence aiguisée Feature/&FeatureSetTacticianSharpMindDescription=Maîtrisez une compétence de votre choix. Feature/&FeatureSetTacticianSharpMindTitle=Esprit vif -Feature/&FeatureSetTacticianTacticalAwarenessDescription=Tant que vous n'êtes pas incapable d'agir, vous bénéficiez des avantages suivants :\n• Une fois par tour, votre attaque avec une arme inflige des dégâts supplémentaires égaux à votre bonus de maîtrise.\n• Les attaques d'opportunité que vous effectuez sont effectuées avec avantage.\n• Les attaques d'opportunité contre vous se font avec un désavantage. -Feature/&FeatureSetTacticianTacticalAwarenessTitle=Conscience tactique +Feature/&FeatureSetTacticianTacticalAwarenessDescription=Durant le combat, vous récupérez un dé de supériorité au début de chacun de vos tours. +Feature/&FeatureSetTacticianTacticalAwarenessTitle=Maître de la guerre Feature/&FeatureTacticianGambitDieSizeD10Description=Votre dé de supériorité passe à D10. Feature/&FeatureTacticianGambitDieSizeD10Title=Taille du dé de supériorité (d10) Feature/&FeatureTacticianGambitDieSizeD12Description=Votre dé de supériorité passe à D12. diff --git a/SolastaUnfinishedBusiness/Translations/fr/SubClasses/PathOfTheBeast-fr.txt b/SolastaUnfinishedBusiness/Translations/fr/SubClasses/PathOfTheBeast-fr.txt index 2417fea6a9..729eac30fa 100644 --- a/SolastaUnfinishedBusiness/Translations/fr/SubClasses/PathOfTheBeast-fr.txt +++ b/SolastaUnfinishedBusiness/Translations/fr/SubClasses/PathOfTheBeast-fr.txt @@ -24,7 +24,7 @@ Feature/&PowerPathOfTheBeastFormOfTheBeastTailTitle=Forme : Queue Feature/&PowerPathOfTheBeastFormOfTheBeastTitle=Forme de la bête Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeDescription=La cible attaque une autre créature de votre choix à sa portée. Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeTitle=Fureur infectieuse : Frappe obligée -Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Lorsque vous frappez une créature avec vos armes naturelles alors que vous êtes enragé, la bête en vous peut maudire votre cible avec une fureur enragée. La cible doit réussir un jet de sauvegarde de Sagesse (DD égal à 8 + votre modificateur de Constitution + votre bonus de maîtrise) ou subir l'un des effets suivants (au choix). +Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Lorsque vous frappez une créature avec vos armes naturelles alors que vous êtes enragé, la bête en vous peut maudire votre cible avec une fureur enragée. La cible doit réussir un jet de sauvegarde de Sagesse (DD égal à 8 + votre modificateur de Constitution + votre bonus de maîtrise) ou subir l'un des effets suivants (votre choix).\n\nVous pouvez utiliser cette fonctionnalité plusieurs fois. égal à votre bonus de maîtrise, et vous récupérez toutes les utilisations dépensées lorsque vous terminez un repos long. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashDescription=La cible subit 2d12 dégâts psychiques. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashTitle=Fureur infectieuse : Mindlash Feature/&PowerPathOfTheBeastInfectiousFuryTitle=Fureur contagieuse diff --git a/SolastaUnfinishedBusiness/Translations/it/Feats/MeleeCombat-it.txt b/SolastaUnfinishedBusiness/Translations/it/Feats/MeleeCombat-it.txt index b7c3d95d48..c4af78b834 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Feats/MeleeCombat-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Feats/MeleeCombat-it.txt @@ -34,8 +34,6 @@ Feat/&FeatFencerDescription=Se effettui l'azione Attacco nel tuo turno mentre im Feat/&FeatFencerTitle=Schermidore Feat/&FeatGreatWeaponDefenseDescription=Combatti strenuamente con armi di grandi dimensioni, ottenendo i seguenti vantaggi:\n• Quando riduci una creatura a 0 punti ferita o sferri un colpo critico con un'arma da mischia, la tua velocità di movimento aumenta di 15 piedi fino alla fine del tuo turno.{99 }• Quando effettui l'azione Attacco mentre impugni un'arma pesante da mischia o versatile con due mani, guadagni +2CA fino all'inizio del tuo turno successivo. Perdi questo beneficio se equipaggi un'arma o uno scudo diversi. Feat/&FeatGreatWeaponDefenseTitle=Fervore di battaglia -Feat/&FeatHammerThePointDescription=Sai come focalizzarti e concentrarti sullo stesso punto. Dopo aver effettuato un tiro per colpire contro un bersaglio, ottieni +1 ai tiri per colpire e per i danni contro questo bersaglio fino alla fine del tuo turno [stack]. -Feat/&FeatHammerThePointTitle=Martella il punto Feat/&FeatLongswordFinesseDescription=Tu discendi da un maestro della spada lunga e parte di quella maestria ti è stata trasmessa. Ottieni i seguenti vantaggi:\n• Aumenta la tua Destrezza di 1, fino a un massimo di 20.\n• Mentre impugni una spada lunga, ottieni un bonus di +1 alla classe armatura.\n• La spada lunga ha il proprietà di finezza quando lo maneggi. Feat/&FeatLongswordFinesseTitle=Finezza della spada lunga Feat/&FeatOldTacticsDexDescription=Aumenta la tua Destrezza di 1. Una volta per round, quando un nemico disteso nel raggio della tua arma da mischia si alza, puoi effettuare un attacco di opportunità contro il bersaglio. diff --git a/SolastaUnfinishedBusiness/Translations/it/Feats/OtherFeats-it.txt b/SolastaUnfinishedBusiness/Translations/it/Feats/OtherFeats-it.txt index 7c71e21ac0..14fedbfff1 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Feats/OtherFeats-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Feats/OtherFeats-it.txt @@ -8,8 +8,6 @@ Feat/&FeatAlertDescription=Sempre in allerta per il pericolo, ottieni i seguenti Feat/&FeatAlertTitle=Mettere in guardia Feat/&FeatArcaneArcherAdeptDescription=Possiedi la magia arcana e l'addestramento con l'arco che ti consentono di eseguire speciali manovre di combattimento. Feat/&FeatArcaneArcherAdeptTitle=Adepto dell'arciere arcano -Feat/&FeatAstralArmsDescription=Aumenta la tua Saggezza di 1, fino a un massimo di 20.\nQuando effettui un colpo senz'armi nel tuo turno, la tua portata è di 3 metri. Altre creature provocano un attacco di opportunità da parte tua quando entrano nella portata che hai con disarmato . -Feat/&FeatAstralArmsTitle=Portata Astrale Feat/&FeatAthleteDexDescription=Hai seguito un allenamento fisico approfondito per ottenere i seguenti vantaggi:\n• Aumenta la tua Destrezza di 1, fino a un massimo di 20.\n• Quando sei disteso, alzarti non ti costa movimento.\n• Arrampicare non ti costa movimento extra.\n• Ottieni competenza con abilità o esperienza in Atletica leggera se sei già competente. Feat/&FeatAthleteDexTitle=Atleta [Dex] Feat/&FeatAthleteStrDescription=Hai seguito un allenamento fisico approfondito per ottenere i seguenti vantaggi:\n• Aumenta la tua Forza di 1, fino a un massimo di 20.\n• Quando sei disteso, alzarti non ti costa movimento.\n• Arrampicare non ti costa movimento extra.\n• Ottieni competenza con abilità o esperienza in Atletica leggera se sei già competente. diff --git a/SolastaUnfinishedBusiness/Translations/it/Feats/RangedCombat-it.txt b/SolastaUnfinishedBusiness/Translations/it/Feats/RangedCombat-it.txt index 14ffdae236..50cde252e9 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Feats/RangedCombat-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Feats/RangedCombat-it.txt @@ -10,8 +10,6 @@ Feat/&FeatDeadeyeDescription=Hai imparato a barattare la precisione con colpi pi Feat/&FeatDeadeyeTitle=Tiratore scelto Feat/&FeatRangedExpertDescription=Il tuo addestramento da esperto con le armi a distanza ti garantisce questi vantaggi:\n• Gli attacchi a distanza corpo a corpo non impongono svantaggi.\n• Se effettui l'azione di attacco nel tuo turno, puoi effettuare un attacco bonus a distanza con una mano aggiungendo il tuo modificatore di attributo al danno. Feat/&FeatRangedExpertTitle=Esperto di balestra -Feat/&FeatSteadyAimDescription=Aumenta la tua Destrezza di 1, fino a un massimo di 20. Come azione bonus, ti concedi vantaggio al tuo prossimo tiro per colpire nel turno corrente. Puoi utilizzare questa azione bonus solo se non ti sei mosso durante questo turno e, dopo aver utilizzato l'azione bonus, la tua velocità sarà pari a 0 fino alla fine del turno corrente. -Feat/&FeatSteadyAimTitle=Mira stabile Feature/&PowerFeatSteadyAimDescription=Come azione bonus, ti concedi un vantaggio sul tuo prossimo tiro per colpire nel turno corrente. Puoi utilizzare questa azione bonus solo se non ti sei mosso durante questo turno e, dopo aver utilizzato l'azione bonus, la tua velocità sarà pari a 0 fino alla fine del turno corrente. Feature/&PowerFeatSteadyAimTitle=Mira stabile Tooltip/&DeadeyeConcentration=Disabilita il tiratore scelto diff --git a/SolastaUnfinishedBusiness/Translations/it/FightingStyles-it.txt b/SolastaUnfinishedBusiness/Translations/it/FightingStyles-it.txt index f98b4f3944..f347a5e190 100644 --- a/SolastaUnfinishedBusiness/Translations/it/FightingStyles-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/FightingStyles-it.txt @@ -22,8 +22,6 @@ FightingStyle/&LungerDescription=La portata della tua arma da mischia aumenta di FightingStyle/&LungerTitle=Polmoni FightingStyle/&MercilessDescription=Quando riduci un bersaglio a 0 HP usando un attacco con arma da mischia nel tuo turno, i nemici entro un raggio dal bersaglio abbattuto pari alla metà del tuo bonus di competenza (arrotondato per eccesso) che possono vedere il bersaglio devono effettuare un tiro salvezza su Saggezza (CD 8 + il tuo bonus di competenza + il tuo modificatore di Forza) o avrai paura di te fino alla fine del tuo turno successivo. Se l'attacco innescante è un colpo critico, il raggio è invece pari al tuo bonus di competenza. FightingStyle/&MercilessTitle=Spietato -FightingStyle/&MonkShieldExpertDescription=Ottieni competenza nello Scudo e non ti impediscono di effettuare attacchi senz'armi con quella mano. Inoltre, tutte le tue abilità da monaco funzionano anche quando impugni uno scudo. -FightingStyle/&MonkShieldExpertTitle=Addestramento allo scudo monastico FightingStyle/&PolearmExpertDescription=Il tuo addestramento da esperto con un'arma ad asta ti garantisce questi vantaggi:\n• Quando esegui l'azione Attacco e attacchi solo con un'arma ad asta, puoi utilizzare un'azione bonus per effettuare un attacco in mischia con l'estremità opposta dell'arma. Questo attacco utilizza lo stesso modificatore di abilità dell'attacco primario e infligge 1d4 danni contundenti.\n• Altre creature provocano un attacco di opportunità da parte tua quando entrano nella portata che hai quando impugni un'arma ad asta. FightingStyle/&PolearmExpertTitle=Maestro dell'arma ad asta FightingStyle/&PugilistDescription=I tuoi colpi senz'armi infliggono 1d4 danni contundenti aggiuntivi e puoi dare un pugno con la mano secondaria come azione bonus. Puoi spingere come azione bonus se non hai altre armi o scudi. diff --git a/SolastaUnfinishedBusiness/Translations/it/Others-it.txt b/SolastaUnfinishedBusiness/Translations/it/Others-it.txt index a67d2fd39a..4a2e4f39a9 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Others-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Others-it.txt @@ -281,6 +281,8 @@ Screen/&RangerSpellTitle=Ranger Screen/&RepertoireHeaderFormat={0} Screen/&RoguishSpellDescription=Questo incantesimo ti è stato concesso dal tuo archetipo Ladro ed è considerato noto a te. Screen/&RoguishSpellTitle=Furfante +Screen/&SpellAlternatePointsCostTooltip={0} punti +Screen/&SpellAlternatePointsTooltip=Ti restano {0} punti incantesimo. Screen/&SpellSlotsUsedLongDescription=Hai speso {0} slot incantesimo a questo livello. Screen/&SpellSlotsUsedShortDescription=Hai speso {0} slot magico del patto. Screen/&SpellSlotsUsedShortLongDescription=Hai speso {0} slot magico del patto e {1} slot incantesimo a questo livello. diff --git a/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt b/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt index 899d45aef1..524445d039 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Settings-it.txt @@ -42,6 +42,7 @@ ModUi/&Bestiary=Bestiario ModUi/&BestowCurseNoConcentrationRequiredForSlotLevel5OrAbove=Lancia Maledizione non richiede concentrazione se lanciato con uno slot incantesimo L5+ ModUi/&BlindedConditionDontAllowAttackOfOpportunity=La condizione Accecato non consente attacchi di opportunità ModUi/&Blueprints=Progetti +ModUi/&Camera=Fotocamera: ModUi/&Campaigns=Campagne: ModUi/&CampaignsAndLocations=Campagne e posizioni: ModUi/&Category=Categoria @@ -118,6 +119,7 @@ ModUi/&EnableCheatMenu=Abilita il menu dei trucchi ModUi/&EnableCustomPortraits=Abilita ritratti personalizzati ModUi/&EnableCustomPortraitsHelp=• Inserisci i tuoi ritratti personalizzati nelle sottocartelle Personale o PreGen , che prende il nome dal nome dell'eroe [es.: Anton, Celia, Nialla, ecc.]\n• Usa PNG immagini, dimensioni 256 x 384 pixel, con un livello di trasparenza [usa GIMP per i migliori risultati] ModUi/&EnableDungeonMakerModdedContent=Abilita Dungeon Maker Pro\n[include stanze piatte, dimensioni di dungeon 150x150 e 200x200 e senza fronzoli mescolando risorse da tutti gli ambienti] +ModUi/&EnableElevationCameraToStayAtPosition=Abilita la telecamera di elevazione a rimanere nella posizione dopo la disattivazione ModUi/&EnableEpicPointsAndArray=Abilita un sistema di acquisto epico da 35 punti e un array [17,15,13,12,10,8] [Richiede il riavvio] ModUi/&EnableExtendedProficienciesPanelDisplay=Abilita la visualizzazione del pannello delle competenze estese [Tiri arcani, infusioni, manovre e versatilità]\n[prestazioni colpo sull'ispezione del carattere. utilizzare a proprio rischio] ModUi/&EnableFeatsAtEvenLevels=Abilita la selezione dei talenti ai livelli 2, 10 e 18 @@ -233,13 +235,15 @@ ModUi/&Monsters=Mostri: ModUi/&MovementGridWidthModifier=Moltiplica la larghezza della griglia di movimento per [%] ModUi/&MulticlassKeyHelp=MAIUSC fare clic su un incantesimo inverte il tipo di slot di repertorio predefinito consumato\n[Stregone spende slot incantesimo bianchi e altri spendono quelli verdi del patto] ModUi/&MultiplyTheExperienceGainedBy=Moltiplica l'esperienza acquisita per [%] +ModUi/&NeverMoveCameraOnEnemyTurn=+ La telecamera non si muove mai durante i turni nemici ModUi/&NoExperienceOnLevelUp=Non è richiesta alcuna esperienza per salire di livello ModUi/&OfferAdditionalLoreFriendlyNames=Offri ulteriori nomi amichevoli della tradizione sulla creazione del personaggio ModUi/&OfficialObscurementRulesCancelAdvDisPairs=+ Annulla vantaggio/svantaggio coppie accecate, invisibili e percepite [utile insieme al vantaggio/svantaggio ufficiale regole] ModUi/&OfficialObscurementRulesHeavilyObscuredAsProjectileBlocker=+ Cambia le aree fortemente oscurate in bloccanti di proiettili [Nuvola Uccidi, Nuvola di Nebbia , Nube incendiaria, Tempesta di petali, Tempesta di nevischio, Nuvola Puzzolente] ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget=+ Le creature invisibili sono pesantemente oscurate e possono essere bersagli, i tiri per colpire contro la creatura hanno svantaggio e i tiri per colpire della creatura hanno vantaggio ModUi/&OfficialObscurementRulesMagicalDarknessAsProjectileBlocker=+ Cambia le aree magicamente oscurate in bloccanti dei proiettili [qualsiasi fonte dell'effetto dell'incantesimo Oscurità] -ModUi/&OfficialObscurementRulesTweakMonsters=+ Aggiungi Scurovisione, BlindSight e TrueSight a mostri e NPC quando appropriato\n [raccolte di impostazioni MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] +ModUi/&OfficialObscurementRulesTweakMonsters=+ Aggiungi Scurovisione, BlindSight e TrueSight a mostri e NPC quando appropriato +ModUi/&OfficialObscurementRulesTweakMonstersHelp=[raccolte di impostazioni MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] ModUi/&OnlyShowMostPowerfulUpcastConjuredElementalOrFey=+ Mostra solo le creature più potenti nell'elenco degli incantesimi ModUi/&OutlineGridWidthModifier=Moltiplica la larghezza della griglia del contorno per [%] ModUi/&OutlineGridWidthSpeed=Moltiplica la velocità di animazione della griglia del contorno per [%] @@ -276,6 +280,7 @@ ModUi/&SelectTabletop=Seleziona Da tavolo ModUi/&SenseNormalVisionRangeMultiplier=Modifica il raggio Visione normale [solo nelle battaglie] ModUi/&Services=Servizi ModUi/&SetBeltOfDwarvenKindBeardChances=Cintura della razza nanica possibilità di apparizione della barba +ModUi/&SetElevationCameraMaxHeightBy=Aumenta l'altezza massima della telecamera di elevazione di ModUi/&SettingsExport=Esportare ModUi/&SettingsHelp=• Come host puoi esportare la tua configurazione attuale, aprire la cartella delle esportazioni e condividerla facilmente con i tuoi colleghi\n• Come ospite puoi aprire la cartella delle esportazioni, incollare il file condiviso dall'host e caricarlo [Richiede il riavvio] ModUi/&SettingsLoad=• Caricare un'impostazione esportata @@ -317,6 +322,8 @@ ModUi/&UnlockGlowingEyeColors=Aggiungi colori luminosi per gli occhi ModUi/&UnlockMarkAndTattoosForAllCharacters=Sblocca i segni di origine e i tatuaggi Stregone per tutti i personaggi ModUi/&UnlockSkinColors=Sblocca i colori della pelle ModUi/&Update=Aggiorna +ModUi/&UseAlternateSpellPointsSystem=Utilizza le regole ufficiali dei varianti punti incantesimo +ModUi/&UseAlternateSpellPointsSystemHelp=[Hai una riserva di punti incantesimo che aumenta con il livello dell'incantatore\nL01: 04 L02: 06 L03 : 14 L04: 17 L05: 27 L06: 32 L07: < color=white>38 L08: 44 L09: 57 L10: 64\nL11: 73 L12: 73 L13: 83 L14: 83 L15: 94 L16: 94 L17: 107 L18: 114 L19: 123 L20: 133\nIl costo per lanciare incantesimi è SL1: 2 SL2: 3 SL3: 5 SL4: 6 SL5: 7 SL6: 9 SL7: 10 SL8: 11 SL9: 13\nLe funzionalità di recupero degli slot di riposo brevi non verranno attivate con questo sistema ] ModUi/&UseElfFaceModelsOnTieflings=Usa i modelli del volto di Elfo su Tiefling ModUi/&UseHeightOneCylinderEffect=Usa un effetto del cilindro di altezza 1 quando lanci Tentacoli neri, Intralciare, Ungere [quadrato] o Picco di crescita [turno] ModUi/&UseMathFlankingRules=+ Utilizza calcoli precisi per determinare il fiancheggiamento [potrebbe avere un impatto sulle prestazioni sulle macchine lente] @@ -326,6 +333,7 @@ ModUi/&UseOfficialFlankingRulesAlsoForRanged=+ Abilita anche gli attacchi a d ModUi/&UseOfficialFlankingRulesAlsoForReach=+ Abilita anche gli attacchi di portata [disabilita matematica precisa] ModUi/&UseOfficialFlankingRulesButAddAttackModifier=+ Invece del vantaggio concedi +1 al tiro per colpire ModUi/&UseOfficialFoodRationsWeight=Usa la razione alimentare ufficiale del peso di 2 libbre -ModUi/&UseOfficialObscurementRules=Utilizza le regole di combattimento ufficiali di illuminazione, oscuramento e visione\n[l'attaccante che percepisce il difensore che non può percepirlo ottiene ADV e l'attaccante che non lo fa percepisce il difensore che può percepirlo ottiene DIS\n le aree fortemente oscurate infliggono una condizione di accecamento, dove i tiri per colpire contro la creatura hanno ADV e i tiri per colpire della creatura hanno DIS\n tutti gli incantesimi a distanza che prendono di mira gli individui non possono essere lanciati se l'attaccante non ha vista , ad eccezione di quelli che chiaramente non indicano che è richiesta la vista] +ModUi/&UseOfficialObscurementRules=Utilizza le regole ufficiali di combattimento illuminazione, oscuramento e visione +ModUi/&UseOfficialObscurementRulesHelp=[l'attaccante che percepisce il difensore che non può percepirlo ottiene ADV, e l'attaccante che non percepisce il difensore che può percepirlo ottiene DIS\n le aree fortemente oscurate infliggono una condizione di accecato, dove i tiri di attacco contro la creatura ha ADV e i tiri per colpire della creatura hanno DIS\n tutti gli incantesimi a distanza che hanno come bersaglio individui non possono essere lanciati se l'attaccante non ha vista, ad eccezione di quelli che chiaramente non indicano che la vista è richiesta] ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons=Utilizza le regole ufficiali delle piccole razze quando impugni armi pesanti [i tuoi attacchi hanno svantaggio] ModUi/&Visuals=Immagini: [Richiede il riavvio] diff --git a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt index 3d70449654..5b06fcb777 100644 --- a/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/Spells/Spells04-it.txt @@ -13,6 +13,18 @@ Condition/&ConditionElementalBaneTitle=Flagello Elementale: {0} Condition/&ConditionIrresistiblePerformanceDescription=Non è possibile eseguire azioni che richiedano l'uso delle mani o della bocca, ma per il resto è possibile agire normalmente. Condition/&ConditionIrresistiblePerformanceTitle=Dinah-Moe Humm Condition/&ConditionPsionicBlastTitle=Mente confusa +Condition/&ConditionSickeningRadianceDescription=Emetti una luce fioca in un raggio di 1,5 metri. Questa luce ti rende impossibile essere invisibile. +Condition/&ConditionSickeningRadianceExhausted1Description=Hai svantaggio alle prove di caratteristica. +Condition/&ConditionSickeningRadianceExhausted1Title=Esausto 1 +Condition/&ConditionSickeningRadianceExhausted2Description=La tua velocità è dimezzata e hai svantaggio nelle prove di abilità. +Condition/&ConditionSickeningRadianceExhausted2Title=Esaurito 2 +Condition/&ConditionSickeningRadianceExhausted3Description=La tua velocità è dimezzata e hai svantaggio alle prove di caratteristica, ai tiri per colpire e ai tiri salvezza. +Condition/&ConditionSickeningRadianceExhausted3Title=Esaurito 3 +Condition/&ConditionSickeningRadianceExhausted4Description=La tua velocità e i tuoi punti ferita massimi sono dimezzati e hai svantaggio nelle prove di caratteristica, nei tiri per colpire e nei tiri salvezza. +Condition/&ConditionSickeningRadianceExhausted4Title=Esaurito 4 +Condition/&ConditionSickeningRadianceExhausted5Description=La tua velocità è 0, i tuoi punti ferita massimi sono dimezzati e hai svantaggio nelle prove di caratteristica, nei tiri per colpire e nei tiri salvezza. +Condition/&ConditionSickeningRadianceExhausted5Title=Esausto 5 +Condition/&ConditionSickeningRadianceTitle=Radianza nauseante Condition/&ConditionStaggeringSmiteEnemyDescription=Sei colpito da un danno psichico. Condition/&ConditionStaggeringSmiteEnemyTitle=Punizione sconcertante Condition/&ConditionTreeForestGuardianDescription=Ottieni 10 punti ferita temporanei, effettui tiri salvezza su Costituzione con vantaggio ed effettui tiri per colpire basati su Destrezza e Saggezza con vantaggio. @@ -50,6 +62,8 @@ Spell/&PsionicBlastDescription=Rilasci un'ondata debilitante di potere mentale i Spell/&PsionicBlastTitle=Esplosione psionica Spell/&PsychicLanceDescription=Scagli una scintillante lancia di potere psichico dalla tua fronte contro una creatura che puoi vedere e che si trova a gittata. Deve riuscire un tiro salvezza su Intelligenza o subire 7d6 danni psichici ed essere incapace fino alla fine del tuo turno successivo. Se il Tiro Salvezza riesce, la creatura subisce la metà dei danni e non diventa Incapace. A livelli più alti. Quando esegui questo incantesimo utilizzando uno slot incantesimo di 4° livello o superiore, il danno aumenta di 1d6 per ogni livello dello slot superiore al 4°. Spell/&PsychicLanceTitle=Lancia psichica di Raulothim +Spell/&SickeningRadianceDescription=La luce fioca si diffonde in una sfera di 30 piedi di raggio centrata su un punto che scegli entro il raggio. La luce si diffonde dietro gli angoli e dura fino alla fine dell'incantesimo. Quando una creatura entra per la prima volta nell'area dell'incantesimo in un turno o inizia il suo turno lì, quella creatura deve superare un tiro salvezza su Costituzione o subire 4d10 danni radianti e subisce un livello di esaurimento ed emette una luce fioca in un raggio di 5 piedi. Questa luce rende impossibile per la creatura trarre beneficio dall'essere invisibile. La luce e qualsiasi livello di esaurimento causato da questo incantesimo scompaiono quando l'incantesimo termina. +Spell/&SickeningRadianceTitle=Radianza disgustosa Spell/&StaggeringSmiteDescription=La prossima volta che colpisci una creatura con un attacco con un'arma durante la durata dell'incantesimo, la tua arma trafigge sia il corpo che la mente e l'attacco infligge 4d6 danni psichici aggiuntivi al bersaglio. Il bersaglio deve effettuare un tiro salvezza su Saggezza. Se fallisce il tiro salvezza, subisce svantaggio ai tiri per colpire e alle prove di caratteristica, e non può effettuare reazioni fino alla fine del suo turno successivo. Spell/&StaggeringSmiteTitle=Punizione sconcertante Spell/&TreeForestGuardianDescription=La tua pelle appare cortecciata, le foglie spuntano dai tuoi capelli e ottieni i seguenti benefici:\n• Ottieni 10 punti ferita temporanei.\n• Effettui tiri salvezza su Costituzione con vantaggio.\n• Effettui Destrezza e Saggezza tiri per colpire basati su vantaggio.\n• Le creature entro 9 metri da te devono effettuare un tiro salvezza su Forza o essere ostacolate per la durata dell'incantesimo. Possono ritentare il salvataggio a ogni inizio turno. diff --git a/SolastaUnfinishedBusiness/Translations/it/SubClasses/CollegeOfAudacity-it.txt b/SolastaUnfinishedBusiness/Translations/it/SubClasses/CollegeOfAudacity-it.txt index 300733f613..d2c6499fc7 100644 --- a/SolastaUnfinishedBusiness/Translations/it/SubClasses/CollegeOfAudacity-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/SubClasses/CollegeOfAudacity-it.txt @@ -1,26 +1,27 @@ -Action/&AudaciousWhirlToggleDescription=Attiva/disattiva il Vortice Audace -Action/&AudaciousWhirlToggleTitle=Vortice audace -Action/&MasterfulWhirlToggleDescription=Attiva/disattiva il Vortice Magistrale -Action/&MasterfulWhirlToggleTitle=Vortice Magistrale -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Rotolamento vorticoso verso AC. -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Vortice difensivo -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Ogni volta che esegui l'azione Attacco nel tuo turno, la tua velocità di camminata aumenta di 3 metri fino alla fine del turno e se un attacco con arma da mischia effettuato come parte di questa azione colpisce una creatura, puoi spendere un uso della tua abilità Bardica. Ispirazione per far sì che l'arma infligga danni extra al bersaglio colpito. Il danno è pari al numero ottenuto con il dado di Ispirazione Bardica. Scegli anche una manovra particolare:\n• Vorticello difensivo: aggiungi il tiro di dado Ispirazione bardica alla tua AC fino all'inizio del tuo turno successivo.\n• Vortice tagliente b>: infliggi danni extra a tutte le altre creature nemiche entro 1,5 piedi da te.\n• Vortizio Mobile: ottieni i benefici del disimpegno fino alla fine del tuo turno. -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Vortice audace +Action/&AudaciousWhirlToggleDescription=Attiva/disattiva la fioritura delle lame +Action/&AudaciousWhirlToggleTitle=Lama fiorita +Action/&MasterfulWhirlToggleDescription=Attiva/disattiva la fioritura del maestro +Action/&MasterfulWhirlToggleTitle=La fioritura del maestro +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Tiro Fiorente su AC. +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Fioritura difensiva +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Ogni volta che esegui l'azione Attacco nel tuo turno, la tua velocità di camminata aumenta di 3 metri fino alla fine del turno e se un attacco con arma da mischia effettuato come parte di questa azione colpisce una creatura, puoi spendere un uso della tua abilità Bardica. Ispirazione per far sì che l'arma infligga danni extra al bersaglio colpito. Il danno è pari al numero ottenuto con il dado di Ispirazione Bardica. Scegli anche una manovra particolare:\n• Fioritura difensiva: aggiungi il tiro di dado Ispirazione bardica alla tua AC fino all'inizio del tuo turno successivo.\n• Fioritura tagliente b>: infliggi danni extra a tutte le altre creature nemiche entro 5 piedi da te.\n• Mobile Flourish: ottieni i benefici del disimpegno fino alla fine del tuo turno. +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Lama fiorita Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=Ottieni competenza con l'armatura media e la scimitarra. Puoi anche usare la tua arma come focus di incantamento per i tuoi incantesimi da bardo. Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=Competenze bonus -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Ogni volta che usi un'opzione Vortice Audace, puoi lanciare un D6 e usarla invece di spendere un dado di Ispirazione Bardica. -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Vortice Magistrale -Feature/&FightingStyleChoiceCollegeOfAudacityDescription=Adotti uno stile particolare di combattimento come tua specialità. Scegli tra Duello o Combattimento con due armi. +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Ogni volta che usi un'opzione Blade Flourish, puoi lanciare un D6 e usarlo invece di spendere un dado di Ispirazione Bardica. +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Il fiore del maestro +Feature/&FightingStyleChoiceCollegeOfAudacityDescription=Adotti uno stile particolare di combattimento come tua specialità. Scegli Duello o Combattimento con due armi. Feature/&FightingStyleChoiceCollegeOfAudacityTitle=Stile di combattimento -Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Puoi spendere un uso della tua Ispirazione Bardica per far sì che l'arma infligga danni extra al bersaglio che colpisci. Il danno è pari al numero che ottieni sul dado di Ispirazione Bardica o su un D6 se si tratta di un Vortice Magistrale. Aggiungi anche il numero lanciato alla tua AC fino all'inizio del tuo turno successivo. -Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Vortice difensivo -Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Puoi spendere un uso della tua Ispirazione Bardica per far sì che l'arma infligga danni extra al bersaglio che colpisci. Il danno è pari al numero che ottieni sul dado di Ispirazione Bardica o su un D6 se si tratta di un Vortice Magistrale. Ottieni i benefici del disimpegno fino alla fine del tuo turno. -Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Vortice mobile -Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Puoi spendere un uso della tua Ispirazione Bardica per far sì che l'arma infligga danni extra al bersaglio colpito e a tutte le altre creature nemiche entro 1,5 metri da te. Il danno è pari al numero che ottieni sul dado di Ispirazione Bardica o su un D6 se si tratta di un Vortice Magistrale. -Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Vortice Tagliente -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} può far sì che l'arma infligga danni extra al bersaglio. Il danno è pari al numero che ottieni sul dado di Ispirazione Bardica o su un D6 se si tratta di un Vortice Magistrale. -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Vortice -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Vortice -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Vortice +Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Puoi spendere un uso della tua Ispirazione Bardica per far sì che l'arma infligga danni extra al bersaglio che colpisci. Il danno è pari al numero che ottieni con il dado di Ispirazione Bardica o con un D6 se il Maestro prospera. Aggiungi anche il numero lanciato alla tua AC fino all'inizio del tuo turno successivo. +Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Fioritura difensiva +Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Puoi spendere un uso della tua Ispirazione Bardica per far sì che l'arma infligga danni extra al bersaglio che colpisci. Il danno è pari al numero che tiri sul dado Ispirazione Bardica o un D6 se si tratta di Flourish di un Maestro. Ottieni i benefici del disimpegno fino alla fine del tuo turno. +Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Fiorire mobile +Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Puoi spendere un uso della tua Ispirazione Bardica per far sì che l'arma infligga danni extra al bersaglio colpito e a tutte le altre creature nemiche entro 1,5 metri da te. Il danno è pari al numero che ottieni con il dado di Ispirazione Bardica o con un D6 se il Maestro prospera. +Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Fioritura tagliente +Feedback/&CollegeOfAudacityDefensiveWhirl={0} lancia un dado {2}, aggiungendo {3} all'AC. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} può far sì che l'arma infligga danni extra al bersaglio. Il danno è pari al numero che ottieni con il dado di Ispirazione Bardica o con un D6 se il Maestro prospera. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Fiorire +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Fiorire +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Fiorire Subclass/&CollegeOfAudacityDescription=I bardi del Collegio delle Spade intrattengono con audaci imprese di abilità con le armi. Eseguono acrobazie come ingoiare la spada, lanciare coltelli, fare giocoleria e simulare combattimenti. Sebbene usino le loro armi per intrattenere, sono anche guerrieri altamente addestrati e abili. Subclass/&CollegeOfAudacityTitle=Collegio delle Spade diff --git a/SolastaUnfinishedBusiness/Translations/it/SubClasses/MartialTactician-it.txt b/SolastaUnfinishedBusiness/Translations/it/SubClasses/MartialTactician-it.txt index f67f955eef..a899cdfcc1 100644 --- a/SolastaUnfinishedBusiness/Translations/it/SubClasses/MartialTactician-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/SubClasses/MartialTactician-it.txt @@ -12,8 +12,8 @@ Feature/&FeatureSetTacticianHonedCraftDescription=Acquisisci esperienza con un'a Feature/&FeatureSetTacticianHonedCraftTitle=Abilità affinata Feature/&FeatureSetTacticianSharpMindDescription=Ottieni competenza con un'abilità a tua scelta. Feature/&FeatureSetTacticianSharpMindTitle=Mente lucida -Feature/&FeatureSetTacticianTacticalAwarenessDescription=Finché non sei incapacitato, ottieni i seguenti vantaggi:\n• Una volta per turno, il tuo attacco con l'arma infligge danni extra pari al tuo bonus di competenza.\n• Gli attacchi di opportunità che effettui vengono effettuati con vantaggio.\n• Gli attacchi di opportunità contro di te vengono effettuati con svantaggio. -Feature/&FeatureSetTacticianTacticalAwarenessTitle=Consapevolezza tattica +Feature/&FeatureSetTacticianTacticalAwarenessDescription=Durante il combattimento, riacquisti un dado superiorità all'inizio di ogni tuo turno. +Feature/&FeatureSetTacticianTacticalAwarenessTitle=Maestro della guerra Feature/&FeatureTacticianGambitDieSizeD10Description=Il tuo dado superiorità viene aggiornato a D10. Feature/&FeatureTacticianGambitDieSizeD10Title=Dimensione del dado di superiorità (d10) Feature/&FeatureTacticianGambitDieSizeD12Description=Il tuo dado superiorità viene aggiornato a D12. diff --git a/SolastaUnfinishedBusiness/Translations/it/SubClasses/PathOfTheBeast-it.txt b/SolastaUnfinishedBusiness/Translations/it/SubClasses/PathOfTheBeast-it.txt index 000ea1af1f..0bc831a808 100644 --- a/SolastaUnfinishedBusiness/Translations/it/SubClasses/PathOfTheBeast-it.txt +++ b/SolastaUnfinishedBusiness/Translations/it/SubClasses/PathOfTheBeast-it.txt @@ -24,7 +24,7 @@ Feature/&PowerPathOfTheBeastFormOfTheBeastTailTitle=Forma: coda Feature/&PowerPathOfTheBeastFormOfTheBeastTitle=Forma della Bestia Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeDescription=Il bersaglio attacca un'altra creatura a tua scelta entro la sua portata. Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeTitle=Furia Confettiva: Colpo Obbligato -Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Quando colpisci una creatura con le tue armi naturali mentre sei in preda all'ira, la bestia dentro di te può maledire il tuo bersaglio con furia rabbiosa. Il bersaglio deve superare un tiro salvezza su Saggezza (CD pari a 8 + il tuo modificatore di Costituzione + il tuo bonus di competenza) o subire uno dei seguenti effetti (a tua scelta). +Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Quando colpisci una creatura con le tue armi naturali mentre sei in preda all'ira, la bestia dentro di te può maledire il tuo bersaglio con furia rabbiosa. Il bersaglio deve superare un tiro salvezza su Saggezza (CD pari a 8 + il tuo modificatore di Costituzione + il tuo bonus di competenza) o subire uno dei seguenti effetti (a tua scelta).\n\nPuoi utilizzare questo privilegio un certo numero di volte pari al tuo bonus di competenza, e recuperi tutti gli usi spesi quando termini un riposo lungo. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashDescription=Il bersaglio subisce 2d12 danni psichici. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashTitle=Furia contagiosa: Mindlash Feature/&PowerPathOfTheBeastInfectiousFuryTitle=Furia contagiosa diff --git a/SolastaUnfinishedBusiness/Translations/ja/Feats/MeleeCombat-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Feats/MeleeCombat-ja.txt index 72d6df21ed..10e8ed36d2 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Feats/MeleeCombat-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Feats/MeleeCombat-ja.txt @@ -34,8 +34,6 @@ Feat/&FeatFencerDescription=近接片手武器または汎用武器を保持し Feat/&FeatFencerTitle=剣士 Feat/&FeatGreatWeaponDefenseDescription=あなたは大型武器で懸命に戦い、以下の利益を得ます:\n• クリーチャーのヒットポイントを 0 にするか、近接武器でクリティカル ストライクを与えると、ターン終了時まで移動速度が 15 フィート増加します。\n• 両手に重い近接武器または多用途武器を装備して攻撃アクションを行うと、次のターン開始時まで +2AC を得ます。別の武器や盾を装備すると、この利益は失われます。 Feat/&FeatGreatWeaponDefenseTitle=戦いの熱狂 -Feat/&FeatHammerThePointDescription=同じ場所に集中して集中する方法を知っています。あなたがターゲットに対して攻撃ロールを行った後、あなたのターンが終了するまで、このターゲットに対する攻撃ロールとダメージロールに+1を得る[スタック]。 -Feat/&FeatHammerThePointTitle=ポイントを叩き込む Feat/&FeatLongswordFinesseDescription=あなたはロングソードのマスターの子孫であり、その熟練の一部はあなたに受け継がれています。次の利点が得られます。\n・器用さが 1 増加し、最大 20 になります。\n・ロングソードを保持している間、アーマー クラスに +1 ボーナスが得られます。\n・ロングソードには、使用するとフィネス特性が得られます。 Feat/&FeatLongswordFinesseTitle=ロングソードフィネス Feat/&FeatOldTacticsDexDescription=敏捷性を 1 増加させます。ラウンドごとに 1 回、近接武器の射程内にある伏せの敵が立ち上がると、そのターゲットに対して機会攻撃を行うことができます。 diff --git a/SolastaUnfinishedBusiness/Translations/ja/Feats/OtherFeats-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Feats/OtherFeats-ja.txt index ed461c30d6..fae5e6d46c 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Feats/OtherFeats-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Feats/OtherFeats-ja.txt @@ -8,8 +8,6 @@ Feat/&FeatAlertDescription=常に危険に注意を払うと、次のような Feat/&FeatAlertTitle=アラート Feat/&FeatArcaneArcherAdeptDescription=特別な戦闘操作を実行できるようにする秘術の魔法と弓の訓練があります。 Feat/&FeatArcaneArcherAdeptTitle=アーケイン・アーチャー・アデプト -Feat/&FeatAstralArmsDescription=知恵を 1 増やして、最大 20 まで増やします。\n自分のターンに素手攻撃を行う場合、その攻撃の到達距離は 10 フィートです。他のクリーチャーが素手で攻撃できる範囲に入ると、あなたからの機会攻撃を引き起こします。 。 -Feat/&FeatAstralArmsTitle=アストラルリーチ Feat/&FeatAthleteDexDescription=あなたは次の利点を得るために広範な身体トレーニングを受けてきました:\n• 器用さが 1 増加し、最大 20 になります。\n• うつ伏せの場合、立ち上がっても移動コストがかかりません。\n•クライミングに余分な動きは必要ありません。\n• すでに熟練している場合は、陸上競技のスキルや専門知識に習熟していきます。 Feat/&FeatAthleteDexTitle=アスリート【デックス】 Feat/&FeatAthleteStrDescription=あなたは次の利点を得るために広範な身体トレーニングを受けてきました:\n• 筋力が 1 増加し、最大 20 になります。\n• うつ伏せの場合、立ち上がっても動きを犠牲にしません。\n•クライミングに余分な動きは必要ありません。\n• すでに熟練している場合は、陸上競技のスキルや専門知識に習熟していきます。 diff --git a/SolastaUnfinishedBusiness/Translations/ja/Feats/RangedCombat-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Feats/RangedCombat-ja.txt index baa65d3794..0cff3ce11e 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Feats/RangedCombat-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Feats/RangedCombat-ja.txt @@ -10,8 +10,6 @@ Feat/&FeatDeadeyeDescription=あなたは精度を犠牲にしてより致命的 Feat/&FeatDeadeyeTitle=狙撃兵 Feat/&FeatRangedExpertDescription=遠距離武器を使った熟練のトレーニングにより、次のようなメリットが得られます。\n• 近接距離での攻撃は不利になりません。\n• 自分のターンに攻撃アクションを実行すると、追加の片手遠距離ボーナス攻撃を 1 回行うことができます。ダメージを与える属性修飾子。 Feat/&FeatRangedExpertTitle=クロスボウのエキスパート -Feat/&FeatSteadyAimDescription=あなたの器用さを 1 増加させ、最大 20 まで高めます。ボーナス アクションとして、現在のターンの次の攻撃ロールで有利になります。このボーナス アクションは、このターン中に移動しなかった場合にのみ使用でき、ボーナス アクションを使用した後は、現在のターンが終了するまでスピードは 0 になります。 -Feat/&FeatSteadyAimTitle=着実な狙い Feature/&PowerFeatSteadyAimDescription=ボーナス アクションとして、現在のターンの次の攻撃ロールで有利になります。このボーナス アクションは、このターン中に移動しなかった場合にのみ使用でき、ボーナス アクションを使用した後は、現在のターンが終了するまでスピードは 0 になります。 Feature/&PowerFeatSteadyAimTitle=着実な狙い Tooltip/&DeadeyeConcentration=シャープシューターを無効にする diff --git a/SolastaUnfinishedBusiness/Translations/ja/FightingStyles-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/FightingStyles-ja.txt index b6914da5ba..c33ee4aa36 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/FightingStyles-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/FightingStyles-ja.txt @@ -22,8 +22,6 @@ FightingStyle/&LungerDescription=ヘビータグを付けずに武器を使用 FightingStyle/&LungerTitle=肺 FightingStyle/&MercilessDescription=自分のターンに近接武器攻撃を使用してターゲットの HP を 0 に減らすと、ダウンしたターゲットの半径内であなたの熟練度ボーナスの半分 (切り上げ) に等しいターゲットを視認できる敵は知恵セーブを行わなければなりません (難易度 8 +)熟練度ボーナス + 筋力修正値)、または次のターンの終わりまであなたを怖がるようになります。トリガーとなる攻撃がクリティカル ヒットの場合、半径は熟練度ボーナスと同じになります。 FightingStyle/&MercilessTitle=無慈悲な -FightingStyle/&MonkShieldExpertDescription=あなたはシールドの熟練度を獲得しますが、その手で非武装で攻撃することを彼らが阻止することはありません。さらに、モンクの能力はすべて、シールドを装備しているときでも機能します。 -FightingStyle/&MonkShieldExpertTitle=修道院の盾の訓練 FightingStyle/&PolearmExpertDescription=ポールアームを使った熟練のトレーニングにより、次のようなメリットが得られます:\n• 攻撃アクションを実行してポールアーム武器のみで攻撃する場合、ボーナス アクションを使用して武器の反対側で近接攻撃を行うことができます。この攻撃は主攻撃と同じ能力修正を使用し、1d4 の殴打ダメージを与えます。\n• 他のクリーチャーは、長柄武器を使用してあなたが到達できる範囲に入ると、あなたからの機会攻撃を引き起こします。 FightingStyle/&PolearmExpertTitle=ポールアームマスター FightingStyle/&PugilistDescription=素手での打撃は追加の 1d4 の殴打ダメージを与え、ボーナス アクションとしてオフハンドでパンチすることもできます。他に武器や盾がない場合は、ボーナスアクションとして突き飛ばすことができます。 diff --git a/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt index ace8c9750e..6e99333f98 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Others-ja.txt @@ -281,6 +281,8 @@ Screen/&RangerSpellTitle=部隊 Screen/&RepertoireHeaderFormat={0} Screen/&RoguishSpellDescription=この呪文はあなたのローギッシュの原型によって与えられており、あなたは知っていると考えられています。 Screen/&RoguishSpellTitle=ローギッシュ +Screen/&SpellAlternatePointsCostTooltip={0} ポイント +Screen/&SpellAlternatePointsTooltip=残りのスペルポイントは {0} です。 Screen/&SpellSlotsUsedLongDescription=このレベルで {0} 個の呪文スロットを消費しました。 Screen/&SpellSlotsUsedShortDescription={0} 個の契約魔法スロットを消費しました。 Screen/&SpellSlotsUsedShortLongDescription=このレベルで、{0} 個の契約魔法スロットと {1} 個の呪文スロットを消費しました。 diff --git a/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt index 838a6a70c5..3ddae827ae 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Settings-ja.txt @@ -42,6 +42,7 @@ ModUi/&Bestiary=獣寓話 ModUi/&BestowCurseNoConcentrationRequiredForSlotLevel5OrAbove=授与の呪いは、L5以上の呪文スロットでキャストする場合は集中力を必要としません ModUi/&BlindedConditionDontAllowAttackOfOpportunity=盲目状態では機会攻撃は許可されません ModUi/&Blueprints=青写真 +ModUi/&Camera=カメラ: ModUi/&Campaigns=キャンペーン: ModUi/&CampaignsAndLocations=キャンペーンと場所: ModUi/&Category=カテゴリー @@ -118,6 +119,7 @@ ModUi/&EnableCheatMenu=チートメニューを有効にする ModUi/&EnableCustomPortraits=カスタムポートレートを有効にする ModUi/&EnableCustomPortraitsHelp=• カスタム ポートレートをサブフォルダ Personal または PreGen に配置します。 、主人公の名前にちなんで名付けられました [例: アントン、セリア、ニアラなど]\n• PNG を使用します画像、サイズ 256 x 384 ピクセル、透明レイヤーあり [最良の結果を得るには GIMP を使用] ModUi/&EnableDungeonMakerModdedContent=Dungeon Maker Pro を有効にする\n[フラット ルーム、150x150 および 200x200 のダンジョン サイズ、あらゆる環境のアセットを簡単に混合する機能が含まれます] +ModUi/&EnableElevationCameraToStayAtPosition=無効にした後も高度カメラの位置を維持する ModUi/&EnableEpicPointsAndArray=壮大な 35 ポイント購入システムと配列 [17,15,13,12,10,8] [再起動が必要] ModUi/&EnableExtendedProficienciesPanelDisplay=拡張熟練度パネル表示を有効にする [秘術ショット、注入、マニューバー、多用途性]\n[パフォーマンス]文字検査でヒットしました。ご自身の責任で使用してください] ModUi/&EnableFeatsAtEvenLevels=レベル 2、10、18 で特技の選択を有効にします @@ -233,13 +235,15 @@ ModUi/&Monsters=モンスター: ModUi/&MovementGridWidthModifier=移動グリッドの幅を乗算します [%] ModUi/&MulticlassKeyHelp=SHIFT で呪文をクリックすると、消費されるデフォルトのレパートリー スロット タイプが反転します\n[ウォーロックは白い呪文スロットを消費します他の人は協定の緑のものを使います] ModUi/&MultiplyTheExperienceGainedBy=得られる経験値を [%]で倍増します +ModUi/&NeverMoveCameraOnEnemyTurn=+ 敵のターン中はカメラが動かない ModUi/&NoExperienceOnLevelUp=レベルアップに経験は必要ありません ModUi/&OfferAdditionalLoreFriendlyNames=キャラクター作成時に追加の伝承にわかりやすい名前を提供する ModUi/&OfficialObscurementRulesCancelAdvDisPairs=+ 盲目、不可視、認識された有利 / 不利のペアをキャンセル[公式の有利/不利と併用すると便利]ルール] ModUi/&OfficialObscurementRulesHeavilyObscuredAsProjectileBlocker=+非常に遮蔽されたエリアを発射物ブロッカーに変更[クラウドキル、フォグクラウド、焼夷雲、ペタルストーム、みぞれの嵐、臭い雲] ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget=+ 目に見えないクリーチャーは大きく隠されており、対象となる可能性があり、そのクリーチャーに対する攻撃ロールは不利になり、クリーチャーの攻撃ロールは有利になります ModUi/&OfficialObscurementRulesMagicalDarknessAsProjectileBlocker=+魔法で隠されたエリアを発射物ブロッカーに変更[ダークネスの呪文効果の発生源] -ModUi/&OfficialObscurementRulesTweakMonsters=+ 必要に応じて、ダークビジョン、ブラインドサイト、トゥルーサイトをモンスターやNPCに追加します\n [設定のコレクション MonstersThatShouldHaveDarkvisionMonstersThatShouldHaveTrueSightMonstersThatShouldHaveBlindSight] +ModUi/&OfficialObscurementRulesTweakMonsters=+ モンスターや NPC に適切な場合に、Darkvision、BlindSight、TrueSight を追加します +ModUi/&OfficialObscurementRulesTweakMonstersHelp=[設定のコレクション MonstersThatShouldHaveDarkvisionMonstersThatShouldHaveTrueSightMonstersThatShouldHaveBlindSight] ModUi/&OnlyShowMostPowerfulUpcastConjuredElementalOrFey=+ 召喚リストで最も強力なクリーチャーのみを表示 ModUi/&OutlineGridWidthModifier=アウトライングリッドの幅を[%]で乗算します。 ModUi/&OutlineGridWidthSpeed=アウトライン グリッドのアニメーション速度を 2 倍します [%] @@ -276,6 +280,7 @@ ModUi/&SelectTabletop=テーブルトップを選択してください ModUi/&SenseNormalVisionRangeMultiplier=通常の視力範囲を変更[戦闘時のみ] ModUi/&Services=サービス ModUi/&SetBeltOfDwarvenKindBeardChances=ドワーフ族のベルト ひげが出現するチャンス +ModUi/&SetElevationCameraMaxHeightBy=仰角カメラの最大高度を増加 ModUi/&SettingsExport=輸出 ModUi/&SettingsHelp=• ホストとして、現在の構成をエクスポートし、エクスポート フォルダを開いてピアと簡単に共有できます。\n• ゲストとして、エクスポート フォルダを開いて、ホストから共有ファイルを貼り付け、[再起動が必要] ModUi/&SettingsLoad=• エクスポートした設定をロードする @@ -317,6 +322,8 @@ ModUi/&UnlockGlowingEyeColors=輝く目の色を追加する ModUi/&UnlockMarkAndTattoosForAllCharacters=すべてのキャラクターのソーサラーのオリジンマークとタトゥーをロック解除する ModUi/&UnlockSkinColors=肌の色のロックを解除する ModUi/&Update=更新 +ModUi/&UseAlternateSpellPointsSystem=公式のバリアントスペルポイントルールを使用する +ModUi/&UseAlternateSpellPointsSystemHelp=[呪文ポイントのプールがあり、術者レベルに応じて増加します\nL01: 04 L02: 06 L03: 14 L04: 17 L05: 27 L06: 32 L07: 38 L08: 44 L09: 57 L10: 64\nL11: 73 L12: 73 L13: 83 L14: 83 L15: 94 L16: 94 L17: 107 L18: 114 L19: 123 L20: 133\n呪文を唱えるためのコストは SL1: 2 SL2: 3 SL3: 5 SL4: 6 SL5: 7 SL6: 9 SL7: 10 SL8: 11 SL9: 13\nこのシステムでは、短い休憩スロットの回復機能はトリガーされません] ModUi/&UseElfFaceModelsOnTieflings=ティーフリングでエルフの顔モデルを使用する ModUi/&UseHeightOneCylinderEffect=黒い触手、絡まり、グリース [square] または スパイク成長 [ラウンド] ModUi/&UseMathFlankingRules=+ 正確な計算を使用して側面攻撃を決定します[遅いマシンではパフォーマンスに影響を与える可能性があります] @@ -326,6 +333,7 @@ ModUi/&UseOfficialFlankingRulesAlsoForRanged=+ 遠距離攻撃も有効にし ModUi/&UseOfficialFlankingRulesAlsoForReach=+ リーチ攻撃も有効にします[正確な計算を無効にする] ModUi/&UseOfficialFlankingRulesButAddAttackModifier=+ アドバンテージの代わりに攻撃ロールに +1 を与える ModUi/&UseOfficialFoodRationsWeight=公式の食料配給量の重量は2ポンドを使用してください -ModUi/&UseOfficialObscurementRules=公式の照明、遮蔽、視覚戦闘ルールを使用する\n[認識できる攻撃者と認識できない防御者はADVを取得し、認識しない攻撃者はADVを取得します。知覚できる防御者はDIS\nを得る ひどく遮られた領域は盲目状態を与え、そのクリーチャーに対する攻撃ロールはADVを持ち、クリーチャーの攻撃ロールはDIS\nを持つ 個人を対象とするすべての遠距離呪文は、攻撃者が視力を持たない場合は唱えることができない、視覚が必要であると明確に述べられていないものを除く] +ModUi/&UseOfficialObscurementRules=公式の照明、遮蔽、視覚戦闘ルールを使用する +ModUi/&UseOfficialObscurementRulesHelp=[それを知覚する攻撃者は ADV を獲得し、それを知覚しない攻撃者は DIS を獲得します。それを知覚できる防御者は DIS を獲得します\n 非常に隠された領域は盲目状態を引き起こし、クリーチャーに対する攻撃ロールには ADV が付与され、クリーチャーの攻撃ロールには DIS が付与されます\n 攻撃者に視力がない場合、個人をターゲットとするすべての遠距離呪文は発動できません。ただし、視力が必要であると明確に述べられていない呪文は除きます] ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons=重火器を使用するときは小種族の公式ルールを使用してください[攻撃には不利] ModUi/&Visuals=ビジュアル: [再起動が必要] diff --git a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt index 4b7c676ee2..e559c9dae4 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/Spells/Spells04-ja.txt @@ -13,6 +13,18 @@ Condition/&ConditionElementalBaneTitle=エレメンタルベイン: {0} Condition/&ConditionIrresistiblePerformanceDescription=手や口を必要とする動作は実行できませんが、それ以外の場合は通常どおり動作できます。 Condition/&ConditionIrresistiblePerformanceTitle=ダイナ・モー・ハム Condition/&ConditionPsionicBlastTitle=混乱した心 +Condition/&ConditionSickeningRadianceDescription=あなたは半径 5 フィートに薄暗い光を放ちます。この光により、あなたは透明になることができなくなります。 +Condition/&ConditionSickeningRadianceExhausted1Description=能力判定に不利があります。 +Condition/&ConditionSickeningRadianceExhausted1Title=疲れ果てた1 +Condition/&ConditionSickeningRadianceExhausted2Description=あなたの速度は半分になり、能力判定に不利になります。 +Condition/&ConditionSickeningRadianceExhausted2Title=疲れ果てた2 +Condition/&ConditionSickeningRadianceExhausted3Description=あなたの速度は半分になり、能力値判定、攻撃ロール、セーヴィングスローに不利が生じます。 +Condition/&ConditionSickeningRadianceExhausted3Title=疲れ果てた3 +Condition/&ConditionSickeningRadianceExhausted4Description=あなたの速度と最大ヒットポイントは半分になり、能力値チェック、攻撃ロール、セーヴィングスローに不利になります。 +Condition/&ConditionSickeningRadianceExhausted4Title=疲れ果てた4 +Condition/&ConditionSickeningRadianceExhausted5Description=あなたの移動速度は 0 になり、最大ヒット ポイントは半分になり、能力値チェック、攻撃ロール、セーヴィング スローに不利が生じます。 +Condition/&ConditionSickeningRadianceExhausted5Title=疲れ果てた5 +Condition/&ConditionSickeningRadianceTitle=不快な輝き Condition/&ConditionStaggeringSmiteEnemyDescription=精神的なダメージを受けてしまいます。 Condition/&ConditionStaggeringSmiteEnemyTitle=よろめきのスマイト Condition/&ConditionTreeForestGuardianDescription=あなたは一時的に 10 のヒット ポイントを獲得し、コンスティテューション セーヴィング スローを有利に行い、器用さと知恵をベースにした攻撃ロールを有利に行います。 @@ -50,6 +62,8 @@ Spell/&PsionicBlastDescription=30 フィートの円錐形に精神力を衰弱 Spell/&PsionicBlastTitle=サイオニックブラスト Spell/&PsychicLanceDescription=あなたは範囲内に見える生き物に向かって額から超能力のきらめく槍を解き放ちます。それは知性セーヴィング・スローに成功するか、7d6の精神的ダメージを受けて次のターンの終わりまで無力化されなければならない。セーブに成功すると、クリーチャーは半分のダメージを受けますが、無力化されません。より高いレベルで。あなたが第 4 レベル以上の呪文スロットを使用してこの呪文を唱えると、ダメージは第 4 レベル以上のスロット レベルごとに 1d6 ずつ増加します。 Spell/&PsychicLanceTitle=ラウロシムのサイキックランス +Spell/&SickeningRadianceDescription=薄暗い光が、範囲内の術者が選んだ一点を中心とした半径 30 フィートの球体に広がります。光は角を回り込み、呪文が終了するまで続きます。クリーチャーがターン中に初めて呪文の領域に移動するか、そこでターンを開始すると、そのクリーチャーは耐久力セーヴィング スローに成功するか、4d10 の光ダメージを受け、1 レベルの疲労を被り、半径 5 フィートに薄暗い光を放ちます。この光により、クリーチャーは透明化による利益を得ることができなくなります。この呪文によって生じた光と疲労のレベルは、呪文が終了すると消えます。 +Spell/&SickeningRadianceTitle=不快な輝き Spell/&StaggeringSmiteDescription=この呪文の持続時間中に次にあなたが武器攻撃でクリーチャーを攻撃するとき、あなたの武器は体と精神の両方を貫通し、その攻撃はターゲットに追加の 4d6 精神的ダメージを与えます。ターゲットはウィズダム・セーヴィング・スローを行わなければなりません。セーブに失敗すると、次のターンの終了時まで、攻撃ロールと能力判定に不利になり、反応を取ることができません。 Spell/&StaggeringSmiteTitle=よろめきのスマイト Spell/&TreeForestGuardianDescription=肌が皮っぽくなり、髪から葉が芽生え、次の利点が得られます:\n・一時的にヒット・ポイントが 10 増加します。\n・憲法セーヴィング・スローが有利になります。\n・器用さと知恵が得られます。 -ベースの攻撃ロールは有利です。\n• あなたから 30 フィート以内のクリーチャーは、ストレングス セーヴィング スローを行わなければ、呪文の持続時間の間妨害されます。ターン開始ごとにセーブを再試行できます。 diff --git a/SolastaUnfinishedBusiness/Translations/ja/SubClasses/CollegeOfAudacity-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/SubClasses/CollegeOfAudacity-ja.txt index ba0e43c383..a445647efd 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/SubClasses/CollegeOfAudacity-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/SubClasses/CollegeOfAudacity-ja.txt @@ -1,26 +1,27 @@ -Action/&AudaciousWhirlToggleDescription=Audacious Whirlの有効化/無効化 -Action/&AudaciousWhirlToggleTitle=大胆な渦巻き -Action/&MasterfulWhirlToggleDescription=マスターフルワールの有効化/無効化 -Action/&MasterfulWhirlToggleTitle=マスターフルワール -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=ACにワールロールします。 -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=ディフェンス・ワール -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=自分のターンで攻撃アクションを実行するたびに、ターンの終わりまで歩行速度が 10 フィート増加します。このアクションの一部として行う近接武器攻撃がクリーチャーに命中した場合、バルディックの使用量を 1 回消費できます。武器が命中したターゲットに追加のダメージを与えるインスピレーション。ダメージは、バーディック インスピレーション ダイスでロールした数字に等しくなります。また、特定の操作も選択します。\n• 防御旋回: 次のターンの開始時まで、バーディックのインスピレーションのダイスロールを AC に追加します。\n• 斬撃旋回 b>: あなたはあなたの 5 フィート以内にいる他のすべての敵クリーチャーに追加のダメージを与えます。\n• モバイル ワール: あなたはターン終了時まで離脱の恩恵を受けます。 -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=大胆な渦巻き -Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=中装甲とシミターの熟練度が上がります。吟遊詩人の呪文の呪文詠唱の焦点として武器を使用することもできます。 +Action/&AudaciousWhirlToggleDescription=ブレード・フローリッシュを有効化/無効化 +Action/&AudaciousWhirlToggleTitle=ブレード・フラリッシュ +Action/&MasterfulWhirlToggleDescription=マスターの華麗さを有効化/無効化 +Action/&MasterfulWhirlToggleTitle=マスターの華麗 +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=AC にフローリッシュロールします。 +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=防御の華麗さ +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=自分のターンに攻撃アクションを行うたびに、そのターンの終了時まで歩行速度が 10 フィート増加し、このアクションの一環として行う近接武器攻撃がクリーチャーに命中した場合、バード インスピレーションの使用回数を 1 回消費して、その武器が命中したターゲットに追加のダメージを与えるようにすることができます。ダメージはバード インスピレーション ダイスの出目と同じです。また、特定の戦技を選択します:\n• 防御的華麗: 次のターンの開始時まで、バード インスピレーション ダイスの出目を AC に追加します。\n• 斬撃的華麗: 5 フィート以内にいる他のすべての敵クリーチャーに追加のダメージを与えます。\n• 機動的華麗: ターンの終了時まで、離脱の利益を得ます。 +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=ブレード・フラリッシュ +Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=中装鎧とシミターの熟練度を獲得します。また、武器をバード呪文の呪文発動の焦点として使用することもできます。 Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=ボーナス熟練度 -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Audacious Whirl オプションを使用するときはいつでも、Bardic Inspire ダイスを消費する代わりに D6 をロールして使用できます。 -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=マスターフルワール -Feature/&FightingStyleChoiceCollegeOfAudacityDescription=あなたは自分の専門として特定の戦闘スタイルを採用しています。決闘か二刀流のどちらかを選択してください。 +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Blade Flourish オプションを使用するときはいつでも、D6 をロールして、Bardic Inspiration ダイスを消費する代わりに使用することができます。 +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=マスターの華麗 +Feature/&FightingStyleChoiceCollegeOfAudacityDescription=特定の戦闘スタイルを専門とします。決闘または二刀流戦闘のいずれかを選択します。 Feature/&FightingStyleChoiceCollegeOfAudacityTitle=戦闘スタイル -Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Bardic Inspire を 1 回使用すると、武器が命中したターゲットに追加のダメージを与えることができます。ダメージは、あなたがバーディック インスピレーション ダイスでロールした数字、またはマスターフル ワールの場合は D6 に等しくなります。また、次のターンの開始まで、出た数字を AC に追加します。 -Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=ディフェンス・ワール -Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Bardic Inspire を 1 回使用すると、武器が命中したターゲットに追加のダメージを与えることができます。ダメージは、あなたがバーディック インスピレーション ダイスでロールした数字、またはマスターフル ワールの場合は D6 に等しくなります。あなたはターン終了時まで離脱の恩恵を受けます。 -Feature/&PowerCollegeOfAudacityMobileWhirlTitle=モバイルワール -Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=バーディック インスピレーションを 1 回使用すると、武器が命中したターゲットと、5 フィート以内の他のすべての敵クリーチャーに追加のダメージを与えることができます。ダメージは、あなたがバーディック インスピレーション ダイスでロールした数字、またはマスターフル ワールの場合は D6 に等しくなります。 -Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=斬撃の渦 -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} を使用すると、武器がターゲットに追加のダメージを与える可能性があります。ダメージは、Bardic Inspire ダイスでロールした数字、または Masterful Whirl の場合は D6 に等しい。 -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=渦巻き -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=渦巻き -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=渦巻き -Subclass/&CollegeOfAudacityDescription=剣の大学の吟遊詩人は、武器の腕前の大胆な妙技で楽しませます。彼らは、剣を飲み込む、ナイフを投げたりジャグリングしたり、模擬戦闘などのスタントを実行します。彼らは娯楽のために武器を使いますが、それ自体が高度に訓練され熟練した戦士でもあります。 -Subclass/&CollegeOfAudacityTitle=剣術大学 +Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=バード インスピレーションを 1 回消費することで、攻撃したターゲットに武器が追加ダメージを与えるようになります。ダメージはバード インスピレーション ダイスで振った数、またはマスターズ フラリッシュの場合は D6 に等しくなります。また、次のターンの開始時まで、振った数を AC に追加します。 +Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=防御の華麗さ +Feature/&PowerCollegeOfAudacityMobileWhirlDescription=バード インスピレーションを 1 回消費すると、攻撃したターゲットに武器が追加ダメージを与えるようになります。ダメージはバード インスピレーション ダイスで振った数、またはマスターズ フラリッシュの場合は D6 に等しくなります。ターン終了時まで、離脱の恩恵を受けます。 +Feature/&PowerCollegeOfAudacityMobileWhirlTitle=モバイル フローリッシュ +Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=バード インスピレーションを 1 回使用することで、武器が攻撃したターゲットと、5 フィート以内の他のすべての敵クリーチャーに追加のダメージを与えるようにすることができます。ダメージは、バード インスピレーション ダイスで振った数、またはマスターズ フラリッシュの場合は D6 に等しくなります。 +Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=斬撃の華麗 +Feedback/&CollegeOfAudacityDefensiveWhirl={0}は{2}個のサイコロを振り、ACに{3}を加えます。 +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} は、武器がターゲットに追加のダメージを与える原因になります。ダメージは、バード インスピレーション ダイスで振った数、またはマスターズ フラリッシュの場合は D6 に等しくなります。 +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=繁栄する +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=繁栄する +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=繁栄する +Subclass/&CollegeOfAudacityDescription=剣の大学の吟遊詩人は、大胆な武器の技で観客を楽しませます。剣を飲み込む、ナイフを投げる、ジャグリングする、模擬戦闘などのスタントを披露します。武器を使って観客を楽しませますが、吟遊詩人自身も高度な訓練を受けた熟練の戦士です。 +Subclass/&CollegeOfAudacityTitle=剣の大学 diff --git a/SolastaUnfinishedBusiness/Translations/ja/SubClasses/MartialTactician-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/SubClasses/MartialTactician-ja.txt index c456c037a7..16817e352c 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/SubClasses/MartialTactician-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/SubClasses/MartialTactician-ja.txt @@ -12,8 +12,8 @@ Feature/&FeatureSetTacticianHonedCraftDescription=選択したスキルまたは Feature/&FeatureSetTacticianHonedCraftTitle=研ぎ澄まされたスキル Feature/&FeatureSetTacticianSharpMindDescription=選択したスキルで熟練度を高めます。 Feature/&FeatureSetTacticianSharpMindTitle=鋭い知性 -Feature/&FeatureSetTacticianTacticalAwarenessDescription=無力化されていない間、あなたは以下の利益を得ます:\n• 1 ターンに 1 回、あなたの武器攻撃はあなたの熟練度ボーナスに等しい追加ダメージを与えます。\n• あなたが行う機会攻撃は有利に行われます。\n• あなたに対する機会攻撃は不利に行われます。 -Feature/&FeatureSetTacticianTacticalAwarenessTitle=戦術的認識 +Feature/&FeatureSetTacticianTacticalAwarenessDescription=戦闘中、各ターンの開始時に優勢ダイスを 1 つ回復します。 +Feature/&FeatureSetTacticianTacticalAwarenessTitle=戦争の達人 Feature/&FeatureTacticianGambitDieSizeD10Description=あなたの優位性ダイスは D10 にアップグレードされます。 Feature/&FeatureTacticianGambitDieSizeD10Title=優れたダイサイズ (d10) Feature/&FeatureTacticianGambitDieSizeD12Description=あなたの優位性ダイスは D12 にアップグレードされます。 diff --git a/SolastaUnfinishedBusiness/Translations/ja/SubClasses/PathOfTheBeast-ja.txt b/SolastaUnfinishedBusiness/Translations/ja/SubClasses/PathOfTheBeast-ja.txt index 0fe6053fd7..3abc796a1b 100644 --- a/SolastaUnfinishedBusiness/Translations/ja/SubClasses/PathOfTheBeast-ja.txt +++ b/SolastaUnfinishedBusiness/Translations/ja/SubClasses/PathOfTheBeast-ja.txt @@ -24,7 +24,7 @@ Feature/&PowerPathOfTheBeastFormOfTheBeastTailTitle=形状: 尾 Feature/&PowerPathOfTheBeastFormOfTheBeastTitle=獣の姿 Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeDescription=対象は対象の射程範囲内にいるあなたが選んだ別のクリーチャーを攻撃します。 Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeTitle=伝染する怒り:強制攻撃 -Feature/&PowerPathOfTheBeastInfectiousFuryDescription=激怒中に肉体の武器でクリーチャーを攻撃すると、あなたの中の獣がターゲットを狂暴な怒りで呪うことができます。ターゲットは【判断力】セーヴィング スロー (難易度は 8 + あなたの【耐久力】修正値 + あなたの熟練度ボーナス) に成功しなければ、以下の効果のいずれか (選択可能) を受けます。 +Feature/&PowerPathOfTheBeastInfectiousFuryDescription=激怒中に肉体武器でクリーチャーを攻撃すると、あなたの中の獣がターゲットを狂暴な怒りで呪うことができます。ターゲットは【判断力】セーヴィング スロー (難易度は 8 + 【耐久力】修正値 + 習熟ボーナス) に成功しなければ、以下の効果のいずれか (選択可能) を受けます。\n\nこの特徴は習熟ボーナスに等しい回数使用でき、大休憩を終えると消費した使用回数をすべて回復します。 Feature/&PowerPathOfTheBeastInfectiousFuryMindlashDescription=対象は2d12の精神ダメージを受ける。 Feature/&PowerPathOfTheBeastInfectiousFuryMindlashTitle=伝染性の怒り:マインドラッシュ Feature/&PowerPathOfTheBeastInfectiousFuryTitle=伝染する怒り diff --git a/SolastaUnfinishedBusiness/Translations/ko/Feats/MeleeCombat-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Feats/MeleeCombat-ko.txt index 36243e0817..881d8f2e79 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Feats/MeleeCombat-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Feats/MeleeCombat-ko.txt @@ -34,8 +34,6 @@ Feat/&FeatFencerDescription=근접 한손 또는 다용도 무기를 들고 다 Feat/&FeatFencerTitle=검객 Feat/&FeatGreatWeaponDefenseDescription=대형 무기를 사용하여 힘들게 싸우면 다음과 같은 이점을 얻을 수 있습니다.\n• 생명체의 체력을 0으로 줄이거나 근접 무기로 치명타 공격을 가하면 턴이 끝날 때까지 이동 속도가 15피트 증가합니다.{99 }• 양손에 무거운 근접 무기나 다용도 무기를 들고 공격 행동을 취하면 다음 턴이 시작될 때까지 AC가 +2 증가합니다. 다른 무기나 방패를 장착하면 이 혜택을 잃게 됩니다. Feat/&FeatGreatWeaponDefenseTitle=전투의 열정 -Feat/&FeatHammerThePointDescription=같은 지점에 집중하고 집중하는 방법을 알고 있습니다. 당신이 목표에 대해 공격 굴림을 한 후, 당신의 턴이 끝날 때까지 이 목표에 대한 공격 및 피해 굴림에 +1을 얻습니다. -Feat/&FeatHammerThePointTitle=요점을 망치다 Feat/&FeatLongswordFinesseDescription=당신은 장검의 대가의 후손이며, 그 숙달 중 일부가 당신에게 물려졌습니다. 다음과 같은 이점이 있습니다.\n• 민첩 점수가 1씩 증가하여 최대 20이 됩니다.\n• 롱소드를 들고 있는 동안 갑옷 클래스에 +1 보너스를 얻습니다.\n• 롱소드는 휘두를 때의 기교 속성. Feat/&FeatLongswordFinesseTitle=롱소드 기교 Feat/&FeatOldTacticsDexDescription=민첩성을 1만큼 증가시킵니다. 라운드당 한 번, 근접 무기 범위 내에 있는 엎드린 적이 일어서면 대상에 대해 기회 공격을 할 수 있습니다. diff --git a/SolastaUnfinishedBusiness/Translations/ko/Feats/OtherFeats-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Feats/OtherFeats-ko.txt index b7fc867f5c..26ba66758e 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Feats/OtherFeats-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Feats/OtherFeats-ko.txt @@ -8,8 +8,6 @@ Feat/&FeatAlertDescription=항상 위험을 경계하면 다음과 같은 이점 Feat/&FeatAlertTitle=알리다 Feat/&FeatArcaneArcherAdeptDescription=당신은 특별한 전투 기동을 수행할 수 있는 신비한 마법과 활 훈련을 가지고 있습니다. Feat/&FeatArcaneArcherAdeptTitle=비전 궁수 숙련자 -Feat/&FeatAstralArmsDescription=지혜가 1 증가하여 최대 20까지 증가합니다.\n당신의 차례에 비무장 공격을 가할 때 도달 범위는 10피트입니다. 다른 생물이 비무장 공격 범위에 들어갈 때 기회 공격을 유발합니다. . -Feat/&FeatAstralArmsTitle=아스트랄 리치 Feat/&FeatAthleteDexDescription=귀하는 다음과 같은 이점을 얻기 위해 광범위한 신체 훈련을 받았습니다.\n• 민첩성을 1 증가시켜 최대 20까지 높입니다.\n• 엎드린 상태에서는 일어서더라도 움직일 필요가 없습니다.\n• 등반에는 추가 이동 비용이 들지 않습니다.\n• 이미 능숙한 경우 육상 기술이나 전문 지식에 능숙해집니다. Feat/&FeatAthleteDexTitle=선수 [덱스] Feat/&FeatAthleteStrDescription=다음과 같은 이점을 얻기 위해 광범위한 신체 훈련을 받았습니다.\n• 근력을 1 증가하여 최대 20까지 높입니다.\n• 엎드린 상태에서는 일어서더라도 움직일 필요가 없습니다.\n• 등반에는 추가 이동 비용이 들지 않습니다.\n• 이미 능숙한 경우 육상 기술이나 전문 지식에 능숙해집니다. diff --git a/SolastaUnfinishedBusiness/Translations/ko/Feats/RangedCombat-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Feats/RangedCombat-ko.txt index bcc6f7837d..0d5b4fc9ba 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Feats/RangedCombat-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Feats/RangedCombat-ko.txt @@ -10,8 +10,6 @@ Feat/&FeatDeadeyeDescription=더 치명적인 사격을 위해 정확도를 교 Feat/&FeatDeadeyeTitle=명사수 Feat/&FeatRangedExpertDescription=원거리 무기를 사용한 숙련된 훈련을 통해 다음과 같은 이점을 얻을 수 있습니다.\n• 근접 거리에서의 공격은 불이익을 초래하지 않습니다.\n• 자신의 차례에 공격 행동을 취하면 한 손으로 원거리 추가 공격을 할 수 있습니다. 당신의 속성 수정자가 손상됩니다. Feat/&FeatRangedExpertTitle=석궁 전문가 -Feat/&FeatSteadyAimDescription=민첩성을 1 증가시켜 최대 20까지 증가시킵니다. 보너스 행동으로, 당신은 현재 턴의 다음 공격 굴림에서 이점을 얻습니다. 이 보너스 행동은 이번 턴 동안 움직이지 않은 경우에만 사용할 수 있으며, 보너스 행동을 사용한 후에는 현재 턴이 끝날 때까지 속도가 0입니다. -Feat/&FeatSteadyAimTitle=꾸준한 목표 Feature/&PowerFeatSteadyAimDescription=보너스 행동으로, 당신은 현재 턴의 다음 공격 굴림에서 이점을 얻습니다. 이 보너스 행동은 이번 턴 동안 움직이지 않은 경우에만 사용할 수 있으며, 보너스 행동을 사용한 후에는 현재 턴이 끝날 때까지 속도가 0입니다. Feature/&PowerFeatSteadyAimTitle=꾸준한 목표 Tooltip/&DeadeyeConcentration=명사수 비활성화 diff --git a/SolastaUnfinishedBusiness/Translations/ko/FightingStyles-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/FightingStyles-ko.txt index 45f9c9f708..35096d26aa 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/FightingStyles-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/FightingStyles-ko.txt @@ -22,8 +22,6 @@ FightingStyle/&LungerDescription=무거운 태그가 없고 다른 무기나 방 FightingStyle/&LungerTitle=폐 FightingStyle/&MercilessDescription=당신의 차례에 근접 무기 공격을 사용하여 목표를 0 HP로 줄이면, 목표를 볼 수 있는 숙련도 보너스(반올림)의 절반에 해당하는 쓰러진 목표 반경 내의 적들은 지혜 내성(DC 8 + 숙련 보너스 + 힘 수정치) 또는 다음 턴이 끝날 때까지 당신을 두려워하게 됩니다. 유발 공격이 치명타인 경우 반경은 대신 숙련도 보너스와 같습니다. FightingStyle/&MercilessTitle=무자비한 -FightingStyle/&MonkShieldExpertDescription=당신은 방패 숙련도를 얻으며, 그 손으로 비무장 공격을 하는 것을 막지 못합니다. 또한 방패를 휘두르는 동안에도 모든 몽크 능력이 작동합니다. -FightingStyle/&MonkShieldExpertTitle=수도원 방패 훈련 FightingStyle/&PolearmExpertDescription=폴암을 이용한 전문 훈련을 통해 다음과 같은 이점을 얻을 수 있습니다.\n• 공격 액션을 취하고 폴암 무기로만 공격할 때 보너스 액션을 사용하여 무기의 반대쪽 끝으로 근접 공격을 할 수 있습니다. 이 공격은 기본 공격과 동일한 능력 수정자를 사용하고 1d4의 타격 피해를 줍니다.\n• 다른 생물이 장창 무기를 휘두르며 도달 범위에 들어오면 기회 공격을 유발합니다. FightingStyle/&PolearmExpertTitle=폴암 마스터 FightingStyle/&PugilistDescription=비무장 공격은 추가로 1d4의 타격 피해를 입히고, 보너스 행동으로 오프핸드로 펀치를 날릴 수 있습니다. 다른 무기나 방패가 없다면 보너스 액션으로 밀쳐낼 수 있습니다. diff --git a/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt index daf2c2e644..177e8e3a40 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Others-ko.txt @@ -281,6 +281,8 @@ Screen/&RangerSpellTitle=레인저 Screen/&RepertoireHeaderFormat={0} Screen/&RoguishSpellDescription=이 주문은 귀하의 Roguish 원형에 의해 부여되었으며 귀하에게 알려진 것으로 간주됩니다. Screen/&RoguishSpellTitle=불량한 +Screen/&SpellAlternatePointsCostTooltip={0}포인트 +Screen/&SpellAlternatePointsTooltip=주문 포인트가 {0}개 남았습니다. Screen/&SpellSlotsUsedLongDescription=이 레벨에서 {0}개의 주문 슬롯을 사용했습니다. Screen/&SpellSlotsUsedShortDescription={0}개의 협정 매직 슬롯을 사용했습니다. Screen/&SpellSlotsUsedShortLongDescription=이 레벨에서 조약 마법 슬롯 {0}개와 주문 슬롯 {1}개를 사용했습니다. diff --git a/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt index b3a23a6916..b12b9b1353 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Settings-ko.txt @@ -42,6 +42,7 @@ ModUi/&Bestiary=동물 우화집 ModUi/&BestowCurseNoConcentrationRequiredForSlotLevel5OrAbove=저주 부여는 L5+ 주문 슬롯으로 시전할 때 집중이 필요하지 않습니다. ModUi/&BlindedConditionDontAllowAttackOfOpportunity=맹인 상태는 기회 공격을 허용하지 않습니다. ModUi/&Blueprints=청사진 +ModUi/&Camera=카메라: ModUi/&Campaigns=캠페인: ModUi/&CampaignsAndLocations=캠페인 및 위치: ModUi/&Category=범주 @@ -118,6 +119,7 @@ ModUi/&EnableCheatMenu=치트 메뉴 활성화 ModUi/&EnableCustomPortraits=맞춤 인물 사진 활성화 ModUi/&EnableCustomPortraitsHelp=• 사용자 정의 초상화를 하위 폴더 개인 또는 PreGen 아래에 배치하세요. , 영웅의 이름을 따서 명명됨 [예: Anton, Celia, Nialla 등]\n• PNG 사용 투명 레이어가 있는 256 x 384 픽셀 크기의 이미지 [최상의 결과를 얻으려면 김프 사용] ModUi/&EnableDungeonMakerModdedContent=Dungeon Maker Pro 활성화\n[플랫 룸, 150x150 및 200x200 던전 크기 및 모든 환경의 자산을 혼합하는 장식 없음] +ModUi/&EnableElevationCameraToStayAtPosition=비활성화된 후 고도 카메라를 활성화하여 위치를 유지합니다. ModUi/&EnableEpicPointsAndArray=엄청난 35포인트 구매 시스템 및 배열 활성화 [17,15,13,12,10,8] [다시 시작 필요] ModUi/&EnableExtendedProficienciesPanelDisplay=확장된 숙련도 패널 표시 활성화 [비전 사격, 주입, 기동 및 다용도]\n[performance 캐릭터 점검에 들어갑니다. 사용에 따른 책임은 본인에게 있습니다] ModUi/&EnableFeatsAtEvenLevels=레벨 2, 10, 18에서 재능 선택 활성화 @@ -233,13 +235,15 @@ ModUi/&Monsters=괴물: ModUi/&MovementGridWidthModifier=이동 그리드 너비에 [%]를 곱합니다. ModUi/&MulticlassKeyHelp=주문을 SHIFT 클릭하면 소비되는 기본 레퍼토리 슬롯 유형이 반전됩니다.\n[워록은 흰색 주문 슬롯을 소비합니다. 다른 사람들은 녹색 계약을 사용합니다.] ModUi/&MultiplyTheExperienceGainedBy=경험치 획득량 [%] 곱하기 +ModUi/&NeverMoveCameraOnEnemyTurn=+ 적의 턴 중에는 카메라가 움직이지 않습니다 ModUi/&NoExperienceOnLevelUp=레벨업에는 경험치가 필요하지 않습니다. ModUi/&OfferAdditionalLoreFriendlyNames=캐릭터 생성 시 추가 지식 친화적인 이름 제공 ModUi/&OfficialObscurementRulesCancelAdvDisPairs=+ 장점 / 단점 취소 눈먼, 보이지 않는 및 인지된 쌍 [공식 장점 / 단점과 함께 유용함 규칙] ModUi/&OfficialObscurementRulesHeavilyObscuredAsProjectileBlocker=+ 심하게 가려진 영역을 발사체 차단기로 변경 [Cloud Kill, 안개 구름 , 발화구름, 꽃잎 폭풍, 진눈깨비, 악취나는 구름] ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget=+ 투명 생물은 심하게 가려져 표적이 될 수 있으며 생물에 대한 공격 굴림에는 불리한 점이 있고 생물의 공격 굴림에는 이점이 있습니다. ModUi/&OfficialObscurementRulesMagicalDarknessAsProjectileBlocker=+ 마법으로 가려진 영역을 발사체 차단기로 변경 [어둠 주문 효과의 모든 소스] -ModUi/&OfficialObscurementRulesTweakMonsters=+ 필요할 때마다 몬스터와 NPC에 Darkvision, BlindSight 및 TrueSight를 추가합니다.\n [설정 컬렉션 암흑시야를 가져야 하는 괴물, 진정한 시야를 가져야 하는 괴물, 눈이 멀게 해야 하는 괴물] +ModUi/&OfficialObscurementRulesTweakMonsters=+ 필요할 때마다 몬스터와 NPC에 Darkvision, BlindSight 및 TrueSight를 추가합니다. +ModUi/&OfficialObscurementRulesTweakMonstersHelp=[설정 컬렉션 암흑시야를 가져야 하는 괴물, 진정한 시야를 가져야 하는 괴물, 시야를 가져야 하는 괴물] ModUi/&OnlyShowMostPowerfulUpcastConjuredElementalOrFey=+ 소환 목록에서 가장 강력한 생물만 표시 ModUi/&OutlineGridWidthModifier=윤곽선 그리드 너비에 [%]를 곱합니다. ModUi/&OutlineGridWidthSpeed=윤곽선 그리드 애니메이션 속도에 [%]를 곱합니다. @@ -276,6 +280,7 @@ ModUi/&SelectTabletop=탁상 선택 ModUi/&SenseNormalVisionRangeMultiplier=일반 시야 범위 수정 [전투에서만] ModUi/&Services=서비스 ModUi/&SetBeltOfDwarvenKindBeardChances=드워프족의 허리띠 수염 출현 확률 +ModUi/&SetElevationCameraMaxHeightBy=고도 카메라 최대 높이 증가 ModUi/&SettingsExport=내보내다 ModUi/&SettingsHelp=• 호스트는 현재 구성을 내보내고 내보내기 폴더를 열고 동료와 쉽게 공유할 수 있습니다.\n• 게스트는 내보내기 폴더를 열고 호스트에서 공유 파일을 붙여넣고 에서 로드할 수 있습니다. i>[다시 시작해야 함] ModUi/&SettingsLoad=• 내보낸 설정 로드 @@ -317,6 +322,8 @@ ModUi/&UnlockGlowingEyeColors=빛나는 눈 색깔 추가 ModUi/&UnlockMarkAndTattoosForAllCharacters=모든 캐릭터의 소서러 원산지 표시와 문신을 잠금 해제하세요. ModUi/&UnlockSkinColors=피부색 잠금 해제 ModUi/&Update=업데이트 +ModUi/&UseAlternateSpellPointsSystem=공식 변형 주문 포인트 규칙을 사용하세요. +ModUi/&UseAlternateSpellPointsSystemHelp=[시전자 레벨에 따라 증가하는 주문 포인트 풀이 있습니다.\nL01: 04 L02: 06 L03 : 14 L04: 17 L05: 27 L06: 32 L07: < color=white>38 L08: 44 L09: 57 L10: 64\nL11: 73 L12: 73 L13: 83 L14: 83 L15: 94 L16: 94 L17: 107 L18: 114 L19: 123 L20: 133\n주문 시전 비용은 SL1: 2 SL2: 3 SL3: 5 SL4: 6 SL5: 7 SL6: 9 SL7: 10 SL8: 11 SL9: 13\n이 시스템에서는 짧은 휴식 슬롯 복구 기능이 실행되지 않습니다. ] ModUi/&UseElfFaceModelsOnTieflings=티플링에서 엘프 얼굴 모델을 사용하세요. ModUi/&UseHeightOneCylinderEffect=Black Tentacles, Entangle, Grease [square] 또는 를 시전할 때 높이 1 원통 효과를 사용하세요. 급상승 [round] ModUi/&UseMathFlankingRules=+ 정확한 수학을 사용하여 측면 공격 결정 [느린 시스템에서는 성능에 영향을 미칠 수 있음] @@ -326,6 +333,7 @@ ModUi/&UseOfficialFlankingRulesAlsoForRanged=+ 원거리 공격도 활성화 ModUi/&UseOfficialFlankingRulesAlsoForReach=+ 도달 공격도 활성화 [정확한 수학 비활성화] ModUi/&UseOfficialFlankingRulesButAddAttackModifier=+ 이점 대신 공격 굴림에 +1을 부여합니다. ModUi/&UseOfficialFoodRationsWeight=공식 식량 배급 무게 2파운드를 사용하세요. -ModUi/&UseOfficialObscurementRules=공식 조명, 모호함, 시야 전투 규칙을 사용하세요\n[인식하는 공격자는 인지할 수 없는 방어자는 ADV를 얻고, 그렇지 않은 공격자는 이를 인지할 수 있는 방어자는 DIS\n를 얻습니다. 매우 가려진 영역은 실명 상태를 유발합니다. 생물에 대한 공격 굴림에는 ADV가 있고 생물의 공격 굴림에는 DIS\n가 있습니다. 개인을 대상으로 하는 모든 거리 주문은 공격자가 시력이 없으면 시전할 수 없습니다. , 시력이 필요하다고 명확하게 명시하지 않은 경우는 제외] +ModUi/&UseOfficialObscurementRules=공식 조명, 모호함, 시야 전투 규칙을 사용하세요. +ModUi/&UseOfficialObscurementRulesHelp=[인지할 수 없는 방어자를 감지한 공격자는 ADV를 얻고, 감지할 수 있는 방어자를 감지하지 못한 공격자는 DIS를 얻습니다.\n 심하게 가려진 영역은 실명 상태를 유발합니다. 생물에는 ADV가 있고 생물의 공격 굴림에는 DIS가 있습니다.\n 개인을 대상으로 하는 모든 거리 주문은 공격자가 시력이 없으면 시전할 수 없습니다. 단, 시력이 필요하다고 명확하게 명시하지 않은 주문은 제외합니다.] ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons=무거운 무기를 휘두를 때 공식 소규모 종족 규칙을 사용하세요. [공격에 불이익이 있습니다] ModUi/&Visuals=시각적: [다시 시작 필요] diff --git a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt index 3ad6a701d9..52b0308e22 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/Spells/Spells04-ko.txt @@ -13,6 +13,18 @@ Condition/&ConditionElementalBaneTitle=엘리멘탈 베인: {0} Condition/&ConditionIrresistiblePerformanceDescription=손이나 입이 필요한 작업은 수행할 수 없지만 그 외에는 정상적으로 행동할 수 있습니다. Condition/&ConditionIrresistiblePerformanceTitle=디나-모에 훔 Condition/&ConditionPsionicBlastTitle=혼란스러운 마음 +Condition/&ConditionSickeningRadianceDescription=반경 5피트 범위에서 희미한 빛을 방출합니다. 이 빛은 당신이 눈에 보이지 않는 것을 불가능하게 만듭니다. +Condition/&ConditionSickeningRadianceExhausted1Description=능력치 판정에 불이익을 받습니다. +Condition/&ConditionSickeningRadianceExhausted1Title=지쳐 1 +Condition/&ConditionSickeningRadianceExhausted2Description=속도가 절반으로 줄어들고, 능력치 판정에 불이익을 받습니다. +Condition/&ConditionSickeningRadianceExhausted2Title=지쳐 2 +Condition/&ConditionSickeningRadianceExhausted3Description=당신의 속도는 절반으로 줄어들고 능력 판정, 공격 굴림, 내성 굴림에 불이익을 받습니다. +Condition/&ConditionSickeningRadianceExhausted3Title=지쳐 3 +Condition/&ConditionSickeningRadianceExhausted4Description=당신의 속도와 최대 체력은 절반으로 줄어들고, 능력 체크, 공격 굴림, 내성 굴림에 불이익을 받습니다. +Condition/&ConditionSickeningRadianceExhausted4Title=지쳐 4 +Condition/&ConditionSickeningRadianceExhausted5Description=속도는 0이고, 최대 체력은 절반으로 줄어들며, 능력 판정, 공격 굴림, 내성 굴림에 불이익을 받습니다. +Condition/&ConditionSickeningRadianceExhausted5Title=지쳐 5 +Condition/&ConditionSickeningRadianceTitle=역겨운 광채 Condition/&ConditionStaggeringSmiteEnemyDescription=정신적 피해를 입게 됩니다. Condition/&ConditionStaggeringSmiteEnemyTitle=엄청난 일격 Condition/&ConditionTreeForestGuardianDescription=당신은 임시 체력 10점을 얻고, 건강 내성 굴림을 유리하게 하고, 민첩과 지혜 기반 공격 굴림을 유리하게 만듭니다. @@ -50,6 +62,8 @@ Spell/&PsionicBlastDescription=당신은 30피트 콘에서 정신력을 약화 Spell/&PsionicBlastTitle=사이오닉 폭발 Spell/&PsychicLanceDescription=당신은 범위 내에서 볼 수 있는 생물에게 이마에서 반짝이는 심령력의 창을 발사합니다. 지능 내성 굴림에 성공해야 하며, 그렇지 않으면 7d6의 정신적 피해를 입고 다음 턴이 끝날 때까지 무력화되어야 합니다. 내성굴림에 성공하면 생물은 절반의 피해를 입고 무력화되지 않습니다. 더 높은 수준에서. 4레벨 이상의 주문 슬롯을 사용하여 이 주문을 시전하면 4레벨 이상의 슬롯 레벨마다 피해가 1d6씩 증가합니다. Spell/&PsychicLanceTitle=라울로팀의 정신창 +Spell/&SickeningRadianceDescription=범위 내에서 선택한 지점을 중심으로 반경 30피트의 구체 내에서 희미한 빛이 퍼집니다. 빛은 모퉁이로 퍼지며, 주문이 끝날 때까지 지속됩니다. 생물이 턴에서 처음으로 주문 영역으로 이동하거나 그곳에서 턴을 시작할 때, 그 생물은 건강 내성 굴림에 성공하거나 4d10의 복사 피해를 입어야 하며, 한 수준의 탈진을 겪고 희미한 빛을 방출합니다. 반경 5피트. 이 빛은 생물이 눈에 보이지 않는 것으로부터 이익을 얻는 것을 불가능하게 만듭니다. 이 주문으로 인한 빛과 피로는 주문이 끝나면 사라집니다. +Spell/&SickeningRadianceTitle=역겨운 광채 Spell/&StaggeringSmiteDescription=이 주문이 지속되는 동안 다음에 당신이 무기 공격으로 생명체를 공격할 때, 당신의 무기는 몸과 정신을 모두 관통하고 공격은 대상에게 추가로 4d6의 심령 피해를 입힙니다. 대상은 지혜 내성 굴림을 해야 합니다. 저장에 실패하면 공격 굴림과 능력 확인에 불이익을 받고 다음 턴이 끝날 때까지 반응을 취할 수 없습니다. Spell/&StaggeringSmiteTitle=엄청난 일격 Spell/&TreeForestGuardianDescription=피부가 거칠어지고 머리카락에서 잎이 돋아나며 다음과 같은 이점을 얻습니다.\n• 임시 체력 10점을 얻습니다.\n• 건강 내성 굴림을 유리하게 굴립니다.\n• 민첩과 지혜를 얻습니다. 기반 공격 굴림이 유리합니다.\n• 당신으로부터 30피트 내의 생물은 힘 내성 굴림을 해야 하며 그렇지 않으면 주문 지속 시간 동안 방해를 받아야 합니다. 턴이 시작될 때마다 저장을 다시 시도할 수 있습니다. diff --git a/SolastaUnfinishedBusiness/Translations/ko/SubClasses/CollegeOfAudacity-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/SubClasses/CollegeOfAudacity-ko.txt index 27b67c7b85..b751b62542 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/SubClasses/CollegeOfAudacity-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/SubClasses/CollegeOfAudacity-ko.txt @@ -1,26 +1,27 @@ -Action/&AudaciousWhirlToggleDescription=대담한 소용돌이 활성화/비활성화 -Action/&AudaciousWhirlToggleTitle=대담한 소용돌이 -Action/&MasterfulWhirlToggleDescription=Masterful Whirl 활성화/비활성화 -Action/&MasterfulWhirlToggleTitle=뛰어난 소용돌이 -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=AC로 소용돌이 굴립니다. -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=방어 소용돌이 -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=당신의 턴에 공격 행동을 취할 때마다, 당신의 걷는 속도는 턴이 끝날 때까지 10피트 증가하며, 이 행동의 일부로 하는 근접 무기 공격이 생물에 명중하면 Bardic을 한 번 사용할 수 있습니다. 무기가 명중한 대상에 추가 피해를 주도록 영감을 줍니다. 피해는 Bardic Inspiration 주사위에 굴린 숫자와 같습니다. 다음과 같은 특정 동작도 선택합니다.\n• 방어 소용돌이: 다음 턴이 시작될 때까지 AC에 음유시인 영감 주사위 굴림을 추가합니다.\n• 베기 소용돌이 b>: 당신은 당신으로부터 5피트 내의 다른 모든 적 생물에게 추가 피해를 줍니다.\n• 이동 소용돌이: 당신은 턴이 끝날 때까지 교전 해제 혜택을 얻습니다. -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=대담한 소용돌이 +Action/&AudaciousWhirlToggleDescription=블레이드 플러리시 활성화/비활성화 +Action/&AudaciousWhirlToggleTitle=블레이드 플로리쉬 +Action/&MasterfulWhirlToggleDescription=마스터의 번영 활성화/비활성화 +Action/&MasterfulWhirlToggleTitle=마스터의 번영 +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=AC로 플로리쉬 롤을 합니다. +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=방어적인 번영 +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=당신의 턴에 공격 행동을 취할 때마다, 당신의 걷는 속도는 턴이 끝날 때까지 10피트 증가하며, 이 행동의 일부로 하는 근접 무기 공격이 생물에 명중하면 Bardic을 한 번 사용할 수 있습니다. 무기가 명중한 대상에게 추가 피해를 주도록 영감을 줍니다. 피해는 Bardic Inspiration 주사위에 굴린 숫자와 같습니다. 다음과 같은 특정 동작도 선택합니다.\n• 방어적 번영: 다음 턴이 시작될 때까지 AC에 음유시인 영감 주사위 굴림을 추가합니다.\n• 번영 베기 b>: 당신은 당신으로부터 5피트 내의 다른 모든 적 생물에게 추가 피해를 줍니다.\n• 이동 번영: 당신은 턴이 끝날 때까지 교전 해제 혜택을 얻습니다. +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=블레이드 플로리쉬 Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=당신은 중간 갑옷과 시미터에 능숙해집니다. 무기를 음유시인 주문의 주문 시전 초점으로 사용할 수도 있습니다. Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=보너스 숙련도 -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Audacious Whirl 옵션을 사용할 때마다 Bardic Inspiration 주사위를 소비하는 대신 D6을 굴려서 사용할 수 있습니다. -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=뛰어난 소용돌이 +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Blade Flourish 옵션을 사용할 때마다 Bardic Inspiration 주사위를 소비하는 대신 D6을 굴려서 사용할 수 있습니다. +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=마스터의 번영 Feature/&FightingStyleChoiceCollegeOfAudacityDescription=당신은 당신의 전문 분야로 특정 전투 스타일을 채택합니다. 결투나 투웨폰 파이팅 중 하나를 선택하세요. Feature/&FightingStyleChoiceCollegeOfAudacityTitle=격투 스타일 -Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Bardic Inspiration을 한 번 사용하여 무기가 공격한 대상에게 추가 피해를 주도록 할 수 있습니다. 피해는 Bardic Inspiration 주사위에 굴린 숫자와 동일하며 Masterful Whirl의 경우 D6입니다. 또한 다음 턴이 시작될 때까지 AC에 굴린 숫자를 추가합니다. -Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=방어 소용돌이 -Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Bardic Inspiration을 한 번 사용하여 무기가 공격한 대상에게 추가 피해를 주도록 할 수 있습니다. 피해는 Bardic Inspiration 주사위에 굴린 숫자와 동일하며 Masterful Whirl의 경우 D6입니다. 당신은 당신의 턴이 끝날 때까지 교전 해제의 이점을 얻습니다. -Feature/&PowerCollegeOfAudacityMobileWhirlTitle=모바일 소용돌이 -Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=당신은 Bardic Inspiration을 한 번 사용하여 무기가 당신이 명중한 목표와 5피트 내의 다른 모든 적 생물에게 추가 피해를 주도록 할 수 있습니다. 피해는 Bardic Inspiration 주사위에 굴린 숫자와 동일하며 Masterful Whirl의 경우 D6입니다. -Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=칼날의 소용돌이 -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0}은 무기가 대상에게 추가 피해를 입히게 할 수 있습니다. 피해는 Bardic Inspiration 주사위에서 굴린 숫자와 동일하며 Masterful Whirl인 경우 D6입니다. -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=회전 -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=회전 -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=회전 +Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=당신은 당신의 바드 영감의 한 번 사용을 소비하여 무기가 당신이 맞힌 대상에게 추가 피해를 입히게 할 수 있습니다. 피해는 당신이 바드 영감 주사위에서 굴린 숫자 또는 마스터의 번영이라면 D6과 같습니다. 당신은 또한 당신의 다음 턴이 시작될 때까지 굴린 숫자를 당신의 AC에 더합니다. +Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=방어적인 번영 +Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Bardic Inspiration을 한 번 사용하여 무기가 명중한 대상에게 추가 피해를 주도록 할 수 있습니다. 피해는 Bardic Inspiration 주사위에 굴린 숫자와 동일하며 Master's Flourish의 경우 D6입니다. 당신은 당신의 턴이 끝날 때까지 교전 해제의 이점을 얻습니다. +Feature/&PowerCollegeOfAudacityMobileWhirlTitle=모바일 번영 +Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=당신은 Bardic Inspiration을 한 번 사용하여 무기가 당신이 명중한 목표와 당신으로부터 5피트 내의 다른 모든 적 생물에게 추가 피해를 주도록 할 수 있습니다. 피해는 Bardic Inspiration 주사위에 굴린 숫자와 동일하며 Master's Flourish의 경우 D6입니다. +Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=슬래싱 번창 +Feedback/&CollegeOfAudacityDefensiveWhirl={0}는 {2} 주사위를 굴려 AC에 {3}을 추가합니다. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0}은 무기가 대상에게 추가 피해를 입히게 할 수 있습니다. 피해는 Bardic Inspiration 주사위에서 굴린 숫자와 같거나 Master's Flourish인 경우 D6과 같습니다. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=융성 +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=융성 +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=융성 Subclass/&CollegeOfAudacityDescription=검 대학의 음유시인들은 대담한 무기 실력으로 즐거움을 선사합니다. 그들은 칼 삼키기, 칼 던지기, 저글링, 모의 전투 등의 묘기를 선보입니다. 그들은 재미를 위해 무기를 사용하지만 그 자체로도 고도로 훈련되고 숙련된 전사입니다. Subclass/&CollegeOfAudacityTitle=검 대학 diff --git a/SolastaUnfinishedBusiness/Translations/ko/SubClasses/MartialTactician-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/SubClasses/MartialTactician-ko.txt index 1a17254bd5..2658693452 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/SubClasses/MartialTactician-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/SubClasses/MartialTactician-ko.txt @@ -12,8 +12,8 @@ Feature/&FeatureSetTacticianHonedCraftDescription=선택한 기술이나 도구 Feature/&FeatureSetTacticianHonedCraftTitle=연마된 스킬 Feature/&FeatureSetTacticianSharpMindDescription=선택한 기술로 숙련도를 높이세요. Feature/&FeatureSetTacticianSharpMindTitle=날카로운 마음 -Feature/&FeatureSetTacticianTacticalAwarenessDescription=무력화되지 않은 동안에는 다음과 같은 이점을 얻습니다.\n• 턴당 한 번, 무기 공격은 숙련도 보너스와 동일한 추가 피해를 줍니다.\n• 기회 공격은 유리하게 수행됩니다.\n• 당신에 대한 기회 공격은 불리하게 수행됩니다. -Feature/&FeatureSetTacticianTacticalAwarenessTitle=전술적 인식 +Feature/&FeatureSetTacticianTacticalAwarenessDescription=전투 중에 당신은 매 턴 시작 시 우월 주사위를 얻습니다. +Feature/&FeatureSetTacticianTacticalAwarenessTitle=전쟁의 달인 Feature/&FeatureTacticianGambitDieSizeD10Description=당신의 우월성 주사위가 D10으로 업그레이드되었습니다. Feature/&FeatureTacticianGambitDieSizeD10Title=우수성 다이 크기(d10) Feature/&FeatureTacticianGambitDieSizeD12Description=당신의 우월성 주사위가 D12로 업그레이드되었습니다. diff --git a/SolastaUnfinishedBusiness/Translations/ko/SubClasses/PathOfTheBeast-ko.txt b/SolastaUnfinishedBusiness/Translations/ko/SubClasses/PathOfTheBeast-ko.txt index 7d7510dc9e..8e57962842 100644 --- a/SolastaUnfinishedBusiness/Translations/ko/SubClasses/PathOfTheBeast-ko.txt +++ b/SolastaUnfinishedBusiness/Translations/ko/SubClasses/PathOfTheBeast-ko.txt @@ -24,7 +24,7 @@ Feature/&PowerPathOfTheBeastFormOfTheBeastTailTitle=형태: 꼬리 Feature/&PowerPathOfTheBeastFormOfTheBeastTitle=야수의 형태 Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeDescription=목표는 목표의 범위 내에 있는 당신이 선택한 다른 생물을 공격합니다. Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeTitle=감염성 분노: 강제 공격 -Feature/&PowerPathOfTheBeastInfectiousFuryDescription=당신이 분노하는 동안 자연 무기로 생물체를 공격하면, 당신 안에 있는 야수가 맹렬한 분노로 목표물을 저주할 수 있습니다. 대상은 지혜 내성 굴림(DC = 8 + 건강 수정치 + 숙련 보너스)에 성공해야 하며, 그렇지 않으면 다음 효과 중 하나를 겪어야 합니다(선택). +Feature/&PowerPathOfTheBeastInfectiousFuryDescription=당신이 분노하는 동안 자연 무기로 생물체를 공격하면, 당신 안에 있는 야수가 맹렬한 분노로 목표물을 저주할 수 있습니다. 대상은 지혜 내성 굴림(DC = 8 + 건강 수정치 + 숙련 보너스)에 성공해야 하며 그렇지 않으면 다음 효과 중 하나를 받아야 합니다(선택).\n\n이 기능은 여러 번 사용할 수 있습니다. 숙련도 보너스와 동일하며, 긴 휴식을 마치면 사용한 모든 사용 횟수를 회복합니다. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashDescription=대상은 2d12의 정신적 피해를 입습니다. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashTitle=전염성 분노: 마인드래쉬 Feature/&PowerPathOfTheBeastInfectiousFuryTitle=전염성 분노 diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/MeleeCombat-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/MeleeCombat-pt-BR.txt index 6e84f4e103..fded5892e5 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/MeleeCombat-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/MeleeCombat-pt-BR.txt @@ -34,8 +34,6 @@ Feat/&FeatFencerDescription=Se você realizar a ação de Ataque em seu turno en Feat/&FeatFencerTitle=Esgrimista Feat/&FeatGreatWeaponDefenseDescription=Você luta arduamente com armas grandes, obtendo os seguintes benefícios:\n• Quando você reduz uma criatura a 0 pontos de vida ou desfere um acerto crítico com uma arma corpo a corpo, sua velocidade de movimento aumenta em 4,5 metros até o final do seu turno.{99 }• Quando você realiza a ação Atacar enquanto empunha uma arma corpo a corpo pesada ou versátil em duas mãos, você ganha +2AC até o início do seu próximo turno. Você perde esse benefício se equipar uma arma ou escudo diferente. Feat/&FeatGreatWeaponDefenseTitle=Fervor de Batalha -Feat/&FeatHammerThePointDescription=Você sabe como focar e concentrar-se no mesmo lugar. Depois de fazer uma jogada de ataque contra um alvo, receba +1 nas jogadas de ataque e dano contra esse alvo até o final do seu turno [acumula]. -Feat/&FeatHammerThePointTitle=Martele o ponto Feat/&FeatLongswordFinesseDescription=Você é descendente de um mestre da espada longa e parte desse domínio foi passado para você. Você ganha os seguintes benefícios:\n• Aumenta sua Destreza em 1, até um máximo de 20.\n• Enquanto estiver segurando uma espada longa, você ganha um bônus de +1 na classe de armadura.\n• A Espada Longa tem o propriedade de sutileza quando você a empunha. Feat/&FeatLongswordFinesseTitle=Finesse de Espada Longa Feat/&FeatOldTacticsDexDescription=Aumente sua Destreza em 1. Uma vez por rodada, quando um inimigo caído dentro do alcance de sua arma corpo-a-corpo se levantar, você poderá realizar um ataque de oportunidade contra o alvo. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/OtherFeats-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/OtherFeats-pt-BR.txt index c52fc312f0..ae446f02a8 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/OtherFeats-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/OtherFeats-pt-BR.txt @@ -8,8 +8,6 @@ Feat/&FeatAlertDescription=Sempre atento ao perigo, você ganha os seguintes ben Feat/&FeatAlertTitle=Alerta Feat/&FeatArcaneArcherAdeptDescription=Você possui magia arcana e treinamento com arco que lhe permite realizar manobras especiais de combate. Feat/&FeatArcaneArcherAdeptTitle=Adepto do Arqueiro Arcano -Feat/&FeatAstralArmsDescription=Aumente sua Sabedoria em 1, até um máximo de 20.\nQuando você desfere um ataque desarmado no seu turno, seu alcance é de 3 metros. Outras criaturas provocam um ataque de oportunidade seu quando entram no alcance que você tem com ataques desarmados. . -Feat/&FeatAstralArmsTitle=Alcance Astral Feat/&FeatAthleteDexDescription=Você passou por um extenso treinamento físico para obter os seguintes benefícios:\n• Aumente sua Destreza em 1, até um máximo de 20.\n• Quando você está deitado, levantar-se não custa movimento.\n• Escalar não custa movimento extra.\n• Você ganha proficiência em perícia ou especialização em Atletismo se já for proficiente. Feat/&FeatAthleteDexTitle=Atleta [Dex] Feat/&FeatAthleteStrDescription=Você passou por um extenso treinamento físico para obter os seguintes benefícios:\n• Aumente sua Força em 1, até um máximo de 20.\n• Quando você está deitado, levantar-se não custa movimento.\n• Escalar não custa movimento extra.\n• Você ganha proficiência em perícia ou especialização em Atletismo se já for proficiente. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/RangedCombat-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/RangedCombat-pt-BR.txt index e2ffb22a04..1e291c062a 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/RangedCombat-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Feats/RangedCombat-pt-BR.txt @@ -10,8 +10,6 @@ Feat/&FeatDeadeyeDescription=Você aprendeu a trocar precisão para acertar tiro Feat/&FeatDeadeyeTitle=Atirador afiado Feat/&FeatRangedExpertDescription=Seu treinamento especializado com armas de longo alcance concede estes benefícios:\n• Ataques corpo a corpo não impõem desvantagem.\n• Se você realizar a ação de ataque no seu turno, poderá realizar um ataque bônus de longo alcance com uma mão, adicionando seu modificador de atributo para dano. Feat/&FeatRangedExpertTitle=Especialista em besta -Feat/&FeatSteadyAimDescription=Aumente sua Destreza em 1, até um máximo de 20. Como uma ação bônus, você ganha vantagem em sua próxima jogada de ataque no turno atual. Você pode usar esta ação bônus apenas se não tiver se movido durante este turno e, depois de usar a ação bônus, seu deslocamento será 0 até o final do turno atual. -Feat/&FeatSteadyAimTitle=Mira firme Feature/&PowerFeatSteadyAimDescription=Como uma ação bônus, você ganha vantagem em sua próxima jogada de ataque no turno atual. Você pode usar esta ação bônus apenas se não tiver se movido durante este turno e, depois de usar a ação bônus, seu deslocamento será 0 até o final do turno atual. Feature/&PowerFeatSteadyAimTitle=Mira firme Tooltip/&DeadeyeConcentration=Desativar atirador de elite diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/FightingStyles-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/FightingStyles-pt-BR.txt index 750cf2a115..0a904b15fd 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/FightingStyles-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/FightingStyles-pt-BR.txt @@ -22,8 +22,6 @@ FightingStyle/&LungerDescription=O alcance da sua arma corpo a corpo aumenta em FightingStyle/&LungerTitle=Pulmões FightingStyle/&MercilessDescription=Quando você reduz um alvo a 0 HP usando um ataque com arma corpo a corpo em seu turno, os inimigos dentro de um raio do alvo abatido igual à metade do seu bônus de proficiência (arredondado para cima) que puderem ver o alvo devem fazer um salvamento de Sabedoria (CD 8 + seu bônus de proficiência + seu modificador de Força) ou ficará com medo de você até o final do seu próximo turno. Se o ataque desencadeador for um acerto crítico, o raio será igual ao seu bônus de proficiência. FightingStyle/&MercilessTitle=Impiedoso -FightingStyle/&MonkShieldExpertDescription=Você ganha proficiência em Escudo e eles não o impedem de fazer ataques desarmados com essa mão. Além disso, todas as suas habilidades de monge funcionam mesmo quando você empunha um Escudo. -FightingStyle/&MonkShieldExpertTitle=Treinamento de Escudo Monástico FightingStyle/&PolearmExpertDescription=Seu treinamento especializado com uma arma de haste concede a você estes benefícios:\n• Quando você realiza a ação Atacar e ataca apenas com uma arma de haste, você pode usar uma ação bônus para fazer um ataque corpo a corpo com a extremidade oposta da arma. Este ataque usa o mesmo modificador de habilidade do ataque primário e causa 1d4 de dano de concussão.\n• Outras criaturas provocam um ataque de oportunidade seu quando entram no alcance que você tem ao empunhar uma arma de haste. FightingStyle/&PolearmExpertTitle=Mestre da Arma de Pólo FightingStyle/&PugilistDescription=Seus ataques desarmados causam 1d4 de dano de concussão adicional e você pode socar com a mão improvisada como uma ação bônus. Você pode empurrar como uma ação bônus se não tiver outra arma ou escudo. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt index ff9cae5afe..014e368107 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Others-pt-BR.txt @@ -281,6 +281,8 @@ Screen/&RangerSpellTitle=Guarda-florestal Screen/&RepertoireHeaderFormat={0} Screen/&RoguishSpellDescription=Este feitiço foi concedido pelo seu arquétipo Ladino e é considerado conhecido por você. Screen/&RoguishSpellTitle=Malandro +Screen/&SpellAlternatePointsCostTooltip={0} pontos +Screen/&SpellAlternatePointsTooltip=Você tem {0} pontos de magia restantes. Screen/&SpellSlotsUsedLongDescription=Você gastou {0} espaços de magia neste nível. Screen/&SpellSlotsUsedShortDescription=Você gastou {0} espaço(s) mágico(s) do pacto. Screen/&SpellSlotsUsedShortLongDescription=Você gastou {0} espaço(s) de magia de pacto e {1} espaço(s) de feitiço neste nível. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt index bfeab31e46..40f45103fa 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Settings-pt-BR.txt @@ -42,6 +42,7 @@ ModUi/&Bestiary=Bestiário ModUi/&BestowCurseNoConcentrationRequiredForSlotLevel5OrAbove=Conceder Maldição não requer concentração quando lançado com um espaço de feitiço L5+ ModUi/&BlindedConditionDontAllowAttackOfOpportunity=A condição Cego não permite ataque de oportunidade ModUi/&Blueprints=Plantas +ModUi/&Camera=Câmera: ModUi/&Campaigns=Campanhas: ModUi/&CampaignsAndLocations=Campanhas e locais: ModUi/&Category=Categoria @@ -118,6 +119,7 @@ ModUi/&EnableCheatMenu=Habilite o menu de cheats ModUi/&EnableCustomPortraits=Habilite retratos personalizados ModUi/&EnableCustomPortraitsHelp=• Coloque seus retratos personalizados nas subpastas Pessoal ou Pré-geração , nomeado após o nome do herói [ou seja: Anton, Celia, Nialla, etc.]\n• Use PNG imagens, tamanho 256 x 384 pixels, com uma camada de transparência [use o GIMP para obter melhores resultados] ModUi/&EnableDungeonMakerModdedContent=Ative o Dungeon Maker Pro\n[inclua salas planas, tamanhos de masmorras de 150 x 150 e 200 x 200 e mistura simples de recursos de todos os ambientes] +ModUi/&EnableElevationCameraToStayAtPosition=Ative a câmera de elevação para permanecer na posição após desativada ModUi/&EnableEpicPointsAndArray=Habilite um sistema e matriz de compra épico de 35 pontos [17,15,13,12,10,8] [Requer reinicialização] ModUi/&EnableExtendedProficienciesPanelDisplay=Ative a exibição do painel de proficiências estendidas [Arcane Shots, Infusions, Maneuvers, and Versatilities]\n[desempenho acertar na inspeção do personagem. use por sua conta e risco] ModUi/&EnableFeatsAtEvenLevels=Ative a seleção de talentos nos níveis 2, 10 e 18 @@ -233,13 +235,15 @@ ModUi/&Monsters=Monstros: ModUi/&MovementGridWidthModifier=Multiplique a largura da grade de movimento por [%] ModUi/&MulticlassKeyHelp=SHIFT clicar em um feitiço inverte o tipo de slot de repertório padrão consumido\n[Warlock gasta slots de feitiço branco e outros gastam os verdes do pacto] ModUi/&MultiplyTheExperienceGainedBy=Multiplique a experiência adquirida por [%] +ModUi/&NeverMoveCameraOnEnemyTurn=+ A câmera nunca se move durante os turnos do inimigo ModUi/&NoExperienceOnLevelUp=Nenhuma experiência é necessária para subir de nível ModUi/&OfferAdditionalLoreFriendlyNames=Ofereça nomes adicionais amigáveis à história na criação de personagens ModUi/&OfficialObscurementRulesCancelAdvDisPairs=+ Cancelar vantagem/desvantagem pares cegos, invisíveis e percebidos [útil em conjunto com vantagem/desvantagem oficial regras] ModUi/&OfficialObscurementRulesHeavilyObscuredAsProjectileBlocker=+ Alterar áreas fortemente obscurecidas para serem bloqueadores de projéteis [Cloud Kill, Fog Cloud , Nuvem Incendiária, Tempestade de Pétalas, Tempestade de Granizo, Nuvem fedorenta] ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget=+ Criaturas invisíveis são fortemente obscurecidas e podem ser alvo, as jogadas de ataque contra a criatura têm desvantagem e as jogadas de ataque da criatura têm vantagem ModUi/&OfficialObscurementRulesMagicalDarknessAsProjectileBlocker=+ Alterar áreas magicamente obscurecidas para serem bloqueadores de projéteis [qualquer fonte do efeito do feitiço Escuridão] -ModUi/&OfficialObscurementRulesTweakMonsters=+ Adicione Darkvision, BlindSight e TrueSight a monstros e NPCs sempre que apropriado\n [coleções de configurações MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] +ModUi/&OfficialObscurementRulesTweakMonsters=+ Adicione Darkvision, BlindSight e TrueSight a monstros e NPCs sempre que apropriado +ModUi/&OfficialObscurementRulesTweakMonstersHelp=[coleções de configurações MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight] ModUi/&OnlyShowMostPowerfulUpcastConjuredElementalOrFey=+ Mostrar apenas as criaturas mais poderosas da lista de conjuração ModUi/&OutlineGridWidthModifier=Multiplique a largura da grade de contorno por [%] ModUi/&OutlineGridWidthSpeed=Multiplique a velocidade de animação da grade de contorno por [%] @@ -276,6 +280,7 @@ ModUi/&SelectTabletop=Selecione Mesa ModUi/&SenseNormalVisionRangeMultiplier=Modifique o alcance da Visão Normal [apenas em batalhas] ModUi/&Services=Serviços ModUi/&SetBeltOfDwarvenKindBeardChances=Cinto da Raça Anã chance de aparecimento de barba +ModUi/&SetElevationCameraMaxHeightBy=Aumentar a altura máxima da câmera de elevação em ModUi/&SettingsExport=Exportar ModUi/&SettingsHelp=• Como host, você pode exportar sua configuração atual, abrir a pasta de exportações e compartilhar facilmente com seus colegas\n• Como convidado, você pode abrir a pasta de exportações, colar o arquivo compartilhado do host e carregá-lo em [Requer reinicialização] ModUi/&SettingsLoad=• Carregar uma configuração exportada @@ -317,6 +322,8 @@ ModUi/&UnlockGlowingEyeColors=Adicione cores de olhos brilhantes ModUi/&UnlockMarkAndTattoosForAllCharacters=Desbloqueie marcas de origem e tatuagens do Feiticeiro para todos os personagens ModUi/&UnlockSkinColors=Desbloquear cores de pele ModUi/&Update=Atualização +ModUi/&UseAlternateSpellPointsSystem=Use regras oficiais de pontos de feitiço variantes +ModUi/&UseAlternateSpellPointsSystemHelp=[Você tem um conjunto de pontos de feitiço que aumenta com o nível de conjurador\nL01: 04 L02: 06 L03 : 14 L04: 17 L05: 27 L06: 32 L07: < color=branco>38 L08: 44 L09: 57 L10: 64\nL11: 73 L12: 73 L13: 83 L14: 83 L15: 94 L16: 94 L17: 107 L18: 114 L19: 123 L20: 133\nO custo para lançar feitiços é SL1: 2 SL2: 3 SL3: 5 SL4: 6 SL5: 7 SL6: 9 SL7: 10 SL8: 11 SL9: 13\nOs recursos de recuperação de intervalos de descanso curtos não serão acionados neste sistema ] ModUi/&UseElfFaceModelsOnTieflings=Use modelos de rosto de Elfo em Tieflings ModUi/&UseHeightOneCylinderEffect=Use um efeito de cilindro de altura 1 ao lançar Black Tentacles, Entangle, Grease [square] ou Pico de crescimento [rodada] ModUi/&UseMathFlankingRules=+ Use matemática precisa para determinar o flanqueamento [pode ter um impacto no desempenho em máquinas lentas] @@ -326,6 +333,7 @@ ModUi/&UseOfficialFlankingRulesAlsoForRanged=+ Ativar também ataques à dist ModUi/&UseOfficialFlankingRulesAlsoForReach=+ Ativar também ataques de alcance [desativar matemática precisa] ModUi/&UseOfficialFlankingRulesButAddAttackModifier=+ Em vez de vantagem, conceda +1 na jogada de ataque ModUi/&UseOfficialFoodRationsWeight=Use ração alimentar oficial com peso de 2 libras -ModUi/&UseOfficialObscurementRules=Use regras oficiais de combate de iluminação, obscurecimento e visão\n[o atacante que percebe, o defensor que não consegue perceber recebe ADV, e o atacante que não percebe perceber o defensor que pode perceber isso recebe DIS\n áreas fortemente obscurecidas infligem condição cega, onde as jogadas de ataque contra a criatura têm ADV, e as jogadas de ataque da criatura têm DIS\n todos os feitiços de distância direcionados a indivíduos não podem ser lançados se o atacante não tiver visão , exceto aqueles que claramente não declaram que a visão é obrigatória] +ModUi/&UseOfficialObscurementRules=Use regras oficiais de combate de iluminação, obscurecimento e visão +ModUi/&UseOfficialObscurementRulesHelp=[o atacante que percebe o defensor que não consegue perceber recebe ADV, e o atacante que não percebe o defensor que consegue perceber recebe DIS\n áreas fortemente obscurecidas infligem condição cega, onde jogadas de ataque contra o a criatura tem ADV e as jogadas de ataque da criatura têm DIS\n todos os feitiços de distância direcionados a indivíduos não podem ser lançados se o atacante não tiver visão, exceto aqueles que claramente não declaram que a visão é necessária] ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons=Use as regras oficiais das raças pequenas ao empunhar armas pesadas [seus ataques têm desvantagem] ModUi/&Visuals=Visuais: [Requer reinicialização] diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt index 79732fc9f0..489361b257 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/Spells/Spells04-pt-BR.txt @@ -13,6 +13,18 @@ Condition/&ConditionElementalBaneTitle=Maldição Elemental: {0} Condition/&ConditionIrresistiblePerformanceDescription=Você não pode realizar nenhuma ação que exija as mãos ou a boca, mas pode agir normalmente. Condition/&ConditionIrresistiblePerformanceTitle=Dinah-Moe Humm Condition/&ConditionPsionicBlastTitle=Mente confusa +Condition/&ConditionSickeningRadianceDescription=Você emite uma luz fraca em um raio de 1,5 metro. Esta luz torna impossível que você fique invisível. +Condition/&ConditionSickeningRadianceExhausted1Description=Você tem desvantagem em testes de habilidade. +Condition/&ConditionSickeningRadianceExhausted1Title=Exausto 1 +Condition/&ConditionSickeningRadianceExhausted2Description=Sua velocidade é reduzida pela metade e você tem desvantagem em testes de habilidade. +Condition/&ConditionSickeningRadianceExhausted2Title=Exausto 2 +Condition/&ConditionSickeningRadianceExhausted3Description=Sua velocidade é reduzida pela metade e você tem desvantagem em testes de habilidade, jogadas de ataque e testes de resistência. +Condition/&ConditionSickeningRadianceExhausted3Title=Exausto 3 +Condition/&ConditionSickeningRadianceExhausted4Description=Sua velocidade e pontos de vida máximos são reduzidos pela metade e você tem desvantagem em testes de habilidade, jogadas de ataque e testes de resistência. +Condition/&ConditionSickeningRadianceExhausted4Title=Exausto 4 +Condition/&ConditionSickeningRadianceExhausted5Description=Sua velocidade é 0, seus pontos de vida máximos são reduzidos à metade e você tem desvantagem em testes de habilidade, jogadas de ataque e testes de resistência. +Condition/&ConditionSickeningRadianceExhausted5Title=Exausto 5 +Condition/&ConditionSickeningRadianceTitle=Radiância Enjoativa Condition/&ConditionStaggeringSmiteEnemyDescription=Você é atingido por dano psíquico. Condition/&ConditionStaggeringSmiteEnemyTitle=Golpe impressionante Condition/&ConditionTreeForestGuardianDescription=Você ganha 10 pontos de vida temporários, faz testes de resistência de Constituição com vantagem e faz jogadas de ataque baseadas em Destreza e Sabedoria com vantagem. @@ -50,6 +62,8 @@ Spell/&PsionicBlastDescription=Você libera uma onda debilitante de poder mental Spell/&PsionicBlastTitle=Explosão Psiônica Spell/&PsychicLanceDescription=Você libera uma lança cintilante de poder psíquico de sua testa em uma criatura que você possa ver dentro do alcance. Ele deve ter sucesso em um teste de resistência de Inteligência ou sofrerá 7d6 de dano psíquico e ficará incapacitado até o final do seu próximo turno. Se obtiver sucesso, a criatura sofre metade do dano e não fica incapacitada. Em níveis superiores. Quando você conjura esta magia usando um espaço de magia de 4º nível ou superior, o dano aumenta em 1d6 para cada nível do espaço acima do 4º. Spell/&PsychicLanceTitle=Lança Psíquica de Raulothim +Spell/&SickeningRadianceDescription=A luz fraca se espalha dentro de uma esfera de 9 metros de raio centrada em um ponto que você escolher dentro do alcance. A luz se espalha pelos cantos e dura até o feitiço terminar. Quando uma criatura se move para a área da magia pela primeira vez em um turno ou começa seu turno lá, aquela criatura deve ser bem sucedida em um teste de resistência de Constituição ou sofrerá 4d10 de dano radiante, e ela sofre um nível de exaustão e emite uma luz fraca em um Raio de 5 pés. Esta luz torna impossível para a criatura se beneficiar por ser invisível. A luz e quaisquer níveis de exaustão causados ​​por este feitiço desaparecem quando o feitiço termina. +Spell/&SickeningRadianceTitle=Radiância Enjoativa Spell/&StaggeringSmiteDescription=Na próxima vez que você atingir uma criatura com um ataque com arma durante a duração desta magia, sua arma perfurará tanto o corpo quanto a mente, e o ataque causará 4d6 de dano psíquico extra ao alvo. O alvo deve fazer um teste de resistência de Sabedoria. Se falhar na resistência, ele terá desvantagem em jogadas de ataque e testes de habilidade, e não poderá realizar reações até o final do próximo turno. Spell/&StaggeringSmiteTitle=Golpe impressionante Spell/&TreeForestGuardianDescription=Sua pele parece descascada, folhas brotam de seu cabelo e você ganha os seguintes benefícios:\n• Você ganha 10 pontos de vida temporários.\n• Você faz testes de resistência de Constituição com vantagem.\n• Você faz Destreza e Sabedoria. jogadas de ataque baseadas em vantagem.\n• Criaturas a até 9 metros de você devem fazer um teste de resistência de Força ou serão prejudicadas pela duração do feitiço. Eles podem tentar salvar novamente a cada início de turno. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/CollegeOfAudacity-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/CollegeOfAudacity-pt-BR.txt index 7f332d1a78..7085ca7bc2 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/CollegeOfAudacity-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/CollegeOfAudacity-pt-BR.txt @@ -1,26 +1,27 @@ -Action/&AudaciousWhirlToggleDescription=Ativar/desativar Audacious Whirl -Action/&AudaciousWhirlToggleTitle=Redemoinho Audacioso -Action/&MasterfulWhirlToggleDescription=Ativar/desativar Masterful Whirl -Action/&MasterfulWhirlToggleTitle=Giro magistral -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Gire o rolo para AC. -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Redemoinho Defensivo -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Sempre que você realiza a ação de Ataque em seu turno, sua velocidade de caminhada aumenta em 3 metros até o final do turno, e se um ataque com arma corpo a corpo que você fizer como parte desta ação atingir uma criatura, você pode gastar um uso de seu Bardo. Inspiração para fazer com que a arma cause dano extra ao alvo atingido. O dano é igual ao número obtido no dado de Inspiração de Bardo. Você também escolhe uma manobra específica:\n• Giro Defensivo: você adiciona o teste de Inspiração de Bardo à sua CA até o início do seu próximo turno.\n• Giro Cortante: Você causa o dano extra a todas as outras criaturas inimigas a até 1,5 metro de você.\n• Giro Móvel: Você ganha benefícios de desengajamento até o final do seu turno. -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Redemoinho Audacioso +Action/&AudaciousWhirlToggleDescription=Ativar/desativar Blade Flourish +Action/&AudaciousWhirlToggleTitle=Florescer Lâmina +Action/&MasterfulWhirlToggleDescription=Ativar/desativar o Master's Flourish +Action/&MasterfulWhirlToggleTitle=Florescimento do Mestre +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Role o florescimento para AC. +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Florescimento Defensivo +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Sempre que você realiza a ação de Ataque em seu turno, sua velocidade de caminhada aumenta em 3 metros até o final do turno, e se um ataque com arma corpo a corpo que você fizer como parte desta ação atingir uma criatura, você pode gastar um uso de seu Bardo. Inspiração para fazer com que a arma cause dano extra ao alvo atingido. O dano é igual ao número obtido no dado de Inspiração de Bardo. Você também escolhe uma manobra específica:\n• Florescimento Defensivo: você adiciona o teste de Inspiração de Bardo à sua CA até o início do seu próximo turno.\n• Florescimento Cortante: Você causa o dano extra a todas as outras criaturas inimigas a até 1,5 metro de você.\n• Florescimento Móvel: Você ganha benefícios de desengajamento até o final do seu turno. +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Florescer Lâmina Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=Você ganha proficiência com armadura média e cimitarra. Você também pode usar sua arma como foco de lançamento de magias de bardo. Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=Proficiências Bônus -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Sempre que você usar uma opção Audacious Whirl, você pode rolar um D6 e usá-lo em vez de gastar um dado de Inspiração de Bardo. -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Giro magistral +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Sempre que você usar uma opção de Florescimento da Lâmina, você pode rolar um D6 e usá-la em vez de gastar um dado de Inspiração Bárdica. +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Florescimento do Mestre Feature/&FightingStyleChoiceCollegeOfAudacityDescription=Você adota um estilo particular de luta como sua especialidade. Escolha Duelo ou Luta com Duas Armas. Feature/&FightingStyleChoiceCollegeOfAudacityTitle=Estilo de luta -Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Você pode gastar um uso de sua Inspiração de Bardo para fazer com que a arma cause dano extra ao alvo atingido. O dano é igual ao número obtido no dado de Inspiração de Bardo ou a D6 se for um Redemoinho Magistral. Você também adiciona o número obtido à sua CA até o início do seu próximo turno. -Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Redemoinho Defensivo -Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Você pode gastar um uso de sua Inspiração de Bardo para fazer com que a arma cause dano extra ao alvo atingido. O dano é igual ao número obtido no dado de Inspiração de Bardo ou a D6 se for um Redemoinho Magistral. Você ganha benefícios de desengajamento até o final do seu turno. -Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Redemoinho móvel -Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Você pode gastar um uso de sua Inspiração de Bardo para fazer com que a arma cause dano extra ao alvo atingido e a todas as outras criaturas inimigas a até 1,5 metro de você. O dano é igual ao número obtido no dado de Inspiração de Bardo ou a D6 se for um Redemoinho Magistral. -Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Redemoinho Cortante -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} pode fazer com que a arma cause dano extra ao alvo. O dano é igual ao número obtido no dado de Inspiração de Bardo ou D6 se for um Redemoinho Magistral. -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Girar -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Girar -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Girar -Subclass/&CollegeOfAudacityDescription=Os bardos do Colégio das Espadas divertem-se com feitos ousados de habilidade com armas. Eles realizam acrobacias como engolir espadas, arremessar facas e fazer malabarismos e simular combates. Embora usem suas armas para entreter, eles também são guerreiros altamente treinados e habilidosos. +Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Você pode gastar um uso de sua Inspiração de Bardo para fazer com que a arma cause dano extra ao alvo atingido. O dano é igual ao número obtido no dado de Inspiração de Bardo ou a D6 se for um Florescer do Mestre. Você também adiciona o número obtido à sua CA até o início do seu próximo turno. +Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Florescimento Defensivo +Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Você pode gastar um uso de sua Inspiração de Bardo para fazer com que a arma cause dano extra ao alvo atingido. O dano é igual ao número obtido no dado de Inspiração de Bardo ou a D6 se for um Florescer do Mestre. Você ganha benefícios de desengajamento até o final do seu turno. +Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Florescimento móvel +Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Você pode gastar um uso de sua Inspiração de Bardo para fazer com que a arma cause dano extra ao alvo atingido e a todas as outras criaturas inimigas a até 1,5 metro de você. O dano é igual ao número obtido no dado de Inspiração de Bardo ou a D6 se for um Florescer do Mestre. +Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Cortando o florescimento +Feedback/&CollegeOfAudacityDefensiveWhirl={0} lança um dado {2}, adicionando {3} à CA. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} pode fazer com que a arma cause dano extra ao alvo. O dano é igual ao número obtido no dado de Inspiração de Bardo ou um D6 se for um Florescer do Mestre. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Florescer +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Florescer +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Florescer +Subclass/&CollegeOfAudacityDescription=Os bardos do Colégio das Espadas divertem-se com feitos ousados ​​de habilidade com armas. Eles realizam acrobacias como engolir espadas, arremessar facas e fazer malabarismos e simular combates. Embora usem suas armas para entreter, eles também são guerreiros altamente treinados e habilidosos. Subclass/&CollegeOfAudacityTitle=Colégio de Espadas diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/MartialTactician-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/MartialTactician-pt-BR.txt index c9ce241c71..6932bb7a5f 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/MartialTactician-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/MartialTactician-pt-BR.txt @@ -12,8 +12,8 @@ Feature/&FeatureSetTacticianHonedCraftDescription=Ganhe experiência com uma hab Feature/&FeatureSetTacticianHonedCraftTitle=Habilidade aprimorada Feature/&FeatureSetTacticianSharpMindDescription=Ganhe proficiência com uma habilidade de sua escolha. Feature/&FeatureSetTacticianSharpMindTitle=Mente afiada -Feature/&FeatureSetTacticianTacticalAwarenessDescription=Enquanto não estiver incapacitado, você ganha os seguintes benefícios:\n• Uma vez por turno, seu ataque com arma causa dano extra igual ao seu bônus de proficiência.\n• Os ataques de oportunidade que você realiza são realizados com vantagem.\n• Ataques de oportunidade contra você são feitos com desvantagem. -Feature/&FeatureSetTacticianTacticalAwarenessTitle=Consciência Tática +Feature/&FeatureSetTacticianTacticalAwarenessDescription=Durante o combate, você recupera um dado de superioridade no início de cada um de seus turnos. +Feature/&FeatureSetTacticianTacticalAwarenessTitle=Mestre da Guerra Feature/&FeatureTacticianGambitDieSizeD10Description=Seu dado de superioridade é atualizado para D10. Feature/&FeatureTacticianGambitDieSizeD10Title=Tamanho do dado de superioridade (d10) Feature/&FeatureTacticianGambitDieSizeD12Description=Seu dado de superioridade é atualizado para D12. diff --git a/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/PathOfTheBeast-pt-BR.txt b/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/PathOfTheBeast-pt-BR.txt index 411f8404de..c46578885b 100644 --- a/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/PathOfTheBeast-pt-BR.txt +++ b/SolastaUnfinishedBusiness/Translations/pt-BR/SubClasses/PathOfTheBeast-pt-BR.txt @@ -24,7 +24,7 @@ Feature/&PowerPathOfTheBeastFormOfTheBeastTailTitle=Forma: Cauda Feature/&PowerPathOfTheBeastFormOfTheBeastTitle=Forma da Besta Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeDescription=O alvo ataca outra criatura de sua escolha dentro do alcance do alvo. Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeTitle=Fúria Infecciosa: Ataque Compelido -Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Quando você atinge uma criatura com suas armas naturais enquanto está em fúria, a fera dentro de você pode amaldiçoar seu alvo com fúria raivosa. O alvo deve ser bem sucedido em um teste de resistência de Sabedoria (CD igual a 8 + seu modificador de Constituição + seu bônus de proficiência) ou sofrerá um dos seguintes efeitos (sua escolha). +Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Quando você atinge uma criatura com suas armas naturais enquanto está em fúria, a fera dentro de você pode amaldiçoar seu alvo com fúria raivosa. O alvo deve ser bem sucedido em um teste de resistência de Sabedoria (CD igual a 8 + seu modificador de Constituição + seu bônus de proficiência) ou sofrerá um dos seguintes efeitos (à sua escolha).\n\nVocê pode usar esse recurso várias vezes. igual ao seu bônus de proficiência e você recupera todos os usos gastos ao terminar um descanso longo. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashDescription=O alvo sofre 2d12 de Dano Psíquico. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashTitle=Fúria Infecciosa: Mindlash Feature/&PowerPathOfTheBeastInfectiousFuryTitle=Fúria Infecciosa diff --git a/SolastaUnfinishedBusiness/Translations/ru/Feats/MeleeCombat-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Feats/MeleeCombat-ru.txt index 4630890130..2687116ac1 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Feats/MeleeCombat-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Feats/MeleeCombat-ru.txt @@ -34,8 +34,6 @@ Feat/&FeatFencerDescription=Если в свой ход вы совершает Feat/&FeatFencerTitle=Фехтовальщик Feat/&FeatGreatWeaponDefenseDescription=Вы стойко сражаетесь большим оружием, получая следующие преимущества:\n• Когда вы опускаете хиты существа до 0 или наносите критический удар рукопашным оружием, ваша скорость передвижения увеличивается на 15 футов до конца вашего хода.\n• Когда вы совершаете действие Атака, используя тяжёлое рукопашное или универсальное оружие в двух руках, вы получаете +2 КД до начала вашего следующего хода. Вы теряете это преимущество, если берёте другое оружие или щит. Feat/&FeatGreatWeaponDefenseTitle=Боевой пыл -Feat/&FeatHammerThePointDescription=Вы умеете концентрировать и сосредотачивать внимание на одной точке. После того, как вы совершаете бросок атаки по цели, получите +1 к броскам атаки и урона по этой цели до конца вашего хода [складывается]. -Feat/&FeatHammerThePointTitle=Забить в точку Feat/&FeatLongswordFinesseDescription=Вы потомок мастера длинного меча, и кое-что из этого мастерства передалось вам. Вы получаете следующие преимущества:\n• Увеличьте значение вашей Ловкости на 1 при максимуме 20.\n• Пока вы держите длинный меч, вы получаете бонус +1 к классу доспеха.\n• Длинный меч имеет свойство "фехтовальное", пока вы держите его. Feat/&FeatLongswordFinesseTitle=Изящество длинного меча Feat/&FeatOldTacticsDexDescription=Увеличьте значение вашей Ловкости на 1. Один раз в ход, когда сбитый с ног противник в пределах досягаемости вашего рукопашного оружия встаёт, вы можете совершить атаку по возможности против этой цели. diff --git a/SolastaUnfinishedBusiness/Translations/ru/Feats/OtherFeats-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Feats/OtherFeats-ru.txt index 78397c4774..36d0ef2567 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Feats/OtherFeats-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Feats/OtherFeats-ru.txt @@ -8,8 +8,6 @@ Feat/&FeatAlertDescription=Вы всегда готовы к опасностя Feat/&FeatAlertTitle=Бдительный Feat/&FeatArcaneArcherAdeptDescription=Вы владеете тайной магией и обучены стрельбе из лука, что позволяет вам выполнять специальные боевые приёмы. Feat/&FeatArcaneArcherAdeptTitle=Мистический лучник-адепт -Feat/&FeatAstralArmsDescription=Увеличьте значение Мудрости на 1 при максимуме 20.\nКогда вы совершаете безоружную атаку в свой ход, ваша досягаемость для неё равна 10 футам. Другие существа провоцируют атаку по возможности от вас, когда входят в область досягаемости вашей безоружной атаки. -Feat/&FeatAstralArmsTitle=Астральная досягаемость Feat/&FeatAthleteDexDescription=Вы прошли интенсивную физическую подготовку и получаете следующие преимущества:\n• Увеличьте значение Ловкости на 1 при максимуме 20.\n• Если вы лежите ничком, вставание не заставляет вас тратить перемещение.\n• Лазание не заставляет вас тратить дополнительное перемещение.\n• Вы приобретаете владение навыком Атлетики, либо компетентность, если уже владеете им. Feat/&FeatAthleteDexTitle=Атлетичный [ЛОВ] Feat/&FeatAthleteStrDescription=Вы прошли интенсивную физическую подготовку и получаете следующие преимущества:\n• Увеличьте значение Силы на 1 при максимуме 20.\n• Если вы лежите ничком, вставание не заставляет вас тратить перемещение.\n• Лазание не заставляет вас тратить дополнительное перемещение.\n• Вы приобретаете владение навыком Атлетики, либо компетентность, если уже владеете им. diff --git a/SolastaUnfinishedBusiness/Translations/ru/Feats/RangedCombat-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Feats/RangedCombat-ru.txt index 578b8467db..0b9d8f10ef 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Feats/RangedCombat-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Feats/RangedCombat-ru.txt @@ -10,8 +10,6 @@ Feat/&FeatDeadeyeDescription=Вы научились жертвовать точ Feat/&FeatDeadeyeTitle=Меткий стрелок Feat/&FeatRangedExpertDescription=Ваше мастерство владения дальнобойным оружием даёт вам следующие преимущества:\n• Атаки на ближней дистанции не вызывают помехи.\n• Если вы атакуете в свой ход, вы можете бонусным действием произвести одну дальнобойную атаку одноручным оружием, добавляя свой модификатор характеристики к урону. Feat/&FeatRangedExpertTitle=Эксперт дальнего боя -Feat/&FeatSteadyAimDescription=Увеличьте значение Ловкости на 1 при максимуме 20. Бонусным действием вы можете дать себе преимущество на следующий бросок атаки в текущем ходу. Вы можете использовать это бонусное действие только в том случае, если не перемещались в этом ходу. После того, как вы используете его, ваша скорость станет равной 0 до конца текущего хода. -Feat/&FeatSteadyAimTitle=Точное прицеливание Feature/&PowerFeatSteadyAimDescription=Бонусным действием вы можете дать себе преимущество на следующий бросок атаки в текущем ходу. Вы можете использовать это бонусное действие только в том случае, если не перемещались в этом ходу. После того, как вы используете его, ваша скорость станет равной 0 до конца текущего хода. Feature/&PowerFeatSteadyAimTitle=Точное прицеливание Tooltip/&DeadeyeConcentration=Отключить Меткого стрелка diff --git a/SolastaUnfinishedBusiness/Translations/ru/FightingStyles-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/FightingStyles-ru.txt index 57ee4d09f8..ab0ffd6b97 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/FightingStyles-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/FightingStyles-ru.txt @@ -22,8 +22,6 @@ FightingStyle/&LungerDescription=Досягаемость вашего руко FightingStyle/&LungerTitle=Выпад FightingStyle/&MercilessDescription=Когда вы опускаете хиты цели до 0, используя рукопашную атаку оружием в свой ход, противники в радиусе, равном половине вашего бонуса мастерства (с округлением вверх), которые могут видеть цель, должны пройти спасбросок Мудрости (Сл равна 8 + ваш бонус мастерства + ваш модификатор Силы), иначе будут напуганы до конца вашего следующего хода. Если попадание было критическим, радиус действия увеличивается до вашего полного бонуса мастерства. FightingStyle/&MercilessTitle=Безжалостный -FightingStyle/&MonkShieldExpertDescription=Вы получаете навык владения щитом, и он не мешает вам совершать безоружные атаки этой рукой. Кроме того, все ваши способности монаха работают даже при использовании щита. -FightingStyle/&MonkShieldExpertTitle=Монашеская тренировка со щитом FightingStyle/&PolearmExpertDescription=Профессиональное обучение обращению с древковым оружием дает вам следующие преимущества:\n• Если вы совершаете действие Атака и атакуете только древковым оружием, вы можете бонусным действием совершить рукопашную атаку противоположным концом оружия. Эта атака использует тот же модификатор характеристики, что и основная, и наносит дробящий урон 1d4.\n• Если вы используете древковое оружие, другие существа провоцируют от вас атаку, когда входят в пределы вашей досягаемости. FightingStyle/&PolearmExpertTitle=Эксперт по древковому оружию FightingStyle/&PugilistDescription=Ваши безоружные удары наносят дополнительный дробящий урон 1d4, также бонусным действием вы можете бить левой рукой. Есть у вас есть свободная рука, вы можете использовать действие Толчок в качестве бонусного. diff --git a/SolastaUnfinishedBusiness/Translations/ru/Others-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Others-ru.txt index f88c3bba03..a0fb17f382 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Others-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Others-ru.txt @@ -281,6 +281,8 @@ Screen/&RangerSpellTitle=Следопыт Screen/&RepertoireHeaderFormat={0} Screen/&RoguishSpellDescription=Это заклинание досталось вам из архетипа Плута и считается известным вам. Screen/&RoguishSpellTitle=Плут +Screen/&SpellAlternatePointsCostTooltip={0} очков +Screen/&SpellAlternatePointsTooltip=У вас осталось {0} очков заклинаний. Screen/&SpellSlotsUsedLongDescription=Вы потратили {0} ячеек заклинаний этого уровня. Screen/&SpellSlotsUsedShortDescription=Вы потратили {0} ячеек заклинаний колдуна. Screen/&SpellSlotsUsedShortLongDescription=Вы потратили {0} ячеек заклинаний колдуна и {1} обычных ячеек заклинаний этого уровня. diff --git a/SolastaUnfinishedBusiness/Translations/ru/Settings-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Settings-ru.txt index 1598a678fa..c8bcf37fe7 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Settings-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Settings-ru.txt @@ -42,6 +42,7 @@ ModUi/&Bestiary=Бестиарий ModUi/&BestowCurseNoConcentrationRequiredForSlotLevel5OrAbove=Проклятие не требует концентрации, когда наложено с помощью ячейки заклинания 5-го уровня и выше ModUi/&BlindedConditionDontAllowAttackOfOpportunity=Состояние Ослеплённый не позволяет совершать атаку по возможности ModUi/&Blueprints=Чертежи +ModUi/&Camera=Камера: ModUi/&Campaigns=Кампании: ModUi/&CampaignsAndLocations=Кампании и локации: ModUi/&Category=Категория @@ -118,6 +119,7 @@ ModUi/&EnableCheatMenu=Включить меню читов ModUi/&EnableCustomPortraits=Включить пользовательские портреты ModUi/&EnableCustomPortraitsHelp=• Поместите свои пользовательские портреты в подпапки Personal или PreGen с именами, соответствующими именам героев [т.е.: Антон, Селия, Ниалла и т. д.]\n• Используйте изображения размером 256 x 384 пикселей с прозрачным фоном [для достижения наилучших результатов используйте GIMP] ModUi/&EnableDungeonMakerModdedContent=Включить Создатель Подземелий ПРО\n[включает простые комнаты, размеры подземелий 150x150 и 200x200, а также смешивание ассетов из разных наборов окружений без танцев с бубном] +ModUi/&EnableElevationCameraToStayAtPosition=Включить сохранение позиции уровня камеры после отключения ModUi/&EnableEpicPointsAndArray=Включить эпические варианты поинт-бай системы (35 очков) и массива характеристик [17,15,13,12,10,8] [Необходим перезапуск] ModUi/&EnableExtendedProficienciesPanelDisplay=Включить отображение панели расширенных владений [Магические выстрелы, Инфузии, Приёмы и Универсалии]\n[снижает производительность при просмотре персонажа, используйте на свой страх и риск] ModUi/&EnableFeatsAtEvenLevels=Включить возможность выбора черты на уровнях 2, 10 и 18 @@ -233,13 +235,15 @@ ModUi/&Monsters=Монстры: ModUi/&MovementGridWidthModifier=Увеличить ширину сетки передвижения на множитель [%] ModUi/&MulticlassKeyHelp=Нажатие с SHIFT по заклинанию переключает тип затрачиваемой ячейки по умолчанию\n[Колдун тратит белые ячейки заклинаний, а остальные - зелёные ячейки колдуна] ModUi/&MultiplyTheExperienceGainedBy=Множитель получаемого опыта [в %] +ModUi/&NeverMoveCameraOnEnemyTurn=+ Неподвижная камера во время хода противника ModUi/&NoExperienceOnLevelUp=Отключить систему повышения уровня на основе полученного опыта ModUi/&OfferAdditionalLoreFriendlyNames=Предлагать при создании персонажа дополнительные имена, подходящие по истории ModUi/&OfficialObscurementRulesCancelAdvDisPairs=+ Отменить преимущество/помеху для ослеплённых, невидимых и видимых [полезно в сочетании с официальными правилами преимущества/помехи] ModUi/&OfficialObscurementRulesHeavilyObscuredAsProjectileBlocker=+ Позволить сильно заслонённой местности блокировать снаряды [Облако смерти, Туманное облако, Зажигательное облако, Шквал лепестков, Метель, Зловонное облако] ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget=+ Невидимые существа являются сильно заслонёнными и могут быть целью, броски атаки по таким существам совершаются с помехой, а броски атаки существа - с преимуществом ModUi/&OfficialObscurementRulesMagicalDarknessAsProjectileBlocker=+ Позволить магически заслонённой местности блокировать снаряды [любой источник эффекта заклинания Тьма] -ModUi/&OfficialObscurementRulesTweakMonsters=+ Добавить Тёмное зрение, Слепое зрение и Истинное зрение монстрам и NPC, когда это целесообразно\n[списки MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight находятся в настройках] +ModUi/&OfficialObscurementRulesTweakMonsters=+ Добавить Тёмное зрение, Слепое зрение и Истинное зрение монстрам и NPC, когда это целесообразно +ModUi/&OfficialObscurementRulesTweakMonstersHelp=[списки MonstersThatShouldHaveDarkvision, MonstersThatShouldHaveTrueSight, MonstersThatShouldHaveBlindSight находятся в настройках] ModUi/&OnlyShowMostPowerfulUpcastConjuredElementalOrFey=+ Показывать только самых мощных существ в списке призыва ModUi/&OutlineGridWidthModifier=Увеличить толщину контура сетки передвижения на множитель [%] ModUi/&OutlineGridWidthSpeed=Увеличить скорость анимации контура сетки передвижения на множитель [%] @@ -276,6 +280,7 @@ ModUi/&SelectTabletop=Выбрать согласно настольной иг ModUi/&SenseNormalVisionRangeMultiplier=Изменить множитель дальности Нормального зрения [только в бою] ModUi/&Services=Сервисы ModUi/&SetBeltOfDwarvenKindBeardChances=Шанс появления бороды при ношении Пояса Дварфов +ModUi/&SetElevationCameraMaxHeightBy=Увеличить максимальную высоту уровня камеры на ModUi/&SettingsExport=Экспорт ModUi/&SettingsHelp=• В качестве хоста вы можете экспортировать вашу текущую конфигурацию, открыть папку экспорта и просто поделиться со своими игроками\n• В качестве гостя вы можете открыть папку экспорта, положить туда файл конфигурации от хоста и загрузить его [Необходим перезапуск] ModUi/&SettingsLoad=• Загрузить экспортированные настройки @@ -317,6 +322,8 @@ ModUi/&UnlockGlowingEyeColors=Добавить светящиеся цвета ModUi/&UnlockMarkAndTattoosForAllCharacters=Разблокировать родовые отметины и татуировки Чародея для всех персонажей ModUi/&UnlockSkinColors=Разблокировать цвета кожи ModUi/&Update=Обновить +ModUi/&UseAlternateSpellPointsSystem=Использовать официальные правила альтернативной системы Очков заклинаний +ModUi/&UseAlternateSpellPointsSystemHelp=[Вы обладаете запасом очков заклинаний, который увеличивается с уровнем заклинателя.\nУр1: 04 Ур2: 06 Ур3: 14 Ур4: 17 Ур5: 27 Ур6: 32 Ур7: 38 Ур8: 44 Ур9: 57 Ур10: 64\nУр11: 73 Ур12: 73 Ур13: 83 Ур14: 83 Ур15: 94 Ур16: 94 Ур17: 107 Ур18: 114 Ур19: 123 Ур20: 133\nСтоимость наложения заклинаний следующая УЗ1: 2 УЗ2: 3 УЗ3: 5 УЗ4: 6 УЗ5: 7 УЗ6: 9 УЗ7: 10 УЗ8: 11 УЗ9: 13\nСпособности восстановления ячеек заклинаний после короткого отдыха не будут работать в этой системе] ModUi/&UseElfFaceModelsOnTieflings=Использовать Эльфийские лица на Тифлингах ModUi/&UseHeightOneCylinderEffect=Ограничить высоту эффекта одним уровнем при накладывании Чёрных щупалец, Опутывания, Смазки [квадрат] или Шипов [круг] ModUi/&UseMathFlankingRules=+ Использовать точную математику для определения окружения [может повлиять на производительность на медленных компьютерах] @@ -326,6 +333,7 @@ ModUi/&UseOfficialFlankingRulesAlsoForRanged=+ Включить эти пра ModUi/&UseOfficialFlankingRulesAlsoForReach=+ Также включить для атак досягаемости [отключить точную математику] ModUi/&UseOfficialFlankingRulesButAddAttackModifier=+ Вместо преимущества давать +1 к броскам атаки ModUi/&UseOfficialFoodRationsWeight=Использовать официальный вес Рационов (2 фунта) -ModUi/&UseOfficialObscurementRules=Использовать официальные правила освещения, затемнения и видимости в бою\n[преимущество для атакующего, который видит цель, которая не видит его, и помеха для атакующего, который не видит цель, которая видит его\n сильно заслонённая местность накладывает состояние слепоты, при которой броски атаки по существу совершаются с преимуществом, а броски атаки существа совершаются с помехой\n дистанционные заклинания, целями которых являются существа, не могут быть наложены, если атакующий не видит цель, кроме тех, для которых не указано специально, что необходима видимость] +ModUi/&UseOfficialObscurementRules=Использовать официальные правила освещения, затемнения и видимости в бою +ModUi/&UseOfficialObscurementRulesHelp=[преимущество для атакующего, который видит цель, которая не видит его, и помеха для атакующего, который не видит цель, которая видит его\n сильно заслонённая местность накладывает состояние слепоты, при которой броски атаки по существу совершаются с преимуществом, а броски атаки существа совершаются с помехой\n дистанционные заклинания, целями которых являются существа, не могут быть наложены, если атакующий не видит цель, кроме тех, для которых не указано специально, что необходима видимость] ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons=Использовать официальные правила рас маленького размера при использовании тяжёлого оружия [вы совершаете атаки с помехой] ModUi/&Visuals=Визуальные настройки: [Необходим перезапуск] diff --git a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt index fcad04d246..bbb56cfa7d 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/Spells/Spells04-ru.txt @@ -13,6 +13,18 @@ Condition/&ConditionElementalBaneTitle=Проклятье стихий: {0} Condition/&ConditionIrresistiblePerformanceDescription=Вы не можете выполнять никаких действий, требующих использования рук или рта, но в остальном можете действовать нормально. Condition/&ConditionIrresistiblePerformanceTitle=Неотразимое исполнение Condition/&ConditionPsionicBlastTitle=Затуманенный разум +Condition/&ConditionSickeningRadianceDescription=Вы испускаете тусклый зеленоватый свет в радиусе 5 футов. Этот свет делает невозможным получение преимуществ от невидимости. +Condition/&ConditionSickeningRadianceExhausted1Description=Вы совершаете с помехой проверки характеристик. +Condition/&ConditionSickeningRadianceExhausted1Title=Истощён 1 +Condition/&ConditionSickeningRadianceExhausted2Description=Ваша скорость уменьшается вдвое, и вы совершаете с помехой проверки характеристик. +Condition/&ConditionSickeningRadianceExhausted2Title=Истощён 2 +Condition/&ConditionSickeningRadianceExhausted3Description=Ваша скорость уменьшается вдвое, и вы совершаете с помехой проверки характеристик, броски атаки и спасброски. +Condition/&ConditionSickeningRadianceExhausted3Title=Истощён 3 +Condition/&ConditionSickeningRadianceExhausted4Description=Ваша скорость и максимальные хиты уменьшаются вдвое, и вы совершаете с помехой проверки характеристик, броски атаки и спасброски. +Condition/&ConditionSickeningRadianceExhausted4Title=Истощён 4 +Condition/&ConditionSickeningRadianceExhausted5Description=Ваша скорость равна 0, максимальные хиты уменьшены вдвое, и вы совершаете с помехой проверки характеристик, броски атаки и спасброски. +Condition/&ConditionSickeningRadianceExhausted5Title=Истощён 5 +Condition/&ConditionSickeningRadianceTitle=Болезненное сияние Condition/&ConditionStaggeringSmiteEnemyDescription=Вас поразили психическим уроном. Condition/&ConditionStaggeringSmiteEnemyTitle=Оглушающая кара Condition/&ConditionTreeForestGuardianDescription=Вы получаете 10 временных хитов, совершаете с преимуществом спасброски Телосложения и броски атаки, основанные на Ловкости и Мудрости. @@ -50,6 +62,8 @@ Spell/&PsionicBlastDescription=Вы испускаете ослабляющую Spell/&PsionicBlastTitle=Псионический взрыв Spell/&PsychicLanceDescription=Вы выпускаете мерцающее копье психической силы из своего лба в существо, которое вы можете видеть в пределах дистанции. Цель должна совершить спасбросок Интеллекта. В случае провала цель получает 7d6 урона психической энергией и становится недееспособной до начала вашего следующего хода. В случае успеха существо получает половину этого урона и остаётся дееспособным. Если вы накладываете это заклинание, используя ячейку 5-го уровня или выше, урон увеличивается на 1d6 за каждый уровень ячейки выше 4-го. Spell/&PsychicLanceTitle=Психическое копьё Раулотима +Spell/&SickeningRadianceDescription=Из точки, выбранной вами в пределах дистанции, распространяется сфера тусклого зеленоватого света с радиусом 30 футов. Свет огибает углы и существует до тех пор, пока заклинание не закончится. Если существо впервые за раунд входит в область заклинания или начинает в ней свой ход, оно должно преуспеть в спасброске Телосложения, иначе получит 4d10 урона излучением. Оно также получает одну степень истощения и само начинает испускать тусклый зеленоватый свет в радиусе 5 футов. Этот свет лишает существо возможности быть невидимым. Этот свет делает невозможным получение преимуществ от невидимости. Свет и любые степени истощения, вызванные этим заклинанием, проходят, когда заклинание оканчивается. +Spell/&SickeningRadianceTitle=Болезненное сияние Spell/&StaggeringSmiteDescription=В следующий раз, когда вы попадёте по существу рукопашной атакой оружием, пока активно это заклинание, ваша атака пронзает не только его тело, но и сознание, и атака дополнительно наносит цели 4d6 урона психической энергией. Цель должна совершить спасбросок Мудрости. При провале она до конца своего следующего хода совершает с помехой броски атаки и проверки характеристик, а также не может совершать реакции. Spell/&StaggeringSmiteTitle=Оглушающая кара Spell/&TreeForestGuardianDescription=Ваша кожа покрывается корой, листья прорастают из ваших волос, и вы получаете следующие преимущества:\n• Вы получаете 10 временных хитов.\n• Вы совершаете с преимуществом спасброски Телосложения.\n• Вы совершаете броски атаки, основанные на Ловкости и Мудрости, с преимуществом.\n• Существа в радиусе 30 футов от вас должны пройти спасбросок Силы, иначе они будут скованы на время действия заклинания. Они могут повторять спасбросок в начале каждого хода. diff --git a/SolastaUnfinishedBusiness/Translations/ru/SubClasses/CollegeOfAudacity-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/SubClasses/CollegeOfAudacity-ru.txt index f578ca4e7c..dea2a25cbf 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/SubClasses/CollegeOfAudacity-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/SubClasses/CollegeOfAudacity-ru.txt @@ -1,26 +1,27 @@ -Action/&AudaciousWhirlToggleDescription=Начать/отменить Дерзкий вихрь -Action/&AudaciousWhirlToggleTitle=Дерзкий вихрь -Action/&MasterfulWhirlToggleDescription=Начать/отменить Искусный вихрь -Action/&MasterfulWhirlToggleTitle=Искусный вихрь -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Бросок Вихря прибавляется к КД. -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Защитный вихрь -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Каждый раз, когда вы совершаете действие Атака в свой ход, ваша скорость передвижения увеличивается на 10 футов до конца хода, и если рукопашная атака оружием, которую вы совершаете в рамках этого действия, попадает по существу, вы можете потратить одну кость вашего Бардовского вдохновения, чтобы заставить оружие нанести дополнительный урон цели, по которой вы попали. Урон равен числу, выпавшему на кости Бардовского вдохновения. Вы также можете выбрать определённый манёвр:\n• Защитный вихрь: Вы добавляете бросок кости Бардовского вдохновения к вашему КД до начала вашего следующего хода.\n• Рубящий вихрь: Вы наносите дополнительный урон всем другим враждебным существам в радиусе 5 футов от вас.\n• Подвижный вихрь: Вы получаете преимущества действия Отход до конца вашего хода. -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Дерзкий вихрь +Action/&AudaciousWhirlToggleDescription=Начать/отменить Росчерк клинка +Action/&AudaciousWhirlToggleTitle=Росчерк клинка +Action/&MasterfulWhirlToggleDescription=Начать/отменить Мастерский росчерк +Action/&MasterfulWhirlToggleTitle=Мастерский росчерк +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=Бросок Росчерка прибавляется к КД. +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=Оборонительный росчерк +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=Каждый раз, когда вы совершаете действие Атака в свой ход, ваша скорость передвижения увеличивается на 10 футов до конца хода, и если рукопашная атака оружием, которую вы совершаете в рамках этого действия, попадает по существу, вы можете потратить одну кость вашего Бардовского вдохновения, чтобы заставить оружие нанести дополнительный урон цели, по которой вы попали. Урон равен числу, выпавшему на кости Бардовского вдохновения. Вы также можете выбрать определённый манёвр:\n• Оборонительный росчерк: Вы добавляете бросок кости Бардовского вдохновения к вашему КД до начала вашего следующего хода.\n• Режущий росчерк: Вы наносите дополнительный урон всем другим враждебным существам в радиусе 5 футов от вас.\n• Мобильный росчерк: Вы получаете преимущества действия Отход до конца вашего хода. +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=Росчерк клинка Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=Вы получаете владение средними доспехами и скимитарами. Вы также можете использовать ваше оружие в качестве заклинательной фокусировки ваших заклинаний барда. Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=Бонусные умения -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Когда вы используете умение Дерзкий вихрь, вы можете бросить кость d6 и использовать результат вместо того, чтобы тратить кость Бардовского вдохновения. -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Искусный вихрь +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=Когда вы используете умение Росчерк клинка, вы можете бросить кость d6 и использовать результат вместо того, чтобы тратить кость Бардовского вдохновения. +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=Мастерский росчерк Feature/&FightingStyleChoiceCollegeOfAudacityDescription=Вы избираете определённый стиль боя в качестве своей специализации. Выберите Дуэлянта или Сражение двумя оружиями. Feature/&FightingStyleChoiceCollegeOfAudacityTitle=Боевой стиль -Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Вы можете потратить одну кость своего Бардовского вдохновения, чтобы заставить оружие нанести дополнительный урон цели, по которой вы попали. Урон равен числу, выпавшему на кости Бардовского вдохновения, или d6, если вы владеете Искусным вихрем. Вы также прибавляете число, выпавшее при броске, к своему КД до начала вашего следующего хода. -Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Защитный вихрь -Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Вы можете потратить одну кость своего Бардовского вдохновения, чтобы заставить оружие нанести дополнительный урон цели, по которой вы попали. Урон равен числу, выпавшему на кости Бардовского вдохновения, или d6, если вы владеете Искусным вихрем. Вы получаете преимущества действия Отхода до конца вашего хода. -Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Подвижный вихрь -Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Вы можете потратить одну кость своего Бардовского вдохновения, чтобы заставить оружие нанести дополнительный урон цели, по которой вы попали, и всем другим враждебным существам в радиусе 5 футов от вас. Урон равен числу, выпавшему на кости Бардовского вдохновения, или d6, если вы владеете Искусным вихрем. -Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Рубящий вихрь -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} может заставить оружие нанести дополнительный урон цели. Урон равен числу, выпавшему на кости Бардовского вдохновения, или d6, если это Искусный вихрь. -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Вихрь -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Вихрь -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Вихрь +Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=Вы можете потратить одну кость своего Бардовского вдохновения, чтобы заставить оружие нанести дополнительный урон цели, по которой вы попали. Урон равен числу, выпавшему на кости Бардовского вдохновения, или d6, если вы владеете Мастерским росчерком. Вы также прибавляете число, выпавшее при броске, к своему КД до начала вашего следующего хода. +Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=Оборонительный росчерк +Feature/&PowerCollegeOfAudacityMobileWhirlDescription=Вы можете потратить одну кость своего Бардовского вдохновения, чтобы заставить оружие нанести дополнительный урон цели, по которой вы попали. Урон равен числу, выпавшему на кости Бардовского вдохновения, или d6, если вы владеете Мастерским росчерком. Вы получаете преимущества действия Отхода до конца вашего хода. +Feature/&PowerCollegeOfAudacityMobileWhirlTitle=Мобильный росчерк +Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=Вы можете потратить одну кость своего Бардовского вдохновения, чтобы заставить оружие нанести дополнительный урон цели, по которой вы попали, и всем другим враждебным существам в радиусе 5 футов от вас. Урон равен числу, выпавшему на кости Бардовского вдохновения, или d6, если вы владеете Мастерским росчерком. +Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=Режущий росчерк +Feedback/&CollegeOfAudacityDefensiveWhirl={0} бросает кость {2}, добавляя {3} к КД. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} может заставить оружие нанести дополнительный урон цели. Урон равен числу, выпавшему на кости Бардовского вдохновения, или d6, если это Мастерский росчерк. +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=Росчерк +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=Росчерк +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=Росчерк Subclass/&CollegeOfAudacityDescription=Барды Коллегии мечей развлекают публику лихими приёмами владения оружием. Они выполняют такие трюки, как глотание меча, метание ножей, жонглирование и шуточные бои. Хотя они используют свое оружие для развлечения, они также являются высококвалифицированными и искусными воинами, благодаря их талантам. Subclass/&CollegeOfAudacityTitle=Коллегия мечей diff --git a/SolastaUnfinishedBusiness/Translations/ru/SubClasses/MartialTactician-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/SubClasses/MartialTactician-ru.txt index a36584cbe5..fbd779f97c 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/SubClasses/MartialTactician-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/SubClasses/MartialTactician-ru.txt @@ -12,8 +12,8 @@ Feature/&FeatureSetTacticianHonedCraftDescription=Вы получаете ком Feature/&FeatureSetTacticianHonedCraftTitle=Отточенное ремесло Feature/&FeatureSetTacticianSharpMindDescription=Вы получаете владение одним навыком по вашему выбору. Feature/&FeatureSetTacticianSharpMindTitle=Острый ум -Feature/&FeatureSetTacticianTacticalAwarenessDescription=Пока вы не недееспособны, вы получаете следующие преимущества:\n• Раз в ход ваша атака оружием наносит дополнительный урон, равный вашему бонусу мастерства.\n• Атаки по возможности, которые вы производите, совершаются с преимуществом.\n• Атаки по возможности против вас совершаются с помехой. -Feature/&FeatureSetTacticianTacticalAwarenessTitle=Тактическая осведомлённость +Feature/&FeatureSetTacticianTacticalAwarenessDescription=Во время боя вы восстанавливаете кость превосходства в начале каждого своего хода. +Feature/&FeatureSetTacticianTacticalAwarenessTitle=Мастер боевых действий Feature/&FeatureTacticianGambitDieSizeD10Description=Ваша кость превосходства улучшена до D10. Feature/&FeatureTacticianGambitDieSizeD10Title=Размер кости превосходства (d10) Feature/&FeatureTacticianGambitDieSizeD12Description=Ваша кость превосходства улучшена до D12. diff --git a/SolastaUnfinishedBusiness/Translations/ru/SubClasses/PathOfTheBeast-ru.txt b/SolastaUnfinishedBusiness/Translations/ru/SubClasses/PathOfTheBeast-ru.txt index e7bb32f8b5..c3953e18b8 100644 --- a/SolastaUnfinishedBusiness/Translations/ru/SubClasses/PathOfTheBeast-ru.txt +++ b/SolastaUnfinishedBusiness/Translations/ru/SubClasses/PathOfTheBeast-ru.txt @@ -24,7 +24,7 @@ Feature/&PowerPathOfTheBeastFormOfTheBeastTailTitle=Форма зверя: хв Feature/&PowerPathOfTheBeastFormOfTheBeastTitle=Форма зверя Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeDescription=Цель совершает рукопашную атаку против другого существа по вашему выбору. Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeTitle=Заразная ярость: Принудительный удар -Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Когда вы в ярости и попадаете по существу своим природным оружием, зверь внутри вас может проклясть цель атаки бешенством. Цель должна преуспеть в спасброске Мудрости (Сл 8 + ваш модификатор Телосложения + ваш бонус мастерства), иначе получит один из следующих эффектов (по вашему выбору). +Feature/&PowerPathOfTheBeastInfectiousFuryDescription=Когда вы в ярости и попадаете по существу своим природным оружием, зверь внутри вас может проклясть цель атаки бешенством. Цель должна преуспеть в спасброске Мудрости (Сл 8 + ваш модификатор Телосложения + ваш бонус мастерства), иначе получит один из следующих эффектов (по вашему выбору).\n\nВы можете использовать это умение количество раз, равное вашему бонусу мастерства, вы восстанавливаете все использования по окончании продолжительного отдыха. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashDescription=Цель получает 2d12 урона психической энергией. Feature/&PowerPathOfTheBeastInfectiousFuryMindlashTitle=Заразная ярость: Взрыв разума Feature/&PowerPathOfTheBeastInfectiousFuryTitle=Заразная ярость diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/MeleeCombat-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/MeleeCombat-zh-CN.txt index 29c9de1636..76a46a3540 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/MeleeCombat-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/MeleeCombat-zh-CN.txt @@ -34,8 +34,6 @@ Feat/&FeatFencerDescription=如果你在回合中执行攻击动作时持有近 Feat/&FeatFencerTitle=剑术家 Feat/&FeatGreatWeaponDefenseDescription=你能娴熟挥舞大型武器,获得以下好处:\n• 当你将生物的生命值降至 0 点或使用近战武器造成致命一击时,你的移动速度将增加 15 英尺,直到你的回合结束。\n• 当你双手挥舞重型近战或多功能武器并采取攻击行动时,你将获得 +2AC,直到你的下一回合开始。如果你装备其他武器或盾牌,你将失去此好处。 Feat/&FeatGreatWeaponDefenseTitle=战斗狂热 -Feat/&FeatHammerThePointDescription=你知道如何集中注意并专攻于一处。在你对一个目标进行攻击检定后,对该目标的攻击和伤害检定获得 +1,直到你的回合结束(叠加)。 -Feat/&FeatHammerThePointTitle=专攻要害 Feat/&FeatLongswordFinesseDescription=你是一位长剑大师的后裔,其将一些精湛技艺传授于你。你获得下列增益:\n• 你的敏捷值 +1,上限为 20。\n• 当你持有长剑时,你的护甲等级获得 +1 加值。\n• 你使用长剑时具有灵巧属性。 Feat/&FeatLongswordFinesseTitle=长剑技巧 Feat/&FeatOldTacticsDexDescription=你的敏捷 +1。每轮一次,当你的近战武器触及范围内的俯卧敌人站起来时,你可以对目标进行借机攻击。 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/OtherFeats-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/OtherFeats-zh-CN.txt index 1951c09a1e..80e81ee4c2 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/OtherFeats-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/OtherFeats-zh-CN.txt @@ -8,8 +8,6 @@ Feat/&FeatAlertDescription=时刻警惕危险。你获得以下好处:\n• Feat/&FeatAlertTitle=警觉 Feat/&FeatArcaneArcherAdeptDescription=你掌握的奥术魔法与弓箭训练,允许你执行特殊的战斗策略。 Feat/&FeatArcaneArcherAdeptTitle=魔射专家 -Feat/&FeatAstralArmsDescription=你的感知 +1,上限为 20。\n当你在你的回合进行攻击时,你的攻击范围为 10 尺。其他生物进入你的徒手攻击范围时会引发你的借机攻击. -Feat/&FeatAstralArmsTitle=星灵延伸 Feat/&FeatAthleteDexDescription=你已经接受了大量的体能训练,以获得以下好处:\n• 你的敏捷 +1,上限为 20。\n• 当你倒地时,站起来不会消耗你的移动力。\n•攀爬无需额外消耗移动力。\n• 你获得运动熟练项,如果已有熟练项,则获得专精。 Feat/&FeatAthleteDexTitle=运动员【敏捷】 Feat/&FeatAthleteStrDescription=你已经接受了大量的体能训练,以获得以下好处:\n• 你的力量 +1,上限为 20。\n• 当你倒地时,站起来不会消耗你的移动力。\n•攀爬无需额外消耗移动力。\n• 你获得运动熟练项,如果已有熟练项,则获得专精。 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/RangedCombat-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/RangedCombat-zh-CN.txt index 5adaa340c8..fb2d046059 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/RangedCombat-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Feats/RangedCombat-zh-CN.txt @@ -10,8 +10,6 @@ Feat/&FeatDeadeyeDescription=你已经学会了用准确性换取更致命的射 Feat/&FeatDeadeyeTitle=神射手 Feat/&FeatRangedExpertDescription=你对远程武器的专业训练为你带来以下好处:\n• 近战范围内的攻击不会带来劣势。\n• 当你在你的回合采取攻击行动时,你可以用附赠动作进行一次单手远程武器攻击,将你的属性调整值添加到伤害中。 Feat/&FeatRangedExpertTitle=远程专家 -Feat/&FeatSteadyAimDescription=你的敏捷 +1,上限为 20。作为附赠动作,你在当前回合的下一次攻击检定中获得优势。只有当你在本回合中没有移动时你才能使用这个附赠动作,并且在你使用这个附赠动作后,你的速度在本回合结束前为 0。 -Feat/&FeatSteadyAimTitle=稳步瞄准 Feature/&PowerFeatSteadyAimDescription=作为附赠动作,你可以在当前回合的下一次攻击检定中为自己带来优势。只有当你在本回合中没有移动时,你才能使用此附赠动作,并且在使用附赠动作后,你的速度为 0,直到当前回合结束。 Feature/&PowerFeatSteadyAimTitle=稳定瞄准 Tooltip/&DeadeyeConcentration=禁用神射手。 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/FightingStyles-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/FightingStyles-zh-CN.txt index 90bbb40d83..8022002670 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/FightingStyles-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/FightingStyles-zh-CN.txt @@ -22,8 +22,6 @@ FightingStyle/&LungerDescription=当只使用一件没有重型标签的近战 FightingStyle/&LungerTitle=突刺者 FightingStyle/&MercilessDescription=当你在回合中使用近战武器攻击将目标生命值降至 0 时,在被击倒目标半径等于你熟练加值一半(向上取整)的范围内,能够看到目标的敌人必须进行感知豁免(DC 8 + 你的熟练加值+ 你的力量调整值)或者变得恐慌你,直到你的下一个回合结束。如果触发攻击是重击,则半径等于你的熟练加值。 FightingStyle/&MercilessTitle=无情 -FightingStyle/&MonkShieldExpertDescription=你获得了盾牌熟练项,并且它们不会阻止你用那只手进行徒手攻击。此外,即使挥舞盾牌,你的所有武僧能力也能发挥作用。 -FightingStyle/&MonkShieldExpertTitle=武僧盾训 FightingStyle/&PolearmExpertDescription=你的长柄武器专家训练赋予你以下好处:\n• 当你采取攻击动作并仅使用长柄武器攻击时,你可以使用附赠动作用武器的另一端进行近战攻击。此攻击使用与主要攻击相同的属性调整值并造成 1d4 钝击伤害。\n• 当其他生物进入你挥舞长柄武器的范围时,会引发你的借机攻击。 FightingStyle/&PolearmExpertTitle=长柄武器大师 FightingStyle/&PugilistDescription=你的徒手攻击造成额外的 1d4 钝击伤害,并且你可以用你的副手作为附赠动作进行打击。如果你有空手,你可以将推撞作为附赠动作。 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt index b7ca7e5bd2..77faefbe3e 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Others-zh-CN.txt @@ -281,6 +281,8 @@ Screen/&RangerSpellTitle=游侠 Screen/&RepertoireHeaderFormat={0} Screen/&RoguishSpellDescription=此法术已被你的游荡者职业授予,并被视为你已知。 Screen/&RoguishSpellTitle=游荡者 +Screen/&SpellAlternatePointsCostTooltip={0} 分 +Screen/&SpellAlternatePointsTooltip=您剩余 {0} 点法术值。 Screen/&SpellSlotsUsedLongDescription=你已在该等级扩展了 {0} 个法术位。 Screen/&SpellSlotsUsedShortDescription=你已经扩展了 {0} 个契约魔法法术位。 Screen/&SpellSlotsUsedShortLongDescription=你在这个等级已经扩展了 {0} 个契约魔法法术位和 {1} 个法术位。 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Settings-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Settings-zh-CN.txt index d456e48b82..8a04adda21 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Settings-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Settings-zh-CN.txt @@ -42,6 +42,7 @@ ModUi/&Bestiary=怪物池 ModUi/&BestowCurseNoConcentrationRequiredForSlotLevel5OrAbove=降咒使用5环以上法术位施放时不需要专注 ModUi/&BlindedConditionDontAllowAttackOfOpportunity=被致盲时不允许借机攻击 ModUi/&Blueprints=蓝图 +ModUi/&Camera=相机: ModUi/&Campaigns=战役: ModUi/&CampaignsAndLocations=战役和地点: ModUi/&Category=职业 @@ -118,6 +119,7 @@ ModUi/&EnableCheatMenu=启用作弊菜单 ModUi/&EnableCustomPortraits=启用自定义肖像 ModUi/&EnableCustomPortraitsHelp=。将你的自定义肖像放在子文件夹 PersonalPreGen,以英雄名字[即:Anton、Celia、Nialla 等]\n 命名。使用 PNG 图像,大小为 256 x 384 像素,带有透明层[使用 GIMP 以获得最佳效果] ModUi/&EnableDungeonMakerModdedContent=启用地城编辑器Pro\n[包括平坦的房间、150x150 和 200x200 的地牢大小以及简洁的混合来自所有环境的素材] +ModUi/&EnableElevationCameraToStayAtPosition=启用高程相机在禁用后停留在原位置 ModUi/&EnableEpicPointsAndArray=启用史诗级 35 点购点和默认骰[17,15,13,12,10,8][需要重启] ModUi/&EnableExtendedProficienciesPanelDisplay=启用扩展熟练面板显示[奥术射击、注法、战技和多种功能]\n[角色性能提升检查。使用风险自负] ModUi/&EnableFeatsAtEvenLevels=在等级 2、10 和 18 级启用专长选择 @@ -233,13 +235,15 @@ ModUi/&Monsters=怪物: ModUi/&MovementGridWidthModifier=将移动格子宽度乘以 [%] ModUi/&MulticlassKeyHelp=SHIFT点击法术会反转消耗的默认曲目槽类型\n[术士消耗白色法术位,其他职业消耗绿色的] ModUi/&MultiplyTheExperienceGainedBy=乘以获得的经验[%] +ModUi/&NeverMoveCameraOnEnemyTurn=+ 敌人回合时镜头永不移动 ModUi/&NoExperienceOnLevelUp=升级不需要经验 ModUi/&OfferAdditionalLoreFriendlyNames=在角色创建时提供额外的知识友好名称 ModUi/&OfficialObscurementRulesCancelAdvDisPairs=+ 取消对目盲、隐形和感知到的优势/劣势[与官方优势/劣势规则结合使用] ModUi/&OfficialObscurementRulesHeavilyObscuredAsProjectileBlocker=+ 将重度遮蔽区域更改为射弹阻挡器[死云术、云雾术、焚云术、花瓣风暴、雪雨暴、臭云术] ModUi/&OfficialObscurementRulesInvisibleCreaturesCanBeTarget=+ 隐形生物被重度遮蔽,可以成为目标,针对该生物的攻击检定具有劣势,而该生物的攻击检定具有优势 ModUi/&OfficialObscurementRulesMagicalDarknessAsProjectileBlocker=+ 将魔法遮蔽区域更改为射弹阻挡器[黑暗术法术效果的任何来源] -ModUi/&OfficialObscurementRulesTweakMonsters=+ 在适当的时候向怪物和NPC添加黑暗视觉、盲视和真实视觉\n [设置集合MonstersThatShouldHaveDarkvisionMonstersThatShouldHaveTrueSightMonstersThatShouldHaveBlindSight] +ModUi/&OfficialObscurementRulesTweakMonsters=+ 在适当的情况下为怪物和 NPC 添加 Darkvision、BlindSight 和 TrueSight +ModUi/&OfficialObscurementRulesTweakMonstersHelp=[设置的集合MonstersThatShouldHaveDarkvisionMonstersThatShouldHaveTrueSightMonstersThatShouldHaveBlindSight] ModUi/&OnlyShowMostPowerfulUpcastConjuredElementalOrFey=+只显示魔法列表中最强大的生物 ModUi/&OutlineGridWidthModifier=将轮廓网格宽度乘以 [%] ModUi/&OutlineGridWidthSpeed=将轮廓网格动画速度乘以 [%] @@ -276,6 +280,7 @@ ModUi/&SelectTabletop=选择桌面 ModUi/&SenseNormalVisionRangeMultiplier=修改正常视力范围[仅在战斗中] ModUi/&Services=服务 ModUi/&SetBeltOfDwarvenKindBeardChances=矮人腰带胡须出现几率 +ModUi/&SetElevationCameraMaxHeightBy=将相机最大高度增加 ModUi/&SettingsExport=导出 ModUi/&SettingsHelp=•作为主机,你可以导出当前配置,打开导出文件夹并轻松与你的联机者共享\n•作为客机,你可以打开导出文件夹,从主机粘贴分享的设置文件并覆盖设置。[需要重启生效] ModUi/&SettingsLoad=•加载导出的设置 @@ -317,6 +322,8 @@ ModUi/&UnlockGlowingEyeColors=添加亮色的眼睛 ModUi/&UnlockMarkAndTattoosForAllCharacters=解锁所有角色的术士起源标记和纹身 ModUi/&UnlockSkinColors=解锁肤色 ModUi/&Update=更新 +ModUi/&UseAlternateSpellPointsSystem=使用官方变体法术点规则 +ModUi/&UseAlternateSpellPointsSystemHelp=[你拥有随着施法者等级提升而增加的法术点数池\nL01:04 L02:06 L03:14 L04:17 L05:27 L06:32 L07:38 L08:44 L09:57 L10:64\nL11:73 L12:73 L13:83 L14:83 L15:94 L16:94 L17:107 L18:114 L19:123 L20:133\n施放法术的费用为 SL1:2 SL2:3 SL3:5 SL4:6 SL5:7 SL6:9 SL7:10 SL8:11 SL9:13\n在此系统下不会触发短暂休息槽恢复功能] ModUi/&UseElfFaceModelsOnTieflings=在提夫林上使用精灵的面部模型 ModUi/&UseHeightOneCylinderEffect=施放黑色触手、纠缠、油腻[方形]荆棘丛生[圆形]时使用高度为1的立体效果 ModUi/&UseMathFlankingRules=+ 使用精确的数学来确定侧翼 [可能会对慢速机器产生性能影响] @@ -326,6 +333,7 @@ ModUi/&UseOfficialFlankingRulesAlsoForRanged=+ 还可以进行远程攻击+ 还启用触及攻击[禁用精确数学] ModUi/&UseOfficialFlankingRulesButAddAttackModifier=+ 将优势改为 +1 攻击掷骰 ModUi/&UseOfficialFoodRationsWeight=将食物配给的重量减少到 2 磅 -ModUi/&UseOfficialObscurementRules=使用官方的光照、掩蔽和视野战斗规则\n[察觉到防御者的攻击者获得优势,没有察觉到的攻击者获得劣势\n 严重掩蔽的区域造成失明状态,其中针对该生物的攻击骰具有优势,并且该生物的攻击骰具有劣势\n 如果攻击者没有视野,则无法施放针对个人的所有距离法术,除了那些明确没有说明需要视野的] +ModUi/&UseOfficialObscurementRules=使用官方照明、遮蔽和视觉战斗规则 +ModUi/&UseOfficialObscurementRulesHelp=[能感知到防御者但无法感知到攻击者的防御者会获得 ADV,无法感知到攻击者但可以感知到防御者会获得 DIS\n 被严重遮挡的区域会造成致盲状态,对生物的攻击掷骰获得 ADV,而生物的攻击掷骰获得 DIS\n 如果攻击者没有视力,则无法施放针对个人的所有远距离法术,除了那些明确未说明需要视力的法术] ModUi/&UseOfficialSmallRacesDisWithHeavyWeapons=使用重型武器时请使用官方小型体型种族规则[你的攻击处于劣势] ModUi/&Visuals=视觉效果:[需要重启] diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt index 57347f59ae..e343af48b6 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/Spells/Spells04-zh-CN.txt @@ -13,6 +13,18 @@ Condition/&ConditionElementalBaneTitle=元素灾厄:{0} Condition/&ConditionIrresistiblePerformanceDescription=你无法执行任何需要用手或嘴但可以正常行动的动作。 Condition/&ConditionIrresistiblePerformanceTitle=动人演出 Condition/&ConditionPsionicBlastTitle=心绪混乱 +Condition/&ConditionSickeningRadianceDescription=你发出半径 5 英尺的微弱光芒。这束光芒使你无法隐身。 +Condition/&ConditionSickeningRadianceExhausted1Description=你在能力检定上处于劣势。 +Condition/&ConditionSickeningRadianceExhausted1Title=精疲力尽 1 +Condition/&ConditionSickeningRadianceExhausted2Description=你的速度减半,并且在能力检定上处于劣势。 +Condition/&ConditionSickeningRadianceExhausted2Title=精疲力尽 2 +Condition/&ConditionSickeningRadianceExhausted3Description=你的速度减半,并且在能力检定、攻击检定和豁免检定中处于劣势。 +Condition/&ConditionSickeningRadianceExhausted3Title=精疲力尽 3 +Condition/&ConditionSickeningRadianceExhausted4Description=你的速度和最大生命值减半,并且在能力检定、攻击掷骰和豁免检定中处于劣势。 +Condition/&ConditionSickeningRadianceExhausted4Title=筋疲力尽 4 +Condition/&ConditionSickeningRadianceExhausted5Description=您的速度为 0,最大生命值减半,并且您在能力检定、攻击掷骰和豁免检定中处于劣势。 +Condition/&ConditionSickeningRadianceExhausted5Title=精疲力尽 5 +Condition/&ConditionSickeningRadianceTitle=令人作呕的光芒 Condition/&ConditionStaggeringSmiteEnemyDescription=你受到心灵伤害。 Condition/&ConditionStaggeringSmiteEnemyTitle=惊惧斩 Condition/&ConditionTreeForestGuardianDescription=你获得 10 点临时生命值,你可以优势地进行体质豁免检定,并且你可以优势进行基于敏捷和感知的攻击检定。 @@ -50,6 +62,8 @@ Spell/&PsionicBlastDescription=你在一个 30 英尺的锥形区域内释放出 Spell/&PsionicBlastTitle=灵能震爆 Spell/&PsychicLanceDescription=你从前额向范围内你能看到的生物释放出一道闪烁着灵能之力的长矛。它必须在智力豁免检定中成功,否则会受到 7d6 心灵伤害并失能,直到你的下一回合结束。豁免成功后,该生物会受到一半伤害并且不会失能。在更高的层次上。当你使用五环或更高环阶的法术位施放此法术时,你使用的法术位每比四环高一环,其伤害就增加 1d6。 Spell/&PsychicLanceTitle=劳洛希姆心灵长枪 +Spell/&SickeningRadianceDescription=昏暗的光线以你在范围内选择的点为中心,在半径 30 英尺的球体内扩散。光线会扩散到各个角落,并持续到法术结束。当生物在一回合中第一次进入法术区域或在该区域开始其回合时,该生物必须成功进行体质豁免检定,否则会受到 4d10 辐射伤害,并且会遭受一级疲劳并在半径 5 英尺内发出昏暗的光线。此光线使生物无法从隐身中获益。法术结束时,光线和此法术造成的任何疲劳程度都会消失。 +Spell/&SickeningRadianceTitle=令人作呕的光芒 Spell/&StaggeringSmiteDescription=在此法术的持续时间内,下次你用武器攻击命中一个生物时,你的武器会刺穿身体和心灵,并且攻击会对目标造成额外的 4d6 心灵伤害。目标必须进行一次感知豁免。豁免失败时,它在攻击检定和能力检定上具有劣势,并且不能做出反应,直到它的下一轮结束。 Spell/&StaggeringSmiteTitle=惊惧斩 Spell/&TreeForestGuardianDescription=你的皮肤看起来像树皮,头发上长出新芽,你将获得以下好处:\n• 你获得 10 点临时生命值。\n• 你在体质豁免检定中具有优势。\n• 你获得基于敏捷和感知的攻击检定优势。\n• 距离你 30 尺内的生物必须进行一次力量豁免检定,否则会在法术持续时间内受到阻碍。他们可以在每个回合开始时重投豁免检定。 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/CollegeOfAudacity-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/CollegeOfAudacity-zh-CN.txt index 0881b4edc7..82fd7cc1a4 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/CollegeOfAudacity-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/CollegeOfAudacity-zh-CN.txt @@ -1,26 +1,27 @@ -Action/&AudaciousWhirlToggleDescription=激活/停用剑舞旋舞 -Action/&AudaciousWhirlToggleTitle=剑舞旋舞 -Action/&MasterfulWhirlToggleDescription=激活/停用旋舞大师 -Action/&MasterfulWhirlToggleTitle=旋舞大师 -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=旋舞骰值添加到护甲等级。 -Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=守御旋舞 -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=每当你在回合中采取攻击动作时,你的步行速度都会增加 10 尺,直到回合结束,如果你在此动作中进行的武器攻击击中了生物,你可以花费一次诗人激励。伤害等于你在诗人激励骰上掷出的数值。你还可以选择特定的策略:\n• 守御旋舞:你可以将诗人激励骰子添加到你的 AC 中,直到下一回合开始。\n• 乱击旋舞:你对你周围 5 尺内的所有其他敌方生物造成额外伤害。\n• 推击旋舞:你获得撤离的好处,直到你的回合结束。 -Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=剑舞旋舞 -Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=你获得中甲和弯刀熟练项。你还可以使用武器作为吟游诗人法术的法器。 -Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=附赠熟练项 -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=每当你使用“剑舞旋舞”能力时,你都可以掷出 D6 并使用它,而不是花费诗人激励骰。 -Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=旋舞大师 -Feature/&FightingStyleChoiceCollegeOfAudacityDescription=你采用一种特定的战斗风格作为你的专精。选择对决或双武器战斗。 -Feature/&FightingStyleChoiceCollegeOfAudacityTitle=战斗风格 -Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=你可以花费一次诗人激励,使武器对你击中的目标造成额外伤害。伤害等于你在诗人激励骰或 D6(如果是旋舞大师)上掷出的数字。你还可以将掷出的数字添加到你的防御等级(AC)中,直到下一回合开始。 -Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=守御旋舞 -Feature/&PowerCollegeOfAudacityMobileWhirlDescription=你可以花费一次诗人激励,使武器对你击中的目标造成额外伤害。伤害等于你在诗人激励骰或 D6(如果是旋舞大师)上掷出的数字。你获得撤离的好处,直到你的回合结束。 -Feature/&PowerCollegeOfAudacityMobileWhirlTitle=推击旋舞 -Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=你可以花费一次诗人激励,使武器对你击中的目标以及你周围 5 尺内的所有其他敌方生物造成额外伤害。伤害等于你在诗人激励骰或 D6(如果是旋舞大师)上掷出的数字。 -Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=乱击旋舞 -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} 可以使武器对目标造成额外伤害。伤害等于你在诗人激励骰或 D6(如果是旋舞大师)上掷出的数值。 -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=旋舞 -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=旋舞 -Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=旋舞 -Subclass/&CollegeOfAudacityDescription=剑舞学院的吟游诗人通过大胆的武器技巧来娱乐。他们表演吞剑、扔刀、杂耍、模拟格斗等特技。尽管他们使用武器来娱乐,但他们本身也是训练有素、技术精湛的战士。 -Subclass/&CollegeOfAudacityTitle=剑舞学院 +Action/&AudaciousWhirlToggleDescription=激活/停用 Blade Flourish +Action/&AudaciousWhirlToggleTitle=剑刃绽放 +Action/&MasterfulWhirlToggleDescription=激活/停用大师的繁荣 +Action/&MasterfulWhirlToggleTitle=大师的辉煌 +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlDescription=繁荣昌盛,卷入 AC。 +Feature/&AttributeModifierCollegeOfAudacityDefensiveWhirlTitle=防守蓬勃发展 +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlDescription=每当您在自己的回合中采取攻击行动时,您的行走速度都会增加 10 英尺,直到回合结束为止。如果您在此行动中进行的近战武器攻击击中了生物,您可以消耗一次吟游诗人灵感,使武器对击中的目标造成额外伤害。伤害等于您在吟游诗人灵感骰子上掷出的数值。您还可以选择一种特定的动作:\n• 防御性华丽:您将吟游诗人灵感骰子掷出的数值添加到您的 AC 中,直到您的下一回合开始为止。\n• 挥砍华丽:您对您 5 英尺范围内的所有其他敌方生物造成额外伤害。\n• 移动华丽:您获得脱离的好处,直到回合结束为止。 +Feature/&FeatureSetCollegeOfAudacityAudaciousWhirlTitle=剑刃绽放 +Feature/&FeatureSetCollegeOfAudacityBonusProficienciesDescription=你熟练掌握中型盔甲和弯刀。你还可以使用你的武器作为吟游诗人法术的施法焦点。 +Feature/&FeatureSetCollegeOfAudacityBonusProficienciesTitle=奖励熟练度 +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlDescription=每当您使用 Blade Flourish 选项时,您可以掷一个 D6 并使用它来代替消耗 Bardic Inspiration 骰子。 +Feature/&FeatureSetCollegeOfAudacityMasterfulWhirlTitle=大师的辉煌 +Feature/&FightingStyleChoiceCollegeOfAudacityDescription=你采用一种特殊的战斗风格作为你的专长。选择决斗或双武器战斗。 +Feature/&FightingStyleChoiceCollegeOfAudacityTitle=格斗风格 +Feature/&PowerCollegeOfAudacityDefensiveWhirlDescription=你可以花费一次吟游灵感,让武器对你击中的目标造成额外伤害。伤害等于你在吟游灵感骰子上掷出的数字,如果是大师的华丽,则为 D6。你还可以将掷出的数字添加到你的 AC 中,直到你的下一轮开始。 +Feature/&PowerCollegeOfAudacityDefensiveWhirlTitle=防守蓬勃发展 +Feature/&PowerCollegeOfAudacityMobileWhirlDescription=你可以花费一次吟游灵感,让武器对你击中的目标造成额外伤害。伤害等于你在吟游灵感骰子上掷出的数字,如果是大师的华丽,则为 D6。在你的回合结束前,你可以获得脱离的好处。 +Feature/&PowerCollegeOfAudacityMobileWhirlTitle=移动繁荣 +Feature/&PowerCollegeOfAudacitySlashingWhirlDescription=你可以使用一次吟游灵感,让武器对你击中的目标以及你 5 英尺范围内的所有其他敌方生物造成额外伤害。伤害等于你在吟游灵感骰子上掷出的数字,如果是大师的华丽,则为 D6。 +Feature/&PowerCollegeOfAudacitySlashingWhirlTitle=大肆繁华 +Feedback/&CollegeOfAudacityDefensiveWhirl={0} 掷出 {2} 个骰子,将 {3} 加到 AC。 +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlDescription={0} 可使武器对目标造成额外伤害。伤害等于您在吟游诗人灵感骰子上掷出的数字,如果是大师的华丽骰子,则为 D6。 +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactDescription=繁荣 +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlReactTitle=繁荣 +Reaction/&ReactionSpendPowerBundlePowerCollegeOfAudacityAudaciousWhirlTitle=繁荣 +Subclass/&CollegeOfAudacityDescription=剑术学院的吟游诗人通过大胆的武器威力表演来娱乐观众。他们表演吞剑、掷刀和玩杂耍以及模拟战斗等特技。虽然他们使用武器来娱乐观众,但他们本身也是训练有素、技艺精湛的战士。 +Subclass/&CollegeOfAudacityTitle=剑术学院 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/MartialTactician-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/MartialTactician-zh-CN.txt index ab16e5a5e2..141f43b9b7 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/MartialTactician-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/MartialTactician-zh-CN.txt @@ -12,8 +12,8 @@ Feature/&FeatureSetTacticianHonedCraftDescription=获得你选择的技能或工 Feature/&FeatureSetTacticianHonedCraftTitle=砥砺技能 Feature/&FeatureSetTacticianSharpMindDescription=获得你选择的技能熟练项。 Feature/&FeatureSetTacticianSharpMindTitle=欺骗思想 -Feature/&FeatureSetTacticianTacticalAwarenessDescription=当你没有失能时,你将获得以下好处:\n• 每回合一次,你的武器攻击会造成相当于你熟练加值的额外伤害。\n• 你进行的借机攻击具有优势。\n• 对你的借机攻击具有劣势。 -Feature/&FeatureSetTacticianTacticalAwarenessTitle=战术意识 +Feature/&FeatureSetTacticianTacticalAwarenessDescription=在战斗中,你会在每个回合开始时重新获得一个优势骰子。 +Feature/&FeatureSetTacticianTacticalAwarenessTitle=战争大师 Feature/&FeatureTacticianGambitDieSizeD10Description=你的卓越骰升级为 d10。 Feature/&FeatureTacticianGambitDieSizeD10Title=卓越骰大小 (d10) Feature/&FeatureTacticianGambitDieSizeD12Description=你的卓越骰升级为 d12。 diff --git a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/PathOfTheBeast-zh-CN.txt b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/PathOfTheBeast-zh-CN.txt index bda892f436..4b747b2582 100644 --- a/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/PathOfTheBeast-zh-CN.txt +++ b/SolastaUnfinishedBusiness/Translations/zh-CN/SubClasses/PathOfTheBeast-zh-CN.txt @@ -24,7 +24,7 @@ Feature/&PowerPathOfTheBeastFormOfTheBeastTailTitle=形态:刺尾 Feature/&PowerPathOfTheBeastFormOfTheBeastTitle=野兽形态 Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeDescription=目标攻击其范围内由你选择的另一个生物。 Feature/&PowerPathOfTheBeastInfectiousFuryCompelledStrikeTitle=传染之怒:强制打击 -Feature/&PowerPathOfTheBeastInfectiousFuryDescription=当你在狂暴状态下用你的天生武器攻击生物时,你内心的野兽会用狂暴的怒火诅咒你的目标。目标必须成功通过感知豁免检定(DC 等于 8 + 你的体质调整值 + 你的熟练加值),否则会遭受以下效果之一(由你选择)。 +Feature/&PowerPathOfTheBeastInfectiousFuryDescription=当你在狂暴状态下用你的天生武器攻击生物时,你内心的野兽会用狂暴的怒火诅咒你的目标。目标必须成功通过一次感知豁免检定(DC 等于 8 + 你的体质调整值 + 你的熟练加值),否则会遭受以下效果之一(由你选择)。\n\n你可以使用此功能的次数等于你的熟练加值的次数,当你完成长时间休息时,你可以恢复所有已用过的使用次数。 Feature/&PowerPathOfTheBeastInfectiousFuryMindlashDescription=目标受到 2d12 心灵伤害。 Feature/&PowerPathOfTheBeastInfectiousFuryMindlashTitle=传染之怒:心灵鞭笞 Feature/&PowerPathOfTheBeastInfectiousFuryTitle=传染之怒