예제 #1
0
 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);
     }
 }
예제 #2
0
 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);
 }
예제 #3
0
        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);
            }
        }