HasBuff() public method

public HasBuff ( int type ) : int
type int
return int
Ejemplo n.º 1
5
        public override bool UseItem(Player player)
        {
            if (player.altFunctionUse == 2)
            {
                if (player.HasBuff(mod.BuffType("UnPowered")) >= 0)
                {

                }
                else
                {
                    player.AddBuff(mod.BuffType("PowerUnleash"), 1800);
                    player.AddBuff(mod.BuffType("UnPowered"), 7200);
                }
            }

            return true;
        }
Ejemplo n.º 2
0
        public override void UpdateAccessory(Player player)
        {
            if (player.HasBuff(BuffID.Chilled) >= 0 || player.HasBuff(BuffID.Frostburn) >= 0 || player.HasBuff(BuffID.Frozen) >= 0)
                player.statDefense += 5;

            player.maxRunSpeed -= 0.05F; // -5% move speed.

            Lighting.AddLight(player.position, 0.5F, 0.5F, 0.5F); // Add a small, red light to the player.
        }
Ejemplo n.º 3
0
        public override void UpdateAccessory(Player player)
        {
            // If the player has either of the buffs, add 1 defence.
            if (player.HasBuff(BuffID.OnFire) >= 0 || player.HasBuff(BuffID.CursedInferno) >= 0)
                player.statDefense += 1;
            player.lavaMax += 30; // Half a second lava immunity

            if (player.wet)
            {
                player.Hurt(1, 0); // If the player is in water, deal damage.
            }

            Lighting.AddLight(player.position, 0.5F, 0.1F, 0); // Add a small, red light to the player.
        }
Ejemplo n.º 4
0
        public override void AI()
        {
            Terraria.Player player = Terraria.Main.player[projectile.owner];
            if (player.dead || !player.active)
            {
                player.ClearBuff(BuffType <ScaryLookingPumpkinBuff>());
            }
            if (player.HasBuff(BuffType <ScaryLookingPumpkinBuff>()))
            {
                projectile.timeLeft = 2;
            }

            //General behavior
            Vector2 idlePosition = player.Center;

            float minionPositionOffsetX = (10 + projectile.minionPos * 40) * -player.direction;

            idlePosition.X += minionPositionOffsetX; // Go behind the player

            // Teleport to player if distance is too big
            Vector2 vectorToIdlePosition   = idlePosition - projectile.Center;
            float   distanceToIdlePosition = vectorToIdlePosition.Length();

            if (Main.myPlayer == player.whoAmI && distanceToIdlePosition > 800f)
            {
                projectile.position  = idlePosition;
                projectile.velocity *= 0.1f;
                projectile.netUpdate = true; //multiplayer related
            }
        }
 public static void PlayerUpdate(Player p)
 {
     MultiBlocks.Do();
     Waypoint.UpdateWaypoints();
     if (Main.rand.Next(2000) == 0)
     {
         foreach (object ob in Ulterraria.Debugs)
         {
             if (ob != null)
             {
                 Main.NewText(ob.ToString());
             }
         }
     }
     if (Main.keyState.IsKeyDown(XNA.Input.Keys.F) && Main.hasFocus && p.primesFury && p.HasBuff(192) == -1)
     {
         p.AddBuff(192, 1800);
     }
     int pFeatherAmount = 0;
     int fFeatherAmount = 0;
     int asteroidAmount = 0;
     for (int i = 0; i < Main.projectile.Length; i++)
     {
         if (Main.projectile[i].type == 686)
         {
             pFeatherAmount++;
         }
         if (Main.projectile[i].type == 687)
         {
             fFeatherAmount++;
         }
         if (Main.projectile[i].type == 844)
         {
             asteroidAmount++;
         }
     }
     if (p.phoenixFeather && Main.rand.Next(800) == 69 && pFeatherAmount < 4)
     {
         Projectile.NewProjectile(p.Center.X, p.Center.Y, 0, 0, 686, 67, 0f, Main.myPlayer);
     }
     if (p.kuiperBelt && Main.rand.Next(1100) == 69 && asteroidAmount < 6)
     {
         Projectile.NewProjectile(p.Center.X, p.Center.Y, 0, 0, 844, 81, 0f, Main.myPlayer);
     }
     if (p.froenixFeather && Main.rand.Next(800) == 69 && fFeatherAmount < 4)
     {
         Projectile.NewProjectile(p.Center.X, p.Center.Y, 0, 0, 687, 67, 0f, Main.myPlayer);
     }
     if (p.vanillaDamage > 0)
     {
         p.vanillaDamage -= 0.0005f;
         if (p.vanillaDamage < 0)
         {
             p.vanillaDamage = 0f;
         }
     }
 }
