diff --git a/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/Assemblies/WulaFallenEmpire.dll index 0b7d7239..e0bb41b2 100644 Binary files a/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/Assemblies/WulaFallenEmpire.dll differ diff --git a/1.6/Defs/DamageDefs/Damages_Wula.xml b/1.6/Defs/DamageDefs/Damages_Wula.xml index ef8c4abb..2b243b79 100644 --- a/1.6/Defs/DamageDefs/Damages_Wula.xml +++ b/1.6/Defs/DamageDefs/Damages_Wula.xml @@ -115,6 +115,7 @@ true {0} 被奶死了。 true + Burn false true 1 diff --git a/1.6/Defs/HediffDefs/Hediffs_WULA_Damage_Effect.xml b/1.6/Defs/HediffDefs/Hediffs_WULA_Damage_Effect.xml index a00ee701..c00c8137 100644 --- a/1.6/Defs/HediffDefs/Hediffs_WULA_Damage_Effect.xml +++ b/1.6/Defs/HediffDefs/Hediffs_WULA_Damage_Effect.xml @@ -122,42 +122,44 @@ false 1 (1, 1, 0.8) + 0 + 5 HediffWithComps
  • 0 - 100 + 200
  • 0.5 - 200 + 400
  • 1.0 - 300 + 600
  • 1.5 - 400 + 800
  • 2.0 - 500 + 1000
  • - 2.5 + 3.0 - 600 + 1500
  • - -5 + -10
  • diff --git a/1.6/Defs/PsychicRitualDefs/WULA_FE_Spiritualist_Rituals.xml b/1.6/Defs/PsychicRitualDefs/WULA_FE_Spiritualist_Rituals.xml index 47e135ad..119a1784 100644 --- a/1.6/Defs/PsychicRitualDefs/WULA_FE_Spiritualist_Rituals.xml +++ b/1.6/Defs/PsychicRitualDefs/WULA_FE_Spiritualist_Rituals.xml @@ -2,6 +2,11 @@ WULA_FE_Rituals_Create_Spear_Impale + +
  • + WulaRitual +
  • + 使用镌刻法术创造一把携带了圣枪穿刺术式的法杖,需求魂楔作为额外祭品以提升仪式质量,仪式的质量将影响镌刻完成时法杖的质量。 2 @@ -13,6 +18,9 @@ WULA_Soul_Wedge + Invoker + Chanter + @@ -76,6 +84,11 @@ WULA_FE_Rituals_Create_Cotton_Counter + +
  • + WulaRitual +
  • +
    使用镌刻法术创造一把携带了飘絮反制术式的法杖,需求魂楔作为额外祭品以提升仪式质量,仪式的质量将影响镌刻完成时法杖的质量。 2 @@ -87,6 +100,9 @@ WULA_Soul_Wedge + Invoker + Chanter + @@ -151,11 +167,17 @@ WULA_ImbuePsychicShock + +
  • + WulaRitual +
  • +
    Imbues the target with a psychic shock. PsychicShock The target will gain psychic shock. 2 + Invoker DeathRefusalTarget BasicPsychicRituals diff --git a/1.6/Defs/ThingDefs_Buildings/WULA_FallenEmpire_Buildings_Ritual.xml b/1.6/Defs/ThingDefs_Buildings/WULA_FallenEmpire_Buildings_Ritual.xml index efe09991..85d5e864 100644 --- a/1.6/Defs/ThingDefs_Buildings/WULA_FallenEmpire_Buildings_Ritual.xml +++ b/1.6/Defs/ThingDefs_Buildings/WULA_FallenEmpire_Buildings_Ritual.xml @@ -45,7 +45,8 @@ True -
  • +
  • + WulaRitual
  • diff --git a/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml b/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml index a5199450..8272ccc9 100644 --- a/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml +++ b/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml @@ -45,7 +45,7 @@ 30 0 4 - 65 + 56 25 1000 AgonyPulse_Cast diff --git a/Source/WulaFallenEmpire/CompWulaRitualSpot.cs b/Source/WulaFallenEmpire/CompWulaRitualSpot.cs new file mode 100644 index 00000000..c19f7ae7 --- /dev/null +++ b/Source/WulaFallenEmpire/CompWulaRitualSpot.cs @@ -0,0 +1,72 @@ +using System.Collections.Generic; +using System.Linq; +using RimWorld; +using Verse; +using Verse.AI.Group; + +namespace WulaFallenEmpire +{ + // NOTE: The PsychicRitualDef_Wula class has been removed as it's no longer needed. + // We are now using a DefModExtension for filtering, which is a much cleaner approach. + + /// + /// Custom CompProperties for our ritual spot, with a tag. + /// + public class CompProperties_WulaRitualSpot : CompProperties + { + public string ritualTag; + + public CompProperties_WulaRitualSpot() + { + this.compClass = typeof(CompWulaRitualSpot); + } + } + + /// + /// The core component for the custom ritual spot. Generates its own gizmos + /// by filtering for rituals with a matching tag via a DefModExtension. + /// + public class CompWulaRitualSpot : ThingComp + { + public CompProperties_WulaRitualSpot Props => (CompProperties_WulaRitualSpot)this.props; + + public override IEnumerable CompGetGizmosExtra() + { + foreach (Gizmo gizmo in base.CompGetGizmosExtra()) + { + yield return gizmo; + } + + // Find all rituals that have our custom mod extension and a matching tag + foreach (PsychicRitualDef ritualDef in DefDatabase.AllDefsListForReading) + { + var extension = ritualDef.GetModExtension(); + if (extension != null && extension.ritualTag == this.Props.ritualTag) + { + Command_Action command_Action = new Command_Action(); + command_Action.defaultLabel = ritualDef.LabelCap; + command_Action.defaultDesc = ritualDef.description; + command_Action.icon = ritualDef.uiIcon; + command_Action.action = delegate + { + // Mimic vanilla initialization + TargetInfo target = new TargetInfo(this.parent); + PsychicRitualRoleAssignments assignments = ritualDef.BuildRoleAssignments(target); + PsychicRitualCandidatePool candidatePool = ritualDef.FindCandidatePool(); + ritualDef.InitializeCast(this.parent.Map); + Find.WindowStack.Add(new Dialog_BeginPsychicRitual(ritualDef, candidatePool, assignments, this.parent.Map)); + }; + + // Corrected check for cooldown and other requirements + AcceptanceReport acceptanceReport = Find.PsychicRitualManager.CanInvoke(ritualDef, this.parent.Map); + if (!acceptanceReport.Accepted) + { + command_Action.Disable(acceptanceReport.Reason.CapitalizeFirst()); + } + + yield return command_Action; + } + } + } + } +} \ No newline at end of file diff --git a/Source/WulaFallenEmpire/HarmonyPatches/Patch_PsychicRitualGizmo_VisibleRituals.cs b/Source/WulaFallenEmpire/HarmonyPatches/Patch_PsychicRitualGizmo_VisibleRituals.cs new file mode 100644 index 00000000..2f8ea2e4 --- /dev/null +++ b/Source/WulaFallenEmpire/HarmonyPatches/Patch_PsychicRitualGizmo_VisibleRituals.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using System.Linq; +using HarmonyLib; +using Verse; +using RimWorld; + +namespace WulaFallenEmpire.HarmonyPatches +{ + [HarmonyPatch(typeof(PsychicRitualGizmo), "VisibleRituals")] + public static class Patch_PsychicRitualGizmo_VisibleRituals + { + [HarmonyPostfix] + public static List Postfix(List __result) + { + if (__result == null || __result.Count == 0) + { + return __result; + } + + // Create a new list containing only the rituals that DO NOT have our custom tag. + // This is a more robust way to ensure our custom rituals are filtered out. + return __result.Where(ritualDef => + { + var extension = ritualDef.GetModExtension(); + // Keep the ritual if it has no extension, or if the extension tag is null/empty. + return extension == null || string.IsNullOrEmpty(extension.ritualTag); + }).ToList(); + } + } +} \ No newline at end of file diff --git a/Source/WulaFallenEmpire/RitualTagExtension.cs b/Source/WulaFallenEmpire/RitualTagExtension.cs new file mode 100644 index 00000000..2e74c7c6 --- /dev/null +++ b/Source/WulaFallenEmpire/RitualTagExtension.cs @@ -0,0 +1,9 @@ +using Verse; + +namespace WulaFallenEmpire +{ + public class RitualTagExtension : DefModExtension + { + public string ritualTag; + } +} \ No newline at end of file diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj index 8771b901..1ad637a8 100644 --- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj +++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj @@ -71,6 +71,7 @@ + @@ -108,6 +109,7 @@ +