示例#1
0
        public override bool UseItem(Player player)
        {
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.BaseMaxKi -= 1000;
            return(true);
        }
示例#2
0
        public override bool UseItem(Player player)
        {
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.ModifyKi(-dbtPlayer.Ki);
            return(true);
        }
示例#3
0
        private static void DrawLayer(PlayerDrawInfo drawInfo)
        {
            if (Main.netMode == NetmodeID.Server)
            {
                return;
            }

            DBTPlayer dbtPlayer = drawInfo.drawPlayer.GetModPlayer <DBTPlayer>();

            AuraAppearance aura = dbtPlayer.GetAura();

            if (aura == null)
            {
                return;
            }

            int auraHeight = aura.Information.GetHeight(dbtPlayer);

            Texture2D auraTexture   = aura.Information.GetTexture(dbtPlayer);
            Rectangle auraRectangle = new Rectangle(0, auraHeight * dbtPlayer.AuraFrameIndex, auraTexture.Width, auraHeight);

            float scale = aura.Information.GetAuraScale(dbtPlayer);
            Tuple <float, Vector2> rotationAndPosition = aura.Information.GetRotationAndPosition(dbtPlayer);

            SamplerState samplerState = dbtPlayer.GetPlayerSamplerState();

            aura.Information.BlendState.SetSpriteBatchForPlayerLayerCustomDraw(samplerState);

            Main.spriteBatch.Draw(auraTexture, rotationAndPosition.Item2 - Main.screenPosition, auraRectangle, Color.White, rotationAndPosition.Item1,
                                  new Vector2(aura.Information.GetWidth(dbtPlayer), aura.Information.GetHeight(dbtPlayer)) * 0.5f, scale, SpriteEffects.None, 0f);

            samplerState.ResetSpriteBatchForPlayerDrawLayers();
        }
示例#4
0
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            base.UpdateAccessory(player, hideVisual);
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.KiDamageMultiplier += 0.06f;
        }
示例#5
0
        public override bool PreDraw(SpriteBatch spriteBatch, Color lightColor)
        {
            DBTPlayer dbtPlayer = Main.player[projectile.owner].GetModPlayer <DBTPlayer>();

            if (IsFired && UsesChargeBall)
            {
                return(false);
            }
            if (dbtPlayer.MouseLeftHeld)
            {
                HandleCharging();
            }

            if (!UsesChargeBall)
            {
                if (dbtPlayer.MouseLeftHeld)
                {
                    if (ChargeOverrideTexture != null)
                    {
                        DrawSkillCharge(spriteBatch, Main.projectileTexture[projectile.type], 0f, projectile.scale, Color.White);
                    }
                    else
                    {
                        DrawSkillCharge(spriteBatch, ChargeOverrideTexture, 0f, projectile.scale, Color.White);
                    }
                }
            }
            return(true);
        }
示例#6
0
        public void HandleCharging()
        {
            DBTPlayer dbtPlayer = Main.player[projectile.owner].GetModPlayer <DBTPlayer>();

            projectile.timeLeft = 999;
            projectile.velocity = Vector2.Zero;
            if (Definition.Characteristics.ChargeCharacteristics.CurrentCharge < Definition.Characteristics.ChargeCharacteristics.BaseMaxChargeLevel)
            {
                projectile.ai[1]++;
                if (projectile.ai[1] >= Definition.Characteristics.ChargeCharacteristics.BaseChargeTimer)
                {
                    Definition.Characteristics.ChargeCharacteristics.CurrentCharge++;
                    PerChargeLevel();
                    projectile.ai[1] = 0;
                }
                OnChargeAttack();
            }
            if (!dbtPlayer.MouseLeftHeld)
            {
                if (RequiresFullCharge)
                {
                    if (Definition.Characteristics.ChargeCharacteristics.CurrentCharge >= Definition.Characteristics.ChargeCharacteristics.BaseMaxChargeLevel)
                    {
                        HandleFiring(Main.player[projectile.owner]);
                    }
                }
                else
                {
                    if (Definition.Characteristics.ChargeCharacteristics.CurrentCharge > 0)
                    {
                        HandleFiring(Main.player[projectile.owner]);
                    }
                }
            }
        }
