public override bool CanUseItem(Player player) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (player.altFunctionUse == 2 && hamonPlayer.amountOfHamon >= 5) { item.damage *= (int)1.5; item.useTime = 60; item.useAnimation = 60; item.useStyle = 5; item.knockBack = 2f; item.shootSpeed = 12f; item.useTurn = true; item.noWet = true; } if (player.altFunctionUse != 2 || (player.altFunctionUse == 2 && hamonPlayer.amountOfHamon <= 4)) { item.damage = 16; item.useTime = 60; item.useAnimation = 60; item.useStyle = 5; item.knockBack = 2f; item.shoot = mod.ProjectileType("ClackerProjectile"); item.shootSpeed = 8f; item.useTurn = true; item.noWet = true; } if ((player.ownedProjectileCounts[mod.ProjectileType("ClackerProjectile")] >= 1) || (player.ownedProjectileCounts[mod.ProjectileType("ChargedClackerProjectile")] >= 1)) { return(false); } return(true); }
public override void HoldItem(Player player) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); ChargeHamon(); if (player.whoAmI == item.owner && hamonPlayer.learnedHamonSkills.ContainsKey(HamonPlayer.HamonItemHealing) && hamonPlayer.learnedHamonSkills[HamonPlayer.HamonItemHealing]) { if (Main.mouseRight && hamonPlayer.amountOfHamon >= hamonPlayer.hamonAmountRequirements[HamonPlayer.HamonItemHealing]) { healTimer++; if (Main.rand.Next(0, 2) == 0) { int dustIndex = Dust.NewDust(player.position, player.width, player.height, 169, SpeedY: Main.rand.NextFloat(-0.6f, 1f)); Main.dust[dustIndex].noGravity = true; } } if (healTimer >= (4 * 60) / hamonPlayer.hamonSkillLevels[HamonPlayer.HamonItemHealing]) { int healamount = Main.rand.Next(10 + (5 * hamonPlayer.hamonSkillLevels[HamonPlayer.HamonItemHealing]), 20 * hamonPlayer.hamonSkillLevels[HamonPlayer.HamonItemHealing]); player.HealEffect(healamount); player.statLife += healamount; hamonPlayer.amountOfHamon -= hamonPlayer.hamonAmountRequirements[HamonPlayer.HamonItemHealing]; healTimer = 0; } if (Main.mouseRightRelease) { healTimer = 0; } } if (player.statLife <= 25) { player.AddBuff(mod.BuffType("RUUUN"), 360); } }
public void ChargeHamon() { Player player = Main.player[item.owner]; HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); bool specialPressed = false; if (!Main.dedServ) { specialPressed = JoJoStands.SpecialHotKey.Current; } if (specialPressed) { increaseCounter++; player.velocity.X /= 3f; hamonPlayer.hamonIncreaseCounter = 0; hamonPlayer.chargingHamon = true; Dust.NewDust(player.position, player.width, player.height, 169, player.velocity.X * -0.5f, player.velocity.Y * -0.5f); if (hamonPlayer.learnedHamonSkills[HamonPlayer.PoisonCancellation]) { for (int b = 0; b < player.buffType.Length; b++) { if (player.buffType[b] == BuffID.Poisoned) { player.buffTime[b] -= 5; } } } } if (increaseCounter >= 30) { hamonPlayer.amountOfHamon += 1; increaseCounter = 0; } }
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (player.altFunctionUse == 2 && hamonPlayer.amountOfHamon >= 3) { damage += 6; type = mod.ProjectileType("CutterHamonBubble"); knockBack = 8f; } if (player.altFunctionUse != 2 && hamonPlayer.amountOfHamon > 1) { if (player.statLife <= (player.statLifeMax * 0.05f)) { damage += 24; type = mod.ProjectileType("HamonBloodBubble"); hamonPlayer.amountOfHamon -= 1; } else { type = mod.ProjectileType("HamonBubble"); hamonPlayer.amountOfHamon -= 1; } } return(true); }
public override bool CanUseItem(Player player) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (player.altFunctionUse == 2 && player.ownedProjectileCounts[mod.ProjectileType("CutterHamonBubble")] <= 0 && hamonPlayer.amountOfHamon < 3) { return(false); } if (player.altFunctionUse != 2 && hamonPlayer.amountOfHamon < 1) { return(false); } if (player.altFunctionUse == 2) { item.damage = 15; item.knockBack = 8f; item.shoot = mod.ProjectileType("CutterHamonBubble"); } if (player.altFunctionUse != 2) { item.damage = 9; item.knockBack = 1f; item.shoot = mod.ProjectileType("HamonBubble"); } return(true); }
public override bool CanUseItem(Player player) { MyPlayer mPlayer = player.GetModPlayer <MyPlayer>(); HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (!mPlayer.StandOut || (mPlayer.StandOut && mPlayer.StandAutoMode)) { if (player.altFunctionUse == 2 && hamonPlayer.amountOfHamon >= 5) { item.noUseGraphic = true; item.useTime = 180; item.useAnimation = 180; item.shoot = 0; int healamount = Main.rand.Next(10, 20); player.HealEffect(healamount); player.statLife += healamount; hamonPlayer.amountOfHamon -= 5; } if (player.altFunctionUse == 2 && hamonPlayer.amountOfHamon <= 5) { return(false); } } if (player.altFunctionUse != 2) { item.knockBack = 1f; item.shoot = mod.ProjectileType("HamonPunches"); item.useAnimation = 25; item.useTime = 15; item.channel = true; item.autoReuse = false; item.shootSpeed = 15f; } return(true); }
public override void GetWeaponKnockback(Player player, ref float knockback) { Hamon.HamonPlayer hamonPlayer = player.GetModPlayer <Hamon.HamonPlayer>(); if (hamonPlayer.amountOfHamon >= 5) { knockback += 1f; } }
public override void ModifyWeaponDamage(Player player, ref float add, ref float mult, ref float flat) { Hamon.HamonPlayer hamonPlayer = player.GetModPlayer <Hamon.HamonPlayer>(); if (hamonPlayer.amountOfHamon >= 5) { flat += 33f; } }
public override void ModifyHitNPC(Player player, NPC target, ref int damage, ref float knockBack, ref bool crit) { HamonPlayer hPlayer = player.GetModPlayer <HamonPlayer>(); if (hPlayer.learnedHamonSkills[HamonPlayer.SunTag] && target.GetGlobalNPC <JoJoGlobalNPC>().sunTagged) { damage = (int)(damage * 1.15f); } }
// As a modder, you could also opt to make the Get overrides also sealed. Up to the modder public override void ModifyWeaponDamage(Player player, ref float add, ref float mult, ref float flat) //when making the base damage values, make sure they are around the 10-20's cause otherwise, at MoonLord they'd go over 250 { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); mult *= hamonPlayer.hamonDamageBoosts; if (!affectedByHamonScaling) { return; } if (NPC.downedBoss1) //eye of cthulu { add += 1.15f; //this is 14% } if (NPC.downedBoss2) //the crimson/corruption bosses { add += 1.17f; } if (NPC.downedBoss3) //skeletron { add += 1.13f; } if (Main.hardMode) //wall of flesh { mult *= 1.3f; } if (NPC.downedMechBoss1) //any mechboss orders { add += 1.18f; } if (NPC.downedMechBoss2) { add += 1.16f; } if (NPC.downedMechBoss3) { add += 1.18f; } if (NPC.downedPlantBoss) //plantera { add += 1.19f; } if (NPC.downedGolemBoss) //golem { add += 1.19f; } if (NPC.downedMoonlord) //moon lord { add += 1.29f; } if (hamonPlayer.amountOfHamon >= hamonPlayer.maxHamon / 2) //more than half of maxHamon { mult *= 1.5f; } }
public override void ModifyTooltips(List <TooltipLine> tooltips) { Player player = Main.player[item.owner]; HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (hamonPlayer.learnedHamonSkills.ContainsKey(HamonPlayer.HamonItemHealing) && hamonPlayer.learnedHamonSkills[HamonPlayer.HamonItemHealing]) { TooltipLine tooltipAddition = new TooltipLine(mod, "Damage", "Hold Right-Click for more than " + (4 / hamonPlayer.hamonSkillLevels[HamonPlayer.HamonItemHealing]) + " seconds to heal life! (Requires more than " + hamonPlayer.hamonAmountRequirements[HamonPlayer.HamonItemHealing] + " Hamon)"); tooltips.Add(tooltipAddition); } }
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (player.altFunctionUse == 2 && hamonPlayer.amountOfHamon >= 5) { type = mod.ProjectileType("ChargedClackerProjectile"); hamonPlayer.amountOfHamon -= 5; } return(true); }
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { Hamon.HamonPlayer hamonPlayer = player.GetModPlayer <Hamon.HamonPlayer>(); if (hamonPlayer.amountOfHamon >= 5) { speedX *= 2f; speedY *= 2f; hamonPlayer.amountOfHamon -= 5; } return(true); }
public override bool CanUseItem(Player player) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if ((player.ownedProjectileCounts[mod.ProjectileType("ClackerProjectile")] >= 1) || (player.ownedProjectileCounts[mod.ProjectileType("ChargedClackerProjectile")] >= 1)) { return(false); } if (player.altFunctionUse != 2 || (player.altFunctionUse == 2 && hamonPlayer.amountOfHamon <= 4)) { item.shoot = mod.ProjectileType("ClackerProjectile"); } return(true); }
public override void HoldItem(Player player) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (JoJoStands.SpecialHotKey.Current) { increaseCounter++; player.velocity.X /= 3f; hamonPlayer.counter = 0; Dust.NewDust(player.position, player.width, player.height, 169, player.velocity.X * -0.5f, player.velocity.Y * -0.5f); } if (increaseCounter >= 30) { hamonPlayer.HamonCounter += 1; increaseCounter = 0; } }
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (player.statLife <= 50) { item.shoot = mod.ProjectileType("HamonBloodBubble"); item.shootSpeed = 5f; item.damage += 24; hamonPlayer.amountOfHamon -= 1; } else { item.shoot = mod.ProjectileType("HamonBubble"); item.shootSpeed = 30f; hamonPlayer.amountOfHamon -= 1; } return(true); }
public override void HoldItem(Player player) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); player.waterWalk = true; player.waterWalk2 = true; if (player.statLife <= 25) { player.AddBuff(mod.BuffType("RUUUN"), 360); } if (JoJoStands.SpecialHotKey.Current) { increaseCounter++; player.velocity.X /= 3f; hamonPlayer.counter = 0; Dust.NewDust(player.position, player.width, player.height, 169, player.velocity.X * -0.5f, player.velocity.Y * -0.5f); } if (increaseCounter >= 30) { hamonPlayer.HamonCounter += 1; increaseCounter = 0; } }
public override bool CanUseItem(Player player) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (player.altFunctionUse == 2 && hamonPlayer.amountOfHamon >= 3) { item.damage = 17; item.width = 30; item.height = 18; item.useTime = 12; item.useAnimation = 12; item.useStyle = 3; item.knockBack = 3; item.autoReuse = false; item.shoot = mod.ProjectileType("CutterHamonBubble"); item.shootSpeed = 7f; hamonPlayer.amountOfHamon -= 3; } if (player.altFunctionUse == 2 && hamonPlayer.amountOfHamon <= 3) { return(false); } if (player.altFunctionUse != 2) { item.damage = 15; item.width = 30; item.height = 30; item.useTime = 8; item.useAnimation = 8; item.useStyle = 3; item.knockBack = 1; item.autoReuse = false; item.shoot = mod.ProjectileType("HamonBubble"); item.shootSpeed = 10f; } return(true); }
public void ChargeHamon() { Player player = Main.player[item.owner]; HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); bool specialPressed = false; if (!Main.dedServ) { specialPressed = JoJoStands.SpecialHotKey.Current; } if (specialPressed) { increaseCounter++; player.velocity.X /= 3f; hamonPlayer.hamonIncreaseCounter = 0; Dust.NewDust(player.position, player.width, player.height, 169, player.velocity.X * -0.5f, player.velocity.Y * -0.5f); } if (increaseCounter >= 30) { hamonPlayer.amountOfHamon += 1; increaseCounter = 0; } }
public override void HoldItem(Player player) { MyPlayer mPlayer = player.GetModPlayer <MyPlayer>(); HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (punchCounter > 0) { punchCounter--; } if (useCool > 0) { useCool--; } if (punchCounter <= 0) { numberOfPunches = 0; } ChargeHamon(); if (mPlayer.StandOut && !mPlayer.StandAutoMode) { return; } hamonPlayer.usingItemThatIgnoresEnemyDamage = true; if (Main.mouseLeft && canPunchAgain && useCool <= 0 && player.ownedProjectileCounts[mod.ProjectileType("SilkPunches")] <= 0) { useCool += item.useTime; canPunchAgain = false; if (Main.MouseWorld.X - player.position.X >= 0) { player.direction = 1; } else { player.direction = -1; } if (Math.Abs(player.velocity.X) <= 4f) { player.velocity.X += 1f * player.direction; } if (numberOfPunches > 2) { punchCounter = 0; hamonPlayer.amountOfHamon -= 2; Projectile.NewProjectile(player.position, Vector2.Zero, mod.ProjectileType("SilkPunches"), item.damage, item.knockBack, item.owner, numberOfPunches); numberOfPunches = 0; } else { punchCounter += 15; hamonPlayer.amountOfHamon -= 1; Main.PlaySound(SoundID.Item1, player.Center); Projectile.NewProjectile(player.position, Vector2.Zero, mod.ProjectileType("SilkPunches"), item.damage, item.knockBack, item.owner, numberOfPunches); numberOfPunches += 1; } } if (Main.mouseLeftRelease) { canPunchAgain = true; } if (Main.mouseRight && hamonPlayer.amountOfHamon >= 5) { if (!enemyBeingGrabbed) { for (int n = 0; n < Main.maxNPCs; n++) { NPC npc = Main.npc[n]; if (npc.active) { if (player.Distance(npc.Center) <= 30f && !npc.boss && !npc.immortal && !npc.hide) { enemyBeingGrabbed = true; heldEnemyIndex = npc.whoAmI; hamonPlayer.enemyToIgnoreDamageFromIndex = npc.whoAmI; break; } } } } else { NPC heldNPC = Main.npc[heldEnemyIndex]; if (hamonPlayer.enemyToIgnoreDamageFromIndex == -1 || !heldNPC.active) { hamonPlayer.enemyToIgnoreDamageFromIndex = -1; enemyBeingGrabbed = false; heldEnemyIndex = -1; heldEnemyTimer = 0; item.reuseDelay += 120; return; } player.controlUp = false; player.controlDown = false; player.controlLeft = false; player.controlRight = false; player.controlJump = false; player.velocity = Vector2.Zero; player.itemRotation = MathHelper.ToRadians(30f); heldNPC.direction = -player.direction; heldNPC.position = player.position + new Vector2(5f * player.direction, -2f - heldNPC.height / 3f); heldNPC.velocity = Vector2.Zero; hamonPlayer.enemyToIgnoreDamageFromIndex = heldNPC.whoAmI; heldEnemyTimer++; if (heldEnemyTimer >= 60) { hamonPlayer.amountOfHamon -= 5; heldNPC.StrikeNPC(item.damage, 0f, player.direction); heldNPC.AddBuff(mod.BuffType("Sunburn"), 3 * 60); Main.PlaySound(SoundID.Item, (int)player.position.X, (int)player.position.Y, 3, 1f, -0.8f); heldEnemyTimer = 0; } } } if (!Main.mouseRight && hamonPlayer.enemyToIgnoreDamageFromIndex != -1) { hamonPlayer.enemyToIgnoreDamageFromIndex = -1; enemyBeingGrabbed = false; heldEnemyIndex = -1; heldEnemyTimer = 0; } }
public override void PreUpdate() { MyPlayer Mplayer = player.GetModPlayer <MyPlayer>(); HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); if (NPC.downedBoss1) { hamonLevel = 1; } if (NPC.downedBoss2) //the crimson/corruption bosses { hamonLevel = 2; } if (NPC.downedBoss3) //skeletron { hamonLevel = 3; } if (Main.hardMode) //wall of flesh { hamonLevel = 4; } if (NPC.downedMechBoss1) { hamonLevel = 5; } if (NPC.downedMechBoss2) { hamonLevel = 6; } if (NPC.downedMechBoss3) { hamonLevel = 7; } if (NPC.downedPlantBoss) //plantera { hamonLevel = 8; } if (NPC.downedGolemBoss) { hamonLevel = 9; } if (NPC.downedMoonlord) //you are an expert with hamon by moon lord { hamonLevel = 10; } if (hamonLevel == 1) { hamonPlayer.maxHamon = 72; } if (hamonLevel == 2) { hamonPlayer.maxHamon = 84; } if (hamonLevel == 3) { hamonPlayer.maxHamon = 96; } if (hamonLevel == 4) { hamonPlayer.maxHamon = 108; } if (hamonLevel == 5) { hamonPlayer.maxHamon = 120; } if (hamonLevel == 6) { hamonPlayer.maxHamon = 132; } if (hamonLevel == 7) { hamonPlayer.maxHamon = 144; } if (hamonLevel == 8) { hamonPlayer.maxHamon = 156; } if (hamonLevel == 9) { hamonPlayer.maxHamon = 168; } if (hamonLevel == 10) { hamonPlayer.maxHamon = 180; } if (AjaStone) //Hamon charging stuff { maxHamon *= 2; maxHamonCounter = 120; } if (Mplayer.Vampire) { HamonCounter = 0; counter = 0; } if (counter >= maxHamonCounter) //the one that increases Hamon { if (AjaStone) //or any other decrease-preventing accessories { counter = 0; HamonCounter += 1; } if (HamonCounter <= 60) { counter = 0; HamonCounter += 1; } } if (counter >= maxHamonCounter && HamonCounter > 60 && !AjaStone) //the one that decreases Hamon { counter = 0; HamonCounter -= 1; } if (!Mplayer.Vampire && player.breath == player.breathMax && HamonCounter <= 60) //in general, to increase Hamon while it can still be increased, no speeding up decreasing { if (player.velocity.X != 0f || player.velocity.Y != 0f) { counter++; } if (player.velocity.X == 0f && player.velocity.Y == 0f) { counter += 2; } if (player.lavaWet && !player.lavaImmune) { counter--; } } if (!AjaStone) //list maxHamonCounter decreasing things in here { maxHamonCounter = 240; } if (HamonCounter > 60 && HamonCounter < 120 && !AjaStone) //every 6 seconds, while Hamon is at the UI's second row, it decreases. Only if you don't have the Aja Stone { maxHamonCounter = 360; } if (HamonCounter >= 120 && !AjaStone) //same as top but every 3 seconds { maxHamonCounter = 180; } if (HamonCounter >= maxHamon) //hamon limit stuff { HamonCounter = maxHamon; } if (HamonCounter <= 0) { HamonCounter = 0; } }
public override void GetWeaponKnockback(Player player, ref float knockback) { HamonPlayer hamonPlayer = player.GetModPlayer <HamonPlayer>(); knockback *= hamonPlayer.hamonKnockbackBoosts; }