[1.2] PsiTech (09.06.20) - Harness psychic phenomenon!

Started by K, April 30, 2020, 04:33:50 PM

Previous topic - Next topic

K



PsiTech adds new, late game content in the form of powerful psychic abilities. Train your colonists in the use of psychic abilities and turn them into psions. Customize your colonists in new ways using psionics.

PsiTech includes a wide range of passive and active psychic abilities giving an array customization options for your colonists. These abilities range from simple psychic enhancements, granting a variety of bonuses, to active abilities capable of healing others, to the powerful Psi Storm, capable of driving masses of enemies insane. With 46 total abilities included, PsiTech gives many options for customizing your psions.

Beware though, researching psychic abilities might draw the attention of darker forces, powerful psionic cabals who turn their wrath to any who might threaten their psychic dominion.


Make sure that you have Harmony from Steam or Github first!

Download from Steam
Download from Dropbox


Q: Do I need Royalty to play this?
A: No, Royalty is not required for PsiTech.

Q: Is this mod related to Royalty?
A: PsiTech has no relation to Royalty. It's a completely custom implementation of psionics that's independent of Royalty and quite different from a design standpoint.

Q: Is there somewhere I can go to get help with PsiTech?
A: Try the K's Mods Discord.

Q: How do I start using psionics?
A: Please refer to the PsiTech Quick Guide.

Q: How do I use the autocast system?
A: Please refer to the PsiTech Autocasting Guide.

Q: Does PsiTech support my language?
A: The main download only supports English. Check below to see if there's a translation sub-mod for your language.

Q: Can I disable raids by the psionic faction?
A: Yes, you can. There's an option for this.

Q: The essence penalty is too high/low!
A: The essence penalty can be changed in the options menu.

Q: Why isn't the Psi tab showing up for my alien race?
A: Some alien races don't get the Psi tab by default. Try enabling "Patch All Races" in the settings and restarting the game.

Q: There's an autocast condition/target selector/option that I would like that isn't implemented.
A: If there's some customization that you find missing in the autocast system, please leave a comment and I'll try to implement your request.


English
Chinese available via the PsiTech Chinese Sub-mod, courtesy of Zephyr.
Russian available via the PsiTech Russian Sub-mod, courtesy of lttlworld.

If you've made a translation, please message me and I'll add it to the list of supported languages.


Design and programming by K
Art by Bugmage
Sound effects by A Privacy Company

The source for PsiTech is available on GitHub.


Pardeike for his wonderful Harmony library. PsiTech couldn't exist without it.
Dubwise for his performance analyzer, which was used extensively in making PsiTech performant.
Canute for finding many bugs hidden in the various pre-releases of PsiTech.



Major Update 26.8.20
* Some apparel can now be enhanced to improve the psychic abilities of psions when worn.

Major Update 2.8.20
* Essence penalties can now be configured on a per health effect basis, as well as globally.

Minor Update 9.7.20
* Additional optimization for the PsiTechManager.

Minor Update 25.6.20
* Resisted motes now generate properly for area burst abilities.
* When running with SOS2, insulation on armors is now increased to allow for space walks.

Minor Update 23.6.20
* Fix single target autocasting not working.

Minor Update 17.6.20
* Added a mote on pawns when they resist a psionic ability.

Minor Update 17.6.20
* Fix for a minor incompatibility with Prepare Carefully that could cause errors to occur if you added a psionic pawn to the world pawns list.

Minor Update 8.6.20
* Psychic trainer no longer allows multiple pawns in under any circumstances.
* Loading no longer breaks if a null pawn is encountered.

Minor Update 6.6.20
* Commando, Warrior, and Conduit armor and helmets now count as EVA geat when using SOS2.

Minor Update 4.6.20
* Fix the fix for temporary faction members using psychic trainers.

Minor Update 3.6.20
* Temporary faction members can no longer be put in psychic trainers.

Major Update 30.5.20
* Major performance improvements for autocasting.
* Performance improvments to casting-related stat retrieval.
* Burst-type abilities can now have additional target filters, specifying conditions for targets to be counted towards the minimum targets for cast.
* Changed energy node icon to more clearly convey that there are three trainable energy nodes.

Several new features for making XML extensions to PsiTech:
* AbilityEffectAddHediff can now take a severity.
* Added AbilityEffectNothing, which can be used to pad probabilities.
* Autocast profiles for burst-type abilities can use additional target filters.
* Abilities can now have specific effects on their users, independent of their effects on targets.