示例#7
0
        public void HandleFiring(Player player)
        {
            DBTPlayer modPlayer = player.GetModPlayer <DBTPlayer>();

            if (ShouldFireSkill(modPlayer))
            {
                OnFireAttack();

                IsFired = true;

                // kill the charge sound if we're firing
                //chargeSoundSlotId = SoundHelper.KillTrackedSound(chargeSoundSlotId);

                if (UsesChargeBall)
                {
                    if (Main.netMode != NetmodeID.MultiplayerClient || Main.myPlayer == player.whoAmI)
                    {
                        // fire the laser!
                        //fire
                        KillCharge();
                    }
                }

                // beam is no longer sustainable, and neither is the charge ball

                /*if (Charge <= 0f)
                 * {
                 *  KillCharge();
                 * }*/
            }
        }
示例#8
0
        public override void HoldItem(Player player)
        {
            DBTPlayer modPlayer = player.GetModPlayer <DBTPlayer>();

            modPlayer.IsHoldingDragonRadarMk3 = true;
            base.HoldItem(player);
        }
示例#9
0
        private void GivePlayerBonuses(Player player)
        {
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.KiDamageMultiplier += KiDamageMultiplier;
            player.detectCreature         = true;
        }
示例#10
0
        public static void ApplyChannelingSlowdown(this Player player)
        {
            DBTPlayer modPlayer = Main.LocalPlayer.GetModPlayer <DBTPlayer>();

            if (modPlayer.Flying)
            {
                float chargeMoveSpeedBonus = modPlayer.SkillChargeMoveSpeedModifier / 10f;
                float yVelocity            = -(player.gravity + 0.001f);
                if (modPlayer.DownHeld || modPlayer.UpHeld)
                {
                    yVelocity = player.velocity.Y / (1.2f - chargeMoveSpeedBonus);
                }
                else
                {
                    yVelocity = Math.Min(-0.4f, player.velocity.Y / (1.2f - chargeMoveSpeedBonus));
                }
                player.velocity = new Vector2(player.velocity.X / (1.2f - chargeMoveSpeedBonus), yVelocity);
            }
            else
            {
                float chargeMoveSpeedBonus = modPlayer.SkillChargeMoveSpeedModifier / 10f;
                // don't neuter falling - keep the positive Y velocity if it's greater - if the player is jumping, this reduces their height. if falling, falling is always greater.
                player.velocity = new Vector2(player.velocity.X / (1.2f - chargeMoveSpeedBonus), Math.Max(player.velocity.Y, player.velocity.Y / (1.2f - chargeMoveSpeedBonus)));
            }
        }
示例#11
0
        private static void TrySelectingTransformation(TransformationDefinition def, UIMouseEvent evt, UIElement listeningElement)
        {
            DBTPlayer dbtPlayer = Main.LocalPlayer.GetModPlayer <DBTPlayer>();

            if (dbtPlayer.HasAcquiredTransformation(def) && def.DoesDisplayInCharacterMenu(dbtPlayer))
            {
                // TODO Add sounds.
                //SoundHelper.PlayVanillaSound(SoundID.MenuTick);

                if (!dbtPlayer.SelectedTransformations.Contains(def))
                {
                    dbtPlayer.SelectTransformation(def);
                    Main.NewText($"Selected {def.DisplayName}, Mastery: {Math.Round(def.GetMaxMastery(dbtPlayer) * def.GetCurrentMastery(dbtPlayer), 2)}%");
                }
                else
                {
                    Main.NewText($"{def.DisplayName} Mastery: {Math.Round(100f * def.GetCurrentMastery(dbtPlayer), 2)}%");
                }
            }

            /*else if (def.SelectionRequirementsFailed.Invoke(player, def))
             * {
             *  SoundHelper.PlayVanillaSound(SoundID.MenuClose);
             *
             *  if (def.FailureText == null) return;
             *  Main.NewText(def.FailureText);
             * }*/
        }
示例#12
0
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.KiDamageMultiplier += 0.07f;
            dbtPlayer.MaxKiModifier      += 250;

            player.endurance += 0.07f;

            player.meleeDamage += 0.07f;
            player.meleeSpeed  += 0.07f;

            player.magicDamage += 0.07f;
            player.magicCrit   += 7;

            player.rangedDamage += 0.07f;
            player.rangedCrit   += 7;

            player.lifeRegen += 2;

            player.minionDamage += 0.07f;
            player.maxMinions   += 2;

            player.statDefense += 6;
        }
