GameFramework.Skill.Trigers.BuffToSelfTrigger.Execute C# (CSharp) Method

Execute() public method

public Execute ( object sender, SkillInstance instance, long delta, long curSectionTime ) : bool
sender object
instance SkillSystem.SkillInstance
delta long
curSectionTime long
return bool
        public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime)
        {
            GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo;
            if (null == senderObj) return false;
            Scene scene = senderObj.Scene;
            EntityInfo obj = senderObj.GfxObj;
            if (obj == null) {
                return false;
            }
            if (curSectionTime < StartTime) {
                return true;
            }
            int senderId = senderObj.ActorId;
            if (senderObj.ConfigData.type != (int)SkillOrImpactType.Skill) {
                senderId = senderObj.TargetActorId;
            }
            int impactId = senderObj.ConfigData.impacttoself;
            if (senderObj.ConfigData.type != (int)SkillOrImpactType.Skill) {
                if (impactId <= 0) {
                    int skillId = scene.EntityController.GetImpactSkillId(senderObj.ActorId, senderObj.SkillId, senderObj.Seq);
                    TableConfig.Skill cfg = TableConfig.SkillProvider.Instance.GetSkill(skillId);
                    if (null != cfg) {
                        impactId = cfg.impacttoself;
                    }
                }
            }
            if (m_Radius <= Geometry.c_FloatPrecision) {
                Dictionary<string, object> args;
                TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                scene.EntityController.SendImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, senderId, senderId, impactId, args);
            } else {
                EntityInfo targetObj = senderObj.TargetGfxObj;
                int ct = 0;
                List<int> targetIds = new List<int>();
                TriggerUtil.AoeQuery(scene, obj, targetObj, m_AoeType, m_Radius, m_AngleOrLength, instance, senderId, (int)SkillTargetType.Friend, m_RelativeCenter, m_RelativeToTarget, (float distSqr, int objId) => {
                    Dictionary<string, object> args;
                    TriggerUtil.CalcImpactConfig(0, impactId, instance, senderObj.ConfigData, out args);
                    scene.EntityController.SendImpact(senderObj.ConfigData, senderObj.Seq, senderObj.ActorId, senderId, objId, impactId, args);
                    targetIds.Add(objId);
                    ++ct;
                    if (m_MaxCount <= 0 || ct < m_MaxCount) {
                        return true;
                    } else {
                        return false;
                    }
                });
            }
            return false;
        }

Usage Example

 static public int Execute(IntPtr l)
 {
     try {
         GameFramework.Skill.Trigers.BuffToSelfTrigger self = (GameFramework.Skill.Trigers.BuffToSelfTrigger)checkSelf(l);
         System.Object a1;
         checkType(l, 2, out a1);
         SkillSystem.SkillInstance a2;
         checkType(l, 3, out a2);
         System.Int64 a3;
         checkType(l, 4, out a3);
         System.Int64 a4;
         checkType(l, 5, out a4);
         var ret = self.Execute(a1, a2, a3, a4);
         pushValue(l, true);
         pushValue(l, ret);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }