public static void SetInteger(NWN2ScriptVarTable variables, string name, int value) { try { variables.GetVariable(name).ValueInt = value; variables.GetVariable(name).VariableType = NWN2ScriptVariableType.Int; } catch { NWN2ScriptVariable var = new NWN2ScriptVariable(name, value); var.VariableType = NWN2ScriptVariableType.Int; variables.Add(var); } }
public static void SetFloat(NWN2ScriptVarTable variables, string name, float value) { try { variables.GetVariable(name).ValueFloat = value; variables.GetVariable(name).VariableType = NWN2ScriptVariableType.Float; } catch { NWN2ScriptVariable var = new NWN2ScriptVariable(name, value); var.VariableType = NWN2ScriptVariableType.Float; variables.Add(var); } }
/// <summary> /// Creates a conversation that contains a conflict (i.e. the actor will turn hostile) /// </summary> /// <param name="questName">The name of the quset</param> /// <param name="gender">The gender which will be used in the quest</param> /// <param name="lang">The spoken (real world) language</param> /// <returns>The conversation</returns> private NWN2GameConversation conflictFixer(string questName, BWLanguages.Gender gender, BWLanguages.BWLanguage lang) { // I set the villian to drop the needed loot addInv(); NWN2GameConversation cConversation = null; /* If the villian does not talk to the player, but just attacks, then we don't need to any of the following */ if (!villianTalk) { ushort hostile = 0; foreach (NWN2Faction fact in module.FactionData.Factions) { if (fact.Name == "Hostile") { hostile = (ushort)fact.ID; debug("Value for hostile: " + hostile.ToString()); break; } } if (actor.boolInstance) { NWN2CreatureInstance insActor = (NWN2CreatureInstance)actor.instance; insActor.FactionID = hostile; } else { NWN2CreatureBlueprint bluActor = (NWN2CreatureBlueprint)actor.blueprint; bluActor.FactionID = hostile; } } else { NWN2GameScript killActor = getAdvanceJournal(); questName = questNamePrep(questName); NWN2ScriptVarTable varTable; NWN2CreatureBlueprint creatureBlue = null; NWN2CreatureInstance creatureInst = null; if (actor.boolInstance) { creatureInst = (NWN2CreatureInstance)actor.instance; varTable = creatureInst.Variables; } else { creatureBlue = (NWN2CreatureBlueprint)actor.blueprint; varTable = creatureBlue.Variables; } if (varTable == null) { varTable = new NWN2ScriptVarTable(); } // I remove any old duplicates LinkedList<string> toRemove = new LinkedList<string>(); toRemove.AddLast("DeathScript"); varTable = getAdvanceJournalVar(varTable, questName, questId, xp, toRemove); var deathScript = new NWN2ScriptVariable("DeathScript", "ga_advance_journal"); varTable.Add(deathScript); if (creatureInst != null) { creatureInst.Variables = varTable; } else if (creatureBlue != null) { creatureBlue.Variables = varTable; } cConversation = conversationFixer(questName, gender, lang); } return cConversation; }
private void condAdvance(Actor trigger, NWN2ScriptVarTable varTable, string questName, int questId, int xp, string script, string message) { LinkedList<String> toRemove = new LinkedList<string>(); toRemove.AddLast("negate"); toRemove.AddLast("condition"); toRemove.AddLast("script"); toRemove.AddLast("message"); varTable = getAdvanceJournalVar(varTable, questName, questId, xp, toRemove); string value = ""; if (preReq == EnumTypes.prereq.SimplePrereq || preReq == EnumTypes.prereq.CastSpecificPrereq) { int questValue = preReqNode.questId; if (questValue == 0) questValue = 1; value = questValue.ToString(); } NWN2GameScript sayString = module.Scripts["gtr_conditional_run_script"]; if (sayString == null) { sayString = new NWN2GameScript("gtr_conditional_run_script", module.Repository.DirectoryName, module.Repository); sayString.Data = Properties.Resources.gtr_conditional_run_script; sayString.OEISerialize(); module.Scripts.Add(sayString); } if (preReq == EnumTypes.prereq.SimplePrereq) { value = "<" + value; NWN2ScriptVariable negate = new NWN2ScriptVariable("negate", 1); varTable.Add(negate); } NWN2ScriptVariable compare1 = new NWN2ScriptVariable("condition", value); NWN2ScriptVariable scriptVar = new NWN2ScriptVariable("script", script); if (message != "") { NWN2ScriptVariable messageVar = new NWN2ScriptVariable("message", message); varTable.Add(messageVar); } varTable.Add(compare1); varTable.Add(scriptVar); trigger.Var = varTable; if (trigger.boolInstance) { ((NWN2TriggerInstance)trigger.instance).OnEnter = sayString.Resource; } else { ((NWN2TriggerBlueprint)trigger.blueprint).OnEnter = sayString.Resource; } }
private static NWN2ScriptVarTable getAdvanceJournalVar(NWN2ScriptVarTable varTable, string questName, int questId, int xp, LinkedList<string> toRemove) { toRemove.AddLast("XP"); toRemove.AddLast("JournalUpdate"); toRemove.AddLast("nextState"); removeDuplicates(varTable, toRemove); var XP = new NWN2ScriptVariable("XP", xp); var journalCategory = new NWN2ScriptVariable("JournalUpdate", "Q_" + questName); int state = (questId == 0) ? 1 : questId; var journalEntry = new NWN2ScriptVariable("nextState", state); varTable.Add(XP); varTable.Add(journalCategory); varTable.Add(journalEntry); return varTable; }
/// <summary> /// The utility method which takes care of settig the trigger correctly /// </summary> /// <param name="actor">The actor who might be used in the script</param> /// <param name="trigger">The trigger we are going to work on</param> /// <param name="cConversation">The conversation which will be referenced by the trigger</param> /// <param name="triggerHappens">The type of trigger</param> private void makeEscort(string actorName, Actor trigger, string convName, string questName, int questId) { var varTable = trigger.Var; if (varTable == null) { varTable = new NWN2ScriptVarTable(); } LinkedList<String> toRemove = new LinkedList<string>(); toRemove.AddLast("Conversation"); toRemove.AddLast("Node"); toRemove.AddLast("Run"); toRemove.AddLast("TalkNow"); toRemove.AddLast("CutsceneBars"); toRemove.AddLast("OnceOnly"); toRemove.AddLast("MultiUse"); toRemove.AddLast("CombatCutsceneSetup"); toRemove.AddLast("NPC_Tag"); var Conversation = new NWN2ScriptVariable("Conversation", convName); var Node = new NWN2ScriptVariable("Node", 1); var Run = new NWN2ScriptVariable("Run", 1); var TalkNow = new NWN2ScriptVariable("TalkNow", 1); var CutsceneBars = new NWN2ScriptVariable("CutsceneBars", 0); var OnceOnly = new NWN2ScriptVariable("OnceOnly", 0); var MutilUse = new NWN2ScriptVariable("MultiUse", 1); var CombatCutsceneSetup = new NWN2ScriptVariable("CombatCutsceneSetup", 0); var NPCTag = new NWN2ScriptVariable("NPC_Tag", actorName); // I add the variables to the tables varTable = removeDuplicates(varTable, toRemove); varTable.Add(Conversation); varTable.Add(Node); varTable.Add(Run); varTable.Add(TalkNow); varTable.Add(CutsceneBars); varTable.Add(OnceOnly); varTable.Add(MutilUse); varTable.Add(CombatCutsceneSetup); varTable.Add(NPCTag); condAdvance(trigger, varTable, questName, questId, 0, "gtr_speak_node", ""); }
public static void SetString(NWN2ScriptVarTable variables, string name, string value) { try { variables.GetVariable(name).ValueString = value; variables.GetVariable(name).VariableType = NWN2ScriptVariableType.String; } catch { NWN2ScriptVariable var = new NWN2ScriptVariable(name, value); var.VariableType = NWN2ScriptVariableType.String; variables.Add(var); } }