Engine Bugs

Report any bugs or ideas/suggestions that arise during testing of the Alpha Build Version 5

Re: Engine Bugs

Postby Lurking Grue » Sun Sep 01, 2013 4:52 pm

For some reason, I'm not getting those green highlights that denote doors on the Lanterna module. Watching Karl's Let's Play, I noticed there ought to be such in the home village map for both of the buildings. Here's a screenshot of the map as seen on my computer (sorry for the large image, should've cropped and resized it some more).

Image
"It is pitch black. You are likely to be eaten by a grue."
User avatar
Lurking Grue
Backer
Backer
 
Posts: 291
Joined: Sat Dec 08, 2012 12:26 pm

Re: Engine Bugs

Postby youngneil1 » Sun Sep 01, 2013 5:26 pm

I think Jer added those later on (they are part of the brinsby.jpg, i.e. they are painted into the map background by hand). Not certain actually which Lanterna version I have here myself (all those updates ;)).
User avatar
youngneil1
Backer
Backer
 
Posts: 4617
Joined: Sat Dec 08, 2012 7:51 am

Re: Engine Bugs

Postby slowdive » Wed Sep 04, 2013 4:36 am

For those who saw the concentration-increase-at-level-up-causing-a-crash bug, I fixed the issue. The problem was that if you had a pre-made companion char file that did not have all the skills that are in the newest version of your module, there would be a difference in the count size of KnownSkillsList and KnownSkillRefsTags. I added some code to redo the KnownSkillRefsTags after they are used (this is in the ScriptFunctions.dll "AddCharacterToParty"):

