private static void SendProtectEvent(ref SSkillFuncContext inContext, int type, int changeValue) { if (((changeValue != 0) && (inContext.inTargetObj != 0)) && (inContext.inTargetObj.handle.BuffHolderComp != null)) { inContext.inTargetObj.handle.BuffHolderComp.protectRule.SendProtectEvent(type, changeValue); } }
private static void SkillFuncChangeSkillCDImpl(ref SSkillFuncContext inContext, int changeType, int slotMask, int value) { PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj) { SkillComponent skillControl = inTargetObj.get_handle().SkillControl; if (skillControl != null) { SkillSlot skillSlot = null; for (int i = 0; i < 10; i++) { if (((slotMask == 0 && i != 0 && i != 4 && i != 5 && i != 7) || (slotMask & 1 << i) > 0) && skillControl.TryGetSkillSlot((SkillSlotType)i, out skillSlot) && skillSlot != null) { if (changeType == 0) { skillSlot.ChangeSkillCD(value); } else { skillSlot.ChangeMaxCDRate(value); } } } } } }
public static bool OnSkillFuncProtect(ref SSkillFuncContext inContext) { if (inContext.inStage == ESkillFuncStage.Enter) { int skillFuncProtectValue = SkillFuncHurtDelegator.GetSkillFuncProtectValue(ref inContext); int skillFuncParam = inContext.GetSkillFuncParam(0, false); int skillFuncParam2 = inContext.GetSkillFuncParam(5, false); int skillFuncParam3 = inContext.GetSkillFuncParam(6, false); if (skillFuncParam == 1) { inContext.inBuffSkill.get_handle().CustomParams[0] += skillFuncProtectValue; SkillFuncHurtDelegator.SendProtectEvent(ref inContext, 0, skillFuncProtectValue); } else if (skillFuncParam == 2) { inContext.inBuffSkill.get_handle().CustomParams[1] += skillFuncProtectValue; SkillFuncHurtDelegator.SendProtectEvent(ref inContext, 1, skillFuncProtectValue); } else if (skillFuncParam == 3) { inContext.inBuffSkill.get_handle().CustomParams[2] += skillFuncProtectValue; SkillFuncHurtDelegator.SendProtectEvent(ref inContext, 2, skillFuncProtectValue); } else if (skillFuncParam == 4) { inContext.inBuffSkill.get_handle().CustomParams[3] += skillFuncProtectValue; SkillFuncHurtDelegator.SendProtectEvent(ref inContext, 3, skillFuncProtectValue); } inContext.inBuffSkill.get_handle().CustomParams[4] = skillFuncParam2; inContext.inBuffSkill.get_handle().CustomParams[5] = skillFuncParam3; inContext.inBuffSkill.get_handle().SlotType = inContext.inUseContext.SlotType; return(true); } return(false); }
public static bool OnSkillFuncAddMark(ref SSkillFuncContext inContext) { if (inContext.inStage == ESkillFuncStage.Enter) { PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj) { uint markType = 1u; if (inContext.inBuffSkill && inContext.inBuffSkill.get_handle().cfgData != null) { markType = (uint)inContext.inBuffSkill.get_handle().cfgData.bEffectType; } int skillFuncParam = inContext.GetSkillFuncParam(0, false); if (inContext.GetSkillFuncParam(1, false) == 0) { inTargetObj.get_handle().BuffHolderComp.markRule.AddBufferMark(inContext.inOriginator, skillFuncParam, markType, inContext.inUseContext); } else { inTargetObj.get_handle().BuffHolderComp.markRule.ClearBufferMark(inContext.inOriginator, skillFuncParam); } } return(true); } return(false); }
public static bool OnSkillFuncChangeMgcEffect(ref SSkillFuncContext inContext) { if (inContext.inStage == ESkillFuncStage.Enter) { int skillFuncParam = inContext.GetSkillFuncParam(0, false); int num2 = inContext.GetSkillFuncParam(2, false); int num3 = inContext.GetSkillFuncParam(4, false); ValueDataInfo info1 = inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_PHYATKPT]; info1.totalEftRatioByMgc += num2; ValueDataInfo info2 = inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP]; info2.totalEftRatioByMgc += num3; HeroWrapper actorControl = inContext.inTargetObj.handle.ActorControl as HeroWrapper; if (actorControl != null) { actorControl.OnApChangeByMgcEffect(); inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCATKPT].ChangeEvent -= new ValueChangeDelegate(actorControl.OnApChangeByMgcEffect); inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCATKPT].ChangeEvent += new ValueChangeDelegate(actorControl.OnApChangeByMgcEffect); } } else if (inContext.inStage == ESkillFuncStage.Leave) { int num4 = inContext.GetSkillFuncParam(2, false); int num5 = inContext.GetSkillFuncParam(4, false); ValueDataInfo info3 = inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_PHYATKPT]; info3.totalEftRatioByMgc -= num4; ValueDataInfo info4 = inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP]; info4.totalEftRatioByMgc -= num5; HeroWrapper wrapper2 = inContext.inTargetObj.handle.ActorControl as HeroWrapper; if (wrapper2 != null) { inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCATKPT].ChangeEvent -= new ValueChangeDelegate(wrapper2.OnApChangeByMgcEffect); } } return(true); }
public static bool OnSkillFuncChangeMgcEffect(ref SSkillFuncContext inContext) { if (inContext.inStage == ESkillFuncStage.Enter) { int skillFuncParam = inContext.GetSkillFuncParam(0, false); int skillFuncParam2 = inContext.GetSkillFuncParam(2, false); int skillFuncParam3 = inContext.GetSkillFuncParam(4, false); inContext.inTargetObj.get_handle().ValueComponent.mActorValue[1].totalEftRatioByMgc += skillFuncParam2; inContext.inTargetObj.get_handle().ValueComponent.mActorValue[5].totalEftRatioByMgc += skillFuncParam3; if (inContext.inTargetObj && inContext.inTargetObj.get_handle().ValueComponent != null) { ValueProperty valueComponent = inContext.inTargetObj.get_handle().ValueComponent; valueComponent.OnValuePropertyChangeByMgcEffect(); inContext.inTargetObj.get_handle().ValueComponent.mActorValue[2].ChangeEvent -= new ValueChangeDelegate(valueComponent.OnValuePropertyChangeByMgcEffect); inContext.inTargetObj.get_handle().ValueComponent.mActorValue[2].ChangeEvent += new ValueChangeDelegate(valueComponent.OnValuePropertyChangeByMgcEffect); } } else if (inContext.inStage == ESkillFuncStage.Leave) { int skillFuncParam4 = inContext.GetSkillFuncParam(2, false); int skillFuncParam5 = inContext.GetSkillFuncParam(4, false); inContext.inTargetObj.get_handle().ValueComponent.mActorValue[1].totalEftRatioByMgc -= skillFuncParam4; inContext.inTargetObj.get_handle().ValueComponent.mActorValue[5].totalEftRatioByMgc -= skillFuncParam5; if (inContext.inTargetObj && inContext.inTargetObj.get_handle().ValueComponent != null) { ValueProperty valueComponent2 = inContext.inTargetObj.get_handle().ValueComponent; inContext.inTargetObj.get_handle().ValueComponent.mActorValue[2].ChangeEvent -= new ValueChangeDelegate(valueComponent2.OnValuePropertyChangeByMgcEffect); } } return(true); }
private static void SkillFuncChangeSkillCDImpl(ref SSkillFuncContext inContext, int changeType, int slotMask, int value) { PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj != 0) { SkillComponent skillControl = inTargetObj.handle.SkillControl; if (skillControl != null) { SkillSlot slot = null; for (int i = 0; i < 7; i++) { if (((((slotMask == 0) && (i != 0)) && ((i != 4) && (i != 5))) || ((slotMask & (((int)1) << i)) > 0)) && (skillControl.TryGetSkillSlot((SkillSlotType)i, out slot) && (slot != null))) { if (changeType == 0) { slot.ChangeSkillCD(value); } else { slot.ChangeMaxCDRate(value); } } } } } }
public static bool OnSkillFuncDisableSkill(ref SSkillFuncContext inContext) { PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj != 0) { if (inContext.inStage == ESkillFuncStage.Enter) { for (int i = 0; i < 7; i++) { if (inContext.GetSkillFuncParam(i, false) == 1) { inTargetObj.handle.ActorControl.AddDisableSkillFlag((SkillSlotType)i); } } } else if (inContext.inStage == ESkillFuncStage.Leave) { for (int j = 0; j < 7; j++) { if (inContext.GetSkillFuncParam(j, false) == 1) { inTargetObj.handle.ActorControl.RmvDisableSkillFlag((SkillSlotType)j); } } } } return(true); }
public static bool OnSkillFuncImmuneNegativeSkillEffect(ref SSkillFuncContext inContext) { if (inContext.inStage == ESkillFuncStage.Enter) { PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj) { inTargetObj.get_handle().ActorControl.AddNoAbilityFlag(ObjAbilityType.ObjAbility_ImmuneNegative); if (inContext.GetSkillFuncParam(0, false) == 1) { int num = 2; num += 4; inTargetObj.get_handle().BuffHolderComp.ClearEffectTypeBuff(num); } } } else if (inContext.inStage == ESkillFuncStage.Leave) { PoolObjHandle <ActorRoot> inTargetObj2 = inContext.inTargetObj; if (inTargetObj2) { inTargetObj2.get_handle().ActorControl.RmvNoAbilityFlag(ObjAbilityType.ObjAbility_ImmuneNegative); } } return(true); }
public static bool OnSkillFuncIgnoreRVO(ref SSkillFuncContext inContext) { PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj != 0) { RVOController component = null; if (inContext.inStage == ESkillFuncStage.Enter) { component = inTargetObj.handle.gameObject.GetComponent <RVOController>(); if (component != null) { component.enabled = false; } } else if (inContext.inStage == ESkillFuncStage.Leave) { component = inTargetObj.handle.gameObject.GetComponent <RVOController>(); if (component != null) { component.enabled = true; } } } return(true); }
public static bool OnSkillFuncProtect(ref SSkillFuncContext inContext) { if (inContext.inStage != ESkillFuncStage.Enter) { return(false); } int skillFuncProtectValue = GetSkillFuncProtectValue(ref inContext); switch (inContext.GetSkillFuncParam(0, false)) { case 1: inContext.inBuffSkill.handle.CustomParams[0] += skillFuncProtectValue; SendProtectEvent(ref inContext, 0, skillFuncProtectValue); break; case 2: inContext.inBuffSkill.handle.CustomParams[1] += skillFuncProtectValue; SendProtectEvent(ref inContext, 1, skillFuncProtectValue); break; case 3: inContext.inBuffSkill.handle.CustomParams[2] += skillFuncProtectValue; SendProtectEvent(ref inContext, 2, skillFuncProtectValue); break; } return(true); }
public static bool OnSkillFuncInvisible(ref SSkillFuncContext inContext) { PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj != 0) { if (inContext.inStage == ESkillFuncStage.Enter) { inTargetObj.handle.HorizonMarker.AddHideMark(COM_PLAYERCAMP.COM_PLAYERCAMP_COUNT, HorizonConfig.HideMark.Skill, 1); inTargetObj.handle.HorizonMarker.SetTranslucentMark(HorizonConfig.HideMark.Skill, true); } else if (inContext.inStage == ESkillFuncStage.Leave) { COM_PLAYERCAMP[] othersCmp = BattleLogic.GetOthersCmp(inTargetObj.handle.TheActorMeta.ActorCamp); for (int i = 0; i < othersCmp.Length; i++) { if (inTargetObj.handle.HorizonMarker.HasHideMark(othersCmp[i], HorizonConfig.HideMark.Skill)) { inTargetObj.handle.HorizonMarker.AddHideMark(othersCmp[i], HorizonConfig.HideMark.Skill, -1); } } inTargetObj.handle.HorizonMarker.SetTranslucentMark(HorizonConfig.HideMark.Skill, false); } } return(true); }
private static int GetOverlayFadeRate(ref SSkillFuncContext inContext) { PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; int num = 10000 - inContext.inBuffSkill.get_handle().cfgData.iOverlayFadeRate; if (num == 10000) { return(10000); } if (num < 10000 && num >= 0 && inTargetObj && inTargetObj.get_handle().BuffHolderComp != null) { int skillID = inContext.inBuffSkill.get_handle().SkillID; if (inContext.inBuffSkill && inContext.inBuffSkill.get_handle().bFirstEffect) { inContext.inBuffSkill.get_handle().bFirstEffect = false; return(10000); } int num2 = inTargetObj.get_handle().BuffHolderComp.FindBuffCount(skillID); if (num2 > 1) { return(num); } } return(10000); }
private static void OnSkillFuncChangeValueProperty(ref SSkillFuncContext inContext, RES_FUNCEFT_TYPE _defType, bool _bAddValue) { PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj != 0) { int num = 0; int changeValueProperty = GetChangeValueProperty((ActorRoot)inTargetObj, ref inContext); int skillFuncParam = inContext.GetSkillFuncParam(0, false); if (inContext.inStage != ESkillFuncStage.Leave) { if (_bAddValue) { if (skillFuncParam == 0) { num = ((int)inTargetObj.handle.ValueComponent.mActorValue[_defType]) + changeValueProperty; } else { num = (int)(inTargetObj.handle.ValueComponent.mActorValue[_defType] << changeValueProperty); } ResDT_IntParamArrayNode node1 = inContext.LocalParams[0]; node1.iParam += changeValueProperty; } else { if (skillFuncParam == 0) { num = ((int)inTargetObj.handle.ValueComponent.mActorValue[_defType]) - changeValueProperty; } else { num = (int)(inTargetObj.handle.ValueComponent.mActorValue[_defType] >> changeValueProperty); } ResDT_IntParamArrayNode node2 = inContext.LocalParams[0]; node2.iParam += changeValueProperty; } } else if (_bAddValue) { if (skillFuncParam == 0) { num = ((int)inTargetObj.handle.ValueComponent.mActorValue[_defType]) - inContext.LocalParams[0].iParam; } else { num = (int)(inTargetObj.handle.ValueComponent.mActorValue[_defType] >> inContext.LocalParams[0].iParam); } } else if (skillFuncParam == 0) { num = ((int)inTargetObj.handle.ValueComponent.mActorValue[_defType]) + inContext.LocalParams[0].iParam; } else { num = (int)(inTargetObj.handle.ValueComponent.mActorValue[_defType] << inContext.LocalParams[0].iParam); } } }
public override void OnUse() { base.OnUse(); this.SkillFuncType = 0; this.m_context = default(SSkillFuncContext); this.m_bSucceeded = false; this.bInit = false; }
private static int GetEffectFadeRate(ref SSkillFuncContext inContext) { int iNextDeltaFadeRate = inContext.inBuffSkill.handle.cfgData.iNextDeltaFadeRate; int iNextLowFadeRate = inContext.inBuffSkill.handle.cfgData.iNextLowFadeRate; int num3 = 0x2710 - ((inContext.inEffectCount - 1) * iNextDeltaFadeRate); return((num3 >= iNextLowFadeRate) ? num3 : iNextLowFadeRate); }
public override void OnUse() { base.OnUse(); this.SkillFuncType = RES_SKILLFUNC_TYPE.RES_SKILLFUNC_TYPE_PHYSHURT; this.m_context = new SSkillFuncContext(); this.m_bSucceeded = false; this.bInit = false; }
private static int GetEffectFadeRate(ref SSkillFuncContext inContext) { int iNextDeltaFadeRate = inContext.inBuffSkill.get_handle().cfgData.iNextDeltaFadeRate; int iNextLowFadeRate = inContext.inBuffSkill.get_handle().cfgData.iNextLowFadeRate; int num = 10000 - (inContext.inEffectCount - 1) * iNextDeltaFadeRate; return((num >= iNextLowFadeRate) ? num : iNextLowFadeRate); }
private static void SendProtectEvent(ref SSkillFuncContext inContext, int type, int changeValue) { if (changeValue != 0 && inContext.inTargetObj && inContext.inTargetObj.get_handle().BuffHolderComp != null) { BuffProtectRule protectRule = inContext.inTargetObj.get_handle().BuffHolderComp.protectRule; protectRule.SendProtectEvent(type, changeValue); } }
public static bool OnSkillFuncHpCondition(ref SSkillFuncContext inContext) { int num = 0; int skillFuncParam = inContext.GetSkillFuncParam(1, false); if ((skillFuncParam < 0) || (skillFuncParam >= 0x24)) { return(false); } RES_FUNCEFT_TYPE res_funceft_type = (RES_FUNCEFT_TYPE)skillFuncParam; PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj == 0) { return(false); } int num3 = inContext.GetSkillFuncParam(2, false); if (inContext.inStage != ESkillFuncStage.Leave) { int actorHp = inTargetObj.handle.ValueComponent.actorHp; int totalValue = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP].totalValue; int num6 = 0x2710 - ((actorHp * 0x2710) / totalValue); int num7 = inContext.GetSkillFuncParam(3, false); int num8 = inContext.GetSkillFuncParam(0, false); if (num8 == 0) { return(false); } int num9 = (num6 * num7) / num8; int iParam = inContext.LocalParams[0].iParam; if (num3 == 1) { num = (int)(inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] >> iParam); num = (int)(inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] << num9); } else { num = ((int)inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type]) - iParam; num = ((int)inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type]) + num9; } inContext.LocalParams[0].iParam = num9; } else if (inContext.inStage == ESkillFuncStage.Leave) { int num11 = inContext.LocalParams[0].iParam; if (num3 == 1) { num = (int)(inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] >> num11); } else { num = ((int)inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type]) - num11; } } return(true); }
public static bool OnSkillFuncAddEp(ref SSkillFuncContext inContext) { if ((inContext.inTargetObj != 0) && inContext.inTargetObj.handle.ValueComponent.IsEnergyType(ENERGY_TYPE.Magic)) { OnSKillFuncChangeEpValue(ref inContext, true); return(true); } return(false); }
private static void OnSkillFuncChangeValueProperty(ref SSkillFuncContext inContext, RES_FUNCEFT_TYPE _defType, bool _bAddValue) { PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj != 0) { ValueDataInfo info; int changeValueProperty = GetChangeValueProperty((ActorRoot)inTargetObj, ref inContext); int skillFuncParam = inContext.GetSkillFuncParam(0, false); if (inContext.inStage != ESkillFuncStage.Leave) { if (_bAddValue) { if (skillFuncParam == 0) { info = inTargetObj.handle.ValueComponent.mActorValue[_defType] + changeValueProperty; } else { info = inTargetObj.handle.ValueComponent.mActorValue[_defType] << changeValueProperty; } inContext.LocalParams[0].iParam += changeValueProperty; } else { if (skillFuncParam == 0) { info = inTargetObj.handle.ValueComponent.mActorValue[_defType] - changeValueProperty; } else { info = inTargetObj.handle.ValueComponent.mActorValue[_defType] >> changeValueProperty; } inContext.LocalParams[0].iParam += changeValueProperty; } } else if (_bAddValue) { if (skillFuncParam == 0) { info = inTargetObj.handle.ValueComponent.mActorValue[_defType] - inContext.LocalParams[0].iParam; } else { info = inTargetObj.handle.ValueComponent.mActorValue[_defType] >> inContext.LocalParams[0].iParam; } } else if (skillFuncParam == 0) { info = inTargetObj.handle.ValueComponent.mActorValue[_defType] + inContext.LocalParams[0].iParam; } else { info = inTargetObj.handle.ValueComponent.mActorValue[_defType] << inContext.LocalParams[0].iParam; } } }
public static bool OnSkillFuncChangeHeroFuryEp(ref SSkillFuncContext inContext) { if (inContext.inTargetObj && inContext.inTargetObj.get_handle().ValueComponent.IsEnergyType(EnergyType.FuryResource)) { SkillFuncPropertyDelegator.OnSKillFuncChangeEpValue(ref inContext, true); return(true); } return(false); }
public static bool OnSkillFuncHpCondition(ref SSkillFuncContext inContext) { ValueDataInfo info; int skillFuncParam = inContext.GetSkillFuncParam(1, false); if ((skillFuncParam < 0) || (skillFuncParam >= 0x24)) { return(false); } RES_FUNCEFT_TYPE res_funceft_type = (RES_FUNCEFT_TYPE)skillFuncParam; PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (inTargetObj == 0) { return(false); } int num2 = inContext.GetSkillFuncParam(2, false); if (inContext.inStage != ESkillFuncStage.Leave) { int actorHp = inTargetObj.handle.ValueComponent.actorHp; int totalValue = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP].totalValue; int num5 = 0x2710 - ((actorHp * 0x2710) / totalValue); int num6 = inContext.GetSkillFuncParam(3, true); int num7 = inContext.GetSkillFuncParam(0, false); if (num7 == 0) { return(false); } int num8 = (num5 * num6) / num7; int iParam = inContext.LocalParams[0].iParam; if (num2 == 1) { info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] >> iParam; info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] << num8; } else { info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] - iParam; info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] + num8; } inContext.LocalParams[0].iParam = num8; } else if (inContext.inStage == ESkillFuncStage.Leave) { int num10 = inContext.LocalParams[0].iParam; if (num2 == 1) { info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] >> num10; } else { info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] - num10; } } return(true); }
public static bool OnSkillFuncHpCondition(ref SSkillFuncContext inContext) { int skillFuncParam = inContext.GetSkillFuncParam(1, false); if (skillFuncParam < 0 || skillFuncParam >= 37) { return(false); } RES_FUNCEFT_TYPE key = (RES_FUNCEFT_TYPE)skillFuncParam; PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj; if (!inTargetObj) { return(false); } int skillFuncParam2 = inContext.GetSkillFuncParam(2, false); if (inContext.inStage != ESkillFuncStage.Leave) { int actorHp = inTargetObj.handle.ValueComponent.actorHp; int totalValue = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP].totalValue; int num = 10000 - actorHp * 10000 / totalValue; int skillFuncParam3 = inContext.GetSkillFuncParam(3, true); int skillFuncParam4 = inContext.GetSkillFuncParam(0, false); if (skillFuncParam4 == 0) { return(false); } int num2 = num * skillFuncParam3 / skillFuncParam4; int iParam = inContext.LocalParams[0].iParam; if (skillFuncParam2 == 1) { ValueDataInfo valueDataInfo = inTargetObj.handle.ValueComponent.mActorValue[key] >> iParam; valueDataInfo = inTargetObj.handle.ValueComponent.mActorValue[key] << num2; } else { ValueDataInfo valueDataInfo2 = inTargetObj.handle.ValueComponent.mActorValue[key] - iParam; valueDataInfo2 = inTargetObj.handle.ValueComponent.mActorValue[key] + num2; } inContext.LocalParams[0].iParam = num2; } else if (inContext.inStage == ESkillFuncStage.Leave) { int iParam2 = inContext.LocalParams[0].iParam; if (skillFuncParam2 == 1) { ValueDataInfo valueDataInfo3 = inTargetObj.handle.ValueComponent.mActorValue[key] >> iParam2; } else { ValueDataInfo valueDataInfo4 = inTargetObj.handle.ValueComponent.mActorValue[key] - iParam2; } } return(true); }
public static bool OnSkillFuncControlExtraEffect(ref SSkillFuncContext inContext) { if (inContext.inStage == ESkillFuncStage.Enter) { int skillFuncParam = inContext.GetSkillFuncParam(0, false); inContext.inBuffSkill.handle.CustomParams[0] = skillFuncParam; return(true); } return(true); }
protected override void CopyData(BaseEvent src) { base.CopyData(src); SkillFuncDuration duration = src as SkillFuncDuration; this.SkillFuncType = duration.SkillFuncType; this.m_context = duration.m_context; this.m_bSucceeded = duration.m_bSucceeded; this.bInit = duration.bInit; }
private static int GetChangeValueProperty(ActorRoot targetActor, ref SSkillFuncContext inContext) { int num = inContext.GetSkillFuncParam(1, true); int skillFuncParam = inContext.GetSkillFuncParam(2, true); int skillFuncParam2 = inContext.GetSkillFuncParam(3, true); ESkillFuncMode skillFuncParam3 = (ESkillFuncMode)inContext.GetSkillFuncParam(4, false); int skillFuncParam4 = inContext.GetSkillFuncParam(5, true); num += skillFuncParam * targetActor.ValueComponent.mActorValue[1].totalValue / 10000 + skillFuncParam2 * targetActor.ValueComponent.mActorValue[2].totalValue / 10000; if (skillFuncParam3 == ESkillFuncMode.SkillFuncMode_Constant) { return(num); } int num2 = (int)inContext.inSkillFunc.dwSkillFuncFreq; if (skillFuncParam4 <= 0) { DebugHelper.Assert(false, "ESkillFuncMode LastTime error!"); return(num); } if (num2 <= 0) { num2 = 30; } int num3 = skillFuncParam4 / num2; if (num3 <= 0) { return(num); } if (skillFuncParam3 == ESkillFuncMode.SkillFuncMode_Fade) { if (inContext.inDoCount == 1) { return(num); } if (inContext.inDoCount - 1 <= num3) { return(-num / num3); } return(0); } else { if (inContext.inDoCount == 1) { return(0); } if (inContext.inDoCount - 1 <= num3) { return(num / num3); } return(0); } }
public static bool OnSkillFuncDecHurtRate(ref SSkillFuncContext inContext) { if (inContext.inStage == ESkillFuncStage.Enter) { int skillFuncParam = inContext.GetSkillFuncParam(0, false); int num2 = inContext.GetSkillFuncParam(4, false); inContext.inBuffSkill.handle.CustomParams[0] = skillFuncParam; inContext.inBuffSkill.handle.CustomParams[4] = num2; } return(true); }
public static bool OnSkillFuncImmuneHurt(ref SSkillFuncContext inContext) { if ((inContext.inStage == ESkillFuncStage.Enter) && (inContext.inTargetObj != 0)) { int skillFuncParam = inContext.GetSkillFuncParam(1, false); int num2 = inContext.GetSkillFuncParam(2, false); inContext.inBuffSkill.handle.CustomParams[3] = skillFuncParam; inContext.inBuffSkill.handle.CustomParams[4] = num2; } return(true); }