Esempio n. 1
0
        public static void FillSpells()
        {
            Spell bh = new Spell(iD: 1, TextureID: 119, levelrequirement: 20, energyCost: 100, baseCooldown: 120, name: "Black Hole", () => $"Creates a black hole that pulls enemies in and damages over {ModdedPlayer.Stats.spell_blackhole_duration} seconds.\nScaling: {ModdedPlayer.Stats.spell_blackhole_damageScaling} spell damage")
            {
                active        = SpellActions.CreatePlayerBlackHole,
                CastOnRelease = true,
                aim           = SpellActions.BlackHoleAim,
                aimEnd        = SpellActions.BlackHoleAimEnd
            };
            Spell healingDome = new Spell(iD: 2, TextureID: 122, levelrequirement: 6, energyCost: 80, baseCooldown: 70, name: "Healing Dome", () => $"Creates a sphere of vaporized aloe that heals all allies inside.")
            {
                active        = SpellActions.CreateHealingDome,
                CastOnRelease = true,
                aim           = SpellActions.HealingDomeAim,
                aimEnd        = SpellActions.HealingDomeAimEnd
            };

            new Spell(iD: 3, TextureID: 121, levelrequirement: 3, energyCost: 25, baseCooldown: 14, name: "Blink", () => $"instantaneous short distance teleportation. Upgrades allow dealing damage to enemies that you pass through.\nScaling: {ModdedPlayer.Stats.spell_blinkDamageScaling}")
            {
                active        = SpellActions.DoBlink,
                CastOnRelease = true,
                aim           = SpellActions.DoBlinkAim,
            };
            new Spell(iD: 4, TextureID: 120, levelrequirement: 10, energyCost: 100, baseCooldown: 55, name: "Sun Flare", () => $"Intense light focuses onto a single spot. Heals allies, reduces all damage taken by 50% and gives movement speed. Slows down and damages enemies")
            {
                active = SpellActions.CastFlare,
            };
            new Spell(iD: 5, TextureID: 118, levelrequirement: 8, energyCost: 50, name: "Sustain Shield", () => $"Channeling this spell consumes energy but grants you a protective, absorbing shield, similiar to additional health. The shield's power increases every second untill reaching max value. The shield persists for {ModdedPlayer.Stats.spell_shieldPersistanceLifetime} seconds after channeling stops, and after that it rapidly disperses.")
            {
                active             = SpellActions.CastSustainShieldActive,
                passive            = SpellActions.CastSustainShielPassive,
                usePassiveOnUpdate = true,
            };
            new Spell(iD: 6, TextureID: 117, levelrequirement: 2, energyCost: 10, baseCooldown: 0.4f, name: "Wide Reach", () => "Picks up all items, including equipment, in a small radius around you.")
            {
                active        = AutoPickupItems.DoPickup,
                CastOnRelease = false,
            };
            new Spell(iD: 7, TextureID: 115, levelrequirement: 21, energyCost: 25, baseCooldown: 2.5f, name: "Black Flame", () => $"Ignites your melee weapon or your ranged projectile with a dark flame that burns enemies for a large amount of damage. Scaling: {ModdedPlayer.Stats.spell_blackFlameDamageScaling} spell damage")
            {
                active = BlackFlame.Toggle,
            };
            new Spell(iD: 8, TextureID: 123, levelrequirement: 14, energyCost: 85, baseCooldown: 180, name: "War Cry", () => "Empowers you and nearby allies for 2 minutes.")
            {
                active = SpellActions.CastWarCry,
            };
            new Spell(iD: 9, TextureID: 114, levelrequirement: 12, energyCost: 90, baseCooldown: 60, name: "Portal", () => "Creates a wormhole, that links 2 locations. Allows the player and items to pass through.")
            {
                CastOnRelease = true,
                aim           = SpellActions.DoPortalAim,
                active        = SpellActions.CastPortal,
            };
            new Spell(iD: 10, TextureID: 125, levelrequirement: 27, energyCost: 100, baseCooldown: 20, name: "Magic Arrow", () => $"A large spectral arrow is shot where you're looking at. The arrow pierces everything, slows any enemies hit and deals big damage. Scaling: {ModdedPlayer.Stats.spell_magicArrowDamageScaling} spell damage")
            {
                active        = SpellActions.CastMagicArrow,
                CastOnRelease = true,
                aim           = SpellActions.MagicArrowAim,
                aimEnd        = SpellActions.MagicArrowAimEnd
            };
            new Spell(iD: 11, TextureID: 127, levelrequirement: 40, energyCost: 30, baseCooldown: 12, name: "Multishot Enchantment", () => "Enchants your ranged weapons with a magic formation of copying. Every shot causes multipe projectiles to be created with a downside of heavy energy toll. Energy is consumed upon firing and depends on the amount of projectiles fired")
            {
                active = SpellActions.ToggleMultishot,
            };
            new Spell(iD: 12, TextureID: 133, levelrequirement: 35, energyCost: 65, baseCooldown: 160, name: "Golden Skin", () => "For 40 seconds you turn into solid gold, turning completely immune to stuns and your attacks are 20% faster")
            {
                active = GoldenSkin.Cast,
            };
            new Spell(iD: 13, TextureID: 132, levelrequirement: 7, energyCost: 40, baseCooldown: 16, name: "Purge", () => "Everyone in your surroudings gets cleansed of their negative debuffs. Negates poison.")
            {
                active = SpellActions.CastPurge,
            };
            new Spell(iD: 14, TextureID: 128, levelrequirement: 20, energyCost: 220, baseCooldown: 40, name: "Snap Freeze", () => $"Enemies around you get slowed for 12 seconds by 90% you deal magic damage to them.\nScaling{ModdedPlayer.Stats.spell_snapDamageScaling} spell damage")
            {
                active        = SpellActions.CastSnapFreeze,
                CastOnRelease = true,
                aim           = SpellActions.SnapFreezeAim,
                aimEnd        = SpellActions.SnapFreezeAimEnd
            };
            new Spell(iD: 15, TextureID: 131, levelrequirement: 25, energyCost: 10, baseCooldown: 200, name: "Berserk", () => "For short amount of time, gain increased damage dealt, attack speed and movement speed and have unlimited stamina, hovewer, you take increased damage.")
            {
                active = Berserker.Cast,
            };
            new Spell(iD: 16, TextureID: 130, levelrequirement: 44, energyCost: 350, baseCooldown: 100, name: "Ball Lightning", () => $"A slow moving, bouncing ball of lightning travels forward, dealing damage to hit enemies, and upon contact or when it lasts too long, it explodes. Scales with 320% spell damage.\nScaling: {ModdedPlayer.Stats.spell_ballLightning_DamageScaling} spell damage")
            {
                active = SpellActions.CastBallLightning,
            };
            new Spell(iD: 17, TextureID: 134, levelrequirement: 17, energyCost: 25, baseCooldown: 25, name: "Bash",
                      () => $"Passive: Every attack slows enemies for {ModdedPlayer.Stats.spell_bashDuration} seconds, and increases their damage taken by {ModdedPlayer.Stats.spell_bashExtraDamage}\nActive: Melee damage is increased for {ModdedPlayer.Stats.spell_bashDuration} seconds by {(ModdedPlayer.Stats.spell_bashExtraDamage-1):P}")
            {
                passive = SpellActions.BashPassiveEnabled,
                active  = SpellActions.BashActive
            };
            new Spell(18, 136, 1, 0, 60, "Frenzy", () => $"Passive: Every attack enrages you, increasing damage all damage by {ModdedPlayer.Stats.spell_frenzyDmg}. Up to {ModdedPlayer.Stats.spell_frenzyMaxStacks} stacks.\nActive: Consume all of your frenzy stacks and regenerate 5% of your max energy for every stack consumed.")
            {
                passive = x => ModdedPlayer.Stats.spell_frenzy.value = x,
                active  = () =>
                {
                    float f = ModdedPlayer.Stats.spell_frenzyStacks.valueAdditive;
                    LocalPlayer.Stats.Energy += ModdedPlayer.Stats.TotalMaxEnergy * f * 0.05f;
                    ModdedPlayer.Stats.attackSpeed.valueMultiplicative /= 1 + f * ModdedPlayer.Stats.spell_frenzyAtkSpeed;
                    ModdedPlayer.Stats.allDamage.valueMultiplicative   /= 1 + f * ModdedPlayer.Stats.spell_frenzyDmg;
                    if (ModdedPlayer.Stats.spell_frenzyMS)
                    {
                        ModdedPlayer.Stats.movementSpeed.valueMultiplicative /= 1 + f * 0.05f;
                    }

                    ModdedPlayer.Stats.spell_frenzyStacks.valueAdditive = 0;
                }
            };
            new Spell(19, 135, 27, 40, 10, "Seeking Arrow", () => "Casting spell empowers arrow, causing all arrows to head in the same direction for 10 seconds. While active, arrows deal more damage, the further target they hit, headshots deal double damage and bodyshots slow enemies by 20% for 4 seconds.")
            {
                active = SpellActions.SeekingArrow_Active,
            };
            new Spell(20, 137, 4, 50, 30, "Focus", () => "Passive: When landing a headshot, next projectile will deal 100% more damage and slow the enemy by 20%. When landing a body shot, next projectile will deal only 20% more damage, but attack speed is increased.\nActive: Gain 15% critical hit chance for 5 seconds")
            {
                passive = x => ModdedPlayer.Stats.spell_focus.value = x,
                active  = () => BuffDB.AddBuff(28, 102, 1.15f, 5f)
            };
            new Spell(21, 140, 8, 35, 60, "Parry", () => "Passive: When parrying an enemy, deal magic damage to enemies around the target. Additionally, gain energy, heal yourself for a small amount and get stun immunity for 10 seconds after parrying.\nActive: Gain 50% damage reduction for 10 seconds")
            {
                passive = x => ModdedPlayer.Stats.spell_parry.value = x,
                active  = () => BuffDB.AddBuff(26, 103, 0.5f, 10f)
            };
            new Spell(22, 141, 50, 500, 300, "Cataclysm", () => $"Creates a fire tornado that ignites enemies, slows them and deals damage. \nScaling{ModdedPlayer.Stats.spell_cataclysmDamageScaling} spell damage")
            {
                active        = () => SpellActions.CastCataclysm(),
                CastOnRelease = true,
                aim           = SpellActions.CataclysmAim,
                aimEnd        = SpellActions.CataclysmAimEnd
            };
            new Spell(23, 165, 11, 75, 8, "Blood Infused Arrow", () => "Sacrifice your own vitals to empower your next arrow. Drains your health and adds lost health as damage to the next projectile.")
            {
                active = () => SpellActions.CastBloodInfArr(),
            };
            new Spell(24, 182, 55, 400, 360, "Roaring Cheeks", () => "Release a powerful gust of toxic gas that poisons and knocks enemies back, or cast it mid air to perform a secondary jump, the damage and area of effect will be lower but 2/3 of the cooldown will be refunded")
            {
                active = () => SpellActions.RipAFatOne(),
            };
            new Spell(25, 189, 9, 40, 45, "Taunt", () => "Makes enemies hyper agressive and forces them to attack you. Taunted enemies move twice attack twice as fast and take 50% increased damage")
            {
                active        = Taunt.OnSpellUsed,
                CastOnRelease = true,
                aim           = Taunt.Aim,
                aimEnd        = Taunt.AimEnd
            };
            //new Spell(24, 165, 1, 1, 2, "Corpse Explosion", "")
            //{
            //    active = () => SpellActions.CastCorpseExplosion(),
            //};
            //new Spell(25, 165, 1, 1, "Devour", "...")
            //{
            //    active = () =>
            //};
        }
        public static void FillSpells()
        {
            Spell bh = new Spell(1, 119, 20, 50, 120, "Black Hole", "Creates a black hole that pulls enemies in and damages them every second")
            {
                active = SpellActions.CreatePlayerBlackHole,
            };
            Spell healingDome = new Spell(2, 122, 6, 80, 70, "Healing Dome", "Creates a sphere of vaporized aloe that heals all allies inside. Items can further expand this ability to cleanese debuffs. Scales with healing multipier and spell amplification.")
            {
                active = SpellActions.CreateHealingDome,
            };

            new Spell(3, 121, 3, 25, 12, "Blink", "Short distance teleportation")
            {
                active        = SpellActions.DoBlink,
                CastOnRelease = true,
                aim           = SpellActions.DoBlinkAim,
            };
            new Spell(4, 120, 10, 100, 45, "Sun Flare", "A light column heals players inside and gives them +25% movement speed, while slowing damaging enemies. Slow amount is equal to 25%")
            {
                active = SpellActions.CastFlare,
            };
            new Spell(5, 118, 8, 50, "Sustain Shield", "Channeling this spell consumes energy but grants you a protective, absorbing shield. The shield's power increases every second untill reaching max value. Upon ending the channeling by any source, the shield persist for a short amount of time, and after that it rapidly decreases.")
            {
                active             = SpellActions.CastSustainShieldActive,
                passive            = SpellActions.CastSustainShielPassive,
                usePassiveOnUpdate = true,
            };
            new Spell(6, 117, 2, 10, 0.4f, "Wide Reach", "Picks up all resources in a small radius around you.")
            {
                active = AutoPickupItems.DoPickup,
            };
            new Spell(7, 115, 17, 25, 2f, "Black Flame", "Ignites your weapon with a dark flame that empowers all attacks.")
            {
                active = BlackFlame.Toggle,
            };
            new Spell(8, 123, 12, 80, 110, "War Cry", "Empowers you and nearby allies for 2 minutes.")
            {
                active = SpellActions.CastWarCry,
            };
            new Spell(9, 114, 15, 100, 35, "Portal", "Creates a wormhole, that links 2 locations. Allows the player and items to pass through.")
            {
                active = SpellActions.CastPortal,
            };
            new Spell(10, 125, 30, 90, 20, "Magic Arrow", "A large arrow is shot where you're looking at. Slows any enemies on hit and deals big damage")
            {
                active = SpellActions.CastMagicArrow,
            };
            new Spell(11, 127, 35, 10, 10, "Multishot", "An attack modifier. Enchants your ranged weapons to shoot multipe projectiles. Upgradeable by perks. Energy is consumed upon firing and depends on the amount of projectiles fired")
            {
                active = SpellActions.ToggleMultishot,
            };
            new Spell(12, 133, 40, 50, 150, "Gold", "For 40 seconds you turn completely immune to stuns and attack speed increases by 20%")
            {
                active = Gold.Cast,
            };
            new Spell(13, 132, 7, 40, 15, "Purge", "Everyone in your surroudings gets cleansed of their negative debuffs. Negates poison.")
            {
                active = SpellActions.CastPurge,
            };
            new Spell(14, 128, 20, 280, 40, "Snap Freeze", "Enemies around you get slowed for 12 seconds by 90% you deal magic damage to them")
            {
                active = SpellActions.CastSnapFreeze,
            };
            new Spell(15, 131, 25, 15, 180, "Berserk", "For short amount of time, gain damage, attack speed and movement speed, take additional damage and have unlimited stamina.")
            {
                active = Berserker.Cast,
            };
            new Spell(16, 130, 42, 300, 90, "Ball Lightning", "A slow moving, bouncing ball of lightning travels forward, dealing damage to hit enemies, and upon contact or when it lasts too long, it explodes. Scales with 320% spell damage.")
            {
                active = SpellActions.CastBallLightning,
            };
            new Spell(17, 134, 3, 0, 1, "Bash", "Attack modifier\nEvery attack slows enemies for 2 seconds, and increases their damage taken by 16%")
            {
                passive = SpellActions.BashPassiveEnabled,
            };
            new Spell(18, 136, 1, 0, 1, "Frenzy", "Attack modifier\nEvery attack enrages you, increasing damage all damage by 7.5%. Up to 5 stacks.")
            {
                passive = x => SpellActions.Frenzy = x,
            };
            new Spell(19, 135, 27, 40, 10, "Seeking Arrow", "Casting spell empowers arrow, causing all arrows to head in the same direction for 30 seconds. While active, arrows deal more damage, the further target they hit, headshots deal double damage and bodyshots slow enemies by 20% for 4 seconds.")
            {
                active = SpellActions.SeekingArrow_Active,
            };
            new Spell(20, 137, 4, 0, 1, "Focus", "Passively, when landing a headshot, next projectile will deal 100% more damage and slow the enemy by 20%. When landing a body shot, next projectile will deal only 20% more damage, but attack speed is increased.")
            {
                passive = x => SpellActions.Focus = x,
            };
            new Spell(21, 140, 8, 0, 1, "Parry", "Passively, when parrying an enemy, deal magic damage to enemies around the target. Additionally, gain energy, heal yourself for a small amount and get stun immunity for 10 seconds after parrying.")
            {
                passive = x => SpellActions.Parry = x,
            };
            new Spell(22, 141, 50, 400, 300, "Cataclysm", "Creates a fire tornado that ignites enemies, slows them and deals damage.")
            {
                active = () => SpellActions.CastCataclysm(),
            };
            new Spell(23, 165, 11, 75, 8, "Blood Infused Arrow", "Sacrifice your own vitals to empower your next arrow. Drains percent of your current health and adds lost health as damage.")
            {
                active = () => SpellActions.CastBloodInfArr(),
            };
            //new Spell(24, 165, 1, 1, 2, "Corpse Explosion", "")
            //{
            //    active = () => SpellActions.CastCorpseExplosion(),
            //};
            //new Spell(25, 165, 1, 1, "Devour", "...")
            //{
            //    active = () =>
            //};
        }