技能调整
This commit is contained in:
parent
7a316ec5d5
commit
1501f5aef1
@ -251,16 +251,6 @@ namespace RuntimeData
|
||||
{
|
||||
foreach (var skill in Skills)skill.OnTurnEnd(this, map);
|
||||
}
|
||||
|
||||
public void OnUnitDamage(UnitData damagedUnit, MapData mapData)
|
||||
{
|
||||
foreach (var skill in Skills)skill.OnUnitDamage(damagedUnit, mapData);
|
||||
}
|
||||
|
||||
public void OnUnitMove(UnitData moveUnit, GridData target, MapData mapData)
|
||||
{
|
||||
foreach (var skill in Skills)skill.OnUnitMove(moveUnit, target, mapData);
|
||||
}
|
||||
|
||||
// 尝试升级城市
|
||||
public bool TryUpgradeCity()
|
||||
|
||||
@ -336,16 +336,6 @@ namespace RuntimeData
|
||||
{
|
||||
foreach (var skill in Skills) skill.OnTurnEnd(this, map);
|
||||
}
|
||||
|
||||
public void OnUnitDamage(UnitData damagedUnit, MapData mapData)
|
||||
{
|
||||
foreach (var skill in Skills) skill.OnUnitDamage(damagedUnit, mapData);
|
||||
}
|
||||
|
||||
public void OnUnitMove(UnitData moveUnit, GridData target, MapData mapData)
|
||||
{
|
||||
foreach (var skill in Skills) skill.OnUnitMove(moveUnit, target, mapData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -808,12 +808,21 @@ namespace RuntimeData
|
||||
}
|
||||
}
|
||||
|
||||
// 当场上有小兵受伤时
|
||||
public void OnUnitDamage(UnitData damageUnit)
|
||||
// 当场上有小兵攻击时
|
||||
public void OnUnitAttack(UnitData origin, UnitData target)
|
||||
{
|
||||
foreach (var idBase in GetAllIdentifierBase())
|
||||
{
|
||||
foreach (var skill in idBase.Skills) skill.OnUnitDamage(damageUnit, this);
|
||||
foreach (var skill in idBase.Skills) skill.OnUnitAttack(idBase, origin, target, this);
|
||||
}
|
||||
}
|
||||
|
||||
// 当场上有小兵受伤时
|
||||
public void OnUnitDamage(UnitData origin, UnitData target)
|
||||
{
|
||||
foreach (var idBase in GetAllIdentifierBase())
|
||||
{
|
||||
foreach (var skill in idBase.Skills) skill.OnUnitDamage(idBase, origin, target, this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -822,7 +831,7 @@ namespace RuntimeData
|
||||
{
|
||||
foreach (var idBase in GetAllIdentifierBase())
|
||||
{
|
||||
foreach (var skill in idBase.Skills) skill.OnUnitMove(moveUnit, target, this);
|
||||
foreach (var skill in idBase.Skills) skill.OnUnitMove(idBase, moveUnit, target, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -318,17 +318,6 @@ namespace RuntimeData
|
||||
{
|
||||
foreach (var skill in Skills)skill.OnTurnEnd(this, map);
|
||||
}
|
||||
|
||||
public void OnUnitDamage(UnitData damagedUnit, MapData mapData)
|
||||
{
|
||||
foreach (var skill in Skills)skill.OnUnitDamage(damagedUnit, mapData);
|
||||
}
|
||||
|
||||
public void OnUnitMove(UnitData moveUnit, GridData target, MapData mapData)
|
||||
{
|
||||
foreach (var skill in Skills)skill.OnUnitMove(moveUnit, target, mapData);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -310,16 +310,6 @@ namespace RuntimeData
|
||||
{
|
||||
foreach (var skill in Skills)skill.OnTurnEnd(this, map);
|
||||
}
|
||||
|
||||
public void OnUnitDamage(UnitData damagedUnit, MapData mapData)
|
||||
{
|
||||
foreach (var skill in Skills)skill.OnUnitDamage(damagedUnit, mapData);
|
||||
}
|
||||
|
||||
public void OnUnitMove(UnitData moveUnit, GridData target, MapData mapData)
|
||||
{
|
||||
foreach (var skill in Skills)skill.OnUnitMove(moveUnit, target, mapData);
|
||||
}
|
||||
|
||||
//返回该unit的视野半径
|
||||
public int GetSightRange()
|
||||
|
||||
@ -7,6 +7,8 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using RuntimeData;
|
||||
|
||||
|
||||
namespace Logic.Skill
|
||||
@ -25,6 +27,24 @@ namespace Logic.Skill
|
||||
{
|
||||
return SkillType.ALLYCOUNTER;
|
||||
}
|
||||
|
||||
|
||||
public override void OnUnitAttack(IdentifierBase identifier, UnitData origin, UnitData target, MapData mapData)
|
||||
{
|
||||
if (identifier is not UnitData self) return;
|
||||
if (!mapData.GetGridDataByUnitId(self.Id, out var selfGrid)) return;
|
||||
|
||||
var selfUnitList = new HashSet<UnitData>();
|
||||
mapData.GetUnitDataListByPlayerId(mapData.PlayerMap.SelfPlayerId, selfUnitList);
|
||||
if (selfUnitList.Contains(origin)) return;
|
||||
if (!selfUnitList.Contains(target)) return;
|
||||
|
||||
if (!mapData.GetGridDataByUnitId(origin.Id, out var originGrid)) return;
|
||||
if (!mapData.GetGridDataByUnitId(target.Id, out var targetGrid)) return;
|
||||
var roundGrids = mapData.GridMap.GetAroundGridDataSet(2, 2, selfGrid);
|
||||
if (!roundGrids.Contains(originGrid) || !roundGrids.Contains(targetGrid)) return;
|
||||
|
||||
if (Main.UnitLogic.TryKillUnit(mapData, self, self, 3)) return;
|
||||
Main.UnitLogic.TryDamageUnit(mapData, self, self, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -25,10 +25,5 @@ namespace Logic.Skill
|
||||
{
|
||||
return SkillType.ROYALFLAMES;
|
||||
}
|
||||
|
||||
public override void OnDamageOther(UnitData self, UnitData target, MapData mapData, int dmg)
|
||||
{
|
||||
self.Health = (int)(self.Health * 1.3f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -27,8 +27,7 @@ namespace Logic.Skill
|
||||
{
|
||||
return SkillType.STOMP;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public override void OnMove(UnitData self, GridData grid, MapData mapData, MoveType moveType)
|
||||
{
|
||||
var selfUnitList = new HashSet<UnitData>();
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
|
||||
|
||||
using System;
|
||||
using RuntimeData;
|
||||
|
||||
|
||||
namespace Logic.Skill
|
||||
@ -25,5 +26,10 @@ namespace Logic.Skill
|
||||
{
|
||||
return SkillType.VAMPIRE;
|
||||
}
|
||||
|
||||
public override void OnDamageOther(UnitData self, UnitData target, MapData mapData, int dmg)
|
||||
{
|
||||
self.Health = (int)Math.Round(self.Health * 1.3f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -120,10 +120,13 @@ namespace Logic.Skill
|
||||
|
||||
// 全局技能
|
||||
// 当有单位受伤时
|
||||
public void OnUnitDamage(UnitData damagedUnit, MapData mapData);
|
||||
public void OnUnitDamage(IdentifierBase identifier, UnitData origin, UnitData target, MapData mapData);
|
||||
|
||||
// 当有单位攻击时
|
||||
public void OnUnitAttack(IdentifierBase identifier, UnitData origin, UnitData target, MapData mapData);
|
||||
|
||||
// 当有单位移动时
|
||||
public void OnUnitMove(UnitData moveUnit, GridData target, MapData mapData);
|
||||
public void OnUnitMove(IdentifierBase identifier, UnitData moveUnit, GridData target, MapData mapData);
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
@ -376,12 +379,17 @@ namespace Logic.Skill
|
||||
return 0;
|
||||
}
|
||||
|
||||
public virtual void OnUnitDamage(UnitData damagedUnit, MapData mapData)
|
||||
public virtual void OnUnitDamage(IdentifierBase identifier, UnitData origin, UnitData target, MapData mapData)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual void OnUnitAttack(IdentifierBase identifier, UnitData origin, UnitData target, MapData mapData)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual void OnUnitMove(UnitData moveUnit, GridData target, MapData mapData)
|
||||
public virtual void OnUnitMove(IdentifierBase identifier, UnitData moveUnit, GridData target, MapData mapData)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@ -85,6 +85,7 @@ namespace Logic
|
||||
if (!mapData.GetCityDataByUnitId(unit2.Id, out var city2)) return false;
|
||||
if (!mapData.GetGridDataByUnitId(unit1.Id, out var grid1)) return false;
|
||||
if (!mapData.GetGridDataByUnitId(unit2.Id, out var grid2)) return false;
|
||||
mapData.OnUnitAttack(unit1, unit2);
|
||||
unit1.BeforeAttack(mapData, unit2);
|
||||
player1.TurnNoAttack = 0;
|
||||
|
||||
@ -243,7 +244,7 @@ namespace Logic
|
||||
foreach (var skill in target.Skills) skill.OnDeath(target, origin, mapData);
|
||||
foreach (var skill in origin.Skills) skill.OnDamageOther(origin, target, mapData, dmg);
|
||||
foreach (var skill in origin.Skills) skill.OnKill(origin, target, mapData);
|
||||
mapData.OnUnitDamage(target);
|
||||
mapData.OnUnitDamage(origin, target);
|
||||
Main.UnitLogic.Die(mapData, target);
|
||||
return true;
|
||||
}
|
||||
@ -253,7 +254,7 @@ namespace Logic
|
||||
target.Health -= dmg;
|
||||
foreach (var skill in target.Skills) skill.OnDamage(target, origin, mapData, dmg);
|
||||
foreach (var skill in origin.Skills) skill.OnDamageOther(origin, target, mapData, dmg);
|
||||
mapData.OnUnitDamage(target);
|
||||
mapData.OnUnitDamage(origin, target);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user