/* /// <summary> /// Updates the door in the campaign /// </summary> /// <param name="door"></param> /// <param name="collection"></param> private static void setCampaignModuleValues(NWN2DoorBlueprint door, NWN2Toolset.NWN2.Data.TypedCollections.NWN2BlueprintCollection collection) { var print = (NWN2DoorBlueprint)collection[door.TemplateResRef]; if (print != null) { print.OnFailToOpen = door.OnFailToOpen; print.Locked = door.Locked; print.Conversation = door.Conversation; print.Variables = door.Variables; print.OnDeath = door.OnDeath; print.OnOpen = door.OnOpen; } } private static void setCampaignModuleValues(NWN2PlaceableBlueprint placeable, NWN2Toolset.NWN2.Data.TypedCollections.NWN2BlueprintCollection collection) { var print = (NWN2PlaceableBlueprint)collection[placeable.TemplateResRef]; if (print != null) { print.Conversation = placeable.Conversation; print.Inventory = placeable.Inventory; print.OnUsed = placeable.OnUsed; print.Static = placeable.Static; print.Usable = placeable.Usable; print.Inventory = placeable.Inventory; print.HasInventory = placeable.HasInventory; print.Variables = placeable.Variables; print.OnDeath = placeable.OnDeath; print.OnOpen = placeable.OnOpen; } } private static void setCampaignModuleValues(NWN2TriggerBlueprint trigger, NWN2Toolset.NWN2.Data.TypedCollections.NWN2BlueprintCollection collection) { var print = (NWN2TriggerBlueprint)collection[trigger.TemplateResRef]; if (print != null) { debug("InTrigger"); collection.Remove(print); collection.Add(trigger); } } private static void setCampaignModuleValues(NWN2CreatureBlueprint creature, NWN2Toolset.NWN2.Data.TypedCollections.NWN2BlueprintCollection collection) { var print = (NWN2CreatureBlueprint)collection[creature.TemplateResRef]; if (print != null) { System.Console.WriteLine("Module campaignSet"); print.Conversation = creature.Conversation; print.Inventory = creature.Inventory; } } */ #endregion /// <summary> /// Is called when the language combobox is changed /// </summary> private void comboLang_SelectedIndexChanged(object sender, EventArgs e) { lang = (BWLanguages.BWLanguage)comboLang.SelectedIndex; setLang(); }
/// <summary> /// Tries to create the quest /// </summary> private void Done_Click(object sender, EventArgs e) { LinkedList<StoryNode> ApprovedStoryNodes = new LinkedList<StoryNode>(); /* I check to see if there are any illogical dependencies (that is * if a node requires something that is not there, or has been moved to a later position */ int dependencyNumber = 0; pri = (NWN2JournalPriority)comboPri.SelectedIndex; lang = (BWLanguages.BWLanguage)comboLang.SelectedIndex; if (questName.Text == String.Empty) { report("You need to give the Quest a name"); return; } foreach (StoryNode sNode in sNodeList.Items) { sNode.questId = (int)dependencyNumber; dependencyNumber += 5; ApprovedStoryNodes.AddLast(sNode); if (sNode.preReqNode != null) { if (!ApprovedStoryNodes.Contains(sNode.preReqNode)) { report("There is a problematic dependency in " + sNode.Name + "\nPlease fix this and try again"); return; } } } string name = questName.Text; NWN2JournalCategory category = null; var actorMap = new Hashtable(); var triggerMap = new Hashtable(); Actor actor = null; Actor trigger = null; StoryNode.wipeConvHash(); foreach (StoryNode sNode in ApprovedStoryNodes) { // This is done in order to ensure that the newest version of an actor is allways allocated actor = (Actor)actorMap[sNode.actor.Tag]; if (actor != null) sNode.actor = actor; if (sNode.trigger != null) trigger = (Actor)triggerMap[sNode.trigger.Tag]; if (trigger != null) sNode.trigger = trigger; sNode.addConv(name, gender, lang); // I add the newest version of the actors actorMap[sNode.actor.Tag] = sNode.actor; if (sNode.trigger != null) triggerMap[sNode.trigger.Tag] = sNode.trigger; if (sNode.journalCheck) { // I create the journal category = sNode.createJournal(name, pri, gender, lang, category); } } #region old code - might want to cut /* NWN2Campaign activeCampaign = NWN2CampaignManager.Instance.ActiveCampaign; foreach (Object actObj in actorMap.Values) { var act = (Actor)actObj; switch (act.type) { case EnumTypes.actorType.Creature: toolsetCreatureUpdate(act, activeCampaign); break; case EnumTypes.actorType.Door: toolsetDoorUpdate(act, activeCampaign); break; case EnumTypes.actorType.Placeable: toolsetPlaceableUpdate(act, activeCampaign); break; } } foreach (Object trigObj in triggerMap.Values) { var trigAct = (Actor)trigObj; if (trigAct.boolInstance) { var instTrigger = (NWN2TriggerInstance)trigAct.instance; foreach (NWN2GameArea area in module.Areas.Values) { area.Demand(); foreach (NWN2TriggerInstance trig in area.Triggers) { if (trig.Tag == trigAct.Tag) { debug(trigAct.Tag); area.Triggers.Remove(trig); area.Triggers.Add(trigAct.instance); trig.Variables = instTrigger.Variables; trig.OnEnter = instTrigger.OnEnter; } } } } else { setCampaignModuleValues((NWN2TriggerBlueprint)trigAct.blueprint, module.Placeables); setCampaignModuleValues((NWN2TriggerBlueprint)trigAct.blueprint, activeCampaign.Placeables); } } } void toolsetCreatureUpdate(Actor act, NWN2Campaign activeCampaign) { if (act.boolInstance) { var instCreature = (NWN2CreatureInstance)act.instance; foreach (NWN2GameArea area in module.Areas.Values) { area.Demand(); foreach (NWN2CreatureInstance creature in area.Creatures) if (creature.Tag == instCreature.Tag) { creature.Conversation = instCreature.Conversation; creature.Inventory = instCreature.Inventory; } } } else { setCampaignModuleValues((NWN2CreatureBlueprint)act.blueprint, module.Creatures); setCampaignModuleValues((NWN2CreatureBlueprint)act.blueprint, activeCampaign.Creatures); } */ }