From 15e5b210264366b5a6af14c2a645860c9dfed9f1 Mon Sep 17 00:00:00 2001 From: Jofairden Date: Tue, 12 Sep 2017 17:33:49 +0200 Subject: [PATCH] Added crit and knockback for alchemical weapons Improved tooltip code --- AlchemistItem.cs | 35 ++++++++++++++++++++--------------- MPlayer.cs | 6 +++++- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/AlchemistItem.cs b/AlchemistItem.cs index 653bb50e..8133a011 100644 --- a/AlchemistItem.cs +++ b/AlchemistItem.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using Microsoft.Xna.Framework; using Terraria; using Terraria.ModLoader; @@ -7,6 +8,19 @@ namespace Tremor { public abstract class AlchemistItem : ModItem { + public override void GetWeaponKnockback(Player player, ref float knockback) + { + MPlayer modPlayer = player.GetModPlayer(mod); + knockback += modPlayer.alchemicalKbAddition; + knockback *= modPlayer.alchemicalKbMult; + } + + public override void GetWeaponCrit(Player player, ref int crit) + { + MPlayer modPlayer = player.GetModPlayer(mod); + crit += modPlayer.alchemicalCrit; + } + public override void GetWeaponDamage(Player player, ref int damage) { MPlayer modPlayer = player.GetModPlayer(mod); @@ -17,23 +31,14 @@ public override void GetWeaponDamage(Player player, ref int damage) public override void ModifyTooltips(List tooltips) { - MPlayer modPlayer = Main.LocalPlayer.GetModPlayer(mod); - - foreach (TooltipLine tooltip in tooltips) + var tt = tooltips.FirstOrDefault(x => x.Name == "Damage" && x.mod == "Terraria"); + if (tt != null) { - if (tooltip.Name == "Damage") - { - tooltip.text = (int)(item.damage * modPlayer.alchemicalDamage) + " alchemical damage"; - } - - if (tooltip.Name == "CritChance") - { - tooltip.text = item.crit + modPlayer.alchemicalCrit + "% critical strike chance"; - } + // take reverse for 'damage', grab translation + var split = tt.text.Split(' '); + // todo: translation alchemical + tt.text = split.First() + " alchemical " + split.Last(); } - - TooltipLine tip = new TooltipLine(mod, "Tremor:Tooltip", (item.crit + modPlayer.alchemicalCrit) + "% critical strike chance"); - tooltips.Insert(2, tip); } public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) diff --git a/MPlayer.cs b/MPlayer.cs index 7c46e015..734a47e3 100644 --- a/MPlayer.cs +++ b/MPlayer.cs @@ -14,6 +14,8 @@ public static MPlayer GetModPlayer(Player player) // Alchemist public float alchemicalDamage; + public float alchemicalKbAddition; + public float alchemicalKbMult; public int alchemicalCrit; // Undocumented @@ -34,7 +36,9 @@ public override void ResetEffects() fragileContiion = false; // Alchemist - alchemicalDamage = 1; + alchemicalDamage = 1f; + alchemicalKbAddition = 0f; + alchemicalKbMult = 1f; alchemicalCrit = 0; // Undocumented