RimWorld

RimWorld

EBSG Framework
This topic has been locked
Feature requests
Hi! Great framework, this has been very, very easy to play with! I have a couple feature requests. I don't know how feasible any of these are, so apologies if something I'm asking for is totally impossible.

1) Toolkit for modifying the state and behavior of arbitrary hedifffs:
•Set minimum/maximum severity of arbitrary hediff: Use to grant total immunity to any arbitrary hediff (E.G. blood loss max severity to 0%), prevent death to various hediffs without granting total immunity (E.G. blood loss max severity to 99%), or make it so any instance of a hediff is automatically severe (E.G. receiving any blood loss at all is automatically 90% blood loss). Parameters for minimum severity behavior, whether going below the minimum clears the hediff, or if going below the minimum severity is entirely impossible.
•Gain rate factor for arbitrary hediff: Very similar use cases.
•Modify name and description of arbitrary hediff: Reuse the functionality of an existing hediff while conditionally changing its flavor text, without having to completely reimplement the hediff. Example use case: Mechanical pawn type which can suffer blood loss; rename Blood Loss to Oil Loss for this pawn type only and alter flavor text accordingly.
•Alter offsets and factors of arbitrary hediff: Similar use case. Allows reuse of most of the functionality of an existing hediff without having to entirely reimplement it. A hediff designed to specifically counteract or complement the effects of a specific hediff does not always work because some hedifffs apply a x0% factor which cannot be undone in calculation. Plus, it looks kinda clunky.

2) Psycast toolkit:
•Suppress "Gained Psylink!" letter when a new colonist pawn spawns with a Psylink hediff. Very minor thing, but annoying.
•Modify Psycast attributes: Required Psylink level, focus cost, heat gain, cooldown, range, etc. Either for specific Psycasts, or all Psycasts in general.
•Disable acquisition of new Psycasts and Psylink levels: For pawns which are expected to spawn with a specific set of Psycasts already learned, but should not gain new ones.

2.5) Cause pawn to attempt to use arbitrary ability(s) they have access to, of their own volition, without player input. Parameters to specify whether the player is allowed to make the pawn use the affected ability(s) at all, and whether the affected ability(s) should have their UI buttons entirely hidden from the player. Parameters to determine how often the pawn will attempt to use the ability, and what types of targets it should seek. Example use cases: A pawn with a new 'Blinking Tic' hediff. Blinking Tic grants the pawn a hidden instance of the Chaos Skip ability, and causes the pawn to periodically cast it on themselves, making them teleport around randomly.
Could also be expanded to include general job types, for example a pawn may be compelled to randomly do Art even if they're not assigned to that work or even entirely incapable of it usually, or to seek nearby pawns and do Deep Talk with them.

3) Trait visibility suppression: Hide traits from Bio window based on various parameters. When creating custom races utilizing genes which force certain traits, that pawn's bio window can become extremely bloated with boilerplate traits. Having the ability to hide all gene-granted traits would be fantastic. Other use cases can include pawns which intentionally hide traits from the player, such as ones which cause violent tendencies.

4) Set minimum pawn capacities. Fairly self explanatory.

5) Forced return: A pawn which is made to leave the colony by various methods (Exile, transport pod, abandoned caravan) will reappear at the primary colony map. Parameters to specify delay, return method (e.g teleport, drop pod, map edge), mood effects on return, need effects, hediff application, etc., and whether the pawn returns as colonist, enemy, or neutral. Various use cases, primarily for pawns which are not necessarily hostile but should not be able to be removed from the colony via the above methods, or which punish the player for removing them in these ways.

Thanks for all the awesome work, and thanks for taking the time to read!
Last edited by Vardha; 24 Aug @ 12:33pm
< >
Showing 1-4 of 4 comments
Alite  [developer] 24 Aug @ 1:37pm 
1) Unfortunately, hediffs don't generally like being messed with by other hediffs. It's technically doable, but generally better to be left on a much smaller scale than what a framework would allow to avoid potential issues

2) I don't know of a way to safely disable that letter, and the other two points fall under a similar situation as the hediffs

2.5) Player pawns casting abilities by themselves just involves making a ThinkTreeDef. A decent amount of stuff can be done with just vanilla nodes, though for some cases, especially those that target other pawns, think nodes from a mod like this may be needed

3) I don't know of a way to make them not pop up on the bio menu, though when possible I generally recommend giving bonuses in the gene itself rather than using traits

4) I attempted that previously in my own random experimentations, and the game was not a fan, with performance and mod compatibility problems being the main issue

5) That would be less a framework thing and more something for an entirely separate mod
Vardha 24 Aug @ 6:07pm 
Thanks for the quick reply! In regards to specific points, for 1, 2, and 4, that's rather unfortunate, but understandable!

2.5) While I could definitely do a think tree, I feel that it could definitely benefit to have a simplified generic way to apply those sorts of auto-casting behaviors in a hediff, it'd be a very easy to utilize way to extend the behavior of any custom pawn.

3) Supposing you have any interest in researching, this mod does what I'm talking about. A generic way to apply this to various traits would be very nice.
https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=3290742314

5) This was the one I was least sure about. The original concept was actually part of 2.5, i.e. a pawn being made to cast farskip on itself, but as I thought about it, even if it was otherwise possible, there're too many edge cases where the pawn would probably stop being simulated in such a way that it could cast farskip outside of player control.
Alite  [developer] 24 Aug @ 6:49pm 
2.5) Unfortunately, simplifying it like that wouldn't really work out since no matter what, I'd have to loop it back through a ThinkTreeDef, and even ignoring the potential hefty performance impacts that may cause, it also runs the risks of abilities not being cast properly. I leave it to individual modders for their finer tuned ThinkTreeDefs so have more of a guarantee that things will act more like what they expect

3) Based on what that mod does and my understanding of the vanilla bio window, I don't think I'd be able to just pluck out a few traits from the display list without potentially causing some weird issues to start popping up, the biggest on being mod compatibility issues. The reason I was able to hide genes from the xenotype display is because that list is a separate entity that I can tweak at will, but for the bio window, traits are checked and added in the middle, making them more dangerous to mess with
Vardha 25 Aug @ 4:01pm 
Fair enough! Like I said, I wasn't entirely sure what was and wasn't within feasibility. While I'm fairly well-versed in C# myself, I don't really care to learn that side of modding RimWorld at this point in time, but maybe I'll take a gander myself some point in the future.

In any case, thanks for everything you -have- made so far!
< >
Showing 1-4 of 4 comments
Per page: 1530 50