public ColoredDamageTypes() { Properties = new ModProperties() { Autoload = true }; instance = this; }
public override void OnHitByProjectile(NPC npc, Projectile projectile, int damage, float knockback, bool crit) { if (!Config.Instance.ChangeDamageColor) { return; } int recent = -1; for (int i = 99; i >= 0; i--) { CombatText ctToCheck = Main.combatText[i]; if (ctToCheck.lifeTime == 60 || ctToCheck.lifeTime == 120) { if (ctToCheck.alpha == 1f) { if ((ctToCheck.color == CombatText.DamagedHostile || ctToCheck.color == CombatText.DamagedHostileCrit)) { recent = i; break; } } } } if (recent == -1) { return; } else { Color newcolor; DamageTypes.Types dmgtype = DamageTypes.GetType(projectile); if (Config.Instance.DebugMode) { ColoredDamageTypes.Log("HitByProjectile: " + damage + " " + projectile.Name + "/" + projectile.type + ": " + dmgtype.ToString()); } newcolor = DamageTypes.CheckDamageColor(dmgtype, crit); //Main.combatText[recent].active = false; //Main.combatText[recent].lifeTime = 0; //CombatText.NewText(new Rectangle((int)npc.position.X, (int)npc.position.Y, npc.width, npc.height), newcolor, damage, crit, false); //NetMessage.SendData //ColoredDamageTypes.instance.SendColorPacket(newcolor.R, newcolor.G, newcolor.B, newcolor.A, damage, crit); Main.combatText[recent].color = newcolor; } }
//public override void UpdateLifeRegen(NPC npc, ref int damage) //{ //} public override void OnHitByItem(NPC npc, Player player, Item item, int damage, float knockback, bool crit) { if (!Config.Instance.ChangeDamageColor) { return; } int recent = -1; for (int i = 99; i >= 0; i--) { CombatText ctToCheck = Main.combatText[i]; if (ctToCheck.lifeTime == 60 || ctToCheck.lifeTime == 120 || (ctToCheck.dot && ctToCheck.lifeTime == 40)) { if (ctToCheck.alpha == 1f) { if ((ctToCheck.color == CombatText.DamagedHostile || ctToCheck.color == CombatText.DamagedHostileCrit)) { recent = i; break; } } } } if (recent == -1) { return; } else { Color newcolor; DamageTypes.Types dmgtype = DamageTypes.GetType(item); if (Config.Instance.DebugMode) { ColoredDamageTypes.Log("HitByItem: " + damage + item.Name + "/" + item.type + ": " + item.shoot + " " + dmgtype.ToString()); } newcolor = DamageTypes.CheckDamageColor(dmgtype, crit); Main.combatText[recent].color = newcolor; } }
public static Types GetType(Item item) { //ThoriumMod Check if (ItemOverrideList.ContainsKey(item.Name)) { return(ItemOverrideList[item.Name]); } ModItem mitem = item.modItem; if (mitem != null) { Type mitemtype = mitem.GetType(); if (ItemOverrideList.ContainsKey(mitemtype.ToString())) { return(ItemOverrideList[mitemtype.ToString()]); } if (Config.Instance.DebugMode && Config.Instance.DebugModeTooltips) { ColoredDamageTypes.Log("Item: " + mitemtype.ToString()); } } if (ColoredDamageTypes.ThoriumMod != null && mitem != null && mitem.mod == ColoredDamageTypes.ThoriumMod) { Type mitemType = mitem.GetType(); /* * ColoredDamageTypes.Log("---------------------------------------"); * foreach ( FieldInfo f in mitemType.GetFields() ) { * ColoredDamageTypes.Log(f.Name + ": " + f.FieldType+": "+f.Attributes+": "+f.GetValue(mitem)); * } */ var fieldRadiant = mitemType.GetField("radiant"); var fieldSymphonic = mitemType.GetField("Empowerments"); var fieldThrowing = mitemType.GetField("throwing"); if (fieldRadiant != null && (bool)fieldRadiant.GetValue(mitem) == true) { return(Types.Radiant); } else if (fieldSymphonic != null) { return(Types.Symphonic); } else if (fieldThrowing != null && (bool)fieldThrowing.GetValue(mitem) == true) { return(Types.Thrown); } } /* * if (ColoredDamageTypes.TremorMod != null && mitem != null && mitem.mod == ColoredDamageTypes.TremorMod) { * Type mitemType = mitem.GetType(); * string mitemTypestr = mitemType.ToString(); * bool isAlchemic = mitemTypestr.Contains("Alchemist.") || mitemTypestr.Contains("Alchemic.") || mitemTypestr.Contains("NovaPillar."); * if (mitemType != null && isAlchemic == true) return Types.Alchemic; * } */ if (item.melee && !item.magic && !item.thrown) { return(Types.Melee); } else if (item.ranged && !item.magic && !item.thrown) { return(Types.Ranged); } else if (item.magic) { return(Types.Magic); } else if (item.thrown) { return(Types.Thrown); } else if (item.sentry) { return(Types.Sentry); } else if (item.summon) { return(Types.Summon); } return(Types.Unknown); }
public static Types GetType(Projectile projectile) { if (ProjectileOverrideList.ContainsKey(projectile.Name)) { return(ProjectileOverrideList[projectile.Name]); } ModProjectile mproj = projectile.modProjectile; if (mproj != null) { Type mprojtype = mproj.GetType(); if (ProjectileOverrideList.ContainsKey(mprojtype.ToString())) { return(ProjectileOverrideList[mprojtype.ToString()]); } if (Config.Instance.DebugMode) { ColoredDamageTypes.Log("Projectile: " + mprojtype.ToString()); } } //ThoriumMod Check if (ColoredDamageTypes.ThoriumMod != null && mproj != null && mproj.mod == ColoredDamageTypes.ThoriumMod) { Type mprojtype = mproj.GetType(); string typestr = mprojtype.ToString(); if (typestr.Contains("ThoriumMod.Projectiles.Scythe") || typestr.Contains("ThoriumMod.Projectiles.Healer")) { return(Types.Radiant); } else if (typestr.Contains("ThoriumMod.Projectiles.Bard")) { return(Types.Symphonic); } else if (typestr.Contains("ThoriumMod.Items.ThrownItems")) { return(Types.Thrown); } } /* * if (ColoredDamageTypes.TremorMod != null && mproj != null && mproj.mod == ColoredDamageTypes.TremorMod) { * Type mprojType = mproj.GetType(); * string mitemTypestr = mprojType.ToString(); * bool isAlchemic = mitemTypestr.Contains("Alchemist.") || mitemTypestr.Contains("Alchemic.") || mitemTypestr.Contains("NovaPillar."); * if (mprojType != null && isAlchemic == true) return Types.Alchemic; * } */ Item item = null; Item selecteditem = Main.player[projectile.owner].inventory[Main.player[projectile.owner].selectedItem]; ProjectileTypeCheck(projectile, selecteditem, ref item); if (item == null) { foreach (Item i in Main.player[projectile.owner].inventory) { if (i.shoot == projectile.type) { item = i; break; } } } if (item != null) // Found item in inventory { return(GetType(item)); } else // Didn't find item. Use projectile type { int fromsummon = 0; for (int i = 0; i < 1000; i++) { Projectile CheckProjectile = Main.projectile[i]; if (CheckProjectile.active && (CheckProjectile.sentry) && CheckProjectile.type + 1 == projectile.type) { fromsummon = 2; // Is a sentry break; } else if (CheckProjectile.active && (CheckProjectile.minion) && CheckProjectile.type + 1 == projectile.type) { fromsummon = 1; // Is a minion break; } } if (projectile.melee && !projectile.magic && !projectile.thrown) { return(Types.Melee); } else if (projectile.ranged && !projectile.magic && !projectile.thrown) { return(Types.Ranged); } else if (projectile.magic) { return(Types.Magic); } else if (projectile.thrown) { return(Types.Thrown); } else if (fromsummon == 2 || projectile.sentry) { return(Types.Sentry); } else if (fromsummon == 1 || projectile.minion) { return(Types.Summon); } return(Types.Unknown); } }