public override void Update(GameTime gameTime, Player attackPlayer, NPC attackNPC) { Velocity *= 1.1f; for (int i = 0; i < 2; i++) { ArcaneMissleParticle particle = new ArcaneMissleParticle() { Position = CardGameUI.ToUIPos(Position), Velocity = Vector2.Zero, UIPosition = UIPosition, IsPanelParticle = true }; particle.Setup(Size, 1f, attackPlayer); attackPlayer.GetModPlayer <EntrogicPlayer>()._particles.Add(particle); } if (Vector2.Distance(CardGameUI.ToUIPos(Position), TargetPosition) < 36f) { IsRemoved = true; CardFightableNPC fightNPC = (CardFightableNPC)attackNPC.modNPC; fightNPC.CardGameHealth -= 120 / 6; // 总伤害120,,因为一射6个 } base.Update(gameTime, attackPlayer, attackNPC); }
public override void Update(GameTime gameTime, Player attackPlayer, NPC attackNPC) { for (int i = 0; i < 3; i++) { FireParticle particle = new FireParticle() { Position = CardGameUI.ToUIPos(Position) + new Vector2(0f, -10f), Velocity = Vector2.Zero, UIPosition = UIPosition, Alpha = 100, IsPanelParticle = true }; particle.Setup(Size, 1f, attackPlayer); particle.Velocity *= 0.85f; attackPlayer.GetModPlayer <EntrogicPlayer>()._particles.Add(particle); } Velocity.Y -= 0.1f; if (Vector2.Distance(CardGameUI.ToUIPos(Position + Size / 2f), TargetPosition + new Vector2(0, 12f)) < 10f) { IsRemoved = true; CardFightableNPC fightNPC = (CardFightableNPC)attackNPC.modNPC; fightNPC.CardGameHealth -= 46; } base.Update(gameTime, attackPlayer, attackNPC); }
public override void Update(GameTime gameTime, Player attackPlayer, NPC attackNPC) { //if (LifeSpan > 4.96 && LifeSpan <= 5.1f) // Velocity += -ModHelper.GetFromToVector(CardGameUI.ToUIPos(Center), TargetPosition) * 0.4f; //else if (LifeSpan <= 5.1f) Velocity += ModHelper.GetFromToVector(CardGameUI.ToUIPos(Center), TargetPosition) * 0.9f; _rotation = MathHelper.ToRadians(45f) + ModHelper.GetFromToRadians(CardGameUI.ToUIPos(Center), TargetPosition); if (Vector2.Distance(CardGameUI.ToUIPos(Center), TargetPosition) < 20f) { IsRemoved = true; CardFightableNPC fightNPC = (CardFightableNPC)attackNPC.modNPC; fightNPC.CardGameHealth -= 120 / 5; // 总伤害120,,因为一射5个 } base.Update(gameTime, attackPlayer, attackNPC); }
public override void Kill(Player attackPlayer) { Main.PlaySound(SoundID.Item10); for (int i = 0; i < 22; i++) { ArcaneMissleParticle particle = new ArcaneMissleParticle() { Position = CardGameUI.ToUIPos(Position), Velocity = new Vector2(Main.rand.Next(-4, 4), Main.rand.Next(-4, 4)), UIPosition = UIPosition, IsPanelParticle = true }; particle.Setup(Size, 2f, attackPlayer); attackPlayer.GetModPlayer <EntrogicPlayer>()._particles.Add(particle); } base.Kill(attackPlayer); }
public override void Update(GameTime gameTime, Player attackPlayer, NPC attackNPC) { InvisibleSpan -= (float)gameTime.ElapsedGameTime.TotalSeconds; if (InvisibleSpan > 0f) { return; } for (int extraUpdates = 0; extraUpdates < 2; extraUpdates++) { for (int i = 0; i < 2; i++) { ArcaneMissleParticle particle = new ArcaneMissleParticle() { Position = CardGameUI.ToUIPos(Position), Velocity = Vector2.Zero, UIPosition = UIPosition, IsPanelParticle = true }; particle.Setup(Size, 2f, attackPlayer); attackPlayer.GetModPlayer <EntrogicPlayer>()._particles.Add(particle); } // 计算朝向目标的向量 Vector2 targetVec = TargetPosition - CardGameUI.ToUIPos(Position + Size / 2f); targetVec.Normalize(); // 目标向量是朝向目标的大小为15的向量 targetVec *= 8f; // 朝向npc的单位向量*15 + 一些(?)偏移量 Velocity = (Velocity * 8f + targetVec) / 9f; if (Vector2.Distance(CardGameUI.ToUIPos(Position), TargetPosition) < 10f) { IsRemoved = true; CardFightableNPC fightNPC = (CardFightableNPC)attackNPC.modNPC; fightNPC.CardGameHealth -= 46; } base.Update(gameTime, attackPlayer, attackNPC); } }
public override void Kill(Player attackPlayer) { Vector2 screenCenter = new Vector2(Main.screenWidth, Main.screenHeight) / 2f + Main.screenPosition; Main.PlaySound(SoundID.Item10, (int)screenCenter.X, (int)screenCenter.Y + -30); Size.X = 20; Size.Y = 20; Position.X = CardGameUI.ToUIPos(Center).X - Size.X / 2f; Position.Y = CardGameUI.ToUIPos(Center).Y - Size.Y / 2f; for (int i = 0; i < 23; i++) { FireParticle particle = new FireParticle() { Position = Position, UIPosition = UIPosition, Alpha = 100, IsPanelParticle = true }; particle.Setup(Size, 1f, attackPlayer); if (Main.rand.Next(2) == 0) { particle.Scale = 0.5f; } particle.Velocity *= 2f; attackPlayer.GetModPlayer <EntrogicPlayer>()._particles.Add(particle); } for (int j = 0; j < 20; j++) { FireParticle2 particle = new FireParticle2() { Position = Position, UIPosition = UIPosition, Alpha = 100, IsPanelParticle = true }; particle.Setup(Size, 1f, attackPlayer); particle.Velocity *= 2f; attackPlayer.GetModPlayer <EntrogicPlayer>()._particles.Add(particle); } for (int k = 0; k < Main.rand.Next(5, 7); k++) { float scaleFactor = 0.33f; if (k % 3 == 1) { scaleFactor = 0.66f; } if (k % 3 == 1) { scaleFactor = 1f; } StarParticle particle = new StarParticle() { Position = Position, UIPosition = UIPosition, Alpha = Main.rand.Next(140, 201), IsPanelParticle = true }; particle.Setup(Size, Main.rand.NextFloat() * 0.5f + 1f, attackPlayer); particle.Velocity *= scaleFactor; attackPlayer.GetModPlayer <EntrogicPlayer>()._particles.Add(particle); } //for (float rad = 0.0f; rad < 2 * 3.141f; rad += (float)Main.rand.Next(8, 14) / 10) //{ // Vector2 vec = new Vector2(120f, 0f); // Vector2 finalVec = (vec.ToRotation() + rad).ToRotationVector2() * 16f; // Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, Main.rand.Next(-10, 11), Main.rand.Next(-10, 11), ProjectileType<PineapplePieces>(), 21, 0f, projectile.owner, 0f, 0f); //} base.Kill(attackPlayer); }
public override void Load() { PassHotkey = RegisterHotKey("过牌快捷键", "E"); WashHotkey = RegisterHotKey("洗牌快捷键", "Q"); HookCursorHotKey = RegisterHotKey("设置钩爪指针快捷键", "C"); On.Terraria.Player.QuickGrapple += Player_QuickGrapple; On.Terraria.Player.ItemCheck += UnderworldTransportCheck; On.Terraria.Main.DrawInterface_40_InteractItemIcon += CustomHandIcon; //On.Terraria.Main.DrawTiles += Main_DrawTiles; foolTexts = Main.rand.Next(3); Unloading = false; IsCalamityLoaded = ModLoader.GetMod("CalamityMod") != null; Mod yabhb = ModLoader.GetMod("FKBossHealthBar"); if (yabhb != null) { #region Wlta yabhb yabhb.Call("RegisterCustomHealthBar", ModContent.NPCType <Embryo>(), null, //ForceSmall null, //displayName GetTexture("UI/yabhb/瓦卢提奥血条Fill"), //fillTexture GetTexture("UI/yabhb/瓦卢提奥血条头"), GetTexture("UI/yabhb/瓦卢提奥血条条"), GetTexture("UI/yabhb/瓦卢提奥血条尾"), null, //midBarOffsetX 0, //midBarOffsetY null, //fillDecoOffsetX 32, //bossHeadCentreOffsetX 30, //bossHeadCentreOffsetY null, //fillTextureSM null, //leftBarSM null, //midBarSM null, //rightBarSM null, //fillDecoOffsetXSM null, //bossHeadCentreOffsetXSM null, //bossHeadCentreOffsetYSM true); //LoopMidBar yabhb.Call("RegisterCustomHealthBar", ModContent.NPCType <Volutio>(), null, //ForceSmall null, //displayName GetTexture("UI/yabhb/瓦卢提奥血条Fill"), //fillTexture GetTexture("UI/yabhb/瓦卢提奥血条头"), GetTexture("UI/yabhb/瓦卢提奥血条条"), GetTexture("UI/yabhb/瓦卢提奥血条尾"), null, //midBarOffsetX 0, //midBarOffsetY null, //fillDecoOffsetX 32, //bossHeadCentreOffsetX 32, //bossHeadCentreOffsetY null, //fillTextureSM null, //leftBarSM null, //midBarSM null, //rightBarSM null, //fillDecoOffsetXSM null, //bossHeadCentreOffsetXSM null, //bossHeadCentreOffsetYSM true); //LoopMidBar #endregion } MimicryCustomCurrencyId = CustomCurrencyManager.RegisterCurrency(new EntrogicMimicryCurrency(ModContent.ItemType <拟态魔能>(), 999L)); if (!Main.dedServ) { ResourceLoader.LoadAllTextures(); ResourceLoader.LoadAllCardMissions(); AddEquipTexture(new PollutionElementalMask1(), null, EquipType.Head, "PollutionElementalMask1", "Entrogic/Items/PollutElement/PollutionElementalMask1_Head"); AddEquipTexture(new PollutionElementalMask2(), null, EquipType.Head, "PollutionElementalMask2", "Entrogic/Items/PollutElement/PollutionElementalMask2_Head"); AddEquipTexture(new PollutionElementalMask3(), null, EquipType.Head, "PollutionElementalMask3", "Entrogic/Items/PollutElement/PollutionElementalMask3_Head"); AddEquipTexture(new PollutionElementalMask4(), null, EquipType.Head, "PollutionElementalMask4", "Entrogic/Items/PollutElement/PollutionElementalMask4_Head"); AddEquipTexture(new PolluWings1(), null, EquipType.Wings, "PolluWings1", "Entrogic/Items/PollutElement/PolluWings1_Wings"); AddEquipTexture(new PolluWings2(), null, EquipType.Wings, "PolluWings2", "Entrogic/Items/PollutElement/PolluWings2_Wings"); AddEquipTexture(new PolluWings3(), null, EquipType.Wings, "PolluWings3", "Entrogic/Items/PollutElement/PolluWings3_Wings"); AddEquipTexture(new PolluWings4(), null, EquipType.Wings, "PolluWings4", "Entrogic/Items/PollutElement/PolluWings4_Wings"); AddEquipTexture(new PolluWings5(), null, EquipType.Wings, "PolluWings5", "Entrogic/Items/PollutElement/PolluWings5_Wings"); AddEquipTexture(new PolluWings6(), null, EquipType.Wings, "PolluWings6", "Entrogic/Items/PollutElement/PolluWings6_Wings"); AddEquipTexture(new PolluWings7(), null, EquipType.Wings, "PolluWings7", "Entrogic/Items/PollutElement/PolluWings7_Wings"); AddEquipTexture(new PolluWings8(), null, EquipType.Wings, "PolluWings8", "Entrogic/Items/PollutElement/PolluWings8_Wings"); ResourceLoader.LoadAllShaders(); BookUI = new BookUI(); BookUI.Activate(); BookUIE = new UserInterface(); BookUIE.SetState(BookUI); //BookPageUI = new BookPageUI(); //BookPageUI.Activate(); //BookPageUIE = new UserInterface(); //BookPageUIE.SetState(BookPageUI); CardUI = new CardUI(); CardUI.Activate(); CardUIE = new UserInterface(); CardUIE.SetState(CardUI); CardInventoryUI = new CardInventoryUI(); CardInventoryUI.Activate(); CardInventoryUIE = new UserInterface(); CardInventoryUIE.SetState(CardInventoryUI); CardGameUI = new CardGameUI(); CardGameUI.Activate(); CardGameUIE = new UserInterface(); CardGameUIE.SetState(CardGameUI); /*SinsBar.visible = true; * Sinsbar = new SinsBar(); * Sinsbar.Activate(); * SinsBarInterface = new UserInterface(); * SinsBarInterface.SetState(Sinsbar);*/ } Buildings.Cache("Buildings/CardShrine0.ebuilding", "Buildings/CardShrine1.ebuilding", "Buildings/UnderworldPortal.ebuilding"); new PiggyBankAmmo(); new ModHandler(); #region Armor Translates Translation.RegisterTranslation("mspeed", GameCulture.Chinese, "移动速度", " movement speed"); Translation.RegisterTranslation("and", GameCulture.Chinese, "与", " and"); Translation.RegisterTranslation("csc", GameCulture.Chinese, "暴击率", " critical strike chance"); Translation.RegisterTranslation("knockback", GameCulture.Chinese, "击退", " knockback"); Translation.RegisterTranslation("damage", GameCulture.Chinese, "伤害", " damage"); Translation.RegisterTranslation("cntca", GameCulture.Chinese, "的几率不消耗弹药", " chance not to consume ammo"); Translation.RegisterTranslation("immb", GameCulture.Chinese, "最大魔力值增加", "Increases maximum mana by "); Translation.RegisterTranslation("rmub", GameCulture.Chinese, "魔力消耗减少", "Reduces mana usage by "); #endregion #region Boss Checklist Translates ModTranslation bctext = CreateTranslation("BossSpawnInfo.GelSymb"); bctext.AddTranslation(GameCulture.Chinese, "在地下原汤湖使用 [i:" + ModContent.ItemType <GelCultureFlask>() + "] 召唤一只史莱姆, 并将其掷于地下原汤湖中召唤"); bctext.SetDefault("Use [i:" + ModContent.ItemType <GelCultureFlask>() + "] in the underground pool to summon a slime, and thorw it into the pool to summon."); AddTranslation(bctext); bctext = CreateTranslation("BossSpawnInfo.Athanasy"); bctext.AddTranslation(GameCulture.Chinese, "使用 [i:" + ModContent.ItemType <TitansOrder>() + "] 召唤(由地牢怪物掉落或在上锁的金箱中找到)"); bctext.SetDefault("Use [i:" + ModContent.ItemType <TitansOrder>() + "] to spawn, you can find it from locked chests or drop from dungeon monsters"); AddTranslation(bctext); bctext = CreateTranslation("BossSpawnInfo.PollutionElement"); bctext.AddTranslation(GameCulture.Chinese, "在海边使用 [i:" + ModContent.ItemType <ContaminatedLiquor>() + "] 召唤"); bctext.SetDefault("Use [i:" + ModContent.ItemType <ContaminatedLiquor>() + "] in ocean to spawn"); AddTranslation(bctext); #endregion #region Another Translates ModTranslation transform = CreateTranslation("RightClickToTransform"); transform.AddTranslation(GameCulture.Chinese, "右键点击物品以切换状态"); transform.SetDefault("Right click to switch status"); AddTranslation(transform); ModTranslation modTranslation = CreateTranslation("ArcaneDamage"); modTranslation.AddTranslation(GameCulture.Chinese, "奥术"); modTranslation.SetDefault("arcane "); AddTranslation(modTranslation); modTranslation = CreateTranslation("Pollution_SkyDarkened"); modTranslation.AddTranslation(GameCulture.Chinese, "天空变得更加黑暗"); modTranslation.SetDefault("The sky is becomes darkened"); AddTranslation(modTranslation); modTranslation = CreateTranslation("Pollution_Pollutional"); modTranslation.AddTranslation(GameCulture.Chinese, "污染生物正在聚集..."); modTranslation.SetDefault("Pollutional creatures are gathering..."); AddTranslation(modTranslation); modTranslation = CreateTranslation("Pollution_Summon"); modTranslation.AddTranslation(GameCulture.Chinese, "永远不要尝试去挑战自然..."); modTranslation.SetDefault("Never try to challenge the nature..."); AddTranslation(modTranslation); modTranslation = CreateTranslation("Pollution_Summon2"); modTranslation.AddTranslation(GameCulture.Chinese, "呵..."); modTranslation.SetDefault("Heh..."); AddTranslation(modTranslation); ModTranslation text = CreateTranslation("NPCTalk"); text.SetDefault("<{0}> {1}"); AddTranslation(text); text = CreateTranslation("Common.RandomCardImage"); text.SetDefault($"[i:{ModContent.ItemType<RandomCard>()}] [c/ffeb6e:卡牌系统自定义项]"); AddTranslation(text); ModTranslation modGen = CreateTranslation("GenLifeLiquid"); modGen.AddTranslation(GameCulture.Chinese, "正在生成生命湖"); modGen.SetDefault("Life."); AddTranslation(modGen); modGen = CreateTranslation("SmoothLifeLiquid"); modGen.AddTranslation(GameCulture.Chinese, "正在平整生命湖"); modGen.SetDefault("Life."); AddTranslation(modGen); modGen = CreateTranslation("GenCardShrine"); modGen.AddTranslation(GameCulture.Chinese, "正在生成卡牌神龛"); modGen.SetDefault("Card."); AddTranslation(modGen); #endregion }
public override void Update(GameTime gameTime, Player attackPlayer, NPC attackNPC) { for (int extraUpdates = 0; extraUpdates < 2; extraUpdates++) { if (!State2) { for (int i = 0; i < 8; i++) { FireParticle particle = new FireParticle() { Position = CardGameUI.ToUIPos(Position) + new Vector2(0f, -10f), Velocity = Vector2.Zero, UIPosition = UIPosition, Alpha = 100, IsPanelParticle = true }; particle.Setup(Size, 1.2f, attackPlayer); particle.Velocity *= 0.5f * 1.1f; attackPlayer.GetModPlayer <EntrogicPlayer>()._particles.Add(particle); } Velocity += new Vector2(0f, -0.8f); } else { if (localAI == 0f) { Vector2 screenCenter = new Vector2(Main.screenWidth, Main.screenHeight) / 2f + Main.screenPosition; Main.PlaySound(SoundID.Item74, (int)screenCenter.X, (int)screenCenter.Y + -30); localAI += 1f; } ai += 1f; ai += 3f; float num466 = 25f; if (ai > 180f) { num466 -= (ai - 180f) / 2f; } num466 *= 0.7f; int num467 = 0; while ((float)num467 < num466) { float num468 = (float)Main.rand.Next(-10, 11); float num469 = (float)Main.rand.Next(-10, 11); float num470 = (float)Main.rand.Next(3, 9); float num471 = (float)Math.Sqrt((double)(num468 * num468 + num469 * num469)); num471 = num470 / num471; num468 *= num471; num469 *= num471; FireParticle particle = new FireParticle() { Position = CardGameUI.ToUIPos(Position) + new Vector2(0f, -10f), Velocity = Vector2.Zero, UIPosition = UIPosition, Alpha = 100, IsPanelParticle = true }; particle.Setup(Size, 1.5f, attackPlayer); particle.Position = CardGameUI.ToUIPos(Position) + Size / 2f; particle.Position += new Vector2(Main.rand.Next(-10, 11), Main.rand.Next(-10, 11)); particle.Velocity = new Vector2(num468, num469) * 0.75f; attackPlayer.GetModPlayer <EntrogicPlayer>()._particles.Add(particle); int num3 = num467; num467 = num3 + 1; } Velocity = Vector2.Zero; } base.Update(gameTime, attackPlayer, attackNPC); if (!State2 && Vector2.Distance(CardGameUI.ToUIPos(Position + Size / 2f), TargetPosition + new Vector2(0, 12f)) < 10f) { State2 = true; CardFightableNPC fightNPC = (CardFightableNPC)attackNPC.modNPC; fightNPC.CardGameHealth -= GetDamage(Damage); } } }