Ejemplo n.º 1
0
 public void Finish(GameState gameState)
 {
     Debug.Log("Finishing quest: " + this.questId);
     SetDone();
     gameState.reputation += reputationGain;
     foreach (KeyValuePair <string, int> pair in friendshipGains)
     {
         gameState.AddFriendship(pair.Key, pair.Value);
     }
 }
Ejemplo n.º 2
0
        /// Add additional functions to the Dialogue object, mostly for quest handling
        private void AddCustomFunctions()
        {
            // Check State
            dialogue.library.RegisterFunction("IsUnavailable", 1, delegate(Value[] parameters) {
                return(questManager.FindQuest(parameters[0].AsString).IsUnavailable());
            });
            dialogue.library.RegisterFunction("IsAvailable", 1, delegate(Value[] parameters) {
                return(questManager.FindQuest(parameters[0].AsString).IsAvailable());
            });
            dialogue.library.RegisterFunction("IsInProgress", 1, delegate(Value[] parameters) {
                return(questManager.FindQuest(parameters[0].AsString).IsInProgress());
            });
            dialogue.library.RegisterFunction("IsDone", 1, delegate(Value[] parameters) {
                return(questManager.FindQuest(parameters[0].AsString).IsDone());
            });
            dialogue.library.RegisterFunction("IsDisabled", 1, delegate(Value[] parameters) {
                return(questManager.FindQuest(parameters[0].AsString).IsDisabled());
            });

            // IsActive / IsInactive
            dialogue.library.RegisterFunction("IsActive", 1, delegate(Value[] parameters) {
                return(questManager.FindQuest(parameters[0].AsString).IsActive());
            });
            dialogue.library.RegisterFunction("IsInactive", 1, delegate(Value[] parameters) {
                return(questManager.FindQuest(parameters[0].AsString).IsInactive());
            });

            // Set State
            dialogue.library.RegisterFunction("SetUnavailable", 1, delegate(Value[] parameters) {
                questManager.FindQuest(parameters[0].AsString).SetUnavailable();
            });
            dialogue.library.RegisterFunction("SetAvailable", 1, delegate(Value[] parameters) {
                questManager.FindQuest(parameters[0].AsString).SetAvailable();
            });
            dialogue.library.RegisterFunction("SetInProgress", 1, delegate(Value[] parameters) {
                questManager.FindQuest(parameters[0].AsString).SetInProgress();
            });
            dialogue.library.RegisterFunction("SetDone", 1, delegate(Value[] parameters) {
                questManager.FindQuest(parameters[0].AsString).SetDone();
            });
            dialogue.library.RegisterFunction("SetDisabled", 1, delegate(Value[] parameters) {
                questManager.FindQuest(parameters[0].AsString).SetDisabled();
            });

            // Start/Finish Quests
            dialogue.library.RegisterFunction("StartQuest", 1, delegate(Value[] parameters) {
                questManager.StartQuest(questManager.FindQuest(parameters[0].AsString));
            });
            dialogue.library.RegisterFunction("FinishQuest", 1, delegate(Value[] parameters) {
                questManager.FinishQuest(questManager.FindQuest(parameters[0].AsString));
            });

            // Get reps
            dialogue.library.RegisterFunction("GetReputation", 0, delegate(Value[] parameters) {
                return(gameState.reputation);
            });
            dialogue.library.RegisterFunction("GetFriendship", 1, delegate(Value[] parameters) {
                return(gameState.GetFriendship(parameters[0].AsString));
            });

            // Set reps
            dialogue.library.RegisterFunction("SetReputation", 1, delegate(Value[] parameters) {
                gameState.reputation = (int)parameters[0].AsNumber;
            });
            dialogue.library.RegisterFunction("AddReputation", 1, delegate(Value[] parameters) {
                gameState.reputation += (int)parameters[0].AsNumber;
            });
            dialogue.library.RegisterFunction("SubtractReputation", 1, delegate(Value[] parameters) {
                gameState.reputation -= (int)parameters[0].AsNumber;
            });
            dialogue.library.RegisterFunction("SetFriendship", 2, delegate(Value[] parameters) {
                gameState.SetFriendship(parameters[0].AsString, (int)parameters[1].AsNumber);
            });
            dialogue.library.RegisterFunction("AddFriendship", 2, delegate(Value[] parameters) {
                gameState.AddFriendship(parameters[0].AsString, (int)parameters[1].AsNumber);
            });
            dialogue.library.RegisterFunction("SubtractFriendship", 2, delegate(Value[] parameters) {
                gameState.AddFriendship(parameters[0].AsString, -1 * (int)parameters[1].AsNumber);
            });

            // Inventory
            dialogue.library.RegisterFunction("GetInventory", 0, delegate(Value[] parameters) {
                return(inventoryManager.GetInventory());
            });
            dialogue.library.RegisterFunction("ClearInventory", 0, delegate(Value[] parameters) {
                inventoryManager.ClearInventory();
            });
            dialogue.library.RegisterFunction("DropItem", 0, delegate(Value[] parameters) {
                inventoryManager.DropItem();
            });

            // Misc
            dialogue.library.RegisterFunction("Random", 2, delegate(Value[] parameters) {
                return(random.Next((int)parameters[0].AsNumber, (int)parameters[1].AsNumber));
            });
            dialogue.library.RegisterFunction("Log", 1, delegate(Value[] parameters) {
                Debug.Log(parameters[0].AsString);
            });
            dialogue.library.RegisterFunction("CinematicMode", 0, delegate(Value[] parameters) {
                dialogueUI.cinematic_mode = true;
            });

            // LoadScene
            dialogue.library.RegisterFunction("LoadScene", 3, delegate(Value[] parameters)
            {
                Debug.LogFormat("LoadScene({0}, {1}, {2})", parameters[0].AsString, parameters[1].AsString,
                                parameters[2].AsString);
                sceneLoader.StartLoad(parameters[0].AsString, (float)parameters[1].AsNumber,
                                      (float)parameters[2].AsNumber);
            });
            dialogue.library.RegisterFunction("LoadScene", 4, delegate(Value[] parameters)
            {
                Debug.LogFormat("LoadScene({0}, {1}, {2}, {3})", parameters[0].AsString, parameters[1].AsString,
                                parameters[2].AsString, parameters[3].AsString);
                sceneLoader.StartLoad(parameters[0].AsString, (float)parameters[1].AsNumber,
                                      (float)parameters[2].AsNumber, (float)parameters[3].AsNumber);
            });
            dialogue.library.RegisterFunction("LoadChapter", 3, delegate(Value[] parameters)
            {
                Debug.LogFormat("LoadChapter({0}, {1}, {2})", parameters[0].AsString, parameters[1].AsString,
                                parameters[2].AsString);
                sceneLoader.StartLoad(parameters[0].AsString, (float)parameters[1].AsNumber,
                                      (float)parameters[2].AsNumber, loadNewChapter: true);
            });
            dialogue.library.RegisterFunction("LoadChapter", 4, delegate(Value[] parameters)
            {
                Debug.LogFormat("LoadChapter({0}, {1}, {2}, {3})", parameters[0].AsString, parameters[1].AsString,
                                parameters[2].AsString, parameters[3].AsString);
                sceneLoader.StartLoad(parameters[0].AsString, (float)parameters[1].AsNumber,
                                      (float)parameters[2].AsNumber, (float)parameters[3].AsNumber, loadNewChapter: true);
            });
        }