sumghai / MedPod

Advanced regenerative medical beds for RimWorld
Other
14 stars 15 forks source link

Rewrite MedPod bed rest functionality to use custom WorkGivers and JobDrivers #47

Closed sumghai closed 2 years ago

sumghai commented 3 years ago

Describe your idea:

At present, the mod makes pawns seeking medical bed rest to prioritize MedPods over other medical (or regular) beds, by Harmony patching the vanilla WorkGivers/JobDrivers to execute MedPod-specific checks/functions and selectively detouring vanilla code as required.

While this has worked for the most part, there some issues with the current approach:

Based on initial successes in implementing custom WorkGivers/JobDrivers within existing workTypes for the (WIP) Replimat Cadaver Processor (sumghai/Replimat/issues/43), it may be a good idea to rewrite some of the current Harmony patches into dedicated WorkGivers/JobDrivers with higher priority levels than their vanilla counterparts.

Why do you think your idea would be a good fit for MedPod?:

What alternatives/workarounds have you tried? Continue to maintain the current Harmony patches, fixing bugs on a piecemeal basis

Declaration

I hereby verify that:

sumghai commented 2 years ago

As of 4e99f90, I've successfully implemented the basic use case of ambulatory wounded pawns getting on MedPods themselves.

After a fair bit of testing, I've decided to keep the Induced Coma and Cortical Stimulation hediffs, since trying to patch bed rest toils to completely rely on the patient waiting for the treatment to complete turned out to be unreliable.

sumghai commented 2 years ago

After some testing, 62157b3 also already makes doctors prioritize rescuing colony animals directly to VetPods, rather than the vanilla behaviour of on-the-spot first-aid.

Forbidding or blocking access to VetPods also causes doctors to carry wounded animals back to vanilla animal medical beds, but as soon as a VetPod is available doctors will resume rescuing animal patients to them.

Barring any future bugs, this is pretty much done.