示例#13
0
        private void DrawInfoPanel(SkillDefinition def, UIMouseEvent evt, UIElement listeningElement)
        {
            InfoPanel.RemoveAllChildren();
            DBTPlayer dbtPlayer = Main.LocalPlayer.GetModPlayer <DBTPlayer>();

            if (dbtPlayer.ActiveSkills.Contains(def))
            {
                EquipButtonTexture = AuthorMod.GetTexture(UNEQUIP_BUTTON);
            }
            else
            {
                EquipButtonTexture = AuthorMod.GetTexture(EQUIP_BUTTON);
            }


            DrawEquipButton(def);
            bool hasAttackSpeed = false;

            if (def.Characteristics.BaseShootSpeed > 0)
            {
                hasAttackSpeed = true;
            }

            skillName        = InitializeText(def.DisplayName, 12, 8, 0.8f, Color.White, InfoPanel);
            skillStats       = InitializeText("Stats: \nBase Ki Damage: " + def.Characteristics.BaseDamage + (hasAttackSpeed ? "\nAttack Speed: " + def.Characteristics.BaseShootSpeed : "") + " \nKi Drain: " + def.Characteristics.ChargeCharacteristics.BaseCastKiDrain + " \n", 12, 28, 0.6f, Color.White, InfoPanel);
            skillUnlock      = InitializeText("Unlock: \n" + def.UnlockDescription, 340, 8, 0.7f, Color.White, InfoPanel);
            skillDescription = InitializeText("Skill Description: \n" + def.Description, 160, 8, 0.7f, Color.White, InfoPanel);
        }
示例#14
0
        public void OnPlayerPostUpdate(DBTPlayer dbtPlayer)
        {
            bool isSet = IsArmorSet(dbtPlayer.player);

            if (!isSet || dbtPlayer.AliveBosses.Count == 0)
            {
                _timer      = 0;
                _multiplier = 1;
            }
            else if (dbtPlayer.AliveBosses.Count > 0)
            {
                _timer++;

                if (_multiplier <= 3f && _timer > 300)
                {
                    _multiplier += 0.05f;
                    _timer       = 0;
                }
            }

            if (_multiplier != 1f)
            {
                dbtPlayer.player.meleeDamage  *= _multiplier;
                dbtPlayer.player.thrownDamage *= _multiplier;
                dbtPlayer.player.rangedDamage *= _multiplier;
                dbtPlayer.player.magicDamage  *= _multiplier;
                dbtPlayer.player.minionDamage *= _multiplier;
                dbtPlayer.player.statDefense   = (int)(dbtPlayer.player.statDefense * _multiplier);

                dbtPlayer.KiDamageMultiplier += _multiplier;
            }
        }
示例#15
0
        // The reason all of this is called in OnPlayerEnterWorld is because the icons themselves don't make it to the UI if the player cannot possibly access them. We need to reset the back panel every time.
        internal void OnPlayerEnterWorld(DBTPlayer dbtPlayer)
        {
            BackPanel.RemoveAllChildren();
            BackPanel.Append(InfoPanel);

            List <Node <SkillDefinition> > rootNodes = SkillDefinitionManager.Instance.Tree.Nodes
                                                       .Where(t => t.Value.CheckPrePlayerConditions())
                                                       .Where(t => t.Parents.Count == 0).ToList();

            List <Node <SkillDefinition> > others = new List <Node <SkillDefinition> >();

            int lastXOffset = 0;

            foreach (Node <SkillDefinition> rootNode in rootNodes)
            {
                if (rootNode.Value.SkillIcon.Height > _panelsYOffset)
                {
                    _panelsYOffset = rootNode.Value.SkillIcon.Height;
                }
            }

            _panelsYOffset += PADDING_Y;

            foreach (Node <SkillDefinition> rootNode in rootNodes)
            {
                lastXOffset += PADDING_X * 2;

                int yOffset = (int)rootNode.Value.MenuPosition.Y;

                RecursiveInitializeSkill(BackPanel, rootNode, ref yOffset);

                lastXOffset += rootNode.Value.SkillIcon.Width;
            }
        }