Ejemplo n.º 6
0
 public void OnPlayerUpdateBuffs(Player player)
 {
     foreach (var type in buffs)
     {
         var index = player.HasBuff(type);
         if (index >= 0)
             player.DelBuff(index);
         player.buffImmune[type] = true;
     }
 }
Ejemplo n.º 7
0
        public override void UpdateAccessory(Player player)
        {
            // If the player has the 'Stoned' debuff.
            if (player.HasBuff(BuffID.Stoned) >= 0)
                player.statDefense += 1;

            player.maxRunSpeed -= 0.1F; // -10% movespeed.

            Lighting.AddLight(player.position, 0.5F, 0.4F, 0); // Add a small, orange light to the player.
        }
Ejemplo n.º 8
0
        public override void UpdateAccessory(Player player)
        {
            player.lavaMax += 2; // 2 seconds lava invincibility.

            if (player.HasBuff(BuffID.CursedInferno) >= 0 || player.lavaWet)
                player.statDefense += 4;
            player.buffImmune[BuffID.OnFire] = true;
            if (player.wet)
            {
                player.Hurt(2, 0); // If the player is in water, deal damage.
            }

            Lighting.AddLight(player.position, 0.8F, 0.6F, 0); // Add a average, red light to the player.
        }
Ejemplo n.º 9
0
 public override void UpdateInventory(Player player)
 {
     if (player.HasBuff(mod.BuffType("PowerUnleash")) >= 0)
     {
         item.name = "Unleased Darkfire Katana";
         item.damage = 145;
         item.useTime = 8;
         item.useAnimation = 8;
     }
     else
     {
         item.name = "Darkfire Katana";
         item.damage = 110;
         item.useTime = 12;
         item.useAnimation = 12;
     }
 }
