internal static void Postfix(Projectile __instance) { if (SpikeInfo.ContainsKey(__instance.Id)) { SpikeInfo.Remove(__instance.Id); } }
internal static void Postfix(Projectile __instance, ref float __state) { if (__state > 0 && Main.MegaKnowledges[MegaKnowledge.SpikeEmpowerment].enabled) { if (!SpikeInfo.ContainsKey(__instance.Id)) { var projectileBehavior = __instance.projectileBehaviors .FirstOrDefault(b => b.TryCast <ArriveAtTarget>() != null); if (projectileBehavior != null) { SpikeInfo[__instance.Id] = (projectileBehavior.Cast <ArriveAtTarget>(), 0); } else { return; } } var(arriveAtTarget, pierce) = SpikeInfo[__instance.Id]; var arriveAtTargetModel = arriveAtTarget.arriveModel; if (!arriveAtTargetModel.filterCollisionWhileMoving && arriveAtTarget.GetPercThruMovement() < .99) { pierce += __state - __instance.pierce; __instance.pierce = __state; if (Math.Abs(pierce - __state) < .00001) { arriveAtTargetModel = arriveAtTargetModel.Duplicate(); arriveAtTargetModel.filterCollisionWhileMoving = true; arriveAtTarget.UpdatedModel(arriveAtTargetModel); } } SpikeInfo[__instance.Id] = (arriveAtTarget, pierce); } }