public override void ModifyHitByProjectile(NPC npc, Projectile projectile, ref int damage, ref float knockback, ref bool crit, ref int hitDirection)
 {
     ColoredDamageTypes.recentcolor_out = DamageTypes.GetType(projectile);
     ColoredDamageTypes.recentdmg_out   = damage;
     ColoredDamageTypes.recentkb_out    = knockback;
     ColoredDamageTypes.recentcrit_out  = (byte)(crit?1:0);
 }
 public override void ModifyHitByItem(NPC npc, Player player, Item item, ref int damage, ref float knockback, ref bool crit)
 {
     ColoredDamageTypes.recentcolor_out = DamageTypes.GetType(item);
     ColoredDamageTypes.recentdmg_out   = damage;
     ColoredDamageTypes.recentkb_out    = knockback;
     ColoredDamageTypes.recentcrit_out  = (byte)(crit?1:0);
 }
        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 bool HijackGetData(ref byte messageType, ref BinaryReader reader, int playerNumber)
        {
            if (messageType == 28)
            {
                if (Main.netMode == NetmodeID.MultiplayerClient)
                {
                    NPC   npc       = Main.npc[(int)reader.ReadInt16()];                                    //npc being hit
                    int   damage    = ModNet.AllowVanillaClients ? reader.ReadInt16() : reader.ReadInt32(); //damage
                    float knockback = reader.ReadSingle();                                                  // knockback
                    int   hitdir    = (reader.ReadByte() - 1);                                              // hit direction
                    byte  critbyte  = reader.ReadByte();
                    bool  crit      = critbyte == 1;

                    //Main.NewText("Knockback: " + num86 + ", Direction: " + num87 + ", Crit: " + bb+" ?: "+crit);
                    if (damage > 0 && damage == recentdmg_in && knockback == recentkb_in && critbyte == recentcrit_in)
                    {
                        npc.StrikeNPC(damage, knockback, hitdir, crit, false, true);
                        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.OthersDamagedHostile || ctToCheck.color == CombatText.OthersDamagedHostileCrit))
                                    {
                                        recent = i;
                                        break;
                                    }
                                }
                            }
                        }
                        if (recent > -1)
                        {
                            Main.combatText[recent].color = DamageTypes.CheckDamageColor(recentcolor_in, crit) * 0.4f;
                        }
                        return(true);
                    }
                }
                return(false);
            }
            return(false);
        }
        //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;
            }
        }
Example #6
0
        public void UpdateToolTips(Item item, List <TooltipLine> tooltips)
        {
            if (Config.Instance.ChangeTooltipColor)
            {
                foreach (TooltipLine tooltip in tooltips)
                {
                    //Main.NewText(tooltip.Name+": "+tooltip.text);
                    //ColoredDamageTypes.Log(tooltip.Name + ": " + tooltip.mod+": "+": "+tooltip.text);
                    Color newcolor = Color.White;
                    switch (tooltip.Name)
                    {
                    case "Defense":
                        newcolor = TooltipsConfig.Instance.BaseTT.TooltipDefense;
                        break;

                    case "Damage":
                        DamageTypes.Types dmgtype = DamageTypes.GetType(item);
                        //Main.NewText("its damage");
                        switch (dmgtype)
                        {
                        case DamageTypes.Types.Melee:
                            newcolor = TooltipsConfig.Instance.BaseTT.TooltipMelee;
                            break;

                        case DamageTypes.Types.Ranged:
                            newcolor = TooltipsConfig.Instance.BaseTT.TooltipRanged;
                            break;

                        case DamageTypes.Types.Magic:
                            newcolor = TooltipsConfig.Instance.BaseTT.TooltipMagic;
                            break;

                        case DamageTypes.Types.Thrown:
                            newcolor = TooltipsConfig.Instance.BaseTT.TooltipThrowing;
                            break;

                        case DamageTypes.Types.Summon:
                            newcolor = TooltipsConfig.Instance.BaseTT.TooltipSummon;
                            break;

                        case DamageTypes.Types.Sentry:
                            newcolor = TooltipsConfig.Instance.BaseTT.TooltipSentry;
                            break;

                        case DamageTypes.Types.Radiant:
                            newcolor = TooltipsConfig.Instance.ThoriumTT.TooltipRadiant;
                            break;

                        case DamageTypes.Types.Symphonic:
                            newcolor = TooltipsConfig.Instance.ThoriumTT.TooltipSymphonic;
                            break;

                        case DamageTypes.Types.True:
                            newcolor = TooltipsConfig.Instance.ThoriumTT.TooltipTrue;
                            break;

                        /*
                         * case DamageTypes.Types.Alchemic:
                         *      newcolor = TooltipsConfig.Instance.TremorTT.TooltipAlchemic;
                         *      break;
                         */
                        default:
                            break;
                        }
                        break;
                    }
                    if (newcolor != Color.White)
                    {
                        tooltip.overrideColor = newcolor;
                    }
                }
            }
        }