Ejemplo n.º 10
0
        public override void AI()
        {
            Terraria.Player player = Terraria.Main.player[projectile.owner];
            if (player.dead || !player.active)
            {
                player.ClearBuff(BuffType <FlyingFishBuff>());
            }
            if (player.HasBuff(BuffType <FlyingFishBuff>()))
            {
                projectile.timeLeft = 2;
            }

            //General behavior
            Vector2 idlePosition = player.Center;

            idlePosition.Y -= 48f;             // Go up 48 coordinates (three tiles from the center of the player)

            float minionPositionOffsetX = (10 + projectile.minionPos * 40) * -player.direction;

            idlePosition.X += minionPositionOffsetX;             // Go behind the player

            // Teleport to player if distance is too big
            Vector2 vectorToIdlePosition   = idlePosition - projectile.Center;
            float   distanceToIdlePosition = vectorToIdlePosition.Length();

            if (Main.myPlayer == player.whoAmI && distanceToIdlePosition > 2000f)
            {
                projectile.position  = idlePosition;
                projectile.velocity *= 0.1f;
                projectile.netUpdate = true;                 //multiplayer related
            }

            //"minion chain" reorganizing
            float overlapVelocity = 0.04f;

            for (int i = 0; i < Main.maxProjectiles; i++)
            {
                Projectile other = Main.projectile[i];
                if (i != projectile.whoAmI && other.active && other.owner == projectile.owner && Math.Abs(projectile.position.X - other.position.X) + Math.Abs(projectile.position.Y - other.position.Y) < projectile.width)
                {
                    if (projectile.position.X < other.position.X)
                    {
                        projectile.velocity.X -= overlapVelocity;
                    }
                    else
                    {
                        projectile.velocity.X += overlapVelocity;
                    }

                    if (projectile.position.Y < other.position.Y)
                    {
                        projectile.velocity.Y -= overlapVelocity;
                    }
                    else
                    {
                        projectile.velocity.Y += overlapVelocity;
                    }
                }
            }

            //Find target
            // Starting search distance
            float   distanceFromTarget = 400f;
            Vector2 targetCenter       = projectile.position;
            bool    foundTarget        = false;

            // Targeting feature
            if (player.HasMinionAttackTargetNPC)
            {
                NPC   npc     = Main.npc[player.MinionAttackTargetNPC];
                float between = Vector2.Distance(npc.Center, projectile.Center);
                if (between < 1000f)                 // Targetting distance
                {
                    distanceFromTarget = between;
                    targetCenter       = npc.Center;
                    foundTarget        = true;
                }
            }
            if (!foundTarget)             //if target isn't found, then
            {
                for (int i = 0; i < Main.maxNPCs; i++)
                {
                    NPC npc = Main.npc[i];
                    if (npc.CanBeChasedBy())
                    {
                        float between     = Vector2.Distance(npc.Center, projectile.Center);
                        bool  closest     = Vector2.Distance(projectile.Center, targetCenter) > between;
                        bool  inRange     = between < distanceFromTarget;
                        bool  lineOfSight = Collision.CanHitLine(projectile.position, projectile.width, projectile.height, npc.position, npc.width, npc.height);
                        // Additional check for this specific minion behavior, otherwise it will stop attacking once it dashed through an enemy while flying though tiles afterwards
                        // The number depends on various parameters seen in the movement code below. Test different ones out until it works alright
                        bool closeThroughWall = between < 100f;
                        if (((closest && inRange) || !foundTarget) && (lineOfSight || closeThroughWall))
                        {
                            distanceFromTarget = between;
                            targetCenter       = npc.Center;
                            foundTarget        = true;
                        }
                    }
                }
            }

            projectile.friendly = foundTarget;             // friendly needs to be set to true so the minion can deal contact damage

            //Movement

            // Default movement parameters for attacking
            float speed   = 8f;
            float inertia = 30f;

            if (foundTarget)                  //if target is found, then
            {
                if (distanceFromTarget > 40f) //if distance from enemy is less than X, then
                {
                    Vector2 direction = targetCenter - projectile.Center;
                    direction.Normalize();
                    direction          *= speed;
                    projectile.velocity = (projectile.velocity * (inertia - 1) + direction) / inertia;
                }
            }

            else
            {
                // Minion doesn't have a target: return to player and idle
                if (distanceToIdlePosition > 600f)
                {
                    // Speed up the minion if it's away from the player
                    speed   = 12f;
                    inertia = 60f;
                }

                else
                {
                    // Slow down the minion if closer to the player
                    speed   = 4f;
                    inertia = 80f;
                }
                if (distanceToIdlePosition > 20f)
                {
                    // The immediate range around the player (when it passively floats about)

                    // This is a simple movement formula using the two parameters and its desired direction to create a "homing" movement
                    vectorToIdlePosition.Normalize();
                    vectorToIdlePosition *= speed;
                    projectile.velocity   = (projectile.velocity * (inertia - 1) + vectorToIdlePosition) / inertia;
                }
                else if (projectile.velocity == Vector2.Zero)
                {
                    // If there is a case where it's not moving at all, give it a little "poke"
                    projectile.velocity.X = -0.15f;
                    projectile.velocity.Y = -0.05f;
                }
            }

            //Animation and visuals

            // So it will lean slightly towards the direction it's moving
            projectile.rotation        = projectile.velocity.X * 0.05f;
            projectile.spriteDirection = -projectile.direction;

            // Loop trough all the frames from animation
            int frameSpeed = 5;

            projectile.frameCounter++;
            if (projectile.frameCounter >= frameSpeed)
            {
                projectile.frameCounter = 0;
                projectile.frame++;
                if (projectile.frame >= Main.projFrames[projectile.type])
                {
                    projectile.frame = 0;
                }
            }

            Lighting.AddLight(projectile.Center, Color.White.ToVector3() * 0.18f);
        }
 public static void PlayerHurt(Player p)
 {
     if (p.HasBuff(191) == -1 && p.cursedParchment)
     {
         p.AddBuff(191, 600);
     }
     if (p.spikedOrnaments && Main.rand.Next(0, 10) == 1)
     {
         Projectile.NewProjectile(p.Center.X, p.Center.Y, Main.rand.Next(-7, 8), -1, 692, 11, 0f, Main.myPlayer);
     }
     if (p.shardFetish && Main.rand.Next(0, 4) == 0)
     {
         int rand = Main.rand.Next(1, 4);
         for (int i = 0; i < rand; i++)
         {
             if (Main.rand.Next(2) == 0)
             {
                 int side = Main.rand.Next(4) <= 1 ? 3 : -3;
                 Projectile.NewProjectile(p.Center.X, p.Center.Y, side, Main.rand.Next(0, 4), 783, 5, 2f, Main.myPlayer);
             }
             else
             {
                 int side1 = Main.rand.Next(4) <= 1 ? 3 : -3;
                 Projectile.NewProjectile(p.Center.X, p.Center.Y, Main.rand.Next(-3, 4), side1, 783, 5, 2f, Main.myPlayer);
             }
         }
     }
 }
        public static void AccessoryEffects(Player p, int type)
        {
            if (p.vanillaValor)
            {
                p.meleeDamage += p.vanillaDamage;
            }
            if (p.chocolateCharge)
            {
                p.rangedDamage += (float)(Math.Round(PlayerSpeed()) / 200);
            }
            if (type == 3938)
            {
                p.meleeDamage += 0.07f;
                p.meleeCrit += 7;
                p.meleeSpeed += 0.08f;
            }
            if (type == 3939)
            {
                p.rangedDamage += 0.1f;
                p.rangedCrit += 4;
            }
            if (type == 3940)
            {
                p.statManaMax2 += 80;
                p.magicDamage += 0.06f;
                p.magicCrit += 6;
            }
            if (type == 3941)
            {
                p.meleeCrit += 5;
                p.magicCrit += 5;
                p.rangedCrit += 5;
                p.thrownCrit += 5;
            }
            if (type == 3942)
            {
                p.meleeDamage += 0.05f;
                p.rangedDamage += 0.05f;
                p.magicDamage += 0.05f;
                p.minionDamage += 0.05f;
                p.thrownDamage += 0.05f;
                p.moveSpeed += 0.07f;
            }
            if (type == 3943)
            {
                p.minionDamage += 0.05f;
                p.maxMinions++;
            }
            if (type == 3944)
            {
                p.maxMinions += 2;
            }
            if (type == 3945)
            {
                p.moveSpeed += 0.12f;
                p.maxMinions++;
            }
            if (type == 3965)
            {
                p.manaRegen += 7;
            }
            if (type == 3966)
            {
                p.statManaMax2 += 20;
            }
            if (type == 3967)
            {
                p.magicDamage += 0.03f;
                p.magicCrit += 3;
            }
            if (type == 3992)
            {
                p.kuiperBelt = true;
            }
            if (type == 3993)
            {
                p.cometCharm = true;
            }
            if (type == 4013)
            {
                p.doubleThrowing = true;
            }
            if (type == 4014)
            {
                p.thrownDamage += 0.08f;
                p.thrownCost7 = true;
                //This accessory is supposed to reduce the chance of consuming a throwing item but I'm not sure if that function exists yet
            }
            if (type == 4025)
            {
                p.pickSpeed -= 0.2f;
            }
            if (type == 4033)
            {
                p.maxMinions++;
            }
            if (type == 4034)
            {
                p.maxMinions += 2;
            }
            if (type == 4038)
            {
                p.thrownDamage += 0.07f;
                p.thrownCrit += 7;
            }
            if (type == 4039)
            {
                p.thrownDamage += 0.1f;
                p.thrownCrit += 7;
                p.thrownCost7 = true;
                //This accessory is supposed to reduce the chance of consuming a throwing item but I'm not sure if that function exists yet
                //Done you sexy hoe - Boffin
            }
            if (type == 4042)
            {
                p.thrownDamage += 0.04f;
                p.thrownCrit += 3;
            }
            if (type == 4043)
            {
                p.thrownDamage += 0.04f;
                p.statDefense += 1;
            }
            if (type == 4044)
            {
                p.minionDamage += 0.06f;
            }
            if (type == 4045)
            {
                p.minionDamage += 0.04f;
                p.statDefense += 1;
            }
            if (type == 3664)
            {
                p.primesFury = true;
            }
            if (type == 3661)
            {
                p.potionDelayTime = (int)((double)p.potionDelayTime * 0.65);
                p.restorationDelayTime = (int)((double)p.restorationDelayTime * 0.65);
                p.statLifeMax2 += 20;
                p.lifeRegen += 4;
            }
            if (type == 3662)
            {
                p.manaSickReduction *= 0.7f;
                p.statManaMax2 += 40;
                p.manaRegen += 4;
            }
            if (type == 3663)
            {
                p.potionDelayTime = (int)((double)p.potionDelayTime * 0.65);
                p.restorationDelayTime = (int)((double)p.restorationDelayTime * 0.65);
                p.manaSickReduction *= 0.7f;
                p.lifeRegen += 10;
                p.manaRegen += 10;
                p.statLifeMax2 += 40;
                p.statManaMax2 += 80;
            }
            if (type == 3639)
            {
                p.phoenixFeather = true;
            }
            if (type == 3640)
            {
                p.froenixFeather = true;
            }
            if (type == 3660)
            {
                float l = p.statLife;
                float k = p.statLifeMax2;
                if (l > k * 0.75f)
                {
                    p.minionDamage += 0.08f;
                }
                else if (l > k * 0.5f)
                {
                    p.minionDamage += 0.12f;
                }
                else if (l > k * 0.25f)
                {
                    p.minionDamage += 0.16f;
                }
                else if (l > 0)
                {
                    p.minionDamage += 0.20f;
                }
            }
            if (type == 3659)
            {
                p.cursedParchment = true;
            }
            if (type == 3651)
            {
                p.meleeDamage += 0.04f;
                p.rangedDamage += 0.04f;
                p.magicDamage += 0.04f;
                p.minionDamage += 0.04f;
                p.thrownDamage += 0.04f;
            }
            if (type == 3652)
            {
                p.statDefense += 2;
            }
            if (type == 3653)
            {
                p.magicCrit += 3;
                p.meleeCrit += 3;
                p.thrownCrit += 3;
                p.rangedCrit += 3;
            }
            if (type == 3654)
            {
                p.statDefense += 1;
                p.meleeDamage += 0.03f;
                p.rangedDamage += 0.03f;
                p.magicDamage += 0.03f;
                p.minionDamage += 0.03f;
                p.thrownDamage += 0.03f;
            }
            if (type == 3655)
            {
                p.meleeDamage += 0.04f;
                p.rangedDamage += 0.04f;
                p.magicDamage += 0.04f;
                p.minionDamage += 0.04f;
                p.thrownDamage += 0.04f;
                p.magicCrit += 2;
                p.meleeCrit += 2;
                p.thrownCrit += 2;
                p.rangedCrit += 2;
            }
            if (type == 3656)
            {
                p.statDefense += 2;
                p.meleeSpeed += 0.05f;
            }
            if (type == 3657)
            {
                p.moveSpeed += 0.07f;
            }
            if (type == 3658)
            {
                p.statDefense += 3;
                p.moveSpeed += 0.04f;
            }
            if (type == 3761)
            {
                p.meleeDamage += 0.06f;
                p.rangedDamage += 0.06f;
                p.magicDamage += 0.06f;
                p.minionDamage += 0.06f;
                p.thrownDamage += 0.06f;
                p.moveSpeed += 0.03f;
            }
            if (type == 3762)
            {
                p.endurance += 0.06f;
                p.statDefense += 1;
            }
            if (type == 3763)
            {
                p.magicCrit += 5;
                p.meleeCrit += 5;
                p.thrownCrit += 5;
                p.rangedCrit += 5;
                p.statLifeMax2 += 10;
            }
            if (type == 3764)
            {
                p.statDefense += 2;
                p.meleeDamage += 0.05f;
                p.rangedDamage += 0.05f;
                p.magicDamage += 0.05f;
                p.minionDamage += 0.05f;
                p.thrownDamage += 0.05f;
            }
            if (type == 3765)
            {
                p.meleeDamage += 0.06f;
                p.rangedDamage += 0.06f;
                p.magicDamage += 0.06f;
                p.minionDamage += 0.06f;
                p.thrownDamage += 0.06f;
                p.critDamage = 2.4f;
                p.moveSpeed -= 0.03f;
            }
            if (type == 3766)
            {
                p.statDefense += 3;
                p.meleeSpeed += 0.1f;
            }
            if (type == 3767)
            {
                p.jumpboostint += 5;
                p.moveSpeed += 0.07f;
            }
            if (type == 3768)
            {
                p.statDefense += 2;
                p.jumpboostint += 3;
                p.moveSpeed += 0.08f;
            }
            if (type == 3769)
            {
                p.jumpboostint += 5;
            }
            if (type == 3770)
            {
                p.statDefense += 1;
                p.jumpboostint += 3;
            }
            if (type == 3771)
            {
                p.jumpboostint += 10;
                p.moveSpeed += 0.07f;
            }
            if (type == 3772)
            {
                p.statDefense += 2;
                p.jumpboostint += 5;
            }
            if (type == 3773)
            {
                /*if (p.ownedProjectileCounts[719] == 0)
                {
                    int proj = Projectile.NewProjectile(p.position.X + p.direction * 10, p.position.Y, 0, 0, 719, 17, 2, Main.myPlayer);
                }*/
                p.meleeDamage += 0.16f;
                p.rangedDamage += 0.16f;
                p.magicDamage += 0.16f;
                p.minionDamage += 0.16f;
                p.thrownDamage += 0.16f;
                p.moveSpeed -= 0.1f;
            }
            if (type == 3774)
            {
                p.meleeDamage += 0.12f;
                p.meleeSpeed -= 0.25f;
                p.statDefense += 1;
            }
            if (type == 3775)
            {
                p.meleeDamage += 0.08f;
                p.meleeSpeed += 0.06f;
                p.statDefense += 1;
            }
            if (type == 3776)
            {
                p.moveSpeed += 0.04f;
                p.jumpboostint += 5;
                p.statDefense += 1;
                for (int i = 0; i < 2; i++)
                {
                    Dust.NewDust(p.position, p.width, p.height, 141, Main.rand.Next(-3, 4), Main.rand.Next(-3, 4));
                }
            }
            if (type == 3650)
            {
                p.buffImmune[33] = true;
                p.buffImmune[36] = true;
                p.buffImmune[30] = true;
                p.buffImmune[20] = true;
                p.buffImmune[32] = true;
                p.buffImmune[31] = true;
                p.buffImmune[35] = true;
                p.buffImmune[23] = true;
                p.buffImmune[22] = true;
                if (p.statLife < p.statLifeMax2 / 4)
                {
                    p.meleeCrit += 15;
                    p.magicCrit += 15;
                    p.rangedCrit += 15;
                    p.thrownCrit += 15;
                    p.moveSpeed += 0.20f;
                    p.magicDamage += 0.10f;
                    p.meleeDamage += 0.10f;
                    p.minionDamage += 0.10f;
                    p.thrownDamage += 0.10f;
                    p.rangedDamage += 0.10f;
                }
                else if (p.statLife < p.statLifeMax2 / 3)
                {
                    p.moveSpeed += 0.10f;
                    p.magicDamage += 0.10f;
                    p.meleeDamage += 0.10f;
                    p.minionDamage += 0.10f;
                    p.thrownDamage += 0.10f;
                    p.rangedDamage += 0.10f;
                }
                else if (p.statLife < p.statLifeMax2 / 2)
                {
                    p.magicDamage += 0.05f;
                    p.meleeDamage += 0.05f;
                    p.minionDamage += 0.05f;
                    p.thrownDamage += 0.05f;
                    p.rangedDamage += 0.05f;
                }
            }
            if (type == 3639)
            {
                p.lifeRegen += 5;
                p.statDefense += 5;
                p.longInvince = true;
            }
            if (type == 3640)
            {

                if ((double)p.statLife <= (double)p.statLifeMax2 * 0.5)
                {
                    p.AddBuff(62, 5, true);
                }
                p.lifeRegen += 5;
                p.statDefense += 5;
                p.longInvince = true;

            }
            if (type == 3634)
            {
                if (p.statLife < p.statLifeMax2 / 4)
                {
                    p.meleeCrit += 15;
                    p.magicCrit += 15;
                    p.rangedCrit += 15;
                    p.thrownCrit += 15;
                    p.moveSpeed += 0.20f;
                    p.magicDamage += 0.10f;
                    p.meleeDamage += 0.10f;
                    p.minionDamage += 0.10f;
                    p.thrownDamage += 0.10f;
                    p.rangedDamage += 0.10f;
                }
                else if (p.statLife < p.statLifeMax2 / 3)
                {
                    p.moveSpeed += 0.10f;
                    p.magicDamage += 0.10f;
                    p.meleeDamage += 0.10f;
                    p.minionDamage += 0.10f;
                    p.thrownDamage += 0.10f;
                    p.rangedDamage += 0.10f;
                }
                else if (p.statLife < p.statLifeMax2 / 2)
                {
                    p.magicDamage += 0.05f;
                    p.meleeDamage += 0.05f;
                    p.minionDamage += 0.05f;
                    p.thrownDamage += 0.05f;
                    p.rangedDamage += 0.05f;
                }
            }
            if (type == 3723)
            {
                p.wingTimeMax = 100;
            }
            if (type == 3934) //cream wings
            {
                p.wingTimeMax = 100;
            }
            if (type == 3935) //sprinkle wings
            {
                p.wingTimeMax = 120;
            }
            if (type == 3786)
            {
                if (p.HasBuff(25) != -1)
                {
                    p.moveSpeed -= 0.05f;
                    p.lifeRegen += 1;
                    p.statDefense += 3;
                    p.meleeDamage += 0.05f;
                }
            }
            if (type == 3791)
            {
                p.magicDamage += 0.02f;
                p.meleeDamage += 0.02f;
                p.minionDamage += 0.02f;
                p.thrownDamage += 0.02f;
                p.rangedDamage += 0.02f;
                p.pickSpeed -= 0.05f;
            }
            if (type == 3792)
            {
                p.magicDamage += 0.05f;
                p.meleeDamage += 0.05f;
                p.minionDamage += 0.05f;
                p.thrownDamage += 0.05f;
                p.rangedDamage += 0.05f;
                p.pickSpeed -= 0.10f;
            }
            if (type == 3897)
            {
                p.moveSpeed += 0.4f;
                p.lifeRegen -= 1;
                p.statDefense -= 5;
            }
            if (type == 4021)
            {
                bool flag = false;
                for (int d = 0; d < 22; d++)
                {
                   if (Main.debuff[p.buffType[d]])
                   {
                        flag = true;
                   } 
                }
                if (flag)
                {
                    p.lifeRegen += 1;
                    p.statDefense += 3;
                    p.moveSpeed += 0.07f;
                }
            }
            if (type == 4022 && (!Main.dayTime || Main.eclipse))
            {
                Lighting.AddLight((int)(p.position.X + (float)(p.width / 2)) / 16, (int)(p.position.Y + (float)(p.height / 2)) / 16, 2.55f, 1.25f, 0f);
            }
            if (type == 4046)
            {
                p.blazeAmulet = true;
            }
            if (type == 4047)
            {
                p.calmed = true;
            }
            if (type == 4048)
            {
                p.crazeAmulet = true;
            }
            if (type == 4049)
            {
                if (Main.dayTime)
                {
                   p.minionDamage += 0.3f; 
                }
                if (!Main.dayTime || Main.eclipse)
                {
                    p.maxMinions += 3;
                }
            }
            if (type == 4062)
            {
                p.potionDelayTime = (int)((double)p.potionDelayTime * 0.8);
                p.restorationDelayTime = (int)((double)p.restorationDelayTime * 0.8);
                p.lifeRegen += 5;   
            }
            if (type == 4065)
            {
                p.thorns = 0.5f;
            }
            if (type == 4078)
            {
                p.kbGlove = true;
                p.meleeSpeed += 0.05f;
                p.meleeDamage += 0.15f;
                p.thorns = 0.5f;
            }
            if (type == 4106)
            {
                bool flag = false;
                for (int d = 0; d < 22; d++)
                {
                   if (Main.debuff[p.buffType[d]])
                   {
                        flag = true;
                   } 
                }
                if (flag)
                {
                    p.lifeRegen += 6;
                }
                p.buffImmune[30] = true;
            }
        }
 public static void SetBonuses(Player p)
 {
     if (p.head == 194 && p.body == 195 && p.legs == 135)
     {
         p.maxMinions++;
         p.setBonus = "Increases your max number of minions by 1";
     }
     if (p.head == 195 && p.body == 196 && p.legs == 136)
     {
         p.buffImmune[46] = true;
         p.setBonus = "Grants you immunity to the 'Chilled' debuff";
     }
     if (p.head == 196 && p.body == 197 && p.legs == 137)
     {
         if (p.HasBuff(12) == -1)
         {
             p.AddBuff(12, 60);
         }
         p.setBonus = "Grants you Night Vision";
     }
     if (p.head == 197 && p.body == 198 && p.legs == 138)
     {
         p.endurance += 0.07f;
         p.setBonus = "Reduces damage taken by 7%";
     }
     if (p.head == 198 && p.body == 199 && p.legs == 139)
     {
         p.buffImmune[24] = true;
         p.setBonus = "Grants you immunity to the 'On Fire!' debuff";
     }
     if (p.head == 199 && p.body == 200 && p.legs == 140)
     {
         p.cursedFlames = true;
         p.setBonus = "Minions and weapons now inflict 'Cursed Inferno'";
     }
     if (p.head == 200 && p.body == 201 && p.legs == 141)
     {
         p.ichorQ = true;
         p.setBonus = "Minions and weapons now inflict 'Ichor'";
     }
     if (p.head == 201 && p.body == 202 && p.legs == 142)
     {
         p.primeSkelArmour = true;
         p.setBonus = "Greatly increased movement speed after striking an enemy";
     }
     if (p.head == 202 && p.body == 203 && p.legs == 143)
     {
         Lighting.AddLight((int)(p.position.X + (float)(p.width / 2)) / 16, (int)(p.position.Y + (float)(p.height / 2)) / 16, 0.8f, 0.95f, 1f);
         p.setBonus = "You now emit light";
     }
     if (p.head == 203 && p.body == 204 && p.legs == 144)
     {
         p.shadowflame = true;
         p.setBonus = "Minions and weapons now inflict 'Shadowflame'";
     }
     if (p.head == 204 && p.body == 205 && p.legs == 145)
     {
         p.spikedOrnaments = true;
         p.setBonus = "Drop Spiked Ornaments when damaged";
     }
     if (p.head == 205 && p.body == 206 && p.legs == 146)
     {
         if (p.wet)
         {
             p.minionDamage += 0.3f;
         }
         p.setBonus = "Minions do far more damage underwater";
     }
     if (p.head == 208 && p.body == 207 && p.legs == 147)
     {
         p.statDefense += 1;
         p.setBonus = "+1 Defense";
     }
     if (p.head == 209 && p.body == 208 && p.legs == 148)
     {
         p.vanillaValor = true;
         p.setBonus = "Dealing melee damage increases melee damage.";
     }
     if (p.head == 210 && p.body == 208 && p.legs == 148)
     {
         p.chocolateCharge = true;
         p.setBonus = "Speed increases ranged damage.";
     }
     if (p.head == 211 && p.body == 208 && p.legs == 148)
     {
         p.strawberryStrike = true;
         p.statManaMax2 += 40;
         p.setBonus = "Mana and life pickups are more fruitful. Increased maximum mana by 40.";
     }
     if (p.head == 212 && p.body == 209 && p.legs == 149)
     {
         p.statDefense += 4;
         if (p.wet)
         {
             p.statDefense -= 5;
             p.minionDamage += 0.35f;
         }
         p.setBonus = "+4 defence, when wet -5 defense and increased minion damage.";
     }
     if (p.head == 214 && p.body == 211 && p.legs == 151)
     {
         p.blasterPowered = true;
         p.setBonus = "The Comet Blaster is powered up.";
     }
 }