예제 #1
0
        public override void HoldItem(Player player)
        {
            ChargeMeterPlayer modPlayer = player.GetModPlayer <ChargeMeterPlayer>();

            modPlayer.chargeMeter.drawMeter = true;
            modPlayer.chargeMeter.charge    = player.GetModPlayer <AccursedBladePlayer>().charge;
        }
예제 #2
0
        public override void AI()
        {
            SafeAI();
            projectile.scale = growCounter < 10 ? (projectile.ai[0] / 10f) : 1;
            Player player = Main.player[projectile.owner];

            player.itemTime      = 2;
            player.itemAnimation = 2;
            projectile.scale     = charge < 10 ? (charge / 10f) : 1;
            player.ChangeDir(Main.MouseWorld.X > player.position.X ? 1 : -1);

            projectile.Center = player.MountedCenter + (direction.RotatedBy(offset * player.direction) * (charge));
            projectile.damage = minDamage + (int)((maxDamage - minDamage) * (charge / (float)chargeMax) * player.meleeDamage);
            if (player.channel && !released)
            {
                direction = Main.MouseWorld - (player.Center - new Vector2(4, 4));
                direction.Normalize();
                if (charge < chargeMax)
                {
                    charge += chargeRate;
                    if (charge < chargeMax / 1.5f)
                    {
                        offset -= pullBack;
                    }
                }
                if (offset < minOffset)
                {
                    minOffset = offset;
                }
                ChargeMeterPlayer modPlayer = player.GetModPlayer <ChargeMeterPlayer>();
                if (charge >= chargeMax && !maxcharge)
                {
                    maxcharge = true;
                    Main.PlaySound(SoundID.MaxMana, (int)player.MountedCenter.X, (int)player.MountedCenter.Y, 1, 1.5f, -0.2f);
                }
            }
            else
            {
                if (!released)
                {
                    Main.PlaySound(SoundID.Item, (int)player.MountedCenter.X, (int)player.MountedCenter.Y, 105, 0.5f + charge / (chargeMax / 2), 0.5f - charge / chargeMax);
                    released = true;
                }
                offset += 0.2f;
                if (offset > (minOffset + maxOffset) / 2 && !primsCreated)
                {
                    primsCreated = true;
                    CreatePrims(player.Center + (direction.RotatedBy(maxOffset * player.direction) * (50 + charge)),
                                player.Center + (direction.RotatedBy(offset * player.direction) * (50 + charge)),
                                player.Center + (direction.RotatedBy(minOffset * player.direction) * (50 + charge)));
                }
                if (offset > maxOffset)
                {
                    projectile.active = false;
                }
            }
            radians = direction.ToRotation() + (offset * player.direction);
            if (player.direction == -1)
            {
                radians += 3.14f;
            }
            SafePostAI();
        }