Minor Update 27.5.20
* Fixed a harmless warning related to bugged verbs when loading a save with a pawn casting in it.
* Changed tags on advanced psychic armors so that they once again count for royals.

Minor Update 26.5.20
* Fixed a display bug when awakening a pawn after training another one in a skill.
* Some additional optimizations.
* Cast jobs are now properly saved and casting works through saves and loads.

Minor Update 22.5.20
* Fixed a bug that caused issues when loading a save with pawns in the psi warmup stance.

Minor Update 20.5.20
* Pawns in cryptosleep caskets, psychic trainers, and other containers are no longer valid autocast targets.
* Phoenix no longer casts when a pawn is sedated.

Minor Update 17.5.20
* Abilities can now be queued in slots that will be unlocked by queued nodes.
* Training can now be suspended.
* Training is automatically suspended when a pawn is removed from a psychic trainer, preventing them from immediately reentering.
* Fixed a bug where queued focus nodes weren't displayed properly.

Minor Update 16.5.20
* Added a training speed setting, which can be set between 1% (100 times longer training) and 1000% (10 times faster training).
* Fixed a bug that allowed for pawns to be deposited in psychic trainers by other pawns.

Major Update 14.5.20
* Added a new building, the psychic suppression field projector. This building projects an invisible field that lowers the psychic sensitivity of nearby pawns. It can be tuned to specific intensities and radii. It's unlocked by researching the new technology, "Psychic Suppression Field", located behind "Psychic Workbench".

Minor Update 12.5.20
* Psychic foil recipes now use crafting skill for quality determination.

Minor Update 11.5.20
* Psions no longer show their weapons while casting. This should fix a conflict with Yayo's Combat 3.

Minor Update 10.5.20
* General code cleanup.
* Added README.txt to inform users that portions of PsiTech are licensed under the GNU GPLv3, as well as where to obtain source code for PsiTech.

Minor Update 8.5.20
* Added some additional assurances to prevent null keys.

Minor Update 7.5.20
* Decreased the cost of Psi robes and the Psi hood to align with the cost decreases of the advanced armors.

Minor Update 6.5.20
* The psionic faction label is now "Psionic cabal" instead of just "Psionic".
* The psionic faction now gets a leader. This won't occur in ongoing games but will in new ones.

Minor Update 6.5.20
* Added some additional safety checks to prevent null references when spawning raids.

Ability Update 5.5.20
* Armors no longer have two qualities.
* Added a new active ability, Mind Suppression, unlocked by Projection Theory. Mind Suppression lowers the psychic sensitivity of a target for some time.

Balance Update 5.5.20
* Robes and hoods now count as psychic/psycaster gear for Royalty purposes.

Several major balance changes:
* The costs of psionic pawn kinds have been increased across the board, resulting in smaller raids by the psionic faction.
* Buffed and rebalanced the psi defense chain of abilities. Progression is now 35% -> 65% -> 85% defense.
* Nerfed insanity to last 40 seconds from 60.
* Nerfed mindmelt to 10 base damage from 15.
* Buffed mindsoothe, cooldown to 60 seconds from 120, difficulty curve from new states rebalanced to 50% chance modifier at 0 ticks from 25% tapering off to 100% chance modifier in 8000 ticks from 15000.
* Essence now plays a role in the sensitivity modifier calculation used for defense. Lower essence can help pawns avoid psionic abilities up to a total modifier of 50% at 5 artificial parts on default settings. Further decreases in essence do not decrease chance to hit.

Minor Update 5.5.20
* Energy nodes are now explicitly labelled on the Psi tab.

Minor Update 4.5.20
* Added an option to patch all alien races to get the psi tab. This has an impact on startup times, and is disabled by default.
* Added some additional safe guards in case UI elements fail to load (typically due to other broken mods), which should prevent the UI from taking the whole mod down with it.

Minor Update 4.5.20
* Staunched the data bleed once and for all.
* Additional null checking to prevent the Psi card from breaking the game.

Minor Update 3.5.20
* Psionic faction settlements now have a purple color when zoomed in on the world map.
* Athenium can now be used to make obscenely expensive floor tiles.
* Psychic damage can now be treated. I didn't want to do this, but the game has serious trouble handling nontreatable injuries that would require a lot of hacking to change. This generally serves as a buff to players over the psionic faction.

Minor Update 3.5.20
* Locked slots now list how many more nodes they need to be unlocked.

Minor Update 3.5.20
* Added some more disable strings for active abilities to better explain why they're disabled.
* Fixed some stale cache issues caused by removing an ability.

