Beispiel #1
0
        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);
        }
Beispiel #3
0
 // 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);
 }
Beispiel #4
0
 public override bool CanUseItem(Player player)
 {
     return(ThrowerGlove.FindGrenadeToThrow(mod, player, level) > 0);
 }