public static bool OnSkillFuncSuckBlood(ref SSkillFuncContext inContext) { PoolObjHandle <ActorRoot> inOriginator = inContext.inOriginator; if (!inOriginator) { return(false); } ResDT_SkillFunc skillFunc = null; if (inContext.inStage != ESkillFuncStage.Leave) { int num = 0; int iParam = inContext.inSkillFunc.astSkillFuncParam[0].iParam; int num2 = 0; if (inContext.inAction.handle.refParams.GetRefParam("HurtValue", ref num)) { for (int i = 0; i < inOriginator.handle.BuffHolderComp.SpawnedBuffList.get_Count(); i++) { BuffSkill buffSkill = inOriginator.handle.BuffHolderComp.SpawnedBuffList.get_Item(i); if (buffSkill != null && buffSkill.FindSkillFunc(64, out skillFunc)) { int skillFuncParam = buffSkill.GetSkillFuncParam(skillFunc, 0, false); if (skillFuncParam == 1) { num2 += buffSkill.GetSkillFuncParam(skillFunc, 4, false); } } } int num3 = (int)((long)num * (long)iParam / 10000L * (long)(10000 + num2) / 10000L); if (num3 > 0) { int num4 = inOriginator.handle.ValueComponent.actorHp; inOriginator.handle.ActorControl.ReviveHp(num3); num4 = inOriginator.handle.ValueComponent.actorHp - num4; HemophagiaEventResultInfo hemophagiaEventResultInfo = new HemophagiaEventResultInfo(inOriginator, num4); Singleton <GameEventSys> .instance.SendEvent <HemophagiaEventResultInfo>(GameEventDef.Event_Hemophagia, ref hemophagiaEventResultInfo); } } } return(true); }