Minor Update 2.5.20
* Psionic raider pawns now use the new additional filters system to be far smarter about who they cast on, and when.

Major Update 2.5.20
* Added "additional autocast filters" which can be used to filter targets beyond the base settings.
* Rebalanced robes and armors (generally buffed slightly across the board).
* PsiTech armors are now qualified as Noble combat gear for Royalty.
* Added "Advanced Psychic Foil Helmet", reducing psychic sensitivity by 180%, craftable after researching Advanced Psychic Equipment.
* Added a toggle to the autocast configuration window hide the autocast toggle gizmo.
* Added a pawn health percent condition and lowest health selector.
* Changed the cabal icon to stand out more on the map.
* The autocast toggle is now properly saved.
* Probably other things I forgot, it was a long day.

Minor Update 1.5.20
* The psionic faction now has base defense troops.
* The psionic faction now spawns more bases on the map.

Breaking Update 1.5.20
* Changed how load IDs are assigned to prevent conflicts and ID loss.

This is a breaking change. I'm deeply sorry to anyone who has a save that will be affected by this issue. To fix an existing save you will need to edit your save and remove all data psion stored under the "PsiTech.Utility.PsiTechManager" game component. This means cleaning out any keys and values that are stored in the "Trackers" tag. Do not delete the keys and values tags themselves, only the data within.

If you want to get back the progress that you lose, you can enable the PsiTech debug mode which allows for instant training by going to the TweakValue menu and enabling "!PsiTechDebug". An option will appear in the Psi tab that will allow for instant training.

Minor Update 1.5.20
* Additional optimizations to Harmony patches.

Minor Update 1.5.20
* Exposed additional functionality to XML to assist in any patch-making efforts.

Minor Update 30.4.20
* Applied additional triage to data bleed.


Ruisuki


K

8 months on the unfinished forums isn't too bad, right? Of course it would've been way longer except for the pandemic. Silver linings!

Canute

Just some questions about the autocast:
- when i don't select drafted, the pawn will use the ability drafted or undrafted ?
- what is a setting for the Psi heal ? Since i don't found anything about wounds i just tested to use undrafted with a 50% chance. But i notice that pawn used the psi heal but there arn't any ingured one.

The autocast is a pretty good tool to remove micromanagment. But maybe give the player some manual control too. Like some you enable at the autocast a button to use the ability manualy.
Nvm. just saw the button for Psi heal while drafted.

Chicken Plucker

Hey, you. You're finally awake!
You were trying to cross unfinished forums right? Walked right into that development ambush, same as us, and that mod over there.

Congrats K, it's finally out! Gonna miss seeing your thread in unfinished  :'(

K

Quote from: Canute on May 01, 2020, 04:36:00 AM
Just some questions about the autocast:
- when i don't select drafted, the pawn will use the ability drafted or undrafted ?
- what is a setting for the Psi heal ? Since i don't found anything about wounds i just tested to use undrafted with a 50% chance. But i notice that pawn used the psi heal but there arn't any ingured one.

If you don't add a drafted condition then the pawn will autocast whether drafted or undrafted. As for a "damage" filter the "most pain" selector is sort of meant to fill that void. Since filters aren't "modular" in the same sense as conditions it becomes difficult to add individual filter conditions in, but it's something that could use some expansion.

Quote from: Chicken Plucker on May 01, 2020, 05:26:01 AM
Congrats K, it's finally out! Gonna miss seeing your thread in unfinished  :'(

We all have to leave some time, right? I'm just happy the release is going as smoothly as it is, particularly thanks to Canute breaking the unfinished builds.

Canute

Again the Psi Heal,
the pain only allow an auto cast to the caster itself, since the pain check is only for the caster (so far i understood it).
But once he become an additional scar the pain increase and the you need to adjust the trigger.

Currently i don't found an autocast for Psi heal to cure others.

I am unable to heal  animals, the target selector goes away but the pawn don't cast.
Ok we can discuss now animals don't got any strong mind so it should work vs. the cast comes from the pawn and he got the mind and can let the others body heal.
But you should metion this at the psi heal description.


I don't think you can made it with the current UI design that you can switch the pawn with open autocast window ?
Maybe a optional global setting for all pawns ?

Btw. i think the athenium cost for the psi armor's are too high. It use more athenium then plasteel and athenium got far worser armor stats then plasteel.
You should take the cost from the regular power armors and add 20 athenium to the headwear and 40 to the bodywear like you did for the other parts.
Too bad the regular psi clothes got so bad armor stats, even a jacket are better.
I would tell these engineer to design a psi belt, that can be used with regular clothings ! :-)
And if they wouldn't listen i would let them equip cloth psi robes/hoods and put them at the first line.


K

Ironically your issue with Psi Heal essentially mirrors the issue with adding additional filter conditions. There's some annoyances with it on an architectural level, but I'll see what I can do. And while the pain condition can only be used on the caster, the pain selector is used to pick a target. It too has issues with scars and the like though since it can't differentiate between permanent and temporary injuries.

Animals in general can't be affected by psionic powers. This is mostly a technical limitation, as they don't have a mood to affect.

Lastly, the athenium cost is dependent on the armor type (with commando being the cheapest and conduit being the most expensive in that regard), but I'll decrease it some particularly given of the recent changes to plasteel abundance. I was already considering giving the armors a slight buff defensively to make them more competitive with other late game armors, including those given by Royalty, and think I'll go ahead with that now. The robes can certainly get a buff as well.

Canute

QuoteIronically your issue with Psi Heal essentially mirrors the issue with adding additional filter conditions. There's some annoyances with it on an architectural level, but I'll see what I can do. And while the pain condition can only be used on the caster, the pain selector is used to pick a target. It too has issues with scars and the like though since it can't differentiate between permanent and temporary injuries.
You would beed a trigger and target about currentHP/maxHP.
So when the ration fall below x at someone at range it triggered and cast on that target.
It definitiv can't be solved with the curret system. Not to speak about the constant check if someone is injured at range.
Not sure how Rim of Magic solved that with the autocast heals.

You should use the duster defence values for robes instead t-shirts :-)


