protected override void RemoveModifierOnIndex(ActorModifier modifier, int index) { if (this._abilityIdentity.isAuthority) { RecordInvokeEntryContext context; this.StartRecordInvokeEntry(0, modifier.instancedModifierID, 0, 0xff, out context); Offset <MetaArg_ModifierChange> offset = MetaArg_ModifierChange.CreateMetaArg_ModifierChange(context.builder, ModifierAction.Removed, (byte)modifier.config.localID); context.Finish <MetaArg_ModifierChange>(offset, AbilityInvokeArgument.MetaArg_ModifierChange); base.RemoveModifierOnIndex(modifier, index); } }
protected override ActorModifier AddModifierOnIndex(ActorAbility instancedAbility, ConfigAbilityModifier modifierConfig, int index) { if (this._abilityIdentity.isAuthority) { RecordInvokeEntryContext context; this.StartRecordInvokeEntry(instancedAbility.instancedAbilityID, index + 1, instancedAbility.caster.runtimeID, 0xff, out context); Offset <MetaArg_ModifierChange> offset = MetaArg_ModifierChange.CreateMetaArg_ModifierChange(context.builder, ModifierAction.Added, (byte)modifierConfig.localID); context.Finish <MetaArg_ModifierChange>(offset, AbilityInvokeArgument.MetaArg_ModifierChange); return(base.AddModifierOnIndex(instancedAbility, modifierConfig, index)); } return(null); }
private void MetaHandleModifierChange(AbilityInvokeEntry table) { _metaModifierChange = table.GetArgument <MetaArg_ModifierChange>(_metaModifierChange); if (((int)_metaModifierChange.Action) == 0) { ActorAbility instancedAbility = null; ConfigAbilityModifier modifierConfig = null; int index = table.InstancedModifierID - 1; BaseAbilityActor actor = (table.Target != 0) ? Singleton <EventManager> .Instance.GetActor <BaseAbilityActor>(table.Target) : base._owner; instancedAbility = ((MPActorAbilityPlugin)actor.abilityPlugin).GetInstancedAbilityByID(table.InstancedAbilityID); modifierConfig = instancedAbility.config.ModifierIDMap[_metaModifierChange.ModifierLocalID]; base.AddModifierOnIndex(instancedAbility, modifierConfig, index); } else { ActorModifier instancedModifierByID = this.GetInstancedModifierByID(table.InstancedModifierID); int num2 = table.InstancedModifierID - 1; base.RemoveModifierOnIndex(instancedModifierByID, num2); } }