示例#16
0
        // TODO Rewrite this to use objects.
        public override void Update(GameTime gameTime)
        {
            DBTPlayer dbtPlayer = Main.LocalPlayer.GetModPlayer <DBTPlayer>();

            _cleanAverageEnergy.Add(dbtPlayer.Ki);

            if (_cleanAverageEnergy.Count > 15)
            {
                _cleanAverageEnergy.RemoveRange(0, _cleanAverageEnergy.Count - 15);
            }

            int averageKi = (int)Math.Floor(_cleanAverageEnergy.Sum() / 15f);

            if (!dbtPlayer.IsOverloading)
            {
                _label.SetText("Ki: " + averageKi + " / " + dbtPlayer.MaxKi);
            }
            else
            {
                _label.SetText("Ki: " + GetLetter() + GetLetter() + GetLetter() + GetLetter() + " / " + GetLetter() + GetLetter() + GetLetter() + GetLetter());
            }


            base.Update(gameTime);
        }
示例#17
0
        public override void Kill(int timeLeft)
        {
            Player    player    = Main.player[projectile.owner];
            DBTPlayer modPlayer = player.GetModPlayer <DBTPlayer>();

            modPlayer.DoOverloadOrb();
        }
示例#18
0
        public override bool UseItem(Player player)
        {
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.HairChecked = false;
            return(true);
        }
示例#19
0
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.KiDamageMultiplier *= 1.09f;
            dbtPlayer.MaxKiModifier      -= 500;
        }
示例#20
0
        public virtual int GetAuraOffsetY(DBTPlayer dbtPlayer)
        {
            int   frameHeight = GetHeight(dbtPlayer);
            float scale       = GetAuraScale(dbtPlayer);

            return((int)-(frameHeight / 2f * scale - dbtPlayer.player.height * 0.775f));
        }
示例#21
0
        private void DrawInfoPanel(TransformationDefinition def)
        {
            DBTPlayer dbtPlayer = Main.LocalPlayer.GetModPlayer <DBTPlayer>();


            bool hasOverload = false;

            if (!InfoPanelOpened)
            {
                InfoPanelOpened = true;
                InfoPanel       = InitializeImage(InfoPanelTexture, -12, 294, BackPanel);
                InfoPanel.Width.Set(InfoPanelTexture.Width, 0f);
                InfoPanel.Height.Set(InfoPanelTexture.Height, 0f);

                if (def.GetUnmasteredOverloadGrowthRate(dbtPlayer) > 0)
                {
                    hasOverload = true;
                }

                formName = InitializeText(def.DisplayName, 12, 8, 0.8f, def.Appearance.GeneralColor.Value, InfoPanel);

                if (def.GetMasteredKiDrain(dbtPlayer) <= 0 && def.GetUnmasteredKiDrain(dbtPlayer) != 0)
                {
                    formStats = InitializeText("Stats: \nDamage: " + (def.GetDamageMultiplier(dbtPlayer) - 1f) * 100 + "% \nSpeed: "
                                               + (def.GetSpeedMultiplier(dbtPlayer) - 1f) * 100 + "% \nKi Drain: " + def.GetUnmasteredKiDrain(dbtPlayer) * 60 + "/s"
                                               + (hasOverload ? "\nOverload: While Unmastered = " + def.GetUnmasteredOverloadGrowthRate(dbtPlayer) * 60
                                                  + "/s + While Mastered = " + def.GetMasteredOverloadGrowthRate(dbtPlayer) * 60 + "/s" : null), 12, 28, 0.6f, Color.White, InfoPanel);
                }
                else
                {
                    if (def.GetUnmasteredKiDrain(dbtPlayer) <= 0)
                    {
                        formStats = InitializeText("Stats: \nDamage: " + (def.GetDamageMultiplier(dbtPlayer) - 1f) * 100 + "% \nSpeed: " +
                                                   (def.GetSpeedMultiplier(dbtPlayer) - 1f) * 100 + "%" + (hasOverload ? "\nOverload: While Unmastered = " +
                                                                                                           def.GetUnmasteredOverloadGrowthRate(dbtPlayer) * 60 + "/s + While Mastered = " +
                                                                                                           def.GetMasteredOverloadGrowthRate(dbtPlayer) * 60 + "/s" : null), 12, 28, 0.6f, Color.White, InfoPanel);
                    }
                    else
                    {
                        formStats = InitializeText("Stats: \nDamage: " + (def.GetDamageMultiplier(dbtPlayer) - 1f) * 100 + "% \nSpeed: "
                                                   + (def.GetSpeedMultiplier(dbtPlayer) - 1f) * 100 + "% \nKi Drain: While Unmastered = " + def.GetUnmasteredKiDrain(dbtPlayer) * 60
                                                   + "/s + While Mastered = " + def.GetMasteredKiDrain(dbtPlayer) * 60 + "/s" + (hasOverload ? "\nOverload: While Unmastered = "
                                                                                                                                 + def.GetUnmasteredOverloadGrowthRate(dbtPlayer) * 60 + "/s + While Mastered = " + def.GetMasteredOverloadGrowthRate(dbtPlayer) * 60
                                                                                                                                 + "/s" : null), 12, 28, 0.6f, Color.White, InfoPanel);
                    }
                }
                formUnlock = InitializeText(def.DisplayName, 30, 16, 0f, Color.White, InfoPanel);
            }
            else
            {
                InfoPanel  = null;
                formName   = null;
                formStats  = null;
                formUnlock = null;

                InfoPanelOpened = false;
                DrawInfoPanel(def);
            }
        }
