Skip to content

Instantly share code, notes, and snippets.

@notfood
Last active July 15, 2019 20:30
Show Gist options
  • Save notfood/91717fa1ed6abd392cb4286897034abd to your computer and use it in GitHub Desktop.
Save notfood/91717fa1ed6abd392cb4286897034abd to your computer and use it in GitHub Desktop.
.class private auto ansi beforefieldinit Battlemounts.Utilities.EnemyMountUtility
extends [mscorlib]System.Object
{
// Methods
.method public hidebysig static
void mountAnimals (
class [mscorlib]System.Collections.Generic.List`1<class ['Assembly-CSharp']Verse.Pawn>& list,
class ['Assembly-CSharp']RimWorld.IncidentParms parms
) cil managed
{
// Method begins at RVA 0x2050
// Code size 211 (0xd3)
.maxstack 7
.locals init (
[0] bool,
[1] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class ['Assembly-CSharp']Verse.Pawn>,
[2] class ['Assembly-CSharp']Verse.Pawn,
[3] bool
)
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldind.ref
IL_0003: callvirt instance int32 class [mscorlib]System.Collections.Generic.List`1<class ['Assembly-CSharp']Verse.Pawn>::get_Count()
IL_0008: brfalse.s IL_0043
IL_000a: ldarg.1
IL_000b: ldfld class ['Assembly-CSharp']RimWorld.PawnsArrivalModeDef ['Assembly-CSharp']RimWorld.IncidentParms::raidArrivalMode
IL_0010: brfalse.s IL_001f
IL_0012: ldarg.1
IL_0013: ldfld class ['Assembly-CSharp']RimWorld.PawnsArrivalModeDef ['Assembly-CSharp']RimWorld.IncidentParms::raidArrivalMode
IL_0018: ldsfld class ['Assembly-CSharp']RimWorld.PawnsArrivalModeDef ['Assembly-CSharp']RimWorld.PawnsArrivalModeDefOf::EdgeWalkIn
IL_001d: bne.un.s IL_0043
IL_001f: ldarg.1
IL_0020: ldfld class ['Assembly-CSharp']RimWorld.RaidStrategyDef ['Assembly-CSharp']RimWorld.IncidentParms::raidStrategy
IL_0025: brfalse.s IL_0040
IL_0027: ldarg.1
IL_0028: ldfld class ['Assembly-CSharp']RimWorld.RaidStrategyDef ['Assembly-CSharp']RimWorld.IncidentParms::raidStrategy
IL_002d: ldfld class [mscorlib]System.Type ['Assembly-CSharp']RimWorld.RaidStrategyDef::workerClass
IL_0032: ldtoken ['Assembly-CSharp']RimWorld.RaidStrategyWorker_Siege
IL_0037: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
IL_003c: ceq
IL_003e: br.s IL_0041
IL_0040: ldc.i4.0
IL_0041: br.s IL_0044
IL_0043: ldc.i4.1
IL_0044: stloc.0
IL_0045: ldloc.0
IL_0046: brfalse.s IL_004e
IL_0048: nop
IL_0049: br IL_00d2
IL_004e: ldarg.0
IL_004f: ldarg.1
IL_0050: ldsfld class [HugsLib]HugsLib.Settings.SettingHandle`1<int32> BattleMounts.Base::inBiomeWeight
IL_0055: call !0 class [HugsLib]HugsLib.Settings.SettingHandle`1<int32>::op_Implicit(class [HugsLib]HugsLib.Settings.SettingHandle`1<!0>)
IL_005a: ldsfld class [HugsLib]HugsLib.Settings.SettingHandle`1<int32> BattleMounts.Base::outBiomeWeight
IL_005f: call !0 class [HugsLib]HugsLib.Settings.SettingHandle`1<int32>::op_Implicit(class [HugsLib]HugsLib.Settings.SettingHandle`1<!0>)
IL_0064: ldsfld class [HugsLib]HugsLib.Settings.SettingHandle`1<int32> BattleMounts.Base::nonWildWeight
IL_0069: call !0 class [HugsLib]HugsLib.Settings.SettingHandle`1<int32>::op_Implicit(class [HugsLib]HugsLib.Settings.SettingHandle`1<!0>)
IL_006e: ldsfld class [HugsLib]HugsLib.Settings.SettingHandle`1<int32> BattleMounts.Base::enemyMountChance
IL_0073: call !0 class [HugsLib]HugsLib.Settings.SettingHandle`1<int32>::op_Implicit(class [HugsLib]HugsLib.Settings.SettingHandle`1<!0>)
IL_0078: ldsfld class [HugsLib]HugsLib.Settings.SettingHandle`1<int32> BattleMounts.Base::enemyMountChanceTribal
IL_007d: call !0 class [HugsLib]HugsLib.Settings.SettingHandle`1<int32>::op_Implicit(class [HugsLib]HugsLib.Settings.SettingHandle`1<!0>)
IL_0082: call bool [GiddyUpCore]GiddyUpCore.Utilities.NPCMountUtility::generateMounts(class [mscorlib]System.Collections.Generic.List`1<class ['Assembly-CSharp']Verse.Pawn>&, class ['Assembly-CSharp']RimWorld.IncidentParms, int32, int32, int32, int32, int32)
IL_0087: pop
IL_0088: nop
IL_0089: ldarg.0
IL_008a: ldind.ref
IL_008b: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<!0> class [mscorlib]System.Collections.Generic.List`1<class ['Assembly-CSharp']Verse.Pawn>::GetEnumerator()
IL_0090: stloc.1
.try
{
IL_0091: br.s IL_00b8
// loop start (head: IL_00b8)
IL_0093: ldloca.s 1
IL_0095: call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class ['Assembly-CSharp']Verse.Pawn>::get_Current()
IL_009a: stloc.2
IL_009b: nop
IL_009c: ldloc.2
IL_009d: ldfld class ['Assembly-CSharp']Verse.Pawn_EquipmentTracker ['Assembly-CSharp']Verse.Pawn::equipment
IL_00a2: ldnull
IL_00a3: ceq
IL_00a5: stloc.3
IL_00a6: ldloc.3
IL_00a7: brfalse.s IL_00b7
IL_00a9: nop
IL_00aa: ldloc.2
IL_00ab: ldloc.2
IL_00ac: newobj instance void ['Assembly-CSharp']Verse.Pawn_EquipmentTracker::.ctor(class ['Assembly-CSharp']Verse.Pawn)
IL_00b1: stfld class ['Assembly-CSharp']Verse.Pawn_EquipmentTracker ['Assembly-CSharp']Verse.Pawn::equipment
IL_00b6: nop
IL_00b7: nop
IL_00b8: ldloca.s 1
IL_00ba: call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class ['Assembly-CSharp']Verse.Pawn>::MoveNext()
IL_00bf: brtrue.s IL_0093
// end loop
IL_00c1: leave.s IL_00d2
} // end .try
finally
{
IL_00c3: ldloca.s 1
IL_00c5: constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class ['Assembly-CSharp']Verse.Pawn>
IL_00cb: callvirt instance void [mscorlib]System.IDisposable::Dispose()
IL_00d0: nop
IL_00d1: endfinally
} // end handler
IL_00d2: ret
} // end of method EnemyMountUtility::mountAnimals
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method begins at RVA 0x2140
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method EnemyMountUtility::.ctor
} // end of class Battlemounts.Utilities.EnemyMountUtility
### Patch Battlemounts.Utilities.EnemyMountUtility, Void mountAnimals(System.Collections.Generic.List`1[Verse.Pawn] ByRef, RimWorld.IncidentParms)
L_0000: Local var 0: System.Boolean
L_0000: Local var 1: System.Collections.Generic.List`1+Enumerator[[Verse.Pawn, Assembly-CSharp, Version=1.0.7087.21901, Culture=neutral, PublicKeyToken=null]]
L_0000: Local var 2: Verse.Pawn
L_0000: Local var 3: System.Boolean
L_0000: ldstr "Battlemounts.Utilities.EnemyMountUtility"
L_0005: ldc.i4 100663297
L_000a: ldnull
L_000b: ldc.i4 2
L_0010: newarr System.Object
L_0015: dup
L_0016: ldc.i4 0
L_001b: ldarg 0
L_0021: stelem.ref
L_0022: dup
L_0023: ldc.i4 1
L_0028: ldarg 1
L_002e: stelem.ref
L_002f: call Boolean General(System.String, Int32, System.Object, System.Object[])
L_0034: brtrue Label13
L_0039: br Label14
L_003e: Label13
L_003e: nop
L_003f: ldarg.0
L_0040: ldind.ref
L_0041: callvirt Int32 get_Count()
L_0046: brfalse Label1
L_004b: ldarg.1
L_004c: ldfld RimWorld.PawnsArrivalModeDef raidArrivalMode
L_0051: brfalse Label2
L_0056: ldarg.1
L_0057: ldfld RimWorld.PawnsArrivalModeDef raidArrivalMode
L_005c: ldsfld RimWorld.PawnsArrivalModeDef EdgeWalkIn
L_0061: bne.un Label3
L_0066: Label2
L_0066: ldarg.1
L_0067: ldfld RimWorld.RaidStrategyDef raidStrategy
L_006c: brfalse Label4
L_0071: ldarg.1
L_0072: ldfld RimWorld.RaidStrategyDef raidStrategy
L_0077: ldfld System.Type workerClass
L_007c: ldtoken RimWorld.RaidStrategyWorker_Siege
L_0081: call System.Type GetTypeFromHandle(RuntimeTypeHandle)
L_0086: ceq
L_0088: br Label5
L_008d: Label4
L_008d: ldc.i4.0
L_008e: Label5
L_008e: br Label6
L_0093: Label1
L_0093: Label3
L_0093: ldc.i4.1
L_0094: Label6
L_0094: stloc.0
L_0095: ldloc.0
L_0096: brfalse Label7
L_009b: nop
L_009c: br Label8
L_00a1: Label7
L_00a1: ldarg.0
L_00a2: ldarg.1
L_00a3: ldsfld HugsLib.Settings.SettingHandle`1[System.Int32] inBiomeWeight
L_00a8: call Int32 op_Implicit(HugsLib.Settings.SettingHandle`1[System.Int32])
L_00ad: ldsfld HugsLib.Settings.SettingHandle`1[System.Int32] outBiomeWeight
L_00b2: call Int32 op_Implicit(HugsLib.Settings.SettingHandle`1[System.Int32])
L_00b7: ldsfld HugsLib.Settings.SettingHandle`1[System.Int32] nonWildWeight
L_00bc: call Int32 op_Implicit(HugsLib.Settings.SettingHandle`1[System.Int32])
L_00c1: ldsfld HugsLib.Settings.SettingHandle`1[System.Int32] enemyMountChance
L_00c6: call Int32 op_Implicit(HugsLib.Settings.SettingHandle`1[System.Int32])
L_00cb: ldsfld HugsLib.Settings.SettingHandle`1[System.Int32] enemyMountChanceTribal
L_00d0: call Int32 op_Implicit(HugsLib.Settings.SettingHandle`1[System.Int32])
L_00d5: call Boolean generateMounts(System.Collections.Generic.List`1[Verse.Pawn] ByRef, RimWorld.IncidentParms, Int32, Int32, Int32, Int32, Int32)
L_00da: pop
L_00db: nop
L_00dc: ldarg.0
L_00dd: ldind.ref
L_00de: callvirt Enumerator GetEnumerator()
L_00e3: stloc.1
.try
{
L_00e4: br Label9
L_00e9: Label11
L_00e9: ldloca.s 1 (System.Collections.Generic.List`1+Enumerator[Verse.Pawn])
L_00eb: call Verse.Pawn get_Current()
L_00f0: stloc.2
L_00f1: nop
L_00f2: ldloc.2
L_00f3: ldfld Verse.Pawn_EquipmentTracker equipment
L_00f8: ldnull
L_00f9: ceq
L_00fb: stloc.3
L_00fc: ldloc.3
L_00fd: brfalse Label10
L_0102: nop
L_0103: ldloc.2
L_0104: ldloc.2
L_0105: newobj Void .ctor(Pawn)
L_010a: stfld Verse.Pawn_EquipmentTracker equipment
L_010f: nop
L_0110: Label10
L_0110: nop
L_0111: Label9
L_0111: ldloca.s 1 (System.Collections.Generic.List`1+Enumerator[Verse.Pawn])
L_0113: call Boolean MoveNext()
L_0118: brtrue Label11
L_011d: leave Label12
L_0122: leave (autogenerated)
} // end try
.finally
{
L_0127: ldloca.s 1 (System.Collections.Generic.List`1+Enumerator[Verse.Pawn])
L_0129: constrained. System.Collections.Generic.List`1+Enumerator[Verse.Pawn]
L_012f: callvirt Void Dispose()
L_0134: nop
L_0135: endfinally
L_0136: leave (autogenerated)
} // end handler
L_0137: Label8
L_0137: Label12
L_0137: Label14
L_0137: ret
DONE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment