Exemplo n.º 1
0
        private async Task <bool> HandleDeath()
        {
            if (Poi.Current.Type != PoiType.Death)
            {
                // We are not dead, continue
                return(false);
            }

            var returnStrategy = Behaviors.GetReturnStrategy();

            await Coroutine.Wait(3000, () => ClientGameUiRevive.ReviveState == ReviveState.Dead);

            var ticks = 0;

            while (ClientGameUiRevive.ReviveState == ReviveState.Dead && ticks++ < 5)
            {
                ClientGameUiRevive.Revive();
                await Coroutine.Wait(5000, () => ClientGameUiRevive.ReviveState != ReviveState.Dead);
            }

            await Coroutine.Wait(15000, () => ClientGameUiRevive.ReviveState == ReviveState.None);

            Poi.Clear("We live!, now to get back to where we were. Using return strategy -> " + returnStrategy);

            await returnStrategy.ReturnToZone();

            if (EnableFlightSettings.Instance.ReturnToLocationOnDeath)
            {
                await returnStrategy.ReturnToLocation();
            }

            return(false);
        }