static void Postfix( Turret turret, Transform parentTransform, bool isParented, TurretRepresentation __instance) { Logger.Debug("turret size initialization"); var identifier = turret.TurretDef.ChassisID; var sizeMultiplier = SizeMultiplier.Get(turret.TurretDef); Logger.Debug($"{identifier}: {sizeMultiplier}"); var originalLOSSourcePositions = Traverse.Create(turret).Field("originalLOSSourcePositions").GetValue <Vector3[]>(); var originalLOSTargetPositions = Traverse.Create(turret).Field("originalLOSTargetPositions").GetValue <Vector3[]>(); var newSourcePositions = ModSettings.LOSSourcePositions(identifier, originalLOSSourcePositions, sizeMultiplier); var newTargetPositions = ModSettings.LOSTargetPositions(identifier, originalLOSTargetPositions, sizeMultiplier); Traverse.Create(turret).Field("originalLOSSourcePositions").SetValue(newSourcePositions); Traverse.Create(turret).Field("originalLOSTargetPositions").SetValue(newTargetPositions); Traverse.Create(__instance.thisTransform).Property("localScale").SetValue(sizeMultiplier); }
static bool Prefix(TurretRepresentation __instance, DeathMethod deathMethod) { // We're a linked turret, replace the kill floatie with a custom one. if (ModState.KillingLinkedUnitsSource != null) { if (__instance.parentActor.WasDespawned) { return(false); } string localText = new Text(Mod.Config.LocalizedText[ModConfig.FT_Turret_Death], new object[] { __instance.parentActor.DisplayName }).ToString(); FloatieMessage message = new FloatieMessage(__instance.parentCombatant.GUID, __instance.parentCombatant.GUID, localText, FloatieMessage.MessageNature.Death); __instance.parentCombatant.Combat.MessageCenter.PublishMessage(message); return(false); } else { return(true); } }