private void RecvCore() { if (base._state == AbilityEvadeMixin.State.Evading) { base._evadeTimer.Core(1f); if (base._evadeTimer.isTimeUp) { if (base.selfIdentity.isAuthority) { if (this._recvStates[base.selfIdentity.authorityPeerID] == PeerReceiveState.Started) { this._recvStates[base.selfIdentity.authorityPeerID] = PeerReceiveState.Failed; this.OnAuthorityPeerEvadeStateChanged(); } } else { RecordInvokeEntryContext context; base.StartRecordMixinInvokeEntry(out context, 0); Offset <MixinArg_Evade> offset = MixinArg_Evade.CreateMixinArg_Evade(context.builder, EvadeAction.FailEvade); context.Finish <MixinArg_Evade>(offset, AbilityInvokeArgument.MixinArg_Evade); } base._evadeTimer.Reset(false); base._dummyActor.Kill(); base.actor.RemoveAbilityState(AbilityState.BlockAnimEventAttack); base.entity.SetCountedIsGhost(false); base._state = AbilityEvadeMixin.State.Idle; } } }
public override void HandleMixinInvokeEntry(AbilityInvokeEntry invokeEntry, int fromPeerID) { this._mixinArg = invokeEntry.GetArgument <MixinArg_Evade>(this._mixinArg); if (this._mixinArg.Action == EvadeAction.StartEvade) { Singleton <EventManager> .Instance.FireEvent(new EvtEvadeStart(base.actor.runtimeID), MPEventDispatchMode.Normal); if (base._state == AbilityEvadeMixin.State.Idle) { base.actor.AddAbilityState(AbilityState.BlockAnimEventAttack, true); base.entity.SetCountedIsGhost(true); } base._evadeTimer.Reset(true); base._extendedBlockAttackTimer.Reset(true); base._state = AbilityEvadeMixin.State.Evading; } else if (this._mixinArg.Action == EvadeAction.SuccessEvade) { base._state = AbilityEvadeMixin.State.EvadeSuccessed; base._extendedBlockAttackTimer.Reset(true); } else if (this._mixinArg.Action == EvadeAction.FailEvade) { base._evadeTimer.Reset(false); base.actor.RemoveAbilityState(AbilityState.BlockAnimEventAttack); base.entity.SetCountedIsGhost(false); base._state = AbilityEvadeMixin.State.Idle; } }
public override void OnAbilityTriggered(EvtAbilityStart evt) { if (base.selfIdentity.isAuthority) { RecordInvokeEntryContext context; base.OnAbilityTriggered(evt); base.StartRecordMixinInvokeEntry(out context, 0); Offset <MixinArg_Evade> offset = MixinArg_Evade.CreateMixinArg_Evade(context.builder, EvadeAction.StartEvade); context.Finish <MixinArg_Evade>(offset, AbilityInvokeArgument.MixinArg_Evade); } }
protected override void EvadeFail() { if (base.selfIdentity.isAuthority) { RecordInvokeEntryContext context; base.StartRecordMixinInvokeEntry(out context, 0); Offset <MixinArg_Evade> offset = MixinArg_Evade.CreateMixinArg_Evade(context.builder, EvadeAction.FailEvade); context.Finish <MixinArg_Evade>(offset, AbilityInvokeArgument.MixinArg_Evade); base.EvadeFail(); } }
protected override bool OnEvadeSuccess(EvtEvadeSuccess evt) { if (base.selfIdentity.isAuthority) { RecordInvokeEntryContext context; base.StartRecordMixinInvokeEntry(out context, 0); Offset <MixinArg_Evade> offset = MixinArg_Evade.CreateMixinArg_Evade(context.builder, EvadeAction.SuccessEvade); context.Finish <MixinArg_Evade>(offset, AbilityInvokeArgument.MixinArg_Evade); Singleton <MPEventManager> .Instance.MarkEventReplicate(evt); return(base.OnEvadeSuccess(evt)); } return(false); }
public override void OnAbilityTriggered(EvtAbilityStart evt) { if (base.selfIdentity.isAuthority) { RecordInvokeEntryContext context; this.RecvStart(); base.StartRecordMixinInvokeEntry(out context, 0); Offset <MixinArg_Evade> offset = MixinArg_Evade.CreateMixinArg_Evade(context.builder, EvadeAction.StartEvade); context.Finish <MixinArg_Evade>(offset, AbilityInvokeArgument.MixinArg_Evade); for (int i = 1; i < this._recvStates.Length; i++) { this._recvStates[i] = PeerReceiveState.Started; } this._firstSuccess = null; } }
public override void HandleMixinInvokeEntry(AbilityInvokeEntry invokeEntry, int fromPeerID) { if (base.selfIdentity.isAuthority) { this._mixinArg = invokeEntry.GetArgument <MixinArg_Evade>(this._mixinArg); if ((this._mixinArg.Action == EvadeAction.FailEvade) && (this._recvStates[fromPeerID] == PeerReceiveState.Started)) { this._recvStates[fromPeerID] = PeerReceiveState.Failed; this.OnAuthorityPeerEvadeStateChanged(); } } else { this._mixinArg = invokeEntry.GetArgument <MixinArg_Evade>(this._mixinArg); if (this._mixinArg.Action == EvadeAction.StartEvade) { this.RecvStart(); } } }
public MPAbilityEvadeMixin_RemoteRecveive(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config) : base(instancedAbility, instancedModifier, config) { this._mixinArg = new MixinArg_Evade(); this._recvStates = new PeerReceiveState[Singleton <MPManager> .Instance.peer.totalPeerCount + 1]; }
public MPAbilityEvadeMixin_RemoteNoRecveive(ActorAbility instancedAbility, ActorModifier instancedModifier, ConfigAbilityMixin config) : base(instancedAbility, instancedModifier, config) { this._mixinArg = new MixinArg_Evade(); }