K

Alright, most everything should be addressed in the most recent update.

Armors, for their part, were once balanced in line with vanilla, but I think vanilla got a buff and I didn't notice. They've been slightly buffed across the board.

As for the autocast limitations, they don't exist anymore. I've added a new category of "additional filters" which can be used to filter out targets far more specifically than was previously possible. This allows for a great many highly specific autocast profiles that weren't possible previously, such as only healing people that are damaged to a certain degree, or only healing people who are downed. I haven't update the AI autocast profiles ot use these yet because I wanted to get the update out, but they'll be using these new tools to be far smarter about their targeting shortly. Be careful what you wish for...

Ruisuki

alright downloading from dropbox and giving it a go tn

K

Psionic raider pawns now use the new additional autocast filter system, making them far smarter. This probably makes psionic raids even harder than before. Fun new profiles include only heal downed allies to get them back up, directed snipes against dangerous psions, and more.

I might need to add an option to make the AI stupider.

Canute

I think the raider allways use his abilities if he find a valid target.
Maybe just add a trigger chance.
Not sure how often the raider check for ability targets, just increase these cycle.

But since i didn't encounter any Psi raider so far, i can't say how dangerous they are.

Btw. could you maybe add a version to the mod, hard to keep track which version i got installed.

Edit: looks like the new version isn't safegame friendly
Error in DoPaneContentsFor Builder: System.NullReferenceException: Object reference not set to an instance of an object
  at PsiTech.Psionics.PsiTechAbilityScaledPassive.GetOffsetOfStat (RimWorld.StatDef stat) [0x00047] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Psionics.PsiTechTracker+<>c__DisplayClass97_0.<GetTotalOffsetOfStat>b__0 (PsiTech.Psionics.PsiTechAbility ability) [0x00000] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at System.Linq.Enumerable.Sum[TSource] (System.Collections.Generic.IEnumerable`1[T] source, System.Func`2[T,TResult] selector) [0x00036] in <351e49e2a5bf4fd6beabb458ce2255f3>:0
  at PsiTech.Psionics.PsiTechTracker.GetTotalOffsetOfStat (RimWorld.StatDef stat) [0x00052] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Utility.StatValuePatch.Postfix (System.Single __result, RimWorld.StatRequest req, RimWorld.StatDef ___stat) [0x0003c] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at (wrapper dynamic-method) RimWorld.StatWorker.DMD<DMD<GetValueUnfinalized_Patch2>?1564910720::GetValueUnfinalized_Patch2>(RimWorld.StatWorker,RimWorld.StatRequest,bool)
  at RimWorld.StatWorker.GetValue (RimWorld.StatRequest req, System.Boolean applyPostProcess) [0x00043] in <47faabf8b9994656a2c6f038ed160c36>:0
  at RimWorld.StatWorker.GetValue (Verse.Thing thing, System.Boolean applyPostProcess) [0x00007] in <47faabf8b9994656a2c6f038ed160c36>:0
  at (wrapper dynamic-method) RimWorld.StatExtension.DMD<DMD<GetStatValue_Patch1>?934284928::GetStatValue_Patch1>(Verse.Thing,RimWorld.StatDef,bool)
  at Verse.AI.MentalBreaker.get_BreakThresholdExtreme () [0x00000] in <47faabf8b9994656a2c6f038ed160c36>:0
  at RimWorld.Need_Mood.get_MoodString () [0x0001d] in <47faabf8b9994656a2c6f038ed160c36>:0
  at RimWorld.InspectPaneFiller.DrawMood (Verse.WidgetRow row, Verse.Pawn pawn) [0x0003c] in <47faabf8b9994656a2c6f038ed160c36>:0
  at RimWorld.InspectPaneFiller.DoPaneContentsFor (Verse.ISelectable sel, UnityEngine.Rect rect) [0x00048] in <47faabf8b9994656a2c6f038ed160c36>:0
