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; }
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. }
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. }
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; } } }
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; } }
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. }
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. }
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; } }
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."; } }