Skip to content

Commit

Permalink
Updated to Rimworld 1.1 and Harmony 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Heremeus committed Mar 4, 2020
1 parent 170a9b6 commit 85df273
Show file tree
Hide file tree
Showing 65 changed files with 3,444 additions and 24 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
24 changes: 23 additions & 1 deletion About/About.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
<author>Heremeus</author>
<supportedVersions>
<li>1.0</li>
<li>1.1</li>
</supportedVersions>
<packageId>Heremeus.MedicalDissection</packageId>
<description>Medical Dissection adds a dissection table to the game, allowing your doctors to train on human corpses. You can add the mod to an existing save.

Feature overview
Expand All @@ -16,6 +18,26 @@ Feature overview
- A corpse can only be dissected once (A "Allow dissected" and "Allow not dissected" filter can help you to set up your storages and butcher bills efficiently)
- Custom thoughts and tales

v2.2
v2.3
</description>
<modDependencies>
<li>
<packageId>brrainz.harmony</packageId>
<displayName>Harmony</displayName>
<steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
<downloadUrl>https://github.com/pardeike/HarmonyRimWorld/releases/latest</downloadUrl>
</li>
<li>
<packageId>UnlimitedHugs.HugsLib</packageId>
<displayName>HugsLib</displayName>
<steamWorkshopUrl>steam://url/CommunityFilePage/818773962</steamWorkshopUrl>
<downloadUrl>https://github.com/UnlimitedHugs/RimworldHugsLib/releases/latest</downloadUrl>
</li>
</modDependencies>
<loadAfter>
<li>Ludeon.RimWorld</li>
<li>Ludeon.RimWorld.Royalty</li>
<li>brrainz.harmony</li>
<li>UnlimitedHugs.HugsLib</li>
</loadAfter>
</ModMetaData>
3 changes: 2 additions & 1 deletion About/Manifest.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest>
<identifier>MedicalDissection</identifier>
<version>2.2</version>
<version>2.3</version>
<dependencies>
<li>HugsLib</li>
<li>Harmony</li>
</dependencies>
<showCrossPromotions>true</showCrossPromotions>
<manifestUri>https://raw.githubusercontent.com/Heremeus/DissectionMod/master/About/Manifest.xml</manifestUri>
Expand Down
2 changes: 1 addition & 1 deletion About/Version.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<!--overrideVersion>1.0.0</overrideVersion-->
<!-- Optional. Use this to specify the version of HugsLib you are targeting.
See https://github.com/UnlimitedHugs/RimworldHugsLib/releases for the current version of the library.-->
<requiredLibraryVersion>6.1.0</requiredLibraryVersion>
<requiredLibraryVersion>7.1.0</requiredLibraryVersion>
<!-- Optional. This is read by the build.js script for the purpose of release publishing. Not used if you don't use the script. -->
<gitHubRepository>UnlimitedHugs/RimworldHugsLibChecker</gitHubRepository>
</VersionData>
9 changes: 9 additions & 0 deletions Common/Defs/HeadiffDefs/Hediffs_Global_Misc.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<HediffDef ParentName="DiseaseBase">
<defName>DissectedHediff</defName>
<label>dissected</label>
<description>This body has been dissected.</description>
<isBad>false</isBad>
</HediffDef>
</Defs>
10 changes: 10 additions & 0 deletions Common/Defs/JobDefs/JobDefs_Work.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<JobDef>
<defName>DoDissectionBill</defName>
<driverClass>HMDissection.JobDriver_DoDissectionBill</driverClass>
<reportString>doing bill at TargetA.</reportString>
<suspendable>false</suspendable>
<allowOpportunisticPrefix>true</allowOpportunisticPrefix>
</JobDef>
</Defs>
49 changes: 49 additions & 0 deletions Common/Defs/RecipeDefs/Recipes_DissectCorpse.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- Humans -->
<RecipeDef>
<defName>DissectHumanRecipe</defName>
<label>dissect humanlike corpse</label>
<description>Dissects a humanlike corpse to improve medical skills.</description>
<jobString>Dissecting.</jobString>
<workAmount>3750</workAmount>
<workSkill>Medicine</workSkill>
<effectWorking>Surgery</effectWorking>
<soundWorking>Recipe_Surgery</soundWorking>
<ingredients>
<li>
<filter>
<categories>
<li>Corpses</li>
</categories>
</filter>
<count>1</count>
</li>
</ingredients>
<fixedIngredientFilter>
<categories>
<li>Corpses</li>
</categories>
<disallowedCategories>
<li>CorpsesMechanoid</li>
<li>CorpsesAnimal</li>
</disallowedCategories>
<specialFiltersToDisallow>
<li>AllowRotten</li>
<li>DissectedFilter</li>
</specialFiltersToDisallow>
</fixedIngredientFilter>
<defaultIngredientFilter>
<categories>
<li>CorpsesHumanlike</li>
</categories>
<specialFiltersToAllow>
<li>AllowCorpsesStranger</li>
</specialFiltersToAllow>
<specialFiltersToDisallow>
<li>AllowCorpsesColonist</li>
</specialFiltersToDisallow>
</defaultIngredientFilter>
<researchPrerequisite>DissectionResearchProj</researchPrerequisite>
</RecipeDef>
</Defs>
16 changes: 16 additions & 0 deletions Common/Defs/ResearchProjectDefs/ResearchProjects_Dissection.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ResearchProjectDef>
<defName>DissectionResearchProj</defName>
<label>Dissection</label>
<description>The dissection of corpses can improve the medical knowledge. This research unlocks the dissection table.</description>
<baseCost>300</baseCost>
<tab>DissectionResearchTab</tab>
<techLevel>Medieval</techLevel>
<researchViewX>0</researchViewX>
<researchViewY>0</researchViewY>
<tags>
<li>ClassicStart</li>
</tags>
</ResearchProjectDef>
</Defs>
8 changes: 8 additions & 0 deletions Common/Defs/ResearchProjectDefs/ResearchTabs.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- To add a research tab, make a new ResearchTabDef here and then set the <tab> field of your research project to match it -->
<ResearchTabDef>
<defName>DissectionResearchTab</defName>
<label>Dissection</label>
</ResearchTabDef>
</Defs>
22 changes: 22 additions & 0 deletions Common/Defs/SpecialThingFilterDefs/SpecialThingsFilters.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>

