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); }
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); }
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); }
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); }
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); }
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); }
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); }