Code: Select all
public void AddCharacterToParty(string filename)
        {
            try
            {
                string jobDir = gm.mainDirectory + "\\modules\\" + gm.module.ModuleFolderName + "\\characters\\companions";
                string moduleFolder = gm.mainDirectory + "\\modules\\" + gm.module.ModuleFolderName;
                //load the character file
                PC newPC = new PC();
                newPC.passRefs(gm, null);
                newPC = newPC.loadPCFile(jobDir + "\\" + filename);
                newPC.passRefs(gm, null);
                newPC.LoadAllPcStuff(moduleFolder);
                //check to see if already in party before adding
                bool foundOne = false;
                foreach (PC pc in gm.playerList.PCList)
                {
                    if (newPC.Tag == pc.Tag)
                    {
                        foundOne = true;
                    }
                }
                if (!foundOne)
                {
                    // when loading characters that have a blank "raceTag" or lists are empty, create lists and tags based on current objects
                    // this "if" statement may not be necessary once everyone has converted their PCs to the new format
                    if ((newPC.RaceTag == "") || (newPC.KnownSkillRefsTags.Count < 1))
                    {
                        newPC.RaceTag = newPC.Race.RaceTag;
                        newPC.ClassTag = newPC.Class.PlayerClassTag;
                        newPC.KnownSpellsTags.Clear();
                        foreach (Spell sp in newPC.KnownSpellsList.spellList)
                        {
                            newPC.KnownSpellsTags.Add(sp.SpellTag);
                        }
                        newPC.KnownTraitsTags.Clear();
                        foreach (Trait tr in newPC.KnownTraitsList.traitList)
                        {
                            newPC.KnownTraitsTags.Add(tr.TraitTag);
                        }
                        newPC.KnownSkillRefsTags.Clear();
                        foreach (Skill sk in newPC.KnownSkillsList.skillsList)
                        {
                            SkillRefs sr = new SkillRefs();
                            sr.SkillName = sk.SkillName;
                            sr.SkillTag = sk.SkillTag;
                            sr.SkillRanks = sk.Ranks;
                            newPC.KnownSkillRefsTags.Add(sr);
                        }
                    }
                    newPC.Race = gm.module.ModuleRacesList.getRaceByTag(newPC.RaceTag).DeepCopy();
                    newPC.Class = gm.module.ModulePlayerClassList.getPlayerClassByTag(newPC.ClassTag).DeepCopy();
                    newPC.KnownSpellsList.spellList.Clear();
                    foreach (string spTag in newPC.KnownSpellsTags)
                    {
                        Spell sp = gm.module.ModuleSpellsList.getSpellByTag(spTag).DeepCopy();
                        newPC.KnownSpellsList.spellList.Add(sp);
                    }
                    newPC.KnownTraitsList.traitList.Clear();
                    foreach (string trTag in newPC.KnownTraitsTags)
                    {
                        Trait tr = gm.module.ModuleTraitsList.getTraitByTag(trTag).DeepCopy();
                        newPC.KnownTraitsList.traitList.Add(tr);
                    }
                    newPC.KnownSkillsList.skillsList.Clear();
                    foreach (Skill sk in gm.module.ModuleSkillsList.skillsList)
                    {
                        newPC.KnownSkillsList.skillsList.Add(sk.DeepCopy());
                    }
                    foreach (SkillRefs sr in newPC.KnownSkillRefsTags)
                    {
                        foreach (Skill sk in newPC.KnownSkillsList.skillsList)
                        {
                            if (sk.SkillTag == sr.SkillTag)
                            {
                                sk.Ranks = sr.SkillRanks;
                            }
                        }
                    }
//THIS IS THE PART THAT I ADDED TO MAKE THE CONCENTRATION INCREASE BUG FIX
                    newPC.KnownSkillRefsTags.Clear();
                    foreach (Skill sk in newPC.KnownSkillsList.skillsList)
                    {
                        SkillRefs sr = new SkillRefs();
                        sr.SkillName = sk.SkillName;
                        sr.SkillTag = sk.SkillTag;
                        sr.SkillRanks = sk.Ranks;
                        newPC.KnownSkillRefsTags.Add(sr);
                    }
//END OF BUG FIX
                    foreach (Skill sk in newPC.KnownSkillsList.skillsList)
                    {
                        sk.reCalculate(newPC);
                    }
                    gm.playerList.PCList.Add(newPC);


                    //gm.playerList.PCList.Add(newPC);
                    gm.addPCScriptFired = true;
                    gm.uncheckConvo = true;

                    if (gm.playerList.PCList.Count > 5)
                    {
                        frm.pc_button_5.Enabled = true;
                        frm.pcInventory.rbtnPc5.Enabled = true;
                        frm.pc_button_5.BackgroundImage = (Image)gm.playerList.PCList[5].portraitBitmapM;
                        frm.pcSheet5.passRefs(frm, gm, 5);
                        frm.pcSheet5.refreshSheet();
                    }
                    if (gm.playerList.PCList.Count > 4)
                    {
                        frm.pc_button_4.Enabled = true;
                        frm.pcInventory.rbtnPc4.Enabled = true;
                        frm.pc_button_4.BackgroundImage = (Image)gm.playerList.PCList[4].portraitBitmapM;
                        frm.pcSheet4.passRefs(frm, gm, 4);
                        frm.pcSheet4.refreshSheet();
                    }
                    if (gm.playerList.PCList.Count > 3)
                    {
                        frm.pc_button_3.Enabled = true;
                        frm.pcInventory.rbtnPc3.Enabled = true;
                        frm.pc_button_3.BackgroundImage = (Image)gm.playerList.PCList[3].portraitBitmapM;
                        frm.pcSheet3.passRefs(frm, gm, 3);
                        frm.pcSheet3.refreshSheet();
                    }
                    if (gm.playerList.PCList.Count > 2)
                    {
                        frm.pc_button_2.Enabled = true;
                        frm.pcInventory.rbtnPc2.Enabled = true;
                        frm.pc_button_2.BackgroundImage = (Image)gm.playerList.PCList[2].portraitBitmapM;
                        frm.pcSheet2.passRefs(frm, gm, 2);
                        frm.pcSheet2.refreshSheet();
                    }
                    if (gm.playerList.PCList.Count > 1)
                    {
                        frm.pc_button_1.Enabled = true;
                        frm.pcInventory.rbtnPc1.Enabled = true;
                        frm.pc_button_1.BackgroundImage = (Image)gm.playerList.PCList[1].portraitBitmapM;
                        frm.pcSheet1.passRefs(frm, gm, 1);
                        frm.pcSheet1.refreshSheet();
                    }
                    if (gm.playerList.PCList.Count > 0)
                    {
                        frm.pc_button_0.Enabled = true;
                        frm.pcInventory.rbtnPc0.Enabled = true;
                        frm.pc_button_0.BackgroundImage = (Image)gm.playerList.PCList[0].portraitBitmapM;
                        frm.pcSheet0.passRefs(frm, gm, 0);
                        frm.pcSheet0.refreshSheet();
                    }
                    frm.refreshPartyButtons();
                    frm.doPortraitStats();
                }
                else
                {
                    IBMessageBox.Show(gm, "This PC is already in the party");
                }
            }
            catch
            {
                IBMessageBox.Show(gm, "failed to load character from character folder");
            }           
        }
User avatar
slowdive
Site Admin
Site Admin
 
Posts: 2966
Joined: Wed Nov 21, 2012 11:58 pm

Re: Engine Bugs

Postby youngneil1 » Wed Sep 04, 2013 5:05 am

