private static bool Prefix(OxygenBreather __instance, ref SimHashes __result, ref int cell, ref CellOffset[] offsets) { //Debug.Log(" === AmphibiousMod_OxygenBreather_GetBreathableElementAtCell === "); Klei.AI.Traits traits = __instance.gameObject.GetComponent <Klei.AI.Traits>(); bool flag = traits.GetTraitIds().Contains("Amphibious"); //Debug.Log(" === AmphibiousMod_OxygenBreather_GetBreathableElementAtCell === " + flag); if (!flag) { return(true); } if (offsets == null) { offsets = __instance.breathableCells; } //this.GetMouthCellAtCell(cell, offsets); int mouthCellAtCell = (int)GetMouthCellAtCellM.Invoke(__instance, new object[] { cell, offsets }); if (!Grid.IsValidCell(mouthCellAtCell)) { __result = SimHashes.Vacuum; return(false); } Element element = Grid.Element[mouthCellAtCell]; __result = ((!element.IsGas || !element.HasTag(GameTags.Breathable)) && (!element.IsLiquid || !element.HasTag(GameTags.AnyWater)) || !(Grid.Mass[mouthCellAtCell] > __instance.noOxygenThreshold)) ? SimHashes.Vacuum : element.id; return(false); }
private static bool Prefix(TemperatureMonitor.Instance __instance, ref bool __result) { Klei.AI.Traits traits = __instance.gameObject.GetComponent <Klei.AI.Traits>(); bool flag = traits.GetTraitIds().Contains("Ice"); if (!flag) { return(true); } __result = false; return(false); }
private static bool Prefix(GasBreatherFromWorldProvider __instance, ref bool __result, ref OxygenBreather oxygen_breather, ref float gas_consumed) { //Debug.Log(" === AmphibiousMod_GasBreatherFromWorldProvider_ConsumeGas === "); Klei.AI.Traits traits = oxygen_breather.gameObject.GetComponent <Klei.AI.Traits>(); bool flag = traits.GetTraitIds().Contains("Amphibious"); if (!flag) { return(true); } SimHashes getBreathableElement = oxygen_breather.GetBreathableElement; if (getBreathableElement == SimHashes.Vacuum) { __result = false; return(false); } //HandleVector<Game.ComplexCallbackInfo<Sim.MassConsumedCallback>>.Handle handle = Game.Instance.massConsumedCallbackManager.Add(OnSimConsumeCallback, __instance, "GasBreatherFromWorldProvider"); //SimMessages.ConsumeMass(oxygen_breather.mouthCell, getBreathableElement, gas_consumed/5f, 3, handle.index); SimMessages.ConsumeMass(oxygen_breather.mouthCell, getBreathableElement, gas_consumed / 5f, 1); __result = true; return(false); }