Verse.Log:Error(String, Boolean)
Verse.Log:ErrorOnce(String, Int32, Boolean)
RimWorld.InspectPaneFiller:DoPaneContentsFor(ISelectable, Rect)
RimWorld.MainTabWindow_Inspect:DoPaneContents(Rect)
RimWorld.InspectPaneUtility:InspectPaneOnGUI(Rect, IInspectPane)
RimWorld.MainTabWindow_Inspect:DoWindowContents(Rect)
Verse.Window:InnerWindowOnGUI(Int32)
UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle)

System.NullReferenceException: Object reference not set to an instance of an object
  at PsiTech.Psionics.PsiTechAbilityScaledPassive.GetOffsetOfStat (RimWorld.StatDef stat) [0x00047] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Psionics.PsiTechTracker+<>c__DisplayClass97_0.<GetTotalOffsetOfStat>b__0 (PsiTech.Psionics.PsiTechAbility ability) [0x00000] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at System.Linq.Enumerable.Sum[TSource] (System.Collections.Generic.IEnumerable`1[T] source, System.Func`2[T,TResult] selector) [0x00036] in <351e49e2a5bf4fd6beabb458ce2255f3>:0
  at PsiTech.Psionics.PsiTechTracker.GetTotalOffsetOfStat (RimWorld.StatDef stat) [0x00052] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Utility.StatValuePatch.Postfix (System.Single __result, RimWorld.StatRequest req, RimWorld.StatDef ___stat) [0x0003c] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at (wrapper dynamic-method) RimWorld.StatWorker.DMD<DMD<GetValueUnfinalized_Patch2>?1564910720::GetValueUnfinalized_Patch2>(RimWorld.StatWorker,RimWorld.StatRequest,bool)
  at RimWorld.StatWorker.GetValue (RimWorld.StatRequest req, System.Boolean applyPostProcess) [0x00043] in <47faabf8b9994656a2c6f038ed160c36>:0
  at RimWorld.StatWorker.GetValue (Verse.Thing thing, System.Boolean applyPostProcess) [0x00007] in <47faabf8b9994656a2c6f038ed160c36>:0
  at (wrapper dynamic-method) RimWorld.StatExtension.DMD<DMD<GetStatValue_Patch1>?934284928::GetStatValue_Patch1>(Verse.Thing,RimWorld.StatDef,bool)
  at PsiTech.Psionics.PsiTechTracker.GetTotalModifierActive () [0x00006] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Psionics.PsiTechTracker.CanUseActiveAbilities () [0x00000] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Psionics.PsiTechTracker.GetGizmos () [0x0008d] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Utility.PawnGizmosPatch.Postfix (System.Collections.Generic.IEnumerable`1[Verse.Gizmo]& __result, Verse.Pawn& __instance) [0x00012] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at (wrapper dynamic-method) Verse.Pawn.DMD<DMD<GetGizmos_Patch5>?-974224512::GetGizmos_Patch5>(Verse.Pawn)
  at (wrapper dynamic-method) RimWorld.InspectGizmoGrid.DMD<DMD<DrawInspectGizmoGridFor_Patch0>?962767744::DrawInspectGizmoGridFor_Patch0>(System.Collections.Generic.IEnumerable`1<object>,Verse.Gizmo&)
