private void OnDamageExtraEffect(PoolObjHandle <ActorRoot> _attack, SkillSlotType _slotType) { ResDT_SkillFunc skillFunc = null; if (!_attack) { return; } for (int i = 0; i < _attack.get_handle().BuffHolderComp.SpawnedBuffList.get_Count(); i++) { BuffSkill buffSkill = _attack.get_handle().BuffHolderComp.SpawnedBuffList.get_Item(i); if (buffSkill != null && buffSkill.FindSkillFunc(33, out skillFunc)) { bool flag = false; bool flag2 = true; int skillFuncParam = buffSkill.GetSkillFuncParam(skillFunc, 0, false); int skillFuncParam2 = buffSkill.GetSkillFuncParam(skillFunc, 1, false); int skillFuncParam3 = buffSkill.GetSkillFuncParam(skillFunc, 2, false); int skillFuncParam4 = buffSkill.GetSkillFuncParam(skillFunc, 3, false); int skillFuncParam5 = buffSkill.GetSkillFuncParam(skillFunc, 4, false); int skillFuncParam6 = buffSkill.GetSkillFuncParam(skillFunc, 5, false); int skillFuncParam7 = buffSkill.GetSkillFuncParam(skillFunc, 6, false); int skillFuncParam8 = buffSkill.GetSkillFuncParam(skillFunc, 7, false); if (skillFuncParam3 == 0 && this.CheckTargetSubType(skillFuncParam4, skillFuncParam5, this.actorPtr)) { if (skillFuncParam7 == 0 || this.CheckTriggerCondtion(skillFuncParam7, skillFuncParam8, _attack, this.actorPtr)) { if (skillFuncParam2 == 0) { flag = true; } else if ((skillFuncParam2 & 1 << (int)_slotType) > 0) { flag = true; } if (skillFuncParam6 > 0) { flag2 = (Singleton <FrameSynchr> .GetInstance().LogicFrameTick - buffSkill.controlTime >= (ulong)((long)skillFuncParam6)); } if (flag && flag2) { if (skillFuncParam6 != -2 || !buffSkill.IsNextDestroy()) { SkillUseParam skillUseParam = default(SkillUseParam); skillUseParam.Init(); skillUseParam.SetOriginator(_attack); skillUseParam.bExposing = buffSkill.skillContext.bExposing; if (buffSkill.skillContext != null) { if (buffSkill.skillContext.SlotType != SkillSlotType.SLOT_SKILL_COUNT) { skillUseParam.SlotType = _slotType; } else { skillUseParam.SlotType = buffSkill.skillContext.SlotType; } } else { skillUseParam.SlotType = _slotType; } _attack.get_handle().SkillControl.SpawnBuff(this.actorPtr, ref skillUseParam, skillFuncParam, true); buffSkill.controlTime = Singleton <FrameSynchr> .GetInstance().LogicFrameTick; if (skillFuncParam6 == -1 || skillFuncParam6 == -2) { _attack.get_handle().BuffHolderComp.RemoveBuff(buffSkill); } } } } } } } }