Skip to content

Commit

Permalink
1.4.8 (#266)
Browse files Browse the repository at this point in the history
* mid work commit

* Release candiadate

* cosmetic changes

* fixing wardens

* modify hediffs

* last fixes

* new option feature
  • Loading branch information
Hazzer authored Mar 16, 2024
1 parent bd2a1a5 commit 758abc5
Show file tree
Hide file tree
Showing 62 changed files with 2,853 additions and 1,472 deletions.
Binary file modified 1.4/Assemblies/PrisonLabor.dll
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
5 changes: 4 additions & 1 deletion 1.4/Defs/Hediffs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@
<defName>PrisonLabor_PrisonerChains</defName>
<description>This pawn has prisoners chains. Note: it is default Vanilla mechanics, but in hediff state</description>
<label>prisoners chains</label>
<isBad>false</isBad>
<stages>
<li>
<label>not active</label>
<becomeVisible>false</becomeVisible>
</li>
<li>
<label>unchained totaly unchained</label>
<label>unchained totaly</label>
<becomeVisible>false</becomeVisible>
<minSeverity>0.01</minSeverity>
</li>
Expand Down Expand Up @@ -57,6 +58,7 @@
<defName>PrisonLabor_RemovedHandscuffs</defName>
<description>Prisoner has removed handscuffs</description>
<label>Removed Handscuff</label>
<isBad>false</isBad>
<stages>
<li>
<label>not active</label>
Expand All @@ -73,6 +75,7 @@
<defName>PrisonLabor_RemovedLegscuffs</defName>
<description>Prisoner has removed legscuffs</description>
<label>Removed legscuffs</label>
<isBad>false</isBad>
<stages>
<li>
<label>not active</label>
Expand Down
67 changes: 67 additions & 0 deletions 1.4/Defs/Interrogation/InterrogationDefs.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<PrisonLabor.Core.Interrogation.InterrogationQuestGenDef>
<defName>PL_GenQuest</defName>
<questScriptDefs>
<li>OpportunitySite_ItemStash</li>
<li>OpportunitySite_WorkSite</li>
</questScriptDefs>
</PrisonLabor.Core.Interrogation.InterrogationQuestGenDef>
<ThingDef ParentName="ArtableFurnitureBase">
<defName>PL_InterrogationChair</defName>
<label>interrogation chair</label>
<description>Not comfortable chair used to interrogate prisoners.</description>
<graphicData>
<texPath>Things/Building/Furniture/DiningChair</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>(1,1)</drawSize>
<damageData>
<rectN>(0.25,0.234375,0.5,0.28125)</rectN>
<rectS>(0.25,0.234375,0.5,0.28125)</rectS>
<rectE>(0.28125,0.25,0.453125,0.25)</rectE>
<rectW>(0.28125,0.25,0.453125,0.25)</rectW>
</damageData>
<shadowData>
<volume>(0.23, 0.26, 0.23)</volume>
</shadowData>
</graphicData>
<altitudeLayer>Building</altitudeLayer>
<statBases>
<MaxHitPoints>100</MaxHitPoints>
<WorkToBuild>8000</WorkToBuild>
<Mass>5</Mass>
<Flammability>1.0</Flammability>
<Beauty>1</Beauty>
<Comfort>0.30</Comfort>
<StyleDominance MayRequire="Ludeon.RimWorld.Ideology">5</StyleDominance>
</statBases>
<socialPropernessMatters>true</socialPropernessMatters>
<stuffCategories>
<li>Metallic</li>
<li>Woody</li>
</stuffCategories>
<costStuffCount>45</costStuffCount>
<pathCost>30</pathCost>
<designationHotKey>Misc7</designationHotKey>
<fillPercent>0.35</fillPercent>
<defaultPlacingRot>South</defaultPlacingRot>
<uiOrder>2410</uiOrder>
<building>
<isSittable>true</isSittable>
<paintable>true</paintable>
</building>
<constructionSkillPrerequisite>4</constructionSkillPrerequisite>
<researchPrerequisites>
<li>ComplexFurniture</li>
</researchPrerequisites>
<comps>
<li Class="CompProperties_Styleable"/>
<li Class="PrisonLabor.Core.Interrogation.CompPropertiesInterrogation"/>
</comps>
</ThingDef>
<RoomRoleDef>
<defName>PL_InterrogationRoom</defName>
<label>interrogation room</label>
<workerClass>PrisonLabor.Core.Interrogation.RoomRoleWorker_InterrogationRoom</workerClass>
</RoomRoleDef>
</Defs>
36 changes: 36 additions & 0 deletions 1.4/Defs/Interrogation/InterrogationInteractionsDefs.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<InteractionDef>
<defName>PL_InterrogateInteraction</defName>
<label>interrogate</label>
<workerClass>InteractionWorker</workerClass>
<ignoreTimeSinceLastInteraction>True</ignoreTimeSinceLastInteraction>
<symbol>UI/Icons/Rituals/Trial</symbol>
<logRulesInitiator>
<rulesStrings>
<li>r_logentry->[INITIATOR_nameDef] asked [RECIPIENT_nameDef] [askPart].</li>
<li>r_logentry->[INITIATOR_nameDef] ordered [RECIPIENT_nameDef] to told about [askPart].</li>
<li>askPart->where is the loot</li>
<li>askPart->why is Gamora</li>
<li>askPart->when finally starts talking</li>
<li>askPart->where is their base</li>
</rulesStrings>
</logRulesInitiator>
</InteractionDef>
<InteractionDef>
<defName>PL_BeIntrrogatedInteraction</defName>
<label>being interrogated</label>
<workerClass>InteractionWorker</workerClass>
<ignoreTimeSinceLastInteraction>True</ignoreTimeSinceLastInteraction>
<symbol>UI/Icons/Rituals/TrialDefend</symbol>
<logRulesInitiator>
<rulesStrings>
<li>r_logentry->[INITIATOR_nameDef] called for mercy.</li>
<li>r_logentry->[INITIATOR_nameDef] begged to spare the face.</li>
<li>r_logentry->[INITIATOR_nameDef] kept silence.</li>
<li>r_logentry->[INITIATOR_nameDef] has no idea.</li>
<li>r_logentry->[INITIATOR_nameDef] told everything.</li>
</rulesStrings>
</logRulesInitiator>
</InteractionDef>
</Defs>
160 changes: 160 additions & 0 deletions 1.4/Defs/Interrogation/InterrogationPatterns.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<PreceptDef>
<defName>PL_Interrogation</defName>
<label>prisoner interrogation</label>
<description>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.</description>
<ritualPatternBase>PL_Interrogation</ritualPatternBase>
<iconPath>Things/Mote/SpeechSymbols/Speech</iconPath>
<issue>Ritual</issue>
<preceptClass>Precept_Ritual</preceptClass>
<visible>false</visible>
<classic>true</classic>
<countsTowardsPreceptLimit>false</countsTowardsPreceptLimit>
<selectionWeight>1.0</selectionWeight>
<ignoreNameUniqueness>true</ignoreNameUniqueness>
<usesIdeoVisualEffects>false</usesIdeoVisualEffects>
<mergeRitualGizmosFromAllIdeos>true</mergeRitualGizmosFromAllIdeos>
<useRepeatPenalty>false</useRepeatPenalty>
<showRitualFloatMenuOption>false</showRitualFloatMenuOption>
</PreceptDef>
<RitualPatternDef>
<defName>PL_Interrogation</defName>
<ritualOnlyForIdeoMembers>false</ritualOnlyForIdeoMembers>
<ritualBehavior>PL_Interrogation</ritualBehavior>
<ritualTargetFilter>SelectedThing</ritualTargetFilter>
<ritualObligationTargetFilter>PL_InterrogationRoom</ritualObligationTargetFilter>
<ritualOutcomeEffect>PL_Interrogation</ritualOutcomeEffect>
<playsIdeoMusic>false</playsIdeoMusic>
<alwaysStartAnytime>true</alwaysStartAnytime>
</RitualPatternDef>
<RitualOutcomeEffectDef>
<defName>PL_Interrogation</defName>
<workerClass>PrisonLabor.Core.Interrogation.Ritual.RitualOutcomeEffectWorker_Interrogation</workerClass>
<warnOnLowQuality>false</warnOnLowQuality>
<givesDevelopmentPoints>false</givesDevelopmentPoints>
<comps>
<li Class="RitualOutcomeComp_Indoors"/>
</comps>
</RitualOutcomeEffectDef>
<RitualObligationTargetFilterDef>
<defName>PL_InterrogationRoom</defName>
<workerClass>PrisonLabor.Core.Interrogation.Ritual.RitualObligationTargetWorker_Interrogation</workerClass>
</RitualObligationTargetFilterDef>
<RitualBehaviorDef>
<defName>PL_Interrogation</defName>
<workerClass>PrisonLabor.Core.Interrogation.Ritual.RitualBehaviorWorker_Interrogation</workerClass>
<durationTicks>5000</durationTicks>
<spectatorFilter Class="PrisonLabor.Core.Interrogation.Ritual.RitualSpectatorFilter_None">
<description>Spectators are not needed</description>
</spectatorFilter>
<roles>
<li Class="RitualRoleWarden">
<label>warden</label>
<missingDesc>an warden</missingDesc>
<id>warden</id>
<maxCount>1</maxCount>
<required>True</required>
<countsAsParticipant>False</countsAsParticipant>
<allowChild>false</allowChild>
<mustBeAbleToReachTarget>True</mustBeAbleToReachTarget>
</li>
<li Class="PrisonLabor.Core.Interrogation.Ritual.NonColonyPrisonerRole">
<label>prisoner</label>
<missingDesc>a prisoner</missingDesc>
<id>prisoner</id>
<maxCount>1</maxCount>
<required>True</required>
<countsAsParticipant>False</countsAsParticipant>
<ignoreBleeding>false</ignoreBleeding>
</li>
</roles>
<stages>
<li Class="RitualStage_InteractWithPrisoner">
<spectatorsRequired>false</spectatorsRequired>
<failTriggers>
<li Class="StageFailTrigger_TargetPawnUnreachable">
<takerId>warden</takerId>
<takeeId>prisoner</takeeId>
<desc>Convicted prisoner is not reachable.</desc>
</li>
<li Class="StageFailTrigger_PawnAsleep">
<desc>escort asleep</desc>
<pawnId>warden</pawnId>
</li>
</failTriggers>
<endTriggers>
<li Class="StageEndTrigger_RolesArrived">
<roleIds>
<li>prisoner</li>
</roleIds>
</li>
</endTriggers>
<roleBehaviors>
<li>
<roleId>warden</roleId>
<dutyDef>DeliverPawnToCell</dutyDef>
<customPositions>
<li Class="PrisonLabor.Core.Interrogation.Ritual.RitualPosition_ThingCenter"/>
</customPositions>
</li>
<li>
<roleId>prisoner</roleId>
<dutyDef>Idle</dutyDef>
</li>
</roleBehaviors>
</li>
<li>
<spectatorsRequired>false</spectatorsRequired>
<endTriggers>
<li Class="StageEndTrigger_DurationPercentage">
<percentage>1</percentage>
</li>
</endTriggers>
<roleBehaviors>
<li>
<roleId>warden</roleId>
<dutyDef>PL_Interrogate</dutyDef>
<customPositions>
<li Class="RitualPosition_InFrontThingCenter">
<highlight>false</highlight>
</li>
</customPositions>
</li>
<li>
<roleId>prisoner</roleId>
<dutyDef>StandOnCell</dutyDef>
</li>
</roleBehaviors>
</li>
</stages>
</RitualBehaviorDef>
<DutyDef>
<defName>PL_Interrogate</defName>
<hook>HighPriority</hook>
<socialModeMax>Off</socialModeMax>
<ritualSpectateTarget>true</ritualSpectateTarget>
<thinkNode Class="ThinkNode_Priority">
<subNodes>
<li Class="ThinkNode_ConditionalRandom">
<chance>0.6</chance>
<subNodes>
<li Class="JobGiver_WanderInGatheringArea">
<ticksBetweenWandersRange>50~250</ticksBetweenWandersRange>
</li>
</subNodes>
</li>
<li Class="PrisonLabor.Core.Interrogation.Ritual.JobGiver_Interrogate">
<soundDefMale>Speech_Ideoligious_Male</soundDefMale>
<soundDefFemale>Speech_Ideoligious_Female</soundDefFemale>
</li>
</subNodes>
</thinkNode>
</DutyDef>
<JobDef>
<defName>PL_Interrogate</defName>
<driverClass>PrisonLabor.Core.Interrogation.Ritual.JobDriver_Interrogate</driverClass>
<reportString>talking.</reportString>
<casualInterruptible>false</casualInterruptible>
</JobDef>
</Defs>
66 changes: 66 additions & 0 deletions 1.4/Defs/Interrogation/InterrogationThoughtDefs.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThoughtDef>
<defName>PL_BitMe</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>10</durationDays>
<stackLimit>300</stackLimit>
<stackLimitForSameOtherPawn>1</stackLimitForSameOtherPawn>
<developmentalStageFilter>Baby, Child, Adult</developmentalStageFilter>
<stages>
<li>
<label>bit me</label>
<description>this fricking lunatic bit me during interrogation</description>
<baseOpinionOffset>-7</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>PL_KindInterrogation</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>10</durationDays>
<stackLimit>300</stackLimit>
<stackLimitForSameOtherPawn>1</stackLimitForSameOtherPawn>
<developmentalStageFilter>Baby, Child, Adult</developmentalStageFilter>
<stages>
<li>
<label>kind interrogation</label>
<description>Interrogation was kind of... nice?</description>
<baseOpinionOffset>2</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>PL_Interrogated</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>10</durationDays>
<stackLimit>300</stackLimit>
<stackLimitForSameOtherPawn>1</stackLimitForSameOtherPawn>
<developmentalStageFilter>Baby, Child, Adult</developmentalStageFilter>
<stages>
<li>
<label>interrogation</label>
<baseOpinionOffset>-7</baseOpinionOffset>
</li>
</stages>
</ThoughtDef>
<ThoughtDef>
<defName>PL_BrutallyInterrogated</defName>
<thoughtClass>Thought_MemorySocial</thoughtClass>
<durationDays>10</durationDays>
<stackLimit>300</stackLimit>
<stackLimitForSameOtherPawn>1</stackLimitForSameOtherPawn>
<developmentalStageFilter>Baby, Child, Adult</developmentalStageFilter>
<nullifyingTraits>
<li>Masochist</li>
</nullifyingTraits>
<stages>
<li>
<label>brutal interrogation</label>
<description>they beat me up during interrogation</description>
<baseOpinionOffset>-7</baseOpinionOffset>
<baseMoodEffect>-7</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
</Defs>
Loading

0 comments on commit 758abc5

Please sign in to comment.