Пример #1
0
 internal static void Postfix(Projectile __instance)
 {
     if (SpikeInfo.ContainsKey(__instance.Id))
     {
         SpikeInfo.Remove(__instance.Id);
     }
 }
Пример #2
0
            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);
                }
            }