Great that you caught that one! I will have to go through it more thoroughly before I truly understand what's going on there - for now just glad that adding skills (traits, spells) after creation of a character works out :D
User avatar
youngneil1
Backer
Backer
 
Posts: 4617
Joined: Sat Dec 08, 2012 7:51 am

Re: Engine Bugs

Postby slowdive » Wed Sep 04, 2013 5:12 am

I also added similar code for when loading up player created char files from the player folder at party selection screen and upon loading up saved games and updating existing party members to have any new skills added to their KnownSkillRefsTag list (although if it is a new skill, they will have 0 points plus modifiers in those skills). Maybe there could be an option for reseting your skill points and redistributing them to take advantage of the new skills in updated modules.
User avatar
slowdive
Site Admin
Site Admin
 
Posts: 2966
Joined: Wed Nov 21, 2012 11:58 pm

Re: Engine Bugs

Postby youngneil1 » Wed Sep 04, 2013 3:20 pm

Good to know all bases covered (load new char, load savegame, find already existing companions), thumbs up!

Some kind of re-level option - not only for skills, but also trait points and spell points (for learning spells) might be a cool feature indeed. Authors might use such to allow players to adjust chars to onoging changes in the toolset/module, but perhaps also against an in-game gold fee as a general option ingame (migth be a shop feature or a dialogue choice via premade script then). This way players could correct accidental or misjudged choices (with some price; all author definable, i.e. whether this is allowed at all and what it costs).

That being said,*takes serious and worried face, looking very agrown and full of world pain now* , imho this can wait for after release. It's not a crcuial feature and if need really be authors could insert a custom script doing such for a temporary solution until the tooslet offers this as comfort feature. Priority past release suggested.

I will take it to a list I am gonna make containing features to be implemented: 1) pre-beta 2)inbetween beta and release (a very few at best, as we will use this phase to fix and polish what's in to 95%) and 3) post-release.

Please take me with humour and a large grain of salt :D when I write things as such to sort stuff. All are just suggestions only meant to prepare a clear path ahead.
User avatar
youngneil1
Backer
Backer
 
Posts: 4617
Joined: Sat Dec 08, 2012 7:51 am

Re: Engine Bugs

Postby Dorateen » Thu Sep 12, 2013 3:39 pm

The check on PC for conditionals is working, I am pleased to report.

However, I discovered one issue when testing this. It is the first PC only, when checked for attributes/characteristics.

For example, using the "You're a dwarf like me!" option I had created in an opening conversation, it does show up when a dwarf character was selected as the first PC in the party. Unfortunately, if you left click to select any other party members, they will still get that dialogue option, as the conditional is checking just that first PC (who in this case is a dwarf).

Furthermore, if you have someone else as the first PC such as an elf or a human, then that option will not show up, which is good. But if you have a dwarf somewhere else in the party (like Trumpkin in the 3rd or 4th position) and left click on his portrait to select him on the map, the dwarf will still not trigger that dialogue option. Again, it is because the conditional is only checking the first PC, not whoever is selected.

Just wanted to mention this, because I am hoping to allow the player to cycle through different party members and when they engage in a conversation, have different options available based on who is selected.
User avatar
Dorateen
Backer
Backer
 
Posts: 906
Joined: Mon Nov 26, 2012 2:08 pm

Re: Engine Bugs

Postby slowdive » Thu Sep 12, 2013 5:05 pm

I think the check race script allows you to select the PC index that you want to check. It defaults to 0 which is the first PC. I need to add the option for maybe a "-1" option which would use the currently selected PC. I still need to add that option to all scripts that use a PC index. Have a look at the script and you'll see what I mean :oops:
User avatar
slowdive
Site Admin
Site Admin
 
Posts: 2966
Joined: Wed Nov 21, 2012 11:58 pm

Re: Engine Bugs

Postby Dorateen » Thu Sep 12, 2013 5:23 pm

Ah, that would make sense. I'll check it out then. Now I remember when I set this up a few weeks ago, the parameter like you described. I'm sure that was the problem.
User avatar
Dorateen
Backer
Backer
 
Posts: 906
Joined: Mon Nov 26, 2012 2:08 pm

Re: Engine Bugs

Postby slowdive » Thu Sep 12, 2013 5:34 pm

I'll make that fix tonight and send everyone the new scripts.
User avatar
slowdive
Site Admin
Site Admin
 
Posts: 2966
Joined: Wed Nov 21, 2012 11:58 pm

PreviousNext

Return to Alpha Build 5 Bugs and Ideas Reporting

Who is online

Users browsing this forum: No registered users and 1 guest

cron