public override void AI() { Player player = Main.player[projectile.owner]; player.GetModPlayer <SGAPlayer>().greandethrowcooldown = 120; ThrowerGlove thrown; int basetype = ThrowerGlove.FindGrenadeToThrow(mod, player, level); //if (player.CountItem(mod.ItemType("AcidGrenade"))>0) //basetype = mod.ItemType("AcidGrenade"); Vector2 basespeed = (projectile.velocity / 2f); float speedbase = basespeed.Length() * player.thrownVelocity; basespeed.Normalize(); Item basetype2 = new Item(); basetype2.SetDefaults(ThrowerGlove.FindItem(basetype)); player.itemTime = basetype2.useTime; int type = ThrowerGlove.FindProjectile(basetype2.shoot, basetype); basespeed *= (basetype2.shootSpeed + speedbase); int damage = (int)(basetype2.damage * player.thrownDamage); int proj = Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, basespeed.X, basespeed.Y, type, damage, basetype2.knockBack, player.whoAmI); Main.projectile[proj].friendly = true; Main.projectile[proj].hostile = false; Main.projectile[proj].netUpdate = true; IdgProjectile.Sync(proj); player.ConsumeItem(basetype); projectile.Kill(); }
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { int basetype = ThrowerGlove.FindGrenadeToThrow(mod, player, level); //if (player.CountItem(mod.ItemType("AcidGrenade"))>0) //basetype = mod.ItemType("AcidGrenade"); Vector2 basespeed = new Vector2(speedX, speedY); float speedbase = basespeed.Length() * player.thrownVelocity; basespeed.Normalize(); Item basetype2 = new Item(); int itemtype = FindItem(basetype); basetype2.SetDefaults(itemtype); float baseumtli = (item.useTime / player.GetModPlayer <SGAPlayer>().ThrowingSpeed) / 60f; if (itemtype == ItemID.Beenade) { baseumtli = 1f; } player.itemAnimation = (int)(basetype2.useAnimation * baseumtli); player.itemAnimationMax = (int)(basetype2.useAnimation * baseumtli); player.itemTime = (int)(basetype2.useTime * baseumtli); type = FindProjectile(basetype2.shoot, basetype); if (itemtype == mod.ItemType("ThrowableTrapSpikyball")) { speedbase /= 1f; } basespeed *= (basetype2.shootSpeed + speedbase); speedX = basespeed.X; speedY = basespeed.Y; if (type != ProjectileID.Beenade) { damage += (int)((float)basetype2.damage * player.thrownDamage); } //else //damage = (int)(basetype2.damage * player.thrownDamage); player.ConsumeItem(basetype); Projectile proj = Main.projectile[Projectile.NewProjectile(position.X, position.Y, speedX, speedY, type, damage, knockBack, player.whoAmI)]; proj.thrown = true; proj.ranged = false; proj.friendly = true; proj.hostile = false; proj.netUpdate = true; IdgProjectile.Sync(proj.whoAmI); return(false); }
// Use this hook for hooks that can have multiple hooks mid-flight: Dual Hook, Web Slinger, Fish Hook, Static Hook, Lunar Hook public override bool?CanUseGrapple(Player player) { return(player.GetModPlayer <SGAPlayer>().greandethrowcooldown < 1 && ThrowerGlove.FindGrenadeToThrow(mod, player, level) > -1); }
public override bool CanUseItem(Player player) { return(ThrowerGlove.FindGrenadeToThrow(mod, player, level) > 0); }