diff --git a/1.1/Defs/RulePackDefs/ReviaMarauderFactionName.xml b/1.1/Defs/RulePackDefs/ReviaMarauderFactionName.xml index d3e320c..4708be9 100644 --- a/1.1/Defs/RulePackDefs/ReviaMarauderFactionName.xml +++ b/1.1/Defs/RulePackDefs/ReviaMarauderFactionName.xml @@ -1,12 +1,17 @@  - NamerSettlementReviaMarauder + NamerFactionReviaMarauder -
  • r_name->[ConceptBadass] Lair
  • -
  • r_name->[ConceptBadass] Camp
  • -
  • r_name->[ColorBadass] [geography]
  • +
  • r_name->The [Gore] [groupendevil]
  • +
  • r_name->The [ColorBadass] [groupendevil]
  • +
  • r_name->The [ConceptBadass] [groupendevil]
  • + +
  • groupendevil->Devourers
  • +
  • groupendevil->Purgers
  • +
  • groupendevil->Marauders
  • +
  • groupendevil->Zealots
  • diff --git a/1.1/Defs/RulePackDefs/ReviaMarauderSettlementName.xml b/1.1/Defs/RulePackDefs/ReviaMarauderSettlementName.xml index 4708be9..d3e320c 100644 --- a/1.1/Defs/RulePackDefs/ReviaMarauderSettlementName.xml +++ b/1.1/Defs/RulePackDefs/ReviaMarauderSettlementName.xml @@ -1,17 +1,12 @@  - NamerFactionReviaMarauder + NamerSettlementReviaMarauder -
  • r_name->The [Gore] [groupendevil]
  • -
  • r_name->The [ColorBadass] [groupendevil]
  • -
  • r_name->The [ConceptBadass] [groupendevil]
  • - -
  • groupendevil->Devourers
  • -
  • groupendevil->Purgers
  • -
  • groupendevil->Marauders
  • -
  • groupendevil->Zealots
  • +
  • r_name->[ConceptBadass] Lair
  • +
  • r_name->[ConceptBadass] Camp
  • +
  • r_name->[ColorBadass] [geography]
  • diff --git a/1.1/Defs/RulePackDefs/ReviaPersonName.xml b/1.1/Defs/RulePackDefs/ReviaPersonName.xml index 6c4e232..95589dc 100644 --- a/1.1/Defs/RulePackDefs/ReviaPersonName.xml +++ b/1.1/Defs/RulePackDefs/ReviaPersonName.xml @@ -4,92 +4,72 @@ NamerPersonRevia -
  • name->[formalName] [orderName]
  • -
  • name->[formalName] '[givenName]' [orderName]
  • +
  • name->[firstName] [tribeName]
  • -
  • givenName->Sapphire
  • -
  • givenName->Emerald
  • -
  • givenName->Ruby
  • -
  • givenName->Citrine
  • -
  • givenName->Diamond
  • -
  • givenName->Aquamarine
  • -
  • givenName->Tourmaline
  • -
  • givenName->Garnet
  • -
  • givenName->Topaz
  • -
  • givenName->Quartz
  • -
  • givenName->Lapis
  • -
  • givenName->Alexandrite
  • -
  • givenName->Azurite
  • -
  • givenName->Beryl
  • -
  • givenName->Amethyst
  • -
  • givenName->Amber
  • -
  • givenName->Chrysoberyl
  • -
  • givenName->Coral
  • -
  • givenName->Bloodstone
  • -
  • givenName->Malachite
  • -
  • givenName->Carnelian
  • -
  • givenName->Druzy
  • -
  • givenName->Jade
  • -
  • givenName->Kyanite
  • -
  • givenName->Opal
  • -
  • givenName->Moonstone
  • -
  • givenName->Onyx
  • -
  • givenName->Pearl
  • -
  • givenName->Peridot
  • -
  • givenName->Serpentine
  • -
  • givenName->Spinel
  • -
  • givenName->Tanzanite
  • -
  • givenName->Turquoise
  • -
  • givenName->Zircon
  • +
  • tribeName->[animal]
  • +
  • tribeName->[animal]-[interactionLiving]
  • +
  • tribeName->[object]-[interactionNonLiving]
  • + +
  • firstName->Red
  • +
  • firstName->Crimson
  • +
  • firstName->Carmine
  • +
  • firstName->Vermillion
  • +
  • firstName->Scarlet
  • +
  • firstName->Orange
  • +
  • firstName->Sunset
  • +
  • firstName->Blood
  • +
  • firstName->Yellow
  • +
  • firstName->Solstice
  • +
  • firstName->Eclipse
  • +
  • firstName->Green
  • +
  • firstName->Grass
  • +
  • firstName->Verdant
  • +
  • firstName->Emerald
  • +
  • firstName->Obsidian
  • +
  • firstName->Blue
  • +
  • firstName->Ocean
  • +
  • firstName->Stream
  • +
  • firstName->Sapphire
  • -
  • formalName->Aurelia
  • -
  • formalName->Victoria
  • -
  • formalName->Cornelia
  • -
  • formalName->Prima
  • -
  • formalName->Secunda
  • -
  • formalName->Tertia
  • -
  • formalName->Quartia
  • -
  • formalName->Amelia
  • -
  • formalName->Livia
  • -
  • formalName->Aeliana
  • -
  • formalName->Antonia
  • -
  • formalName->Augusta
  • -
  • formalName->Invicta
  • -
  • formalName->Decima
  • -
  • formalName->Flavia
  • -
  • formalName->Sabina
  • -
  • formalName->Tullia
  • -
  • formalName->Priscilla
  • -
  • formalName->Octavia
  • -
  • formalName->Valentina
  • -
  • formalName->Valeria
  • -
  • formalName->Aemilia
  • -
  • formalName->Julia
  • +
  • animal->Leopard
  • +
  • animal->Jaguar
  • +
  • animal->Serpent
  • +
  • animal->Snake
  • +
  • animal->Fox
  • +
  • animal->Anaconda
  • +
  • animal->Eagle
  • +
  • animal->Tiger
  • +
  • animal->Wolf
  • +
  • animal->Coyote
  • +
  • animal->Badger
  • +
  • animal->Alligator
  • +
  • animal->Crocodile
  • +
  • animal->Piranha
  • -
  • orderName->[totemNouns][lowercaseAdj]
  • +
  • object->Stone
  • +
  • object->Obsidian
  • +
  • object->Sapphire
  • +
  • object->Emerald
  • +
  • object->Gold
  • +
  • object->Iron
  • +
  • object->Steel
  • +
  • object->Skull
  • +
  • object->Bone
  • -
  • totemNouns->North
  • -
  • totemNouns->South
  • -
  • totemNouns->East
  • -
  • totemNouns->West
  • -
  • totemNouns->Blood
  • -
  • totemNouns->Flesh
  • -
  • totemNouns->Stone
  • -
  • totemNouns->Steel
  • -
  • totemNouns->Sky
  • -
  • totemNouns->Moon
  • -
  • totemNouns->Star
  • -
  • totemNouns->Sea
  • -
  • totemNouns->Light
  • - -
  • lowercaseAdj->breaker
  • -
  • lowercaseAdj->carver
  • -
  • lowercaseAdj->scar
  • -
  • lowercaseAdj->devourer
  • -
  • lowercaseAdj->bane
  • -
  • lowercaseAdj->crusher
  • -
  • lowercaseAdj->smasher
  • -
  • lowercaseAdj->slayer
  • +
  • interactionLiving->tamer
  • +
  • interactionLiving->beater
  • +
  • interactionLiving->bearer
  • +
  • interactionLiving->destroyer
  • +
  • interactionLiving->slayer
  • +
  • interactionLiving->flayer
  • +
  • interactionLiving->scourge
  • + +
  • interactionNonLiving->breaker
  • +
  • interactionNonLiving->carver
  • +
  • interactionNonLiving->shatterer
  • +
  • interactionNonLiving->crusher
  • +
  • interactionNonLiving->smasher
  • +
  • interactionNonLiving->shaper
  • diff --git a/1.1/Defs/RulePackDefs/ReviaTemplarFactionName.xml b/1.1/Defs/RulePackDefs/ReviaTemplarFactionName.xml index f5da403..20161ca 100644 --- a/1.1/Defs/RulePackDefs/ReviaTemplarFactionName.xml +++ b/1.1/Defs/RulePackDefs/ReviaTemplarFactionName.xml @@ -13,15 +13,15 @@
  • darkendevil->Justiciars
  • darkendevil->Inquisitors
  • darkendevil->Templars
  • +
  • darkendevil->Empire
  • +
  • darkendevil->Despotate
  • +
  • darkendevil->Hierarchy
  • godepithet->the Bloody Rose
  • godepithet->the Sallow Moon
  • godepithet->the Blood God
  • godepithet->Skarne
  • -
  • godepithet->Tyr
  • -
  • godepithet->Fimbulventr
  • godepithet->the Allmother
  • -
  • godepithet->the Allfather
  • godepithet->the Ever-Thirsting
  • diff --git a/1.1/Defs/TaleDefs/TaleSacrificed.xml b/1.1/Defs/TaleDefs/TaleSacrificed.xml index 136dc21..b79fdcb 100644 --- a/1.1/Defs/TaleDefs/TaleSacrificed.xml +++ b/1.1/Defs/TaleDefs/TaleSacrificed.xml @@ -2,7 +2,7 @@ ReviaRaceTaleSacrificed - + Tale_SinglePawn Expirable false diff --git a/1.2/Assemblies/0Harmony.dll b/1.2/Assemblies/0Harmony.dll new file mode 100644 index 0000000..dd39263 Binary files /dev/null and b/1.2/Assemblies/0Harmony.dll differ diff --git a/1.2/Assemblies/0Harmony.xml b/1.2/Assemblies/0Harmony.xml new file mode 100644 index 0000000..a17cc8f --- /dev/null +++ b/1.2/Assemblies/0Harmony.xml @@ -0,0 +1,2476 @@ + + + + 0Harmony + + + + A factory to create delegate types + + + Default constructor + + + Creates a delegate type for a method + The method + The new delegate type + + + + A getter delegate type + Type that getter gets field/property value from + Type of the value that getter gets + The instance get getter uses + An delegate + + + + A setter delegate type + Type that setter sets field/property value for + Type of the value that setter sets + The instance the setter uses + The value the setter uses + An delegate + + + + A constructor delegate type + Type that constructor creates + An delegate + + + + A helper class for fast access to getters and setters + + + Creates an instantiation delegate + Type that constructor creates + The new instantiation delegate + + + + Creates an getter delegate for a property + Type that getter reads property from + Type of the property that gets accessed + The property + The new getter delegate + + + + Creates an getter delegate for a field + Type that getter reads field from + Type of the field that gets accessed + The field + The new getter delegate + + + + Creates an getter delegate for a field (with a list of possible field names) + Type that getter reads field/property from + Type of the field/property that gets accessed + A list of possible field names + The new getter delegate + + + + Creates an setter delegate + Type that setter assigns property value to + Type of the property that gets assigned + The property + The new setter delegate + + + + Creates an setter delegate for a field + Type that setter assigns field value to + Type of the field that gets assigned + The field + The new getter delegate + + + + A delegate to invoke a method + The instance + The method parameters + The method result + + + A helper class to invoke method with delegates + + + Creates a fast invocation handler from a method + The method to invoke + Controls if boxed value object is accessed/updated directly + The + + + The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array + passed to the fast invocation handler. + Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object. + Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array. + For example, + + var val = 5; + var box = (object)val; + var arr = new object[] { box }; + handler(arr); // for a method with parameter signature: ref/out/in int + + + + + If directBoxValueAccess is true, the boxed value object is accessed (and potentially updated) directly when the handler is called, + such that all references to the boxed object reflect the potentially updated value. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0] + now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object. + + + If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object, + such that potential updates to the value are reflected only in the arguments array. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10. + + + + + A low level memory helper + + + Mark method for no inlining (currently only works on Mono) + The method/constructor to change + + + Detours a method + The original method/constructor + The replacement method/constructor + An error string + + + + Writes a jump to memory + The memory address + Jump destination + An error string + + + + Gets the start of a method in memory + The method/constructor + [out] Details of the exception + The method start address + + + + special parameter names that can be used in prefix and postfix methods + + + Patch function helpers + + + Adds a prefix + The patch info + The owner (Harmony ID) + The annotation info + + + + Removes a prefix + The patch info + The owner (Harmony ID) + + + + Adds a postfix + The patch info + The owner (Harmony ID) + The annotation info + + + + Removes a postfix + The patch info + The owner (Harmony ID) + + + + Adds a transpiler + The patch info + The owner (Harmony ID) + The annotation info + + + + Removes a transpiler + The patch info + The owner (Harmony ID) + + + + Adds a finalizer + The patch info + The owner (Harmony ID) + The annotation info + + + + Removes a finalizer + The patch info + The owner (Harmony ID) + + + + Removes a patch method + The patch info + The patch method + + + + Gets sorted patch methods + The original method + Patches to sort + Use debug mode + The sorted patch methods + + + + Creates new replacement method with the latest patches and detours the original method + The original method + Information describing the patches + The newly created replacement method + + + + Creates a patch sorter + Array of patches that will be sorted + Use debugging + + + Sorts internal PatchSortingWrapper collection and caches the results. + After first run the result is provided from the cache. + The original method + The sorted patch methods + + + Checks if the sorter was created with the same patch list and as a result can be reused to + get the sorted order of the patches. + List of patches to check against + true if equal + + + Removes one unresolved dependency from the least important patch. + + + Outputs all unblocked patches from the waiting list to results list + + + Adds patch to both results list and handled patches set + Patch to add + + + Wrapper used over the Patch object to allow faster dependency access and + dependency removal in case of cyclic dependencies + + + Create patch wrapper object used for sorting + Patch to wrap + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + Determines whether patches are equal + The other patch + true if equal + + + Hash function + A hash code + + + Bidirectionally registers Patches as after dependencies + List of dependencies to register + + + Bidirectionally registers Patches as before dependencies + List of dependencies to register + + + Bidirectionally removes Patch from after dependencies + Patch to remove + + + Bidirectionally removes Patch from before dependencies + Patch to remove + + + Specifies the type of method + + + + This is a normal method + + + This is a getter + + + This is a setter + + + This is a constructor + + + This is a static constructor + + + Specifies the type of argument + + + + This is a normal argument + + + This is a reference argument (ref) + + + This is an out argument (out) + + + This is a pointer argument (&) + + + Specifies the type of patch + + + + Any patch + + + A prefix patch + + + A postfix patch + + + A transpiler + + + A finalizer + + + A reverse patch + + + Specifies the type of reverse patch + + + + Use the unmodified original method (directly from IL) + + + Use the original as it is right now including previous patches but excluding future ones + + + The base class for all Harmony annotations (not meant to be used directly) + + + + The common information for all attributes + + + Annotation to define your Harmony patch methods + + + + An empty annotation can be used together with TargetMethod(s) + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + Annotation to define your standin methods for reverse patching + + + + An annotation that specifies the type of reverse patching + The of the reverse patch + + + + A Harmony annotation to define that all methods in a class are to be patched + + + + A Harmony annotation + + + + A Harmony annotation to define patch priority + The priority + + + + A Harmony annotation + + + + A Harmony annotation to define that a patch comes before another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to define that a patch comes after another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to debug a patch (output uses to log to your Desktop) + + + + Specifies the Prepare function in a patch class + + + + Specifies the Cleanup function in a patch class + + + + Specifies the TargetMethod function in a patch class + + + + Specifies the TargetMethods function in a patch class + + + + Specifies the Prefix function in a patch class + + + + Specifies the Postfix function in a patch class + + + + Specifies the Transpiler function in a patch class + + + + Specifies the Finalizer function in a patch class + + + + A Harmony annotation + + + + The name of the original argument + + + + The index of the original argument + + + + The new name of the original argument + + + + An annotation to declare injected arguments by name + + + + An annotation to declare injected arguments by index + Zero-based index + + + + An annotation to declare injected arguments by renaming them + Name of the original argument + New name + + + + An annotation to declare injected arguments by index and renaming them + Zero-based index + New name + + + + An abstract wrapper around OpCode and their operands. Used by transpilers + + + + The opcode + + + + The operand + + + + All labels defined on this instruction + + + + All exception block boundaries defined on this instruction + + + + Creates a new CodeInstruction with a given opcode and optional operand + The opcode + The operand + + + + Create a full copy (including labels and exception blocks) of a CodeInstruction + The to copy + + + + Clones a CodeInstruction and resets its labels and exception blocks + A lightweight copy of this code instruction + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its opcode + The opcode + A copy of this CodeInstruction with a new opcode + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its operand + The operand + A copy of this CodeInstruction with a new operand + + + + Returns a string representation of the code instruction + A string representation of the code instruction + + + + Exception block types + + + + The beginning of an exception block + + + + The beginning of a catch block + + + + The beginning of an except filter block + + + + The beginning of a fault block + + + + The beginning of a finally block + + + + The end of an exception block + + + + An exception block + + + + Block type + + + + Catch type + + + + Creates an exception block + The + The catch type + + + + The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain + + + + The unique identifier + + + + Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe" + This is for full debugging. To debug only specific patches, use the attribute + + + + Creates a new Harmony instance + A unique identifier (you choose your own) + A Harmony instance + + + + Searches the current assembly for Harmony annotations and uses them to create patches + + + + Creates a empty patch processor for an original method + The original method/constructor + A new instance + + + + Creates a patch class processor from an annotated class + The class/type + A new instance + + + + Creates a reverse patcher for one of your stub methods + The original method/constructor + The stand-in stub method as + A new instance + + + + Searches an assembly for Harmony annotations and uses them to create patches + The assembly + + + + Creates patches by manually specifying the methods + The original method/constructor + An optional prefix method wrapped in a object + An optional postfix method wrapped in a object + An optional transpiler method wrapped in a object + An optional finalizer method wrapped in a object + The replacement method that was created to patch the original method + + + + Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process + The original method/constructor you want to duplicate + Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates) + An optional transpiler as method that will be applied during the process + The replacement method that was created to patch the stub method + + + + Unpatches methods + The optional Harmony ID to restrict unpatching to a specific instance + This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID + + + + Unpatches a method + The original method/constructor + The + The optional Harmony ID to restrict unpatching to a specific instance + + + + Unpatches a method + The original method/constructor + The patch method as method to remove + + + + Test for patches from a specific Harmony ID + The Harmony ID + True if patches for this ID exist + + + + Gets patch information for a given original method + The original method/constructor + The patch information as + + + + Gets the methods this instance has patched + An enumeration of original methods/constructors + + + + Gets all patched original methods in the appdomain + An enumeration of patched original methods/constructors + + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly versions keyed by Harmony IDs + + + + Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure + + + + Default serialization constructor (not implemented) + The info + The context + + + + Get a list of IL instructions in pairs of offset+code + A list of key/value pairs which represent an offset and the code at that offset + + + + Get a list of IL instructions without offsets + A list of + + + + Get the error offset of the errornous IL instruction + The offset + + + + Get the index of the errornous IL instruction + The index into the list of instructions or -1 if not found + + + + A wrapper around a method to use it as a patch (for example a Prefix) + + + + The original method + + + + Class/type declaring this patch + + + + Patch method name + + + + Optional patch + + + + Array of argument types of the patch method + + + + of the patch + + + + Install this patch before patches with these Harmony IDs + + + + Install this patch after patches with these Harmony IDs + + + + Reverse patch type, see + + + + Create debug output for this patch + + + + Default constructor + + + + Creates a patch from a given method + The original method + + + + Creates a patch from a given method + The original method + The patch + A list of harmony IDs that should come after this patch + A list of harmony IDs that should come before this patch + Set to true to generate debug output + + + + Creates a patch from a given method + The patch class/type + The patch method name + The optional argument types of the patch method (for overloaded methods) + + + + Gets the names of all internal patch info fields + A list of field names + + + + Merges annotations + The list of to merge + The merged + + + + Returns a string that represents the annotation + A string representation + + + + Annotation extensions + + + + Copies annotation information + The source + The destination + + + + Clones an annotation + The to clone + A copied + + + + Merges annotations + The master + The detail + A new, merged + + + + Gets all annotations on a class/type + The class/type + A list of all + + + + Gets merged annotations on a class/type + The class/type + The merged + + + + Gets all annotations on a method + The method/constructor + A list of + + + + Gets merged annotations on a method + The method/constructor + The merged + + + + + A mutable representation of an inline signature, similar to Mono.Cecil's CallSite. + Used by the calli instruction, can be used by transpilers + + + + + See + + + + See + + + + See + + + + The list of all parameter types or function pointer signatures received by the call site + + + + The return type or function pointer signature returned by the call site + + + + Returns a string representation of the inline signature + A string representation of the inline signature + + + + + A mutable representation of a parameter type with an attached type modifier, + similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq + + + + + Whether this is a modopt (optional modifier type) or a modreq (required modifier type) + + + + The modifier type attached to the parameter type + + + + The modified parameter type + + + + Returns a string representation of the modifier type + A string representation of the modifier type + + + + Patch serialization + + + + Control the binding of a serialized object to a type + Specifies the assembly name of the serialized object + Specifies the type name of the serialized object + The type of the object the formatter creates a new instance of + + + + Serializes a patch info + The + The serialized data + + + + Deserialize a patch info + The serialized data + A + + + + Compare function to sort patch priorities + The patch + Zero-based index + The priority + A standard sort integer (-1, 0, 1) + + + + Serializable patch information + + + + Prefixes as an array of + + + + Postfixes as an array of + + + + Transpilers as an array of + + + + Finalizers as an array of + + + + Default constructor + + + + Returns if any of the patches wants debugging turned on + + + + Adds a prefix + + The prefix method + An owner (Harmony ID) + The priority, see + A list of Harmony IDs for prefixes that should run after this prefix + A list of Harmony IDs for prefixes that should run before this prefix + A flag that will log the replacement method via every time this prefix is used to build the replacement, even in the future + + + + Removes prefixes + The owner of the prefix or * for any prefix + + + + Adds a postfix + The postfix method + An owner (Harmony ID) + The priority, see + A list of Harmony IDs for postfixes that should run after this postfix + A list of Harmony IDs for postfixes that should run before this postfix + A flag that will log the replacement method via every time this postfix is used to build the replacement, even in the future + + + + Removes postfixes + The owner of the postfix or * for any postfix + + + + Adds a transpiler + The transpiler method + An owner (Harmony ID) + The priority, see + A list of Harmony IDs for transpilers that should run after this transpiler + A list of Harmony IDs for transpilers that should run before this transpiler + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + Removes transpilers + The owner of the transpiler or * for any transpiler + + + + Adds a finalizer + The finalizer method + An owner (Harmony ID) + The priority, see + A list of Harmony IDs for finalizers that should run after this finalizer + A list of Harmony IDs for finalizers that should run before this finalizer + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + Removes finalizers + The owner of the finalizer or * for any finalizer + + + + Removes a patch using its method + The method of the patch to remove + + + + A serializable patch + + + + Zero-based index + + + + The owner (Harmony ID) + + + + The priority, see + + + + Keep this patch before the patches indicated in the list of Harmony IDs + + + + Keep this patch after the patches indicated in the list of Harmony IDs + + + + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + The method of the static patch method + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + The priority, see + A list of Harmony IDs for patches that should run after this patch + A list of Harmony IDs for patches that should run before this patch + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + Get the patch method or a DynamicMethod if original patch method is a patch factory + The original method/constructor + The method of the patch + + + + Determines whether patches are equal + The other patch + true if equal + + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + + Hash function + A hash code + + + + A PatchClassProcessor used to turn on a class/type into patches + + + + Creates an empty patch class processor + The Harmony instance + The class to process + + + + Applies the patches + A list of all created replacement methods or null if patch class is not annotated + + + + A group of patches + + + + A collection of prefix + + + + A collection of postfix + + + + A collection of transpiler + + + + A collection of finalizer + + + + Gets all owners (Harmony IDs) or all known patches + The patch owners + + + + Creates a group of patches + An array of prefixes as + An array of postfixes as + An array of transpileres as + An array of finalizeres as + + + + A PatchProcessor handles patches on a method/constructor + + + + Creates an empty patch processor + The Harmony instance + The original method/constructor + + + + Adds a prefix + The prefix as a + A for chaining calls + + + + Adds a prefix + The prefix method + A for chaining calls + + + + Adds a postfix + The postfix as a + A for chaining calls + + + + Adds a postfix + The postfix method + A for chaining calls + + + + Adds a transpiler + The transpiler as a + A for chaining calls + + + + Adds a transpiler + The transpiler method + A for chaining calls + + + + Adds a finalizer + The finalizer as a + A for chaining calls + + + + Adds a finalizer + The finalizer method + A for chaining calls + + + + Gets all patched original methods in the appdomain + An enumeration of patched method/constructor + + + + Applies all registered patches + The generated replacement method + + + + Unpatches patches of a given type and/or Harmony ID + The patch type + Harmony ID or * for any + A for chaining calls + + + + Unpatches a specific patch + The method of the patch + A for chaining calls + + + + Gets patch information on an original + The original method/constructor + The patch information as + + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly version keyed by Harmony ID + + + + Returns the methods unmodified list of code instructions + The original method/constructor + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list containing all the original + + + + Returns the methods unmodified list of code instructions + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + A list containing all the original + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + All instructions as opcode/operand pairs + + + + A patch priority + + + + Patch last + + + + Patch with very low priority + + + + Patch with low priority + + + + Patch with lower than normal priority + + + + Patch with normal priority + + + + Patch with higher than normal priority + + + + Patch with high priority + + + + Patch with very high priority + + + + Patch first + + + + A reverse patcher + + + + Creates a reverse patcher + The Harmony instance + The original method/constructor + Your stand-in stub method as + + + + Applies the patch + The type of patch, see + The generated replacement method + + + + A collection of commonly used transpilers + + + + A transpiler that replaces all occurrences of a given method with another one + The enumeration of to act on + Method or constructor to search for + Method or constructor to replace with + Modified enumeration of + + + + A transpiler that alters instructions that match a predicate by calling an action + The enumeration of to act on + A predicate selecting the instructions to change + An action to apply to matching instructions + Modified enumeration of + + + + A transpiler that logs a text at the beginning of the method + The instructions to act on + The log text + Modified enumeration of + + + + A helper class for reflection related functions + + + + Shortcut for to simplify the use of reflections and make it work for any access level + + + + Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type + + + + Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise + The name + A type or null if not found + + + + Gets all type by name from a given assembly. This is a wrapper that respects different .NET versions + The assembly + An array of types + + + + Applies a function going up the type hierarchy and stops at the first non null result + Result type of func() + The class/type to start with + The evaluation function returning T + Returns the first non null result or default(T) when reaching the top level type object + + + + Applies a function going into inner types and stops at the first non null result + Generic type parameter + The class/type to start with + The evaluation function returning T + Returns the first non null result or null with no match + + + + Gets the reflection information for a directly declared field + The class/type where the field is defined + The name of the field + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a field by searching the type and all its super types + The class/type where the field is defined + The name of the field (case sensitive) + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a field + The class/type where the field is declared + The zero-based index of the field inside the class definition + A field or null when type is null or when the field cannot be found + + + + Gets the reflection information for a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a property by searching the type and all its super types + The class/type + The name + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a directly declared method + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The full name like Namespace.Type1.Type2:MethodName of the type where the method is declared + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the names of all method that are declared in a type + The declaring class/type + A list of method names + + + + Gets the names of all method that are declared in the type of the instance + An instance of the type to search in + A list of method names + + + + Gets the names of all fields that are declared in a type + The declaring class/type + A list of field names + + + + Gets the names of all fields that are declared in the type of the instance + An instance of the type to search in + A list of field names + + + + Gets the names of all properties that are declared in a type + The declaring class/type + A list of property names + + + + Gets the names of all properties that are declared in the type of the instance + An instance of the type to search in + A list of property names + + + + Gets the type of any class member of + A member + The class/type of this member + + + + Test if a class member is actually an concrete implementation + A member + True if the member is a declared + + + + Gets the real implementation of a class member + A member + The member itself if its declared. Otherwise the member that is actually implemented in some base type + + + + Gets the reflection information for a directly declared constructor + The class/type where the constructor is declared + Optional parameters to target a specific overload of the constructor + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the constructor cannot be found + + + + Gets the reflection information for a constructor by searching the type and all its super types + The class/type where the constructor is declared + Optional parameters to target a specific overload of the method + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the method cannot be found + + + + Gets reflection information for all declared constructors + The class/type where the constructors are declared + Optional parameters to only consider static constructors + A list of constructor infos + + + + Gets reflection information for all declared methods + The class/type where the methods are declared + A list of methods + + + + Gets reflection information for all declared properties + The class/type where the properties are declared + A list of properties + + + + Gets reflection information for all declared fields + The class/type where the fields are declared + A list of fields + + + + Gets the return type of a method or constructor + The method/constructor + The return type + + + + Given a type, returns the first inner type matching a recursive search by name + The class/type to start searching at + The name of the inner type (case sensitive) + The inner type or null if type/name is null or if a type with that name cannot be found + + + + Given a type, returns the first inner type matching a recursive search with a predicate + The class/type to start searching at + The predicate to search with + The inner type or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first method matching a predicate + The class/type to start searching at + The predicate to search with + The method or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first constructor matching a predicate + The class/type to start searching at + The predicate to search with + The constructor info or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first property matching a predicate + The class/type to start searching at + The predicate to search with + The property or null if type/predicate is null or if a type with that name cannot be found + + + + Returns an array containing the type of each object in the given array + An array of objects + An array of types or an empty array if parameters is null (if an object is null, the type for it will be object) + + + + Creates an array of input parameters for a given method and a given set of potential inputs + The method/constructor you are planing to call + The possible input parameters in any order + An object array matching the method signature + + + + A read/writable reference to an instance field + The class the field is defined in or "object" if type cannot be accessed at compile time + The type of the field + The runtime instance to access the field (leave empty for static fields) + An readable/assignable object representing the field + + + + Creates an instance field reference + The class the field is defined in or "object" if type cannot be accessed at compile time + The type of the field + The name of the field + A read and writable field reference delegate + + + + Creates an instance field reference for a specific instance + The class the field is defined in or "object" if type cannot be accessed at compile time + The type of the field + The instance + The name of the field + An readable/assignable object representing the field + + + + Creates an instance field reference delegate + The class the field is defined in or "object" if type cannot be accessed at compile time + The type of the field + The field of the field + A read and writable delegate + + + + A read/writable reference delegate to a static field + The type of the field + An readable/assignable object representing the static field + + + + Creates a static field reference + The class the field is defined in or "object" if type cannot be accessed at compile time + The type of the field + The name of the field + An readable/assignable object representing the static field + + + + Creates a static field reference delegate + The type of the field + The field + A read and writable delegate + + + + Returns who called the current method + The calling method/constructor (excluding the caller) + + + + Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces) + The exception to rethrow + + + + Tells you if the current runtime is based on Mono + True if we are running under Mono, false otherwise (.NET) + + + + Throws a missing member runtime exception + The type that is involved + A list of names + + + + Gets default value for a specific type + The class/type + The default value + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + Makes a deep copy of any object + The type of the instance that should be created + The original object + A copy of the original object but of type T + + + + Makes a deep copy of any object + The type of the instance that should be created + The original object + [out] The copy of the original object + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + + + + Makes a deep copy of any object + The original object + The type of the instance that should be created + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + The copy of the original object + + + + Tests if a type is a struct + The type + True if the type is a struct + + + + Tests if a type is a class + The type + True if the type is a class + + + + Tests if a type is a value type + The type + True if the type is a value type + + + + Tests if a type is an integer type + The type + True if the type represents some integer + + + + Tests if a type is a floating point type + The type + True if the type represents some floating point + + + + Tests if a type is a numerical type + The type + True if the type represents some number + + + + Tests if a type is void + The type + True if the type is void + + + + Test whether an instance is of a nullable type + Type of instance + An instance to test + True if instance is of nullable type, false if not + + + + Calculates a combined hash code for an enumeration of objects + The objects + The hash code + + + + General extensions for common cases + + + + Joins an enumeration with a value converter and a delimiter to a string + The inner type of the enumeration + The enumeration + An optional value converter (from T to string) + An optional delimiter + The values joined into a string + + + + Converts an array of types (for example methods arguments) into a human readable form + The array of types + A human readable description including brackets + + + + A full description of a type + The type + A human readable description + + + + A a full description of a method or a constructor without assembly details but with generics + The method/constructor + A human readable description + + + + A helper converting parameter infos to types + The array of parameter infos + An array of types + + + + A helper to access a value via key from a dictionary + The key type + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist + + + + A helper to access a value via key from a dictionary with extra casting + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist or cannot be cast to T + + + + Escapes Unicode and ASCII non printable characters + The string to convert + The string to convert + A string literal surrounded by + + + + Extensions for + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand has the same type and is equal to the value + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand is equal to the value + This is an optimized version of for + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand is equal to the given operand + This is an optimized version of for + + + + Tests for any form of Ldarg* + The + The (optional) index + True if it matches one of the variations + + + + Tests for Ldarga/Ldarga_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for Starg/Starg_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for any form of Ldloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests for any form of Stloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests if the code instruction branches + The + The label if the instruction is a branch operation or if not + True if the instruction branches + + + + Tests if the code instruction calls the method/constructor + The + The method + True if the instruction calls the method or constructor + + + + Tests if the code instruction loads a constant + The + True if the instruction loads a constant + + + + Tests if the code instruction loads an integer constant + The + The integer constant + True if the instruction loads the constant + + + + Tests if the code instruction loads a floating point constant + The + The floating point constant + True if the instruction loads the constant + + + + Tests if the code instruction loads an enum constant + The + The enum + True if the instruction loads the constant + + + + Tests if the code instruction loads a field + The + The field + Set to true if the address of the field is loaded + True if the instruction loads the field + + + + Tests if the code instruction stores a field + The + The field + True if the instruction stores this field + + + + General extensions for collections + + + + A simple way to execute code for every element in a collection + The inner type of the collection + The collection + The action to execute + + + + A simple way to execute code for elements in a collection matching a condition + The inner type of the collection + The collection + The predicate + The action to execute + + + + A helper to add an item to a collection + The inner type of the collection + The collection + The item to add + The collection containing the item + + + + A helper to add an item to an array + The inner type of the collection + The array + The item to add + The array containing the item + + + + A helper to add items to an array + The inner type of the collection + The array + The items to add + The array containing the items + + + + A file log for debugging + + + + Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop + + + + The indent character. The default is tab + + + + The current indent level + + + + Changes the indentation level + The value to add to the indentation level + + + + Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + The string to log + + + + Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + A list of strings to log (they will not be re-indented) + + + + Returns the log buffer and optionally empties it + True to empty the buffer + The buffer. + + + + Replaces the buffer with new lines + The lines to store + + + + Flushes the log buffer to disk (use in combination with LogBuffered) + + + + Log a string directly to disk. Slower method that prevents missing information in case of a crash + The string to log. + + + + Resets and deletes the log + + + + Logs some bytes as hex values + The pointer to some memory + The length of bytes to log + + + + A helper class to retrieve reflection info for non-private methods + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The generic result type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + A reflection helper to read and write private elements + The result type defined by GetValue() + + + + Creates a traverse instance from an existing instance + The existing instance + + + + Gets/Sets the current value + The value to read or write + + + + A reflection helper to read and write private elements + + + + Creates a new traverse instance from a class/type + The class/type + A instance + + + + Creates a new traverse instance from a class T + The class + A instance + + + + Creates a new traverse instance from an instance + The object + A instance + + + + Creates a new traverse instance from a named type + The type name, for format see + A instance + + + + Creates a new and empty traverse instance + + + + Creates a new traverse instance from a class/type + The class/type + + + + Creates a new traverse instance from an instance + The object + + + + Gets the current value + The value + + + + Gets the current value + The type of the value + The value + + + + Invokes the current method with arguments and returns the result + The method arguments + The value returned by the method + + + + Invokes the current method with arguments and returns the result + The type of the value + The method arguments + The value returned by the method + + + + Sets a value of the current field or property + The value + The same traverse instance + + + + Gets the type of the current field or property + The type + + + + Moves the current traverse instance to a inner type + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type of the field + The type name + A traverse instance + + + + Gets all fields of the current type + A list of field names + + + + Moves the current traverse instance to a property + The type name + Optional property index + A traverse instance + + + + Moves the current traverse instance to a field + The type of the property + The type name + Optional property index + A traverse instance + + + + Gets all properties of the current type + A list of property names + + + + Moves the current traverse instance to a method + The name of the method + The arguments defining the argument types of the method overload + A traverse instance + + + + Moves the current traverse instance to a method + The name of the method + The argument types of the method + The arguments for the method + A traverse instance + + + + Gets all methods of the current type + A list of method names + + + + Checks if the current traverse instance is for a field + True if its a field + + + + Checks if the current traverse instance is for a property + True if its a property + + + + Checks if the current traverse instance is for a method + True if its a method + + + + Checks if the current traverse instance is for a type + True if its a type + + + + Iterates over all fields of the current type and executes a traverse action + Original object + The action receiving a instance for each field + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each field pair + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the field pair and the instances + + + + Iterates over all properties of the current type and executes a traverse action + Original object + The action receiving a instance for each property + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each property pair + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the property pair and the instances + + + + A default field action that copies fields to fields + + + + Returns a string that represents the current traverse + A string representation + + + + diff --git a/1.2/Assemblies/ReviaRace.dll b/1.2/Assemblies/ReviaRace.dll index e67a819..8bf3013 100644 Binary files a/1.2/Assemblies/ReviaRace.dll and b/1.2/Assemblies/ReviaRace.dll differ diff --git a/1.2/Assemblies/ReviaRace.pdb b/1.2/Assemblies/ReviaRace.pdb index c5525b2..5b40756 100644 Binary files a/1.2/Assemblies/ReviaRace.pdb and b/1.2/Assemblies/ReviaRace.pdb differ diff --git a/1.2/Defs/AlienRaceSettings/AlienRaceSettings.xml b/1.2/Defs/AlienRaceSettings/AlienRaceSettings.xml deleted file mode 100644 index 3e480fd..0000000 --- a/1.2/Defs/AlienRaceSettings/AlienRaceSettings.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - ReviaRaceSettings - - -
  • - -
  • - -
  • ReviaRaceColonist
  • - - 10.0 - - - -
    -
    -
    -
    \ No newline at end of file diff --git a/1.2/Defs/RulePackDefs/ReviaPersonName.xml b/1.2/Defs/RulePackDefs/ReviaPersonName.xml deleted file mode 100644 index 6c4e232..0000000 --- a/1.2/Defs/RulePackDefs/ReviaPersonName.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - NamerPersonRevia - - -
  • name->[formalName] [orderName]
  • -
  • name->[formalName] '[givenName]' [orderName]
  • - -
  • givenName->Sapphire
  • -
  • givenName->Emerald
  • -
  • givenName->Ruby
  • -
  • givenName->Citrine
  • -
  • givenName->Diamond
  • -
  • givenName->Aquamarine
  • -
  • givenName->Tourmaline
  • -
  • givenName->Garnet
  • -
  • givenName->Topaz
  • -
  • givenName->Quartz
  • -
  • givenName->Lapis
  • -
  • givenName->Alexandrite
  • -
  • givenName->Azurite
  • -
  • givenName->Beryl
  • -
  • givenName->Amethyst
  • -
  • givenName->Amber
  • -
  • givenName->Chrysoberyl
  • -
  • givenName->Coral
  • -
  • givenName->Bloodstone
  • -
  • givenName->Malachite
  • -
  • givenName->Carnelian
  • -
  • givenName->Druzy
  • -
  • givenName->Jade
  • -
  • givenName->Kyanite
  • -
  • givenName->Opal
  • -
  • givenName->Moonstone
  • -
  • givenName->Onyx
  • -
  • givenName->Pearl
  • -
  • givenName->Peridot
  • -
  • givenName->Serpentine
  • -
  • givenName->Spinel
  • -
  • givenName->Tanzanite
  • -
  • givenName->Turquoise
  • -
  • givenName->Zircon
  • - -
  • formalName->Aurelia
  • -
  • formalName->Victoria
  • -
  • formalName->Cornelia
  • -
  • formalName->Prima
  • -
  • formalName->Secunda
  • -
  • formalName->Tertia
  • -
  • formalName->Quartia
  • -
  • formalName->Amelia
  • -
  • formalName->Livia
  • -
  • formalName->Aeliana
  • -
  • formalName->Antonia
  • -
  • formalName->Augusta
  • -
  • formalName->Invicta
  • -
  • formalName->Decima
  • -
  • formalName->Flavia
  • -
  • formalName->Sabina
  • -
  • formalName->Tullia
  • -
  • formalName->Priscilla
  • -
  • formalName->Octavia
  • -
  • formalName->Valentina
  • -
  • formalName->Valeria
  • -
  • formalName->Aemilia
  • -
  • formalName->Julia
  • - -
  • orderName->[totemNouns][lowercaseAdj]
  • - -
  • totemNouns->North
  • -
  • totemNouns->South
  • -
  • totemNouns->East
  • -
  • totemNouns->West
  • -
  • totemNouns->Blood
  • -
  • totemNouns->Flesh
  • -
  • totemNouns->Stone
  • -
  • totemNouns->Steel
  • -
  • totemNouns->Sky
  • -
  • totemNouns->Moon
  • -
  • totemNouns->Star
  • -
  • totemNouns->Sea
  • -
  • totemNouns->Light
  • - -
  • lowercaseAdj->breaker
  • -
  • lowercaseAdj->carver
  • -
  • lowercaseAdj->scar
  • -
  • lowercaseAdj->devourer
  • -
  • lowercaseAdj->bane
  • -
  • lowercaseAdj->crusher
  • -
  • lowercaseAdj->smasher
  • -
  • lowercaseAdj->slayer
  • -
    -
    -
    -
    \ No newline at end of file diff --git a/1.2/Defs/TaleDefs/TaleSacrificedPositive.xml b/1.2/Defs/TaleDefs/TaleSacrificedPositive.xml deleted file mode 100644 index fb83176..0000000 --- a/1.2/Defs/TaleDefs/TaleSacrificedPositive.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - ReviaRaceTaleSacrificedPositive - - Tale_SinglePawn - Expirable - false - 1 - 20 - - \ No newline at end of file diff --git a/1.2/Patches/RoyaltyPatch.xml b/1.2/Patches/RoyaltyPatch.xml new file mode 100644 index 0000000..064967b --- /dev/null +++ b/1.2/Patches/RoyaltyPatch.xml @@ -0,0 +1,14 @@ + + + + +
  • Royalty
  • +
    + + /Defs/FactionDef[defName="Empire"]/permanentEnemyToEveryoneExcept + +
  • ReviaPlayerColony
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/Defs/AlienRaceSettings/AlienRaceSettings.xml b/Defs/AlienRaceSettings/AlienRaceSettings.xml new file mode 100644 index 0000000..6ef2ef7 --- /dev/null +++ b/Defs/AlienRaceSettings/AlienRaceSettings.xml @@ -0,0 +1,55 @@ + + + + ReviaRaceSettings + + +
  • + +
  • + +
  • ReviaRaceColonist
  • + + 10.0 + + + +
  • PlayerColony
  • +
    + +
    + +
  • + +
  • ReviaRaceSerf
  • +
  • ReviaRaceDisgraced
  • + + 10.0 + +
    + +
  • + +
  • ReviaRaceDisgraced
  • + + 10.0 + +
    + +
  • + +
  • + +
  • ReviaRaceColonist
  • + + 10.0 + + + +
  • PlayerColony
  • +
    + +
    +
    +
    +
    \ No newline at end of file diff --git a/1.2/Defs/BackstoryDefs/AdultAcolyte.xml b/Defs/BackstoryDefs/AdultAcolyte.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/AdultAcolyte.xml rename to Defs/BackstoryDefs/AdultAcolyte.xml diff --git a/1.2/Defs/BackstoryDefs/AdultAssassin.xml b/Defs/BackstoryDefs/AdultAssassin.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/AdultAssassin.xml rename to Defs/BackstoryDefs/AdultAssassin.xml diff --git a/1.2/Defs/BackstoryDefs/AdultDarkTemplar.xml b/Defs/BackstoryDefs/AdultDarkTemplar.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/AdultDarkTemplar.xml rename to Defs/BackstoryDefs/AdultDarkTemplar.xml diff --git a/1.2/Defs/BackstoryDefs/AdultFleshBinder.xml b/Defs/BackstoryDefs/AdultFleshBinder.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/AdultFleshBinder.xml rename to Defs/BackstoryDefs/AdultFleshBinder.xml diff --git a/1.2/Defs/BackstoryDefs/AdultReaver.xml b/Defs/BackstoryDefs/AdultReaver.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/AdultReaver.xml rename to Defs/BackstoryDefs/AdultReaver.xml diff --git a/1.2/Defs/BackstoryDefs/AdultShadowGuard.xml b/Defs/BackstoryDefs/AdultShadowGuard.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/AdultShadowGuard.xml rename to Defs/BackstoryDefs/AdultShadowGuard.xml diff --git a/1.2/Defs/BackstoryDefs/AdultWarsmith.xml b/Defs/BackstoryDefs/AdultWarsmith.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/AdultWarsmith.xml rename to Defs/BackstoryDefs/AdultWarsmith.xml diff --git a/1.2/Defs/BackstoryDefs/AdultWayfarer.xml b/Defs/BackstoryDefs/AdultWayfarer.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/AdultWayfarer.xml rename to Defs/BackstoryDefs/AdultWayfarer.xml diff --git a/1.2/Defs/BackstoryDefs/ChildApprenticeCraftsman.xml b/Defs/BackstoryDefs/ChildApprenticeCraftsman.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/ChildApprenticeCraftsman.xml rename to Defs/BackstoryDefs/ChildApprenticeCraftsman.xml diff --git a/1.2/Defs/BackstoryDefs/ChildConscript.xml b/Defs/BackstoryDefs/ChildConscript.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/ChildConscript.xml rename to Defs/BackstoryDefs/ChildConscript.xml diff --git a/1.2/Defs/BackstoryDefs/ChildExpunged.xml b/Defs/BackstoryDefs/ChildExpunged.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/ChildExpunged.xml rename to Defs/BackstoryDefs/ChildExpunged.xml diff --git a/1.2/Defs/BackstoryDefs/ChildHerbSniffer.xml b/Defs/BackstoryDefs/ChildHerbSniffer.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/ChildHerbSniffer.xml rename to Defs/BackstoryDefs/ChildHerbSniffer.xml diff --git a/1.2/Defs/BackstoryDefs/ChildNeophyte.xml b/Defs/BackstoryDefs/ChildNeophyte.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/ChildNeophyte.xml rename to Defs/BackstoryDefs/ChildNeophyte.xml diff --git a/1.2/Defs/BackstoryDefs/ChildOrphan.xml b/Defs/BackstoryDefs/ChildOrphan.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/ChildOrphan.xml rename to Defs/BackstoryDefs/ChildOrphan.xml diff --git a/1.2/Defs/BackstoryDefs/ChildPatricianScion.xml b/Defs/BackstoryDefs/ChildPatricianScion.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/ChildPatricianScion.xml rename to Defs/BackstoryDefs/ChildPatricianScion.xml diff --git a/1.2/Defs/BackstoryDefs/ChildSacrificial.xml b/Defs/BackstoryDefs/ChildSacrificial.xml similarity index 100% rename from 1.2/Defs/BackstoryDefs/ChildSacrificial.xml rename to Defs/BackstoryDefs/ChildSacrificial.xml diff --git a/1.2/Defs/BodyDefs/ReviaBody.xml b/Defs/BodyDefs/ReviaBody.xml similarity index 100% rename from 1.2/Defs/BodyDefs/ReviaBody.xml rename to Defs/BodyDefs/ReviaBody.xml diff --git a/1.2/Defs/BodyPartDefs/ReviaRaceTail.xml b/Defs/BodyPartDefs/ReviaRaceTail.xml similarity index 100% rename from 1.2/Defs/BodyPartDefs/ReviaRaceTail.xml rename to Defs/BodyPartDefs/ReviaRaceTail.xml diff --git a/1.2/Defs/Building/BloodSigil.xml b/Defs/Building/BloodSigil.xml similarity index 96% rename from 1.2/Defs/Building/BloodSigil.xml rename to Defs/Building/BloodSigil.xml index 8fc1414..a72a22d 100644 --- a/1.2/Defs/Building/BloodSigil.xml +++ b/Defs/Building/BloodSigil.xml @@ -40,6 +40,9 @@
  • ITab_Bills
  • +
  • + ReviaRace.Comps.SacrificeSpotComp +
  • CompReportWorkSpeed
  • diff --git a/1.2/Defs/Building/SacrificeSpot.xml b/Defs/Building/SacrificeSpot.xml similarity index 100% rename from 1.2/Defs/Building/SacrificeSpot.xml rename to Defs/Building/SacrificeSpot.xml diff --git a/1.2/Defs/ChemicalDefs/RedHazeChemical.xml b/Defs/ChemicalDefs/RedHazeChemical.xml similarity index 100% rename from 1.2/Defs/ChemicalDefs/RedHazeChemical.xml rename to Defs/ChemicalDefs/RedHazeChemical.xml diff --git a/1.2/Defs/DamageDefs/GashDamage.xml b/Defs/DamageDefs/GashDamage.xml similarity index 100% rename from 1.2/Defs/DamageDefs/GashDamage.xml rename to Defs/DamageDefs/GashDamage.xml diff --git a/Defs/DamageDefs/SacrificeDamage.xml b/Defs/DamageDefs/SacrificeDamage.xml new file mode 100644 index 0000000..4feb747 --- /dev/null +++ b/Defs/DamageDefs/SacrificeDamage.xml @@ -0,0 +1,15 @@ + + + + ReviaRaceSacrificeDamage + + DamageWorker_AddInjury + {0} has died from ritual-inflicted wounds. + SurgicalCut + false + false + false + + + + \ No newline at end of file diff --git a/1.2/Defs/DesignationCategories/ReviaBuilding.xml b/Defs/DesignationCategories/ReviaBuilding.xml similarity index 100% rename from 1.2/Defs/DesignationCategories/ReviaBuilding.xml rename to Defs/DesignationCategories/ReviaBuilding.xml diff --git a/1.2/Defs/FactionDefs/ReviaMarauders.xml b/Defs/FactionDefs/ReviaMarauders.xml similarity index 100% rename from 1.2/Defs/FactionDefs/ReviaMarauders.xml rename to Defs/FactionDefs/ReviaMarauders.xml diff --git a/1.2/Defs/FactionDefs/ReviaPlayerFaction.xml b/Defs/FactionDefs/ReviaPlayerFaction.xml similarity index 100% rename from 1.2/Defs/FactionDefs/ReviaPlayerFaction.xml rename to Defs/FactionDefs/ReviaPlayerFaction.xml diff --git a/1.2/Defs/FactionDefs/ReviaTemplars.xml b/Defs/FactionDefs/ReviaTemplars.xml similarity index 100% rename from 1.2/Defs/FactionDefs/ReviaTemplars.xml rename to Defs/FactionDefs/ReviaTemplars.xml diff --git a/1.2/Defs/HediffDefs/InjuryGash.xml b/Defs/HediffDefs/InjuryGash.xml similarity index 100% rename from 1.2/Defs/HediffDefs/InjuryGash.xml rename to Defs/HediffDefs/InjuryGash.xml diff --git a/1.2/Defs/HediffDefs/RedHazeAddiction.xml b/Defs/HediffDefs/RedHazeAddiction.xml similarity index 100% rename from 1.2/Defs/HediffDefs/RedHazeAddiction.xml rename to Defs/HediffDefs/RedHazeAddiction.xml diff --git a/1.2/Defs/HediffDefs/RedHazeEffect.xml b/Defs/HediffDefs/RedHazeEffect.xml similarity index 100% rename from 1.2/Defs/HediffDefs/RedHazeEffect.xml rename to Defs/HediffDefs/RedHazeEffect.xml diff --git a/1.2/Defs/HediffDefs/SoulreapTier1.xml b/Defs/HediffDefs/SoulreapTier1.xml similarity index 100% rename from 1.2/Defs/HediffDefs/SoulreapTier1.xml rename to Defs/HediffDefs/SoulreapTier1.xml diff --git a/1.2/Defs/HediffDefs/SoulreapTier2.xml b/Defs/HediffDefs/SoulreapTier2.xml similarity index 100% rename from 1.2/Defs/HediffDefs/SoulreapTier2.xml rename to Defs/HediffDefs/SoulreapTier2.xml diff --git a/1.2/Defs/HediffDefs/SoulreapTier3.xml b/Defs/HediffDefs/SoulreapTier3.xml similarity index 100% rename from 1.2/Defs/HediffDefs/SoulreapTier3.xml rename to Defs/HediffDefs/SoulreapTier3.xml diff --git a/1.2/Defs/HediffDefs/SoulreapTier4.xml b/Defs/HediffDefs/SoulreapTier4.xml similarity index 100% rename from 1.2/Defs/HediffDefs/SoulreapTier4.xml rename to Defs/HediffDefs/SoulreapTier4.xml diff --git a/1.2/Defs/HediffDefs/SoulreapTier5.xml b/Defs/HediffDefs/SoulreapTier5.xml similarity index 100% rename from 1.2/Defs/HediffDefs/SoulreapTier5.xml rename to Defs/HediffDefs/SoulreapTier5.xml diff --git a/1.2/Defs/HediffDefs/SoulreapTier6.xml b/Defs/HediffDefs/SoulreapTier6.xml similarity index 100% rename from 1.2/Defs/HediffDefs/SoulreapTier6.xml rename to Defs/HediffDefs/SoulreapTier6.xml diff --git a/1.2/Defs/HediffDefs/SoulreapTier7.xml b/Defs/HediffDefs/SoulreapTier7.xml similarity index 100% rename from 1.2/Defs/HediffDefs/SoulreapTier7.xml rename to Defs/HediffDefs/SoulreapTier7.xml diff --git a/1.2/Defs/HediffDefs/SoulreapTier8.xml b/Defs/HediffDefs/SoulreapTier8.xml similarity index 100% rename from 1.2/Defs/HediffDefs/SoulreapTier8.xml rename to Defs/HediffDefs/SoulreapTier8.xml diff --git a/1.2/Defs/HediffDefs/SoulreapTier9.xml b/Defs/HediffDefs/SoulreapTier9.xml similarity index 100% rename from 1.2/Defs/HediffDefs/SoulreapTier9.xml rename to Defs/HediffDefs/SoulreapTier9.xml diff --git a/Defs/JobDefs/SacrificePrisonerJob.xml b/Defs/JobDefs/SacrificePrisonerJob.xml new file mode 100644 index 0000000..5b16b3c --- /dev/null +++ b/Defs/JobDefs/SacrificePrisonerJob.xml @@ -0,0 +1,16 @@ + + + + ReviaRaceSacrificingPrisoner + ReviaRace.JobDrivers.SacrificePrisonerJobDriver + sacrificing prisoner. + false + + + + ReviaRaceSacrificedPrisonerWait + ReviaRace.JobDrivers.WaitPrisonerJobDriver + awaiting sacrifice. + false + + \ No newline at end of file diff --git a/1.2/Defs/ManeuverDefs/Tear.xml b/Defs/ManeuverDefs/Tear.xml similarity index 100% rename from 1.2/Defs/ManeuverDefs/Tear.xml rename to Defs/ManeuverDefs/Tear.xml diff --git a/1.2/Defs/MiscItemDefs/BloodRune.xml b/Defs/MiscItemDefs/BloodRune.xml similarity index 100% rename from 1.2/Defs/MiscItemDefs/BloodRune.xml rename to Defs/MiscItemDefs/BloodRune.xml diff --git a/1.2/Defs/MiscItemDefs/BloodRuneBlank.xml b/Defs/MiscItemDefs/BloodRuneBlank.xml similarity index 100% rename from 1.2/Defs/MiscItemDefs/BloodRuneBlank.xml rename to Defs/MiscItemDefs/BloodRuneBlank.xml diff --git a/1.2/Defs/MiscItemDefs/Bloodstone.xml b/Defs/MiscItemDefs/Bloodstone.xml similarity index 100% rename from 1.2/Defs/MiscItemDefs/Bloodstone.xml rename to Defs/MiscItemDefs/Bloodstone.xml diff --git a/1.2/Defs/MiscItemDefs/GreaterBloodRune.xml b/Defs/MiscItemDefs/GreaterBloodRune.xml similarity index 100% rename from 1.2/Defs/MiscItemDefs/GreaterBloodRune.xml rename to Defs/MiscItemDefs/GreaterBloodRune.xml diff --git a/1.2/Defs/MiscItemDefs/GreaterBloodRuneBlank.xml b/Defs/MiscItemDefs/GreaterBloodRuneBlank.xml similarity index 100% rename from 1.2/Defs/MiscItemDefs/GreaterBloodRuneBlank.xml rename to Defs/MiscItemDefs/GreaterBloodRuneBlank.xml diff --git a/1.2/Defs/MiscItemDefs/LesserBloodRune.xml b/Defs/MiscItemDefs/LesserBloodRune.xml similarity index 100% rename from 1.2/Defs/MiscItemDefs/LesserBloodRune.xml rename to Defs/MiscItemDefs/LesserBloodRune.xml diff --git a/1.2/Defs/MiscItemDefs/LesserBloodRuneBlank.xml b/Defs/MiscItemDefs/LesserBloodRuneBlank.xml similarity index 100% rename from 1.2/Defs/MiscItemDefs/LesserBloodRuneBlank.xml rename to Defs/MiscItemDefs/LesserBloodRuneBlank.xml diff --git a/1.2/Defs/MiscItemDefs/Palestone.xml b/Defs/MiscItemDefs/Palestone.xml similarity index 100% rename from 1.2/Defs/MiscItemDefs/Palestone.xml rename to Defs/MiscItemDefs/Palestone.xml diff --git a/1.2/Defs/MiscItemDefs/RedHazeDrug.xml b/Defs/MiscItemDefs/RedHazeDrug.xml similarity index 100% rename from 1.2/Defs/MiscItemDefs/RedHazeDrug.xml rename to Defs/MiscItemDefs/RedHazeDrug.xml diff --git a/1.2/Defs/NeedDefs/RedHazeNeed.xml b/Defs/NeedDefs/RedHazeNeed.xml similarity index 100% rename from 1.2/Defs/NeedDefs/RedHazeNeed.xml rename to Defs/NeedDefs/RedHazeNeed.xml diff --git a/1.2/Defs/PawnKindDefs/ReviaColonist.xml b/Defs/PawnKindDefs/ReviaColonist.xml similarity index 100% rename from 1.2/Defs/PawnKindDefs/ReviaColonist.xml rename to Defs/PawnKindDefs/ReviaColonist.xml diff --git a/Defs/PawnKindDefs/ReviaDisgraced.xml b/Defs/PawnKindDefs/ReviaDisgraced.xml new file mode 100644 index 0000000..7499375 --- /dev/null +++ b/Defs/PawnKindDefs/ReviaDisgraced.xml @@ -0,0 +1,21 @@ + + + + ReviaRaceDisgraced + + ReviaRaceAlien + 0.05 + 0 + +
  • Neolithic
  • +
    + 200~400 + 0 + 0 + 25 + 0.5 + +
  • ReviaRaceBackstory
  • +
    +
    +
    \ No newline at end of file diff --git a/1.2/Defs/PawnKindDefs/ReviaMarauder/ReviaBerserker.xml b/Defs/PawnKindDefs/ReviaMarauder/ReviaBerserker.xml similarity index 100% rename from 1.2/Defs/PawnKindDefs/ReviaMarauder/ReviaBerserker.xml rename to Defs/PawnKindDefs/ReviaMarauder/ReviaBerserker.xml diff --git a/1.2/Defs/PawnKindDefs/ReviaMarauder/ReviaMarauder.xml b/Defs/PawnKindDefs/ReviaMarauder/ReviaMarauder.xml similarity index 100% rename from 1.2/Defs/PawnKindDefs/ReviaMarauder/ReviaMarauder.xml rename to Defs/PawnKindDefs/ReviaMarauder/ReviaMarauder.xml diff --git a/1.2/Defs/PawnKindDefs/ReviaMarauder/ReviaRaider.xml b/Defs/PawnKindDefs/ReviaMarauder/ReviaRaider.xml similarity index 100% rename from 1.2/Defs/PawnKindDefs/ReviaMarauder/ReviaRaider.xml rename to Defs/PawnKindDefs/ReviaMarauder/ReviaRaider.xml diff --git a/1.2/Defs/PawnKindDefs/ReviaMarauder/ReviaSkullshatterer.xml b/Defs/PawnKindDefs/ReviaMarauder/ReviaSkullshatterer.xml similarity index 100% rename from 1.2/Defs/PawnKindDefs/ReviaMarauder/ReviaSkullshatterer.xml rename to Defs/PawnKindDefs/ReviaMarauder/ReviaSkullshatterer.xml diff --git a/Defs/PawnKindDefs/ReviaSerf.xml b/Defs/PawnKindDefs/ReviaSerf.xml new file mode 100644 index 0000000..a941c0d --- /dev/null +++ b/Defs/PawnKindDefs/ReviaSerf.xml @@ -0,0 +1,21 @@ + + + + ReviaRaceSerf + + ReviaRaceAlien + 0.00 + 0 + +
  • Neolithic
  • +
    + 100~150 + 0 + 0 + 25 + 0.5 + +
  • ReviaRaceBackstory
  • +
    +
    +
    \ No newline at end of file diff --git a/1.2/Defs/PawnKindDefs/ReviaTemplar/ReviaHighTemplar.xml b/Defs/PawnKindDefs/ReviaTemplar/ReviaHighTemplar.xml similarity index 100% rename from 1.2/Defs/PawnKindDefs/ReviaTemplar/ReviaHighTemplar.xml rename to Defs/PawnKindDefs/ReviaTemplar/ReviaHighTemplar.xml diff --git a/1.2/Defs/PawnKindDefs/ReviaTemplar/ReviaInitiate.xml b/Defs/PawnKindDefs/ReviaTemplar/ReviaInitiate.xml similarity index 100% rename from 1.2/Defs/PawnKindDefs/ReviaTemplar/ReviaInitiate.xml rename to Defs/PawnKindDefs/ReviaTemplar/ReviaInitiate.xml diff --git a/1.2/Defs/PawnKindDefs/ReviaTemplar/ReviaQuartermaster.xml b/Defs/PawnKindDefs/ReviaTemplar/ReviaQuartermaster.xml similarity index 100% rename from 1.2/Defs/PawnKindDefs/ReviaTemplar/ReviaQuartermaster.xml rename to Defs/PawnKindDefs/ReviaTemplar/ReviaQuartermaster.xml diff --git a/1.2/Defs/PawnKindDefs/ReviaTemplar/ReviaTemplar.xml b/Defs/PawnKindDefs/ReviaTemplar/ReviaTemplar.xml similarity index 100% rename from 1.2/Defs/PawnKindDefs/ReviaTemplar/ReviaTemplar.xml rename to Defs/PawnKindDefs/ReviaTemplar/ReviaTemplar.xml diff --git a/1.2/Defs/RaceDefs/ReviaRace.xml b/Defs/RaceDefs/ReviaRace.xml similarity index 82% rename from 1.2/Defs/RaceDefs/ReviaRace.xml rename to Defs/RaceDefs/ReviaRace.xml index 000c402..7055d6b 100644 --- a/1.2/Defs/RaceDefs/ReviaRace.xml +++ b/Defs/RaceDefs/ReviaRace.xml @@ -50,88 +50,84 @@ -
  • Kind
  • -
  • Wimp
  • +
  • + Kind +
  • +
  • + Wimp +
  • false true + +
  • + skin + + +
  • + 10 + RGBA(255,224,196,255) +
  • +
  • + 10 + RGBA(255,220,177,255) +
  • +
  • + 10 + RGBA(253,228,200,255) +
  • +
  • + 10 + RGBA(238,207,180,255) +
  • + + + + +
  • + 10 + RGBA(255,224,196,255) +
  • +
    +
    + +
  • + hair + + +
  • + 10 + RGBA(250,240,190,255) +
  • +
  • + 10 + RGBA(191,159,106,255) +
  • +
  • + 10 + RGBA(247,232,212,255) +
  • +
  • + 10 + RGBA(236,213,167,255) +
  • + + + + +
  • + 10 + RGBA(255,255,255,255) +
  • +
    +
    + +
  • Thin
  • Female
  • - - -
  • - 30 - RGBA(0.988, 0.965, 0.860, 1.0) -
  • -
  • - 30 - RGBA(0.999, 0.906, 0.839, 1.0) -
  • -
  • - 40 - RGBA(0.975, 0.898, 0.882, 1.0) -
  • -
    -
    - - -
  • - 20 - RGBA(0.60, 0.05, 0.05, 1.0) -
  • -
  • - 20 - RGBA(0.80, 0.50, 0.0, 1.0) -
  • -
  • - 20 - RGBA(0.40, 0.05, 0.0, 1.0) -
  • -
  • - 20 - RGBA(0.10, 0.10, 0.0, 1.0) -
  • -
  • - 20 - RGBA(0.90, 0.90, 0.10, 1.0) -
  • -
  • - 20 - RGBA(0.90, 0.80, 0.40, 1.0) -
  • -
    -
    - - -
  • - 20 - RGBA(0.60, 0.05, 0.05, 1.0) -
  • -
  • - 20 - RGBA(0.80, 0.50, 0.0, 1.0) -
  • -
  • - 20 - RGBA(0.40, 0.05, 0.0, 1.0) -
  • -
  • - 20 - RGBA(0.10, 0.10, 0.0, 1.0) -
  • -
  • - 20 - RGBA(0.90, 0.90, 0.10, 1.0) -
  • -
  • - 20 - RGBA(0.90, 0.80, 0.40, 1.0) -
  • -
    -
  • Things/Tails/Tail1 diff --git a/1.2/Defs/RecipeDefs/BloodRuneConsecrate.xml b/Defs/RecipeDefs/BloodRuneConsecrate.xml similarity index 100% rename from 1.2/Defs/RecipeDefs/BloodRuneConsecrate.xml rename to Defs/RecipeDefs/BloodRuneConsecrate.xml diff --git a/1.2/Defs/RecipeDefs/BloodRuneCraft.xml b/Defs/RecipeDefs/BloodRuneCraft.xml similarity index 100% rename from 1.2/Defs/RecipeDefs/BloodRuneCraft.xml rename to Defs/RecipeDefs/BloodRuneCraft.xml diff --git a/1.2/Defs/RecipeDefs/ElephantTuskSacrifice.xml b/Defs/RecipeDefs/ElephantTuskSacrifice.xml similarity index 100% rename from 1.2/Defs/RecipeDefs/ElephantTuskSacrifice.xml rename to Defs/RecipeDefs/ElephantTuskSacrifice.xml diff --git a/1.2/Defs/RecipeDefs/GreaterBloodRuneConsecrate.xml b/Defs/RecipeDefs/GreaterBloodRuneConsecrate.xml similarity index 100% rename from 1.2/Defs/RecipeDefs/GreaterBloodRuneConsecrate.xml rename to Defs/RecipeDefs/GreaterBloodRuneConsecrate.xml diff --git a/1.2/Defs/RecipeDefs/GreaterBloodRuneCraft.xml b/Defs/RecipeDefs/GreaterBloodRuneCraft.xml similarity index 100% rename from 1.2/Defs/RecipeDefs/GreaterBloodRuneCraft.xml rename to Defs/RecipeDefs/GreaterBloodRuneCraft.xml diff --git a/1.2/Defs/RecipeDefs/HumanlikeSacrifice.xml b/Defs/RecipeDefs/HumanlikeSacrifice.xml similarity index 100% rename from 1.2/Defs/RecipeDefs/HumanlikeSacrifice.xml rename to Defs/RecipeDefs/HumanlikeSacrifice.xml diff --git a/1.2/Defs/RecipeDefs/LesserBloodRuneConsecrate.xml b/Defs/RecipeDefs/LesserBloodRuneConsecrate.xml similarity index 100% rename from 1.2/Defs/RecipeDefs/LesserBloodRuneConsecrate.xml rename to Defs/RecipeDefs/LesserBloodRuneConsecrate.xml diff --git a/1.2/Defs/RecipeDefs/LesserBloodRuneCraft.xml b/Defs/RecipeDefs/LesserBloodRuneCraft.xml similarity index 100% rename from 1.2/Defs/RecipeDefs/LesserBloodRuneCraft.xml rename to Defs/RecipeDefs/LesserBloodRuneCraft.xml diff --git a/1.2/Defs/RecipeDefs/RawMeatSacrifice.xml b/Defs/RecipeDefs/RawMeatSacrifice.xml similarity index 100% rename from 1.2/Defs/RecipeDefs/RawMeatSacrifice.xml rename to Defs/RecipeDefs/RawMeatSacrifice.xml diff --git a/1.2/Defs/RecipeDefs/ThrumboHornSacrifice.xml b/Defs/RecipeDefs/ThrumboHornSacrifice.xml similarity index 100% rename from 1.2/Defs/RecipeDefs/ThrumboHornSacrifice.xml rename to Defs/RecipeDefs/ThrumboHornSacrifice.xml diff --git a/1.2/Defs/ResearchProjectDefs/AdvancedReviaEquipment.xml b/Defs/ResearchProjectDefs/AdvancedReviaEquipment.xml similarity index 100% rename from 1.2/Defs/ResearchProjectDefs/AdvancedReviaEquipment.xml rename to Defs/ResearchProjectDefs/AdvancedReviaEquipment.xml diff --git a/1.2/Defs/ResearchProjectDefs/BasicReviaEquipment.xml b/Defs/ResearchProjectDefs/BasicReviaEquipment.xml similarity index 100% rename from 1.2/Defs/ResearchProjectDefs/BasicReviaEquipment.xml rename to Defs/ResearchProjectDefs/BasicReviaEquipment.xml diff --git a/1.2/Defs/ResearchProjectDefs/BloodBenediction.xml b/Defs/ResearchProjectDefs/BloodBenediction.xml similarity index 100% rename from 1.2/Defs/ResearchProjectDefs/BloodBenediction.xml rename to Defs/ResearchProjectDefs/BloodBenediction.xml diff --git a/1.2/Defs/ResearchProjectDefs/IntermediateReviaEquipment.xml b/Defs/ResearchProjectDefs/IntermediateReviaEquipment.xml similarity index 100% rename from 1.2/Defs/ResearchProjectDefs/IntermediateReviaEquipment.xml rename to Defs/ResearchProjectDefs/IntermediateReviaEquipment.xml diff --git a/1.2/Defs/ResearchProjectDefs/ReligiousCeremonies.xml b/Defs/ResearchProjectDefs/ReligiousCeremonies.xml similarity index 100% rename from 1.2/Defs/ResearchProjectDefs/ReligiousCeremonies.xml rename to Defs/ResearchProjectDefs/ReligiousCeremonies.xml diff --git a/1.2/Defs/ResearchProjectDefs/SanctifiedWeaponry.xml b/Defs/ResearchProjectDefs/SanctifiedWeaponry.xml similarity index 100% rename from 1.2/Defs/ResearchProjectDefs/SanctifiedWeaponry.xml rename to Defs/ResearchProjectDefs/SanctifiedWeaponry.xml diff --git a/1.2/Defs/ResearchTabDefs/RevianResearch.xml b/Defs/ResearchTabDefs/RevianResearch.xml similarity index 100% rename from 1.2/Defs/ResearchTabDefs/RevianResearch.xml rename to Defs/ResearchTabDefs/RevianResearch.xml diff --git a/1.2/Defs/RoomDefs/SkarneChapel.xml b/Defs/RoomDefs/SkarneChapel.xml similarity index 100% rename from 1.2/Defs/RoomDefs/SkarneChapel.xml rename to Defs/RoomDefs/SkarneChapel.xml diff --git a/1.2/Defs/RulePackDefs/ReviaMarauderSettlementName.xml b/Defs/RulePackDefs/ReviaMarauderFactionName.xml similarity index 100% rename from 1.2/Defs/RulePackDefs/ReviaMarauderSettlementName.xml rename to Defs/RulePackDefs/ReviaMarauderFactionName.xml diff --git a/1.2/Defs/RulePackDefs/ReviaMarauderFactionName.xml b/Defs/RulePackDefs/ReviaMarauderSettlementName.xml similarity index 100% rename from 1.2/Defs/RulePackDefs/ReviaMarauderFactionName.xml rename to Defs/RulePackDefs/ReviaMarauderSettlementName.xml diff --git a/Defs/RulePackDefs/ReviaPersonName.xml b/Defs/RulePackDefs/ReviaPersonName.xml new file mode 100644 index 0000000..95589dc --- /dev/null +++ b/Defs/RulePackDefs/ReviaPersonName.xml @@ -0,0 +1,76 @@ + + + + NamerPersonRevia + + +
  • name->[firstName] [tribeName]
  • + +
  • tribeName->[animal]
  • +
  • tribeName->[animal]-[interactionLiving]
  • +
  • tribeName->[object]-[interactionNonLiving]
  • + +
  • firstName->Red
  • +
  • firstName->Crimson
  • +
  • firstName->Carmine
  • +
  • firstName->Vermillion
  • +
  • firstName->Scarlet
  • +
  • firstName->Orange
  • +
  • firstName->Sunset
  • +
  • firstName->Blood
  • +
  • firstName->Yellow
  • +
  • firstName->Solstice
  • +
  • firstName->Eclipse
  • +
  • firstName->Green
  • +
  • firstName->Grass
  • +
  • firstName->Verdant
  • +
  • firstName->Emerald
  • +
  • firstName->Obsidian
  • +
  • firstName->Blue
  • +
  • firstName->Ocean
  • +
  • firstName->Stream
  • +
  • firstName->Sapphire
  • + +
  • animal->Leopard
  • +
  • animal->Jaguar
  • +
  • animal->Serpent
  • +
  • animal->Snake
  • +
  • animal->Fox
  • +
  • animal->Anaconda
  • +
  • animal->Eagle
  • +
  • animal->Tiger
  • +
  • animal->Wolf
  • +
  • animal->Coyote
  • +
  • animal->Badger
  • +
  • animal->Alligator
  • +
  • animal->Crocodile
  • +
  • animal->Piranha
  • + +
  • object->Stone
  • +
  • object->Obsidian
  • +
  • object->Sapphire
  • +
  • object->Emerald
  • +
  • object->Gold
  • +
  • object->Iron
  • +
  • object->Steel
  • +
  • object->Skull
  • +
  • object->Bone
  • + +
  • interactionLiving->tamer
  • +
  • interactionLiving->beater
  • +
  • interactionLiving->bearer
  • +
  • interactionLiving->destroyer
  • +
  • interactionLiving->slayer
  • +
  • interactionLiving->flayer
  • +
  • interactionLiving->scourge
  • + +
  • interactionNonLiving->breaker
  • +
  • interactionNonLiving->carver
  • +
  • interactionNonLiving->shatterer
  • +
  • interactionNonLiving->crusher
  • +
  • interactionNonLiving->smasher
  • +
  • interactionNonLiving->shaper
  • + + + +
    \ No newline at end of file diff --git a/1.2/Defs/RulePackDefs/ReviaTemplarFactionName.xml b/Defs/RulePackDefs/ReviaTemplarFactionName.xml similarity index 87% rename from 1.2/Defs/RulePackDefs/ReviaTemplarFactionName.xml rename to Defs/RulePackDefs/ReviaTemplarFactionName.xml index f5da403..20161ca 100644 --- a/1.2/Defs/RulePackDefs/ReviaTemplarFactionName.xml +++ b/Defs/RulePackDefs/ReviaTemplarFactionName.xml @@ -13,15 +13,15 @@
  • darkendevil->Justiciars
  • darkendevil->Inquisitors
  • darkendevil->Templars
  • +
  • darkendevil->Empire
  • +
  • darkendevil->Despotate
  • +
  • darkendevil->Hierarchy
  • godepithet->the Bloody Rose
  • godepithet->the Sallow Moon
  • godepithet->the Blood God
  • godepithet->Skarne
  • -
  • godepithet->Tyr
  • -
  • godepithet->Fimbulventr
  • godepithet->the Allmother
  • -
  • godepithet->the Allfather
  • godepithet->the Ever-Thirsting
  • diff --git a/1.2/Defs/RulePackDefs/ReviaTemplarSettlementName.xml b/Defs/RulePackDefs/ReviaTemplarSettlementName.xml similarity index 100% rename from 1.2/Defs/RulePackDefs/ReviaTemplarSettlementName.xml rename to Defs/RulePackDefs/ReviaTemplarSettlementName.xml diff --git a/1.2/Defs/Scenarios/ReviaExclave.xml b/Defs/Scenarios/ReviaExclave.xml similarity index 100% rename from 1.2/Defs/Scenarios/ReviaExclave.xml rename to Defs/Scenarios/ReviaExclave.xml diff --git a/1.2/Defs/TaleDefs/TaleSacrificed.xml b/Defs/TaleDefs/TaleSacrificed.xml similarity index 57% rename from 1.2/Defs/TaleDefs/TaleSacrificed.xml rename to Defs/TaleDefs/TaleSacrificed.xml index 136dc21..0dd70fe 100644 --- a/1.2/Defs/TaleDefs/TaleSacrificed.xml +++ b/Defs/TaleDefs/TaleSacrificed.xml @@ -2,10 +2,12 @@ ReviaRaceTaleSacrificed - - Tale_SinglePawn + + Tale_DoublePawn Expirable false + SACRIFICER + PRISONER 1 20 diff --git a/1.2/Defs/ThingCategoryDefs/ReviaCategory.xml b/Defs/ThingCategoryDefs/ReviaCategory.xml similarity index 100% rename from 1.2/Defs/ThingCategoryDefs/ReviaCategory.xml rename to Defs/ThingCategoryDefs/ReviaCategory.xml diff --git a/Defs/ThoughtDefs/ThoughtSacrificedFear.xml b/Defs/ThoughtDefs/ThoughtSacrificedFear.xml new file mode 100644 index 0000000..7171540 --- /dev/null +++ b/Defs/ThoughtDefs/ThoughtSacrificedFear.xml @@ -0,0 +1,19 @@ + + + + ReviaRaceThoughtSacrificedFear + 6 + 4 + 0.85 + +
  • Masochist
  • +
    + +
  • + + One of the other prisoners were sacrificed. I could hear their screams from my cell... + -15 +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.2/Defs/ThoughtDefs/ThoughtSacrificed.xml b/Defs/ThoughtDefs/ThoughtSacrificedNegative.xml similarity index 90% rename from 1.2/Defs/ThoughtDefs/ThoughtSacrificed.xml rename to Defs/ThoughtDefs/ThoughtSacrificedNegative.xml index 5a4df5a..041c2c6 100644 --- a/1.2/Defs/ThoughtDefs/ThoughtSacrificed.xml +++ b/Defs/ThoughtDefs/ThoughtSacrificedNegative.xml @@ -1,7 +1,7 @@  - ReviaRaceThoughtSacrificed + ReviaRaceThoughtSacrificedNegative 6 4 0.65 diff --git a/1.2/Defs/ThoughtDefs/ThoughtSacrificedOpinion.xml b/Defs/ThoughtDefs/ThoughtSacrificedOpinion.xml similarity index 100% rename from 1.2/Defs/ThoughtDefs/ThoughtSacrificedOpinion.xml rename to Defs/ThoughtDefs/ThoughtSacrificedOpinion.xml diff --git a/1.2/Defs/ThoughtDefs/ThoughtSacrificedPositive.xml b/Defs/ThoughtDefs/ThoughtSacrificedPositive.xml similarity index 100% rename from 1.2/Defs/ThoughtDefs/ThoughtSacrificedPositive.xml rename to Defs/ThoughtDefs/ThoughtSacrificedPositive.xml diff --git a/1.2/Defs/ToolCapacityDefs/Gash.xml b/Defs/ToolCapacityDefs/Gash.xml similarity index 100% rename from 1.2/Defs/ToolCapacityDefs/Gash.xml rename to Defs/ToolCapacityDefs/Gash.xml diff --git a/1.2/Defs/Tutor/ConceptSacrificeHumanlike.xml b/Defs/Tutor/ConceptSacrificeHumanlike.xml similarity index 100% rename from 1.2/Defs/Tutor/ConceptSacrificeHumanlike.xml rename to Defs/Tutor/ConceptSacrificeHumanlike.xml diff --git a/1.2/Defs/WeaponDefs/BaseReviaWeapon.xml b/Defs/WeaponDefs/BaseReviaWeapon.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/BaseReviaWeapon.xml rename to Defs/WeaponDefs/BaseReviaWeapon.xml diff --git a/1.2/Defs/WeaponDefs/BlessedSerratedDagger.xml b/Defs/WeaponDefs/BlessedSerratedDagger.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/BlessedSerratedDagger.xml rename to Defs/WeaponDefs/BlessedSerratedDagger.xml diff --git a/1.2/Defs/WeaponDefs/BlessedSerratedScythe.xml b/Defs/WeaponDefs/BlessedSerratedScythe.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/BlessedSerratedScythe.xml rename to Defs/WeaponDefs/BlessedSerratedScythe.xml diff --git a/1.2/Defs/WeaponDefs/BlessedSerratedSword.xml b/Defs/WeaponDefs/BlessedSerratedSword.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/BlessedSerratedSword.xml rename to Defs/WeaponDefs/BlessedSerratedSword.xml diff --git a/1.2/Defs/WeaponDefs/Chainsword.xml b/Defs/WeaponDefs/Chainsword.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/Chainsword.xml rename to Defs/WeaponDefs/Chainsword.xml diff --git a/1.2/Defs/WeaponDefs/FlechetteCannon.xml b/Defs/WeaponDefs/FlechetteCannon.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/FlechetteCannon.xml rename to Defs/WeaponDefs/FlechetteCannon.xml diff --git a/1.2/Defs/WeaponDefs/RepeatingCrossbow.xml b/Defs/WeaponDefs/RepeatingCrossbow.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/RepeatingCrossbow.xml rename to Defs/WeaponDefs/RepeatingCrossbow.xml diff --git a/1.2/Defs/WeaponDefs/SerratedDagger.xml b/Defs/WeaponDefs/SerratedDagger.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/SerratedDagger.xml rename to Defs/WeaponDefs/SerratedDagger.xml diff --git a/1.2/Defs/WeaponDefs/SerratedScythe.xml b/Defs/WeaponDefs/SerratedScythe.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/SerratedScythe.xml rename to Defs/WeaponDefs/SerratedScythe.xml diff --git a/1.2/Defs/WeaponDefs/SerratedSword.xml b/Defs/WeaponDefs/SerratedSword.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/SerratedSword.xml rename to Defs/WeaponDefs/SerratedSword.xml diff --git a/1.2/Defs/WeaponDefs/ThrowingKnife.xml b/Defs/WeaponDefs/ThrowingKnife.xml similarity index 100% rename from 1.2/Defs/WeaponDefs/ThrowingKnife.xml rename to Defs/WeaponDefs/ThrowingKnife.xml diff --git a/1.2/Defs/WorkGivers/WorkBloodSigil.xml b/Defs/WorkGivers/WorkBloodSigil.xml similarity index 93% rename from 1.2/Defs/WorkGivers/WorkBloodSigil.xml rename to Defs/WorkGivers/WorkBloodSigil.xml index 469bd2b..3b8bcde 100644 --- a/1.2/Defs/WorkGivers/WorkBloodSigil.xml +++ b/Defs/WorkGivers/WorkBloodSigil.xml @@ -5,7 +5,7 @@ WorkGiver_DoBill ReviaSacrifice - 100 + 105
  • ReviaBloodSigil
  • diff --git a/1.2/Defs/WorkGivers/WorkSacrificeSpot.xml b/Defs/WorkGivers/WorkSacrificeSpot.xml similarity index 100% rename from 1.2/Defs/WorkGivers/WorkSacrificeSpot.xml rename to Defs/WorkGivers/WorkSacrificeSpot.xml diff --git a/1.2/Defs/WorkTypes/WorkTypeSacrifice.xml b/Defs/WorkTypes/WorkTypeSacrifice.xml similarity index 92% rename from 1.2/Defs/WorkTypes/WorkTypeSacrifice.xml rename to Defs/WorkTypes/WorkTypeSacrifice.xml index 6a58401..5f15dfe 100644 --- a/1.2/Defs/WorkTypes/WorkTypeSacrifice.xml +++ b/Defs/WorkTypes/WorkTypeSacrifice.xml @@ -7,7 +7,7 @@ sacrificing Sacrifice things to honour the gods. Sacrifice - 100 + 102 true true diff --git a/Source/Comps/SacrificeSpotComp.cs b/Source/Comps/SacrificeSpotComp.cs new file mode 100644 index 0000000..8a33774 --- /dev/null +++ b/Source/Comps/SacrificeSpotComp.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; +using Verse.AI; +using ReviaRace.Helpers; + +namespace ReviaRace.Comps +{ + public class SacrificeSpotComp : CompUsable + { + public override IEnumerable CompFloatMenuOptions(Pawn pawn) + { + if (!pawn.CanReserve(parent)) + { + yield break; + } + else if (pawn.Map != null && pawn.Map == Find.CurrentMap) + { + // Pick a prisoner to sacrifice. + if (pawn.Map.mapPawns.PrisonersOfColonyCount == 0) + { + yield return new FloatMenuOption("No prisoners to be sacrificed.", null, MenuOptionPriority.DisabledOption); + } + else + { + foreach (var prisoner in pawn.Map.mapPawns.PrisonersOfColony) + { + yield return CreateSacrificeOption(pawn, prisoner); + } + } + } + } + + protected FloatMenuOption CreateSacrificeOption(Pawn sacrificer, Pawn prisoner) + { + return new FloatMenuOption($"Sacrifice {prisoner}", () => + { + var job = JobMaker.MakeJob(Defs.SacrificePrisoner, sacrificer, parent, prisoner); + sacrificer.jobs.TryTakeOrderedJob(job); + }); + } + } +} diff --git a/Source/Helpers/Defs.cs b/Source/Helpers/Defs.cs new file mode 100644 index 0000000..e47fbce --- /dev/null +++ b/Source/Helpers/Defs.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Runtime.CompilerServices; +using RimWorld; +using Verse; + +namespace ReviaRace.Helpers +{ + internal static class Defs + { + // Tales + internal static TaleDef TaleSacrificed => DefDatabase.GetNamed("ReviaRaceTaleSacrificed"); + + // Thoughts + internal static ThoughtDef SacrificedFear => DefDatabase.GetNamed("ReviaRaceThoughtSacrificedFear"); + internal static ThoughtDef SacrificedNegative => DefDatabase.GetNamed("ReviaRaceThoughtSacrificedNegative"); + internal static ThoughtDef SacrificedPositive => DefDatabase.GetNamed("ReviaRaceThoughtSacrificedPositive"); + + + // Things + internal static ThingDef BloodMote => DefDatabase.GetNamed("Mote_FoodBitMeat"); + + internal static ThingDef Bloodstone => DefDatabase.GetNamed("ReviaRaceBloodstone"); + internal static ThingDef Palestone => DefDatabase.GetNamed("ReviaRacePalestone"); + + // DamageDefs + internal static DamageDef HeartExtraction => DefDatabase.GetNamed("ReviaRaceSacrificeDamage"); + + // Jobs + internal static JobDef SacrificePrisoner => DefDatabase.GetNamed("ReviaRaceSacrificingPrisoner"); + internal static JobDef PrisonerWait => DefDatabase.GetNamed("ReviaRaceSacrificedPrisonerWait"); + } +} diff --git a/Source/Helpers/PawnHelpers.cs b/Source/Helpers/PawnHelpers.cs new file mode 100644 index 0000000..d248bb4 --- /dev/null +++ b/Source/Helpers/PawnHelpers.cs @@ -0,0 +1,22 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace ReviaRace.Helpers +{ + internal static class PawnHelpers + { + internal static bool HasTraits(this Pawn pawn) => pawn?.story?.traits != null; + internal static bool HasTrait(this Pawn pawn, string defName) => pawn.story.traits.HasTrait(TraitDef.Named(defName)); + internal static bool IsMasochist(this Pawn pawn) => pawn.HasTraits() && pawn.HasTrait("Masochist"); + internal static bool IsBloodlust(this Pawn pawn) => pawn.HasTraits() && pawn.HasTrait("Bloodlust"); + internal static bool IsCannibal(this Pawn pawn) => pawn.HasTraits() && pawn.HasTrait("Cannibal"); + internal static bool IsPsychopath(this Pawn pawn) => pawn.HasTraits() && pawn.HasTrait("Psychopath"); + internal static bool IsRevia(this Pawn pawn) => pawn.kindDef.race.defName.ToLower().Contains("revia"); + internal static bool IsHumanlike(this Pawn pawn) => pawn.RaceProps.Humanlike; + } +} diff --git a/Source/Helpers/Strings.cs b/Source/Helpers/Strings.cs new file mode 100644 index 0000000..7f56161 --- /dev/null +++ b/Source/Helpers/Strings.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ReviaRace.Helpers +{ + internal static class Strings + { + } +} diff --git a/Source/JobDrivers/SacrificePrisonerJobDriver.cs b/Source/JobDrivers/SacrificePrisonerJobDriver.cs new file mode 100644 index 0000000..e2f8b8b --- /dev/null +++ b/Source/JobDrivers/SacrificePrisonerJobDriver.cs @@ -0,0 +1,143 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ReviaRace.Helpers; +using RimWorld; +using RimWorld.Planet; +using Verse; +using Verse.AI; + +namespace ReviaRace.JobDrivers +{ + public class SacrificePrisonerJobDriver : JobDriver + { + public readonly TargetIndex iPawn = TargetIndex.A; + public readonly TargetIndex iSacrificeBuilding = TargetIndex.B; // Any sacrifice building + public readonly TargetIndex iPrisoner = TargetIndex.C; // Prisoner + + public int TicksLeft { get; set; } = (int)TicksMax; + public const float TicksMax = 300; + + public Pawn Sacrificer + { + get + { + switch ((Thing)job.GetTarget(iPawn)) + { + case Pawn pawnSacrificer: + return pawnSacrificer; + default: + return null; + } + } + } + + public Pawn Prisoner + { + get + { + switch((Thing)job.GetTarget(iPrisoner)) + { + case Pawn pawnPrisoner: + return pawnPrisoner; + default: + return null; + } + } + } + + public Building SacrificeSpot + { + get + { + return (Building)job.GetTarget(iSacrificeBuilding); + } + } + + public override bool TryMakePreToilReservations(bool errorOnFailed) + { + return pawn.Reserve(Prisoner, job, 1, -1, null, errorOnFailed) && + pawn.Reserve(SacrificeSpot, job, 1, -1, null); + } + + protected override IEnumerable MakeNewToils() + { + this.job.count = 1; + + this.FailOnDestroyedOrNull(iPrisoner); + this.FailOnDestroyedOrNull(iSacrificeBuilding); + this.FailOnAggroMentalState(iPrisoner); + + yield return Toils_Goto.GotoThing(iPrisoner, PathEndMode.OnCell); + yield return Toils_Haul.StartCarryThing(iPrisoner, true, false); + yield return Toils_Goto.GotoThing(iSacrificeBuilding, SacrificeSpot.InteractionCell); + + var dropSacrificePrisoner = Toils_Reserve.Release(iPrisoner); + yield return dropSacrificePrisoner; + + var doSacrificePrisoner = new Toil + { + socialMode = RandomSocialMode.Off, + }; + doSacrificePrisoner.AddFailCondition(() => Prisoner.Dead); + doSacrificePrisoner.defaultCompleteMode = ToilCompleteMode.Never; + doSacrificePrisoner.AddPreTickAction(() => + { + --TicksLeft; + if (TicksLeft <= 0) + { + ReadyForNextToil(); + } + }); + yield return doSacrificePrisoner.WithProgressBar(iPawn, () => (float)TicksLeft / TicksMax); + yield return Toils_Reserve.Release(iSacrificeBuilding); + var afterSacrificePrisoner = new Toil + { + defaultCompleteMode = ToilCompleteMode.Instant, + initAction = () => + { + var heartBpr = Prisoner.RaceProps.body.AllParts.Find(bpr => bpr.def.defName == "Heart"); + var dInfo = new DamageInfo(Defs.HeartExtraction, 99999f, armorPenetration: 999f, hitPart: heartBpr); + Prisoner.Kill(dInfo); + ThoughtUtility.GiveThoughtsForPawnExecuted(Prisoner, PawnExecutionKind.GenericBrutal); + + // Apply negative relations modifier. + if (pawn.Faction != null && Prisoner.Faction != null) + { + Faction playerFaction = pawn.Faction; + Faction prisonerFaction = Prisoner.Faction; + string reason = "GoodwillChangedReason_RemovedBodyPart".Translate(heartBpr.Label); + GlobalTargetInfo? LookTargets = pawn; + playerFaction.TryAffectGoodwillWith(prisonerFaction, -25); + } + + // Apply thoughts to pawns. + foreach (var mapPawn in Map.mapPawns.FreeColonistsAndPrisoners) + { + MemoryThoughtHandler memoryHandler = new MemoryThoughtHandler(mapPawn); + if (mapPawn.IsPrisoner) + { + memoryHandler.TryGainMemory(Defs.SacrificedFear); + } + else if (mapPawn.IsColonist && mapPawn.IsRevia()) + { + memoryHandler.TryGainMemory(Defs.SacrificedPositive); + } + else if (mapPawn.IsColonist && + mapPawn.IsCannibal() || mapPawn.IsPsychopath() || mapPawn.IsBloodlust()) + { + memoryHandler.TryGainMemory(Defs.SacrificedNegative); + } + } + + // Spawn the product. + GenSpawn.Spawn(Defs.Bloodstone, Prisoner.Position, Map); + TaleRecorder.RecordTale(Defs.TaleSacrificed, new[] { Sacrificer, Prisoner }); + } + }; + yield return afterSacrificePrisoner; + } + } +} diff --git a/Source/JobDrivers/WaitPrisonerJobDriver.cs b/Source/JobDrivers/WaitPrisonerJobDriver.cs new file mode 100644 index 0000000..ed24744 --- /dev/null +++ b/Source/JobDrivers/WaitPrisonerJobDriver.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using RimWorld; +using Verse; +using Verse.AI; + +namespace ReviaRace.JobDrivers +{ + public class WaitPrisonerJobDriver : JobDriver + { + public override bool TryMakePreToilReservations(bool errorOnFailed) + { + return true; // No reservations. + } + + private Pawn Prisoner => (Pawn)TargetA; + private TargetIndex PrisonerIndex => TargetIndex.A; + + protected override IEnumerable MakeNewToils() + { + this.FailOnDespawnedNullOrForbidden(PrisonerIndex); + this.FailOn(() => Prisoner.Dead); + + yield return new Toil + { + initAction = () => + { + Prisoner.Reserve(pawn.Position, job); + pawn.pather.StopDead(); + var driver = pawn.jobs.curDriver; + pawn.jobs.posture = PawnPosture.LayingOnGroundFaceUp; + driver.asleep = false; + }, + defaultCompleteMode = ToilCompleteMode.Never, + }; + } + } +} diff --git a/Source/ReviaRace.csproj b/Source/ReviaRace.csproj index 7edfe43..6b43c02 100644 --- a/Source/ReviaRace.csproj +++ b/Source/ReviaRace.csproj @@ -42,6 +42,10 @@ MinimumRecommendedRules.ruleset + + False + ..\1.2\Assemblies\0Harmony.dll + ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False @@ -58,15 +62,27 @@ ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll False + + ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll + False + + + + + + + + + \ No newline at end of file diff --git a/Source/WorkGivers/SacrificePrisonerWorkGiver.cs b/Source/WorkGivers/SacrificePrisonerWorkGiver.cs new file mode 100644 index 0000000..6c3209c --- /dev/null +++ b/Source/WorkGivers/SacrificePrisonerWorkGiver.cs @@ -0,0 +1,49 @@ +using RimWorld; +using Verse; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse.AI; +using ReviaRace.Helpers; + +namespace ReviaRace.WorkGivers +{ + public class SacrificePrisonerWorkGiver : WorkGiver_Scanner + { + public override int MaxRegionsToScanBeforeGlobalSearch => 4; + public override PathEndMode PathEndMode => PathEndMode.OnCell; + public override ThingRequest PotentialWorkThingRequest => ThingRequest.ForGroup(ThingRequestGroup.Pawn); + + public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) + { + if (!forced) + { + return false; + } + + Pawn target = t as Pawn; + if (target == null || + target.Map == null || + !target.IsHumanlike()) + { + return false; + } + + if (!pawn.CanReach(t, PathEndMode, Danger.Some) || + t.IsForbidden(pawn)) + { + return false; + } + + return true; + } + + public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false) + { + // TODO: Not implemented yet. + return null; + } + } +} diff --git a/Source/obj/Debug/ReviaRace.csprojAssemblyReference.cache b/Source/obj/Debug/ReviaRace.csprojAssemblyReference.cache index 97b9858..1cc863c 100644 Binary files a/Source/obj/Debug/ReviaRace.csprojAssemblyReference.cache and b/Source/obj/Debug/ReviaRace.csprojAssemblyReference.cache differ diff --git a/Source/obj/Release 1.2/DesignTimeResolveAssemblyReferencesInput.cache b/Source/obj/Release 1.2/DesignTimeResolveAssemblyReferencesInput.cache index 07aedd1..c297db6 100644 Binary files a/Source/obj/Release 1.2/DesignTimeResolveAssemblyReferencesInput.cache and b/Source/obj/Release 1.2/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Source/obj/Release 1.2/ReviaRace.csproj.CopyComplete b/Source/obj/Release 1.2/ReviaRace.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/Source/obj/Release 1.2/ReviaRace.csproj.FileListAbsolute.txt b/Source/obj/Release 1.2/ReviaRace.csproj.FileListAbsolute.txt index ab8e089..acad46b 100644 --- a/Source/obj/Release 1.2/ReviaRace.csproj.FileListAbsolute.txt +++ b/Source/obj/Release 1.2/ReviaRace.csproj.FileListAbsolute.txt @@ -3,3 +3,4 @@ F:\SteamLibrary\steamapps\common\RimWorld\Mods\RimWorld-ReviaRaceMod\1.2\Assembl F:\SteamLibrary\steamapps\common\RimWorld\Mods\RimWorld-ReviaRaceMod\Source\obj\Release 1.2\ReviaRace.csprojAssemblyReference.cache F:\SteamLibrary\steamapps\common\RimWorld\Mods\RimWorld-ReviaRaceMod\Source\obj\Release 1.2\ReviaRace.dll F:\SteamLibrary\steamapps\common\RimWorld\Mods\RimWorld-ReviaRaceMod\Source\obj\Release 1.2\ReviaRace.pdb +F:\SteamLibrary\steamapps\common\RimWorld\Mods\RimWorld-ReviaRaceMod\Source\obj\Release 1.2\ReviaRace.csproj.CopyComplete diff --git a/Source/obj/Release 1.2/ReviaRace.csprojAssemblyReference.cache b/Source/obj/Release 1.2/ReviaRace.csprojAssemblyReference.cache index e632d52..56d84e2 100644 Binary files a/Source/obj/Release 1.2/ReviaRace.csprojAssemblyReference.cache and b/Source/obj/Release 1.2/ReviaRace.csprojAssemblyReference.cache differ diff --git a/Source/obj/Release 1.2/ReviaRace.dll b/Source/obj/Release 1.2/ReviaRace.dll index e67a819..8bf3013 100644 Binary files a/Source/obj/Release 1.2/ReviaRace.dll and b/Source/obj/Release 1.2/ReviaRace.dll differ diff --git a/Source/obj/Release 1.2/ReviaRace.pdb b/Source/obj/Release 1.2/ReviaRace.pdb index c5525b2..5b40756 100644 Binary files a/Source/obj/Release 1.2/ReviaRace.pdb and b/Source/obj/Release 1.2/ReviaRace.pdb differ diff --git a/Source/obj/Release/ReviaRace.csprojAssemblyReference.cache b/Source/obj/Release/ReviaRace.csprojAssemblyReference.cache index 6ff70ca..f1e0f16 100644 Binary files a/Source/obj/Release/ReviaRace.csprojAssemblyReference.cache and b/Source/obj/Release/ReviaRace.csprojAssemblyReference.cache differ diff --git a/Textures/Things/Ears/EarLeft_east.png b/Textures/Things/Ears/EarLeft_east.png index 2d910e8..f61dcd8 100644 Binary files a/Textures/Things/Ears/EarLeft_east.png and b/Textures/Things/Ears/EarLeft_east.png differ diff --git a/Textures/Things/Ears/EarLeft_east.png~ b/Textures/Things/Ears/EarLeft_east.png~ new file mode 100644 index 0000000..2d910e8 Binary files /dev/null and b/Textures/Things/Ears/EarLeft_east.png~ differ diff --git a/Textures/Things/Ears/EarLeft_eastm.png b/Textures/Things/Ears/EarLeft_eastm.png index d0f53e5..392c3e0 100644 Binary files a/Textures/Things/Ears/EarLeft_eastm.png and b/Textures/Things/Ears/EarLeft_eastm.png differ diff --git a/Textures/Things/Ears/EarLeft_eastm.png~ b/Textures/Things/Ears/EarLeft_eastm.png~ new file mode 100644 index 0000000..d0f53e5 Binary files /dev/null and b/Textures/Things/Ears/EarLeft_eastm.png~ differ diff --git a/Textures/Things/Ears/EarLeft_north.png b/Textures/Things/Ears/EarLeft_north.png index 791d182..548d28d 100644 Binary files a/Textures/Things/Ears/EarLeft_north.png and b/Textures/Things/Ears/EarLeft_north.png differ diff --git a/Textures/Things/Ears/EarLeft_north.png~ b/Textures/Things/Ears/EarLeft_north.png~ new file mode 100644 index 0000000..791d182 Binary files /dev/null and b/Textures/Things/Ears/EarLeft_north.png~ differ diff --git a/Textures/Things/Ears/EarLeft_northm.png b/Textures/Things/Ears/EarLeft_northm.png index bf6fe36..39c08df 100644 Binary files a/Textures/Things/Ears/EarLeft_northm.png and b/Textures/Things/Ears/EarLeft_northm.png differ diff --git a/Textures/Things/Ears/EarLeft_northm.png~ b/Textures/Things/Ears/EarLeft_northm.png~ new file mode 100644 index 0000000..bf6fe36 Binary files /dev/null and b/Textures/Things/Ears/EarLeft_northm.png~ differ diff --git a/Textures/Things/Ears/EarLeft_south.png b/Textures/Things/Ears/EarLeft_south.png index ad08059..4fefcb6 100644 Binary files a/Textures/Things/Ears/EarLeft_south.png and b/Textures/Things/Ears/EarLeft_south.png differ diff --git a/Textures/Things/Ears/EarLeft_south.png~ b/Textures/Things/Ears/EarLeft_south.png~ new file mode 100644 index 0000000..ad08059 Binary files /dev/null and b/Textures/Things/Ears/EarLeft_south.png~ differ diff --git a/Textures/Things/Ears/EarLeft_southm.png b/Textures/Things/Ears/EarLeft_southm.png index 30ddd78..1727f96 100644 Binary files a/Textures/Things/Ears/EarLeft_southm.png and b/Textures/Things/Ears/EarLeft_southm.png differ diff --git a/Textures/Things/Ears/EarLeft_southm.png~ b/Textures/Things/Ears/EarLeft_southm.png~ new file mode 100644 index 0000000..30ddd78 Binary files /dev/null and b/Textures/Things/Ears/EarLeft_southm.png~ differ diff --git a/Textures/Things/Ears/EarRight_east.png b/Textures/Things/Ears/EarRight_east.png index 2d910e8..f61dcd8 100644 Binary files a/Textures/Things/Ears/EarRight_east.png and b/Textures/Things/Ears/EarRight_east.png differ diff --git a/Textures/Things/Ears/EarRight_east.png~ b/Textures/Things/Ears/EarRight_east.png~ new file mode 100644 index 0000000..2d910e8 Binary files /dev/null and b/Textures/Things/Ears/EarRight_east.png~ differ diff --git a/Textures/Things/Ears/EarRight_eastm.png b/Textures/Things/Ears/EarRight_eastm.png index d0f53e5..392c3e0 100644 Binary files a/Textures/Things/Ears/EarRight_eastm.png and b/Textures/Things/Ears/EarRight_eastm.png differ diff --git a/Textures/Things/Ears/EarRight_eastm.png~ b/Textures/Things/Ears/EarRight_eastm.png~ new file mode 100644 index 0000000..d0f53e5 Binary files /dev/null and b/Textures/Things/Ears/EarRight_eastm.png~ differ diff --git a/Textures/Things/Ears/EarRight_north.png b/Textures/Things/Ears/EarRight_north.png index 2d910e8..38d33ef 100644 Binary files a/Textures/Things/Ears/EarRight_north.png and b/Textures/Things/Ears/EarRight_north.png differ diff --git a/Textures/Things/Ears/EarRight_north.png~ b/Textures/Things/Ears/EarRight_north.png~ new file mode 100644 index 0000000..2d910e8 Binary files /dev/null and b/Textures/Things/Ears/EarRight_north.png~ differ diff --git a/Textures/Things/Ears/EarRight_northm.png b/Textures/Things/Ears/EarRight_northm.png index d0f53e5..392c3e0 100644 Binary files a/Textures/Things/Ears/EarRight_northm.png and b/Textures/Things/Ears/EarRight_northm.png differ diff --git a/Textures/Things/Ears/EarRight_northm.png~ b/Textures/Things/Ears/EarRight_northm.png~ new file mode 100644 index 0000000..d0f53e5 Binary files /dev/null and b/Textures/Things/Ears/EarRight_northm.png~ differ diff --git a/Textures/Things/Ears/EarRight_south.png b/Textures/Things/Ears/EarRight_south.png index c2c30d7..039af73 100644 Binary files a/Textures/Things/Ears/EarRight_south.png and b/Textures/Things/Ears/EarRight_south.png differ diff --git a/Textures/Things/Ears/EarRight_south.png~ b/Textures/Things/Ears/EarRight_south.png~ new file mode 100644 index 0000000..c2c30d7 Binary files /dev/null and b/Textures/Things/Ears/EarRight_south.png~ differ diff --git a/Textures/Things/Ears/EarRight_southm.png b/Textures/Things/Ears/EarRight_southm.png index 62d2398..6c73b28 100644 Binary files a/Textures/Things/Ears/EarRight_southm.png and b/Textures/Things/Ears/EarRight_southm.png differ diff --git a/Textures/Things/Ears/EarRight_southm.png~ b/Textures/Things/Ears/EarRight_southm.png~ new file mode 100644 index 0000000..62d2398 Binary files /dev/null and b/Textures/Things/Ears/EarRight_southm.png~ differ