From b84e040154a059b7654b3a952e4985d5cea0ce46 Mon Sep 17 00:00:00 2001 From: Hazzer Date: Sun, 21 Apr 2024 22:38:58 +0200 Subject: [PATCH] release 1.5.0 (#269) --- 1.5/Assemblies/0MultiplayerAPI.dll | Bin 0 -> 24064 bytes 1.5/Assemblies/PrisonLabor.dll | Bin 0 -> 293888 bytes .../PrisonLaborCashRegistryCompatibility.dll | Bin 0 -> 8192 bytes .../PrisonLaborCleaningAreaCompatibility.dll | Bin 0 -> 8704 bytes .../PrisonLaborColonyGroupsCompatibility.dll | Bin 0 -> 10752 bytes 1.5/Defs/ConceptDef.xml | 48 +++++ 1.5/Defs/Hediffs.xml | 91 +++++++++ 1.5/Defs/Incidents.xml | 49 +++++ 1.5/Defs/Interrogation/InterrogationDefs.xml | 15 ++ .../InterrogationInteractionsDefs.xml | 36 ++++ .../Interrogation/InterrogationPatterns.xml | 191 ++++++++++++++++++ .../InterrogationThoughtDefs.xml | 66 ++++++ 1.5/Defs/JobDef.xml | 29 +++ 1.5/Defs/MainButton.xml | 166 +++++++++++++++ 1.5/Defs/Needs.xml | 26 +++ 1.5/Defs/PrisonerInteractionModeDef.xml | 9 + 1.5/Defs/PrisonerJoyGivers.xml | 33 +++ 1.5/Defs/ThinkTreeDef.xml | 38 ++++ 1.5/Defs/ThoughtsDef.xml | 37 ++++ 1.5/Defs/WorkGiverDef.xml | 31 +++ 1.5/Defs/WorkTypes.xml | 16 ++ .../PrisonLaborHospitalityCompatibility.dll | Bin 0 -> 8192 bytes .../Defs/PL_Ideology_InterrogationDefs.xml | 55 +++++ 1.5/Ideology/Patches/JailorForSlavesPatch.xml | 14 ++ .../PrisonLaborKijinCompatibility.dll | Bin 0 -> 7680 bytes 1.5/Patches/AddPrisonerComp.xml | 25 +++ 1.5/Patches/Designators.xml | 38 ++++ 1.5/Patches/SetJailorJobsPatch.xml | 33 +++ .../PrisonLaborQuarryCompatibility.dll | Bin 0 -> 5632 bytes .../PrisonLaborTherapyCompatibility.dll | Bin 0 -> 11264 bytes About/About.xml | 3 +- Languages/English/Keyed/Keys.xml | 4 +- LoadFolders.xml | 13 ++ README.md | 2 +- .../CashRegistryCompatibility.csproj | 2 +- .../CleaningAreaCompatibility.csproj | 2 +- .../ColonyGroupsCompatibility.csproj | 10 +- .../ColonyGroupsCompatibility/packages.config | 2 +- .../HospitalityCompatibility.csproj | 2 +- .../KijinCompatibility.csproj | 2 +- .../QuarryCompatibility.csproj | 2 +- .../TherapyCompatibility.csproj | 2 +- Source/Constants/PL_DefOf.cs | 13 -- .../JobGiver_Prisoner_OptimizeApparel.cs | 2 +- .../WorkGivers_ManipulatePrisoner.cs | 45 ----- Source/Core/GameSaves/SaveCleaner.cs | 4 +- .../Core/Incidents/IncidentWorker_Suicide.cs | 2 +- .../Core/Interrogation/InterrogationDefsOf.cs | 6 + ...RitualOutcomeEffectWorker_Interrogation.cs | 14 +- .../ColumnWorker_Interaction.cs | 103 +++++----- .../ColumnWorker_IsWorking.cs | 44 ++++ Source/Core/Meta/Prefs.cs | 13 ++ Source/Core/Meta/PrefsData.cs | 1 + Source/Core/Meta/Version.cs | 3 +- Source/Core/Meta/VersionUtility.cs | 4 +- Source/Core/Other/CleanPrisonersStatus.cs | 9 +- Source/Core/PrisonLaborUtility.cs | 82 ++++---- Source/Core/Settings/SettingsMenu.cs | 8 +- Source/HarmonyPatches/DevTools.cs | 1 + .../Patches_Apparel/PrisonerRespectOutfits.cs | 2 +- .../Patch_BillPrevention.cs | 1 - .../Patches_Food/AddCustomFoodReservation.cs | 2 +- .../Patch_EnableRespectingFoodPolicies.cs | 4 +- .../GUI_Bill/Patch_RestrictBillToPrisoner.cs | 6 +- .../Patch_AddScrollToPrisonerTab.cs | 122 ----------- .../BloodFeedInteractionPatches.cs | 60 ------ .../HemogenFarmInteractionPatch.cs | 73 ------- .../Patch_DefaultInteractionMode.cs | 30 +-- .../Patch_VisitorTab_TabDraw.cs | 104 ---------- .../Patches_Work/Patch_CarryToBuilding.cs | 39 +++- .../Patch_TimetableFix.cs | 50 ++--- Source/Organizer/NewsFeed.xml | 12 ++ Source/PrisonLabor.csproj | 53 ++--- Source/packages.config | 4 +- changelog.txt | 6 + 75 files changed, 1364 insertions(+), 650 deletions(-) create mode 100644 1.5/Assemblies/0MultiplayerAPI.dll create mode 100644 1.5/Assemblies/PrisonLabor.dll create mode 100644 1.5/CashRegistry/Assemblies/PrisonLaborCashRegistryCompatibility.dll create mode 100644 1.5/CleaningArea/Assemblies/PrisonLaborCleaningAreaCompatibility.dll create mode 100644 1.5/ColonyGroups/Assemblies/PrisonLaborColonyGroupsCompatibility.dll create mode 100644 1.5/Defs/ConceptDef.xml create mode 100644 1.5/Defs/Hediffs.xml create mode 100644 1.5/Defs/Incidents.xml create mode 100644 1.5/Defs/Interrogation/InterrogationDefs.xml create mode 100644 1.5/Defs/Interrogation/InterrogationInteractionsDefs.xml create mode 100644 1.5/Defs/Interrogation/InterrogationPatterns.xml create mode 100644 1.5/Defs/Interrogation/InterrogationThoughtDefs.xml create mode 100644 1.5/Defs/JobDef.xml create mode 100644 1.5/Defs/MainButton.xml create mode 100644 1.5/Defs/Needs.xml create mode 100644 1.5/Defs/PrisonerInteractionModeDef.xml create mode 100644 1.5/Defs/PrisonerJoyGivers.xml create mode 100644 1.5/Defs/ThinkTreeDef.xml create mode 100644 1.5/Defs/ThoughtsDef.xml create mode 100644 1.5/Defs/WorkGiverDef.xml create mode 100644 1.5/Defs/WorkTypes.xml create mode 100644 1.5/Hospitality/Assemblies/PrisonLaborHospitalityCompatibility.dll create mode 100644 1.5/Ideology/Defs/PL_Ideology_InterrogationDefs.xml create mode 100644 1.5/Ideology/Patches/JailorForSlavesPatch.xml create mode 100644 1.5/Kijin/Assemblies/PrisonLaborKijinCompatibility.dll create mode 100644 1.5/Patches/AddPrisonerComp.xml create mode 100644 1.5/Patches/Designators.xml create mode 100644 1.5/Patches/SetJailorJobsPatch.xml create mode 100644 1.5/Quarry/Assemblies/PrisonLaborQuarryCompatibility.dll create mode 100644 1.5/Therapy/Assemblies/PrisonLaborTherapyCompatibility.dll delete mode 100644 Source/Core/AI/WorkGivers/WorkGivers_ManipulatePrisoner.cs create mode 100644 Source/Core/MainButton_Window/ColumnWorker_IsWorking.cs delete mode 100644 Source/HarmonyPatches/Patches_GUI/GUI_PrisonerTab/Patch_AddScrollToPrisonerTab.cs delete mode 100644 Source/HarmonyPatches/Patches_InteractionMode/BloodFeedInteractionPatches.cs delete mode 100644 Source/HarmonyPatches/Patches_InteractionMode/HemogenFarmInteractionPatch.cs delete mode 100644 Source/HarmonyPatches/Patches_InteractionMode/Patch_VisitorTab_TabDraw.cs diff --git a/1.5/Assemblies/0MultiplayerAPI.dll b/1.5/Assemblies/0MultiplayerAPI.dll new file mode 100644 index 0000000000000000000000000000000000000000..9648606231a54f626544853a52d3f06a798c39db GIT binary patch literal 24064 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 aEc@Mj{p(Gz(sloR@7+xI*IB+=82AgbAVtOi literal 0 HcmV?d00001 diff --git a/1.5/CashRegistry/Assemblies/PrisonLaborCashRegistryCompatibility.dll b/1.5/CashRegistry/Assemblies/PrisonLaborCashRegistryCompatibility.dll new file mode 100644 index 0000000000000000000000000000000000000000..221a3352cf986cbec5632d07c7b6bb0085be394e GIT binary patch literal 8192 zcmeHMYiu0V6+SaNJL_y5V{aViNwRstCXP4jM;8SjqQ6Lx2o znb{CyTpaNbl%PWU1Ncz{{DV@dm8f{AJX+DJ6-7cV5^W(-QV<2TD*aK>hl1&M?#!;& zj+2%j{X@CVoO@pPoO92)b7pqZf73%0AR-0V=bsb3fSE^!fL8{S5Lc~wsfwPP_vY#s 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 literal 0 HcmV?d00001 diff --git a/1.5/CleaningArea/Assemblies/PrisonLaborCleaningAreaCompatibility.dll b/1.5/CleaningArea/Assemblies/PrisonLaborCleaningAreaCompatibility.dll new file mode 100644 index 0000000000000000000000000000000000000000..fc44fc46722f8897f5790a0b8b9541f51cd4b441 GIT binary patch literal 8704 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 literal 0 HcmV?d00001 diff --git a/1.5/ColonyGroups/Assemblies/PrisonLaborColonyGroupsCompatibility.dll b/1.5/ColonyGroups/Assemblies/PrisonLaborColonyGroupsCompatibility.dll new file mode 100644 index 0000000000000000000000000000000000000000..623bbc026a447c6afe7a08e2ded3741a9ab7f547 GIT binary patch literal 10752 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 literal 0 HcmV?d00001 diff --git a/1.5/Defs/ConceptDef.xml b/1.5/Defs/ConceptDef.xml new file mode 100644 index 00000000..91060a87 --- /dev/null +++ b/1.5/Defs/ConceptDef.xml @@ -0,0 +1,48 @@ + + + + PrisonLabor_Indroduction + + 45 + True + +
  • ITab-Prisoner-Closed
  • +
    + You can force your prisoners to do labor.\n\nTo do so you must select "Force to work" option from "Prisoner" pane\n\nPrisoners will work on orders and bills that are in allowed area. Make sure prisoners can reach their work.\n\nThey can only cook, mine, cut plants, haul, clean, or grow plants, that do not require special skills.\n\nPrisoner sometimes refuses to work. Reasons can be different. He can be injured, hungry, tired, or not motivated enough.\n\nHINT: You can assign work types in "Work" pane.\n\nHINT: If you put a stove in a prison cell make sure they can reach raw food.\n\nHINT: You can let prioners moving through doors by leaving them open. +
    + + PrisonLabor_Motivation + + 100 + True + One of yours prisoners stopped working.\nHe won't work any longer, unless he gets motivated.\n\nYou can check status of motivation in "Needs" tab.\n\nMake sure you have enough wardens (check "Work" tab), or draft one of your colonist and order him to stand around your prisoners.\n\nLow motivation of prisoners can lead to revolts. + + + PrisonLabor_Growing + + 100 + True + Prisoners can only grow plants that don't require any special skills like potato or cotton. They can however gather any plant that is ordered to harvest. + + + PrisonLabor_Management + + 100 + True + You can manage your prison labor in several ways.\n\nYou can assign work types to prisoners by accessing "Work" tab.\n\nYou can restrict when prisoners should work, rest, or sleep by accessing "Restrict" tab.\n\nYou can restrict work to "Prisoners only". For work orders that covers area you can choose "Labor area" tool from "Architect"->"Orders" panel.\nFor bills there is an option "Prisoners only". + + + PrisonLabor_Timetable + + 100 + True + You can make time restrictions for prisoners.\n\n"Work" time will force them to work even when they're hungry or tired.\n\n"Joy" time will let them rest from job and get motivation bonus.\n\n"Sleep" time will force them to stay in prison cell.\n\n"Anything" is default setting. + + + PrisonLabor_Treatment + + 50 + True + In prison labor you need to take care for prisoners. Good treatment can prevent revolts, and can provoke recruit proposition (without recruting process!).\n\nTo maintain good treatment status you need to feed prisoners regularly and set some free time so they can regenerate their strength\n\nTreatment will go lower if you beat prisoners, starve them, or exploit in terms of labor.\nGood treatment will result in:\n - Random offers with request to join colony\n - Preventing revolts\n - Preventing suicide + +
    diff --git a/1.5/Defs/Hediffs.xml b/1.5/Defs/Hediffs.xml new file mode 100644 index 00000000..f0fee538 --- /dev/null +++ b/1.5/Defs/Hediffs.xml @@ -0,0 +1,91 @@ + + + + PrisonLabor_PrisonerChains + This pawn has prisoners chains. Note: it is default Vanilla mechanics, but in hediff state + + false + +
  • + + false +
  • +
  • + + false + 0.01 +
  • +
  • + + false + 0.60 + +
  • + Manipulation + -0.3 +
  • + + +
  • + + false + 0.80 + +
  • + Moving + 0.5 +
  • + + +
  • + + false + 0.90 + +
  • + Manipulation + -0.3 +
  • +
  • + Moving + 0.5 +
  • + + +
    +
    + + PrisonLabor_RemovedHandscuffs + Prisoner has removed handscuffs + + false + +
  • + + false +
  • +
  • + + true + 0.01 +
  • +
    +
    + + PrisonLabor_RemovedLegscuffs + Prisoner has removed legscuffs + + false + +
  • + + false +
  • +
  • + + true + 0.01 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.5/Defs/Incidents.xml b/1.5/Defs/Incidents.xml new file mode 100644 index 00000000..c10bf685 --- /dev/null +++ b/1.5/Defs/Incidents.xml @@ -0,0 +1,49 @@ + + + PrisonLabor_Revolt + + +
  • Map_PlayerHome
  • +
    + PrisonLabor.Core.Incidents.IncidentWorker_Revolt + Revolt + Revolt has been started by {0}. The prisoners united under faction {1}, and began uprising with self-made weapons + ThreatBig + 5.4 + 20 + ThreatBig + true + 200 +
    + + + PrisonLabor_ResocializationOffer + + Misc + +
  • Map_PlayerHome
  • +
    + PrisonLabor.Core.Incidents.IncidentWorker_ResocializationOffer + Resocialization offer + Offer by {0}. + PositiveEvent + 10 + IncreaseEasy +
    + + + PrisonLabor_Suicide + + Misc + +
  • Map_PlayerHome
  • +
    + PrisonLabor.Core.Incidents.IncidentWorker_Suicide + Prisoner suicide + {0} has commited suicide, because of bad treatment. + NegativeEvent + 2 + 500 + false +
    +
    diff --git a/1.5/Defs/Interrogation/InterrogationDefs.xml b/1.5/Defs/Interrogation/InterrogationDefs.xml new file mode 100644 index 00000000..da7e0e2e --- /dev/null +++ b/1.5/Defs/Interrogation/InterrogationDefs.xml @@ -0,0 +1,15 @@ + + + + PL_GenQuest + +
  • OpportunitySite_ItemStash
  • +
  • OpportunitySite_WorkSite
  • +
    +
    + + PL_InterrogationRoom + + PrisonLabor.Core.Interrogation.RoomRoleWorker_InterrogationRoom + +
    \ No newline at end of file diff --git a/1.5/Defs/Interrogation/InterrogationInteractionsDefs.xml b/1.5/Defs/Interrogation/InterrogationInteractionsDefs.xml new file mode 100644 index 00000000..e94b6e25 --- /dev/null +++ b/1.5/Defs/Interrogation/InterrogationInteractionsDefs.xml @@ -0,0 +1,36 @@ + + + + PL_InterrogateInteraction + + InteractionWorker + True + UI/Icons/Rituals/Trial + + +
  • r_logentry->[INITIATOR_nameDef] asked [RECIPIENT_nameDef] [askPart].
  • +
  • r_logentry->[INITIATOR_nameDef] ordered [RECIPIENT_nameDef] to told about [askPart].
  • +
  • askPart->where is the loot
  • +
  • askPart->why is Gamora
  • +
  • askPart->when finally starts talking
  • +
  • askPart->where is their base
  • +
    +
    +
    + + PL_BeIntrrogatedInteraction + + InteractionWorker + True + UI/Icons/Rituals/TrialDefend + + +
  • r_logentry->[INITIATOR_nameDef] called for mercy.
  • +
  • r_logentry->[INITIATOR_nameDef] begged to spare the face.
  • +
  • r_logentry->[INITIATOR_nameDef] kept silence.
  • +
  • r_logentry->[INITIATOR_nameDef] has no idea.
  • +
  • r_logentry->[INITIATOR_nameDef] told everything.
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.5/Defs/Interrogation/InterrogationPatterns.xml b/1.5/Defs/Interrogation/InterrogationPatterns.xml new file mode 100644 index 00000000..44e58003 --- /dev/null +++ b/1.5/Defs/Interrogation/InterrogationPatterns.xml @@ -0,0 +1,191 @@ + + + + PL_Interrogation + + Initiate a prisoner interrogation. Warden will take prisoner and try to get usefull information. Depends on warden's traits and abilities prisoner may end up pretty beat up. + PL_Interrogation + Things/Mote/SpeechSymbols/Speech + Ritual + Precept_Ritual + false + true + false + 1.0 + true + false + true + false + false + + + PL_Interrogation + false + PL_Interrogation + PL_SelectedThing + PL_InterrogationRoom + PL_Interrogation + false + true + + + PL_Interrogation + PrisonLabor.Core.Interrogation.Ritual.RitualOutcomeEffectWorker_Interrogation + false + false + +
  • + + + + PL_InterrogationRoom + PrisonLabor.Core.Interrogation.Ritual.RitualObligationTargetWorker_Interrogation + + + PL_Interrogation + PrisonLabor.Core.Interrogation.Ritual.RitualBehaviorWorker_Interrogation + 5000 + + Spectators are not needed + + +
  • + + an warden + warden + 1 + True + False + false + True +
  • +
  • + + a prisoner + prisoner + 1 + True + False + false +
  • + + +
  • + false + +
  • + warden + prisoner + Convicted prisoner is not reachable. +
  • +
  • + escort asleep + warden +
  • + + +
  • + +
  • prisoner
  • + + +
    + +
  • + warden + PL_DeliverPawnToCell + +
  • + +
  • +
  • + prisoner + Idle +
  • +
    + +
  • + false + +
  • + 1 +
  • + + +
  • + warden + PL_Interrogate + +
  • + false +
  • + + +
  • + prisoner + PL_StandOnCell +
  • +
    + +
    + + + PL_Interrogate + HighPriority + Off + true + + +
  • + 0.6 + +
  • + 50~250 +
  • +
    + +
  • + Speech_Ideoligious_Male + Speech_Ideoligious_Female +
  • + +
    +
    + + PL_DeliverPawnToCell + HighPriority + Off + + + +
  • + true + Jog +
  • +
    +
    +
    + + PL_StandOnCell + + + +
  • + 60 +
  • + +
    +
    +
    + + + PL_SelectedThing + RitualTargetFilter_SelectedThing + + + PL_Interrogate + PrisonLabor.Core.Interrogation.Ritual.JobDriver_Interrogate + talking. + false + +
    \ No newline at end of file diff --git a/1.5/Defs/Interrogation/InterrogationThoughtDefs.xml b/1.5/Defs/Interrogation/InterrogationThoughtDefs.xml new file mode 100644 index 00000000..2dd2e79f --- /dev/null +++ b/1.5/Defs/Interrogation/InterrogationThoughtDefs.xml @@ -0,0 +1,66 @@ + + + + PL_BitMe + Thought_MemorySocial + 10 + 300 + 1 + Baby, Child, Adult + +
  • + + this fricking lunatic bit me during interrogation + -7 +
  • +
    +
    + + PL_KindInterrogation + Thought_MemorySocial + 10 + 300 + 1 + Baby, Child, Adult + +
  • + + Interrogation was kind of... nice? + 2 +
  • +
    +
    + + PL_Interrogated + Thought_MemorySocial + 10 + 300 + 1 + Baby, Child, Adult + +
  • + + -7 +
  • +
    +
    + + PL_BrutallyInterrogated + Thought_MemorySocial + 10 + 300 + 1 + Baby, Child, Adult + +
  • Masochist
  • +
    + +
  • + + they beat me up during interrogation + -7 + -7 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.5/Defs/JobDef.xml b/1.5/Defs/JobDef.xml new file mode 100644 index 00000000..4880be2c --- /dev/null +++ b/1.5/Defs/JobDef.xml @@ -0,0 +1,29 @@ + + + + PrisonLabor_PrisonerSupervise + PrisonLabor.Core.AI.JobDrivers.JobDriver_Supervise + watching prisoner TargetA. + true + + + PrisonLabor_Arrest + JobDriver_TakeToBed + arresting TargetA. + true + true + false + + + PrisonLabor_HandlePrisonersLegChain + PrisonLabor.Core.AI.JobDrivers.JobDriver_UnchainLegs + handling legcuffs of prisoner TargetA. + true + + + PrisonLabor_HandlePrisonersHandChain + PrisonLabor.Core.AI.JobDrivers.JobDriver_UnchainHands + handling handcuffs of prisoner TargetA. + true + + diff --git a/1.5/Defs/MainButton.xml b/1.5/Defs/MainButton.xml new file mode 100644 index 00000000..e8b23b28 --- /dev/null +++ b/1.5/Defs/MainButton.xml @@ -0,0 +1,166 @@ + + + + PL_Prisoners_Menu + + Manage your faction prisoners + PrisonLabor.Core.MainButton_Window.PrisonerButtonWindow + PL_TabIcon + 35 + true + + + + + PL_Overview + + PrisonLabor.Core.MainButton_Window.MainTabWindow_Overview + 10 + + + + PL_LaborWindow + + PrisonLabor.Core.MainButton_Window.MainTabWindow_Labor + 20 + + + + PL_ScheduleWindow + + PrisonLabor.Core.MainButton_Window.MainTabWindow_Schedule + 30 + + + + PL_AssignWindow + + PrisonLabor.Core.MainButton_Window.MainTabWindow_Assign + 40 + + + + PL_DevWindow + + PrisonLabor.Core.MainButton_Window.MainTabWindow_Dev + true + 100 + + + + + PL_Assign + PawnTable_PlayerPawns + +
  • Label
  • +
  • MedicalCare
  • +
  • GapTiny
  • +
  • Outfit
  • +
  • GapTiny
  • +
  • FoodRestriction
  • +
  • GapTiny
  • +
  • DrugPolicy
  • +
  • RemainingSpace
  • +
    +
    + + + PL_Overview + PawnTable_PlayerPawns + +
  • Label
  • +
  • GapTiny
  • +
  • PL_InteractionColumn
  • +
  • GapTiny
  • +
  • PL_IsWorking
  • +
  • GapTiny
  • +
  • PL_MotivationColumn
  • +
  • GapTiny
  • +
  • PL_HasLegcuffs
  • +
  • GapTiny
  • +
  • PL_HasHandcuffs
  • +
  • GapTiny
  • +
  • PL_Resocialization
  • +
  • GapTiny
  • +
  • PL_HasIntel
  • +
  • RemainingSpace
  • +
    +
    + + + PL_DevTable + PawnTable_PlayerPawns + +
  • Label
  • +
  • GapTiny
  • +
  • PL_EscapeColumn
  • +
  • GapTiny
  • +
  • PL_TreatmentColumn
  • +
  • RemainingSpace
  • +
    +
    + + + + PL_InteractionColumn + + Interaction mode + PrisonLabor.Core.MainButton_Window.ColumnWorker_Interaction + true + + + + PL_Resocialization + + Prisoner wants to join to your colony + PrisonLabor.Core.MainButton_Window.ColumnWorker_Resocialization + + + + PL_HasLegcuffs + + PrisonLabor.Core.MainButton_Window.ColumnWorker_HasLegcuffs + true + + + + PL_HasHandcuffs + + PrisonLabor.Core.MainButton_Window.ColumnWorker_HasHandscuffs + true + + + + PL_EscapeColumn + + PrisonLabor.Core.MainButton_Window.ColumnWorker_EscapeTracker + + + + PL_MotivationColumn + + PrisonLabor.Core.MainButton_Window.ColumnWorker_Motivation + true + + + + PL_TreatmentColumn + + PrisonLabor.Core.MainButton_Window.ColumnWorker_Treatment + true + + + + PL_HasIntel + + PrisonLabor.Core.MainButton_Window.ColumnWorker_HasIntel + true + + + PL_IsWorking + + PrisonLabor.Core.MainButton_Window.ColumnWorker_IsWorking + true + + +
    \ No newline at end of file diff --git a/1.5/Defs/Needs.xml b/1.5/Defs/Needs.xml new file mode 100644 index 00000000..c1f6b06f --- /dev/null +++ b/1.5/Defs/Needs.xml @@ -0,0 +1,26 @@ + + + + PrisonLabor_Motivation + PrisonLabor.Core.Needs.Need_Motivation + + Motivation represents how motivated to work is prisoner. Motivation can be improved by colonists standing nearby. + 90 + false + false + Humanlike + true + + + PrisonLabor_Treatment + PrisonLabor.Core.Needs.Need_Treatment + + Treatment happiness represents how prisoners are content of treatment in colony. + 89 + false + false + false + Humanlike + true + + diff --git a/1.5/Defs/PrisonerInteractionModeDef.xml b/1.5/Defs/PrisonerInteractionModeDef.xml new file mode 100644 index 00000000..e686d0ec --- /dev/null +++ b/1.5/Defs/PrisonerInteractionModeDef.xml @@ -0,0 +1,9 @@ + + + + PrisonLabor_workOption + + 4 + true + + diff --git a/1.5/Defs/PrisonerJoyGivers.xml b/1.5/Defs/PrisonerJoyGivers.xml new file mode 100644 index 00000000..e768bc04 --- /dev/null +++ b/1.5/Defs/PrisonerJoyGivers.xml @@ -0,0 +1,33 @@ + + + + PrisonLabor_PrisonersJoy + +
  • ViewArt
  • +
  • Play_Horseshoes
  • +
  • Play_Hoopstone
  • +
  • Play_Billiards
  • +
  • Play_GameOfUr
  • +
  • Play_Chess
  • +
  • Play_Poker
  • +
  • WatchTelevision
  • +
  • UseTelescope
  • +
    +
    + + + PrisonerLabor_RecrationWalk + PrisonLabor.Core.Recreation.JoyGiver_PrisonerRecrationWalking + 1 + PrionLabor_PrisonerGoForWalk + Meditative + + + + PrionLabor_PrisonerGoForWalk + PrisonLabor.Core.Recreation.JobDriver_PrisonerRecrationWalking + going for a recreataion walk. + 8000 + Meditative + +
    \ No newline at end of file diff --git a/1.5/Defs/ThinkTreeDef.xml b/1.5/Defs/ThinkTreeDef.xml new file mode 100644 index 00000000..39037819 --- /dev/null +++ b/1.5/Defs/ThinkTreeDef.xml @@ -0,0 +1,38 @@ + + + + PrisonLabor_WorkThinkTree + Humanlike_PostDuty + 80 + + false + +
  • + +
  • + +
  • +
  • + +
  • + +
  • +
  • + ChangingApparel + +
  • + +
  • +
  • + +
  • +
  • +
  • +
  • +
  • + +
  • +
    +
    +
    +
    diff --git a/1.5/Defs/ThoughtsDef.xml b/1.5/Defs/ThoughtsDef.xml new file mode 100644 index 00000000..4fb5052d --- /dev/null +++ b/1.5/Defs/ThoughtsDef.xml @@ -0,0 +1,37 @@ + + + + + PrisonLabor_VeryGoodTreatment + PrisonLabor.Core.AI.ThoughtWorkers.ThoughtWorker_VeryGoodTreatment + +
  • + + In this prison I've been treated very well. + 15 +
  • +
    +
    + + PrisonLabor_LowMotivation + PrisonLabor.Core.AI.ThoughtWorkers.ThoughtWorker_LowMotivation + +
  • + + Nobody cares if I'm working or not. + 5 +
  • +
    +
    + + PrisonLabor_FreeTime + PrisonLabor.Core.AI.ThoughtWorkers.ThoughtWorker_FreeTime + +
  • + + Even tough I'm prisoner, I can still have some free time. + 5 +
  • +
    +
    +
    diff --git a/1.5/Defs/WorkGiverDef.xml b/1.5/Defs/WorkGiverDef.xml new file mode 100644 index 00000000..5cb1ab0a --- /dev/null +++ b/1.5/Defs/WorkGiverDef.xml @@ -0,0 +1,31 @@ + + + + PrisonLabor_SupervisePrisonLabor + + PrisonLabor.Core.AI.WorkGivers.WorkGiver_Supervise + PrisonLabor_Jailor + 5 + watch prisoner + watching prisoner + +
  • Manipulation
  • +
    + +
  • Violent
  • +
    +
    + + + PrisonLabor_HandleChains + + PrisonLabor.Core.AI.WorkGivers.WorkGiver_HandleChains + PrisonLabor_Jailor + 5 + handle prisoner's chains + handling prisoner's chains + +
  • Manipulation
  • +
    +
    +
    diff --git a/1.5/Defs/WorkTypes.xml b/1.5/Defs/WorkTypes.xml new file mode 100644 index 00000000..056f766b --- /dev/null +++ b/1.5/Defs/WorkTypes.xml @@ -0,0 +1,16 @@ + + + + PrisonLabor_Jailor + Jailor + Jailor + watching prisoners + Manage prisoners, which includes escort, watching, releasing, and execution of prisoners. + Supervise + 1099 + true + +
  • Violent
  • +
    +
    +
    diff --git a/1.5/Hospitality/Assemblies/PrisonLaborHospitalityCompatibility.dll b/1.5/Hospitality/Assemblies/PrisonLaborHospitalityCompatibility.dll new file mode 100644 index 0000000000000000000000000000000000000000..643689da03eac2373e1d7b4032f579b64c4d3b75 GIT binary patch literal 8192 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 N$)5I!@%>Xr=|2KKvOWL+ literal 0 HcmV?d00001 diff --git a/1.5/Ideology/Defs/PL_Ideology_InterrogationDefs.xml b/1.5/Ideology/Defs/PL_Ideology_InterrogationDefs.xml new file mode 100644 index 00000000..c811234b --- /dev/null +++ b/1.5/Ideology/Defs/PL_Ideology_InterrogationDefs.xml @@ -0,0 +1,55 @@ + + + + PL_InterrogationChair + + Not comfortable chair used to interrogate prisoners. + + Things/Building/Furniture/DiningChair + Graphic_Multi + (1,1) + + (0.25,0.234375,0.5,0.28125) + (0.25,0.234375,0.5,0.28125) + (0.28125,0.25,0.453125,0.25) + (0.28125,0.25,0.453125,0.25) + + + (0.23, 0.26, 0.23) + + + Building + + 100 + 8000 + 5 + 1.0 + 1 + 0.30 + 5 + + true + +
  • Metallic
  • +
  • Woody
  • +
    + 45 + 30 + Misc7 + 0.35 + South + 2410 + + true + true + + 4 + +
  • ComplexFurniture
  • +
    + +
  • +
  • + + + \ No newline at end of file diff --git a/1.5/Ideology/Patches/JailorForSlavesPatch.xml b/1.5/Ideology/Patches/JailorForSlavesPatch.xml new file mode 100644 index 00000000..06935517 --- /dev/null +++ b/1.5/Ideology/Patches/JailorForSlavesPatch.xml @@ -0,0 +1,14 @@ + + + + Normal + +
  • + */WorkGiverDef[defName="ExecuteSlave"]/workType + + PrisonLabor_Jailor + +
  • + + + \ No newline at end of file diff --git a/1.5/Kijin/Assemblies/PrisonLaborKijinCompatibility.dll b/1.5/Kijin/Assemblies/PrisonLaborKijinCompatibility.dll new file mode 100644 index 0000000000000000000000000000000000000000..cf0af4363c5cbdd3cdc42b825f37816a8394434d GIT binary patch literal 7680 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 + + + /Defs/ThingDef[thingClass = "Pawn"]/comps + + /Defs/ThingDef[thingClass = "Pawn"] + + +
  • + PrisonLabor.Core.Components.PrisonerComp +
  • +
    +
    +
    + + /Defs/ThingDef[thingClass = "Pawn"]/comps + +
  • + PrisonLabor.Core.Components.PrisonerComp +
  • +
    +
    +
    + +
    \ No newline at end of file diff --git a/1.5/Patches/Designators.xml b/1.5/Patches/Designators.xml new file mode 100644 index 00000000..4b696ade --- /dev/null +++ b/1.5/Patches/Designators.xml @@ -0,0 +1,38 @@ + + + + Normal + +
  • + Always + +
  • + /Defs/DesignationCategoryDef[defName = "Zone"]/specialDesignatorClasses[li = "PrisonLabor.Core.LaborArea.Designator_AreaLaborExpand"] + Invert +
  • +
  • + /Defs/DesignationCategoryDef[defName = "Zone"]/specialDesignatorClasses + +
  • PrisonLabor.Core.LaborArea.Designator_AreaLaborExpand
  • + + +
    + +
  • + Always + +
  • + /Defs/DesignationCategoryDef[defName = "Zone"]/specialDesignatorClasses[li = "PrisonLabor.Core.LaborArea.Designator_AreaLaborClear"] + Invert +
  • +
  • + /Defs/DesignationCategoryDef[defName = "Zone"]/specialDesignatorClasses + +
  • PrisonLabor.Core.LaborArea.Designator_AreaLaborClear
  • + + + + + +
    +
    \ No newline at end of file diff --git a/1.5/Patches/SetJailorJobsPatch.xml b/1.5/Patches/SetJailorJobsPatch.xml new file mode 100644 index 00000000..81ab1099 --- /dev/null +++ b/1.5/Patches/SetJailorJobsPatch.xml @@ -0,0 +1,33 @@ + + + + Normal + +
  • + */WorkGiverDef[defName="DoExecution"]/workType + + PrisonLabor_Jailor + +
  • +
  • + */WorkGiverDef[defName="ExecuteGuiltyColonist"]/workType + + PrisonLabor_Jailor + +
  • +
  • + */WorkGiverDef[defName="ReleasePrisoner"]/workType + + PrisonLabor_Jailor + +
  • +
  • + */WorkGiverDef[defName="TakePrisonerToBed"]/workType + + PrisonLabor_Jailor + +
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.5/Quarry/Assemblies/PrisonLaborQuarryCompatibility.dll b/1.5/Quarry/Assemblies/PrisonLaborQuarryCompatibility.dll new file mode 100644 index 0000000000000000000000000000000000000000..491e7d94485c404acdfd90deeea825b678e8648c GIT binary patch literal 5632 zcmeHLYiwLc75?tM>$PL2ZoEm{Jo>nHLhCg4vUcpIp{3aIE1TM}9Xko3E%x2@?E1EM z?_K8JZL)+Sm#P*0fl8sG6)HbSkxDCy09B=c_)#PzKvY6VyacL>garJdAhqHt$~SX& z?M-Y&AoUmOtnZmQk2!PZoS8E-p8n9MVF5_+d;4wRW!9<;Yj|a_N_P7V-)_f?TVCyY z*_e8@YhlF=?XnDt(ka<_$M=KC&IwyqeB1Tyv6*?h6fBGMRadp{uc@9L2c`@Qx1PEC z>H27|quXvXGE`1VGNyj6m$l7rm>;lBx6RmYMW~4Zt3*gw#lq6VN>u%=*ELj;SjMP# zMm2_kKPyLEUY3BZr1enl+RJ%Y!fl|Xf!{*>SOcDp#QBK$(@HscdagCQiRoekOKBO( zJTYzCFdHgRdOoacWti5drSJj@Ds@=mr*!S$*HDImqYbETp69$&QMQ?A!fY4t%T~b9 z)c+mq&6v1@-PpealCT_h0IjV^_M}(`+X)~Kliow?IM8dIZIFw^n|pSW(9;=HaWi%3 zd2Yqto6yOAMz`5>jpCAp?Hs3@HK)mOo@M`QdUlc7n!K=^mHa*_!5+5S4x*VIwr4EN zQJx{D{I9kAUL|k#_FDlX+uC=)3a(?_+ZETr^$OWxe(VO;JvM=r?4fsB4;r0q&Am<7 zvGriW+(HXao|PPpJY7u%}3Jp zi=mRZor~sgtoNOo$KaMY)cYn+WyeSxBmM+ky6>nLTrV3%V;?P}mJ)EzRPt&EeZu&RmBbqwzJw*~YJ7v@NxX)a%p`=N;Dm-h z*YKi--_h_bE%PIU)bM2u4`})}qt|RjvvrYr{$)L5wqrWc&-M>Y)t)m|`$_g~#cuN~ zV>^x>!k?NK32)T!D#9ds6G~=Uw{iggsnJ0xDEXp9?@__!>opL8lKhA zA>0X9w?Cp`Rl^4fllY>Bk88@WU?;lpIDGR){1#R8;*WUC>Sue}>cyj4aw}%(=da^; z))fAZ9I+jm@(P9$1^f`toA+Xi(QOs*E!Zfd!}z>eL6>oxbpdI#;Y)Nhg%3kj2NT1fX9qH9wOX>!#KkXvWUcL zyh`cNS~;aXS;y#c+^!LWtNi)yfwq|QSGBz9ef6uCDZSJU#^HtT%ok$nd#yLrW>95J z6vmv$$vL4|>POa(PK*2@+&&#FS3GeCB1aZQG=kGYh9W(Z#W6>g0>3)t=1>arf%Moo z&MjF8WL_*|QbZ@55*sJo(iw6!Wm-fl!7>)Kt{O5e!q6!SEL6(^v(gO%f6B=PGCdkd zfmrA$jfzLcWW`+`iI^*Ll}OO&T%}laa-LYHjRvLDZs=Y@8wo>E%6ZiVH)<4JBTHvl zlpJ~Ax|Z0+37+BNT+qm<_nB}#p`76c{(7%Eb2RV^Zm}YrXjAr>2=me{U&^H2W!KX^ zP72RCuUp|p-LsM*$wwO*qd~bU-QvootWw$WtLuGER{Y2<2{k6i$+?~zHE8En5D4=_q^KA>!TD9`cC?#TGW9^xHd3n(wl_ChDc4Nh6AQT1Z#LOTtv;MccC0?iX2}w39){>b0z2|IuATuxk95ArI|L{;|pfGr(FSFe5^bH;v zxTVi2wG`f4%Tw>?b@Xt0fCjhk zSYvVrm$|dmk+nnhve!7amQH8`)f{T&vgZf9+8aW#A5m>vwKkUeTO;Ny@{k+zylKbv z<5N@!o%0m;?e|c}<-=@L_%7ug_JEh_3S$^GcoLVKi&u(YM#t|` zJ(owZF^0GD=rJ(Dne#HkIpsLZD!sN@pNx)s9D5a)4aJWCXY^G3l-j_4m+=4Xf&T!| C;g`(- literal 0 HcmV?d00001 diff --git a/1.5/Therapy/Assemblies/PrisonLaborTherapyCompatibility.dll b/1.5/Therapy/Assemblies/PrisonLaborTherapyCompatibility.dll new file mode 100644 index 0000000000000000000000000000000000000000..68356a80dceb3fba6cbab88dade289173cf8e7d1 GIT binary patch literal 11264 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 literal 0 HcmV?d00001 diff --git a/About/About.xml b/About/About.xml index b2f9c059..afbc361f 100644 --- a/About/About.xml +++ b/About/About.xml @@ -8,6 +8,7 @@
  • 1.2
  • 1.3
  • 1.4
  • +
  • 1.5
  • avius.prisonlabor @@ -35,7 +36,7 @@ - Version 1.4.9 + Version 1.5.0 This mod force prisoners to work. To enable this feature prisoners must have "Force to work" option checked ("Prisoner" tab). Prison labor needs management that consist: - Motivation - prisoners need to be motivated by presence of colonists. Wardens have new job - supervising prisoners. Low motivation can lead to revolts. diff --git a/Languages/English/Keyed/Keys.xml b/Languages/English/Keyed/Keys.xml index d5f81313..1590052c 100644 --- a/Languages/English/Keyed/Keys.xml +++ b/Languages/English/Keyed/Keys.xml @@ -110,5 +110,7 @@ Mech can work in prison area When disabled mechs will not work in prison labor area - + + Enable 'Force to Work' by default: + When enabled all new prisoners will have enabled `Force to work` interaction mode diff --git a/LoadFolders.xml b/LoadFolders.xml index d52b0e89..54342a3a 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -31,4 +31,17 @@
  • 1.4/Quarry
  • 1.4/ColonyGroups
  • + +
  • /
  • +
  • 1.5
  • +
  • 1.5/Ideology
  • +
  • 1.5/Biotech
  • +
  • 1.5/Therapy
  • +
  • 1.5/Hospitality
  • +
  • 1.5/CleaningArea
  • +
  • 1.5/CashRegistry
  • +
  • 1.5/Kijin
  • +
  • 1.5/Quarry
  • +
  • 1.5/ColonyGroups
  • +
    \ No newline at end of file diff --git a/README.md b/README.md index 5a8acb75..bb9030d7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@

    diff --git a/Source/CompatibilityProjects/CashRegistryCompatibility/CashRegistryCompatibility.csproj b/Source/CompatibilityProjects/CashRegistryCompatibility/CashRegistryCompatibility.csproj index 118c86fe..46d871e5 100644 --- a/Source/CompatibilityProjects/CashRegistryCompatibility/CashRegistryCompatibility.csproj +++ b/Source/CompatibilityProjects/CashRegistryCompatibility/CashRegistryCompatibility.csproj @@ -17,7 +17,7 @@ false none false - ..\..\..\1.4\CashRegistry\Assemblies\ + ..\..\..\1.5\CashRegistry\Assemblies\ DEBUG;TRACE prompt 4 diff --git a/Source/CompatibilityProjects/CleaningAreaCompatibility/CleaningAreaCompatibility.csproj b/Source/CompatibilityProjects/CleaningAreaCompatibility/CleaningAreaCompatibility.csproj index 1831e91e..bbb4e4d1 100644 --- a/Source/CompatibilityProjects/CleaningAreaCompatibility/CleaningAreaCompatibility.csproj +++ b/Source/CompatibilityProjects/CleaningAreaCompatibility/CleaningAreaCompatibility.csproj @@ -17,7 +17,7 @@ false none false - ..\..\..\1.4\CleaningArea\Assemblies\ + ..\..\..\1.5\CleaningArea\Assemblies\ DEBUG;TRACE prompt 4 diff --git a/Source/CompatibilityProjects/ColonyGroupsCompatibility/ColonyGroupsCompatibility.csproj b/Source/CompatibilityProjects/ColonyGroupsCompatibility/ColonyGroupsCompatibility.csproj index 5154ce62..f2d350a7 100644 --- a/Source/CompatibilityProjects/ColonyGroupsCompatibility/ColonyGroupsCompatibility.csproj +++ b/Source/CompatibilityProjects/ColonyGroupsCompatibility/ColonyGroupsCompatibility.csproj @@ -15,10 +15,10 @@ - true - full + false + none false - ..\..\..\1.4\ColonyGroups\Assemblies\ + ..\..\..\1.5\ColonyGroups\Assemblies\ DEBUG;TRACE prompt 4 @@ -32,8 +32,8 @@ 4 - - ..\..\packages\Lib.Harmony.2.2.2\lib\net472\0Harmony.dll + + ..\..\packages\Lib.Harmony.2.3.3\lib\net48\0Harmony.dll False diff --git a/Source/CompatibilityProjects/ColonyGroupsCompatibility/packages.config b/Source/CompatibilityProjects/ColonyGroupsCompatibility/packages.config index 6bf55ad6..967537eb 100644 --- a/Source/CompatibilityProjects/ColonyGroupsCompatibility/packages.config +++ b/Source/CompatibilityProjects/ColonyGroupsCompatibility/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Source/CompatibilityProjects/HospitalityCompatibility/HospitalityCompatibility.csproj b/Source/CompatibilityProjects/HospitalityCompatibility/HospitalityCompatibility.csproj index e04b4eb8..c8668304 100644 --- a/Source/CompatibilityProjects/HospitalityCompatibility/HospitalityCompatibility.csproj +++ b/Source/CompatibilityProjects/HospitalityCompatibility/HospitalityCompatibility.csproj @@ -17,7 +17,7 @@ false none false - ..\..\..\1.4\Hospitality\Assemblies\ + ..\..\..\1.5\Hospitality\Assemblies\ DEBUG;TRACE prompt 4 diff --git a/Source/CompatibilityProjects/KijinCompatibility/KijinCompatibility.csproj b/Source/CompatibilityProjects/KijinCompatibility/KijinCompatibility.csproj index 07ed9ba9..3f1293d0 100644 --- a/Source/CompatibilityProjects/KijinCompatibility/KijinCompatibility.csproj +++ b/Source/CompatibilityProjects/KijinCompatibility/KijinCompatibility.csproj @@ -17,7 +17,7 @@ false none false - ..\..\..\1.4\Kijin\Assemblies\ + ..\..\..\1.5\Kijin\Assemblies\ DEBUG;TRACE prompt 4 diff --git a/Source/CompatibilityProjects/QuarryCompatibility/QuarryCompatibility.csproj b/Source/CompatibilityProjects/QuarryCompatibility/QuarryCompatibility.csproj index eda334fb..dad57c88 100644 --- a/Source/CompatibilityProjects/QuarryCompatibility/QuarryCompatibility.csproj +++ b/Source/CompatibilityProjects/QuarryCompatibility/QuarryCompatibility.csproj @@ -17,7 +17,7 @@ false none false - ..\..\..\1.4\Quarry\Assemblies\ + ..\..\..\1.5\Quarry\Assemblies\ DEBUG;TRACE prompt 4 diff --git a/Source/CompatibilityProjects/TeraphyCompatibility/TherapyCompatibility.csproj b/Source/CompatibilityProjects/TeraphyCompatibility/TherapyCompatibility.csproj index 2e43876a..766ad73e 100644 --- a/Source/CompatibilityProjects/TeraphyCompatibility/TherapyCompatibility.csproj +++ b/Source/CompatibilityProjects/TeraphyCompatibility/TherapyCompatibility.csproj @@ -17,7 +17,7 @@ false none false - ..\..\..\1.4\Therapy\Assemblies\ + ..\..\..\1.5\Therapy\Assemblies\ DEBUG;TRACE prompt 4 diff --git a/Source/Constants/PL_DefOf.cs b/Source/Constants/PL_DefOf.cs index 44c9933a..17227f36 100644 --- a/Source/Constants/PL_DefOf.cs +++ b/Source/Constants/PL_DefOf.cs @@ -11,19 +11,6 @@ namespace PrisonLabor.Constants public static class PL_DefOf { public static PrisonerInteractionModeDef PrisonLabor_workOption; - public static PrisonerInteractionModeDef PrisonLabor_workAndRecruitOption; - - [MayRequireIdeology] - public static PrisonerInteractionModeDef PrisonLabor_workAndConvertOption; - - [MayRequireIdeology] - public static PrisonerInteractionModeDef PrisonLabor_workAndEnslaveOption; - - [MayRequireBiotech] - public static PrisonerInteractionModeDef PrisonLabor_workAndBloodfeedOption; - - [MayRequireBiotech] - public static PrisonerInteractionModeDef PrisonLabor_workAndHemogenFarmOption; public static WorkTypeDef PrisonLabor_Jailor; diff --git a/Source/Core/AI/JobGivers/JobGiver_Prisoner_OptimizeApparel.cs b/Source/Core/AI/JobGivers/JobGiver_Prisoner_OptimizeApparel.cs index da0eabbc..3e71f01e 100644 --- a/Source/Core/AI/JobGivers/JobGiver_Prisoner_OptimizeApparel.cs +++ b/Source/Core/AI/JobGivers/JobGiver_Prisoner_OptimizeApparel.cs @@ -45,7 +45,7 @@ protected override Job TryGiveJob(Pawn pawn) debugSb.AppendLine($"Scanning for {pawn} at {pawn.Position}"); } - Outfit currentOutfit = pawn.outfits.CurrentOutfit; + ApparelPolicy currentOutfit = pawn.outfits.CurrentApparelPolicy; List wornApparel = pawn.apparel.WornApparel; if (pawn.IsMotivated()) diff --git a/Source/Core/AI/WorkGivers/WorkGivers_ManipulatePrisoner.cs b/Source/Core/AI/WorkGivers/WorkGivers_ManipulatePrisoner.cs deleted file mode 100644 index a2fb732d..00000000 --- a/Source/Core/AI/WorkGivers/WorkGivers_ManipulatePrisoner.cs +++ /dev/null @@ -1,45 +0,0 @@ -using RimWorld; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using Verse.AI; - -namespace PrisonLabor.Core.AI.WorkGivers -{ - class WorkGivers_ManipulatePrisoner : WorkGiver_Warden - { - public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false) - { - var prisoner = t as Pawn; - - if (prisoner == null) - return null; - if (!ShouldTakeCareOfPrisoner(pawn, prisoner)) - return null; - if (prisoner.Downed || !pawn.CanReserve(t, 1, -1, null, false) || !prisoner.Awake()) - return null; - if (pawn.IsPrisoner || !pawn.health.capacities.CapableOf(PawnCapacityDefOf.Talking)) - return null; - - - if (PrisonLaborUtility.RecruitInLaborEnabled(prisoner)) - { - return new Job(JobDefOf.PrisonerAttemptRecruit, t); - } - if (PrisonLaborUtility.ConvertInLaborEnabled(pawn, prisoner)) - { - return new Job(JobDefOf.PrisonerConvert, t); - } - if (PrisonLaborUtility.EnslaveInLaborEnabled(pawn, prisoner)) - { - return new Job(JobDefOf.PrisonerEnslave, t); - } - - return null; - } - } -} - diff --git a/Source/Core/GameSaves/SaveCleaner.cs b/Source/Core/GameSaves/SaveCleaner.cs index 0fd3d304..f841effa 100644 --- a/Source/Core/GameSaves/SaveCleaner.cs +++ b/Source/Core/GameSaves/SaveCleaner.cs @@ -168,7 +168,7 @@ private static void UpdateData(XmlElement xmlNode) // TODO bills // Interaction Mode - string[] interactions = { PL_DefOf.PrisonLabor_workOption.defName, PL_DefOf.PrisonLabor_workAndRecruitOption.defName, PL_DefOf.PrisonLabor_workAndConvertOption.defName, PL_DefOf.PrisonLabor_workAndEnslaveOption.defName }; + string[] interactions = { PL_DefOf.PrisonLabor_workOption.defName, "PrisonLabor_workAndRecruitOption", "PrisonLabor_workAndConvertOption", "PrisonLabor_workAndEnslaveOption" }; foreach (var guestTracker in gameNode.GetEveryNode("guest")) { @@ -178,7 +178,7 @@ private static void UpdateData(XmlElement xmlNode) foreach (string interaction in interactions) { if (interactionMode.InnerText == interaction) - interactionMode.InnerText = PrisonerInteractionModeDefOf.NoInteraction.defName; + interactionMode.InnerText = PrisonerInteractionModeDefOf.MaintainOnly.defName; } } } diff --git a/Source/Core/Incidents/IncidentWorker_Suicide.cs b/Source/Core/Incidents/IncidentWorker_Suicide.cs index a0c837e5..cd1cee50 100644 --- a/Source/Core/Incidents/IncidentWorker_Suicide.cs +++ b/Source/Core/Incidents/IncidentWorker_Suicide.cs @@ -61,7 +61,7 @@ protected override bool TryExecuteWorker(IncidentParms parms) SendStandardLetter(parms, new TargetInfo(pawn.Position, pawn.Map), pawn.Name.ToStringShort); parms.faction = pawn.Faction; - DamageInfo dinfo = new DamageInfo(DamageDefOf.Cut, 29, 0, 0, pawn, pawn.RaceProps.body.AllParts.Find(p => p.def == BodyPartDefOf.Neck)); + DamageInfo dinfo = new DamageInfo(DamageDefOf.Cut, 29, 0, 0, pawn, pawn.RaceProps.body.AllParts.Find(p => p.def == BodyPartDefOf.Head)); while (!pawn.Dead) pawn.TakeDamage(dinfo); diff --git a/Source/Core/Interrogation/InterrogationDefsOf.cs b/Source/Core/Interrogation/InterrogationDefsOf.cs index 0c52ca76..59d71c2c 100644 --- a/Source/Core/Interrogation/InterrogationDefsOf.cs +++ b/Source/Core/Interrogation/InterrogationDefsOf.cs @@ -28,5 +28,11 @@ public static class InterrogationDefsOf public static InteractionDef PL_InterrogateInteraction; [MayRequireIdeology] public static InteractionDef PL_BeIntrrogatedInteraction; + + public static TraitDef Brawler; + public static TraitDef Masochist; + public static TraitDef TooSmart; + public static TraitDef Nerves; + public static TraitDef Tough; } } diff --git a/Source/Core/Interrogation/Ritual/RitualOutcomeEffectWorker_Interrogation.cs b/Source/Core/Interrogation/Ritual/RitualOutcomeEffectWorker_Interrogation.cs index 46ce8897..4e69a8f4 100644 --- a/Source/Core/Interrogation/Ritual/RitualOutcomeEffectWorker_Interrogation.cs +++ b/Source/Core/Interrogation/Ritual/RitualOutcomeEffectWorker_Interrogation.cs @@ -127,13 +127,13 @@ private float GoBrutal(Pawn warden, Pawn prisoner) { actualChance += 0.1f; } - if (HasTrait(prisoner, TraitDefOf.Tough)) + if (HasTrait(prisoner, InterrogationDefsOf.Tough)) { actualChance -= 0.3f; } - if (HasTrait(prisoner, TraitDefOf.Nerves)) + if (HasTrait(prisoner, InterrogationDefsOf.Nerves)) { - Trait nerves = GetTrait(prisoner, TraitDefOf.Nerves); + Trait nerves = GetTrait(prisoner, InterrogationDefsOf.Nerves); actualChance -= nerves.Degree * 0.1f; } if (HasTrait(prisoner, TraitDefOf.Wimp)) @@ -141,7 +141,7 @@ private float GoBrutal(Pawn warden, Pawn prisoner) //Wimp can't handle beating actualChance = 1f; } - if (HasTrait(prisoner, TraitDefOf.Masochist)) + if (HasTrait(prisoner, InterrogationDefsOf.Masochist)) { //Prisoner likes pain... actualChance = 0f; @@ -161,13 +161,13 @@ private float GoEasy(Pawn warden, Pawn prisoner) { actualChance -= 0.1f; } - if (HasTrait(warden, TraitDefOf.TooSmart)) + if (HasTrait(warden, InterrogationDefsOf.TooSmart)) { actualChance -= 0.1f; } - if (HasTrait(prisoner, TraitDefOf.Nerves)) + if (HasTrait(prisoner, InterrogationDefsOf.Nerves)) { - Trait nerves = GetTrait(prisoner, TraitDefOf.Nerves); + Trait nerves = GetTrait(prisoner, InterrogationDefsOf.Nerves); actualChance -= nerves.Degree * 0.1f; } actualChance += prisoner.relations.OpinionOf(warden) * 0.002f; diff --git a/Source/Core/MainButton_Window/ColumnWorker_Interaction.cs b/Source/Core/MainButton_Window/ColumnWorker_Interaction.cs index 2917afc8..c89421ca 100644 --- a/Source/Core/MainButton_Window/ColumnWorker_Interaction.cs +++ b/Source/Core/MainButton_Window/ColumnWorker_Interaction.cs @@ -11,60 +11,67 @@ namespace PrisonLabor.Core.MainButton_Window { - public class ColumnWorker_Interaction : PawnColumnWorker + public class ColumnWorker_Interaction : PawnColumnWorker + { + public override void DoCell(Rect rect, Pawn pawn, PawnTable table) { - public override void DoCell(Rect rect, Pawn pawn, PawnTable table) - { - if (pawn.guest != null) - { - Widgets.Dropdown(rect, pawn, (Pawn p) => p.guest.interactionMode, Button_GenerateMenu, pawn.guest.interactionMode.LabelCap.Truncate(rect.width), null, pawn.guest.interactionMode.LabelCap, null, null, paintable: true); - } - } - - private IEnumerable> Button_GenerateMenu(Pawn pawn) - { - foreach (PrisonerInteractionModeDef intertaction in DefDatabase.AllDefs - .Where(def => pawn.CanUsePrisonerInteraction(def)) - .OrderBy((PrisonerInteractionModeDef pim) => pim.listOrder)) - { - yield return new Widgets.DropdownMenuElement - { - option = new FloatMenuOption(intertaction.LabelCap, delegate - { - SetInteractionMode(pawn, intertaction); - }), - payload = intertaction - }; - } - } - public void SetInteractionMode(Pawn pawn, PrisonerInteractionModeDef intertaction) - { - pawn.guest.interactionMode = intertaction; - if (intertaction == PrisonerInteractionModeDefOf.Convert || intertaction == PL_DefOf.PrisonLabor_workAndConvertOption) - { - pawn.guest.ideoForConversion = Faction.OfPlayer.ideos.PrimaryIdeo; - } - } + if (pawn.guest != null) + { + Widgets.Dropdown(rect, pawn, (Pawn p) => p.guest.ExclusiveInteractionMode, Button_GenerateMenu, pawn.guest.ExclusiveInteractionMode.LabelCap.Truncate(rect.width), null, pawn.guest.ExclusiveInteractionMode.LabelCap, null, null, paintable: true); + } + } - public override int GetMinWidth(PawnTable table) + private IEnumerable> Button_GenerateMenu(Pawn pawn) + { + foreach (PrisonerInteractionModeDef intertaction in DefDatabase.AllDefs + .Where(def => pawn.CanUsePrisonerInteraction(def) && !def.isNonExclusiveInteraction) + .OrderBy((PrisonerInteractionModeDef pim) => pim.listOrder)) + { + yield return new Widgets.DropdownMenuElement { - return Mathf.Max(base.GetMinWidth(table), Mathf.CeilToInt(194f)); - } + option = new FloatMenuOption(intertaction.LabelCap, delegate + { + SetInteractionMode(pawn, intertaction); + }), + payload = intertaction + }; + } + } + public void SetInteractionMode(Pawn pawn, PrisonerInteractionModeDef intertaction) + { + pawn.guest.SetExclusiveInteraction(intertaction); + if (intertaction == PrisonerInteractionModeDefOf.Enslave && pawn.MapHeld != null && !PrisonLaborUtility.ColonyHasAnyWardenCapableOfEnslavement(pawn.MapHeld)) + { + Messages.Message("MessageNoWardenCapableOfEnslavement".Translate(), pawn, MessageTypeDefOf.CautionInput, historical: false); + } + if (intertaction == PrisonerInteractionModeDefOf.Convert && pawn.guest.ideoForConversion == null) + { + pawn.guest.ideoForConversion = Faction.OfPlayer.ideos.PrimaryIdeo; + } + if (intertaction == PrisonerInteractionModeDefOf.Execution && pawn.MapHeld != null && !PrisonLaborUtility.ColonyHasAnyWardenCapableOfViolence(pawn.MapHeld)) + { + Messages.Message("MessageCantDoExecutionBecauseNoWardenCapableOfViolence".Translate(), pawn, MessageTypeDefOf.CautionInput, historical: false); + } + } - public override int GetOptimalWidth(PawnTable table) - { - return Mathf.Clamp(Mathf.CeilToInt(251f), GetMinWidth(table), GetMaxWidth(table)); - } + public override int GetMinWidth(PawnTable table) + { + return Mathf.Max(base.GetMinWidth(table), Mathf.CeilToInt(194f)); + } - public override int GetMinHeaderHeight(PawnTable table) - { - return Mathf.Max(base.GetMinHeaderHeight(table), 65); - } + public override int GetOptimalWidth(PawnTable table) + { + return Mathf.Clamp(Mathf.CeilToInt(251f), GetMinWidth(table), GetMaxWidth(table)); + } - public override int Compare(Pawn a, Pawn b) - { + public override int GetMinHeaderHeight(PawnTable table) + { + return Mathf.Max(base.GetMinHeaderHeight(table), 65); + } - return a.guest.interactionMode.listOrder.CompareTo(b.guest.interactionMode.listOrder); - } + public override int Compare(Pawn a, Pawn b) + { + return a.guest.ExclusiveInteractionMode.listOrder.CompareTo(b.guest.ExclusiveInteractionMode.listOrder); } + } } diff --git a/Source/Core/MainButton_Window/ColumnWorker_IsWorking.cs b/Source/Core/MainButton_Window/ColumnWorker_IsWorking.cs new file mode 100644 index 00000000..5dd1b339 --- /dev/null +++ b/Source/Core/MainButton_Window/ColumnWorker_IsWorking.cs @@ -0,0 +1,44 @@ +using PrisonLabor.Constants; +using PrisonLabor.Core.Components; +using PrisonLabor.Core.Other; +using PrisonLabor.Core.Trackers; +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace PrisonLabor.Core.MainButton_Window +{ + public class ColumnWorker_IsWorking : PawnColumnWorker_Checkbox + { + protected override bool GetValue(Pawn pawn) + { + if (pawn == null) + { + DebugLogger.debug("Null pawn in ColumnWorker_IsWorking:GetValue"); + return true; + } + + return pawn.guest.IsInteractionEnabled(PL_DefOf.PrisonLabor_workOption); + } + + protected override void SetValue(Pawn pawn, bool value, PawnTable table) + { + if (pawn == null) + { + DebugLogger.debug("Null pawn in ColumnWorker_IsWorking:SetValue"); + return; + } + pawn.guest.ToggleNonExclusiveInteraction(PL_DefOf.PrisonLabor_workOption, value); + table?.SetDirty(); + } + protected override bool HasCheckbox(Pawn pawn) + { + return pawn.IsPrisonerOfColony; + } + } +} + diff --git a/Source/Core/Meta/Prefs.cs b/Source/Core/Meta/Prefs.cs index 34b6920a..c934d9b7 100644 --- a/Source/Core/Meta/Prefs.cs +++ b/Source/Core/Meta/Prefs.cs @@ -187,6 +187,19 @@ public static bool MechsWorkInLaborZone } } + public static bool EnableWorkByDefault + { + get + { + return data.enable_work_by_default; + } + set + { + data.enable_work_by_default = value; + Apply(); + } + } + public static void Init() { var flag = !new FileInfo(prefsFilePath).Exists; diff --git a/Source/Core/Meta/PrefsData.cs b/Source/Core/Meta/PrefsData.cs index 66348e76..a9c5e001 100644 --- a/Source/Core/Meta/PrefsData.cs +++ b/Source/Core/Meta/PrefsData.cs @@ -17,6 +17,7 @@ public class PrisonLaborPrefsData public bool enable_full_heal_rest = true; public bool enable_debug_logging = false; public bool mechs_work_in_labor_zone = false; + public bool enable_work_by_default = true; public Version last_version = Version.v0_0; public bool show_news = true; diff --git a/Source/Core/Meta/Version.cs b/Source/Core/Meta/Version.cs index e724939f..cce46434 100644 --- a/Source/Core/Meta/Version.cs +++ b/Source/Core/Meta/Version.cs @@ -89,6 +89,7 @@ public enum Version v1_4_6, v1_4_7, v1_4_8, - v1_4_9 + v1_4_9, + v1_5_0 } } diff --git a/Source/Core/Meta/VersionUtility.cs b/Source/Core/Meta/VersionUtility.cs index fb655623..0e31cb37 100644 --- a/Source/Core/Meta/VersionUtility.cs +++ b/Source/Core/Meta/VersionUtility.cs @@ -5,8 +5,8 @@ namespace PrisonLabor.Core.Meta { public class VersionUtility { - public const Version versionNumber = Version.v1_4_9; - public const string versionString = "1.4.9"; + public const Version versionNumber = Version.v1_5_0; + public const string versionString = "1.5.0"; public static Version VersionOfSaveFile { get; set; } diff --git a/Source/Core/Other/CleanPrisonersStatus.cs b/Source/Core/Other/CleanPrisonersStatus.cs index d6febf01..fb1b47c9 100644 --- a/Source/Core/Other/CleanPrisonersStatus.cs +++ b/Source/Core/Other/CleanPrisonersStatus.cs @@ -1,4 +1,5 @@ -using PrisonLabor.Constants; +using HarmonyLib; +using PrisonLabor.Constants; using RimWorld; using System; using System.Collections.Generic; @@ -15,8 +16,8 @@ public static class CleanPrisonersStatus static public void Clean(Pawn prisoner) { prisoner.workSettings = new Pawn_WorkSettings(prisoner); - CleanHediffs(prisoner); - prisoner.playerSettings.AreaRestriction = null; + CleanHediffs(prisoner); + prisoner.playerSettings.AreaRestrictionInPawnCurrentMap = null; if (prisoner.drugs != null) { prisoner.drugs.CurrentPolicy = Current.Game.drugPolicyDatabase.DefaultDrugPolicy(); @@ -29,7 +30,7 @@ static public void Clean(Pawn prisoner) { if (prisoner.guest != null) { - prisoner.guest.interactionMode = PrisonerInteractionModeDefOf.NoInteraction; + prisoner.guest.SetNoInteraction(); } Bill bill = prisoner.BillStack?.Bills?.FirstOrDefault((Bill x) => x.recipe == RecipeDefOf.ExtractHemogenPack); if (bill != null) diff --git a/Source/Core/PrisonLaborUtility.cs b/Source/Core/PrisonLaborUtility.cs index 93b83eca..fe872067 100644 --- a/Source/Core/PrisonLaborUtility.cs +++ b/Source/Core/PrisonLaborUtility.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using HarmonyLib; using PrisonLabor.Constants; using PrisonLabor.Core.LaborArea; using PrisonLabor.Core.LaborWorkSettings; @@ -12,45 +13,12 @@ namespace PrisonLabor.Core { public static class PrisonLaborUtility { - private static readonly List workOptions = new List { - PL_DefOf.PrisonLabor_workOption, PL_DefOf.PrisonLabor_workAndRecruitOption , PL_DefOf.PrisonLabor_workAndConvertOption, - PL_DefOf.PrisonLabor_workAndEnslaveOption, PL_DefOf.PrisonLabor_workAndBloodfeedOption, PL_DefOf.PrisonLabor_workAndHemogenFarmOption - }; - + private static readonly Traverse IsSutiableMethod = Traverse.Create().Method("IsStudiable", new[] { typeof(Pawn) }); public static bool LaborEnabled(this Pawn pawn) { - return pawn.IsPrisoner && workOptions.Contains(pawn.guest.interactionMode); - } - - public static bool RecruitInLaborEnabled(Pawn pawn) - { - if (pawn.guest.interactionMode == PL_DefOf.PrisonLabor_workAndRecruitOption && pawn.guest.ScheduledForInteraction) - { - return true; - } - - return false; - } - - public static bool ConvertInLaborEnabled(Pawn doer, Pawn prisoner) - { - if (prisoner.guest.interactionMode == PL_DefOf.PrisonLabor_workAndConvertOption && prisoner.guest.ScheduledForInteraction - && prisoner.Ideo != doer.Ideo && doer.Ideo == prisoner.guest.ideoForConversion) - { - return true; - } - return false; + return pawn.IsPrisoner && pawn.guest.IsInteractionEnabled(PL_DefOf.PrisonLabor_workOption); } - public static bool EnslaveInLaborEnabled(Pawn doer, Pawn prisoner) - { - if (prisoner.guest.interactionMode == PL_DefOf.PrisonLabor_workAndEnslaveOption && prisoner.guest.ScheduledForInteraction - && new HistoryEvent(HistoryEventDefOf.EnslavedPrisoner, doer.Named(HistoryEventArgsNames.Doer)).Notify_PawnAboutToDo_Job()) - { - return true; - } - return false; - } public static bool WorkTime(Pawn pawn) { if (pawn.timetable == null) @@ -138,39 +106,57 @@ public static bool CanUsePrisonerInteraction(this Pawn prisoner, PrisonerInterac { return false; } + if (ModsConfig.AnomalyActive) + { + if (mode.hideIfNotStudiableAsPrisoner && !IsSutiableMethod.GetValue(prisoner)) + { + return false; + } + if (mode.hideIfGrayFleshNotAppeared && !Find.Anomaly.hasSeenGrayFlesh) + { + return false; + } + } return true; } - private static bool ColonyHasAnyBloodfeeder(Map map) + public static bool ColonyHasAnyBloodfeeder(Map map) { if (ModsConfig.BiotechActive) { - foreach (Pawn item in map.mapPawns.FreeColonistsSpawned) + foreach (Pawn item in map.mapPawns.FreeColonistsAndPrisonersSpawned) { if (item.IsBloodfeeder()) { return true; } } - foreach (Pawn item2 in map.mapPawns.PrisonersOfColony) - { - if (item2.IsBloodfeeder()) - { - return true; - } - } } return false; } - public static bool HemogenFarmInteractionMode(PrisonerInteractionModeDef interaction) + public static bool ColonyHasAnyWardenCapableOfViolence(Map map) { - return interaction == PrisonerInteractionModeDefOf.HemogenFarm || interaction == PL_DefOf.PrisonLabor_workAndHemogenFarmOption; + foreach (Pawn item in map.mapPawns.FreeColonistsSpawned) + { + if (item.workSettings.WorkIsActive(WorkTypeDefOf.Warden) && !item.WorkTagIsDisabled(WorkTags.Violent)) + { + return true; + } + } + return false; } - public static bool BloodFeedInteractionMode(PrisonerInteractionModeDef interaction) + public static bool ColonyHasAnyWardenCapableOfEnslavement(Map map) { - return interaction == PrisonerInteractionModeDefOf.Bloodfeed || interaction == PL_DefOf.PrisonLabor_workAndBloodfeedOption; + foreach (Pawn item in map.mapPawns.FreeColonistsSpawned) + { + if (item.workSettings.WorkIsActive(WorkTypeDefOf.Warden) && new HistoryEvent(HistoryEventDefOf.EnslavedPrisoner, item.Named(HistoryEventArgsNames.Doer)).DoerWillingToDo()) + { + return true; + } + } + return false; } } } \ No newline at end of file diff --git a/Source/Core/Settings/SettingsMenu.cs b/Source/Core/Settings/SettingsMenu.cs index 18ac75b3..3075a732 100644 --- a/Source/Core/Settings/SettingsMenu.cs +++ b/Source/Core/Settings/SettingsMenu.cs @@ -3,6 +3,7 @@ using PrisonLabor.Core.Windows; using RimWorld; using System.Collections.Generic; +using System.Linq; using UnityEngine; using Verse; @@ -24,6 +25,7 @@ internal class SettingsMenu : Mod private static int defaultInteractionMode; private static bool enableDebbuging; private static bool mechsWorkInLaborZone; + private static bool workEnabledByDefault; private static List interactionModeList; @@ -44,8 +46,10 @@ public static void Init() enableFullHealRest = PrisonLaborPrefs.EnableFullHealRest; enableDebbuging = PrisonLaborPrefs.DebugLogs; mechsWorkInLaborZone = PrisonLaborPrefs.MechsWorkInLaborZone; + workEnabledByDefault = PrisonLaborPrefs.EnableWorkByDefault; - interactionModeList = new List(DefDatabase.AllDefs); + + interactionModeList = new List(DefDatabase.AllDefs.Where(interaction => !interaction.isNonExclusiveInteraction)); defaultInteractionMode = interactionModeList.IndexOf(DefDatabase.GetNamed(PrisonLaborPrefs.DefaultInteractionMode)); if (defaultInteractionMode < 0 || defaultInteractionMode > interactionModeList.Count - 1) defaultInteractionMode = 0; @@ -68,6 +72,7 @@ public override void DoSettingsWindowContents(Rect inRect) if (listing_options.ButtonTextLabeled("PrisonLabor_DefaultInterMode".Translate(), interactionModeList[defaultInteractionMode].LabelCap)) defaultInteractionMode = defaultInteractionMode < interactionModeList.Count - 1 ? defaultInteractionMode + 1 : 0; + listing_options.CheckboxLabeled("PrisonLabor_EnableWorkByDefault".Translate(), ref workEnabledByDefault, "PrisonLabor_EnableWorkByDefaultDesc".Translate()); listing_options.GapLine(); @@ -189,6 +194,7 @@ public override void WriteSettings() PrisonLaborPrefs.DefaultInteractionMode = interactionModeList[defaultInteractionMode].defName; PrisonLaborPrefs.DebugLogs = enableDebbuging; PrisonLaborPrefs.MechsWorkInLaborZone = mechsWorkInLaborZone; + PrisonLaborPrefs.EnableWorkByDefault = workEnabledByDefault; PrisonLaborPrefs.Save(); Log.Message("Prison Labor settings saved"); } diff --git a/Source/HarmonyPatches/DevTools.cs b/Source/HarmonyPatches/DevTools.cs index 10aa939d..b81c71a1 100644 --- a/Source/HarmonyPatches/DevTools.cs +++ b/Source/HarmonyPatches/DevTools.cs @@ -1,4 +1,5 @@ using HarmonyLib; +using LudeonTK; using PrisonLabor.Core.Needs; using RimWorld; using System; diff --git a/Source/HarmonyPatches/Patches_Apparel/PrisonerRespectOutfits.cs b/Source/HarmonyPatches/Patches_Apparel/PrisonerRespectOutfits.cs index 24c2edb9..4915a39e 100644 --- a/Source/HarmonyPatches/Patches_Apparel/PrisonerRespectOutfits.cs +++ b/Source/HarmonyPatches/Patches_Apparel/PrisonerRespectOutfits.cs @@ -30,7 +30,7 @@ static Apparel Postfix_FindGarmentSatisfyingTitleRequirement(Apparel __result, P private static Apparel PrisonerWillRespectOutfit(Apparel apparel, Pawn prisoner) { - if (apparel != null && IsMotivatedPrisoner(prisoner) && prisoner.outfits != null && !prisoner.outfits.CurrentOutfit.filter.Allows(apparel.def)) + if (apparel != null && IsMotivatedPrisoner(prisoner) && prisoner.outfits != null && !prisoner.outfits.CurrentApparelPolicy.filter.Allows(apparel.def)) { return null; } diff --git a/Source/HarmonyPatches/Patches_BillAssignation/Patch_BillPrevention.cs b/Source/HarmonyPatches/Patches_BillAssignation/Patch_BillPrevention.cs index 42372a04..b2ec3b5b 100644 --- a/Source/HarmonyPatches/Patches_BillAssignation/Patch_BillPrevention.cs +++ b/Source/HarmonyPatches/Patches_BillAssignation/Patch_BillPrevention.cs @@ -13,7 +13,6 @@ namespace PrisonLabor.HarmonyPatches.Patches_BillAssignation { [HarmonyPatch(typeof(WorkGiver_DoBill))] [HarmonyPatch("StartOrResumeBillJob")] - [HarmonyPatch(new[] { typeof(Pawn), typeof(IBillGiver) })] internal class Patch_BillPrevention { private static IEnumerable Transpiler(ILGenerator gen, MethodBase mBase, diff --git a/Source/HarmonyPatches/Patches_Food/AddCustomFoodReservation.cs b/Source/HarmonyPatches/Patches_Food/AddCustomFoodReservation.cs index df6cc2e2..9cea3ba1 100644 --- a/Source/HarmonyPatches/Patches_Food/AddCustomFoodReservation.cs +++ b/Source/HarmonyPatches/Patches_Food/AddCustomFoodReservation.cs @@ -12,7 +12,7 @@ namespace PrisonLabor.HarmonyPatches.Patches_Food /// Adds check if food is already reserved before trying to bring it /// [HarmonyPatch(typeof(FoodUtility))] - [HarmonyPatch(nameof(FoodUtility.BestFoodSourceOnMap_NewTemp))] + [HarmonyPatch(nameof(FoodUtility.BestFoodSourceOnMap))] static class AddCustomFoodReservation { /* === Orignal code Look-up=== diff --git a/Source/HarmonyPatches/Patches_Food/Patch_EnableRespectingFoodPolicies.cs b/Source/HarmonyPatches/Patches_Food/Patch_EnableRespectingFoodPolicies.cs index f9f30072..f7bc5a6b 100644 --- a/Source/HarmonyPatches/Patches_Food/Patch_EnableRespectingFoodPolicies.cs +++ b/Source/HarmonyPatches/Patches_Food/Patch_EnableRespectingFoodPolicies.cs @@ -13,13 +13,13 @@ namespace PrisonLabor.HarmonyPatches.Patches_Food [HarmonyPatch("GetCurrentRespectedRestriction")] class Patch_EnableRespectingFoodPolicies { - static FoodRestriction Postfix(FoodRestriction __result, Pawn_FoodRestrictionTracker __instance, Pawn getter) + static FoodPolicy Postfix(FoodPolicy __result, Pawn_FoodRestrictionTracker __instance, Pawn getter) { if (__result == null) { if (__instance.pawn.IsPrisonerOfColony && __instance.pawn == getter) { - return __instance.CurrentFoodRestriction; + return __instance.CurrentFoodPolicy; } } return __result; diff --git a/Source/HarmonyPatches/Patches_GUI/GUI_Bill/Patch_RestrictBillToPrisoner.cs b/Source/HarmonyPatches/Patches_GUI/GUI_Bill/Patch_RestrictBillToPrisoner.cs index eb99dd75..ea6785a3 100644 --- a/Source/HarmonyPatches/Patches_GUI/GUI_Bill/Patch_RestrictBillToPrisoner.cs +++ b/Source/HarmonyPatches/Patches_GUI/GUI_Bill/Patch_RestrictBillToPrisoner.cs @@ -50,7 +50,7 @@ static IEnumerable Transpiler_DoWindowContent(IEnumerable Transpiler_DoWindowContent(IEnumerable - /// This patch is adding scroll bar to prisoner tab to ensure all interaction modes are visible - /// - [HarmonyPatch(typeof(ITab_Pawn_Visitor))] - [HarmonyPatch("FillTab")] - [HarmonyPatch(new Type[0])] - internal class Patch_AddScrollToPrisonerTab - { - private static IEnumerable Transpiler(ILGenerator gen, IEnumerable instr) - { - #region fragment>>GUI.BeginGroup(position); - OpCode[] opCodes1 = - { - OpCodes.Call, - OpCodes.Stloc_S, - OpCodes.Ldloc_S, - OpCodes.Call, - }; - String[] operands1 = - { - "UnityEngine.Rect ContractedBy(UnityEngine.Rect, Single)", - "UnityEngine.Rect (8)", - "UnityEngine.Rect (8)", - "Void BeginGroup(UnityEngine.Rect)", - }; - int step1 = 0; - #endregion - - #region fragment>>GUI.EndGroup(); - OpCode[] opCodes2 = - { - OpCodes.Constrained, - OpCodes.Callvirt, - OpCodes.Endfinally, - OpCodes.Call, - }; - String[] operands2 = - { - "System.Collections.Generic.List`1+Enumerator[RimWorld.PrisonerInteractionModeDef]", - "Void Dispose()", - "", - "Void EndGroup()", - }; - int step2 = 0; - #endregion - - #region fragment>>Rect position = rect6.ContractedBy(10f); - OpCode[] opCodes3 = - { - OpCodes.Ldc_R4, - OpCodes.Call, - OpCodes.Stloc_S, - OpCodes.Ldloc_S, - }; - String[] operands3 = - { - "10", - "UnityEngine.Rect ContractedBy(UnityEngine.Rect, Single)", - "UnityEngine.Rect (8)", - "UnityEngine.Rect (8)", - }; - int step3 = 0; - var rect = HPatcher.FindOperandAfter(opCodes3, operands3, instr); - #endregion - foreach (var ci in instr) - { - - // end scroll - if (HPatcher.IsFragment(opCodes2, operands2, ci, ref step2, "AddScrollToPrisonerTab2")) - { - var instruction = new CodeInstruction(OpCodes.Call, typeof(Patch_AddScrollToPrisonerTab).GetMethod(nameof(StopScrolling))); - instruction.labels.AddRange(ci.labels); - ci.labels.Clear(); - yield return instruction; - } - -/* // resize - if (HPatcher.IsFragment(opCodes3, operands3, ci, ref step3, "AddScrollToPrisonerTab3")) - { - - }*/ - - yield return ci; - - // begin scroll - if (HPatcher.IsFragment(opCodes1, operands1, ci, ref step1, "AddScrollToPrisonerTab1")) - { - yield return new CodeInstruction(OpCodes.Ldloc_S, rect); - yield return new CodeInstruction(OpCodes.Call, typeof(Patch_AddScrollToPrisonerTab).GetMethod(nameof(StartScrolling))); - yield return new CodeInstruction(OpCodes.Stloc_S, rect); - } - } - } - - public static Vector2 position; - public static Rect StartScrolling(Rect rect) - { - Rect viewRect = new Rect(0, 0, rect.width - 16, rect.height + 56); - Rect outRect = new Rect(0, 0, rect.width, rect.height); - Widgets.BeginScrollView(outRect, ref position, viewRect, true); - return viewRect; - } - - public static void StopScrolling() - { - Widgets.EndScrollView(); - } - } -} diff --git a/Source/HarmonyPatches/Patches_InteractionMode/BloodFeedInteractionPatches.cs b/Source/HarmonyPatches/Patches_InteractionMode/BloodFeedInteractionPatches.cs deleted file mode 100644 index 3ba84b3d..00000000 --- a/Source/HarmonyPatches/Patches_InteractionMode/BloodFeedInteractionPatches.cs +++ /dev/null @@ -1,60 +0,0 @@ -using HarmonyLib; -using PrisonLabor.Core; -using RimWorld; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection.Emit; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace PrisonLabor.HarmonyPatches.Patches_InteractionMode -{ - [HarmonyPatch()] - class BloodFeedInteractionPatches - { - [HarmonyPatch(typeof(TargetingParameters), nameof(TargetingParameters.ForBloodfeeding))] - [HarmonyPostfix] - public static TargetingParameters TargetingParametersPostFix(TargetingParameters __result, Pawn pawn) - { - __result.validator = delegate (TargetInfo targ) - { - if (!(targ.Thing is Pawn pawn2)) - { - return false; - } - return (pawn2.IsPrisonerOfColony && pawn2.guest.PrisonerIsSecure && PrisonLaborUtility.BloodFeedInteractionMode(pawn2.guest.interactionMode)); - }; - - return __result; - } - - [HarmonyPatch(typeof(JobGiver_GetHemogen), "CanFeedOnPrisoner")] - [HarmonyTranspiler] - static IEnumerable GuestTrackerTickTranspiler(ILGenerator gen, MethodBase mBase, IEnumerable instructions) - { - OpCode[] opCodesToFind = - { - OpCodes.Ldfld, - OpCodes.Ldsfld, - OpCodes.Bne_Un_S - }; - string[] operandsToFind = - { - "RimWorld.PrisonerInteractionModeDef interactionMode", - "RimWorld.PrisonerInteractionModeDef Bloodfeed", - "System.Reflection.Emit.Label" - }; - var label = (Label)HPatcher.FindOperandAfter(opCodesToFind, operandsToFind, instructions); - CodeInstruction[] replacment = - { - new CodeInstruction(OpCodes.Ldfld, AccessTools.Field(typeof(Pawn_GuestTracker), nameof(Pawn_GuestTracker.interactionMode))), - new CodeInstruction(OpCodes.Call, typeof(PrisonLaborUtility).GetMethod("BloodFeedInteractionMode")), - new CodeInstruction(OpCodes.Brfalse_S, label) - }; - return HPatcher.ReplaceFragment(opCodesToFind, operandsToFind, instructions, replacment, nameof(JobGiver_GetHemogen) + ": CanFeedOnPrisoner patch"); - } - } -} diff --git a/Source/HarmonyPatches/Patches_InteractionMode/HemogenFarmInteractionPatch.cs b/Source/HarmonyPatches/Patches_InteractionMode/HemogenFarmInteractionPatch.cs deleted file mode 100644 index 50532acc..00000000 --- a/Source/HarmonyPatches/Patches_InteractionMode/HemogenFarmInteractionPatch.cs +++ /dev/null @@ -1,73 +0,0 @@ -using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection.Emit; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using PrisonLabor.Core; - -namespace PrisonLabor.HarmonyPatches.Patches_InteractionMode -{ - [HarmonyPatch()] - class HemogenFarmInteractionPatch - { - - [HarmonyPatch(typeof(Pawn_GuestTracker), "GuestTrackerTick")] - [HarmonyTranspiler] - static IEnumerable GuestTrackerTickTranspiler(ILGenerator gen, MethodBase mBase, IEnumerable instructions) - { - OpCode[] opCodesToFind = - { - OpCodes.Ldfld, - OpCodes.Ldsfld, - OpCodes.Bne_Un - }; - string[] operandsToFind = - { - "RimWorld.PrisonerInteractionModeDef interactionMode", - "RimWorld.PrisonerInteractionModeDef HemogenFarm", - "System.Reflection.Emit.Label" - }; - var label = (Label)HPatcher.FindOperandAfter(opCodesToFind, operandsToFind, instructions); - CodeInstruction[] replacment = - { - new CodeInstruction(OpCodes.Ldfld, AccessTools.Field(typeof(Pawn_GuestTracker), nameof(Pawn_GuestTracker.interactionMode))), - new CodeInstruction(OpCodes.Call, typeof(PrisonLaborUtility).GetMethod("HemogenFarmInteractionMode")), - new CodeInstruction(OpCodes.Brfalse_S, label) - }; - return HPatcher.ReplaceFragment(opCodesToFind, operandsToFind, instructions, replacment, nameof(Pawn_GuestTracker) + ": GuestTrackerTick patch"); - } - - [HarmonyPatch(typeof(Alert_AwaitingMedicalOperation), "get_AwaitingMedicalOperation")] - [HarmonyTranspiler] - static IEnumerable Alert_AwaitingMedicalOperationTranspiler(ILGenerator gen, MethodBase mBase, IEnumerable instructions) - { - - OpCode[] opCodesToFind = - { - OpCodes.Ldfld, - OpCodes.Ldsfld, - OpCodes.Beq_S - }; - string[] operandsToFind = - { - "RimWorld.PrisonerInteractionModeDef interactionMode", - "RimWorld.PrisonerInteractionModeDef HemogenFarm", - "System.Reflection.Emit.Label" - }; - var label = (Label)HPatcher.FindOperandAfter(opCodesToFind, operandsToFind, instructions); - CodeInstruction[] replacment = - { - new CodeInstruction(OpCodes.Ldfld, AccessTools.Field(typeof(Pawn_GuestTracker), nameof(Pawn_GuestTracker.interactionMode))), - new CodeInstruction(OpCodes.Call, typeof(PrisonLaborUtility).GetMethod("HemogenFarmInteractionMode")), - new CodeInstruction(OpCodes.Brtrue_S, label) - }; - - return HPatcher.ReplaceFragment(opCodesToFind, operandsToFind, instructions, replacment, nameof(Alert_AwaitingMedicalOperation) + ": get_AwaitingMedicalOperation patch"); ; - } - - } -} diff --git a/Source/HarmonyPatches/Patches_InteractionMode/Patch_DefaultInteractionMode.cs b/Source/HarmonyPatches/Patches_InteractionMode/Patch_DefaultInteractionMode.cs index 84884d20..19e1f1f1 100644 --- a/Source/HarmonyPatches/Patches_InteractionMode/Patch_DefaultInteractionMode.cs +++ b/Source/HarmonyPatches/Patches_InteractionMode/Patch_DefaultInteractionMode.cs @@ -7,24 +7,28 @@ using Verse; using PrisonLabor.Core.Meta; using PrisonLabor.Constants; +using PrisonLabor.Core; namespace PrisonLabor.HarmonyPatches.Patches_InteractionMode { - [HarmonyPatch(typeof(Pawn_GuestTracker))] - [HarmonyPatch("SetGuestStatus")] - public class Patch_DefaultInteractionMode + [HarmonyPatch(typeof(Pawn_GuestTracker))] + [HarmonyPatch("SetGuestStatus")] + public class Patch_DefaultInteractionMode + { + private static void Postfix(Pawn_GuestTracker __instance, Faction newHost, GuestStatus guestStatus) { - private static void Postfix(Pawn_GuestTracker __instance, Faction newHost, GuestStatus guestStatus) + if (guestStatus == GuestStatus.Prisoner && newHost == Faction.OfPlayer) + { + __instance.ToggleNonExclusiveInteraction(PL_DefOf.PrisonLabor_workOption, PrisonLaborPrefs.EnableWorkByDefault); + Pawn prisoner = Traverse.Create(__instance).Field("pawn").GetValue(); + PrisonerInteractionModeDef defaultInteractionDef = DefDatabase.GetNamed(PrisonLaborPrefs.DefaultInteractionMode); + PrisonerInteractionModeDef modeToSet = prisoner.CanUsePrisonerInteraction(defaultInteractionDef) ? defaultInteractionDef : PrisonerInteractionModeDefOf.MaintainOnly; + __instance.SetExclusiveInteraction(modeToSet); + if (__instance.ExclusiveInteractionMode == PrisonerInteractionModeDefOf.Convert) { - if (guestStatus == GuestStatus.Prisoner && newHost == Faction.OfPlayer) - { - __instance.interactionMode = DefDatabase.GetNamed(PrisonLaborPrefs.DefaultInteractionMode); - if(__instance.interactionMode == PL_DefOf.PrisonLabor_workAndConvertOption - || __instance.interactionMode == PrisonerInteractionModeDefOf.Convert) - { - __instance.ideoForConversion = Faction.OfPlayer.ideos.PrimaryIdeo; - } - } + __instance.ideoForConversion = Faction.OfPlayer.ideos.PrimaryIdeo; } + } } + } } diff --git a/Source/HarmonyPatches/Patches_InteractionMode/Patch_VisitorTab_TabDraw.cs b/Source/HarmonyPatches/Patches_InteractionMode/Patch_VisitorTab_TabDraw.cs deleted file mode 100644 index 2ef6b201..00000000 --- a/Source/HarmonyPatches/Patches_InteractionMode/Patch_VisitorTab_TabDraw.cs +++ /dev/null @@ -1,104 +0,0 @@ -using HarmonyLib; -using PrisonLabor.Constants; -using RimWorld; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Reflection.Emit; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace PrisonLabor.HarmonyPatches.Patches_InteractionMode -{ - [HarmonyPatch(typeof(ITab_Pawn_Visitor))] - class Patch_VisitorTab_TabDraw - { - [HarmonyPatch("FillTab")] - [HarmonyTranspiler] - static IEnumerable FillTabTranspiler(ILGenerator gen, MethodBase mBase, IEnumerable instructions) - { - OpCode[] opCodesToFind = - { - OpCodes.Call, - OpCodes.Ldfld, - OpCodes.Ldfld, - OpCodes.Ldsfld, - OpCodes.Bne_Un - }; - string[] operandsToFind = - { - "Verse.Pawn get_SelPawn()", - "RimWorld.Pawn_GuestTracker guest", - "RimWorld.PrisonerInteractionModeDef interactionMode", - "RimWorld.PrisonerInteractionModeDef Convert", - "System.Reflection.Emit.Label" - }; - - OpCode[] opCodesToReplace = - { - OpCodes.Call, - OpCodes.Ldfld, - OpCodes.Ldfld, - OpCodes.Ldsfld, - OpCodes.Bne_Un - }; - string[] operandsToReplace = - { - "Verse.Pawn get_SelPawn()", - "RimWorld.Pawn_GuestTracker guest", - "RimWorld.PrisonerInteractionModeDef interactionMode", - "RimWorld.PrisonerInteractionModeDef Convert", - "System.Reflection.Emit.Label" - }; - - var label = (Label)HPatcher.FindOperandAfter(opCodesToFind, operandsToFind, instructions); - CodeInstruction[] replacment = - { - new CodeInstruction(OpCodes.Call, typeof(Patch_VisitorTab_TabDraw).GetMethod(nameof(ShouldDisplayConvertIco))), - new CodeInstruction(OpCodes.Brfalse, label) - }; - return HPatcher.ReplaceFragment(opCodesToReplace, operandsToReplace, instructions, replacment, nameof(ITab_Pawn_Visitor) + ": patch display ideo ico"); - } - - [HarmonyPatch("InteractionModeChanged")] - [HarmonyPostfix] - static void PostfixInteractionModeChanged(ITab_Pawn_Visitor __instance, PrisonerInteractionModeDef oldMode, PrisonerInteractionModeDef newMode) - { - Pawn p = Traverse.Create(__instance).Property("SelPawn").GetValue(); - if (newMode == PL_DefOf.PrisonLabor_workAndConvertOption && p.guest.ideoForConversion == null) - { - p.guest.ideoForConversion = Faction.OfPlayer.ideos.PrimaryIdeo; - } - - if (ModsConfig.BiotechActive) - { - Bill bill = p.BillStack?.Bills?.FirstOrDefault((Bill x) => x.recipe == RecipeDefOf.ExtractHemogenPack); - if (newMode == PL_DefOf.PrisonLabor_workAndHemogenFarmOption) - { - if (bill == null) - { - HealthCardUtility.CreateSurgeryBill(p, RecipeDefOf.ExtractHemogenPack, null); - } - } - else if (oldMode == PL_DefOf.PrisonLabor_workAndHemogenFarmOption && bill != null) - { - p.BillStack.Bills.Remove(bill); - } - } - - } - - public static bool ShouldDisplayConvertIco(ITab_Pawn_Visitor tab) - { - Pawn p = Traverse.Create(tab).Property("SelPawn").GetValue(); - return p.guest.interactionMode == PrisonerInteractionModeDefOf.Convert || p.guest.interactionMode == PL_DefOf.PrisonLabor_workAndConvertOption; - } - - public static bool IsConvert(PrisonerInteractionModeDef interaction) - { - return interaction == PrisonerInteractionModeDefOf.Convert || interaction == PL_DefOf.PrisonLabor_workAndConvertOption; - } - } -} diff --git a/Source/HarmonyPatches/Patches_Work/Patch_CarryToBuilding.cs b/Source/HarmonyPatches/Patches_Work/Patch_CarryToBuilding.cs index 83700353..49b89b40 100644 --- a/Source/HarmonyPatches/Patches_Work/Patch_CarryToBuilding.cs +++ b/Source/HarmonyPatches/Patches_Work/Patch_CarryToBuilding.cs @@ -6,20 +6,39 @@ using System.Text; using System.Threading.Tasks; using Verse; +using Verse.AI; namespace PrisonLabor.HarmonyPatches.Patches_Work { - [HarmonyPatch(typeof(WorkGiver_CarryToBuilding), "FindBuildingFor")] - public class Patch_CarryToBuilding + [HarmonyPatch(typeof(WorkGiver_CarryToBuilding))] + public class Patch_CarryToBuilding + { + [HarmonyPostfix] + [HarmonyPatch("HasJobOnThing")] + static bool HasJobOnThingPostfix(bool __result, Pawn pawn, Thing t, bool forced) { - static Building Postfix(Building __result, Pawn pawn, Pawn traveller, bool forced) - { - if (traveller.IsPrisonerOfColony && pawn.IsPrisonerOfColony && traveller == pawn) - { - return null; - } - return __result; - } + if (shouldChangeReturnValue(__result, pawn, t)) + { + return false; + } + return __result; } + + [HarmonyPostfix] + [HarmonyPatch("JobOnThing")] + static Job JobOnThingPostfix(Job __result, Pawn pawn, Thing t, bool forced) + { + if (shouldChangeReturnValue(__result != null, pawn, t)) + { + return null; + } + return __result; + } + + private static bool shouldChangeReturnValue(bool result, Pawn pawn, Thing t) + { + return result && pawn.IsPrisonerOfColony && t is Building_Enterable building && building.SelectedPawn == pawn; + } + } } diff --git a/Source/HarmonyPatches/Patches_WorkSettings/Patch_TimetableFix.cs b/Source/HarmonyPatches/Patches_WorkSettings/Patch_TimetableFix.cs index 3228a668..6b5d7458 100644 --- a/Source/HarmonyPatches/Patches_WorkSettings/Patch_TimetableFix.cs +++ b/Source/HarmonyPatches/Patches_WorkSettings/Patch_TimetableFix.cs @@ -9,44 +9,18 @@ namespace PrisonLabor.HarmonyPatches.Patches_WorkSettings { - [HarmonyPatch(typeof(Pawn_TimetableTracker))] - [HarmonyPatch("get_CurrentAssignment")] - internal class Patch_TimetableFix + [HarmonyPatch(typeof(Pawn_TimetableTracker))] + [HarmonyPatch("get_CurrentAssignment")] + internal class Patch_TimetableFix + { + static TimeAssignmentDef Postfix(TimeAssignmentDef __result, Pawn_TimetableTracker __instance) { - private static IEnumerable Transpiler(ILGenerator gen, IEnumerable instr) - { - var pawn = HPatcher.FindOperandAfter(new[] { OpCodes.Ldfld }, new[] { "Verse.Pawn pawn" }, instr); - var label = HPatcher.FindOperandAfter(new[] { OpCodes.Brtrue_S }, new[] { "System.Reflection.Emit.Label" }, instr); - - // if (!pawn.IsColonist) - OpCode[] opCodes = - { - OpCodes.Ldarg_0, - OpCodes.Ldfld, - OpCodes.Callvirt, - OpCodes.Brtrue_S, - }; - string[] operands = - { - "", - "Verse.Pawn pawn", - "Boolean get_IsColonist()", - "System.Reflection.Emit.Label", - }; - int step = 0; - - foreach (var ci in instr) - { - yield return ci; - - if(HPatcher.IsFragment(opCodes, operands, ci, ref step, "Patch_TimetableFix")) - { - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, pawn); - yield return new CodeInstruction(OpCodes.Callvirt, typeof(Pawn).GetMethod("get_IsPrisonerOfColony")); - yield return new CodeInstruction(OpCodes.Brtrue_S, label); - } - } - } + Pawn pawn = Traverse.Create(__instance).Field("pawn").GetValue(); + if (pawn.IsPrisonerOfColony) + { + return __instance.times[GenLocalDate.HourOfDay(pawn)]; + } + return __result; } + } } diff --git a/Source/Organizer/NewsFeed.xml b/Source/Organizer/NewsFeed.xml index 9264a7b6..f879e3a3 100644 --- a/Source/Organizer/NewsFeed.xml +++ b/Source/Organizer/NewsFeed.xml @@ -4,6 +4,18 @@ + + Prison Labor v1.5.0 + + [-] Update for Rimworld 1.5 + [-] Almost all of mod's prisoner interactions were removed + [-] Mod option to enable "Force to work" interaction by default on imprison + [-] May not be compatible with save from 1.4 + [-] Future update will be only for Rimworld 1.5+ version + [gap] + Lots of code was removed/change during migration to 1.5. If bug appear, please share the whole game log! + + Prison Labor v1.4.9 diff --git a/Source/PrisonLabor.csproj b/Source/PrisonLabor.csproj index 8fefef98..f76ed053 100644 --- a/Source/PrisonLabor.csproj +++ b/Source/PrisonLabor.csproj @@ -19,7 +19,7 @@ false none false - ..\1.4\Assemblies\ + ..\1.5\Assemblies\ DEBUG;TRACE prompt 4 @@ -35,13 +35,12 @@ false - - packages\Lib.Harmony.2.2.2\lib\net472\0Harmony.dll + + packages\Lib.Harmony.2.3.3\lib\net472\0Harmony.dll False - - packages\RimWorld.MultiplayerAPI.0.3.0\lib\net472\0MultiplayerAPI.dll - False + + packages\RimWorld.MultiplayerAPI.0.5.0\lib\net472\0MultiplayerAPI.dll False @@ -88,7 +87,6 @@ - @@ -119,6 +117,7 @@ + @@ -176,10 +175,7 @@ - - - @@ -190,7 +186,6 @@ - @@ -267,49 +262,49 @@ - + Patches\AddPrisonerComp.xml - + Patches\Designators.xml - + Patches\SetJailorJobsPatch.xml - + Defs\ConceptDef.xml - + Defs\Hediffs.xml - + Defs\Incidents.xml - + Defs\JobDef.xml - + Defs\MainButton.xml - + Defs\Needs.xml - + Defs\PrisonerInteractionModeDef.xml - + Defs\PrisonerJoyGivers.xml - + Defs\ThinkTreeDef.xml - + Defs\ThoughtsDef.xml - + Defs\WorkGiverDef.xml - + Defs\WorkTypes.xml @@ -319,12 +314,6 @@ Organizer\changelog.txt - - Ideology\Defs\PrisonersInteractionMode.xml - - - Ideology\Patches\JailorForSlavesPatch.xml - Language\Keys.xml Designer diff --git a/Source/packages.config b/Source/packages.config index be74a19b..a40d0a13 100644 --- a/Source/packages.config +++ b/Source/packages.config @@ -1,6 +1,6 @@  - + - + \ No newline at end of file diff --git a/changelog.txt b/changelog.txt index 538bdd7e..42289d2e 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,10 @@ Changelog: +1.5.0 +- Update for Rimworld 1.5 +- Almost all of mod's prisoner interactions were removed +- Mod option to enable "Force to work" interaction by default on imprison +- May not be compatible with save from 1.4 +- Future update will be only for Rimworld 1.5+ version 1.4.9 - Unfortunately interrogation requires Ideology DLC - Interrogation Chair should load with Ideology DLC. If already placed in your game, one time error may occur.

    - v1.4.9 + v1.5.0