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); } }
/// 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); }); }