#gemrb@irc.freenode.net logs for 25 Apr 2011 (GMT)

Archive Today Yesterday Tomorrow
GemRB homepage

[01:07:47] <-- _pickle has left IRC (Remote host closed the connection)
[01:08:35] --> pupnik_ has joined #gemrb
[01:12:30] <-- pupnik has left IRC (Ping timeout: 260 seconds)
[01:33:49] <-- |Cable| has left IRC (Ping timeout: 250 seconds)
[01:34:04] --> |Cable| has joined #gemrb
[01:54:25] --> Bo_Thomsen has joined #gemrb
[03:33:58] <-- Bo_Thomsen has left IRC (Quit: Leaving.)
[07:07:45] --> adominguez has joined #gemrb
[07:52:27] --> lynxlynxlynx has joined #gemrb
[07:52:27] --- ChanServ gives channel operator status to lynxlynxlynx
[09:15:00] --> Bo_Thomsen has joined #gemrb
[09:27:07] <pupnik_> "You pity the boy whose uniform identifies his servility." - Frank Chodorov
[09:50:36] <fuzzie> hm
[09:50:46] <fuzzie> no-one appears to have fixed file handling overnight, i see
[09:51:25] <fuzzie> although tomprince's branches are awesome as usual
[09:53:16] <pupnik_> :)
[10:02:04] <lynxlynxlynx> hah
[10:02:20] <lynxlynxlynx> i blindly tried modifying pathfind.2da and found the relevant bit
[10:02:26] <fuzzie> great
[10:02:34] <lynxlynxlynx> and it was set in all games but bg2 and pst already
[10:03:35] <fuzzie> :)
[10:03:51] <lynxlynxlynx> maybe i was a victim of printf again
[10:04:09] <lynxlynxlynx> 'b' & %d
[10:06:58] <CIA-52> GemRB: 03lynxlupodian * r28e81ee93ae4 10gemrb/gemrb/override/ (bg2/pathfind.2da pst/pathfind.2da):
[10:06:58] <CIA-52> GemRB: bg2: fixed searchmap for ar0202
[10:06:58] <CIA-52> GemRB: this bit is set as passable in all the other games, so adjusting pst too
[10:08:07] <fuzzie> i am back to making this cache stuff work
[10:08:20] <fuzzie> can get quite awesome i/o improvements with a few fixes
[10:12:13] <dhewg> lynxlynxlynx: thx for sunray :)
[10:12:43] <lynxlynxlynx> :)
[10:13:01] <dhewg> works as intended now afaict
[10:13:12] <dhewg> but sometimes it segfaults
[10:13:23] <dhewg> i dont have a receipe to reproduce
[10:13:23] <lynxlynxlynx> where?
[10:13:27] <lynxlynxlynx> hmpf
[10:13:31] <dhewg> sometimes it works, sometimes not
[10:13:33] <dhewg> http://pastie.org/1830885
[10:13:47] <dhewg> thats cherry-picked to 0.6.4 fwiw
[10:14:12] <fuzzie> you should use master! :P
[10:14:41] <dhewg> i run through the world with 5 or 6 bags
[10:14:47] <fuzzie> yes
[10:14:47] <dhewg> make that usable and i will :P
[10:14:56] <fuzzie> it's not soooo bad right now
[10:15:05] <dhewg> get 5 bags
[10:15:08] <fuzzie> but let me fix this stuff
[10:15:08] <dhewg> really
[10:15:15] <fuzzie> i have some 8 in my test game
[10:15:30] <dhewg> i dont have fancy hw, but with that its like 5fps, if not lower
[10:15:58] <lynxlynxlynx> i'll add a guard there
[10:16:17] <lynxlynxlynx> wait, do you have a wild mage?
[10:16:37] <dhewg> is that a char kit?
[10:17:00] <lynxlynxlynx> yes
[10:17:05] <dhewg> then no
[10:17:15] <lynxlynxlynx> then i'll wait
[10:17:45] <fuzzie> oh wow, the whole of gemrb is embarassingly faster for me now :/
[10:18:26] <dhewg> wait?
[10:19:58] <dhewg> the line in question is "if (spl->GetExtHeader(SpellHeader)->features[i].Opcode == opcode) {"
[10:20:27] <dhewg> which doesnt look obviously wrong with the for on top of that
[10:21:07] <dhewg> fuzzie: lol, sounds great
[10:21:29] <dhewg> what im seeing is that gemrb always eats as much cpu as it can get
[10:22:22] <fuzzie> it tries for 60fps
[10:22:29] <fuzzie> shouldn't use more than that
[10:23:22] <dhewg> i thought the original runs at 30fps?
[10:23:35] <fuzzie> yes
[10:23:37] <fuzzie> so gemrb sucks
[10:23:46] <dhewg> i didnt say that :P
[10:23:59] <dhewg> i really enjoy playing so far in gemrb in fact
[10:24:14] <dhewg> and seriously, those few fixes from yesterday were a big step
[10:24:38] <fuzzie> i am busy squeeing at this speedup
[10:24:49] <dhewg> not really obviously in the first parts of the game
[10:25:09] <dhewg> but if you run into mages every 2nd room its alots less annoying :)
[10:25:11] <fuzzie> hehe
[10:25:29] <dhewg> which i kind of do :)
[10:25:38] <fuzzie> whee, i can click inventories and there isn't an annoying pause while it loads all the icons
[10:25:54] <dhewg> oh, that rings a bell
[10:26:08] <dhewg> those really annoying gui flickers/breakages...
[10:26:22] <dhewg> i think thats a double pause
[10:26:25] <fuzzie> i still can't reproduce those
[10:26:36] <fuzzie> on master, i mean
[10:26:38] <dhewg> normally, you can save when you pause via space
[10:26:50] <fuzzie> and i pause compulsively :P
[10:26:51] <dhewg> when the breakage occurs, it doesnt work via gui
[10:27:04] <dhewg> when i unpause, it works
[10:27:15] <dhewg> as if the gui part thinks its still paused
[10:34:10] <dhewg> when 'knock' fails or suceeds, should it print a message?
[10:34:25] <fuzzie> yes
[10:34:31] <fuzzie> i think?
[10:34:39] <dhewg> on chests too, right?
[10:34:56] <dhewg> because i dont see anything when using it on a locked chest
[10:39:54] --> mihairu has joined #gemrb
[10:49:55] <lynxlynxlynx> i don't remember either, better check in the original
[10:50:43] <CIA-52> GemRB: 03lynxlupodian * re377bb26551f 10gemrb/CMakeLists.txt: cmake: added a pretty-option-printing macro
[10:50:46] <CIA-52> GemRB: 03lynxlupodian * r2ffea7a5e8b2 10gemrb/CMakeLists.txt: cmake: also display the value of INSOURCEBUILD
[10:50:55] <CIA-52> GemRB: 03lynxlupodian * r69868e92a355 10gemrb/NEWS: ups, completely forgot about the regular news update
[10:52:09] <fuzzie> gah :P
[10:52:25] <fuzzie> someday my commit will work
[10:53:38] <lynxlynxlynx> work faster :P
[10:54:03] <fuzzie> re NEWS: i would mention store fixes, lack of dying squirrels, stack fixes
[10:54:16] <fuzzie> am sure it can wait for next time ;p
[10:55:07] <dhewg> 'make everything work better and less annoying' summarizes the last days of bug fixes pretty good imho :)
[10:56:51] <fuzzie> ok, *now* use master pls :P
[10:56:58] <CIA-52> GemRB: 03fuzzie * r013dafed2d2f 10gemrb/gemrb/core/System/SlicedStream.cpp: reduce the number of seeks that SlicedStream makes
[10:57:09] <CIA-52> GemRB: 03fuzzie * r88d0fae352df 10gemrb/gemrb/core/System/FileStream.cpp: remove an unneeded seek in FileStream
[10:57:09] <CIA-52> GemRB: 03fuzzie * rfa62f77d5e43 10gemrb/gemrb/plugins/KEYImporter/ (KEYImporter.cpp KEYImporter.h): add a simple most-recent BIF cache to KEYImporter
[10:57:11] <CIA-52> GemRB: 03fuzzie * r4a707c626ebd 10gemrb/gemrb/ (5 files in 4 dirs):
[10:57:11] <CIA-52> GemRB: Read small (<16k) files into a MemoryStream.
[10:57:11] <CIA-52> GemRB: This makes reading these small files a lot faster.
[10:57:11] <CIA-52> GemRB: Heavily based on a patch by tomprince.
[10:57:12] <CIA-52> GemRB: 03fuzzie * r93b3be4e25cb 10gemrb/gemrb/core/ (CMakeLists.txt System/MemoryStream.cpp System/MemoryStream.h):
[10:57:12] <CIA-52> GemRB: VFS: Add back MemoryStream.
[10:57:12] <CIA-52> GemRB: This is a slightly modified version of tomprince's patch.
[10:57:12] <CIA-52> GemRB: Signed-off-by: Tom Prince <tom.prince@ualberta.net>
[10:59:28] <fuzzie> i would appreciate some tests of that, since it pokes fingers into all the file accesses
[10:59:45] <lynxlynxlynx> so how speedy is it now?
[10:59:55] <lynxlynxlynx> just back to normal or an actual improvement?
[10:59:57] <fuzzie> well, better than 0.6.4 :P
[11:00:04] <lynxlynxlynx> excellent
[11:00:26] <dhewg> sweet
[11:00:31] <dhewg> time to switch? :)
[11:00:46] <lynxlynxlynx> definitely
[11:01:55] <fuzzie> well, time to make sure it's speedy for you
[11:02:11] <dhewg> well thats easy to find out :)
[11:04:00] <fuzzie> tomprince's idea about doing decryption in the memorystream is an excellent one
[11:04:17] <fuzzie> but i didn't do that in these patches in the interests of simplicity
[11:06:23] <lynxlynxlynx> no noticeable gain here
[11:07:23] <lynxlynxlynx> in load times that is
[11:07:36] <fuzzie> the real speed improvements for me are a bit at load time, quite a bit poking through inventories, and of course STOs no longer sucking
[11:07:53] <fuzzie> but the decompression at load time tends to drown most other things out
[11:10:28] <dhewg> you could try if patching zlib helps
[11:10:51] <fuzzie> the original engine compresses in 8192 byte blocks or something
[11:10:56] <dhewg> http://mail.madler.net/pipermail/zlib-devel_madler.net/2011-April/002550.html
[11:11:15] <fuzzie> huh, nice
[11:11:21] <dhewg> yeah
[11:11:29] <dhewg> also for a shitload of other archs
[11:11:45] <fuzzie> i even have altivec
[11:11:47] <dhewg> stumbled upon that via a NEON thread on linaro-devel
[11:12:32] <fuzzie> lynxlynxlynx: but i assume it doesn't seem worse than 0.6.4 still..
[11:13:15] <lynxlynxlynx> no will to test that
[11:13:31] <lynxlynxlynx> btw, the ravager also causes item description problems - the bam is too big
[11:13:44] <fuzzie> where can i find it to test?
[11:14:33] <dhewg> fuzzie: big improvements on master
[11:14:45] <fuzzie> my every-bag-i-could-find testcase is still not as speedy as i'd like
[11:15:12] <dhewg> but still a few hickups, like a noticable pause when it pokes through the bags (i guess)
[11:16:11] <dhewg> and all those bag messages, they come in slower now
[11:16:19] <fuzzie> yeah, that is a different thing
[11:16:28] <dhewg> before it was a storm of 5 lines
[11:16:35] <dhewg> now its one after the next
[11:17:27] <lynxlynxlynx> nice patches
[11:18:13] <dhewg> yeah, the pauses go away if i drop all my bags
[11:18:40] <dhewg> you mentioned that it loads all bams of the items in the bags too then?
[11:18:50] <fuzzie> no, just the itm files
[11:18:57] <dhewg> ah okay
[11:19:07] <fuzzie> which is what i fixed here, that is now just an fopen() and some reads/seeks, per bag
[11:19:09] <dhewg> hm well, does my box suck so much? :P
[11:19:23] <fuzzie> i'm pretty sure i have lower-end hw than any of you
[11:19:27] <dhewg> my bags are filled with crap
[11:19:35] <dhewg> want a savegame to try?
[11:19:50] <fuzzie> no, i shall apply strace
[11:20:15] <CIA-52> GemRB: 03lynxlupodian * rb81de475e009 10gemrb/gemrb/core/Scriptable/Scriptable.cpp:
[11:20:16] <CIA-52> GemRB: CreateProjectile: don't look up the extended header repeatedly when
[11:20:16] <CIA-52> GemRB: checking if invisibility should be cancelled
[11:20:19] <CIA-52> GemRB: 03lynxlupodian * r72e06c1922a7 10gemrb/NEWS: NEWS: moar
[11:20:38] <fuzzie> dhewg: what fs is your data on?
[11:20:47] <dhewg> nfs :P
[11:20:58] <dhewg> on a remote software raid5
[11:21:11] <fuzzie> open("/home/fuzzie/src/gemrb/bg2/data", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 23
[11:21:14] <fuzzie> access("/home/fuzzie/src/gemrb/bg2/cd2/data/scrl04.itm", R_OK) = -1 ENOENT (No such file or directory)
[11:21:17] <fuzzie> open("/home/fuzzie/src/gemrb/bg2/cd2/data", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 23
[11:21:21] <fuzzie> access("/home/fuzzie/src/gemrb/bg2/CD3/data/scrl04.itm", R_OK) = -1 ENOENT (No such file or directory)
[11:21:22] <dhewg> with is a especially sucky old k5 800mhz
[11:21:24] <fuzzie> ^- this is maybe the problem then
[11:21:36] <dhewg> i dont even have the cd folders anymore
[11:21:43] <dhewg> lemme strace that too
[11:22:52] <fuzzie> actually i bet this is hiding a billion stat/opendir/etc calls :(
[11:23:29] <dhewg> i confirm the million part so far
[11:23:54] <dhewg> but maybe you're right
[11:24:00] <dhewg> there's tons of access("/mnt/raid5/linuxgames/bg2/portraits/misc17.itm", R_OK) = -1 ENOENT (No such file or directory)
[11:24:18] <dhewg> with all cd folders in a row
[11:24:43] <dhewg> maybe a cache of found/non-existant files help
[11:24:48] <dhewg> so its only looked up once
[11:24:51] <fuzzie> yes
[11:25:11] <fuzzie> it would remove all this junk
[11:25:29] <dhewg> yeah
[11:25:47] <dhewg> also. in some situation it tries to open files which do not exist anywhere
[11:25:50] <fuzzie> your problem is probably CaseSensitive
[11:26:02] <dhewg> caching that would remove tons of useless log spew
[11:26:16] <fuzzie> which does an opendir() and pokes through every file to find case matches
[11:26:18] <dhewg> like on 'turn undead'
[11:26:22] <dhewg> try that on bg2
[11:26:51] <fuzzie> which file does it complain about?
[11:26:54] <dhewg> my override folder on nfs has +4000 items
[11:27:21] <fuzzie> so yeah, cache sounds good
[11:27:32] <dhewg> gemrb: /home/andre/devel/gemrb/gemrb/core/Holder.h:32: void Held<T>::release() [with T = Plugin]: Assertion `RefCount && "Broken Held usage."' failed.
[11:27:46] <dhewg> just loaded a savegame
[11:28:20] <fuzzie> oops :P
[11:28:31] <dhewg> turn undead: http://pastie.org/1831025
[11:28:48] <dhewg> the assert triggers at different times
[11:28:48] <fuzzie> oh, right
[11:28:53] <fuzzie> well i would prefer that abort()
[11:28:56] <dhewg> but those bam spam is epic sometimes
[11:29:05] <dhewg> like its trying to load that on every frame
[11:29:11] <fuzzie> it is :P
[11:29:18] <dhewg> ;)
[11:29:57] <fuzzie> you have Cache on local drive right?
[11:30:23] <fuzzie> a simple fix would be to assume that the non-cache directories don't change while running, and cache all of those at load time
[11:30:41] <fuzzie> as in, read all the files into an internal list
[11:30:58] <dhewg> yes, cache is local ext4
[11:33:03] <dhewg> is there a list of directories where it tries to load crap from?
[11:33:12] <fuzzie> yes
[11:33:18] <dhewg> where is that?
[11:33:45] <fuzzie> see under "Initializing Search Path.." in Interface.cpp
[11:34:26] <fuzzie> implementation is in ResourceManager.cpp and then the DirectoryImporter/KEYImporter plugins
[11:38:15] <dhewg> huh
[11:38:19] <fuzzie> my thought is that you could trivially write a cache in DirectoryImporter, and the only change you'd need to core is a 'does this change?' flag
[11:39:04] <fuzzie> as opposed to anything more invasive which will take a lot of time to fix up
[11:39:16] <dhewg> hm wait
[11:39:25] <dhewg> my server is compiling gcc
[11:39:34] <dhewg> maybe that slows stuff down
[11:39:35] <fuzzie> probably also not too helpful :P
[11:39:36] <dhewg> :)
[11:39:47] <dhewg> but then again, its fine on 0.6.4
[11:39:50] <fuzzie> *my* nfs server is doing video encoding
[11:39:54] <fuzzie> yeah that's just weird :-/
[11:39:57] <fuzzie> nothing there changed
[11:40:07] <dhewg> but also
[11:40:09] <fuzzie> unless 0.6.4 is just buggy and not opening the .sto files at all
[11:40:13] <dhewg> AddSource '/mnt/raid5/linuxgames/bg2/CD1/data'
[11:40:22] <dhewg> it just adds that to the list
[11:40:28] <dhewg> it doesnt even exist
[11:40:33] <fuzzie> if you don't provide a CD dir, yes
[11:40:43] <dhewg> is that source->Open() call supposed to catch that?
[11:40:44] <fuzzie> ok, adding non-existant dirs is maybe dumb :P that would be good fix
[11:40:53] <fuzzie> i don't think so, but obvious improvement
[11:41:09] <dhewg> do you have a fs layer here or do i just use stat?
[11:41:18] <fuzzie> we have a fs layer
[11:41:41] <fuzzie> try 'dir_exists(path)'
[11:42:00] <fuzzie> i think it boils down to stat() for anything in-tree though
[11:42:12] <dhewg> AddSource is just called for dirs?
[11:42:21] <fuzzie> no
[11:42:41] <fuzzie> but you'd want to do it in Open()
[11:42:59] <fuzzie> (in DirectoryImporter.cpp)
[11:43:05] <dhewg> k
[11:43:26] <dhewg> i also see all my savegame dirs going through there
[11:43:59] <fuzzie> yes
[11:44:03] <dhewg> also: https://github.com/dhewg/gemrb/commit/3db36b43c2414b474dcd954bc37a337ce4c6f8e9
[11:44:25] <dhewg> far from a beauty, but silencing some messages would be nice
[11:44:28] <fuzzie> yes
[11:44:35] <fuzzie> that is still 0.6.4 i guess
[11:44:41] <dhewg> eah
[11:44:44] <dhewg> yeah
[11:44:45] <fuzzie> since i see a 'printf' there and they are banished from master because you can't silence them
[11:45:15] <fuzzie> but we didn't really come up with a good way to categorise messages
[11:45:46] <dhewg> for that a look at scummvm again doesnt hurt
[11:45:53] <fuzzie> well
[11:45:56] <dhewg> in this case the debug levels
[11:46:06] <fuzzie> scummvm's system generally boils down to 'pick a random annoying debug level which fuzzie will hate'
[11:46:16] <dhewg> oh? :P
[11:46:33] <dhewg> omg
[11:46:43] <dhewg> DirectoryImporter::Open is totally underwhelming
[11:47:00] <fuzzie> yes, i am waiting for a patch here :P
[11:47:17] <dhewg> heh
[11:47:29] <fuzzie> but you see why i think it would be easy to cache a file list in there?
[11:47:39] <dhewg> what im doing there is no rocket science, but lemme see if that little addition improves stuff
[11:47:50] <dhewg> totally
[11:47:58] <dhewg> but bg2 has tons of files
[11:48:14] <fuzzie> i mean, most files are in BIFs
[11:48:17] <dhewg> i would aim for a sorted list of hashes
[11:48:38] <fuzzie> well i was thinking something we can implement today
[11:50:16] <dhewg> i think this helps a little
[11:50:23] <dhewg> but still laggy for me
[11:50:44] <dhewg> at least the strace output contains way less junk
[11:51:04] <fuzzie> and, dumb file-list cache with mutable flag is easy
[11:51:09] <fuzzie> anyway, have to go grab food, bbiab
[12:25:25] <dhewg> why are the savegame dirs added to the list?
[12:28:29] <dhewg> is this order correct? http://static.hackmii.com/dhewg/log.png
[12:30:04] <lynxlynxlynx> looks ok
[12:32:07] <dhewg> really?
[12:32:22] <dhewg> how can nalia make a critical hit if he is dead
[12:32:35] <dhewg> and he casts death gaze after his death?
[12:32:42] <dhewg> or is that maybe a mean trigger?
[12:34:54] <lynxlynxlynx> oh, that's probably just a bad message
[12:35:07] <lynxlynxlynx> but you know better if the demon was dead at that point or not
[12:35:45] <lynxlynxlynx> need to figure out why chromatic orb is so powerful
[12:35:57] <dhewg> i still had that red circle to target him, but he was just playing his drop-dead animation
[12:36:12] <lynxlynxlynx> the kill effect has a +6 save bonus, but we just kill almost all the time
[12:36:41] <lynxlynxlynx> it wasn't dead yet then
[12:36:58] <lynxlynxlynx> you can also check its effect queue for immunities
[12:43:43] <dhewg> something is wrong here
[12:44:01] <dhewg> monsters attack me while the initial dialog is still open
[12:44:50] <lynxlynxlynx> attack or just turn red?
[12:44:57] <lynxlynxlynx> it's part of the pausing issue
[12:45:19] <lynxlynxlynx> we can't hard pause during dialogs or their actions can't run
[12:45:20] <dhewg> comabt related lines are added to the text box while the game is paused
[12:45:37] <dhewg> even casts
[12:45:46] <lynxlynxlynx> it's not paused then
[12:47:10] <dhewg> but it should be
[12:48:47] <lynxlynxlynx> sure
[12:49:15] <dhewg> i never had this issue on 0.6.4
[12:49:40] <dhewg> also, i got the sunray crash again
[12:49:54] <dhewg> seh is 0 there
[12:50:01] <dhewg> l 871
[12:50:07] <lynxlynxlynx> ok
[12:53:10] <CIA-52> GemRB: 03lynxlupodian * r5e5ab15bf4e1 10gemrb/gemrb/core/Scriptable/Scriptable.cpp: CreateProjectile: don't crash if the extended header can't be found
[12:54:37] <-- devurandom has left IRC (Read error: Operation timed out)
[12:54:43] <dhewg> a fire mephit can cast flame fan
[12:54:56] <dhewg> if i kill it, should the flame stop?
[12:55:01] <lynxlynxlynx> no
[12:55:08] <dhewg> huh
[12:55:14] <dhewg> looks silly though :P
[12:56:57] <lynxlynxlynx> oh, you mean the scorcher? i'm not sure about that one
[12:57:18] <lynxlynxlynx> i thought it was some kind of a cone
[12:57:39] <dhewg> i saw "flame fan" in the log
[12:57:51] <dhewg> this fire stream from caster to target
[12:58:53] <dhewg> but really, the dialog pause is broken compared to 0.6.4
[12:59:13] <dhewg> i get this dialog upon approaching a creature
[12:59:19] <dhewg> with the "end dialog" button
[12:59:40] <dhewg> i read the text, and during that the creature spells stuff
[12:59:45] <dhewg> one by one
[13:00:01] <dhewg> if i hit "end dialog" everything queued up hits me at once
[13:01:23] <lynxlynxlynx> hehe
[13:02:09] <dhewg> not funny :P
[13:02:32] <dhewg> i can even see the creature moving if i wait a few secs on that dialog
[13:11:20] <fuzzie> hi
[13:12:43] <fuzzie> i do appear tro have hilariously forgotten the dialog check there
[13:12:53] <dhewg> Couldn't load animation: mmstg1, cycle 32
[13:13:15] <dhewg> (just in case anyone greps the irclogs for that at some point)
[13:13:21] <fuzzie> i am just kinda ignoring the anim stuff but .. yes, thanks
[13:15:50] <fuzzie> i don't see how the dialog stuff has changed actually
[13:21:17] <fuzzie> no error on console when 'end dialog' shows?
[13:24:40] <fuzzie> hm, no, on error (the only time the flags get unset), the gui should get force-closed..
[13:26:16] <fuzzie> so i'd have to have an example
[13:28:25] <dhewg> no, no error
[13:28:41] <dhewg> apart from a few sound files it doesnt find
[13:28:57] <fuzzie> well, to clarify, it works for me
[13:29:11] <fuzzie> so if this is an error for all dialogs, no idea
[13:29:15] <fuzzie> and if not, need example :P
[13:29:23] <dhewg> yeah, working on that part
[13:30:04] <dhewg> the silly 2 liner is pushed to my clone btw
[13:31:02] <dhewg> http://static.hackmii.com/dhewg/dlg.tgz
[13:31:06] <dhewg> just walk left
[13:31:20] <dhewg> notice how the dialog changes
[13:32:16] <-- mihairu has left IRC (Remote host closed the connection)
[13:33:14] <fuzzie> and this works on 0.6.4?
[13:33:41] <dhewg> i didnt try this exact situation, but this is the 1st time i see it
[13:33:50] <fuzzie> the dialog is non-freezing
[13:33:57] <fuzzie> as in, no dialog pause
[13:34:24] <fuzzie> presumably the actor is not meant to keep running scripts while they themselves are in dialog though
[13:39:09] <fuzzie> but i'd have to take a look.
[13:43:33] <lynxlynxlynx> bg2 tweakpack has a Force All Dialogue to Pause option
[13:43:58] <fuzzie> dialog pause in general is such a weird feature
[13:44:03] <fuzzie> i mean, the fact you can disable it
[13:44:14] <fuzzie> i don't know if it's important to any of the games that you do?
[13:45:15] <fuzzie> iwd2 in gemrb is going to be such a nightmare :/
[13:46:28] <lynxlynxlynx> that's for later
[13:46:41] <lynxlynxlynx> focus on the good progress
[13:46:50] <Maighstir> Some dialog isn't important, so it'd be annoying if the game pauses and forces all players in a multiplayer game to read the dialog just because someone decided to talk to a beggar.
[13:47:07] <lynxlynxlynx> i'm really happy how these two days turned out with all the fixes; the week looked so terrible
[13:47:26] <fuzzie> Maighstir: well, assuming single player :P
[13:47:44] <CIA-52> GemRB: 03tom.prince * rf4afb6c32fa3 10gemrb/gemrb/core/Makefile.am:
[13:47:44] <CIA-52> GemRB: Add MemoryStream to autotools build.
[13:47:44] <CIA-52> GemRB: Signed-off-by: Tom Prince <tom.prince@ualberta.net>
[13:48:43] <fuzzie> tomprince: oops. thankyou.
[13:51:00] <Maighstir> BG1 makes a difference between multi and single in a couple pausing cases, maybe BG2 does as well (BG1 single automatically unpauses the game if you enter the inventory screen, multi stays paused if it was before). Maybe BG2 pauses the game on a dialogues in single, but follows some don't-pause flag in multi?
[13:51:16] <fuzzie> would be nice, but no
[13:51:25] <fuzzie> it obeys the same don't-pause flag in both cases
[13:51:53] <fuzzie> well, or maybe we're missing some multiplayer flag..
[13:52:01] <fuzzie> i will check in original later
[13:52:23] <Maighstir> I am of course talking about the original, as well as not remembering very well at the moment how it behaves
[13:54:19] <tomprince> fuzzie: np
[13:55:46] <tomprince> I think maybe I should get the buildbot to shout in here when the build breaks. :)
[13:55:55] <fuzzie> that would be wonderful
[13:56:39] <tomprince> Just need to get it to ignore everything that isn't trunk.
[13:56:58] <fuzzie> maybe you have comments on caching directory contents, too
[13:57:28] <tomprince> Sounds sensible. Let me get breakfast first.
[13:57:59] <tomprince> MUSImporter uses DirectoryImporter, and calls it with a path, rather than a file.
[14:01:30] <fuzzie> oh, right. i hate that :P
[14:01:59] <fuzzie> but i figured we could just have a "don't cache" flag somewhere, since we'd *probably* want it for Cache anyway
[14:02:46] <fuzzie> which is to say, I can imagine better ways to deal with that, but not ones which don't involve invasive changes, and it'd be nice if this could be a simple implementation for now.
[14:20:48] <dhewg> what does the memorystream solve?
[14:21:51] <fuzzie> among other things it removes an fopen() and three fseek()s, on <16k files stored in a BIF
[14:22:56] <fuzzie> but presumably the fs walking is going to be far more expensive for you
[14:24:06] <tomprince> Is you though just to have a map in DirectoryImporter?
[14:24:07] <dhewg> well, im seeing tons of access() files to misc6z.itm
[14:24:09] <fuzzie> obviously caching more resources after load would also help, but i am in no rush to do that because it's going to hide the slow I/O somewhat
[14:24:21] <dhewg> and that is <16kb and in a bif
[14:24:32] <fuzzie> yes, but they're all failed access() calls
[14:24:44] <dhewg> but why does it still try to find it?
[14:24:47] <fuzzie> tomprince: as the first implementation, yes
[14:24:54] <dhewg> isnt it now supposed to be cached in mem?
[14:24:58] <fuzzie> no
[14:25:06] <dhewg> well, why not? :P
[14:25:14] <fuzzie> i think i covered this some lines up :P
[14:26:01] <fuzzie> it would help fix the bag thing, but not an awful lot else, and it would be tricky to do right
[14:27:33] <dhewg> so whats the right thing? the idea about caching where files were found?
[14:27:44] <fuzzie> the right thing is both, i think
[14:28:04] <dhewg> well
[14:28:13] <dhewg> is the bif fd open at all times?
[14:28:31] <fuzzie> in master, the last-used bif fd is open at all times
[14:29:08] <dhewg> once it needs to access another it closes the fd?
[14:29:09] <fuzzie> which is specifically for the bags, which are only using the one bif
[14:30:38] <tomprince> So, we should check for / and \ before checking against the cache.
[14:30:55] <fuzzie> tomprince: we need a way to exclude the Cache dir
[14:31:35] <tomprince> Yes.
[14:32:30] <fuzzie> checking for path seperators sounds fine if you want that too, though
[14:32:30] <tomprince> Doesn't affect fs access paterns, but we should also tell DirectoryImporter which CD the dir is from, if any, so it can do the GameOnCD logic when nescesary.
[14:33:16] <fuzzie> sounds good
[14:33:18] <tomprince> Seperate issue, but it occured to me becausing caching on start doesn't work for CDs.
[14:33:28] <fuzzie> well
[14:33:35] <fuzzie> i'm not sure anyone is actually going to use that functionality
[14:33:43] <fuzzie> i mean, the CDs-not-available thing
[14:34:12] <fuzzie> as opposed to the copy-data-into-the-cache stuff which is mixed in with it right now
[14:35:40] <fuzzie> not sure what to do about it in general.
[14:36:21] <tomprince> I've always wondered if it actually works. Clearly not for IWD2: won't find the movies.
[14:36:41] <dhewg> is gemrb trying to support that?
[14:36:49] <tomprince> It pretends to.
[14:37:04] <fuzzie> it worked better *before* everyone messed with the fs code
[14:37:12] <tomprince> :P
[14:37:18] <dhewg> ;)
[14:37:55] <fuzzie> i mean, including me
[14:38:04] <fuzzie> i doubt it has a chance of working now
[14:38:40] <tomprince> I'd be happy to support, if there was someone actually using it, who reported problems.
[14:38:47] <fuzzie> but bg2 is kinda huge
[14:41:28] <fuzzie> so i can certainly envisage uses for 'this media is slow, do not use BIFs from it directly' functionality.
[14:41:32] <fuzzie> anyway, time to help cook.
[14:41:33] <lynxlynxlynx> hmm, does anyone perchance have the last tob patch as a normal archive?
[14:45:05] <lynxlynxlynx> found an extractor
[14:59:12] <lynxlynxlynx> but doesn't work
[15:02:08] <fuzzie> oh
[15:02:33] <fuzzie> which one is the last one?
[15:02:44] <fuzzie> 26498 i guess
[15:18:40] <lynxlynxlynx> yes
[15:23:31] <lynxlynxlynx> Bags of Holding are essentially portable stores in the engine. Like stores, they recharge any item instantly--this is a function of stores themselves and can not be fixed. <-- another interesting bit
[15:31:50] <dhewg> wtf
[15:32:15] <dhewg> now the efreeti hits me like 30 times a second
[15:32:26] <lynxlynxlynx> nah
[15:32:36] <lynxlynxlynx> he has a fireshield, remember
[15:32:53] <dhewg> which means?
[15:32:58] <lynxlynxlynx> e8
[15:34:49] <dhewg> its that not working condition, thats all i know
[15:35:28] <lynxlynxlynx> yes
[15:36:14] <dhewg> what the connection from that to his epic damage?
[15:44:59] <dhewg> did i ever ask what these really annoying and way too loud sounds are?
[15:46:05] <dhewg> any cure spell requires that you stand next to the target, if thats not the case the caster walks there but doesnt do anything
[15:50:39] <dhewg> actually, looks like all charm spells are effected
[15:51:02] --> mihairu has joined #gemrb
[15:52:25] <lynxlynxlynx> we don't clear the effect, so it gets applied too many times
[15:52:41] <lynxlynxlynx> the sounds: no idea, playing on mute
[15:53:06] <dhewg> heh
[15:53:11] <lynxlynxlynx> re cure: maybe it was aborted since it couldn't come as close as it wanted
[15:53:19] <dhewg> there're some really annoying sfx glitches
[15:53:52] <dhewg> it looks like it was aborted, but there was no reason to
[15:54:05] <dhewg> straight line from a to b without obstacles
[15:54:13] <dhewg> caster walked there, and nothing
[15:54:22] <dhewg> just casting again from that pos and it works
[15:57:08] <lynxlynxlynx> maybe we fail to retry after getting close enough
[15:57:48] <lynxlynxlynx> better wait for fuzzie
[16:23:48] <fuzzie> oh, yes, i committed the target thing which was not entirely intentional
[16:25:47] <dhewg> just fyi: i cp'ed the bg2 dir, so it too is on local ext4. the performace is equal to what i see with nfs
[16:26:07] <dhewg> well, feels the same, didnt measure anything
[16:28:02] <fuzzie> how many files in your cache dir?
[16:28:46] <dhewg> this running instance: 873 files
[16:28:53] <fuzzie> that is not so good
[16:29:32] <fuzzie> still it's really weird
[16:30:02] <dhewg> well, i dont know
[16:30:04] <dhewg> :P
[16:30:50] <fuzzie> i mean
[16:31:01] <fuzzie> i asked this earlier, but you *do* get the .sto checks on 0.6.4?
[16:31:19] <dhewg> yeah
[16:31:24] <dhewg> hence my stfu commit
[16:31:41] <fuzzie> as often as on master?
[16:31:48] <lynxlynxlynx> judging from the first pp cutscene, dialogs should also be reseting stance
[16:31:59] <fuzzie> yes
[16:32:03] <fuzzie> we do dialog init wrong right now
[16:32:06] <dhewg> the were more checks on master before todays or yesterdays commits, now its less
[16:32:22] <fuzzie> but master is slower on checks?
[16:32:29] <dhewg> totally
[16:32:36] <dhewg> i drop all bags it runs just fine
[16:32:47] <fuzzie> maybe it's because i fixed Delay()
[16:32:49] <dhewg> with my party as is, it more or less sucks
[16:33:20] <dhewg> even the ticking pause button freezes once ~1s
[16:34:30] <fuzzie> and you never get the freeze on 0.6.4?
[16:34:44] <dhewg> no
[16:34:56] <dhewg> even with nfs and sucky server compiling gcc :)
[16:35:02] <fuzzie> i mean the only culprit i can think of is that tomprince made Create slower, but it's really irrelevant compared to what i fixed today
[16:35:30] <fuzzie> the scripts really suck though
[16:36:00] <dhewg> sounds like it
[16:36:10] <lynxlynxlynx> can't talk to the pp npc summoning statues anymore
[16:36:11] <fuzzie> PartyHasItem("sw1h15") // ~Scimitar +3, Frostbrand~
[16:36:11] <fuzzie> PartyHasItem("sw1h16") // ~Scimitar +5, Defender~
[16:36:11] <fuzzie> PartyHasItem("chan06") // ~Mithril Chain Mail +4~
[16:36:11] <fuzzie> PartyHasItem("bruenaxe") // ~Battle Axe +3~
[16:36:13] <fuzzie> PartyHasItem("bruenpla") // ~Mithral Field Plate Armor +2~
[16:36:15] <fuzzie> PartyHasItem("cattibow") // ~Tansheron's Bow +3~
[16:36:18] <fuzzie> PartyHasItem("regisamu") // ~Ruby Pendant~
[16:36:20] <fuzzie> PartyHasItem("aegis2") // ~Aegis Fang~
[16:36:23] <fuzzie> ^- one block
[16:36:42] <dhewg> thats the poking script?
[16:36:50] <fuzzie> that is one block of the global game script :P
[16:36:52] <lynxlynxlynx> drizzt
[16:37:31] <dhewg> huh
[16:37:52] <fuzzie> i'm a bit suspicious that 0.6.4 just didn't run any of these
[16:38:02] <lynxlynxlynx> you can kill a famous party but then someone starts haunting you if you take their gear
[16:39:37] <fuzzie> anwyay spell stuff first
[16:41:34] <fuzzie> i know that people get serious lag in the original game from excessive crazy in baldur.bcs
[16:43:48] <fuzzie> but should be easy to see in 0.6.4, since it will print the .sto lines
[16:44:16] <fuzzie> although that block above is after you killed Bodhi only
[16:44:24] <tomprince> Is there any reason why we can't have multiple stores open?
[16:44:30] <fuzzie> nope
[16:44:33] <fuzzie> consistency issues only
[16:45:05] <fuzzie> well
[16:45:16] <fuzzie> i mean, there's the idea of a 'current store'
[16:45:22] <fuzzie> and you don't want multiple of *those*
[16:45:26] <fuzzie> but there's no need to have multiple of those
[16:45:31] <tomprince> No, clearly.
[16:45:49] <fuzzie> i hacked up something to keep bags in actor inventories open
[16:46:18] <fuzzie> but it doesn't work because it doesn't save/close/etc at the right times
[16:47:21] <fuzzie> so if you want to have a go, go ahead - it is "Store caching (especially bags)" in the in-tree TODO
[16:51:31] <CIA-52> GemRB: 03fuzzie * rac1c0a8ff170 10gemrb/gemrb/core/GameScript/Actions.cpp: fix my recent spell targeting commit, hopefully
[16:51:33] <CIA-52> GemRB: 03fuzzie * r1f1fbb8a4b69 10gemrb/gemrb/plugins/SDLVideo/SDLVideo.cpp: limit SDLVideo to ~30fps
[16:51:47] <fuzzie> imo we shouldn't cache stores in general
[16:52:50] <fuzzie> and i don't want to remove the current store thing from core yet because of possible nightmares with unimplemented stuff
[17:00:22] <fuzzie> ok, that store code is not so great
[17:00:37] <fuzzie> i can generate infinite items
[17:02:45] <-- adominguez has left IRC (Remote host closed the connection)
[17:03:45] <dhewg> heh
[17:03:52] <dhewg> maybe that thing i saw yesterday?
[17:04:10] <fuzzie> no
[17:05:01] <fuzzie> gemrb also tries 'fixing up' 0-stack jewels which is odd
[17:05:19] <dhewg> btw, autostacking to bags would be nice
[17:05:29] <fuzzie> autostacking?
[17:05:46] <dhewg> one gem type is in there, but another of that in, stack em
[17:06:12] <fuzzie> we do that
[17:06:59] <fuzzie> doesn't work for you?
[17:07:12] <dhewg> that was yesterday with 0.6.4
[17:07:14] <fuzzie> i think our HackCharges should really be checking StackAmount
[17:07:29] <dhewg> i think i had to manually stack in the inv, then put it back into the bag
[17:07:33] <fuzzie> at the moment it's hacking non-stackable gems
[17:07:48] <lynxlynxlynx> the problem is with the data - wands, gems, potions/scrolls are all different
[17:07:51] <fuzzie> dhewg: well, i don't know what you cherry-picked, so tricky to diagnose
[17:08:06] <dhewg> well now im on master \o/
[17:09:20] <dhewg> huh ok, seems to work now
[17:09:31] <dhewg> although it always reads "1"
[17:09:34] <CIA-52> GemRB: 03fuzzie * r6c7f73dd7ec7 10gemrb/gemrb/GUIScripts/GUISTORE.py: show amounts in bag display as well as stores
[17:09:41] <dhewg> heh
[17:09:43] <fuzzie> ^--
[17:09:45] <CIA-52> GemRB: 03fuzzie * rc6a5bddc48d7 10gemrb/gemrb/core/Store.cpp: fix selling/storing non-stackable items
[17:09:48] <dhewg> thx :)
[17:09:57] <fuzzie> :)
[17:10:15] <fuzzie> my tree is emptying again
[17:13:11] <dhewg> wee
[17:13:26] <lynxlynxlynx> that statues thing doesn't even reach GameControl::TryToTalk
[17:13:34] <fuzzie> should it?
[17:13:38] <fuzzie> i mean, no, it shouldn't
[17:14:41] <fuzzie> do you have the script resref?
[17:15:54] <dhewg> wow, master even plays a lockpicking sfx
[17:15:58] <dhewg> first time i hear that :P
[17:17:14] <lynxlynxlynx> oh, no dialog at all
[17:17:19] <lynxlynxlynx> script is fatesp
[17:17:29] <fuzzie> you can't talk to non-actors in bg2
[17:17:31] <lynxlynxlynx> dhewg: it was painful to find
[17:17:46] <lynxlynxlynx> still missing the one for disarming traps if there was one
[17:17:47] <fuzzie> and the script is using WalkedToTrigger which is unimplemented
[17:17:49] <dhewg> on mute? i can imagine :P
[17:17:53] <lynxlynxlynx> and the original did some compositing
[17:18:56] <fuzzie> that is, um, annoying to fix
[17:19:19] <fuzzie> the problem is, when you click a trigger, it should run the TriggerWalkTo action, which will send the trigger trigger_walkedtotrigger on completion
[17:20:08] <fuzzie> but, well, i quote, '{"triggerwalkto", GameScript::MoveToObject,AF_BLOCKING|AF_ALIVE}, //something like this'
[17:21:37] <dhewg> haha
[17:21:46] <fuzzie> and we don't use it anyway :P
[17:22:23] <dhewg> so selling most of my bag junk helps a little :P
[17:31:41] <fuzzie> alas
[17:32:01] <fuzzie> well, bag caching is definitely next step there i guess
[17:32:31] <fuzzie> lynxlynxlynx: important to have that fixed && need me to do it?
[17:34:05] <lynxlynxlynx> sometime, sure
[17:34:28] <lynxlynxlynx> you can't get any canonical npcs except sarevok in tob otherwise
[17:34:43] <fuzzie> well, i mean, right now :)
[17:34:47] <lynxlynxlynx> but e8 is tenfold more annoying
[17:34:59] <lynxlynxlynx> well, if you're not working on something cooler :)
[17:35:03] <fuzzie> did i ask for your opinion on my plan for e8?
[17:35:27] <lynxlynxlynx> not sure, you mentioned you wanted a list to check against
[17:35:45] <fuzzie> well, i thought of an alternative simpler plan
[17:36:01] <fuzzie> which is for the effect to just ignore the trigger cases
[17:36:28] <fuzzie> and then to have an EffectQueue function which takes a new trigger (like AttackedBy), and walks through the effect list to see if there's a matching e8 effect, and if so, to run the result
[17:38:23] <lynxlynxlynx> where would the result code be?
[17:38:37] <-- mihairu has left IRC (Remote host closed the connection)
[17:39:08] <fuzzie> well, that is the problem
[17:40:07] <dhewg> heh, a moonflying pheasant
[17:40:16] * dhewg watches and giggles
[17:40:30] <CIA-52> GemRB: 03lynxlupodian * r8ca0860ce2f9 10gemrb/gemrb/docs/en/GUIScript/GetStoreItem.txt: GetStoreItem.txt: mention Purchased too
[17:40:30] <fuzzie> the original engine doesn't do *any* result stuff in the effect i think
[17:40:31] <CIA-52> GemRB: 03lynxlupodian * ra82bdbe22402 10gemrb/gemrb/GemRB.cfg.sample.in: GemRB.cfg.sample.in: added resolution choice warning and info
[17:40:32] <CIA-52> GemRB: 03lynxlupodian * rfca4c716e1f0 10gemrb/gemrb/ (14 files in 7 dirs): rename StackAmount to MaxStackAmount for clarity
[17:40:39] <fuzzie> <3
[17:40:48] <fuzzie> i forgot all about the rename
[17:41:45] <lynxlynxlynx> i guess we should just stuff them into the effect plugin, outside the effect list
[17:42:18] <lynxlynxlynx> a bit cleaner than having the specifics in effectqueue
[17:42:20] <fuzzie> it's all very hard-coded in the original, of course
[17:43:37] <fuzzie> do we handle contingencies?
[17:43:57] <lynxlynxlynx> we did or at least partially
[17:44:00] <lynxlynxlynx> didn't test all of that
[17:44:20] <fuzzie> how do they work?
[17:44:51] <lynxlynxlynx> spells get cast when the chosen condition is met
[17:45:14] <lynxlynxlynx> eg. enemy seen, hp at 50%, damage taken ...
[17:45:15] <fuzzie> the original has a ContingencyList::ProcessTrigger which is called on new trigger, which checks the list constructed by e8, then calls CGameAIBase::FireSpell and sometimes CGameEffectList::Remove
[17:45:56] <fuzzie> but there's also a ContingencyList::TriggerSequencer which is called by GameEffectSequencerFire::ApplyEffect
[17:46:22] <fuzzie> i am curious what the latter is
[17:46:28] <lynxlynxlynx> sequencers on the other hand are just instacast spell groups
[17:46:35] <lynxlynxlynx> contingencies you can target, i guess
[17:46:47] <fuzzie> i'm curious because it's the same list
[17:47:19] <lynxlynxlynx> you cast the spell, pick the contained spells and get an innate sequencer/trigger
[17:47:38] <lynxlynxlynx> using that unleashes all the contained spells at once
[17:47:55] <lynxlynxlynx> you can only have one contingency
[17:48:03] <lynxlynxlynx> you can only have one sequencer/trigger
[17:48:24] <lynxlynxlynx> maybe even only just one of both (would make sense if it uses the same lists)
[18:01:35] <tomprince> Isn't there two kinds of sequencers, that you can have one of each? Or is it perhaps two kinds of contingency?
[18:03:45] <lynxlynxlynx> definitely only one contingency
[18:04:05] <lynxlynxlynx> not sure if you can mix (minor) spell sequencer with the spell trigger (spell)
[18:09:07] <tomprince> Looking online, it seems you can have 3 sequencers (one of each) + contingency.
[18:29:29] <fuzzie> and they do stuff
[18:29:36] <fuzzie> i suppose i should try them in original
[18:39:47] --> devurandom has joined #gemrb
[18:42:01] <dhewg> i cant walk on corpses
[18:42:06] <dhewg> heh :)
[18:42:33] <dhewg> just killed a dude, and he dropped exactly at a door
[18:44:27] <fuzzie> worrying
[18:45:55] <fuzzie> not worrying, we set the state in the wrong place
[18:46:08] <fuzzie> that should only be very temporary though, for a few moments
[18:46:08] <fuzzie> ?
[18:46:20] <fuzzie> except, no, CheckOnDeath corrupts searchmap
[18:46:29] <fuzzie> can you walk nearby and sort of nudge your way through? :P
[18:47:42] <dhewg> not in this case :P
[18:47:56] <fuzzie> replace the IF_JUSTDIED check in Actor::ValidTarget with IF_REALLYDIED
[18:48:32] <fuzzie> the check in GameControl::DisplayTooltip should be IF_REALLYDIED too
[18:48:51] <fuzzie> but real problem here is that the state should be set immediately on death..
[18:48:58] <fuzzie> don't want to do that without testing
[18:50:13] <fuzzie> is spell movement/targeting fixed btw?
[18:50:30] <dhewg> cure and friends work again
[18:50:42] <dhewg> temple bought stuff is still broken
[18:50:46] <fuzzie> enemies still self-targeting?
[18:51:00] <dhewg> i think so, yes
[18:51:52] <dhewg> hm no, pretty sure they still do that
[18:54:51] <lynxlynxlynx> what's wrong with temples?
[18:55:24] <dhewg> you can buy restoration, but its not cast at the buyer
[18:55:34] <lynxlynxlynx> hehe
[18:55:37] <dhewg> its always south of the priest
[18:56:01] <lynxlynxlynx> so it's just a gfx glitch
[18:56:08] <dhewg> thats prolly the wrong offset like other spells, so that priest seems to cast it on himself :)
[18:59:02] <lynxlynxlynx> looks like it is a bug with the restoration they sell
[18:59:25] <lynxlynxlynx> other spells are targetted fine, while that one is cleary cast on the priest
[19:00:21] <dhewg> fuzzie: seems to work fine
[19:00:27] <lynxlynxlynx> the offset thing we were talking about is z-offset, but restoration's animation is good enough to easily exclude that option
[19:00:28] <dhewg> at least for this one situation
[19:00:49] <dhewg> i dunno if triggers on dying ppl are now different?
[19:01:07] <fuzzie> no, but many actions should be suppressed
[19:01:35] <dhewg> like?
[19:01:50] <fuzzie> walking, normal casts, attacks, etc etc
[19:03:07] <dhewg> you mean dying ppl cant cast anymore or the other way around?
[19:03:36] <fuzzie> dying people can't cast some things anymore
[19:04:02] <dhewg> http://static.hackmii.com/dhewg/log.png
[19:04:18] <dhewg> looking at that it seems to be the right thing to do to me
[19:04:28] <dhewg> that dude there was dying
[19:04:42] <dhewg> just that his drop dead ani was playing
[19:05:00] <dhewg> casting death gaze while dropping dead seems silly :P
[19:05:58] <fuzzie> yes
[19:06:20] <fuzzie> for some reason (done before my time), we split dying into two stages
[19:06:35] <fuzzie> one of which does half the work, and the other of which sets the actual state and then tries very hard to remove the corpse(!)
[19:06:52] <dhewg> hm
[19:06:55] <fuzzie> that still isn't merged into a single function yet but we're getting closer
[19:07:20] <dhewg> dunno if its related, but there're alot of cutscenes triggered when someone dies
[19:07:36] <dhewg> that happens the moment he has 0hp
[19:08:04] <dhewg> so the guy from the cutscene talk to you while the dude is still dropping
[19:08:17] <dhewg> just by a feeling that seems wrong to me
[19:08:29] <dhewg> let the poor fella drop first!
[19:08:39] <fuzzie> i think that is correct
[19:09:06] <dhewg> really?
[19:09:08] <dhewg> huh
[19:09:50] <dhewg> so, should i keep those changes?
[19:10:01] <fuzzie> they help?
[19:10:12] <dhewg> well it fixes this problem
[19:10:30] <fuzzie> then, yes; commit and let me cherry-pick? :)
[19:10:37] <dhewg> i can kill them fine, they still drop, they dont have a tooltip and i can get on the other side
[19:11:00] <dhewg> hmk
[19:11:09] <-- Gekz has left IRC (Remote host closed the connection)
[19:11:16] --> Gekz has joined #gemrb
[19:11:29] <dhewg> do these changes affect the cutscene thingy i mentioned?
[19:11:47] <fuzzie> i don't think so
[19:12:36] <dhewg> pushed
[19:15:12] <-- Gekz has left IRC (Read error: Connection reset by peer)
[19:15:19] --> Gekz has joined #gemrb
[19:15:54] <-- Gekz has left IRC (Read error: Connection reset by peer)
[19:17:21] <CIA-52> GemRB: 03dhewg * r58fa78df43a9 10gemrb/gemrb/core/ (GUI/GameControl.cpp Scriptable/Actor.cpp):
[19:17:22] <CIA-52> GemRB: don't let corpses block the way
[19:17:22] <CIA-52> GemRB: Signed-off-by: Alyssa Milburn <fuzzie@fuzzie.org>
[19:17:23] <CIA-52> GemRB: 03dhewg * rbecf902e0862 10gemrb/gemrb/plugins/DirectoryImporter/DirectoryImporter.cpp:
[19:17:23] <CIA-52> GemRB: Don't look for files in non-existent directories
[19:17:23] <CIA-52> GemRB: Signed-off-by: Alyssa Milburn <fuzzie@fuzzie.org>
[19:17:29] <fuzzie> the dir_exists one is flaky for very weird GameOnCD setups but since it's broken anyway..
[19:18:03] <dhewg> i think it should also respect the case sensitivity setting?
[19:18:39] <fuzzie> well i have no patience for people who don't set the right paths :-P
[19:19:36] <fuzzie> afaik the case sensitivity stuff only applies to the filenames
[19:24:34] <dhewg> what attach do mummys have?
[19:26:26] <dhewg> boy, are big fights less annoying on master
[19:27:07] <fuzzie> whyso?
[19:27:50] <dhewg> there're no "unregistered attack" warnings, which somehow confused the monsters into doing nothing
[19:29:23] <dhewg> also, i meant attacks for mummys
[19:29:36] <dhewg> its nothing magical, right?
[19:29:49] <dhewg> because i just saw a mummy doing damage to itself?
[19:29:57] <tomprince> That should work properly with case, since it has already been passed through PathJoin when DirImporter is called.
[19:30:00] --> Gekz has joined #gemrb
[19:32:03] <lynxlynxlynx> dhewg: mummies cause disease cause damage
[19:32:12] <-- Gekz has left IRC (Read error: Connection reset by peer)
[19:32:43] <dhewg> k
[19:34:41] <dhewg> i think traps are broken?
[19:34:58] <dhewg> they trigger, but nothing happens
[19:35:06] <dhewg> and after disarming, they still trigger
[19:35:31] <fuzzie> sounds interesting
[19:35:56] <dhewg> at least in ar0802
[19:37:06] <fuzzie> that code is such a mess right now, it worked for my trivial testing
[19:37:14] <fuzzie> got a trap script? (ctrl-m on trap)
[19:41:22] <dhewg> gtar4?
[19:41:48] <fuzzie> just uses Entered([ANYONE])
[19:42:25] <dhewg> means works as designed?
[19:42:39] <fuzzie> means, not my fault
[19:42:59] <dhewg> but even when not disarming, nothing triggers
[19:43:01] <fuzzie> debug info should tell you if it's deactivated or not, too
[19:43:07] <dhewg> i was expecting fireballs 'n shit
[19:43:27] <fuzzie> it should display 'Trap Sprung' and cast TRAP_ARROW_ACID except i broke that bit, heh
[19:43:38] <dhewg> :)
[19:43:39] <fuzzie> ok, dumb, uncommitted code on my side
[19:43:59] <fuzzie> hate this stuff
[19:44:35] <fuzzie> i wonder if STL's 'set' sucks
[19:44:40] --> Gekz has joined #gemrb
[19:44:40] <-- Gekz has left IRC (Changing host)
[19:44:40] --> Gekz has joined #gemrb
[19:44:47] <-- Gekz has left IRC (Read error: Connection reset by peer)
[19:44:59] <fuzzie> basically what i need is some fast way to check whether a number is in a list or not. the list is static. someone work it out for me :P
[19:46:31] --> Gekz has joined #gemrb
[19:46:31] <-- Gekz has left IRC (Changing host)
[19:46:31] --> Gekz has joined #gemrb
[19:54:50] <dhewg> list of hashes?
[19:55:17] <fuzzie> well, afaik we still don't have a sane hash class
[19:58:35] <dhewg> heh
[19:58:41] <dhewg> you can steal that from qt
[19:59:38] <fuzzie> so far we had a lot of 'you can steal that from <>' but it never actually works
[20:00:26] <dhewg> do you know qt?
[20:01:41] <dhewg> damn, sometimes the answers in bg2 are hilarious
[20:02:19] <fuzzie> i know qt depressingly well
[20:02:25] <fuzzie> stupid nokia
[20:02:31] <dhewg> yeah well
[20:02:42] <dhewg> imho qt has many shiny and a few dark corners. the core is the shiny part, and of high quality
[20:02:42] <fuzzie> suddenly it's a business risk to use it
[20:02:52] <fuzzie> well i think it has a lot of dark corners :P
[20:02:57] <dhewg> :P
[20:03:08] <dhewg> i stole the hash stuff before, so its at least working :)
[20:03:10] <fuzzie> the tooltips were the last straw about any thoughts i might've had about qt's sanity
[20:03:16] <fuzzie> but obviously that is not the core :-p
[20:03:31] <dhewg> yeah dunno, i hate gui work :P
[20:03:41] <dhewg> thats why android has no dialog yet :D
[20:04:01] <dhewg> but at work we use the core stuff everywhere, even in base (non gui) libs
[20:05:24] <fuzzie> but, well, have some copy lying around that doesn't require qt? :p
[20:06:10] <dhewg> only at work :P
[20:06:23] <dhewg> sec, i'll look for it
[20:07:13] <fuzzie> well, no rush, just half the triggers broken ;p
[20:07:22] <fuzzie> i should probably implement stupidly for now
[20:07:50] <lynxlynxlynx> http://forums.gibberlings3.net/index.php?showtopic=21374&st=0&#entry185780 <-- any wishes? :)
[20:08:17] <dhewg> http://qt.gitorious.org/qt/qt/blobs/4.7/src/corelib/tools/qhash.cpp
[20:10:10] <fuzzie> dhewg: yeah, but try compiling that without QString etc :P
[20:10:17] <fuzzie> motivation lacking
[20:10:26] <dhewg> hehe
[20:10:38] <dhewg> well you just need to c&p that tiny function on top :P
[20:53:05] <dhewg> uhm
[20:53:15] <dhewg> another very weird thing
[20:53:58] <fuzzie> oh?
[20:54:29] <dhewg> yeah :P
[20:54:46] <dhewg> lethal stairs
[20:54:57] <dhewg> http://static.hackmii.com/dhewg/aerie.tgz
[20:55:05] <dhewg> load that and go up the stairs
[20:55:30] <dhewg> it worked as i didnt load that, when loading... something weird happens
[20:55:32] <dhewg> go try :P
[20:57:41] <dhewg> seeing it?
[20:58:59] <fuzzie> eating cookies
[20:59:23] <dhewg> heh :)
[20:59:42] <fuzzie> ooh fun
[20:59:47] <dhewg> ftw is that?
[21:00:33] <fuzzie> that's interesting. did you check the warranty on your aerie?
[21:00:34] <dhewg> i think she had a levelup or something?
[21:00:51] <dhewg> heh, looks like she expired :P
[21:01:22] <dhewg> thats maybe a save with having the option to lvl up, but not yet done
[21:04:23] <fuzzie> not sure what you did here
[21:05:21] <dhewg> me neither
[21:05:32] <fuzzie> i know why she's dead though
[21:05:34] <dhewg> walked around, saved
[21:10:22] <dhewg> so why is she dying?
[21:11:17] <fuzzie> you killed her! i want to know why this doesn't show up, but have to wait for build
[21:11:28] <dhewg> heh
[21:11:41] <dhewg> she was standing around the corner at the last fights!
[21:11:47] <fuzzie> not drained at all?
[21:11:51] <dhewg> no
[21:12:02] <fuzzie> bbiaf
[21:12:12] <dhewg> minsc was doing the undead job with the mace of disruption
[21:18:26] <dhewg> also, whats up with her charisma?
[21:18:37] <fuzzie> yes
[21:18:39] <fuzzie> that is the problem
[21:18:40] <fuzzie> it is 0 :)
[21:18:41] <dhewg> that used to be 10 and not 0
[21:18:48] <dhewg> no, 14
[21:18:51] <fuzzie> i am just wondering why she isn't dead
[21:18:58] <fuzzie> i mean, why she isn't showing up as dead
[21:19:19] <dhewg> is it even possible to reduce the charisma?
[21:19:31] <fuzzie> yes
[21:19:45] <dhewg> how?
[21:19:53] <fuzzie> but not during normal play, other than temporary energy drain etc
[21:20:02] <dhewg> huh
[21:20:12] <dhewg> i have multiple save where its getting lower and lower
[21:20:19] <dhewg> the hell
[21:20:22] <fuzzie> haha.
[21:20:26] <fuzzie> well you should fix it :P
[21:20:36] <dhewg> how does that happen
[21:20:46] <dhewg> there was never a drain icon or whatever
[21:21:42] <fuzzie> SetPlayerStat(6, IE_CHR, 14)
[21:22:01] <fuzzie> how long have you had the sensate amulet?
[21:22:15] <dhewg> a long time i guess?
[21:23:01] <dhewg> but like i said, there was a level up
[21:23:11] <dhewg> maybe the amulet messed that up each level?
[21:23:45] <fuzzie> sounds possible
[21:23:57] <fuzzie> as usual my disclaimer is that i don't know how this works
[21:24:11] <dhewg> on the good side, its blazing fast now because she had 3 scroll cases
[21:25:43] <fuzzie> lynxlynxlynx: ReactivateBaseClass is called on every levelup?
[21:26:11] <dhewg> jaheira went from 15 str to 16
[21:26:14] <fuzzie> i mean, i don't understand how it works but it reads like that
[21:26:32] <fuzzie> jaheira's dual-class too?
[21:26:47] <dhewg> fighter/druid
[21:27:01] <fuzzie> not multi?
[21:27:28] <dhewg> hm?
[21:27:36] <dhewg> yes multi, fighter and druid?
[21:27:40] <lynxlynxlynx> fuzzie: should actually follow through only once
[21:27:40] <fuzzie> dual or multi? :P
[21:27:50] <dhewg> oh
[21:27:52] <lynxlynxlynx> multi
[21:27:57] <dhewg> yeah
[21:27:59] <lynxlynxlynx> both
[21:28:10] <lynxlynxlynx> i don't remember any way of draining charisma
[21:28:22] <fuzzie> yes, i don't see it either
[21:28:28] <fuzzie> i expect some code here is being dumb
[21:28:36] <lynxlynxlynx> i know of only one - the rod of terror
[21:28:39] <fuzzie> but i'm just wondering because ReactivateBaseClass itself has no checks
[21:28:48] <lynxlynxlynx> but the description tells you this can happen
[21:28:57] <fuzzie> and i don't understand "if (Level[0] - LevelDiff[0]) <= Level[1] and Level[0] > Level[1]: # our new classes now surpasses our old class"
[21:29:08] <dhewg> misc lost 1 INT
[21:29:09] <lynxlynxlynx> dhewg: do you have the rod of terror?
[21:29:11] <dhewg> *minsc
[21:29:19] <dhewg> lynxlynxlynx: no
[21:29:38] <lynxlynxlynx> int drain - temporary from mindflayers
[21:30:02] <dhewg> but there is no drain in any stats
[21:30:10] <dhewg> shouldnt it be listed?
[21:30:13] <fuzzie> yes, it is permanent, no effect
[21:30:24] <dhewg> huh
[21:30:43] <fuzzie> if it happens at levelup, it is broken levelup
[21:30:52] <fuzzie> jaheira has strength-modifying item, aerie has charisma-modifying item
[21:30:54] <dhewg> well i never noticed
[21:31:16] <dhewg> i dont think i ever had int modifiers
[21:31:19] <lynxlynxlynx> minsc surely doesn't have an int boosting item
[21:31:20] <lynxlynxlynx> heh
[21:31:31] <fuzzie> yes, he is ruining my theory right now
[21:32:20] <fuzzie> can you reproduce the actual modification, dhewg?
[21:32:21] <lynxlynxlynx> we were pretty careful about using basestats too
[21:32:47] <lynxlynxlynx> and no class/kit gets any main stat boosts on levelups
[21:34:02] <fuzzie> yes
[21:34:08] <fuzzie> but some stuff is fiddled with
[21:34:17] <dhewg> fuzzie: not yet
[21:34:53] <fuzzie> it seems that applying effects from the guiscript can't be trusted
[21:35:30] <fuzzie> but proficiencies should be harmless and i assume dhewg has no HLAs
[21:35:51] <fuzzie> so i'm not convinced it's leelup
[21:35:52] <fuzzie> levelup
[21:36:13] <dhewg> i have an earlier savegame where she has the option to levelup
[21:36:20] <dhewg> doing that+save+load doesnt train chr
[21:36:25] <dhewg> *drain
[21:36:55] <dhewg> maybe under some other circumstances
[21:42:40] <dhewg> whats a HLA?
[21:42:49] <fuzzie> high-level ability
[21:43:58] <dhewg> hm
[21:44:11] <lynxlynxlynx> you'd have to be very high level for that
[21:44:17] <fuzzie> yes, no HLAs
[21:44:18] <lynxlynxlynx> so you don't have them for sure
[21:44:39] <dhewg> just loaded a savegame where she is wearing that amulet and it was not used for the stats
[21:44:48] <dhewg> reequipping it fixed that
[21:45:03] <dhewg> maybe when saving with that state yields that drain?
[21:45:19] <fuzzie> that sounds like a crazy state
[21:45:37] <lynxlynxlynx> and we have two sets of stats anyway
[21:46:15] <dhewg> well, its not the savegame itself
[21:46:22] <dhewg> its just "sometimes"
[21:46:51] <fuzzie> did you use ctrl-r much?
[21:47:01] <dhewg> never
[21:47:13] <dhewg> maybe for testing, but never on the game progress
[21:47:36] <lynxlynxlynx> ctrl-r is fine too
[21:47:50] <fuzzie> with stat-modifying items equipped?
[21:48:17] <lynxlynxlynx> i always had a strength modifying one of some form
[21:49:37] <lynxlynxlynx> but that was mostly before the safestat copy
[21:55:10] <dhewg> the mindflayer drain is not restorable?
[21:55:50] <fuzzie> is it not?
[21:56:17] <dhewg> i dont know if it was a mindflayer, but i cant get minsc up to int9 with restauration
[21:57:40] <fuzzie> i don't see any way this could happen off the top of my head
[21:58:07] <lynxlynxlynx> me neither
[21:58:19] <lynxlynxlynx> flayer's drain is temporary too
[21:58:46] <lynxlynxlynx> minsc didn't hit his head that hard *again*? :)
[21:58:49] <dhewg> i got lvl drained a few times, but could always get rid of it with restauration
[21:58:53] <dhewg> heh :)
[21:59:13] <lynxlynxlynx> level drain is not what it sounds like too, much more docile
[22:04:52] <fuzzie> yes, i don't see anything
[22:06:38] <dhewg> double checked
[22:06:50] <dhewg> wrong note on minsc, he didnt change
[22:07:02] <dhewg> but i saw different values for STR on jaheira
[22:07:26] <dhewg> but somehow that effect on aerie is reoccuring
[22:08:26] <fuzzie> the thing is, it's really tricky to get the saved (BaseStats) stats to change
[22:08:58] <dhewg> i never fiddled with that manually fwiw
[22:09:30] <dhewg> but there's definitely something wrong
[22:10:14] <dhewg> i cant reproduce it now, but sometimes loading a save doesnt show the correct stats with equipped items
[22:12:58] <lynxlynxlynx> sure
[22:13:15] <lynxlynxlynx> sometimes the effects are applied double too
[22:13:36] <fuzzie> :(
[22:13:43] <lynxlynxlynx> but the 0 chr thing is completely different
[22:14:02] <dhewg> is that you being sarcastic or seriously?
[22:14:06] <fuzzie> well, if it reduces slowly through a whole bunch of games
[22:14:07] <dhewg> double?
[22:14:15] <fuzzie> then well something\
[22:14:22] <fuzzie> what i really mean is "AAAAA, double?!"
[22:14:34] <dhewg> hehe
[22:14:45] <dhewg> well, if its not persitent.. ok
[22:15:02] <lynxlynxlynx> i think it happens when you start tob
[22:15:04] <dhewg> but draining the innocent aerie to 0 CHR is beyond evil!
[22:15:10] <lynxlynxlynx> but maybe it is just a gui glitch
[22:15:38] <lynxlynxlynx> and it is all just about equipped items and Modified stats
[22:15:38] <dhewg> lynxlynxlynx: well, if i load my latest save, aerie drops dead because of 0 CHR
[22:16:00] <lynxlynxlynx> i know
[22:16:06] <lynxlynxlynx> but wtf did it?
[22:16:15] <fuzzie> i didn't check the basestats
[22:16:18] <dhewg> i can only think of the amulet
[22:16:36] <dhewg> ive seen multiple version of my past saves
[22:16:49] <dhewg> the chr value gets lower over time
[22:16:58] <dhewg> but its always an even number
[22:16:59] <lynxlynxlynx> do a GetPlayerStat(6,IE_CHR)
[22:17:04] <lynxlynxlynx> and do a GetPlayerStat(6,IE_CHR,1)
[22:17:30] <lynxlynxlynx> maybe with a print infront
[22:18:02] <dhewg> 2 and (2,1)
[22:18:32] <dhewg> thats after dropping dead, but not yet greyed out as dead
[22:18:46] <dhewg> the char screen shows a green 2 for chr
[22:18:58] <dhewg> with amulet that is
[22:19:52] <lynxlynxlynx> so the second one is 1 or 2 or what?
[22:20:01] <lynxlynxlynx> shouldn't be a tuple
[22:20:20] <dhewg> print(GetPlayerStat(6,IE_CHR,1)) gives me (2,1)
[22:20:36] <dhewg> heh, it printed the ( ) ?
[22:20:47] <fuzzie> yes
[22:20:58] <fuzzie> print isn't a function in python2.x
[22:21:01] <fuzzie> you probably mistyped
[22:21:20] <dhewg> but print() in 2.x works too, right?
[22:21:25] <fuzzie> no
[22:21:32] <fuzzie> it's print (), which is to say, print tuple
[22:21:35] <dhewg> anyway, print GetPlayerStat(6,IE_CHR,1) gives 0
[22:21:51] <lynxlynxlynx> ok
[22:22:06] <lynxlynxlynx> permadrain
[22:23:10] <fuzzie> bad
[22:23:14] <dhewg> i was walking and fighting with her just fine before that save
[22:23:26] <dhewg> even with saving and reloading all the time
[22:23:29] <fuzzie> well easy to notice the lack of charisma i guess :)
[22:23:40] <dhewg> i bet i did a level up just before that save, cant remember now :(
[22:23:41] <fuzzie> if you can find reproduction recipe i imagine we'd be eternally grateful
[22:23:48] <lynxlynxlynx> you could put some traps in pcf_stat
[22:31:55] <-- lynxlynxlynx has left IRC (Remote host closed the connection)
[23:33:11] <-- Bo_Thomsen has left IRC (Quit: Leaving.)