예제 #1
0
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, (ability) => {
         var target = Game.grid.tiles[msg.targets[0]].units[msg.targetIndexes[0]];
         var aoe = GetAffectedArea(target);
         foreach (var tile in aoe)
         {
             foreach (var unit in tile.units)
             {
                 if (unit.silenced.current)
                 {
                     unit.DealCalculatedDamage(this, silenceDamage.current, damageType);
                 }
                 else
                 {
                     unit.DealCalculatedDamage(this, normalDamage.current, damageType);
                 }
                 if (unit.modifiers.Get <MarkOfPreyStatus>().Any())
                 {
                     unit.modifiers.Get <MarkOfPreyStatus>().First().Remove();
                 }
                 unit.SetTile(FindClosestTile(unit), true);
             }
         }
     }));
 }
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, (ability) => {
         var target = Game.grid.tiles[msg.targets[0]];
         var aoe = GetAffectedArea(target);
         foreach (var tile in aoe)
         {
             DoMove(tile);
         }
     }));
 }
예제 #3
0
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, (ability) => {
         var target = Game.grid.tiles[msg.targets[0]].units[msg.targetIndexes[0]];
         var aoe = GetAffectedArea(target);
         foreach (var tile in aoe)
         {
             foreach (var unit in tile.units)
             {
                 DealDamage(unit, CalculateDamage(unit), damageType);
             }
         }
     }));
 }
예제 #4
0
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, (ability) => {
         var target = Game.grid.tiles[msg.targets[0]].units[msg.targetIndexes[0]];
         var aoe = GetAffectedArea(target);
         foreach (var tile in aoe)
         {
             foreach (var unit in tile.units)
             {
                 unit.Heal(heal.current);
             }
         }
     }));
 }
예제 #5
0
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, (ability) => {
         var target = Game.grid.tiles[msg.targets[0]].units[msg.targetIndexes[0]];
         var aoe = GetAffectedArea(target);
         foreach (var tile in aoe)
         {
             foreach (var unit in tile.units)
             {
                 DealDamage(unit, damage.current, damageType);
                 Create(master, defenseReductionModifier);
             }
         }
     }));
 }
예제 #6
0
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, (ability) => {
         var target = Game.grid.tiles[msg.targets[0]].units[msg.targetIndexes[0]];
         var aoe = GetAffectedArea(target);
         foreach (var tile in aoe)
         {
             foreach (var unit in tile.units)
             {
                 unit.energy.current.value += energyChange.current;
                 unit.RefreshEnergy();
             }
         }
     }));
 }
예제 #7
0
    public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
    {
        return(new InstantAbilityHandler(msg, this, (ability) => {
            var target = Game.grid.tiles[msg.targets[0]];
            var modifier = (ShrapnelModifier)UnitModifier.Create(master, shrapnelModifier);

            modifier.target = target;
            modifier.creator = this;
            modifier.aoe = base.GetAffectedArea(target).ToList();

            modifier.calculatedDamage = damage.current;
            modifier.damageType = damageType;

            CalculateDamage(ref modifier.calculatedDamage, ref modifier.damageType);
        }));
    }
예제 #8
0
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, (ability) => {
         var speed = unit.speed.current;
         var movement = unit.movement.current;
         var target = Game.grid.tiles[msg.targets[0]].units[msg.targetIndexes[0]];
         var aoe = GetAffectedArea(target);
         var movementDamage = movement * movementDamageMultiplier.current;
         var totalDamage = speed * speedDamageMultiplier.current + movementDamage;
         foreach (var tile in aoe)
         {
             foreach (var unit in tile.units)
             {
                 DealDamage(unit, totalDamage, damageType);
                 Debug.Log("Raw Total Damage Dealt: " + totalDamage + " From Speed: " + speed * speedDamageMultiplier.current + " From Movement: " + movementDamage);
             }
         }
     }));
 }
예제 #9
0
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, (ability) => {
         var target = Game.grid.tiles[msg.targets[0]];
         // Central damage
         foreach (var unit in target.units)
         {
             DealDamage(unit, centerDamage.current, damageType);
         }
         // Outer damage
         var aoe = GetAffectedArea(target);
         foreach (var tile in aoe.Where(v => v != target))
         {
             foreach (var unit in tile.units)
             {
                 DealDamage(unit, outerDamage.current, damageType);
             }
         }
     }));
 }
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, (ability) => {
         var target = Game.grid.tiles[msg.targets[0]].units[msg.targetIndexes[0]];
         var aoe = GetAffectedArea(target);
         foreach (var tile in aoe)
         {
             foreach (var unit in tile.units)
             {
                 var givenStatus = Create(unit, status);
                 var gainedStatus = Create(this.unit, status);
                 givenStatus.opponentStatus = gainedStatus;
                 givenStatus.opponent = this.unit;
                 gainedStatus.opponentStatus = givenStatus;
                 gainedStatus.opponent = unit;
                 gainedStatus.duelCaster = this;
             }
         }
     }));
 }
예제 #11
0
 public override string CombatLog(GameEvents.Ability msg)
 {
     return($"{Lang.GetStr($"{unit.identifier}_DisplayName")} moved from {unit.tile.hex} to {new HexGrid.Hex(msg.targets.Last())}.");
 }
예제 #12
0
 public override string CombatLog(GameEvents.Ability msg)
 {
     return($"{Lang.GetStr($"{unit.identifier}_DisplayName")} casted {Lang.GetStr($"{identifier}_DisplayName")} on {Lang.GetStr($"{Game.grid.GetTile(msg.targets[0]).units[0].identifier}_DisplayName")}.");
 }
예제 #13
0
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, (ability) => Create(unit, modifier)));
 }
예제 #14
0
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new InstantAbilityHandler(msg, this, t => Game.rounds.NextTurn()));        // 3
 }
예제 #15
0
 public override EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg)
 {
     return(new MoveAbilityHandler(msg, this));
 }
예제 #16
0
 /// <summary> Add entry to combat log. </summary>
 public abstract string CombatLog(GameEvents.Ability msg);
예제 #17
0
 public abstract EventHandler <GameEvents.Ability> CreateHandler(GameEvents.Ability msg);
예제 #18
0
 public override string CombatLog(GameEvents.Ability msg)
 {
     return($"{Lang.GetStr($"{unit.identifier}_DisplayName")} casted {Lang.GetStr($"{identifier}_DisplayName")} on some tiles...");
 }