Beispiel #1
0
        private void CompleteItemDrop(InventoryItemInstance itemInstance, InventoryItemModel itemModel, int quantity, ModalStatusCode status)
        {
            if (quantity == 0 || status != ModalStatusCode.Complete)
            {
                return;
            }

            GameState.Instance.PlayerRpgState.Inventory.RemoveItem(itemInstance, quantity);
            Transform playerT = WorldUtils.GetPlayerObject().transform;
            Vector3   dropPos = (playerT.position + (playerT.forward.normalized * 1.0f));

            RpgWorldUtils.DropItem(itemModel, quantity, dropPos);

            SignalPaint();
        }
Beispiel #2
0
        private void Update()
        {
            if (PlayerController == null)
            {
                PlayerController = RpgWorldUtils.GetPlayerController();
            }

            if (PlayerController == null)
            {
                return; //can't tether if there's nothing to tether to
            }
            switch (ActorController.CurrentAiState)
            {
            case ActorAiState.Idle:
            case ActorAiState.Wandering:
                //chase the player instead of remaining in either of these states
                if ((ActorController.transform.position - PlayerController.transform.position).magnitude > MinDistance && ActorController.Target == null)
                {
                    UpdateMovementTarget();
                    ActorController.EnterState(ActorAiState.ScriptedMoveTo);
                }
                break;

            case ActorAiState.Chasing:
                //break off the chase if too far away
                if ((ActorController.transform.position - PlayerController.transform.position).magnitude > MaxDistance)
                {
                    ActorController.Target = null;
                    UpdateMovementTarget();
                    ActorController.EnterState(ActorAiState.ScriptedMoveTo);
                }
                break;

            case ActorAiState.ScriptedMoveTo:
                //update movement target
                //return AI to normal if close enough to player
                UpdateMovementTarget();
                if ((ActorController.transform.position - PlayerController.transform.position).magnitude < FollowEndDistance)
                {
                    ActorController.EnterState(ActorController.BaseAiState);
                }
                break;
            }
        }