Verse.Log:Error(String, Boolean)
Verse.Log:ErrorOnce(String, Int32, Boolean)
RimWorld.InspectGizmoGrid:DMD<DMD<DrawInspectGizmoGridFor_Patch0>?962767744::DrawInspectGizmoGridFor_Patch0>(IEnumerable`1, Gizmo&)
RimWorld.MainTabWindow_Inspect:DrawInspectGizmos()
RimWorld.InspectPaneUtility:ExtraOnGUI(IInspectPane)
RimWorld.MainTabWindow_Inspect:ExtraOnGUI()
Verse.WindowStack:WindowStackOnGUI()
RimWorld.UIRoot_Play:UIRootOnGUI()
Verse.Root:OnGUI()

Exception filling tab PsiTech.Interface.ITab_Pawn_Psi: System.NullReferenceException: Object reference not set to an instance of an object
  at PsiTech.Psionics.PsiTechAbilityScaledPassive.GetOffsetOfStat (RimWorld.StatDef stat) [0x00047] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Psionics.PsiTechTracker+<>c__DisplayClass97_0.<GetTotalOffsetOfStat>b__0 (PsiTech.Psionics.PsiTechAbility ability) [0x00000] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at System.Linq.Enumerable.Sum[TSource] (System.Collections.Generic.IEnumerable`1[T] source, System.Func`2[T,TResult] selector) [0x00036] in <351e49e2a5bf4fd6beabb458ce2255f3>:0
  at PsiTech.Psionics.PsiTechTracker.GetTotalOffsetOfStat (RimWorld.StatDef stat) [0x00052] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Utility.StatValuePatch.Postfix (System.Single __result, RimWorld.StatRequest req, RimWorld.StatDef ___stat) [0x0003c] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at (wrapper dynamic-method) RimWorld.StatWorker.DMD<DMD<GetValueUnfinalized_Patch2>?1564910720::GetValueUnfinalized_Patch2>(RimWorld.StatWorker,RimWorld.StatRequest,bool)
  at RimWorld.StatWorker.GetValue (RimWorld.StatRequest req, System.Boolean applyPostProcess) [0x00043] in <47faabf8b9994656a2c6f038ed160c36>:0
  at RimWorld.StatWorker.GetValue (Verse.Thing thing, System.Boolean applyPostProcess) [0x00007] in <47faabf8b9994656a2c6f038ed160c36>:0
  at (wrapper dynamic-method) RimWorld.StatExtension.DMD<DMD<GetStatValue_Patch1>?934284928::GetStatValue_Patch1>(Verse.Thing,RimWorld.StatDef,bool)
  at PsiTech.Psionics.PsiTechTracker.EnergyPercentOfMax () [0x00006] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Interface.PawnPsiCard.DrawPsiCard (UnityEngine.Rect rect, Verse.Pawn pawn, System.Boolean inTrainer) [0x002cb] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at PsiTech.Interface.ITab_Pawn_Psi.FillTab () [0x00067] in <99eaeb56d7a74a33a4e89cdb460f5b06>:0
  at Verse.InspectTabBase+<>c__DisplayClass14_0.<DoTabGUI>b__0 () [0x00039] in <47faabf8b9994656a2c6f038ed160c36>:0
Verse.Log:Error(String, Boolean)
Verse.Log:ErrorOnce(String, Int32, Boolean)
Verse.<>c__DisplayClass14_0:<DoTabGUI>b__0()
Verse.ImmediateWindow:DoWindowContents(Rect)
Verse.Window:InnerWindowOnGUI(Int32)
UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle)


K

There was one change I made that was not save game compatible on Friday that had to be done because there was a very bad piece of code that was more or less a timebomb. However, all other updates since then should be save compatible.

As for versioning, to be honest I'm just too lazy to keep track of version numbers myself, particularly since the update pace is very high right now.

Canute

I just download it today, shortly before i wrote this.
Ok, looks like no more updates for the existing colony, no big deal.

Edit:
Damn, the psi faction is deadly. Everyone with Tier3 abilities, they don't even need weapons they just psi kill through the walls.
Since they come like regular raids with an outnumbered strenght, you definitiv have some causalties when they come in Psi range, special since my current colony are all mellee's.

Currently it is a bad idea to imprison these Psi faction, they still use their abilities.
So what do you think about some Psi damper security building ?
Inside the range no Psi ability can be used. Sure you can improve your defence with them too, but it only prevent active abilities not the passive ones.

Dang, do you think that quest is fair ? 9 vs 172.
Yes i know you can't do anything about the quest.