#exult@irc.freenode.net logs for 7 Jul 2002 (GMT)

Archive Today Yesterday Tomorrow
Exult homepage


[00:00:03] --- Darke is now known as Darke|afk
[00:21:05] --- Darke|afk is now known as Darke
[04:02:57] --> Kirben has joined #exult
[04:02:57] --- ChanServ gives channel operator status to Kirben
[05:47:46] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[05:57:33] --> Kirben has joined #exult
[05:57:34] --- ChanServ gives channel operator status to Kirben
[06:21:52] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[06:25:20] --> Kirben has joined #exult
[06:25:20] --- ChanServ gives channel operator status to Kirben
[09:15:44] --> wjp has joined #exult
[09:15:44] --- ChanServ gives channel operator status to wjp
[09:15:51] <wjp> hi
[09:16:38] <Darke> Hi.
[10:24:44] <wjp> wow, a segfault
[10:25:57] * Darke earperks. Are you 'stress testing' exult again? *grin*
[10:26:10] <wjp> just starting to play through SI
[10:26:23] <wjp> I was talking to Spektran to exchange some coints and it crashes
[10:26:26] <wjp> s/coints/coins/
[10:26:44] * Darke nods. Cool. He should sit down and play SI one of these days. *grin*
[10:26:56] <wjp> and BG, for that matter :-)
[10:28:33] <Darke> Nah. I played BG to death years ago, I should take a run through FoV since I've not even seen it though. *grin*
[10:29:31] <wjp> hm, it seems to crash in the LOOP opcode
[10:31:41] <wjp> hm, it looks like the array we're looping over is changed in mid-loop
[10:31:45] <wjp> that's kind of bad
[10:33:11] * Darke thinks that's 'kind of' an understatement. *grin*
[10:34:28] <wjp> very peculiar
[10:34:38] <wjp> that loop array is filled with NPC nums
[10:35:01] <wjp> in each iteration, it checks if the 'current' NPC is nearby, and if not, if removes it from the list
[10:37:57] <wjp> hm, I don't quite see how to modify the loop opcode to support this
[10:38:12] <wjp> I mean, I _can_ make it work, but that would be really ugly
[10:38:20] <Darke> That certainly sounds unusual.
[10:38:57] <wjp> SI function 044d, offset BE, btw
[10:45:33] <wjp> hm, supporting simple (i.e., 1 element) deletions/additions from the loop array wouldn't be too hard
[10:46:09] <wjp> compare the current array size with the stored array size, and if it changed by one, check to see if the addition/deletion occured before or after the current value
[10:46:17] <wjp> and adjust the current value and max value accordingly
[10:47:57] * Darke nods.
[10:56:20] <wjp> hm, what should I make it do if more than one entry was added/deleted?
[10:56:43] <wjp> output warning, and just make sure it doesn't loop out of bounds?
[10:57:20] <Darke> Drop an assertion in for that case and and appropriate error message, and deal with it if it ever happens? *grin*
[10:57:49] <wjp> works for me :-)
[10:59:48] <Darke> Possibly something like: "A 'this should never happen' error occured. Email a copy of your stdout.txt and stderr.txt to exult-general@..." etc, etc. Just in case it's tripped over 'in the field'. *grin*
[11:00:07] <wjp> :-)
[11:02:02] <Darke> If only for the case if we add the functionality to ucc to handle this, but don't rememeber to remove the test.
[11:04:57] <wjp> ugh, this code is so ugly
[11:08:06] * Darke snickers.
[11:08:32] <wjp> 45 extra lines of code
[11:14:22] <wjp> hm, I can't seem to reproduce the crash at all
[11:14:33] <wjp> sounds like a good time to try out my usecode debugger :-)
[11:14:49] <Darke> *grin* Indeed it does.
[11:14:57] <wjp> (which I should really commit sometime, but which is _totally_ unsuited for committing atm)
[11:15:09] <wjp> I was experimenting with socket communication and with gtk at the same time
[11:15:16] <wjp> you can guess what a mess the code is :-)
[11:23:29] <wjp> hmm... in fact, this looks like a good time to add SI support to it :-)
[11:25:29] * Darke icks and nodnods. Probably a good idea. *grin*
[12:37:17] --> Fingolfin has joined #exult
[12:37:53] <wjp> hi
[12:39:31] <Fingolfin> yo
[12:39:33] --- ChanServ gives channel operator status to Fingolfin
[12:40:26] <Darke> Hi.
[12:44:58] * Darke hops off to sleep. Night!
[12:45:04] --- Darke is now known as Darke|afk
[12:45:09] <wjp> night
[12:56:09] --> Colourless has joined #Exult
[12:56:09] --- ChanServ gives channel operator status to Colourless
[12:56:22] <Colourless> hi
[12:56:54] <wjp> hi
[13:01:03] <wjp> hm, what exactly is the npc_proximity event?
[13:01:54] <wjp> this loop crash seems to occur in the npc_proximity handler of Spektran
[13:02:46] * Colourless has a look
[13:03:19] <Colourless> i think it's what normally causes the messages that a npc says while idle
[13:03:55] <Colourless> the sf island .uc probably has some examples in it
[13:04:20] <wjp> any idea how I can trigger one easily?
[13:04:45] <Colourless> walk up to the npc after being far away
[13:05:35] <wjp> ah, guess I wasn't far enough away before
[13:06:15] <wjp> ok, doesn't crash anymore now
[13:06:53] <wjp> that function removes elements from the loop array while looping...
[13:07:05] <wjp> needless to say exult didn't like that :-)
[13:08:26] <Colourless> yeah, i read the logs :-)
[13:11:50] <wjp> hm, it doesn't consistently crash without this hack
[13:12:09] <wjp> but that makes sense in a way if it's reading past the array bounds
[13:15:02] <wjp> ah well, this should fix another one of those 'random crashes'
[13:16:03] <Colourless> you know what the problem with fixing a bug like that is, it might have been causing problems elsewhere and we would never know
[13:16:19] <wjp> true
[13:16:25] <Colourless> so we might end up attempting to chase a bug that had already been fixed
[13:18:50] * wjp backports to 'old' usecode interpreter in 1.0
[13:19:40] <wjp> I kind of wonder if this was working properly in the original
[13:23:03] <wjp> ugh, the amount of usecode that's being executed in SI is scary
[13:23:18] <wjp> eggs everywhere
[13:24:13] <Colourless> yeah
[13:24:40] <Colourless> the amount of usecode that was used in si sort of explains some of u8's usecode design.
[13:25:48] <Colourless> the scripted sequences in SI are a real nightmare
[13:29:22] <Colourless> i imagine that coding them would have been much more difficult than the way u8's would have been done
[13:29:44] <wjp> yeah
[13:30:12] <wjp> in u8 you can at least use 'normal' usecode for scripted stuff, not that weird scheduled usecode
[13:30:33] <Colourless> u8's is rather simple since you just have a main thread that just spawns other thread to do certain things such as moving an npc, and then waits for the npc to get to it's spot before going to the next step
[13:31:07] <Colourless> un si they had to create a usecode script which moves the npc, then they have to call the original usecode function again with a parameter saying the npc has moved
[13:31:11] <Colourless> s/un/in
[13:31:59] <Colourless> u8 pretty much just combined usecode scripts and usecode into the one language.
[13:32:24] * wjp nods
[13:34:01] <Colourless> i wonder what the si usecoders would say the worst part of coding si was
[13:34:42] <wjp> judging by the amount of bugs we have, I would say either training or the trial
[13:37:11] <wjp> hm, we didn't update our homepage in quite a while, did we?
[13:37:39] <Colourless> about a month if i'm not mistaken
[13:44:15] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[13:52:55] <wjp> hm, I wonder why Jeff didn't commit the delayed blast fix to 1.0
[13:53:11] <Colourless> forgot?
[14:18:11] <wjp> Colourless: don't you mean '1.1.x' snapshot in the hanging note thread?
[14:18:32] <wjp> I don't think there's been many changes in the audio code in 1.0.x, right?
[14:18:42] <wjp> s/'s/'ve/
[14:19:24] <Colourless> i mean 1.0.x
[14:19:41] <Colourless> i do not recommend people use 1.1.x
[14:20:16] <Colourless> the (windows) midi code shouldn't be different between any version
[14:20:33] <Colourless> i just want to see if it's not some wierd compiler interaction issue
[14:20:38] <Colourless> i doubt that is it thouhg
[14:20:46] * wjp nods
[14:21:00] <wjp> maybe trying different MIDI devices might help?
[14:21:29] <Colourless> at this stage, i've no idea
[14:26:30] <wjp> well... that was a nice little side-track... back to playing SI :-)
[15:07:28] <wjp> hm, there is a colon in the font we use in the savegame gump, isn't there?
[15:16:24] <Colourless> should be a colong
[15:16:32] <Colourless> s/conlong/colon/
[15:16:40] <Colourless> probably not picking up the key code
[15:17:07] <wjp> hm, shift is handled by calling toupper(chr)
[15:18:22] <Colourless> exult 'really' should have had a general input handler made
[15:18:42] <Colourless> all over the place where ever we need a text input we've written a new key handler
[15:19:11] <Colourless> idea for pentagram: write a basic generic key handing class that we can inherit from when ever we need text input
[15:30:40] <wjp> heh, I never noticed that party members open doors for you :-)
[15:30:59] <Colourless> it's a bug... or is it a feature :-0
[15:31:07] <Colourless> s/:-0/:-)/
[15:37:06] <wjp> hm, it's been 6:02am for an awfully long time now
[15:40:46] <wjp> saving and loading fixed it
[15:41:08] <wjp> which I guess means that something went wrong with the event queue
[15:43:12] <wjp> ok, reproducable
[15:43:47] <Colourless> what is the problem?
[15:44:42] <wjp> http://sourceforge.net/tracker/index.php?func=detail&aid=578374&group_id=2335&atid=102335
[15:45:52] <Colourless> Ctrl-R = restore right?
[15:45:56] <wjp> yeah
[15:45:59] <wjp> quickrestore
[15:46:39] <Colourless> which build?
[15:46:56] <wjp> devel-1-00 cvs
[15:52:01] <Colourless> your loop fix wont compile for me
[15:52:07] <Colourless> curval != locals[local3]
[15:52:14] <Colourless> C:\UC\exult-devel-1-00\usecode\ucinternal.cc(2023) : error C2678: binary '!=' : no operator defined which takes a left-hand operand of type 'class Usecode_value' (or there is no acceptable conversion)
[15:52:43] <wjp> hm, no operator==?
[15:53:05] <wjp> oh, there is an ==, but no !=...
[15:53:21] <wjp> but why is the operator== an 'int'?
[15:54:11] * Colourless has no idea why
[15:54:12] <wjp> I'll just change it to bool and add a !=
[15:55:41] <Colourless> also make sure all the return values are either true or false. don't let it return 1 or 0 as it currently is
[15:55:54] <wjp> yeah, already did that
[15:56:45] <Colourless> some people i've noticed have a habit of returning int's a bools
[15:57:01] <Colourless> s/int's a bools/ints as bools/
[15:59:35] <wjp> ok, committed
[16:01:06] <Colourless> probably going to have to recompile half of exult now
[16:01:13] <Colourless> or maybe not
[16:01:16] <wjp> nah, useval.h isn't widely used
[16:07:32] <Colourless> yes, i can confirm that restore problem. my clock is stuck at 6:06 sm
[16:07:36] <Colourless> s/sm/am/
[16:10:49] <wjp> hm, there's no gamewin.dat, it seems
[16:11:02] <wjp> ...which causes Game_window::read_gwin() to abort
[16:11:37] <Colourless> and the clock never gets reset and started i guess
[16:11:45] <wjp> right
[16:11:55] <wjp> let me guess... gamewin.dat isn't in initgame.dat?
[16:12:10] <Colourless> yeah it's created by exult
[16:12:30] <wjp> ok, so we need to do a write_gwin() when unpacking initgame?
[16:12:53] <wjp> or properly reset the clock when clearing the world
[16:13:12] <wjp> (and move the starting of the clock to setup_game, or something)
[16:16:21] <Colourless> i'm guessing so
[16:19:05] <wjp> I wonder how long it'll take to play through SI at this rate :-)
[16:19:14] * wjp has still only just entered Monitor :-)
[16:19:20] <Colourless> years :-)
[16:19:38] <Colourless> though you do know a way to stop the game clock :-)
[16:19:48] <wjp> lol
[16:20:01] <wjp> yes, but that only works as long as I don't reload :-)
[16:20:07] <Colourless> so while it will take years real time, it will only take a couple minutes game time
[16:20:14] <Colourless> hmm true
[16:20:46] <wjp> ah well, it's a good motivation to fix all crashes :-)
[16:22:33] <wjp> hm, that big black hole when wearing a shield on your back but no backpack is from the original, right?
[16:22:49] <Colourless> yeah
[16:23:04] <Colourless> it's part of the shapes
[16:25:06] * wjp wonders if he dares to try to train
[16:25:20] <wjp> I have 3 training points, >50 monetari...
[16:26:19] <Colourless> :-)
[16:26:20] <wjp> question marks don't work either in the savegame gump
[16:26:46] * wjp was trying "Training?" :-)
[16:26:52] <Colourless> make it more general, shift only work with Alpha keys
[16:27:02] <wjp> yeah
[16:27:22] <wjp> hm, should we use the unicode translation function of SDL?
[16:27:47] <wjp> I doubt shift-/ is ? on all keyboards
[16:28:23] <wjp> Fingolfin: any ideas?
[16:28:53] <wjp> (you're probably somewhat more up-to-date on SDL&international keyboards issues :-) )
[16:31:19] <Colourless> well, if i don't use unicode translation with pocket pc sdl doesn't work with the keyboard at all (yes, i can use the keyboard in the pocket pc emulator)
[16:31:53] <Colourless> unicode translation still seems to have some issue though
[16:32:37] * Colourless tries to think what they were
[16:33:15] <Colourless> ah i remember what the problem i was getting was, but it may just be pocket pc related, i wouldn't get key codes unless shift was held :-)
[16:33:37] <wjp> that's kind of weird :-)
[16:34:57] <Colourless> seems to be some odd pocket pc sdl thing though. the window message handler gets all the key down and up messages
[16:40:03] <wjp> strange.. I can't seem to climb the stairs of the fawn tower
[16:40:22] <wjp> but after walking away and coming back it did work
[16:48:43] <wjp> well, that training session was interesting
[16:48:53] <wjp> the avatar seemed to be having some trouble deciding who was training him
[16:49:05] <wjp> i.e., he was attacking anyone in sight instead of just caladin
[16:50:54] <wjp> hey, funny, the debugging output always says that an object/actor has 0 hp
[16:52:14] <wjp> oh, but that's expected behaviour... get_obj_hp is only for non-npcs :-)
[16:59:50] * Fingolfin is back to keyboad, and using the unicode code in SDL is mostly usable if you want to do a text control (i.e. to enter text)
[16:59:59] <Fingolfin> not if you want to use it work hotkeys or such stuff
[17:01:43] <wjp> ok, I guess we should use it for the savegame names, then
[17:01:58] <wjp> with an added check if the font frame we're about to add isn't empty
[17:02:11] <wjp> (but that is already there, IIRC)
[17:02:39] <Colourless> might have interesting consequences if someone types an extended character :-)
[17:03:15] <wjp> well, we should definitely ignore any multi-byte unicode chars :-)
[17:03:28] <wjp> unless we want to add japanese fonts or something? ;-)
[17:03:39] <Colourless> hehe
[17:03:44] <Colourless> or symbols :-)
[17:04:29] <wjp> I think there's unicode for the ultima charsets too (runic, serpentine and gargish)
[17:05:27] <Colourless> there is?!?
[17:07:10] <wjp> IIRC, yes :-)
[17:07:24] <Colourless> http://www.evertype.com/standards/csur/gargoyle.html
[17:07:48] <Colourless> it is a standard unicode language it seems :-)
[17:09:19] * Colourless thinks that is pretty funny
[17:09:33] <wjp> yeah :-)
[17:12:38] <Colourless> opidian (http://www.evertype.com/standards/csur/ophidian.html) isn't a registerd and the way it's been constructed, is almost impossible to use
[17:12:52] <Colourless> s/opidian/Ophidian/
[17:13:14] <Fingolfin> on OS X filenames are in unicode anyway; isn't that the case for NTFS, too? Of course exult can't render Unicode ...
[17:13:26] <Fingolfin> maybe we should add chinese font support to Exult? =)
[17:13:36] <Colourless> yeah filenames are unicode in ntfs (and fat32 as well)
[17:15:02] <wjp> ugh, I'm submitting _way_ too many bugs :-)
[17:38:17] <wjp> lol, I lost some items (I thought), but it seems they were put in the wolf's body :-)
[17:52:36] <wjp> ok, good, the order in which you give the meat and the wolf body don't matter
[17:54:05] <wjp> lol, when you get out of bed, you're still in the 'sleeping' position
[20:06:10] <wjp> hmm... oops... I don't think the urn of ashes Iolo gets at the start should be labeled "Mama's ashes"
[20:06:29] <Colourless> :-)
[20:08:10] <wjp> hm, I wonder what the exact condition is
[20:09:55] <Colourless> mama is not a valid npc in si
[20:11:15] <wjp> no, but an npc has that name, apparently
[20:12:43] <Colourless> mama = 255
[20:12:58] <wjp> hmm... special case?
[20:13:23] <Colourless> well only the urn that iolo carries is the urn that iolo carries if you know what i mean
[20:13:57] <wjp> yeah :-)
[20:14:21] <Colourless> so special case = yes
[20:15:09] <wjp> any idea what the name should be?
[20:15:14] <wjp> 'urn with ashes'?
[20:16:28] <wjp> ah well, that'll be good enough, I guess
[20:16:30] <Colourless> what is the shape number?
[20:16:37] <Colourless> yeah it's urn with ashes
[20:16:45] <wjp> 0x392
[20:18:15] <Colourless> yes it's urn with ashes
[20:18:30] <Colourless> i guess i should check what quality 254 does
[20:24:05] <Colourless> it appears that if the quality is for an unused npc it become urn with ashes
[20:24:30] <wjp> and 0 too, right?
[20:24:44] * Colourless didn't check 0
[20:25:01] <wjp> hm, I'm pretty sure sb-x did
[20:25:06] * wjp checks e-mail
[20:25:22] <wjp> yes, 0 = urn with ashes
[20:25:37] <wjp> hm, how do you check for an unused npc?
[20:26:10] <Colourless> yes 0 too
[20:26:27] <Colourless> good question. jeff worked it out, i know that
[20:28:05] --> matto has joined #exult
[20:28:23] <wjp> hi
[20:28:31] <Colourless> hi
[20:29:07] <matto> hi
[20:29:29] <Colourless> wjpL it's is_unused() BUT as far as I can tell, jeff has only put it in the 1.1.x branch
[20:29:56] <wjp> ah well, then I'll only use it in 1.1.x :-)
[20:30:08] <wjp> I'll stick with > 0 && < 255 in 1.0.x, I guess
[20:33:50] <Colourless> in theory it should be ok to add the code to 1.0.x
[20:34:11] <Colourless> i'll send an email to the mailing list
[20:45:02] --- Darke|afk is now known as Darke
[20:45:07] <wjp> morning
[20:45:43] * Darke bows. Morning.
[20:45:55] <Colourless> morning
[20:54:22] <wjp> hm, 255 is used according to that function
[20:55:44] <Colourless> it shouldn't be
[20:58:51] <Colourless> just a note wjp, it may not work properly if you don't start from a new game
[20:59:01] <wjp> I started a new game this morning
[20:59:12] <Colourless> with 1.0.x ?
[20:59:20] <wjp> *sigh*...
[20:59:21] * wjp hits self
[20:59:24] <wjp> oops :-)
[21:38:11] --- Darke is now known as Darke|afk
[21:59:47] --- Darke|afk is now known as Darke
[22:00:31] --> Kirben has joined #exult
[22:00:32] --- ChanServ gives channel operator status to Kirben
[22:03:04] <-- Colourless has left IRC (Read error: 110 (Connection timed out))
[22:03:18] <wjp> hi Kirben
[22:04:13] <Fingolfin> yo Kirben
[22:04:29] <Darke> Hi.
[22:05:03] <wjp> hm, do you remember if gumps are supposed to be removed when casting an unlock magic spell?
[22:05:33] <Darke> I seem to remember, 'yes', but it's been a while.
[22:06:03] <wjp> also, double clicking seems to be a bit... weird
[22:06:24] <wjp> if you first drag'n'drop something, and then click on it, it triggers a double click
[22:07:00] <Darke> That is odd.
[22:10:57] <Kirben> Hi
[22:28:11] <wjp> hm, there's rather a lot of cave walls you can accidently walk through in SS
[22:31:49] <wjp> argh, nearly all walls have that problem
[22:54:31] <wjp> ah... I see... the double click time is measured from the last button 1 release
[22:54:47] <wjp> I guess we should ignore that if it was released after dragging
[22:55:42] * Darke nods. Would be prudent.
[22:56:04] <wjp> but that wouldn't catch cases where you are moving the mouse but not dragging an actual object... bah
[23:01:01] <wjp> whee, 14 of my bugs in the tracker :-)
[23:03:08] <Darke> Congrats! *grin* Or something similar.
[23:05:07] <wjp> "throw 4 down to get 12"
[23:05:17] * wjp throws 1,2,3,6 down, and gets obliterated
[23:05:21] <wjp> grrr
[23:05:43] <wjp> oh, wait... that was 2,3,4,6 :-)
[23:07:11] * Darke snickers.
[23:17:48] <wjp> wow, Aram Dol is _hard_
[23:20:12] <Darke> Eh?
[23:33:11] <wjp> hmm... exult froze up
[23:34:52] <wjp> looked like a pathfinding issue
[23:40:13] <wjp> yay, silver seed completed :-)
[23:40:40] <wjp> entire party is at level 7-9 already :-)
[23:40:46] <wjp> and I haven't even left Monitor yet :-)
[23:40:50] <wjp> (except to get some Varo leaves)
[23:44:48] * Darke grins and guesses they didn't playbalance SS enough.