Ejemplo n.º 1
0
        public override List <EffectData> Apply(FieldManager manager, Random random, GameMatch match, int playerUserIndex, Combo combo, Block block)
        {
            Field  playerField = playerUserIndex == 1 ? match.Field1 : match.Field2;
            Player enemy       = playerUserIndex == 1 ? match.Player2 : match.Player1;
            Field  enemyField  = playerUserIndex == 1 ? match.Field2 : match.Field1;

            List <EffectData> data = new List <EffectData>();

            if (enemyField.TryBlock(out var effect))
            {
                data.Add(EffectDataHelper.GlobalEffectRemovedData(enemy, effect));
            }
            else
            {
                enemy.TakeDamage(DamageToEnemyHealth);
                data.Add(EffectDataHelper.HealthData(enemy, DamageToEnemyHealth));

                List <Block> blocks = manager.GetRandomNonDestroyedBlocks(enemyField, ShotsAmount).ToList();
                foreach (Block blockToDestroy in blocks)
                {
                    manager.DestroyBlocks(enemyField, blocks, BlockState.DestroyedByDamage);
                    data.Add(EffectDataHelper.UniqueShotData(playerField, enemyField, block, blockToDestroy, "ShotgunEffect"));
                }
            }

            return(data);
        }
Ejemplo n.º 2
0
        public override List <EffectData> Apply(FieldManager manager, UpgradeManager upgradeManager, Random random, GameMatch match, int playerUserIndex, Combo combo)
        {
            Player       player             = playerUserIndex == 1 ? match.Player1 : match.Player2;
            Field        playerField        = playerUserIndex == 1 ? match.Field1 : match.Field2;
            UpgradesInfo playerUpgradesInfo = playerUserIndex == 1 ? match.Player1Upgrades : match.Player2Upgrades;

            int effectsCount = Math.Max(1, combo.Blocks.Count - FieldManager.MinComboCount);

            List <EffectData> data   = new List <EffectData>();
            float             health = HealthToRestore * combo.EffectScale
                                       * upgradeManager.GetHealthBlockUpgradeBonus(playerUpgradesInfo);

            data.Add(EffectDataHelper.HealthData(player, health * effectsCount));

            for (int i = 0; i < effectsCount; i++)
            {
                player.GainHealth(health);
            }

            if (combo.Blocks.Count > 3)
            {
                data.AddRange(BlockEffectsHelper.CreateUniqueBlock(manager, random, playerField, player, combo, ComboEffectType));
            }

            return(data);
        }
        public override List <EffectData> OnDelete(FieldManager manager, Random random, GameMatch match, Player user, Block block)
        {
            Field             playerField = user.InGameID == 1 ? match.Field1 : match.Field2;
            Player            player      = user.InGameID == 1 ? match.Player1 : match.Player2;
            List <EffectData> data        = base.OnDelete(manager, random, match, user, block);

            playerField.GlobalEffects.Remove(AttachedGlobalEffect);
            data.Add(EffectDataHelper.GlobalEffectRemovedData(player, AttachedGlobalEffect));

            return(data);
        }
Ejemplo n.º 4
0
        public override List <EffectData> Apply(FieldManager manager, Random random, GameMatch match, int playerUserIndex, Combo combo, Block block)
        {
            Player player = playerUserIndex == 1 ? match.Player1 : match.Player2;

            List <EffectData> data = new List <EffectData>();

            player.GainMana(player.MaxMana);
            data.Add(EffectDataHelper.ManaData(player, player.MaxMana));

            return(data);
        }
Ejemplo n.º 5
0
        public override List <EffectData> Apply(FieldManager manager, SkillsManager skillsManager, Random random, GameMatch match, int playerUserIndex)
        {
            Player player = playerUserIndex == 1 ? match.Player1 : match.Player2;

            List <EffectData> data = new List <EffectData>();

            float healing = RelativeHealing * player.MaxHealth;

            player.GainHealth(healing);
            data.Add(EffectDataHelper.HealthData(player, healing));

            return(data);
        }
        public override List <EffectData> Apply(FieldManager manager, SkillsManager skillsManager, Random random, GameMatch match, int playerUserIndex)
        {
            Player enemy = playerUserIndex == 1 ? match.Player2 : match.Player1;

            List <EffectData> data = new List <EffectData>();

            float damage = RelativeDamageToEnemyHealth * enemy.Health;

            enemy.TakeDamage(damage);
            data.Add(EffectDataHelper.HealthData(enemy, -damage));

            return(data);
        }
        public override List <EffectData> OnCreate(FieldManager manager, Random random, GameMatch match, Player user, Block block)
        {
            Field             playerField = user.InGameID == 1 ? match.Field1 : match.Field2;
            List <EffectData> data        = base.OnCreate(manager, random, match, user, block);

            GlobalEffect globalEffect = new GlobalEffect(GlobalEffectType.ManaOverTime, ManaOverTimeAmount);

            AttachedGlobalEffect = globalEffect;
            playerField.GlobalEffects.Add(globalEffect);
            data.Add(EffectDataHelper.GlobalEffectData(user, globalEffect));

            return(data);
        }