示例#22
0
        public override void UpdateEquip(Player player)
        {
            base.UpdateEquip(player);
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.KiDamageMultiplier             += 0.15f;
            dbtPlayer.ExternalKiRegenerationModifier += 1f;
        }
示例#23
0
        public virtual float GetDamage(DBTPlayer dbtPlayer, int chargeLevel)
        {
            int damage = (int)BaseDamage;

            GetDamage(dbtPlayer, ref damage, chargeLevel);

            return(damage);
        }
示例#24
0
        public override void UpdateEquip(Player player)
        {
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.KiDamageMultiplier             += 0.05f;
            dbtPlayer.KiCritAddition                 += 3;
            dbtPlayer.ExternalKiRegenerationModifier += 1;
        }
示例#25
0
        public override void UpdateArmorSet(Player player)
        {
            player.setBonus = "15% reduced Ki usage and +200 Max Ki";
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.KiDrainMultiplier -= 0.15f;
            dbtPlayer.MaxKiModifier     += 200;
        }
示例#26
0
 public override void NearbyEffects(int i, int j, bool closer)
 {
     if (closer)
     {
         DBTPlayer modPlayer = Main.LocalPlayer.GetModPlayer <DBTPlayer>();
         modPlayer.KiDiffuser = true;
     }
 }
示例#27
0
        // TODO Change this to dynamicity.
        private void SelectHairStyle(HairStyle Choice, UIMouseEvent evt, UIElement listeningElement)
        {
            DBTPlayer player = Main.LocalPlayer.GetModPlayer <DBTPlayer>();

            player.ChosenHairStyle = Choice;
            SoundHelper.PlayVanillaSound(SoundID.MenuTick, Main.LocalPlayer.position);
            selected = true;
        }
示例#28
0
文件: WishMenu.cs 项目: LinkatriX/DBT
        private static void DoRitualWish()
        {
            DBTPlayer modPlayer = Main.LocalPlayer.GetModPlayer <DBTPlayer>();

            modPlayer.DoRitual();
            menuVisible          = false;
            modPlayer.WishActive = false;
        }
示例#29
0
        public override void UpdateArmorSet(Player player)
        {
            base.UpdateArmorSet(player);
            DBTPlayer dbtPlayer = player.GetModPlayer <DBTPlayer>();

            dbtPlayer.KiDamageMultiplier += 0.09f;
            dbtPlayer.MaxKiModifier      += 200;
        }
示例#30
0
        public virtual float GetKnockback(DBTPlayer dbtPlayer, int chargeLevel)
        {
            float knockback = BaseKnockback;

            GetKnockback(dbtPlayer, ref knockback, chargeLevel);

            return(knockback);
        }