using Common.Utility.CombatEvent;
using Fort23.Core;
using GameLogic.Combat.CombatTool;
using GameLogic.Player;
using Utility;
namespace GameLogic.Combat.Skill
{
///
/// 玄黄道 :每次使用功法时在当前位置留下一道属性印记,下一个放上来的功法如果和以前功法相生则功法效果提升50%,每次使用功法时都会治疗对应相生属性的伤势。(均衡性功法搭配,转盘改变,变为金、水、木、火、土)
///
public class DS60103 : SkillBasic
{
protected Map WuXingTypeMap = new Map();
protected override void ProUseSkill()
{
}
protected override void ProInitSkill()
{
CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
CombatEventManager.Instance.AddEventListener(CombatEventType.SkillSlotsAlter, SkillSlotsAlter);
}
private void AddUseGongFa(IEventData iEventData)
{
AddUseGongFaEventData addUseGongFaEventData = iEventData as AddUseGongFaEventData;
if (addUseGongFaEventData.SkillBasic.CombatHeroEntity == CombatHeroEntity &&
addUseGongFaEventData.SkillBasic.SelfSkillConfig.SkillType == 1)
{
WuXingTypeMap.Add(addUseGongFaEventData.SkillSlots.index, addUseGongFaEventData.SkillBasic.wuXingType);
float v = SelfSkillConfig.effectValue[1];
switch (addUseGongFaEventData.SkillBasic.wuXingType)
{
case WuXingType.Gold:
CombatHeroEntity.CurrCombatHeroInfo.Metal_Injury -= v;
break;
case WuXingType.Wood:
CombatHeroEntity.CurrCombatHeroInfo.Wood_Injury -= v;
break;
case WuXingType.Water:
CombatHeroEntity.CurrCombatHeroInfo.Water_Injury -= v;
break;
case WuXingType.Fire:
CombatHeroEntity.CurrCombatHeroInfo.Fire_Injury -= v;
break;
case WuXingType.Earth:
CombatHeroEntity.CurrCombatHeroInfo.Earth_Injury -= v;
break;
}
}
}
private void SkillSlotsAlter(IEventData iEventData)
{
SkillSlotsAlterEventData skillSlotsAlterEventData = iEventData as SkillSlotsAlterEventData;
if (skillSlotsAlterEventData.SkillBasic != null &&
skillSlotsAlterEventData.SkillBasic.CombatHeroEntity == CombatHeroEntity &&
skillSlotsAlterEventData.SkillBasic.SelfSkillConfig.SkillType == 1)
{
if (WuXingTypeMap.TryGetValue(skillSlotsAlterEventData.SkillSlots.index, out WuXingType wuXingType))
{
WuXingTypeMap.Remove(skillSlotsAlterEventData.SkillSlots.index);
bool isSymbiosis = CombatCalculateTool.Instance.IsSymbiosis(
skillSlotsAlterEventData.SkillBasic.wuXingType,
wuXingType);
if (isSymbiosis)
{
skillSlotsAlterEventData.SkillBasic.IntensifyingEffect(SelfSkillConfig.effectValue[0]);
}
}
}
}
private void Finish()
{
}
protected override void ProCombatUpdate(float time)
{
}
protected override void ProDispose()
{
WuXingTypeMap.Clear();
CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
CombatEventManager.Instance.RemoveEventListener(CombatEventType.SkillSlotsAlter, SkillSlotsAlter);
}
}
}