public override bool PreAI(NPC npc) { if (FakeModPlayer.Initialised) { if (Main.player[EyeLantern.FakePlayer].active) { npc.target = EyeLantern.FakePlayer; } } if (FakeModPlayer.AnyLanterns2() == -1) { if (npc.target == EyeLantern.FakePlayer) { npc.target = Main.myPlayer; } } if (SomeUtils.HasStun(npc)) { if (OldVel == null) { OldVel = npc.velocity; } npc.velocity = Vector2.Zero; return(false); } else { if (OldVel != null) { npc.velocity = (Vector2)OldVel; OldVel = null; } } return(true); }
public static float GetLanternK(NPC npc) { if (FakeModPlayer.AnyLanterns2() != -1) { float k = Utils.Clamp(TwilightData.SalvationCritRange - npc.Distance(Main.player[EyeLantern.FakePlayer].Center), 0, TwilightData.SalvationCritRange) / TwilightData.SalvationCritRange; k = MathHelper.Clamp(k * 2, 0, 1); return(k); } else { return(0); } }
public override bool StrikeNPC(NPC npc, ref double damage, int defense, ref float knockback, int hitDirection, ref bool crit) { if (Sins > 0) { if (FakeModPlayer.AnyLanterns2() != -1) { if (Main.player[EyeLantern.FakePlayer].Distance(npc.Center) < 600) { damage += defense / 2; } } } return(true); }
public override void FindFrame(NPC npc, int frameHeight) { float VelocityScale = 1; if (Twilight.FindBody() != -1 && ApoBirdSky.CurrentState == ApoBirdSky.State.ApoSky) { if (npc.CanBeChasedBy()) { if (Main.LocalPlayer.HasBuff(ModContent.BuffType <SmallPeakBuff>())) { VelocityScale -= 0.25f; } if (Main.npc[Twilight.FindBody()].ai[1] == (int)ApoBirdBody.State.Beak) { VelocityScale -= 0.5f; } if (Main.LocalPlayer.HasBuff(ModContent.BuffType <BigEyeBuff>())) { if (Sins > 0) { if (FakeModPlayer.AnyLanterns2() != -1) { if (Main.player[EyeLantern.FakePlayer].Distance(npc.Center) < TwilightData.SalvationCritRange) { VelocityScale -= 0.05f * Sins; } } } } } } if (SomeUtils.HasStun(npc)) { VelocityScale = 1; if (npc.frameCounter > 0) { npc.frameCounter--; } } npc.position -= npc.velocity * (1 - VelocityScale); }
public override void PostDraw(NPC npc, SpriteBatch spriteBatch, Color drawColor) { DrawUtils.AnotherDraw(BlendState.NonPremultiplied); //spriteBatch.End(); //spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, SamplerState.PointWrap, DepthStencilState.Default, RasterizerState.CullNone, null, Main.GameViewMatrix.EffectMatrix); //Utils.DrawBorderStringFourWay(Main.spriteBatch, Main.fontMouseText, Sins.ToString(), npc.Center.X - Main.screenPosition.X, npc.Bottom.Y + 10 - Main.screenPosition.Y, Color.Cyan, Color.Black, Vector2.Zero); float EnchantedOps = 0; float SinOps = 0; Texture2D SinTex = mod.GetTexture("Buffs/SinMark"); Texture2D CharmTex = mod.GetTexture("Buffs/Enchanted"); if (FakeModPlayer.AnyLanterns2() != -1 && npc.CanBeChasedBy()) { EnchantedOps = GetLanternK(npc); } if (Sins > 0) { SinOps = Sins / 5f; } if (EnchantedOps > 0 && SinOps > 0) { Vector2 DrawPos = npc.Bottom + new Vector2(-15, 30) - Main.screenPosition; spriteBatch.Draw(CharmTex, DrawPos, null, Color.White * EnchantedOps, 0, CharmTex.Size() / 2, 0.167f, SpriteEffects.None, 0); DrawPos = npc.Bottom + new Vector2(15, 30) - Main.screenPosition; spriteBatch.Draw(SinTex, DrawPos, null, Color.White * SinOps, 0, SinTex.Size() / 2, 0.167f, SpriteEffects.None, 0); } if (EnchantedOps > 0 && SinOps == 0) { Vector2 DrawPos = npc.Bottom + new Vector2(0, 30) - Main.screenPosition; spriteBatch.Draw(CharmTex, DrawPos, null, Color.White * EnchantedOps, 0, CharmTex.Size() / 2, 0.167f, SpriteEffects.None, 0); } if (EnchantedOps == 0 && SinOps > 0) { Vector2 DrawPos = npc.Bottom + new Vector2(0, 30) - Main.screenPosition; spriteBatch.Draw(SinTex, DrawPos, null, Color.White * SinOps, 0, SinTex.Size() / 2, 0.167f, SpriteEffects.None, 0); } DrawUtils.AnotherDraw(BlendState.AlphaBlend); //spriteBatch.End(); //spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, Main.DefaultSamplerState, DepthStencilState.None, Main.instance.Rasterizer, null, Main.GameViewMatrix.EffectMatrix); }