public void Leave(Action _action, Track _track) { if (this.bTriggerMode && this.attackActor) { int count = this.TriggeredBuffContextList.get_Count(); for (int i = 0; i < count; i++) { HitTriggerDurationContext.STriggeredBuffContext sTriggeredBuffContext = this.TriggeredBuffContextList.get_Item(i); if (sTriggeredBuffContext.actor) { this.attackActor.get_handle().SkillControl.RemoveBuff(sTriggeredBuffContext.actor, sTriggeredBuffContext.buffId); } } this.TriggeredBuffContextList.Clear(); } int count2 = this.RemoveSkillList.get_Count(); for (int j = 0; j < this.RemoveSkillList.get_Count(); j++) { BuffSkill buffSkill = this.RemoveSkillList.get_Item(j); if (buffSkill != null && !buffSkill.isFinish) { if (buffSkill.skillContext.TargetActor) { buffSkill.skillContext.TargetActor.get_handle().BuffHolderComp.RemoveBuff(buffSkill); } } } this.RemoveSkillList.Clear(); }
private void HitTrigger(Action _action) { if (!this.attackActor) { return; } if (this.skillContext != null) { this.skillContext.EffectCountInSingleTrigger = 0; } this.GetCollidedActorList(_action, this.attackActor, this.triggerActor); if (this.collidedActors != null && this.collidedActors.get_Count() > 0) { if (this.bTriggerBounceBullet) { SkillUseContext refParamObject = _action.refParams.GetRefParamObject <SkillUseContext>("SkillContext"); if (!refParamObject.TargetActor) { refParamObject.TargetActor = this.collidedActors.get_Item(0); } } SkillChooseTargetEventParam skillChooseTargetEventParam = new SkillChooseTargetEventParam(this.attackActor, this.attackActor, this.collidedActors.get_Count()); Singleton <GameEventSys> .get_instance().SendEvent <SkillChooseTargetEventParam>(GameEventDef.Event_HitTrigger, ref skillChooseTargetEventParam); if (this.TriggerActorCount > 0 && this.TriggerActorCount < this.collidedActors.get_Count()) { this.PriorityTrigger(_action); } else { for (int i = 0; i < this.collidedActors.get_Count(); i++) { PoolObjHandle <ActorRoot> poolObjHandle = this.collidedActors.get_Item(i); this.TriggerAction(_action, ref poolObjHandle); } } } if (this.bTriggerMode) { int count = this.TriggeredBuffContextList.get_Count(); if (count > 0 && this.attackActor) { for (int j = count - 1; j >= 0; j--) { HitTriggerDurationContext.STriggeredBuffContext sTriggeredBuffContext = this.TriggeredBuffContextList.get_Item(j); if (!this.collidedActors.Contains(sTriggeredBuffContext.actor)) { this.attackActor.get_handle().SkillControl.RemoveBuff(sTriggeredBuffContext.actor, sTriggeredBuffContext.buffId); this.TriggeredBuffContextList.RemoveAt(j); } } } } }
private void TriggerAction(Action _action, ref PoolObjHandle <ActorRoot> target) { if (!this.attackActor) { return; } uint objID = target.get_handle().ObjID; int num; if (this.collideCountMap.TryGetValue(objID, ref num)) { num++; this.collideCountMap.set_Item(objID, num); } else { this.collideCountMap.Add(objID, 1); } int num2 = 0; if (this.collideTimeMap.TryGetValue(objID, ref num2)) { this.collideTimeMap.set_Item(objID, this.localTime); } else { this.collideTimeMap.Add(objID, this.localTime); } if (this.skillContext == null) { return; } this.skillContext.EffectCount++; this.skillContext.EffectCountInSingleTrigger++; if (!this.bTriggerMode) { this.attackActor.get_handle().SkillControl.SpawnBuff(this.skillContext.Originator, this.skillContext, this.SelfSkillCombineID_1, false); this.attackActor.get_handle().SkillControl.SpawnBuff(this.skillContext.Originator, this.skillContext, this.SelfSkillCombineID_2, false); this.attackActor.get_handle().SkillControl.SpawnBuff(this.skillContext.Originator, this.skillContext, this.SelfSkillCombineID_3, false); } else { if (this.skillContext.Originator && this.SelfSkillCombineID_1 > 0) { HitTriggerDurationContext.STriggeredBuffContext inPoint = default(HitTriggerDurationContext.STriggeredBuffContext); inPoint.actor = this.skillContext.Originator; inPoint.buffId = this.SelfSkillCombineID_1; if (BaseAlgorithm.AddUniqueItem <HitTriggerDurationContext.STriggeredBuffContext>(this.TriggeredBuffContextList, inPoint)) { this.attackActor.get_handle().SkillControl.SpawnBuff(this.skillContext.Originator, this.skillContext, this.SelfSkillCombineID_1, false); } } if (this.skillContext.Originator && this.SelfSkillCombineID_2 > 0) { HitTriggerDurationContext.STriggeredBuffContext inPoint2 = default(HitTriggerDurationContext.STriggeredBuffContext); inPoint2.actor = this.skillContext.Originator; inPoint2.buffId = this.SelfSkillCombineID_2; if (BaseAlgorithm.AddUniqueItem <HitTriggerDurationContext.STriggeredBuffContext>(this.TriggeredBuffContextList, inPoint2)) { this.attackActor.get_handle().SkillControl.SpawnBuff(this.skillContext.Originator, this.skillContext, this.SelfSkillCombineID_2, false); } } if (this.skillContext.Originator && this.SelfSkillCombineID_3 > 0) { HitTriggerDurationContext.STriggeredBuffContext inPoint3 = default(HitTriggerDurationContext.STriggeredBuffContext); inPoint3.actor = this.skillContext.Originator; inPoint3.buffId = this.SelfSkillCombineID_3; if (BaseAlgorithm.AddUniqueItem <HitTriggerDurationContext.STriggeredBuffContext>(this.TriggeredBuffContextList, inPoint3)) { this.attackActor.get_handle().SkillControl.SpawnBuff(this.skillContext.Originator, this.skillContext, this.SelfSkillCombineID_3, false); } } } if (target) { this.hit = true; if (target.get_handle().TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero && !this.bHitTargetHero) { this.bHitTargetHero = true; this.HitTargetHeroPos = target.get_handle().location; } this.skillContext.EffectDir = this.attackActor.get_handle().forward; bool flag = false; BuffSkill buffSkill = null; BuffSkill buffSkill2 = null; BuffSkill buffSkill3 = null; if (!this.bTriggerMode) { this.attackActor.get_handle().SkillControl.SpawnBuff(target, this.skillContext, this.TargetSkillCombine_1, ref buffSkill, this.bExtraBuff); this.attackActor.get_handle().SkillControl.SpawnBuff(target, this.skillContext, this.TargetSkillCombine_2, ref buffSkill2, this.bExtraBuff); this.attackActor.get_handle().SkillControl.SpawnBuff(target, this.skillContext, this.TargetSkillCombine_3, ref buffSkill3, this.bExtraBuff); if ((buffSkill != null && buffSkill.cfgData.bNotGetHate == 0) || (buffSkill2 != null && buffSkill2.cfgData.bNotGetHate == 0) || (buffSkill3 != null && buffSkill3.cfgData.bNotGetHate == 0)) { flag = true; } } else { if (this.TargetSkillCombine_1 > 0) { HitTriggerDurationContext.STriggeredBuffContext inPoint4 = default(HitTriggerDurationContext.STriggeredBuffContext); inPoint4.actor = target; inPoint4.buffId = this.TargetSkillCombine_1; if (BaseAlgorithm.AddUniqueItem <HitTriggerDurationContext.STriggeredBuffContext>(this.TriggeredBuffContextList, inPoint4)) { this.attackActor.get_handle().SkillControl.SpawnBuff(target, this.skillContext, this.TargetSkillCombine_1, ref buffSkill, false); } if (buffSkill != null && buffSkill.cfgData.bNotGetHate == 0) { flag = true; } } if (this.TargetSkillCombine_2 > 0) { HitTriggerDurationContext.STriggeredBuffContext inPoint5 = default(HitTriggerDurationContext.STriggeredBuffContext); inPoint5.actor = target; inPoint5.buffId = this.TargetSkillCombine_2; if (BaseAlgorithm.AddUniqueItem <HitTriggerDurationContext.STriggeredBuffContext>(this.TriggeredBuffContextList, inPoint5)) { this.attackActor.get_handle().SkillControl.SpawnBuff(target, this.skillContext, this.TargetSkillCombine_2, ref buffSkill2, false); } if (buffSkill2 != null && buffSkill2.cfgData.bNotGetHate == 0) { flag = true; } } if (this.TargetSkillCombine_3 > 0) { HitTriggerDurationContext.STriggeredBuffContext inPoint6 = default(HitTriggerDurationContext.STriggeredBuffContext); inPoint6.actor = target; inPoint6.buffId = this.TargetSkillCombine_3; if (BaseAlgorithm.AddUniqueItem <HitTriggerDurationContext.STriggeredBuffContext>(this.TriggeredBuffContextList, inPoint6)) { this.attackActor.get_handle().SkillControl.SpawnBuff(target, this.skillContext, this.TargetSkillCombine_3, ref buffSkill3, false); } if (buffSkill3 != null && buffSkill3.cfgData.bNotGetHate == 0) { flag = true; } } } if (this.TargetSkillLeaveRemove_1 && buffSkill != null) { this.RemoveSkillList.Add(buffSkill); } if (this.TargetSkillLeaveRemove_2 && buffSkill2 != null) { this.RemoveSkillList.Add(buffSkill2); } if (this.TargetSkillLeaveRemove_3 && buffSkill3 != null) { this.RemoveSkillList.Add(buffSkill3); } if (flag) { target.get_handle().ActorControl.BeAttackHit(this.attackActor, this.skillContext.bExposing); } } if (this.bTriggerBullet && this.BulletActionName != null && this.BulletActionName.get_Length() > 0) { this.skillContext.AppointType = 1; this.skillContext.TargetActor = target; this.attackActor.get_handle().SkillControl.SpawnBullet(this.skillContext, this.BulletActionName, false, this.bAgeImmeExcute, 0, 0); } }