Example #1
0
        /*
        /// <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();
            }
Example #2
0
        /// <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);
                }
            */
            }