Icewind Dale: ToEE - Total Conversion

Discussion in 'Icewind Dale Total Conversion' started by Allyx, May 7, 2016.

Remove all ads!
  1. sirchet

    sirchet Force for Goodness Moderator Supporter

    Joined:
    Dec 6, 2003
    Messages:
    3,721
    Likes Received:
    49
    Last edited: Jun 21, 2016
  2. Shiningted

    Shiningted I want my goat back Administrator

    Joined:
    Oct 23, 2004
    Messages:
    12,654
    Likes Received:
    352
    Ok Al here are those files:

    - dlg and py files for Pomab, Grisella, Old Jed, Mayor Quimby and Apsel (chosen at random). Quests etc all done and tested, though for the moment you have to check them by consoling things - set global_flag[2] for the death of Apsel's wolf, global_var[1] for Grisella's pest problem etc. Old Jed's 'bottle of wine' is currently item 8004, Hrothgar's list for Pomab is item 9999 (both to be changed in good time). Numbered 421-426 so they didn't clash with anything in ToEE and I could test them, feel free to change.
    - dlg file for Hrothgar, all worked up but I haven't attempted a py file as there seems to be a map change there and not sure how it plays out in game.
    - gamequestlog.mes - had a few crashes testing the limits of how much description you could put in each quest and quest 4 seems to be about the most verbose (2.5 lines).
    - updated Orc Caves fixing that water issue
    - updated Maplist.mes unfogging the Inn
    - a list of globals used so far, I will post those at some point in our shiny new forum :)

    Haven't changed the location of Old Jed's door nor done the door models on the Easthaven map as I want to have a look at how the original game does those.

    Dlg converter is coming along, got it at least reading and writing files (a small step but made difficult by changing nomenclature. "ios::end? Never, its now ios::eof and we'll change it again in the next patch, hahahaha!!!" <sigh>) Ultimately its only a series of small steps, nothing difficult but as previously mentioned, string handling has never been my thing.

    Let me know if there's anything more pressing you want me to work on.
     

    Attached Files:

  3. Shiningted

    Shiningted I want my goat back Administrator

    Joined:
    Oct 23, 2004
    Messages:
    12,654
    Likes Received:
    352
    A word on the handling of quests...

    IWD seems to use a global system akin to our global_flags, global_vars and quests[].state all rolled into one, and seems to enjoy setting a variable (usually '2') akin to what we would call 'qs_botched' - ie set when offered a quest and you tell the quest giver to go love themselves. But there is always the chance of redemption with appropriate grumpy or begging dlg next time you meet.

    I first used the actual 'qs_botched' condition for such situations thinking, "how hard can it be to unbotch a quest?" but as we all know, the quest variable only goes one way and there is no going back. (game.quests[x].unbotch produces some interesting results in the console but does not do the trick).

    So, I have started using quests[].state = 3, which is 'qs_achieved' I tihnk, and lies between 'qs_accepted' and 'qs_completed'. (Presumably it means you have 'achieved' the requirements of the quest but not completed it by telling the quest giver and getting your reward). Anyway, it shows up in red in the log book like a botched quest but unlike a botched one, it CAN be advanced to completion. It CAN'T be backtracked to 'accepted' though - it goes one way.

    Anyway, give it a go and see what you tihnk. If it's too jarring we can just incorporate vars to mimic it all (necessary since the dlg choices often depend on the player being in this state).

    EDIT: Here is an updated gamequestlog file, that one in the zip had #'s 1 & 2 screwed up.
     

    Attached Files:

    Last edited: Jun 21, 2016
    anatoliy likes this.
  4. Allyx

    Allyx Master Crafter Global Moderator Supporter

    Joined:
    Dec 2, 2004
    Messages:
    5,001
    Likes Received:
    250
    Awesome work Ted, I'll take a look at those in game shortly, I've added Aspel and his wolf already, so I'll make the changes to the wolf san_dying script to allow the quest to be completed in game, and poach some beetle models and proto from KotB for Grisella's cellar and add a variable to count all 4 of their deaths so that quest can be completed.

    Yeah the dialogue converter is still the most pressing thing, as it will clearly save weeks of copying and pasting text.

    Hrothgar meets the party as soon as they appear in the Inn, then runs off back to his house.

    The doors on the Easthaven main map, I left in the open position, as the idea was to add closed doors over the exposed doorways with the door icons behind them, just seems strange that everyone has open doors in the frozen north by default.

    Would using the quest mentioned state instead of botched not resolve the issue of the unbotched quests? IE. Quest giver discusses the quest, it becomes mentioned, you accept it or dismiss them only to return and accept later?
     
    Last edited: Jun 21, 2016
  5. Allyx

    Allyx Master Crafter Global Moderator Supporter

    Joined:
    Dec 2, 2004
    Messages:
    5,001
    Likes Received:
    250
    You know you're out of modding practice when it takes 4 hours to figure out how to set a global.flags [#] in a sans_dying script... Oh well, Aspel's quest works in game now. fingers crossed there will be no such issues adding the beetles to Grisella's cellar.
     
  6. Shiningted

    Shiningted I want my goat back Administrator

    Joined:
    Oct 23, 2004
    Messages:
    12,654
    Likes Received:
    352
    I swear I responded to this... o well.

    Short answer - sort of. I think used 'mentioned' any time you clearly weren't telling the person to shove their quest. But there were multiple occasions just in those 6 files where you were, and could still complete it later. Also, there were situations such as Apsel's where you can accept it but then tell him you refuse to do it once he outlines the complications of getting into his house. You can't go backward from accepted to mentioned, so....

    Anyway we'll see how it plays out. Open to change as mentioned.
     
  7. Shiningted

    Shiningted I want my goat back Administrator

    Joined:
    Oct 23, 2004
    Messages:
    12,654
    Likes Received:
    352
    Dlg converter is coming along nicely, btw :) Overcame the hardest part of mastering the most current nomenclature of C++ (and Visual Studio) and now have it able to read, analyse and write correctly. Should (at the very least) be able to do the rest with copy-pasting, if not more elegantly.
     
  8. Shiningted

    Shiningted I want my goat back Administrator

    Joined:
    Oct 23, 2004
    Messages:
    12,654
    Likes Received:
    352
    @ineth - couple of things I found in the dialogue files, maybe you can help?

    Firstly, the command
    DO ~Enemy()
    does this mean the NPC is set as an enemy and combat ensues? (ToEE would just have npc.attack(pc), but I want to make sure combat is intended, not just a bad rep or something).

    Also, I saw (in Alpheus' dlg) the command

    EXTERN ~DVAARGLN~ 10

    would I be right in understanding this is a switch to DVAARGLN (whoever he is) and start dlg with him at line 10? ToEE can do that easily, but again I want to make sure.
     
  9. ineth

    ineth Member

    Joined:
    May 15, 2016
    Messages:
    52
    Likes Received:
    4
  10. Shiningted

    Shiningted I want my goat back Administrator

    Joined:
    Oct 23, 2004
    Messages:
    12,654
    Likes Received:
    352
    Thankyou sir!

    Next quick question - the dialogue converter is almost ready to have a bunch of dialogues run through it for testing, may I ask for a list of the characters in Easthaven with dialogue needed for this Chapter 1 release?

    EDIT: Another quick uestion, @ineth, if you don't mind. The IWD dialogue files often have things like IF ~~ THEN GOTO 2 or IF ~~ THEN EXIT, where no actual reply is given and I suspect some generic file is being accessed to say a variant on "go on" or, "farewell". We have generic files for the latter but not the former, is there such a file in IWD and if so can you link to it? I can then match up this sort of chatter exactly :)
     
    Last edited: Jun 26, 2016
  11. ineth

    ineth Member

    Joined:
    May 15, 2016
    Messages:
    52
    Likes Received:
    4
    See this post.

    PS: Note that some of those DLG files are only partially used in the prologue, because the party returns to (a changed version of) Easthaven in the final chapter, and then you meet some of those NPCs again, with different dialog options.

    The Know_Balance variable is apparently used to check this, as in IF ~Global("Know_Balance","GLOBAL",0)~.
    The variable is set to 1 in Kuldahar during chapter 1, so for Easthaven characters that means that means 0=prologue, 1=final chapter.

    I don't think so.
    I think it just goes to the next NPC line / exits the dialog, without giving the PC a chance to reply.
     
    Last edited: Jun 26, 2016
  12. maggit

    maggit Zombie RipTorn Wonka

    Joined:
    Oct 20, 2005
    Messages:
    1,945
    Likes Received:
    0
    Precisely this. Some longer dialogues just make a big button show up at the bottom of the dialogue window. It may be either "CONTINUE" or "END DIALOGUE". [​IMG]
     
  13. Shiningted

    Shiningted I want my goat back Administrator

    Joined:
    Oct 23, 2004
    Messages:
    12,654
    Likes Received:
    352
    Thanks men.

    Maggit - I don't suppose you'd like to do some inventory icons for the IWD quest items, and a few things like that...? ;)

    EDIT: That list is perfect @ineth , sorry I missed it earlier.

    v1.0 of the dlg converter is done, and it not only converts the files I've been testing it on, it did dhjollde.d (which seems to be one of the biggest) first go without errors, so I am pretty happy with it. At the moment all it does is create an internally consistent ToEE .dlg file you can navigate in game (each reply goes to the correct line etc) with any args for comparison (similar to has_met()) and executing (similar to global_flags[] = 1) put in remarks at the end of the line. I'm going to do a v2.0 next which will parse as many of those sorts of things and turn them into proper ToEE scripting format as I can, then release it publically for anyone who needs it (like Sitra with his IWD 2 TC). But first to test it on these Easthaven ones.

    I'll send it over sometime tonight Al.

    2nd EDIT: Ooo, all those Easthaven files converted without a single crash. Happy Ted :D
     
    Last edited: Jun 27, 2016
  14. Sitra Achara

    Sitra Achara Senior Member

    Joined:
    Sep 1, 2003
    Messages:
    3,613
    Likes Received:
    537
    Nice!
    Perhaps you should put it on a git repository?
     
  15. Shiningted

    Shiningted I want my goat back Administrator

    Joined:
    Oct 23, 2004
    Messages:
    12,654
    Likes Received:
    352
    Ha! To have people laugh at my wretched code and say, "what took him 400 lines, I can do in 12"? And then prove it? No thankyou.

    Anyways, I shouldn't have shot my mouth off because this first version is a bit buggy, it doesn't deal with line number GOTOs properly if there is an executable bit of script attached. Should be easily fixed in a few days.

    Al, here is another 4 dlg files that I converted with the converter then polished up and added py files for, + a new gamequestlog (I have added the Dream Song quest). All tested :) I've also used a bunch of flags and such but I will have to wait til tomorrow to post those.
     

    Attached Files:

Our Host!