<Defs>
<SpecialThingFilterDef>
<defName>DissectedFilter</defName>
<label>Allow dissected corpses</label>
<description>Allows bodies that have been dissected.</description>
<parentCategory>CorpsesHumanlike</parentCategory>
<allowedByDefault>true</allowedByDefault>
<saveKey>allowDissectionDissected</saveKey>
<workerClass>HMDissection.Filters.DissectedFilter</workerClass>
</SpecialThingFilterDef>
<SpecialThingFilterDef>
<defName>NotDissectedFilter</defName>
<label>Allow not dissected corpses</label>
<description>Allows bodies that have not been dissected.</description>
<parentCategory>CorpsesHumanlike</parentCategory>
<allowedByDefault>true</allowedByDefault>
<saveKey>allowDissectionNotDissected</saveKey>
<workerClass>HMDissection.Filters.NotDissectedFilter</workerClass>
</SpecialThingFilterDef>
</Defs>
195 changes: 195 additions & 0 deletions Common/Defs/TaleDefs/TalesDoublePawn.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- ######################
Faction tales
###################### -->
<!-- Colonist tales -->
<TaleDef>
<defName>DissectedColonistWithPassionTale</defName>
<label>corpse dissected</label>
<taleClass>Tale_DoublePawn</taleClass>
<type>Volatile</type>
<firstPawnSymbol>DISSECTOR</firstPawnSymbol>
<secondPawnSymbol>CORPSE</secondPawnSymbol>
<baseInterest>7</baseInterest>
<rulePack>
<rulesStrings>
<li>tale_noun->[DISSECTOR_nameDef] dissecting [CORPSE_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef] being dissected by [DISSECTOR_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef]'s dissection</li>
<li>image->[DISSECTOR_nameFull] dissecting [CORPSE_nameFull] of [CORPSE_factionName] of [CORPSE_factionName] [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] cutting [CORPSE_nameFull]'s body open [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] holding [CORPSE_nameFull]'s dissected heart [circumstance_group]</li>
<li>circumstance_phrase->with professional efficiency</li>
<li>circumstance_phrase->with grief</li>
<li>circumstance_phrase->with mixed feelings</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is looking at [CORPSE_nameDef]'s corpse with grief.</li>
<li>desc_sentence->[CORPSE_nameDef] is cut into pieces.</li>
<li>desc_sentence->[CORPSE_nameDef] is missing some body parts.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is in the middle of a large pool of blood.</li>
</rulesStrings>
</rulePack>
</TaleDef>
<TaleDef>
<defName>DissectedColonistWithoutPassionTale</defName>
<label>corpse dissected</label>
<taleClass>Tale_DoublePawn</taleClass>
<type>Volatile</type>
<firstPawnSymbol>DISSECTOR</firstPawnSymbol>
<secondPawnSymbol>CORPSE</secondPawnSymbol>
<baseInterest>4.0</baseInterest>
<rulePack>
<rulesStrings>
<li>tale_noun->[DISSECTOR_nameDef] dissecting [CORPSE_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef] being dissected by [DISSECTOR_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef]'s dissection</li>
<li>image->[DISSECTOR_nameFull] dissecting [CORPSE_nameFull] of [CORPSE_factionName] [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] cutting [CORPSE_nameFull]'s body open [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] holding [CORPSE_nameFull]'s dissected heart [circumstance_group]</li>
<li>circumstance_phrase->after [CORPSE_pronoun] began to rot</li>
<li>circumstance_phrase->roughly and amateurishly</li>
<li>circumstance_phrase->with disgust</li>
<li>circumstance_phrase->with grief</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is looking at [CORPSE_nameDef]'s corpse with grief.</li>
<li>desc_sentence->[CORPSE_nameDef] is cut into pieces.</li>
<li>desc_sentence->[CORPSE_nameDef] is missing some body parts.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is in the middle of a large pool of blood.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is accidentally cutting off [CORPSE_nameDef]'s ear.</li>
</rulesStrings>
</rulePack>
</TaleDef>
<!-- Stranger tales -->
<TaleDef>
<defName>DissectedStrangerWithPassionTale</defName>
<label>corpse dissected</label>
<taleClass>Tale_DoublePawn</taleClass>
<type>Volatile</type>
<firstPawnSymbol>DISSECTOR</firstPawnSymbol>
<secondPawnSymbol>CORPSE</secondPawnSymbol>
<baseInterest>4.0</baseInterest>
<rulePack>
<rulesStrings>
<li>tale_noun->[DISSECTOR_nameDef] dissecting [CORPSE_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef] being dissected by [DISSECTOR_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef]'s dissection</li>
<li>image->[DISSECTOR_nameFull] dissecting [CORPSE_nameFull] of [CORPSE_factionName] [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] cutting [CORPSE_nameFull]'s body open [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] holding [CORPSE_nameFull]'s dissected heart [circumstance_group]</li>
<li>circumstance_phrase->with professional efficiency</li>
<li>circumstance_phrase->with obvious pleasure</li>
<li>desc_sentence->[CORPSE_nameDef] is cut into pieces.</li>
<li>desc_sentence->[CORPSE_nameDef] is missing some body parts.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is in the middle of a large pool of blood.</li>
</rulesStrings>
</rulePack>
</TaleDef>
<TaleDef>
<defName>DissectedStrangerWithoutPassionTale</defName>
<label>corpse dissected</label>
<taleClass>Tale_DoublePawn</taleClass>
<type>Volatile</type>
<firstPawnSymbol>DISSECTOR</firstPawnSymbol>
<secondPawnSymbol>CORPSE</secondPawnSymbol>
<baseInterest>4.0</baseInterest>
<rulePack>
<rulesStrings>
<li>tale_noun->[DISSECTOR_nameDef] dissecting [CORPSE_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef] being dissected by [DISSECTOR_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef]'s dissection</li>
<li>image->[DISSECTOR_nameFull] dissecting [CORPSE_nameFull] of [CORPSE_factionName] [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] cutting [CORPSE_nameFull]'s body open [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] holding [CORPSE_nameFull]'s dissected heart [circumstance_group]</li>
<li>circumstance_phrase->after [CORPSE_pronoun] began to rot</li>
<li>circumstance_phrase->roughly and amateurishly</li>
<li>circumstance_phrase->with obviously excessive force</li>
<li>desc_sentence->[CORPSE_nameDef] is cut into pieces.</li>
<li>desc_sentence->[CORPSE_nameDef] is missing some body parts.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is in the middle of a large pool of blood.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is accidentally cutting off [CORPSE_nameDef]'s ear.</li>
</rulesStrings>
</rulePack>
</TaleDef>
<!-- Enemy tales -->
<TaleDef>
<defName>DissectedEnemyWithPassionTale</defName>
<label>corpse dissected</label>
<taleClass>Tale_DoublePawn</taleClass>
<type>Volatile</type>
<firstPawnSymbol>DISSECTOR</firstPawnSymbol>
<secondPawnSymbol>CORPSE</secondPawnSymbol>
<baseInterest>4.0</baseInterest>
<rulePack>
<rulesStrings>
<li>tale_noun->[DISSECTOR_nameDef] dissecting [CORPSE_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef] being dissected by [DISSECTOR_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef]'s dissection</li>
<li>image->[DISSECTOR_nameFull] dissecting [CORPSE_nameFull] of [CORPSE_factionName] [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] cutting [CORPSE_nameFull]'s body open [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] holding [CORPSE_nameFull]'s dissected heart [circumstance_group]</li>
<li>circumstance_phrase->with obviously excessive force</li>
<li>circumstance_phrase->with obvious pleasure</li>
<li>circumstance_phrase->with wrath in his eyes</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is looking at [CORPSE_nameDef]'s corpse with satisfaction.</li>
<li>desc_sentence->[CORPSE_nameDef] is cut into pieces.</li>
<li>desc_sentence->[CORPSE_nameDef] is missing some body parts.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is in the middle of a large pool of blood.</li>
</rulesStrings>
</rulePack>
</TaleDef>
<TaleDef>
<defName>DissectedEnemyWithoutPassionTale</defName>
<label>corpse dissected</label>
<taleClass>Tale_DoublePawn</taleClass>
<type>Volatile</type>
<firstPawnSymbol>DISSECTOR</firstPawnSymbol>
<secondPawnSymbol>CORPSE</secondPawnSymbol>
<baseInterest>4.0</baseInterest>
<rulePack>
<rulesStrings>
<li>tale_noun->[DISSECTOR_nameDef] dissecting [CORPSE_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef] being dissected by [DISSECTOR_nameDef]</li>
<li>tale_noun->[CORPSE_nameDef]'s dissection</li>
<li>image->[DISSECTOR_nameFull] dissecting [CORPSE_nameFull] of [CORPSE_factionName] [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] cutting [CORPSE_nameFull]'s body open [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] holding [CORPSE_nameFull]'s dissected heart [circumstance_group]</li>
<li>circumstance_phrase->roughly and amateurishly</li>
<li>circumstance_phrase->with obviously excessive force</li>
<li>circumstance_phrase->with wrath in his eyes</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is looking at [CORPSE_nameDef]'s corpse with satisfaction.</li>
<li>desc_sentence->[CORPSE_nameDef] is cut into pieces.</li>
<li>desc_sentence->[CORPSE_nameDef] is missing some body parts.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is in the middle of a large pool of blood.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is cutting off [CORPSE_nameDef]'s ear.</li>
</rulesStrings>
</rulePack>
</TaleDef>
<!-- ### LEGACY tale for compability with older mod version (saves will throw errors without this) ### -->
<TaleDef>
<defName>Dissected</defName>
<label>corpse dissected</label>
<taleClass>Tale_DoublePawn</taleClass>
<type>Volatile</type>
<firstPawnSymbol>DISSECTOR</firstPawnSymbol>
<secondPawnSymbol>CORPSE</secondPawnSymbol>
<baseInterest>4.0</baseInterest>
<rulePack>
<rulesStrings>
<li>tale_noun->the dissection of [CORPSE_nameDef]</li>
<li>image->[DISSECTOR_nameFull] dissecting [CORPSE_nameFull] of [CORPSE_factionName] [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] cutting [CORPSE_nameFull]'s body open [circumstance_group]</li>
<li>image->[DISSECTOR_nameFull] holding [CORPSE_nameFull]'s dissected heart [circumstance_group]</li>
<li>circumstance_phrase->after [corpse_pronoun] began to rot</li>
<li>circumstance_phrase->with professional efficiency</li>
<li>circumstance_phrase->roughly and amateurishly</li>
<li>circumstance_phrase->with obviously excessive force</li>
<li>circumstance_phrase->with obvious pleasure</li>
<li>circumstance_phrase->while smiling with dominance</li>
<li>desc_sentence->[dissector_nameShortDef] is looking at [CORPSE_nameDef]'s corpse with grief.</li>
<li>desc_sentence->[CORPSE_nameDef] is cut into pieces.</li>
<li>desc_sentence->[CORPSE_nameDef] is missing some body parts.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is in the middle of a large pool of blood.</li>
<li>desc_sentence->[DISSECTOR_nameShortDef] is cutting off [CORPSE_nameDef]'s ear.</li>
</rulesStrings>
</rulePack>
</TaleDef>
</Defs>
Loading

0 comments on commit 85df273

Please sign in to comment.