private TrackSendImpact ( int targetId, int impactId, int seq, int impactToTarget, object>.Dictionary |
||
targetId | int | |
impactId | int | |
seq | int | |
impactToTarget | int | |
args | object>.Dictionary | |
리턴 |
internal ImpactInfo TrackSendImpact(int targetId, int impactId, int seq, int impactToTarget, Dictionary<string, object> args)
{
EntityViewModel view = GetEntityViewById(targetId);
if (null != view && null != view.Entity && null != view.Actor && !view.Entity.IsDeadSkillCasting()) {
EntityInfo npc = view.Entity;
ImpactInfo trackImpactInfo = npc.GetSkillStateInfo().GetImpactInfoBySeq(seq);
if (null != trackImpactInfo && impactId == trackImpactInfo.ImpactId) {
ImpactInfo impactInfo = null;
if (impactToTarget <= 0 || impactToTarget >= SkillInstance.c_FirstInnerHitSkillId) {
impactToTarget = PredefinedSkill.c_HitSkillId;
impactInfo = new ImpactInfo(PredefinedSkill.Instance.HitSkillCfg);
}
var addArgs = new Dictionary<string, object>();
if (null == impactInfo) {
impactInfo = new ImpactInfo(impactId);
}
impactInfo.StartTime = TimeUtility.GetLocalMilliseconds();
impactInfo.ImpactSenderId = trackImpactInfo.ImpactSenderId;
impactInfo.SenderPosition = trackImpactInfo.SenderPosition;
impactInfo.SkillId = trackImpactInfo.SkillId;
impactInfo.DurationTime = trackImpactInfo.DurationTime > 0 ? trackImpactInfo.DurationTime : impactInfo.ConfigData.duration;
impactInfo.TargetType = trackImpactInfo.TargetType;
impactInfo.DamageData.CopyFrom(trackImpactInfo.DamageData);
impactInfo.DamageData.Merge(impactInfo.ConfigData.damageData);
if (impactInfo.ConfigData.type == (int)SkillOrImpactType.Buff) {
ImpactInfo oldImpactInfo = npc.GetSkillStateInfo().FindImpactInfoById(impactInfo.ImpactId);
if (null != oldImpactInfo) {
oldImpactInfo.DurationTime += impactInfo.DurationTime;
return oldImpactInfo;
}
}
npc.GetSkillStateInfo().AddImpact(impactInfo);
GfxSkillSystem.Instance.StartSkill(targetId, impactInfo.ConfigData, impactInfo.Seq, args, addArgs);
return impactInfo;
}
}
return null;
}
static public int TrackSendImpact(IntPtr l) { try { GameFramework.EntityController self = (GameFramework.EntityController)checkSelf(l); System.Int32 a1; checkType(l, 2, out a1); System.Int32 a2; checkType(l, 3, out a2); System.Int32 a3; checkType(l, 4, out a3); System.Int32 a4; checkType(l, 5, out a4); System.Collections.Generic.Dictionary <System.String, System.Object> a5; checkType(l, 6, out a5); var ret = self.TrackSendImpact(a1, a2, a3, a4, a5); pushValue(l, true); pushValue(l, ret); return(2); } catch (Exception e) { return(error(l, e)); } }