Ejemplo n.º 8
0
        public override List <EffectData> Apply(FieldManager manager, Random random, GameMatch match, int playerUserIndex, Combo combo, Block block)
        {
            Player            player      = playerUserIndex == 1 ? match.Player1 : match.Player2;
            Field             playerField = playerUserIndex == 1 ? match.Field1 : match.Field2;
            List <EffectData> data        = new List <EffectData>();

            GlobalEffect globalEffect = new GlobalEffect(GlobalEffectType.Shield);

            playerField.GlobalEffects.Add(globalEffect);
            data.Add(EffectDataHelper.GlobalEffectData(player, globalEffect));

            return(data);
        }
        public override List <EffectData> Apply(FieldManager manager, UpgradeManager upgradeManager, Random random, GameMatch match, int playerUserIndex, Combo combo)
        {
            Player player = playerUserIndex == 1 ? match.Player1 : match.Player2;

            List <EffectData> data = new List <EffectData>();

            int enegryToGain = combo.Blocks.Count * EnergyFromOneBlock;

            player.GainEnergy(enegryToGain);

            data.Add(EffectDataHelper.EnergyData(player, enegryToGain));

            return(data);
        }
Ejemplo n.º 10
0
        public override List <EffectData> Apply(FieldManager manager, UpgradeManager upgradeManager, Random random, GameMatch match, int playerUserIndex, Combo combo)
        {
            Player       player             = playerUserIndex == 1 ? match.Player1 : match.Player2;
            Field        playerField        = playerUserIndex == 1 ? match.Field1 : match.Field2;
            Player       enemy              = playerUserIndex == 1 ? match.Player2 : match.Player1;
            Field        enemyField         = playerUserIndex == 1 ? match.Field2 : match.Field1;
            UpgradesInfo playerUpgradesInfo = playerUserIndex == 1 ? match.Player1Upgrades : match.Player2Upgrades;

            int effectsCount = Math.Max(1, combo.Blocks.Count - FieldManager.MinComboCount);

            List <EffectData> data = new List <EffectData>();

            if (enemyField.TryBlock(out var effect))
            {
                data.Add(EffectDataHelper.GlobalEffectRemovedData(enemy, effect.Type));
            }
            else
            {
                float damage = DamageToEnemyHealth * combo.EffectScale
                               * upgradeManager.GetAttackBlockUpgradeBonus(playerUpgradesInfo);
                data.Add(EffectDataHelper.HealthData(enemy, -damage * effectsCount));
                for (int i = 0; i < effectsCount; i++)
                {
                    enemy.TakeDamage(damage);

                    for (int j = 0; j < BlocksToAttackCount; j++)
                    {
                        Block block = manager.GetRandomNonDestroyedBlocks(enemyField).FirstOrDefault();
                        if (block != null)
                        {
                            manager.DestroyBlocks(enemyField, new List <Block> {
                                block
                            }, BlockState.DestroyedByDamage);
                            data.Add(EffectDataHelper.ShotData(playerField, enemyField, combo.Blocks.First(), block, -DamageToBlockHealth));
                        }
                    }
                }
            }

            if (combo.Blocks.Count > 3)
            {
                data.AddRange(BlockEffectsHelper.CreateUniqueBlock(manager, random, playerField, player, combo, ComboEffectType));
            }

            return(data);
        }
Ejemplo n.º 11
0
        public override List <EffectData> Apply(FieldManager manager, Random random, GameMatch match, int playerUserIndex, Combo combo, Block block)
        {
            Field  playerField = playerUserIndex == 1 ? match.Field1 : match.Field2;
            Player enemy       = playerUserIndex == 1 ? match.Player2 : match.Player1;
            Field  enemyField  = playerUserIndex == 1 ? match.Field2 : match.Field1;

            List <EffectData> data = new List <EffectData>();

            if (enemyField.TryBlock(out var effect))
            {
                data.Add(EffectDataHelper.GlobalEffectRemovedData(enemy, effect));
            }
            else
            {
                Block toBlock = manager.GetRandomNonDestroyedBlockExceptBorders(enemyField);
                manager.DestroyBlocks(enemyField, manager.GetNeighbours(enemyField, toBlock), BlockState.DestroyedByDamage);
                data.Add(EffectDataHelper.UniqueShotData(playerField, enemyField, block, toBlock, "BoulderEffect"));
            }

            return(data);
        }