|
|
|
|
using Articy.Touhou;
|
|
|
|
|
using Articy.Touhou.Features;
|
|
|
|
|
using Articy.Unity;
|
|
|
|
|
|
|
|
|
|
namespace Game
|
|
|
|
|
{
|
|
|
|
|
public enum ESkillTriggerTimingType
|
|
|
|
|
{
|
|
|
|
|
Hit,//技能命中
|
|
|
|
|
Recover,//触发点 收刀
|
|
|
|
|
}
|
|
|
|
|
public static class UtilSkillTrigger
|
|
|
|
|
{
|
|
|
|
|
public static void Trigger(int owner, int target, string skillId, ESkillTriggerTimingType timingType)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(skillId))
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
//TODO 暂时只有player拥有技能触发器
|
|
|
|
|
var skillCfg = Util.GetSkillMasterConfigData(skillId);
|
|
|
|
|
if (skillCfg == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var featureSkillCombo = skillCfg.GetFeatureSkillCombo();
|
|
|
|
|
var entity = Util.GetEntity(owner);
|
|
|
|
|
foreach (var item in featureSkillCombo.SkillTrigger)
|
|
|
|
|
{
|
|
|
|
|
if (item is IObjectWithFeatureSkillTrigger)
|
|
|
|
|
{
|
|
|
|
|
var skillTrigger = (item as IObjectWithFeatureSkillTrigger).GetFeatureSkillTrigger();
|
|
|
|
|
if ((ESkillTriggerTimingType)skillTrigger.TriggerTiming != timingType)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (skillTrigger.Bless != null)
|
|
|
|
|
{
|
|
|
|
|
if (!Util.HasBless(entity, skillTrigger.Bless.TechnicalName))
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
TriggerSub(owner, target, item);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private static void TriggerSub(int owner, int target, ArticyObject obj)
|
|
|
|
|
{
|
|
|
|
|
if (obj is IObjectWithFeatureSkillTriggerKnife)
|
|
|
|
|
{
|
|
|
|
|
var knifeFeature = (obj as IObjectWithFeatureSkillTriggerKnife).GetFeatureSkillTriggerKnife();
|
|
|
|
|
TriggerKnife(owner, target, knifeFeature);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
private static void TriggerKnife(int owner, int target, SkillTriggerKnifeFeature knifeFeature)
|
|
|
|
|
{
|
|
|
|
|
//TODO 暂时只有player
|
|
|
|
|
var masterSoul = Util.GetMasterSoul();
|
|
|
|
|
Util.AddMasterSoulShootTarget(masterSoul, target, knifeFeature.Count);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|