#gemrb@irc.freenode.net logs for 20 Jun 2010 (GMT)

Archive Today Yesterday Tomorrow
GemRB homepage


[00:02:49] --- Dark-Star is now known as Dark-Star|Zzz
[00:12:06] <-- budlust has left IRC (Remote host closed the connection)
[00:45:05] <-- Maighstir_laptop has left IRC (Quit: Maighstir_laptop)
[00:51:25] <-- _pickle has left IRC (Remote host closed the connection)
[02:06:41] <CIA-25> GemRB: 03tom.prince * r154c2e430e7c 10gemrb/gemrb/plugins/GUIScript/Makefile.am: autotools: Fix typo.
[02:07:04] --> raevol has joined #GemRb
[02:20:19] --> budlust has joined #GemRb
[02:24:56] <-- Gekz has left IRC (Read error: Connection reset by peer)
[02:30:57] --> Gekz has joined #GemRb
[03:36:41] <-- budlust has left IRC (Remote host closed the connection)
[05:05:20] <-- Gekz has left IRC (Ping timeout: 265 seconds)
[05:05:42] --> Gekz has joined #GemRb
[06:35:34] --> lynxlynxlynx has joined #GemRb
[06:35:35] --- ChanServ gives channel operator status to lynxlynxlynx
[06:46:02] --> cubathy has joined #GemRb
[06:49:52] --> Avenger has joined #GemRb
[06:50:24] <Avenger> hi
[06:51:17] <-- Gekz has left IRC (Read error: Connection reset by peer)
[06:52:14] --> Gekz has joined #GemRb
[06:55:36] <lynxlynxlynx> oj
[06:55:46] <lynxlynxlynx> did you get my mail?
[06:58:58] <-- Gekz has left IRC (Read error: Connection reset by peer)
[06:59:13] --> Gekz has joined #GemRb
[07:12:44] <Avenger> no
[07:13:31] <Avenger> ah yes, i got it
[07:13:41] <Avenger> hehe, i thought it is just an announcement of 0.6.1
[07:14:27] <lynxlynxlynx> change the part about only sources being available
[07:16:05] <Avenger> why? we got binaries?
[07:16:40] <Avenger> Shall i change it to: You can get it from <...> ?
[07:17:20] <lynxlynxlynx> yes, we have windows binaries
[07:17:34] <lynxlynxlynx> sure
[07:18:24] <Avenger> ok, done
[07:19:34] <lynxlynxlynx> :)
[07:19:54] <lynxlynxlynx> that's probably the widest reaching announcement
[07:20:21] <Avenger> sf announcements get spread too
[07:20:27] <Avenger> though not really targeted
[07:20:58] <lynxlynxlynx> yeah
[07:21:40] <lynxlynxlynx> btw, did you look at the VEF description and the other two things posted by your namesake?
[07:21:41] <Avenger> you wouldn't believe, but all of the new stuff in gemrb, i like fuzzie's magic missile change the best :) the rest is mostly refactoring that has no visible effect
[07:22:31] <lynxlynxlynx> that and the modal action updates
[07:22:50] <Avenger> ascencion posted vef
[07:23:01] <lynxlynxlynx> the start of iwd is much easier with turning and the added damage bonus/resistance also improves the xp
[07:23:34] <Avenger> and yeah, i saw it, we don't currently support vef, and i didn't even know there are actual vef files in any game :)
[07:23:48] <Avenger> i knew that there is such an extension supported by the original game
[07:23:56] <Avenger> but not that it is actually used
[07:24:19] <lynxlynxlynx> well is it?
[07:24:23] <Avenger> ah turning works?
[07:24:30] <lynxlynxlynx> yep
[07:24:36] <Avenger> cool, even in bg1/2 ?
[07:24:51] <lynxlynxlynx> there's no hit dice amount limit, but other than that, i can't think of any problem
[07:25:02] <lynxlynxlynx> it works everywhere except for pst
[07:25:12] <Avenger> hmm, yes, the hit dice limit ...
[07:25:34] <Avenger> we need to build it into the projectile, or ...
[07:25:49] <Avenger> there are other area effects that should be hit dice specific
[07:25:53] <Avenger> like sleep?
[07:26:02] <Avenger> maybe only in iwd2
[07:26:04] <Avenger> dunno
[07:26:04] <lynxlynxlynx> iwd2 complicates the matter with the improved turning feat
[07:26:15] <lynxlynxlynx> extra hit dice affected
[07:27:01] <Avenger> yes, projectiles and effects are grown into each other in iwd2
[07:27:11] <Avenger> and pst too
[07:28:03] <lynxlynxlynx> the hd in the effect is just about immunity/damage?
[07:28:47] <Avenger> you can always go about ONLY immunity/affect, and code the special cases in effects
[07:29:23] <Avenger> iwd2 has that fancy targeting system already
[07:29:49] <Avenger> so, if it cannot be solved otherwise, we can just add it there, if it isn't there already :)
[07:30:46] <lynxlynxlynx> good
[07:30:50] <Avenger> well it doesn't seem to be there
[07:31:57] <Avenger> we should check how many effects/games use hit dice sums to determine if a creature is affected or not
[07:32:50] <Avenger> then see if any of those are supported by gemrb somehow, most likely not
[07:33:53] <lynxlynxlynx> iirc the soul eater one is also hd limited
[07:34:01] <Avenger> right now, i would pick the iwd2 targeting system, but a special projectile flag is also possible, but then the bg2 turn needs a new projectile
[07:34:42] <Avenger> the hd limit is 'hd sum per area' or individual affect of creatures based on their hd
[07:35:20] <lynxlynxlynx> the first (affects only hd of creatures)
[07:36:09] <Avenger> the original d&d sleep would be the same too, yet, i don't think sleep has a hd sum per area in bg1/2
[07:36:37] <lynxlynxlynx> ah, no, i am mistaken about soul eater
[07:37:09] <lynxlynxlynx> iwd2 sleep has a 2d4 limit
[07:37:23] --> Maighstir_laptop has joined #GemRb
[07:37:47] <Avenger> i bet it is coded in the sleep projectile in iwd2
[07:38:26] <lynxlynxlynx> heh, pst doesn't have sleep
[07:41:44] <lynxlynxlynx> bg2 sleep has hd limit, but for immunity
[07:43:12] <Avenger> yes, it has no hd sum
[07:43:27] <Avenger> i think only iwd2 supports area hd sum
[07:43:39] <Avenger> oh, and bg1/2 in turn :(
[07:44:28] --- Dark-Star|Zzz is now known as Dark-Star
[07:44:37] <lynxlynxlynx> iwd probably too
[07:44:40] <Avenger> we should untangle that somehow to make it moddable
[07:45:04] <lynxlynxlynx> i found a wierd table about it, but it's not original: http://www.planetbaldursgate.com/bg2/character/classes/tables/turnundead.shtml
[07:45:41] <Avenger> actually, i changed my mind, i think it is best as an area projectile field, except for turning.
[07:46:14] <Avenger> we need a flag maybe, to use the turn undead level and the table
[07:46:43] <lynxlynxlynx> that table is artificial
[07:47:45] <Avenger> that table seems to be lifted directly from d&d
[07:48:08] <Avenger> we should implement the original engine, not d&d
[07:49:58] <Avenger> i'm sure they simplified it
[07:52:03] <lynxlynxlynx> i agree
[07:52:17] <Avenger> sadly the bg2 user's manual doesn't elaborate too much
[07:54:38] <lynxlynxlynx> nor does the how one
[07:54:55] <lynxlynxlynx> but this is not such a big deal
[08:06:07] <Avenger> haha, if i google for 'turn undead' and 'infinity engine' gemrb 0.6.1 comes first
[08:06:27] <Avenger> i bet it is google's 'knowing' my preferences
[08:06:51] <Avenger> maybe i should use bing
[08:07:36] <-- cubathy has left IRC (Quit: Leaving)
[08:08:14] <Avenger> http://forums.gibberlings3.net/index.php?showtopic=3844
[08:08:27] <Avenger> my namesake's specification seems to be the best we can use
[08:10:18] <Avenger> the part taimon writes about is totally nonsense, there is a chance it is coded that way, but if so, it is still crazy
[08:15:46] <lynxlynxlynx> i've added a save vs death check to the spell, but if we add this 3/7 check, it could be removed and just be the else case
[08:18:59] <Avenger> is the turn undead level stat used anywhere in the process?
[08:19:16] <Avenger> maybe in the effect?
[08:20:26] <Avenger> if not, then it isn't too good. Because the PC's level should have an effect on the success
[08:20:44] <lynxlynxlynx> turnlevel > GetXPLevel(true)
[08:20:56] <lynxlynxlynx> (of course it is)
[08:22:06] <Lightkey> what are you guys talking ontopic again at this unholy hour?
[08:23:21] <Avenger> btw, i don't see, how turning works, in bg2's effect list it is routed to the pst 'RetreatFrom'
[08:23:24] <Lightkey> I think I should go to sleep, my head is killing me
[08:23:44] <Avenger> i see 0x6e RetreatFrom
[08:23:49] <Avenger> see you Lightkey
[08:26:04] <Avenger> bg games effect.ids should have 0x6e TurnUndead, to work
[08:29:03] <lynxlynxlynx> it works
[08:30:05] <lynxlynxlynx> bg doesn't have a TurnUndead effect so it is routed by us
[08:30:32] <Avenger> it doesn't have RetreatFrom either, as it is now, it calls into PSTEffects
[08:31:01] <Avenger> hmm, if you use 0x6e, but i thought you do
[08:31:34] <-- Gekz has left IRC (Changing host)
[08:31:34] --> Gekz has joined #GemRb
[08:37:45] <fuzzie> morning
[08:43:20] <Avenger> hello fuzzie
[08:43:28] <Avenger> what morning :)
[08:44:54] <fuzzie> i quite like the area tinting too
[08:45:18] <fuzzie> the first bg1 cutscene (the ambush) looks very nice being in the dark with rain
[08:46:00] <Avenger> hmm, yeah, true
[08:46:22] <fuzzie> but yes, refactoring is very boring :)
[08:46:39] <Avenger> the ambush reminds me, what about random encounter scenes?
[08:47:04] <Avenger> i saw a bugreport that you cannot leave them
[08:47:46] <fuzzie> yes, that seems like a game-breaker
[08:48:30] <fuzzie> i never understood how they worked, though
[08:49:21] <Avenger> they put you on a different game area than you are currently, they set the 'current game area' to the area you targeted. (i think)
[08:49:31] <Avenger> when you leave them, you are dropped on the real target
[08:49:47] <fuzzie> i think we didn't implement the prob==100 edge case properly, if they have that set in the world map
[08:50:00] <fuzzie> but if they don't use the world map at all, i don't know where that code is :)
[08:50:20] <Avenger> i thought each possible target area has their own ambush area
[08:50:35] <Avenger> and their exit simply drops you to the target without worldmap
[08:50:41] <Avenger> maybe it is different
[08:51:48] <fuzzie> ar0046 seems to be used in a lot of bg2 city areas
[08:52:13] <lynxlynxlynx> in bg2 i was able to leave the way i came (returns to the original), but not go forward as expected
[08:52:24] <lynxlynxlynx> the bg1 report says he can't go anywhere though
[08:52:37] <fuzzie> well, i don't see any code for this :)
[08:54:05] <fuzzie> but it seems like they're not in the worldmap file, unless i am blind
[08:54:45] <lynxlynxlynx> somehow they must be
[08:55:22] <fuzzie> sure , i just mean *i* don't see the code
[08:55:35] <Avenger> they are not in the node list
[08:55:40] <lynxlynxlynx> you get the here-i-am indicator on the worldmap in bg2 and i'm pretty sure the poisoned man encounter always happens at the same place, regardless of where you travel (could've been just the center of the rect)
[08:56:35] <Avenger> maybe it is always halfway from source to target
[08:57:05] <Avenger> do you know the poisoned man area resref?
[08:57:28] <lynxlynxlynx> no
[08:59:19] <fuzzie> well, i remember ambushes being shown which weren't halfway from source to target, but maybe that was because i was travelling via another area
[09:03:48] <lynxlynxlynx> can't find that harper dude
[09:04:31] <fuzzie> i quite like the idea of using motion sensors to control scrolling of gemrb, i wish i had a device with 640x480 resolution to try it
[09:06:10] <Avenger> yes fuzzie, there are very few ambush locations, they could be part of the path
[09:06:52] <Avenger> i don't know if it is possible to have two ambushes on the same path, though
[09:07:22] <Avenger> also, how it determines if you are currently on a path and where it stores the final destination
[09:07:42] <Avenger> probably the final destination is one of the area resrefs in the game
[09:07:56] <fuzzie> yes
[09:08:07] <fuzzie> can you save in an ambush area?
[09:08:13] <Avenger> not easily
[09:08:22] <lynxlynxlynx> not in the original
[09:08:28] <fuzzie> drat :)
[09:08:29] <Avenger> the ambush areas are flagged to no save possible
[09:08:44] <fuzzie> well that makes it easy for us, just store the resref in Game or whatever
[09:09:07] <lynxlynxlynx> renfeld is that harper
[09:10:52] <lynxlynxlynx> don't feel like replaying the bg2 intro again though
[09:11:24] <fuzzie> after wed, i hope to have some relaxing time playing bg2 a bit :)
[09:12:48] <lynxlynxlynx> that item init thing is probably the most annoying thing left besides spellcasting issues
[09:12:57] <fuzzie> got to do some of the things on the todo thing on the wiki before a lot of quests work though
[09:13:59] <fuzzie> i forget what we thought about the item init thing, but it's in the irc log somewhere
[09:14:23] <lynxlynxlynx> yeah, it was discussed before
[09:15:40] <fuzzie> i'm pretty sure we should fix it on item creation, but simple to make sure that's what the original does
[09:15:51] <fuzzie> but i really have to not get too distracted
[09:17:45] <lynxlynxlynx> so the correct info is in the data, right?
[09:19:15] <Avenger> what is the item init thing?
[09:19:27] <fuzzie> Avenger: we don't set charges when creating random items
[09:20:04] <lynxlynxlynx> and flags
[09:20:09] <Avenger> hmm
[09:20:15] <fuzzie> but yes, i think that just has to be copied from the item data
[09:20:39] <fuzzie> we thought about trying to fix other code to cope with zero charges, but i don't think that is helpful, you end up with weird savegames
[09:21:04] <Avenger> well, shops somehow recharge wands, so the data is somewhere in the item
[09:21:17] <fuzzie> well, this is mostly for single items, like scrolls
[09:21:33] <fuzzie> so where the charges is used for the stack
[09:21:44] <fuzzie> and we want 1 item in the stack and not 0 :)
[09:21:50] <fuzzie> i think it is not difficult to fix all of it, though
[09:21:54] <Avenger> in the extended header, there is a 'charges' field
[09:22:56] <Avenger> there is a little trick in shops though, i think they recharge only empty wands
[09:23:03] <Avenger> or maybe not?
[09:24:26] <lynxlynxlynx> don't empty wands get destroyed?
[09:24:48] <lynxlynxlynx> iirc also the price of a wand depends also on the number of charges
[09:25:27] <Maighstir_laptop> Yes, when you use the last charge, the want disappears
[09:25:38] <Maighstir_laptop> s/want/wand/
[09:25:43] <CIA-25> GemRB: 03lynxlupodian * rce45d66ce229 10gemrb/gemrb/core/Actor.cpp: use a 3/7 modifier when determining the effects of turning
[09:25:49] <Avenger> there is already a itm->Usages[0]=(ieWord) Roll(j,k,0);
[09:25:58] <Avenger> in ResolveRandomItem
[09:26:05] <fuzzie> but usually j=k=0 i think
[09:26:11] <Avenger> yeah
[09:26:38] <Avenger> i guess in that case, Usages[0] = item->getExtendedHeader(0)->Charges
[09:26:40] <Avenger> or something like that
[09:27:33] <fuzzie> and defaulting to 1 if there's no ext header, seems fine
[09:27:44] <fuzzie> i didn't know we had problems with flags, though
[09:27:59] <Avenger> Me neither, flags = 0 should be fine
[09:28:55] <fuzzie> but it seems like we could just copy them from the item too
[09:29:03] <Avenger> oops yes, if no header, don't use the header. But in that case the charge count is actually irrelevant
[09:29:38] <fuzzie> well, gemrb abuses Usages[0] for the stack count
[09:29:50] <Avenger> it is not only gemrb
[09:29:54] <fuzzie> yesw :)
[09:30:03] <fuzzie> original engine sets it to 1 here for the single stack, so we have to also
[09:30:17] <Avenger> hmm i agree
[09:30:30] <lynxlynxlynx> re flags: when testing the portal key the CREItem flags were random
[09:30:35] <Avenger> though it would help to find where exactly it gets set
[09:30:44] <fuzzie> do you remember which engine you made gemrb savegames load in?
[09:31:07] <fuzzie> i mean, apart from the problem with the actor removal times
[09:31:19] <Avenger> me? i tested gemrb saves in bg2, mostly
[09:31:31] <fuzzie> ok, so bg2 would be a good place to test
[09:31:32] <Avenger> the rest crashes awfully :)
[09:33:11] <fuzzie> not so surprised :)
[09:34:06] <fuzzie> but i have no idea where to look for the ambush thing.
[09:43:36] <raevol> hello!
[09:44:46] <Maighstir_laptop> What's the difference between "from file.py import *" and "import file.py"? (Assuming there is a difference, because both are used in various scripts)
[09:45:11] <Maighstir_laptop> eh, s/\.py//
[09:45:23] <lynxlynxlynx> more problems vs less problems
[09:45:32] <raevol> hmm i have 2 errors trying to make the latest git pull
[09:45:33] <lynxlynxlynx> -||- pollution
[09:46:02] <raevol> ah it looks like warnings are being treated as errors
[09:46:13] <lynxlynxlynx> which warnings do you get?
[09:46:47] <raevol> http://pastebin.com/FXEfNYG4
[09:48:37] <lynxlynxlynx> odd
[09:49:29] <wjp> off by one in the strncat call
[09:49:37] <fuzzie> Maighstir_laptop: 'from blah import *' just copies all the variables (including functions, etc) into your current scope
[09:50:08] <fuzzie> wjp: you can fix?
[09:50:33] <fuzzie> Maighstir_laptop: i think lynx is trying to get rid of those?
[09:50:45] <wjp> I'm guessing changing the _MAX_PATH to _MAX_PATH-1 will get rid of the errors
[09:50:56] <lynxlynxlynx> yep
[09:51:17] <lynxlynxlynx> it can mostly be scripted
[09:51:36] <lynxlynxlynx> i'm doing bg2 in more steps to find the perils
[09:52:11] <wjp> um, I'm confused, never mind me
[09:53:08] <fuzzie> no, i think you're right
[09:53:27] <fuzzie> am impressed at gcc following the program flow there
[09:53:32] <wjp> passing _MAX_PATH there is even more wrong than I thought at first
[09:53:47] <wjp> it needs to be _MAX_PATH - strlen(target) - 1, it seems
[09:54:22] <Maighstir_laptop> I was mostly wondering if I should use one over the other in some cases, if they should be the same, it's much clearer (for me) to use "import file", so I'll use that
[09:54:41] <fuzzie> Maighstir_laptop: that's the right conclusion, i think :)
[09:55:10] <lynxlynxlynx> for plain variable defines it doesn't really matter, but the from approach will be shorter
[09:55:31] <lynxlynxlynx> plain/constant
[09:58:03] <fuzzie> wjp: that looks right.
[09:58:41] <fuzzie> and strlen() is being called in there anyway.
[09:59:18] <-- Avenger has left IRC (Quit: bye!)
[10:05:26] <fuzzie> wjp: no commit? :)
[10:07:11] <wjp> I'm having an internal discussion about how far to optimize this function that shouldn't need optimization :-)
[10:07:35] <wjp> (e.g., strncat is just a strncpy if you already know strlen(target) in advance)
[10:07:38] <fuzzie> mm
[10:07:54] <wjp> and there's one more instance in WEDImporter.cpp it seems
[10:07:56] <fuzzie> strncpy pads with null bytes
[10:08:04] <wjp> true
[10:08:22] <wjp> a strncat(target+strlen(target), ...) then :-)
[10:08:22] <fuzzie> we had it somewhere and it ended up near the top of my profiles :(
[10:09:49] <fuzzie> seems so silly that strncat behaves as it does
[10:10:16] <wjp> we actually use it as intended in GUIScript.cpp
[10:10:27] <wjp> no, wait
[10:10:43] <wjp> elsewhere in VFS.cpp
[10:11:04] <fuzzie> with the slash-source pointer fiddling?
[10:11:08] <wjp> yes
[10:12:25] <raevol> CIA bot still report commits?
[10:13:11] <fuzzie> yes
[10:13:16] <raevol> :>
[10:13:39] <fuzzie> but i am studying for exams, no commits from me
[10:14:03] <raevol> i think wjp is looking at my problem?
[10:14:17] <fuzzie> mhm
[10:14:18] * wjp nods
[10:14:21] <fuzzie> prod him with a stick.
[10:14:24] <raevol> haha
[10:16:20] <fuzzie> a nice rounded non-harmful stick.
[10:16:46] <wjp> the prodding is strictly optional :-)
[10:16:54] * raevol finds a baguette
[10:24:32] --> pupnik has joined #GemRb
[10:28:03] <CIA-25> GemRB: 03wjpalenstijn * rea28db53ea24 10gemrb/gemrb/ (core/VFS.cpp plugins/WEDImporter/WEDImporter.cpp): Fix usage of 'n' argument to strncat
[10:28:06] <wjp> this should do it...
[10:28:26] <wjp> disclaimer: I wrote this before having had any coffee :-)
[10:28:31] <fuzzie> :o
[10:28:46] * fuzzie sets a mug of coffee in front of wjp
[10:28:56] <wjp> I already remedied the situation, but thanks :-)
[10:29:24] <raevol> passed 37%, so good news
[10:29:28] <fuzzie> just as well, you're not so conveniently placed for coffee delivery any more :)
[10:30:32] <raevol> failed to load core plugin, do i need to plugins-prepate
[10:30:32] <wjp> I hope(?) this error only triggers when constants are passed to strncat
[10:31:58] <fuzzie> raevol: if you're using autotools (configure)
[10:32:09] <raevol> well i used cmake..
[10:32:42] <fuzzie> then the plugins should already be there, i think
[10:32:44] <raevol> i made a dir in my gemrb checkout called build
[10:32:49] <raevol> and cmake .. in there, then make
[10:33:11] <fuzzie> maybe your GemRB.cfg doesn't have PluginsPath pointing to them?
[10:33:22] <fuzzie> they should end up in build/gemrb/plugins, if you did it like that
[10:33:44] <raevol> they are there
[10:33:50] <raevol> not sure where the gemrb.cfg is
[10:33:53] <fuzzie> or if you did an install afterwards, it should automatically find them if you don't set PluginsPath
[10:35:05] <raevol> k fixed my paths
[10:35:09] <raevol> now it's "Cannot load INI:
[10:35:31] <fuzzie> you need to point GemRBPath to the gemrb directory inside your tree, too
[10:35:48] <fuzzie> so i checked out gemrb in /home/fuzzie/gemrb, so my GemRBPath is /home/fuzzie/gemrb/gemrb
[10:35:51] <raevol> GemRBPath=/home/raevol/Development/gemrb/build/gemrb/
[10:36:21] <raevol> i maked in build
[10:36:24] <fuzzie> really got to fix the comments in the config files..
[10:36:32] <wjp> that one should be without the build/
[10:36:44] <wjp> I think
[10:36:46] <fuzzie> you want GemRBPath set to gemrb/ and PluginsPath set to build/gemrb/
[10:36:47] <fuzzie> yes
[10:36:53] <raevol> but then it'll point to my old build destination
[10:36:59] <fuzzie> that is ok
[10:37:17] <wjp> it's for finding static data such as overrides
[10:37:18] <fuzzie> because the PluginsPath makes it look for the built plugins in the new build destination
[10:37:30] <raevol> k now it says:
[10:37:41] <raevol> [GUIScript]: Check if /home/raevol/Development/gemrb/build/gemrb/GUIScripts/GUIDefines.py exists! [ERROR]
[10:37:51] <wjp> same for GUIScriptsPath
[10:37:54] <fuzzie> comment out the GUIScriptsPath line
[10:37:59] <raevol> :P
[10:38:10] <fuzzie> really really got to fix the config files i guess :)
[10:38:17] <wjp> that defaults to GemRBPath+GUIScripts ?
[10:38:20] <fuzzie> yes
[10:38:36] <wjp> or to GemRBPath, I should say
[10:38:55] <fuzzie> this confused me terribly on friday, i had to ask in here before working it out
[10:41:34] <raevol> cool, nighttime/weather effects in the intro fight for BG1 are nice :)
[10:41:46] <raevol> i see the spell particles still persist ;)
[10:41:52] <fuzzie> yes, and the viewport is still not right
[10:42:11] <raevol> hehe
[10:42:33] <raevol> good to see things moving though, much love for you guys
[10:42:38] <raevol> i gotta sleep now, but i will ttys!
[10:42:58] <fuzzie> ninight!
[10:43:05] <-- raevol has left IRC (Quit: Leaving.)
[10:45:41] <-- pupnik has left IRC (Ping timeout: 240 seconds)
[10:46:34] --> pupnik has joined #GemRb
[10:51:23] <-- pupnik has left IRC (Ping timeout: 265 seconds)
[11:30:58] <Maighstir_laptop> If GemRB.LoadWindow(0) manages to load the first window in the CHU file, why doesn't GemRB.LoadWindow(1) load the second one? I assumed the number was the window's ID? It's not like I have switched scripts or anything, did GemRB forget that a window pack is loaded?
[11:32:05] <lynxlynxlynx> well, does it exist? what is the error?
[11:32:50] <Maighstir_laptop> RuntimeError: Cannot find window #1 - DLTCEP says it exists though
[11:33:19] <Maighstir_laptop> code: http://pastebin.com/kxy4YHz2
[11:33:28] <lynxlynxlynx> are you sure you're running over that data?
[11:34:39] <Maighstir_laptop> yes, I only have a single copy of it
[11:36:27] <lynxlynxlynx> i'd recheck, dltcep saves in the game dir when you're working on external files
[11:36:38] <lynxlynxlynx> you could also run the file through ieparse
[11:36:47] <lynxlynxlynx> ../ieshell/ieparse.py ~/infinity/override/guirec.chu | grep Window
[11:37:05] <fuzzie> well, just re-opening the actual file in DLTCEP should be enough
[11:37:50] <Maighstir_laptop> thing is, I just edited the file in dltcep and saved it, and the file in my override folder changed its edited time
[11:38:04] <fuzzie> LoadWindow does expect an ID, anyhow
[11:38:33] <fuzzie> and the only way the windowpack is changed is if LoadWindowPack is called
[11:39:30] <Maighstir_laptop> GemRB was closed during editing, but didn't pick up the changes when relaunched
[11:40:02] <lynxlynxlynx> recheck the data.
[11:40:42] <fuzzie> if the data is good, make sure GemRB's debug output says it is actually picking it up from override
[11:44:09] <fuzzie> (and if the window pack is being changed, that would also be in the debug output..)
[11:45:33] <fuzzie> but the code path here is really simple
[11:45:53] <Maighstir_laptop> okay... stupid question, where do I find ieshell and its contents? git says ieshell doesn't exist in the same place as gemrb and win32, so I tried with ielister, which doesn't seem right
[11:45:57] <-- Gekz has left IRC (Read error: Connection reset by peer)
[11:46:15] <fuzzie> the only other thing i can think of is that you didn't actually set the ID, but the 'ID' field in DLTCEP is pretty clearly labelled
[11:46:37] <fuzzie> if a little confusing given that the control one below is labelled the same
[11:47:01] <Maighstir_laptop> the one below is for controls though
[11:47:06] <fuzzie> but the combobox is '<entry number> <ID>', so you want '2 1', i assume
[11:47:44] --> Gekz has joined #GemRb
[11:47:53] <fuzzie> i don't see anything which can go wrong on gemrb's side, although that doesn't mean there's not a bug
[11:48:17] <fuzzie> and the git module is 'ie_shell'
[11:48:21] <fuzzie> not sure why
[11:56:53] <Maighstir_laptop> ieparse.py says it's fine. There's a #1 with Window id: 1, and GemRB picks it up from override (the key file is just a shell because it needs to exist, doesn't actually point to any game data, everything is in override).
[11:57:11] <Maighstir_laptop> I'll upload the dataset and scripts somewhere, wait a minute
[11:57:26] <-- Gekz has left IRC (Read error: Connection reset by peer)
[11:58:33] --> Gekz has joined #GemRb
[12:05:09] <Maighstir_laptop> http://ops-area.net/annat/GemRB/smalldataset.zip It's about 6.7 MB; the dataset, guiscripts, and the results from that ieparse.py
[12:09:15] <-- Gekz has left IRC (Remote host closed the connection)
[12:09:30] --> Gekz has joined #GemRb
[12:10:16] <fuzzie> the CHGEN032.chu does look ok
[12:11:49] <fuzzie> can you dump the runtime output into pastebin? i can't actually try the data right now
[12:19:54] <fuzzie> hmm
[12:19:56] <Maighstir_laptop> http://pastebin.com/FvsfKqWf
[12:20:17] <fuzzie> i found the bug :)
[12:20:22] <fuzzie> and your paste confirms it
[12:20:23] <Maighstir_laptop> awesome
[12:20:36] <fuzzie> look carefully at the line of your code in the backtrace :p
[12:22:06] <fuzzie> i guess that since it's internal now, a "you already destroyed this window" error would be more appropriate
[12:22:26] <fuzzie> v.confusing as it is, because what it's complaining about is that, not about window ids at all
[12:23:59] <Maighstir_laptop> great, I forgot to change GenderWindow to PortraitWindow
[12:24:22] <fuzzie> lynxlynxlynx: you have a better suggestion for http://fuzzie.org/nfs/gemrb/error_tweak.txt ?
[12:27:04] <lynxlynxlynx> nope
[12:30:35] <fuzzie> probably a good idea for the object to self-destruct or something, will have to see
[12:30:52] * fuzzie pokes CIA-25
[12:31:38] <fuzzie> none of my recent pushes show up, does the git hook expect something i'm not doing?
[12:33:51] <lynxlynxlynx> are you doing something special?
[12:33:59] <lynxlynxlynx> i didn't get the mail yet btw
[12:34:35] <fuzzie> well, i'm pushing from my branch to sf:master
[12:34:57] <fuzzie> and it works, but apparently the hook doesn't notice it
[12:35:23] <fuzzie> so i'm wondering if it's checking source branch or something
[12:38:21] <lynxlynxlynx> i don't have access to check (if hooks is the right module)
[12:40:41] <fuzzie> i think they're just in /home/git/bla/repos/hooks or something
[12:40:55] <fuzzie> but i will leave it to someone who knows what they're doing
[12:45:40] <lynxlynxlynx> let's see if it is any better via ssh
[12:46:20] <Maighstir_laptop> Also, that error message mentioned window 1, when in fact it was window 0 that's unavailable (control 0 sits in window 0)
[12:47:53] <Maighstir_laptop> and from the diff it seems that would be no different
[12:49:36] <Maighstir_laptop> or I just don't understand the code well enough
[12:50:10] <fuzzie> well, these are gemrb-internal window IDs, which should never be exposed
[12:50:47] <fuzzie> so i just made it say 'window index #n' to differentiate it until someone comes up with a smarter fix
[12:51:07] <Maighstir_laptop> right
[12:51:41] <fuzzie> my first thought is that the window objects should wipe out their internal ids if you call Unload() on them :)
[12:51:55] <fuzzie> but i have no time for anything useful today.
[13:33:47] <-- tomprince_loki has left IRC (Ping timeout: 265 seconds)
[13:34:11] <lynxlynxlynx> does gemrb open a console window / log automatically on windows?
[13:34:40] <fuzzie> it depends how it's build, but i think the mingw one does
[13:34:45] <fuzzie> but that's not much help if it's BSODing
[13:35:23] <fuzzie> if this is the doesn't-make-sense forum post
[13:36:24] <fuzzie> and i know previously that testing these builds under wine is useless, so might just be a fundamentally broken build if no-one tested it?
[13:36:54] <lynxlynxlynx> it was also probably created on a 32bit host
[13:37:00] <tomprince> Yes.
[13:37:14] <lynxlynxlynx> plenty of room for disaster
[13:38:46] <fuzzie> isn't there always :)
[13:39:31] <Maighstir_laptop> The Mingw build automatically opens a console window, yes
[13:39:52] <tomprince> Can you redirect output to a file?
[13:40:43] <Maighstir_laptop> through >, yes, but that only works if you use the console to open gemrb in the first place
[13:41:20] <Maighstir_laptop> a command line switch would be easier (say -noconsole, or -output=none, output=file.txt)
[13:41:48] <fuzzie> not so easy to do
[13:41:53] <Maighstir_laptop> as that would work in a shortcut
[13:42:21] <fuzzie> but an actual logging system would be a good idea in the long-run
[13:43:47] <Maighstir_laptop> also, when redirecting output with >, a few lines are often cut off at the end, so I have to run through a second time while logging to console instead
[13:44:15] <fuzzie> i fiddled a bit with the idea but my first idea was terrible (trying to do per-line logs, but you really really want to log as you go, to catch crashes in the middle of things)
[13:51:02] <CIA-25> GemRB: 03fuzzie * r6cfb4aad6cfe 10gemrb/gemrb/plugins/GUIScript/GUIScript.cpp: clarify an error message, for now
[13:59:37] <-- Maighstir_laptop has left IRC (Read error: Connection reset by peer)
[14:19:47] --> Maighstir_laptop has joined #GemRb
[14:32:33] <CIA-25> GemRB: 03tom.prince * r4dd5c042debe 10gemrb/gemrb/ (4 files in 3 dirs):
[14:32:33] <CIA-25> GemRB: clang: Return NULL instead of false, in functions returning pointers.
[14:32:33] <CIA-25> GemRB: Signed-off-by: Tom Prince <tom.prince@ualberta.net>
[14:33:17] <lynxlynxlynx> Maighstir_laptop: classic adventures supposedly has some completely fresh areas
[14:33:31] <lynxlynxlynx> most are from ie or other games, but some are supposedly new content
[14:38:59] <Maighstir_laptop> The areas themselves are little problem, the most work now is in comprehending the guiscripts and getting to the point where I know how to start a new game :-P
[14:42:06] <fuzzie> you seem to be doing ok :)
[14:48:01] <fuzzie> the first obstacle is having a default game to start with, i guess
[14:48:32] <Maighstir_laptop> The chargen scripts in the existing games confuse me though, so it'll take a while piecing together the bits I need, and my artistic skills are lacking so I'm not sure if I'll be able to produce something resembling a plt or gameworld avatar
[14:48:48] <Maighstir_laptop> yes, that too
[14:49:34] <Maighstir_laptop> all in good time though
[14:51:23] <fuzzie> and it looks like that requires a world map too
[14:53:25] <lynxlynxlynx> first get a world running, so you have a solid base
[14:53:41] <lynxlynxlynx> the existing games are much too complicated to start from
[14:55:16] <Maighstir_laptop> yes, I did realise that long ago when I tried modding Icewind Dale, aiming to replace everything with stuff of my own making one bit at a time
[14:55:19] <fuzzie> well, it is nice to see something new
[14:55:39] <fuzzie> i'm just trying to do a warning here, you can't implement chargen first
[14:56:15] --> Gekz_ has joined #GemRb
[14:56:36] <Maighstir_laptop> hmm, I thought it looked like that but i was hoping i was wrong
[14:56:40] <fuzzie> areas/GUI/etc can wait
[14:57:37] <fuzzie> but you can't create an actor (player) without a default game loaded - that is hopefully just a question of an empty default.gam and an empty world map though
[14:58:34] <fuzzie> don't know if DLTCEP can create those?
[14:59:45] <-- Gekz has left IRC (Ping timeout: 240 seconds)
[15:00:55] <fuzzie> i also wonder if you have an opinion on what might help you code
[15:02:26] <fuzzie> this boilerplate GetControl/SetEvent/SetFlags/etc stuff could be replaced with something more magic, but perhaps that would just make it more difficult to understand
[15:04:53] --> Gekz has joined #GemRb
[15:09:35] <Maighstir_laptop> all those are just for the pre-game GUI though, it's always easier to understand when there's as little unnecessary cruft as possible so I'll probably do a new small dataset to learn how to load a game
[15:09:49] <fuzzie> GemRB.LoadGame(None) :-)
[15:10:47] <fuzzie> then you do CreatePlayer to get a player to mess with in chargen, and then EnterGame to actually start up the game, i think
[15:12:02] <lynxlynxlynx> and possibly fillplayerinfo
[15:12:08] <Maighstir_laptop> ...right, the game can't really be "none" though, can it? if I actually want to enter a game, i need a default.gam with an area and whatnot
[15:12:43] <fuzzie> i don't think you need an area et c
[15:12:49] <Maighstir_laptop> loading none is only for creating character files to load later, no?
[15:12:58] <fuzzie> but you do need a boilerplate default.gam, which is what LoadGame(None) loads
[15:13:22] <fuzzie> but i mean, from the GUI scripting side, it is just a few lines of code
[15:15:24] <fuzzie> you do LoadGame(None) to get default.gam loaded, CreatePlayer to get the player so that chargen can mess with it, and then EnterGame all at the end
[15:15:51] <fuzzie> and it has to be in that order, so you always need the LoadGame, no matter what you're doing
[15:16:04] <fuzzie> but it doesn't have to be any more complicated than that - you don't need an area or anything
[15:20:10] <fuzzie> although having said that, looks like it wants startpos/start/startare files because it sets those at init, stupid
[15:20:44] <fuzzie> contents don't matter though
[15:31:41] <Maighstir_laptop> I need a CRE for CreatePlayer?
[15:31:57] <lynxlynxlynx> yes
[15:32:10] <lynxlynxlynx> you pass the resref as the first parameter
[15:34:01] <fuzzie> i'm not sure why CreatePlayer needs a base to start with
[15:34:44] <fuzzie> is there anything special in that charbase? the EA settings etc, i guess
[16:01:19] <Maighstir_laptop> http://pastebin.com/6dK46dzb Wohoo, many new interesting errors! What could that missing "critical animation file" be referring to?
[16:05:18] <lynxlynxlynx> avatars.2da
[16:40:15] <-- Dark-Star has left IRC ()
[16:40:32] --> Dark-Star has joined #GemRb
[16:40:32] --- ChanServ gives channel operator status to Dark-Star
[17:40:11] <-- Gekz_ has left IRC (Quit: Leaving)
[17:40:38] <-- Gekz has left IRC (Quit: This computer has gone to sleep)
[18:14:17] <lynxlynxlynx> progress
[18:17:08] <fuzzie> oh?
[18:17:26] <lynxlynxlynx> almost got rid of all the from-imports
[18:21:40] <lynxlynxlynx> need find out why OpenOptionsWindow and OpenActionsWindow don't exist, but then it should all be a matter of replacing the remaining SetEventByName calls
[18:24:38] <fuzzie> don't exist?
[18:25:32] <lynxlynxlynx> missing
[18:25:42] <fuzzie> i mean, OpenOptionsWindow isn't missing
[18:25:43] <lynxlynxlynx> i'm sure it's just a circular include thing
[18:25:47] <fuzzie> oh, right
[18:26:31] <fuzzie> bg2's GUIOPT does import GUICommonWindows for silly window hacks
[18:26:41] <lynxlynxlynx> all of them do
[18:26:59] <lynxlynxlynx> i removed the mass import from MessageWindow and put module imports into GUICommonWindows
[18:27:01] <fuzzie> do you know why?
[18:27:15] <lynxlynxlynx> for the window init/close
[18:27:47] <fuzzie> i mean, iwd2 has a lot of this code, and i don't understand it at all
[18:28:14] <lynxlynxlynx> odd, iwd2 should be much simpler due to its simpler layout
[18:28:22] <fuzzie> well, iwd2 is mostly copied from the other games
[18:28:29] <fuzzie> so it's all broken
[18:28:37] <lynxlynxlynx> in general
[18:28:45] <fuzzie> i fixed up some of it a few weeks ago, enough to make it playable until you open a store
[18:28:59] <fuzzie> although stupid script bugs can trip you up right at the start
[18:29:18] <fuzzie> i realise that following the game rules is a different story, but i've learnt that i am best leaving that to other people
[18:36:29] <fuzzie> heh, i start a new iwd2 game and one of my PCs is invisible
[18:36:34] <fuzzie> broken animation
[18:37:54] <lynxlynxlynx> eh
[18:39:15] <fuzzie> i know, nightmare :)
[18:40:01] <fuzzie> just thought i might as well see if anyone broke iwd2's scripts
[18:40:10] <fuzzie> but it seems just as fine as it was
[18:40:19] <lynxlynxlynx> http://www.shsforums.net/index.php?showtopic=40964&st=80&p=459800&#entry459800 <-- there's a bit of extra docs here
[18:40:55] <fuzzie> but bg2 is broken
[18:41:09] <fuzzie> oh, this is leftover pyc files maybe
[18:42:59] <fuzzie> File "/home/fuzzie/src/gemrb/gemrb/GUIScripts/bg2/DualClass.py", line 484, in DCProfsDonePress
[18:43:02] <fuzzie> if not GemRB.HasResource(ClericTable, RES_2DA, 1):
[18:43:04] <fuzzie> NameError: global name 'RES_2DA' is not defined
[18:43:39] <fuzzie> ^- deleting all the pyc files doesn't seem to help
[18:45:21] <lynxlynxlynx> yeah
[18:45:27] <lynxlynxlynx> needs ie_restypes
[18:47:32] <CIA-25> GemRB: 03lynxlupodian * r9cb7bf062c11 10gemrb/gemrb/GUIScripts/bg2/DualClass.py: DualClass: ups, forgot an include
[18:47:48] <fuzzie> the portrait-switching code is buggier than i remember,too, but i think that's just my faulty memory
[18:48:58] <lynxlynxlynx> what do you perceive as new?
[18:49:34] <fuzzie> pick a non-mage char, go to a screen, pick a mage char, go to the mage spellbook screen, and you get the mage spellbook but the non-mage selected
[18:49:47] <fuzzie> pretty sure it must've been that way before
[18:49:53] <lynxlynxlynx> pretty sure
[18:50:05] <lynxlynxlynx> i don't think it is limited to guimg either
[18:50:52] <fuzzie> it's all in the python code, must find time to fix it
[18:51:45] <fuzzie> Biography is not working either?
[18:51:46] <lynxlynxlynx> you must find a lot of time
[18:52:10] <fuzzie> no errors, just doesn't work
[18:52:21] <lynxlynxlynx> biography didn't work for me, but i think it did at one point
[18:52:53] <lynxlynxlynx> could be the button doesn't have the event set
[18:52:53] <fuzzie> seems to be missing any SetVisible etc
[18:54:39] <fuzzie> yes, Avenger broke it
[18:54:53] <fuzzie> he removed the SetVisible in e559e333
[18:55:14] <fuzzie> let's see if that helps
[18:55:50] <fuzzie> yes, putting it back fixes it
[18:57:34] <lynxlynxlynx> :)
[18:57:45] <CIA-25> GemRB: 03fuzzie * re801e0e31e95 10gemrb/gemrb/GUIScripts/bg2/GUIREC.py: put ShowModal back into OpenBiographyWindow
[18:57:57] <fuzzie> oh, it likes me again.
[18:58:48] <fuzzie> random clicking and poking at things doesn't reveal any other new bugs, although calling that one 'new' is maybe exaggeration :)
[18:59:32] <fuzzie> so that is positive!
[19:01:02] <lynxlynxlynx> not in my working copy ;)
[19:01:48] <fuzzie> well, my main branch breaks all of the games, so :)
[19:02:08] <fuzzie> but i took to working in little branches and just doing 'git push sf HEAD:master' when i'm happy with one
[19:02:30] <fuzzie> i mean, in general, not just for gemrb
[19:03:12] <lynxlynxlynx> yeah it's handy
[19:05:21] <fuzzie> i like having people review my code, so pushing branches is v.helpful for that if there are people willing, too
[19:06:03] <fuzzie> much like tomprince's general work method, i guess :)
[19:06:26] <lynxlynxlynx> and it prevent the advanced users that keep using master (even if you don't want them to) from experiencing too much wip brokedness
[19:07:12] <fuzzie> tomprince: why the 'invert' branch?
[19:11:56] <fuzzie> i mean, just curious; it seems an improvement, although i'd leave 'func' as a harmless extra variable, but i would like to fiddle with that code, so
[19:14:59] <fuzzie> well, and as usual there are two things in one commit, but meh :)
[19:19:58] <fuzzie> File "./GUIScripts/bg2/GUISAVE.py", line 45, in OpenSaveWindow
[19:19:59] <fuzzie> GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE)
[19:19:59] <fuzzie> NameError: global name 'WINDOW_INVISIBLE' is not defined
[19:21:09] <lynxlynxlynx> from GUIDefines import *
[19:21:45] <fuzzie> well, i'm just reporting them to you because you might know if it might be missing somewhere else too, etc
[19:21:51] <fuzzie> if you'd prefer i just fix them myself, i'll do that
[19:22:12] <lynxlynxlynx> this one is my fault
[19:22:28] <lynxlynxlynx> you rather go do something smart
[19:23:33] <lynxlynxlynx> i'll do more thorough testing when i'm done with this overhaul
[19:23:53] <fuzzie> sure, i'm just encountering things as i'm testing myself
[19:28:47] <lynxlynxlynx> excellent :)
[19:55:46] --> barra_library has joined #GemRb
[20:09:24] <CIA-25> GemRB: 03lynxlupodian * r4bf94776af5f 10gemrb/gemrb/GUIScripts/bg2/GUISAVE.py: bg2: GUISAVE needs GUIDefines
[20:09:27] <CIA-25> GemRB: 03lynxlupodian * r18ded79a129b 10gemrb/gemrb/plugins/GUIScript/PythonHelpers.cpp:
[20:09:27] <CIA-25> GemRB: StringCallback::call: improved the error message to make it distinguishable
[20:09:27] <CIA-25> GemRB: from the one in GUIScript::RunFunction
[20:09:53] <tomprince> fuzzie: Just a cleanup I noticed while l was looking at the gamescript stuff.
[20:12:28] <lynxlynxlynx> i see what my problem is
[20:12:50] <lynxlynxlynx> = GUIScript::RunFunction
[20:13:43] <lynxlynxlynx> the environment it uses doesn't see my functions anymore, but the scripts themselves do
[20:14:12] <fuzzie> yes, the functions have to be in MessageWindow
[20:14:13] <lynxlynxlynx> should the calls also be changed with module prefixes?
[20:14:31] <lynxlynxlynx> why MessageWindow?
[20:14:39] <fuzzie> isn't it MessageWindow?
[20:14:49] <fuzzie> yes, it is
[20:14:50] <lynxlynxlynx> probably, because it mass imported everything
[20:15:02] <fuzzie> that's the module which gets SetNextScript-ed
[20:15:19] <fuzzie> tomprince suggested having a seperate module for the RunFunction lookups
[20:16:05] <fuzzie> i would like a third way, but i can't think of one :(
[20:16:58] <lynxlynxlynx> i wouldn't like to move all those unrelated functions together, but the module could properly import everything and then use wrappers to call into the real code
[20:17:36] <fuzzie> well, this is why i'd like a third way: introducting a module full of wrapper/imports with no real purpose is kinda silly
[20:17:46] <fuzzie> but obviously the current solution is no good
[20:18:11] <fuzzie> one thing to bear in mind is that some of the RunFunction calls will be gone as soon as someone makes keybindings work -- and I will do that if no-one else gets to it in the next few days, darnit
[20:18:42] <tomprince> My thought was more along a dictionary available to C++ and python, where the functions are stored.
[20:18:58] <fuzzie> well, that idea seems worse than the module thing
[20:19:09] <tomprince> Which is in fact what it is right now, but that is just abusing the module dictionary of the SteNextScript-ed module.
[20:19:15] <lynxlynxlynx> how about RunFunction( "GUICommonWindows.UpdatePortraitWindow" );
[20:19:32] <fuzzie> i want to keep it simple from the python side
[20:19:42] <fuzzie> which means not requiring yet more mandatory code
[20:20:14] <fuzzie> lynxlynxlynx: well, how do you decide which module names to hardcode for which things?
[20:20:31] <tomprince> If we went that route, I would rather RunFunction("GUICommonWindows", "UpdatePortraitWindow")
[20:20:37] <lynxlynxlynx> we don't redefine stuff, do we?
[20:21:17] <fuzzie> tomprince: well, implementation details :-)
[20:21:29] <tomprince> Yes.
[20:21:43] <fuzzie> lynxlynxlynx: well, i mean, it means you have to change the C++ side if you decide that things would be better off in different modules
[20:22:52] <lynxlynxlynx> yes, i know
[20:23:25] <fuzzie> but i think your insight is better than mine, here
[20:24:23] <fuzzie> tomprince: do you think you might get around to committing that gamescript cleanup in the next few days?
[20:24:53] <tomprince> I can. I haven't done any real testing of it.
[20:25:11] <fuzzie> well, i'll try and test it if you can split out the error-handling changes
[20:25:16] <tomprince> Done.
[20:25:50] <fuzzie> you are magic!
[20:26:08] <tomprince> You've made me get really good at splitting up commits. :)
[20:26:11] <tomprince> Which is a good thing.
[20:26:11] <fuzzie> but it is something which i would do myself otherwise
[20:26:17] <fuzzie> i mean, the changes you made
[20:26:34] <fuzzie> not for cleanup reasons but because i wanted the actor iteration on the outside so i can filter arbitary actors :)
[20:26:57] <fuzzie> so you saved me work by complete accident!
[20:28:23] <tomprince> :)
[20:28:32] <tomprince> That is one of my aims.
[20:28:39] <tomprince> .. not the accident bit.
[20:36:50] <lynxlynxlynx> re RunFunction: so RunFunction("GUICommonWindows", "UpdatePortraitWindow") it is?
[20:37:19] <lynxlynxlynx> i'll need this to finish my work and it probably doesn't affect the untuched games either
[20:37:21] <fuzzie> that would be a really easy fix to put in right now
[20:37:38] <lynxlynxlynx> yep
[20:37:40] <fuzzie> and then could worry about it later
[20:37:51] <tomprince> Give 20 min.
[20:37:59] <lynxlynxlynx> counting! :P
[20:38:02] <lynxlynxlynx> hehe
[20:38:13] <fuzzie> hehe
[20:38:27] <fuzzie> another forum post mentioning instants..
[20:38:51] <fuzzie> let's see if i get any more information from my overly-excited reply there
[20:39:14] <lynxlynxlynx> the one where it was mentioned midsentence? :)
[20:43:01] <fuzzie> hm
[20:43:06] <fuzzie> ok, so random items still don't work?
[20:43:27] <lynxlynxlynx> the rndtres stuff?
[20:43:37] <fuzzie> yes
[20:43:47] <lynxlynxlynx> haven't really tested it
[20:43:51] <fuzzie> just going back to our discussion earlier
[20:44:03] <fuzzie> you think flags are broken on all items, or just random ones?
[20:44:20] <lynxlynxlynx> all, the portal key is pretty deterministic
[20:44:58] <fuzzie> oh
[20:45:01] <lynxlynxlynx> not sure if fresh ground piles (loot) are affected, but stuff in containers definitely is
[20:46:28] <fuzzie> it's a bit confusing
[20:46:45] <fuzzie> seems like 5fa7dd34 (which came out of our last discussion) should have fixed it
[20:47:29] <fuzzie> i mean, for my bug
[20:48:03] <lynxlynxlynx> you're always getting the same item?
[20:48:24] <fuzzie> no, i still get unusable scrolls/etc
[20:50:19] <lynxlynxlynx> j,k?
[20:50:49] <fuzzie> 1/1, so Roll() should give 1, so meh
[20:50:54] <fuzzie> but i don't understand the code
[20:52:26] <tomprince> or.cz/commands
[20:52:33] <tomprince> Very much a hack at this point.
[20:53:43] <fuzzie> hm
[20:53:48] <lynxlynxlynx> fuzzie: step through it with gdb, that usually helps
[20:53:49] <fuzzie> so, you don't do the trivial thing?
[20:53:58] <fuzzie> i mean, i was thinking we could just do lynx's thing and have it done in 20 minutes
[20:54:39] <fuzzie> making something like or.cz/commands work is going to be days
[20:55:11] <lynxlynxlynx> it looks overengineered to me
[20:57:03] <tomprince> Well the idea is just to use a specified dictionary for calls C++ -> python
[20:57:08] <fuzzie> well, it's pushing the problem to the python side
[20:57:14] <tomprince> Rather than the dictionary of a random module.
[20:57:22] <fuzzie> which is maybe the only solution in the long-run, but not something to commit in a rush.
[20:58:08] <tomprince> I agree.
[20:58:31] <fuzzie> so, you want to try prototyping the right way and i add the hack lynx wanted? :)
[20:59:16] <tomprince> Yes. I can do that.
[21:00:56] <fuzzie> the prototyping, or the hack?
[21:03:28] <tomprince> Missed the "i" there.
[21:04:14] <fuzzie> well, i have real work to do, if you're willing :)
[21:04:23] <tomprince> Half way done.
[21:05:07] <fuzzie> i hacked up something similar earlier when i was pondering, just adding a modulename=NULL second parameter to RunFunction and then some trivial handling for that
[21:05:18] <fuzzie> and then i figured lynx could change the callers
[21:05:35] <fuzzie> but i haven't touched the python API in ages, so i would rather trust your code
[21:19:11] <fuzzie> i just thought maybe it would be impossible for you to resist refactoring :)
[21:30:24] <tomprince> or.cz/master
[21:32:04] <-- barra_library has left IRC (Quit: Verlassend)
[21:32:35] <fuzzie> not showing up on the web ui?
[21:34:15] <tomprince> Apparently not. is now.
[21:36:02] <fuzzie> why PyImport_AddModule and not PyImport_Import?
[21:36:36] <fuzzie> and i notice you didn't resist fiddling with things :)
[21:36:55] <fuzzie> but it looks otherwise identical to mine, except i used the second param to avoid the FIXME
[21:37:25] <lynxlynxlynx> it is a long school
[21:37:36] <fuzzie> it builds fine on msvc6?
[21:38:12] <fuzzie> it seems like you're also going to leak references
[21:39:28] <fuzzie> oh, no
[21:39:40] <fuzzie> right, AddModule circumvents the import api and so can return a borrowed ref
[21:40:54] <tomprince> Although, i think ImportModule actually makes more sense.
[21:41:37] <fuzzie> why use the low-level api at all?
[21:42:23] <tomprince> As opposed to?
[21:42:24] <fuzzie> but it doesn't matter at all with the current setup, so not to worry about now
[21:42:30] <fuzzie> well, PyImport_Import is the high-level function
[21:43:27] <fuzzie> which is what we're using elsewhere for loading pure-python modules, i thought
[21:43:30] <tomprince> That is in fact what I was going to do.
[21:43:32] <fuzzie> no longer at the code
[21:44:53] <fuzzie> well, ImportModule is the low-level stuff, so confused :)
[21:45:05] <fuzzie> but best just to commit *something*, i think
[21:46:39] <lynxlynxlynx> well yeah :P
[21:46:47] <lynxlynxlynx> 20m is up
[21:47:11] <lynxlynxlynx> there's no real rush though, i won't restart my work in the morning, but later
[21:49:04] <CIA-25> GemRB: 03tom.prince * re28f71beafe2 10gemrb/gemrb/ (3 files in 2 dirs):
[21:49:04] <CIA-25> GemRB: GUIScript: Make RunFunction take a module paramater.
[21:49:04] <CIA-25> GemRB: This is a stop-gap, until we get a proper namespace for
[21:49:04] <CIA-25> GemRB: C++ -> python calls.
[21:49:20] <fuzzie> well, or someone comes up with a better idea :)
[21:50:39] <tomprince> Well, I think that any idea will involve a separate namespace of some sort, whatever form that namespace takes.
[21:51:32] <fuzzie> well, i have been pondering ideas about replacing the whole system
[21:51:45] <fuzzie> but still found nothing that isn't a mess
[21:51:48] <fuzzie> so meh
[21:52:43] <tomprince> What thought have you had.
[21:53:30] <tomprince> Even if they are all a mess, there might be the germ of something...
[21:53:40] <fuzzie> well, dealing with it in bits and pieces,mostly.
[21:54:00] <fuzzie> move more logic to the python side, hand it "this happened!" notifications and let it handle them.
[21:54:56] <fuzzie> for things like containers, dialogues, death, levelup checks, lots of things could potentially be handled that way.
[21:55:12] <fuzzie> but i don't think it's a good idea, it is just pondering.
[21:55:30] <fuzzie> removing the unnecessary RunFunction calls definitely a good start, though.
[21:56:28] <fuzzie> did you get anywhere with the listbox thing, by the way?
[21:56:31] <fuzzie> i noticed there was no branch
[21:57:47] <tomprince> No. I haven't done anything more with it yet.
[21:57:55] <tomprince> I'll have a look at it sometime this week.
[21:58:07] <fuzzie> well, i'm just curious
[21:58:32] <fuzzie> Maighstir's brand-new scripts made me think a bit more about how to improve the GUIScript side
[21:58:35] <tomprince> It needed the callback support which went in yesterday, so I couldn't test.
[21:59:50] <fuzzie> ok :)
[22:00:34] <-- lynxlynxlynx has left IRC (Remote host closed the connection)
[22:02:58] --- Dark-Star is now known as Dark-Star|away
[22:03:27] <tomprince> We will also have to deal with CallbackFunction/CheckFeatCondition
[22:04:16] <fuzzie> rather you than me
[22:04:27] <fuzzie> i don't even want to try decoding CheckFeatCondition
[22:04:58] <fuzzie> at a glance, i didn't understand why it was in C++ at all
[22:05:31] <tomprince> My thoughts exactly.
[22:07:32] <fuzzie> looking at history, i guess it kinda grew over time
[22:11:17] <tomprince> I'll probably be gone mid-July to late September.
[22:11:22] <fuzzie> ok :)
[22:11:48] <fuzzie> you must notice there are huge gaps in the time all of us spend on gemrb, so 2.5 months is not much..
[22:12:45] <tomprince> :)
[22:13:24] <tomprince> Just thought I'd mention it ahead of time, rather than just disappearing.
[22:13:31] <fuzzie> just leave instructions for the things we shouldn't completely ruin while you're gone :)
[22:15:02] <tomprince> :)
[22:16:53] <tomprince> Also wondering if there are any architectural things people would like done, before I go.
[22:21:58] <fuzzie> well, i can do the boring moving-code-around stuff
[22:22:03] <fuzzie> the listbox would be nice, i'm sure
[22:24:53] <fuzzie> and i have no shortage of random requests, but those could never end
[22:33:23] <fuzzie> my #1 wish is for a plan for CharAnimations, but that is not just refactoring work
[22:35:38] <tomprince> Have you seen http://www.shsforums.net/forum/594-infinity-animations/
[22:36:21] <fuzzie> yes, but it's not very interesting
[22:36:49] <fuzzie> bg2 animation mods just hack the executable, right?
[22:37:27] --> raevol has joined #GemRb
[22:37:47] <tomprince> I don't know if there is anything useful there, but I would like to at least support it.
[22:37:51] <fuzzie> i mean, maybe i miss something, but ->bg2 means throwing away data
[22:38:09] <fuzzie> obviously we want to support them via data files though, yes
[22:38:16] <fuzzie> i thought you looked into that already
[22:38:36] <fuzzie> i remember discussing how patching avatars.2da wasn't particularly viable because our avatars.2da is such a huge mess that in some periods we change it daily
[22:39:55] <tomprince> Not enough to implement it, since I haven't grokked the CharAnimation code yet.
[22:40:06] <tomprince> And yes, it clearly looses information.
[22:40:26] <fuzzie> well, the avatars.2da datafile itself is nice and simple
[22:41:10] <fuzzie> base filenames plus animation type id
[22:41:30] <tomprince> What would be really cool is if we could support it in such a way that we use the original animations, rather than their converted ones.
[22:41:33] <fuzzie> the animation type id being equivalent to CAnimation subclass in the original
[22:41:53] <fuzzie> so you can indeed just add an original animation in there
[22:42:37] <fuzzie> the CharAnimations code is careful to only change behaviour based on the animation type, not the game type
[22:47:04] <tomprince> Is your issue with the CharAnimation stuff, that you want it table driven, or something, rather than all the switch statements?
[22:47:14] <fuzzie> well, my issue is that at the moment it doesn't work
[22:47:42] <tomprince> :)
[22:47:48] <fuzzie> two big problems: one of which is that it keeps looking for nonexistant files, and the other of which is that it doesn't support PS:T's huuuge list of animation types
[22:48:27] <fuzzie> and this is why i said it wasn't just refactoring work, because i'm not quite sure what it needs to actually be doing
[22:49:37] <tomprince> Well, at the very least, it would be good to teach ResourceManager to cache negative results.
[22:50:31] <fuzzie> changing the subject, or just thinking about getting rid of the errors?
[22:51:11] <tomprince> Getting rid of the errors.
[22:51:22] <fuzzie> i mean, we want to print big error messages there anyway
[22:51:48] <fuzzie> no need to actually print two, but doesn't seem like something to prioritise :)
[22:52:39] <tomprince> As an aside, do you have any idea why the bag of holding spams the console with loading bag*.sto messages?
[22:53:01] <fuzzie> maybe for bg2 we should just look into ripping the data out of the bg2 exe, if the Infinity Animations people decoded it so well
[22:53:10] <fuzzie> well, it *doesn't*
[22:53:20] <fuzzie> but scripts do :)
[22:54:04] <fuzzie> if something does an inventory check which looks in bags in a loop, then it has to re-open them; if you are thinking "surely we could hold bags in the inventory open", yes, that would be an appreciated fix
[22:55:58] <fuzzie> see GSUtils.cpp:354
[22:58:45] <fuzzie> 22:50 <Avenger> i guess they should be cached and kept in memory, at least bags.
[22:58:59] <fuzzie> ^- approval from our dear leader when i asked, even
[22:59:04] <tomprince> :)
[23:01:02] <fuzzie> ok, i was a bit hasty in judging the Infinity Animations thing, it is a terrible hack but the information is more useful than i thought
[23:01:37] <Maighstir_laptop> Is LoadGame() being done in parallel to the function it's called in? I was a bit confused when it didn't work when in the same function as CreatePlayer(). No problem really, just wondering why.
[23:02:28] <fuzzie> yes, it is done after you return from python
[23:02:36] <tomprince> I think it is done next frame.
[23:02:50] <fuzzie> we could fix that for the None case
[23:03:16] <fuzzie> i assume
[23:03:31] <tomprince> I would like to change it in the general case, if I can show that it isn't more error prone.
[23:03:39] <tomprince> But that won't happen this summer.
[23:04:01] <fuzzie> well, i don't see it would be a problem in general
[23:04:09] <fuzzie> i mean, for LoadGame
[23:04:24] <Maighstir_laptop> not necessary... and none does load a game, though one with far less data in it than a normal savegame
[23:05:41] <fuzzie> because i don't see why any code would want to keep running after a normal LoadGame, and you wouldn't load the default one during a game
[23:06:13] <fuzzie> but that code needs a lot of thinking
[23:06:22] <fuzzie> one of my first wishes was to fix the load progress bar
[23:07:15] <fuzzie> because on an embedded device you sit there for 2 minutes with it at 100%..
[23:07:55] <fuzzie> anyway, i should sleep :)
[23:10:23] <tomprince> night.
[23:11:08] <fuzzie> maybe you might want to think about putting a todo list on the wiki, with notes about what you'd like to do?
[23:11:57] <fuzzie> especially if i am going to be reverse-engineering original engine behaviour over the summer, a list of "i want to know how this works" would be something
[23:13:31] <fuzzie> i already know to look into dialog instants and actor switching in dialogs, from patches of yours..
[23:13:36] <fuzzie> but. yes. gone!