Пример #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
        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);
        }