#gemrb@irc.freenode.net logs for 28 Aug 2010 (GMT)

Archive Today Yesterday Tomorrow
GemRB homepage


[00:02:11] <pupnik_> jaheira is back to her "complain about the waste of time" continuously mode
[00:05:07] <edheldil_> I am in "complain about the lack of time" continuously mode
[00:05:10] <edheldil_> :)
[00:05:42] <pupnik_> eyah well that's how it goes
[00:05:50] <pupnik_> everything takes time
[00:06:15] <pupnik_> i can see how in big companies coders could avg 10 lines a day
[00:59:50] --> raevol has joined #GemRb
[01:04:51] <-- edheldil_ has left IRC (Ping timeout: 258 seconds)
[02:15:55] <-- vemikainen has left #GemRb
[03:22:07] <-- raevol has left IRC (Quit: Leaving.)
[05:00:57] --> spike411 has joined #GemRb
[05:24:26] --> tomprince_loki has joined #GemRb
[05:36:44] <tomprince_loki> Quick comment about unistd.h: It is probably reasonable to include it on any POSIX system. The manpages I have claim unlink/rmdir are only declared there. libstdc++ <string> just includes unistd.h via gthr-posix.h. Haiku probably has a different or no threading, and so unistd.h doesn't get included.
[05:36:47] <-- tomprince_loki has left #GemRb
[05:46:42] <spike411> Segfault http://paste.jabbim.cz/4825
[05:47:35] <spike411> IWD2, in the dialogue with the injured guy in docks. The dialogue started and I didn't choose any option for a few minutes
[05:56:16] <spike411> Also I cannot trigger the dialogue option where I can offer healhim him (but I cannot use Special Abilities and other things in IWD2 anyways)
[05:57:03] <-- spike411 has left IRC (Quit: spike411)
[07:58:07] --> SiENcE has joined #GemRb
[08:22:06] --> lynxlynxlynx has joined #GemRb
[08:22:06] --- ChanServ gives channel operator status to lynxlynxlynx
[08:28:57] --> edheldil_ has joined #GemRb
[08:40:14] <-- edheldil_ has left IRC (Ping timeout: 264 seconds)
[08:42:37] <fuzzie> tomprince, if he sees logs: i agree on the POSIX thing, i just don't really know how to detect that
[08:42:41] <fuzzie> maybe lynx knows
[08:47:09] <lynxlynxlynx> gcc has __POSIX__
[08:49:21] <fuzzie> that sounds great, then
[09:16:46] --> spike411 has joined #GemRb
[09:20:24] <-- spike411 has left IRC (Client Quit)
[09:31:03] <lynxlynxlynx> http://iesdp.com/IesdpOld/General/AvaGraph.htm <-- ancient avatar creation tutorial
[10:03:50] <-- SiENcE has left IRC (Quit: cya @all)
[11:04:05] --> vemikainen has joined #GemRb
[11:05:17] <pupnik_> 1800 frames of animation per avatar
[11:19:08] <Lightkey> fuzzie: well, youtube-dl does not know Golem URLs, fail :p
[11:29:25] --- pupnik_ is now known as pupnik
[11:57:27] <pupnik> Sat Aug 28 13:57:25 CEST 2010
[11:57:29] <pupnik> wow
[11:57:31] <pupnik> time flies
[13:16:00] <-- vemikainen has left IRC (Ping timeout: 252 seconds)
[13:21:50] <Lightkey> the time flies will eat us all!
[13:22:04] <Lightkey> run for your lives
[14:02:08] <pupnik> lol
[14:02:13] <pupnik> run back in time
[14:05:36] --> avenger has joined #GemRb
[14:05:36] --- ChanServ gives channel operator status to avenger
[14:06:15] <avenger> hmm fuzzie, did you look at the crash log of spike?
[14:06:29] <avenger> it shouldn't ever happen :)
[14:07:08] <avenger> it is a missing fog sprite, but those are generated on startup
[14:12:29] <avenger> oh wait, it is another thread that is crashed
[14:22:09] --> vemikainen has joined #GemRb
[14:30:19] <pupnik> hi vemikainen
[14:31:32] <vemikainen> hello
[14:33:51] <pupnik> what are you doing with gemrb?
[14:34:30] <vemikainen> porting to IPAD
[14:34:37] <vemikainen> and maybe iphone
[14:41:13] <fuzzie> avenger: sorry, v.busy today, not really here at all
[14:41:19] <avenger> ok
[14:59:03] <lynxlynxlynx> yeah, it didn't look like it was our fault
[15:08:25] <fuzzie> this is the one where someone commented out the "this makes it work on OS X" thing, on OS X? :)
[15:09:55] <fuzzie> ah, lynx added the warning there; thanks
[15:11:55] <avenger> when assigning a portrait to a char, the engine manually hacks the ending L into M, this would fix the ugly large portrait in character import
[15:12:17] <fuzzie> a nice find :)
[15:14:22] <avenger> just telling, so we won't shy away from similar hacks. They do this replacement in at least 2 places :)
[15:14:42] <avenger> most likely we can do this in the guiscript
[15:24:25] <lynxlynxlynx> let's see
[15:25:24] <pupnik> what game are you using to test vemikainen
[15:25:35] <lynxlynxlynx> bg2
[15:25:45] <vemikainen> by the way, the way how i ported GemRB to IPad, should also work as Xcode build for OS-X and Cocoa SDL
[15:26:00] <vemikainen> I got bg2 and bg1 working
[15:26:21] <vemikainen> with widescreen mod, however there are some glitches with save games in bg1
[15:26:58] <vemikainen> I think i can make an Xcode project which can be added to project for easier build
[15:27:50] <pupnik> well bg2 isn't really working so much right now, but hopefully soon
[15:28:05] <lynxlynxlynx> bg2 is working well pupnik :P
[15:28:12] <fuzzie> well, the cutscene thing is annoying
[15:28:39] <CIA-26> GemRB: 03lynxlupodian * r2b1f98a7fc24 10gemrb/gemrb/GUIScripts/bg2/ImportFile.py: bg2::cg: hack the portrait size for imported characters
[15:28:45] <lynxlynxlynx> there's plenty of annoying things
[15:28:50] <pupnik> vemikainen: have you seen UI bugs when displaying many characters (on right hand border) in non-standard resolutions?
[15:28:52] <fuzzie> but i assume it just needs a GF_AREA_SCRIPTS_IN_CUTSCENE or something
[15:29:06] <fuzzie> lynxlynxlynx: well, 'annoying' in the game-breaking sense :)
[15:29:48] <lynxlynxlynx> that's your work ;P
[15:30:20] <fuzzie> but we have no cutscene handling RE for bg2, and no tests..
[15:31:16] <avenger> fuzzie, what's up with cutscenes?
[15:31:18] <-- vemikainen has left IRC (Ping timeout: 252 seconds)
[15:31:22] <fuzzie> avenger: which scripts run during them? :)
[15:31:39] <avenger> i thought all, but since you ask it... :)
[15:31:47] --> vemikainen has joined #GemRb
[15:31:58] <fuzzie> well, the general wisdom is that no new script blocks get executed
[15:32:13] <vemikainen> ipad is 1024x768 so it looks good for bg2
[15:32:30] <fuzzie> but this is not true for .. i think bg1/pst/iwd, at least.
[15:32:49] <lynxlynxlynx> vemikainen: the mac improvements would be handy
[15:32:53] <vemikainen> with bg1 with widescreen it almost looks good
[15:32:53] <fuzzie> but i guess the code for this is somewhere deep in script updating, which no-one seems to have REed.
[15:33:26] <avenger> well, yeah, that is not easy to find, maybe not even with c code :)
[15:33:58] <vemikainen> especially changing LoadWindowPack to LoadWindowPack 640,480 which centers the menus
[15:34:01] <fuzzie> sure, and i think we can just test it, but it's not so easy to test all the cases
[15:34:14] <avenger> there are so many flags and virtual functions, it can hide very well in the spaghetti
[15:34:27] <fuzzie> the textscreen was no longer centered last time i tried it..
[15:35:04] <lynxlynxlynx> it passes the resolution hints
[15:35:17] <fuzzie> i thought i should mention that while i remember
[15:36:15] <vemikainen> the only proble with my port to ios at this point as it uses SDL 1.3 which is still in development
[15:36:56] <lynxlynxlynx> ouch
[15:37:10] <fuzzie> yeah, SDL 1.3 is much less of a pain on OS X :P
[15:37:17] <fuzzie> SDL 1.2 is a miserable mess
[15:37:31] <fuzzie> but last time i looked, i think i only had to change one thing (two function calls?)
[15:37:40] <fuzzie> don't know if you had the same experience
[15:37:53] <avenger> sdl 1.2 had some bug on windows at one point too
[15:37:56] <fuzzie> but if so, we can just #ifdef that stuff..
[15:38:07] <fuzzie> well, SDL 1.3 is full of bugs :-)
[15:38:22] <vemikainen> yeah some fields were chnaged to protected so you have to use functions instead of that
[15:38:41] <fuzzie> but SDL 1.2 on windows at least doesn't crash if you don't run a whole bunch of objective C code before your main() :p
[15:38:55] <avenger> we could do that, if it works on 1.2
[15:39:07] <vemikainen> sorry i have to run now. I will be back later
[15:39:12] <-- vemikainen has left IRC (Quit: Page closed)
[15:39:55] <fuzzie> but, no, the functions for the protected fields aren't available in 1.2
[15:40:08] <fuzzie> but i'm pretty sure there must be a version defined which we can check
[15:40:39] <fuzzie> vemikainen can probably work it out
[15:49:07] <pupnik> hrm
[16:00:15] --> tomprince_loki has joined #GemRb
[16:02:49] --> pupnik_ has joined #GemRb
[16:05:30] <tomprince_loki> re: unistd.h, i think !defined(win32) or perhaps even !defined(win32) || defined(mingw32) is enough. I don't know where unlink/rmdir are define on win32.
[16:06:14] <-- pupnik has left IRC (Ping timeout: 276 seconds)
[16:09:56] <-- tomprince_loki has left #GemRb
[16:17:02] <avenger> numitems works for containers...
[16:17:14] <avenger> hmm, lynx can you work that out?
[16:17:57] <avenger> it is not too difficult, containers also got an inventory
[16:18:18] <lynxlynxlynx> i don't know what you're talking about
[16:18:21] <avenger> just need to get the inventory pointer for actors and containers
[16:18:36] <avenger> NumItems[GT|LT] is a trigger
[16:19:05] <avenger> i found it that it works for containers not only for actors
[16:19:32] <avenger> this may fix stuff where you need to put items in a container for some quest
[16:20:02] <lynxlynxlynx> ah
[16:20:16] <avenger> Contains already works this way
[16:20:17] <lynxlynxlynx> yeah, should be pretty easy
[16:20:32] <avenger> oops
[16:20:40] <avenger> no, contains works only for containers
[16:20:49] <avenger> HasItem is the one that works for both
[16:20:56] <avenger> lemme see if contains works for actors :)
[16:21:22] <avenger> no it doesn't, good
[16:21:41] <avenger> no idea why they needed contains, when HasItem works for containers, though
[16:22:18] <lynxlynxlynx> could be a historic thing
[16:22:23] <lynxlynxlynx> code evolution
[16:23:47] <avenger> btw, about bags (store items), it seems the engine has a simplified loader for bags
[16:24:19] <avenger> i still didn't figure this out completely
[16:24:49] <avenger> they have a cache for stores too, it has 12 entries (not one, like we have)
[16:25:36] <lynxlynxlynx> cool
[16:29:23] <avenger> omg
[16:29:41] <avenger> numitemsparty doesn't check bags outside dialog/cutscene???
[16:30:08] <avenger> lazy bastards!
[16:30:29] <avenger> probably not even in cutscene, just dialog
[16:30:45] <lynxlynxlynx> http://pastebin.ca/1927794 <-- this
[16:32:01] <avenger> yeah it looks good, did you look at HasItem?
[16:33:33] <lynxlynxlynx> no
[16:34:20] <lynxlynxlynx> better to use GetActorFromObject?
[16:34:41] <lynxlynxlynx> either the function name is misleading or HasItem is silly
[16:35:32] <avenger> oops, right, you need to use GetActorFromObject
[16:35:40] <avenger> it accepts an object parameter
[16:36:25] <avenger> hasitem and all these numitem[gt/lt] got an object parameter
[16:39:03] <avenger> and numitems doesn't check the bags, which i always found outrageous
[16:41:37] <CIA-26> GemRB: 03lynxlupodian * r5ad069866f05 10gemrb/gemrb/core/GameScript/Triggers.cpp: NumItems* triggers can also check containers
[17:20:18] <avenger> hmm fuzzie, in object parsing, there is a flag to check if the detector actor is sleeping. Oddly there is no check if it is dead.
[17:24:21] <avenger> and if i'm right the IsOverMe trigger is not true if the actor is invisible, hmm, i cannot believe that :)
[17:26:59] <fuzzie> oh?
[17:27:11] <fuzzie> i mean, IsOverMe isn't used much, and it would make sense for it to check visibility
[17:29:21] <avenger> well, before we change that, i want to test it
[17:29:41] <avenger> there is at least one use,iirc, in irenicus dungeon, the library trigger checks for imoen
[17:30:02] <avenger> and it just detected her, so i don't know what's going on
[17:30:41] <avenger> i think this is again my senility :)
[17:30:53] <avenger> .text:004BA452 cmp [ebp+bCheckVisible], 0
[17:30:54] <avenger> .text:004BA456 jnz short loc_4BA49C
[17:31:12] <avenger> jnz will jump if it is not zero, right?
[17:31:34] <avenger> so, yeah, it is actually bIgnoreVisible :)
[17:32:10] <lynxlynxlynx> 222 uses
[17:32:55] <avenger> ?
[17:33:17] <Lightkey> !
[17:33:54] <lynxlynxlynx> of IsOverMe
[17:33:56] <fuzzie> lynxlynxlynx: with non-IDS targeting?
[17:34:15] <avenger> to say something in my defense, the LOS flag works the opposite way
[17:34:32] <avenger> fuzzie: isoverme has some weird object parsing
[17:34:50] <fuzzie> Detect is the normal example of IDS targeting which ignores invisibility.
[17:34:54] <lynxlynxlynx> [] object matching, strings and Player*
[17:35:12] <avenger> it doesn't just checks if the parsed object is inside its polygon, as a sane programmer would write :)
[17:35:17] <fuzzie> Does IsOverMe do the same thing?
[17:35:38] --> D_T_G has joined #GemRb
[17:35:57] <D_T_G> hi
[17:36:04] <lynxlynxlynx> oj
[17:36:10] <avenger> detect has a small trick in it, if Sender has no current area, it doesn't work
[17:36:16] <D_T_G> funny bug in iwd1: http://i33.tinypic.com/30mv060.jpg
[17:36:38] <fuzzie> avenger: yeah, i had to do that too.
[17:36:46] <avenger> oh you did that?
[17:36:48] <fuzzie> because we ActionOverride stuff onto global actors.
[17:36:48] <avenger> cool
[17:36:55] <fuzzie> i assume that is a gemrb bug, though.
[17:37:14] <avenger> no, it looks like global actors are part of the system :)
[17:37:18] <fuzzie> hmph. :P
[17:37:21] <avenger> they could be targeted and such
[17:37:24] <fuzzie> well, ok, accidental correct fix then :)
[17:37:29] --> vemikainen has joined #GemRb
[17:37:45] <avenger> they just don't 'detect'
[17:37:51] <avenger> and probably they don't 'see' as well
[17:38:20] <fuzzie> i assume that for actions, anything not in nodetect.ids doesn't do anything tricky with IDS targeting, but there's no equivalent for triggers, so i guess any of the custom triggers might do crazy things.
[17:39:03] --> SiENcE has joined #GemRb
[17:39:05] <fuzzie> erm, nodecode.ids.
[17:39:11] <fuzzie> i am too tired to talk about this stuff, maybe :)
[17:39:36] <lynxlynxlynx> D_T_G: what's wrong in that picture?
[17:39:38] <avenger> ok, see is the same
[17:39:57] <avenger> so, if you didn't do the same to 'see' as 'detect', it should be
[17:40:00] <D_T_G> lynxlynxlynx: the helm is misplaced from head :)
[17:40:10] <D_T_G> on avatar
[17:40:21] <lynxlynxlynx> ah
[17:41:03] <fuzzie> avenger: i did it to everything which needs to check visible range, i think
[17:41:05] <D_T_G> i'll add it to wiki
[17:41:14] <avenger> huh, there is some weird crap about familiars
[17:41:43] <vemikainen> hello, i'm back. By the way anybody knows, Is there are any other fonts (normal.BAM) apart from the huge, totsc and the standard one? I would like to have something in the middle
[17:42:02] <fuzzie> vemikainen: there are mods which provide better large fonts, i think?
[17:42:05] <fuzzie> lynx would know
[17:42:24] <pupnik_> i like the larger fonts
[17:42:52] <avenger> detect seems to have no invis check
[17:43:06] <avenger> see has invis check only if Sender is an actor
[17:43:14] <fuzzie> avenger: that is how gemrb has it :)
[17:43:19] <avenger> really?
[17:43:22] <avenger> that's awesome
[17:43:48] <lynxlynxlynx> vemikainen: the huge being the one from the big fonts mod?
[17:44:08] <avenger> both checks LOS (terrain) and visible range
[17:44:40] <fuzzie> gemrb doesn't check visible range for scriptable Senders, not so awesome :P but easy to fix
[17:44:45] <avenger> as i said earlier, non-livings got a visible range
[17:44:55] <fuzzie> we just didn't know that all scriptables had a visible range until you said
[17:45:00] <avenger> yeah
[17:45:07] <fuzzie> i thought it was some weird BIS thing
[17:45:10] <vemikainen> Yes. The only problem which I found, that for whatever reason the first version of bigfonts mod which is 30K in size works with gemrb 0.6.1. All the next ones which are compressed and is 10-12K don't work properly
[17:45:10] <avenger> i didn't suspect it
[17:45:51] <fuzzie> the bigfonts thing should go on the bug list, we probably misinterpret something
[17:46:25] <vemikainen> and that huge one is huge. You have to scroll 4 question dialogs. In addition for bg1 it is totally unusable due to 640 width of dialog panel
[17:47:25] <lynxlynxlynx> it was made for widescreen+lcd use
[17:47:53] <fuzzie> there are some lovely mid-size fonts for PS:T, is all i've used
[17:49:03] <lynxlynxlynx> http://lparchive.org/LetsPlay/BG2/index.html <-- tons of screenshots, yay
[17:49:10] <vemikainen> ok thanks i will look into ps:t fonts
[17:49:35] <fuzzie> lynxlynxlynx: hehe, i find that page a lot when searching for things :)
[17:51:06] <lynxlynxlynx> i'm looking now at why sendai fails
[17:52:26] <fuzzie> i assume our Continue() stuff is broken, with instants, but i haven't tested that yet
[17:52:27] <avenger> fuzzie: i think object parsing is separate from detecting. GetActorFromObject should work even if Sender doesn't see the actor, or such
[17:52:39] <fuzzie> avenger: yes, but only if it doesn't do IDS targeting
[17:52:45] <lynxlynxlynx> it's this script scripts/bg2/ar6108.baf and line 152 is the last obvious thing that worked
[17:52:48] <avenger> hmm...
[17:52:55] <fuzzie> so 'Player1' will always match Player1, but '[PC]' will do all the checks
[17:53:00] <lynxlynxlynx> need to check where she gets that minhp from
[17:53:08] <fuzzie> there are thousands of scripts which depend on that, it is not in doubt :P
[17:53:28] <fuzzie> the sneaky thing is: NearestEnemyOf does all the checks too!
[17:53:39] <avenger> yes, THAT does
[17:53:43] <fuzzie> so sneaky!
[17:53:56] <fuzzie> because otherwise none of the filters do them
[17:54:00] <avenger> that is using the function i discussed earlier with the invis/los flags
[17:54:08] <fuzzie> yes, we do the same
[17:54:13] <avenger> but i think Player1 doesn't
[17:54:20] <fuzzie> yes, it doesn't :)
[17:54:28] <avenger> and you say [PC] would?
[17:54:30] <fuzzie> yep
[17:55:01] <fuzzie> well, no-one can tell me what all the triggers do..
[17:55:20] <fuzzie> they do weird things, so no promises about triggers
[17:55:32] <avenger> i already found where it evaluates the object ids, but i didn't find the ids targeting, yet...
[17:55:38] <fuzzie> but for actions, [PC] does all the checks.
[17:55:58] <fuzzie> invisibility, LOS, range, protection against creature, etc.
[17:56:19] <avenger> did i already mention they do variables quite the same as i did :)
[17:56:27] <fuzzie> if you have more specifics, i would love to hear.
[17:56:38] <avenger> each variable entry has a point, a float, a string and an int value
[17:56:41] <fuzzie> all the gemrb code for this is in GameScript/Matching.cpp now, i think.
[17:56:42] <avenger> even when you save them
[17:57:16] <avenger> they store tokens/death vars in string variables
[17:57:18] <fuzzie> so hopefully it is trivial to add all the new flags we need.
[17:57:37] <avenger> ok, i look for the [x.y.z] stuff
[17:57:52] <fuzzie> but that works well in gemrb already, so i wouldn't worry about it.
[17:58:14] <fuzzie> it is probably not correct, but it is 'good enough' that i didn't find any bugs yet.
[18:02:47] --> raevol has joined #GemRb
[18:05:05] <avenger> oh, hmm, it doesn't even evaluate the ids targeting fields in the same function
[18:05:25] <fuzzie> well, for actions, the ids targeting is clearly done outside the action, because of the nodecode.ids thing
[18:05:39] <avenger> triggers got them separated too
[18:05:50] <avenger> first it does the 'evaluating' or decoding
[18:05:53] <fuzzie> however, Detect([PC]) detects invisible PCs.
[18:06:08] <fuzzie> so it can't be quite so simple.
[18:06:13] <avenger> yeah, if they are in the visible range and not blocked by a wall
[18:06:39] <fuzzie> because [PC] for everything else does *not* do hat.
[18:06:59] <fuzzie> and since not every single action/trigger checks invisibility manually, clearly the ids targeting code must be doing something too.
[18:07:19] <fuzzie> well, ok, i *assume* not every single action/trigger checks invisibility manually. that would suck. :P
[18:07:22] <avenger> they do it manually
[18:07:51] <avenger> they do it in more steps than we do too :)
[18:08:18] <avenger> they don't just have a GetActorFromObject, but before that, they preprocess the object
[18:08:18] <fuzzie> anyway since we do the targeting in the individual functions, we don't have to be so dumb. :P
[18:09:19] <avenger> i don't think they are dumb or that we will differ too much from this
[18:09:49] <fuzzie> well, all the preprocessing stuff i saw on their side is silly
[18:09:57] <fuzzie> they copy huge amounts of unnecessary junk around
[18:10:01] <avenger> oh yeah, i found what you talk about
[18:10:27] <fuzzie> we don't ever make useless copies of actions or triggers or objects
[18:10:35] <lynxlynxlynx> heh
[18:10:53] <avenger> so, the stuff i called ' EvaluateTrigObject' would do the object ids and scripting name processing
[18:11:12] <avenger> the stuff i called 'GetRealObject' does the [x.y.z] and visibility stuff
[18:11:30] <fuzzie> cool
[18:11:37] <fuzzie> where's the object filters done, EvaluateTrigObject?
[18:11:41] <avenger> not all triggers use GetRealObject
[18:11:53] <avenger> yes
[18:12:05] <avenger> object ids and scripting name
[18:12:13] <fuzzie> ok. that is pretty much exactly how we had it, then :)
[18:12:27] <fuzzie> i mean, i guess they also have some method of storing a global id
[18:12:46] <fuzzie> oh, i guess that is probably not needed for triggers..
[18:12:47] <avenger> well, except that parsing the targeting ids is not done similarly for each
[18:13:08] <fuzzie> well, i hope we can just add flags for anything we need
[18:13:49] <avenger> there is this GetRealObject, that calls resolves the target ids, i very much believe it builds a list
[18:13:52] <fuzzie> obviously there is no way for us to know about 'weird' targeting stuff, unless we find a bug :)
[18:14:02] <fuzzie> well, you have to find the nearest matching object
[18:14:19] <fuzzie> so a list makes sense
[18:14:50] <fuzzie> unless you mean some other kind of list :)
[18:22:29] <lynxlynxlynx> do we have any known problems with Kill(Myself)?
[18:22:39] <fuzzie> well, it is too fast
[18:23:04] <fuzzie> it is meant to create a death effect and apply it, and then effect applications are meant to go via messages and so not get applied until the end of the frame
[18:23:21] <lynxlynxlynx> that shouldn't be an issue in this case
[18:23:48] <lynxlynxlynx> it also doesn't appear to be a cespenar-like instant problem
[18:23:51] <fuzzie> but we just do an insta-kill, which ruins at least one script
[18:24:00] <fuzzie> (since it does Kill(Myself) and then expects to still be alive and running things)
[18:24:04] <lynxlynxlynx> there's one non-instant action, but a later instant gets executed
[18:24:25] <lynxlynxlynx> this is dlg/bg2/sendai.d:110 btw
[18:24:33] <avenger> yeah, Kill should apply the death effect
[18:24:50] <avenger> there is probably a different code in iwd2, though
[18:25:03] <fuzzie> lynxlynxlynx: what goes wrong there?
[18:25:21] <lynxlynxlynx> she doesn't die
[18:25:30] <lynxlynxlynx> that commented destroyitem is pretty funny
[18:25:31] <fuzzie> interrupted by an area script?
[18:25:47] <fuzzie> (that being what i was complaining about earlier)
[18:26:10] <lynxlynxlynx> i doubt it
[18:26:23] <lynxlynxlynx> the last block in the area script requires her to be dead
[18:26:40] <fuzzie> yes, i mean, gemrb will let area scripts interrupt cutscenes
[18:26:52] <fuzzie> because this is required for bg1, but apparently it breaks bg2
[18:27:06] <lynxlynxlynx> but this dialog cutscene ends before the kill call
[18:27:23] <fuzzie> sure, but maybe it's interrupted at the Wait(1)?
[18:27:26] <fuzzie> oh, wait
[18:27:36] <lynxlynxlynx> she's not dead yet there
[18:27:41] <fuzzie> well, if the end cutscene ends then the bug makes no sense..
[18:27:48] <fuzzie> which area is it?
[18:27:56] <lynxlynxlynx> scripts/bg2/ar6108.baf
[18:28:09] <lynxlynxlynx> the dialog cutscene ends, but this area one doesn't even start
[18:28:31] <avenger> omg, numcreaturevsparty is totally different from what i thought
[18:28:42] <avenger> it is not counting hostiles
[18:28:53] <avenger> it does creaturecount-partysize
[18:28:56] <fuzzie> avenger: i think you already discovered something like that, and put it on the forums
[18:29:00] <lynxlynxlynx> well, at least i think it doesn't - i don't have any map notes or exits available
[18:29:03] <avenger> did i?
[18:29:08] <avenger> i totally forgot that
[18:29:17] <fuzzie> well, maybe something similar :)
[18:29:24] <fuzzie> i get lost in all the triggers, they're confusing
[18:29:29] <fuzzie> lynxlynxlynx: nothing happens at all when it ends?
[18:29:31] <avenger> our implementation is wrong
[18:30:14] <fuzzie> oh, our Kill() action is very silly
[18:30:17] <fuzzie> very very silly
[18:30:20] <lynxlynxlynx> SetGlobal("Enclave","GLOBAL",1) <-- this was 0 afterwards (print GetVar)
[18:30:20] <fuzzie> who wrote this? :)
[18:30:51] <avenger> lynx, can you do this too? NumCreatureVsParty[gt/lt]: should be the same as NumCreature, but subtract PartySize from the number before comparing
[18:30:52] <lynxlynxlynx> aah
[18:31:00] <fuzzie> it just sets hitpoints to -100, and i think someone sabotaged Die() to obey min hp
[18:31:08] <fuzzie> (*also* wrong)
[18:31:31] <lynxlynxlynx> avenger: ok
[18:31:37] <avenger> fuzzie: when we reach iwd2, you will see :)
[18:31:53] <avenger> but i guess, they got a separate action
[18:32:21] <fuzzie> yes, iwd2 has all kinds of different things
[18:32:30] <fuzzie> we already had to split some gemrb actions into iwd2/non-iwd2
[18:32:47] <avenger> there is chunkcreature :)
[18:32:52] <lynxlynxlynx> there was a good reason for that minhp change, but i don't remember it and it may have been at the wrong level
[18:33:04] <fuzzie> Die() means, die :P
[18:33:23] <fuzzie> but i don't think you added the check, you just changed it?
[18:33:33] <lynxlynxlynx> i'll check
[18:33:40] <avenger> ok, kill shouldn't work that way, that's sure :)
[18:33:43] <fuzzie> yes, the log doesn't blame you
[18:33:44] <lynxlynxlynx> iirc it was only checking for 0
[18:33:56] <fuzzie> you just made it work for negative hp
[18:34:34] <fuzzie> but i don't really understand how death works, still
[18:34:44] <Lightkey> ...
[18:34:45] <fuzzie> like, pcf_stat kills you if a stat drops to 0, i think?
[18:35:27] <fuzzie> is that always an insta-kill? so minhp objects must come with effects to resist that?
[18:36:03] <fuzzie> but the code is from Avenger in august 2004, so i think as usual, this is just old code
[18:36:12] <lynxlynxlynx> yes, mind flayers are so deadly due to stat drain
[18:37:05] <fuzzie> but pcf_hitpoint does this minhp check
[18:38:11] <lynxlynxlynx> loops
[18:38:30] <avenger> posted this: http://forums.gibberlings3.net/index.php?showtopic=20883
[18:38:33] <fuzzie> Die() is also called by Turn(), pcf_stat, fx_death, fx_replace_creature, fx_power_word_kill, and fx_turn_undead2
[18:38:50] <fuzzie> all those sound reasonable
[18:39:04] <pupnik_> are you guys running alsoIWD under windows or wine
[18:39:04] <avenger> most of them are actually applying the death opcode in the original
[18:39:09] <fuzzie> so i would just remove this minhp stuff from Die()
[18:39:24] <fuzzie> i mean, i don't know if that helps your problem at all :P maybe check if Sendai has a minhp object
[18:39:26] <avenger> pupnik: i occasionally run HoW
[18:39:31] <lynxlynxlynx> she does
[18:39:42] <lynxlynxlynx> that's why the //DestroyItem("BHAALHP1") was funny
[18:39:45] <pupnik_> HoW is what again?
[18:39:53] <lynxlynxlynx> iwd
[18:39:56] <fuzzie> oh :) ok, so remove the minhp stuff from Die() and change the Kill() action to call Die :p
[18:39:57] <avenger> heart of winter
[18:40:04] <pupnik_> ty
[18:40:05] <avenger> iwd++ :)
[18:40:12] <lynxlynxlynx> ok, no need to construct an effect?
[18:40:24] <fuzzie> well, it is important to construct an effect
[18:40:51] <fuzzie> but i just meant, you can see if it's your problem
[18:41:01] <lynxlynxlynx> i'm pretty sure it is
[18:41:16] <avenger> how will sendai die, if she doesn't drop the minhp item?
[18:41:28] <fuzzie> avenger: Kill() kills the target
[18:41:32] <lynxlynxlynx> of course, having a bit of wisdom and the universe against me, i better check that claim
[18:41:48] <fuzzie> the death opcode doesn't check minhp for this case
[18:41:59] <fuzzie> this is documented somewhere, but if you would like to check it, please do :)
[18:42:21] <avenger> no
[18:42:30] <avenger> kill applies the death opcode :P
[18:42:38] <fuzzie> 20:41 <fuzzie> the death opcode doesn't check minhp for this case
[18:42:57] <avenger> hmm
[18:43:21] <fuzzie> the fixpackers spent a while trying to 'fix' this stuff before devSin pointed that out
[18:43:41] <fuzzie> would be nice to know exactly why it doesn't check minhp though..
[18:43:50] <avenger> yea
[18:43:57] <fuzzie> i think probably it never checks minhp
[18:44:12] <avenger> i wonder how it would do that
[18:44:28] <avenger> ok, actually, i would have to see the damage opcode
[18:44:39] <avenger> because it is damage that should check minhp :)
[18:44:51] <fuzzie> well, damage isn't involved here, i think
[18:44:51] <lynxlynxlynx> (IE_MINHITPOINTS,0); //the die opcode seems to override minhp
[18:45:17] <avenger> well, since only damage checks the minhp :)
[18:45:23] <fuzzie> lynxlynxlynx: ouch
[18:45:32] <fuzzie> that is horrible :P
[18:45:39] <avenger> try this: you can kill someone by setting their d&d stat to 0
[18:45:41] <lynxlynxlynx> fx_death
[18:45:49] <avenger> charisma, str, whatever
[18:46:09] <avenger> minhp doesn't protect from that
[18:46:13] <lynxlynxlynx> we know
[18:46:19] <fuzzie> ok, so remove that from fx_death at the same time, please :P
[18:51:35] <-- D_T_G has left IRC (Quit: D_T_G)
[18:52:09] <avenger> only damage opcode checks minhp
[18:52:40] <avenger> basically it adjusts the damage before subtracting
[18:53:11] <fuzzie> ok, but we have to change everything to call the damage opcode before we do that
[18:53:16] <avenger> we cannot have this right in the damage opcode, but we need it in Actor::Damage
[18:53:34] <avenger> because iwd's got more than one damage opcode
[18:54:05] <lynxlynxlynx> 3
[18:54:35] <fuzzie> the correct way to add these effects is EffectQueue::AddEffect, i guess
[18:54:58] <fuzzie> then it isn't executed immediately, which is 'good enough'
[18:55:08] <avenger> yep
[18:55:38] <avenger> we should also have the previous stats available for effects
[18:55:58] <fuzzie> which effects use them?
[18:55:59] <avenger> because if the minhp effect is after the damage effect, it will not work now
[18:56:12] <fuzzie> oh, bah :P
[18:56:14] <fuzzie> annoying
[18:56:25] <avenger> well, guess what, damage checks 'prevstat.minhp' :)
[18:56:31] <fuzzie> annoying! :)
[18:57:10] <avenger> you know i did some hack for this, in AC, i think
[18:57:18] <pupnik_> :*
[18:57:53] <avenger> fx_ac_vs_damage_type_modifier
[18:58:03] <avenger> it returns FX_INSERT sometimes
[18:58:18] <avenger> that is to have some ac effects always before some others
[18:58:29] <avenger> if we got prevstats, it wouldn't be needed
[19:02:23] <lynxlynxlynx> hah, mirror image can block ctrl-y
[19:04:37] <avenger> lol
[19:04:57] <avenger> mirror image can block cloudkill as well, if i'm right :)
[19:05:08] <CIA-26> GemRB: 03lynxlupodian * rfb4e17052bbd 10gemrb/gemrb/ (core/Scriptable/Actor.cpp plugins/FXOpcodes/FXOpcodes.cpp):
[19:05:08] <CIA-26> GemRB: don't check minhp in Actor::Die and
[19:05:08] <CIA-26> GemRB: don't reset minhp in fx_death
[19:05:11] <CIA-26> GemRB: 03lynxlupodian * r29f34bbe1245 10gemrb/gemrb/core/GameScript/Actions.cpp: GameScript::Kill: apply the death opcode instead of setting the hp
[19:05:40] <fuzzie> <3
[19:05:53] <fuzzie> does that fix sendai?
[19:06:04] <lynxlynxlynx> yep
[19:06:20] <lynxlynxlynx> i'm already busy with the intro to challenge 3
[19:09:01] <avenger> there is a difficulty modifier for single/multi player. it is a percentage to be added/subtracted from the damage
[19:09:26] <avenger> i guess it is set by the difficulty settings somewhere
[19:09:35] <fuzzie> this is just the game rules, i think
[19:09:42] <fuzzie> there is a forum post claiming it is <100% by default
[19:10:09] <avenger> it can be negative, yep
[19:10:16] <avenger> -25 would mean 75% damage
[19:10:16] <lynxlynxlynx> five levels
[19:10:25] <fuzzie> which is *not* what the explanatory text claims
[19:10:28] <lynxlynxlynx> 4 is 150 and 5 200 iirc
[19:10:59] <avenger> that is 50/100 internally :)
[19:11:02] <fuzzie> see http://forums.gibberlings3.net/index.php?showtopic=16200
[19:11:27] <fuzzie> (the post by Ardanis, there are other confused posts since)
[19:12:37] <avenger> yes it is damage pcs receive
[19:17:10] <avenger> fuzzie, do you know how to change the base of a global constant in ida? (h/b works in code, but not in data)
[19:17:29] <fuzzie> i have no idea
[19:17:36] <avenger> 0xfffffd3 doesn't look too good :(
[19:18:29] <Lightkey> you could ask in #scummvm :>
[19:18:37] <fuzzie> but they are scary
[19:18:42] <avenger> err, h/b works, just - doesn't
[19:20:23] <avenger> oh it is shift - ;)
[19:20:32] <avenger> meh
[19:20:47] --> SiENcE_ has joined #GemRb
[19:21:53] <-- SiENcE has left IRC (Ping timeout: 265 seconds)
[19:22:21] <pupnik_> hmm
[19:25:58] <-- vemikainen has left IRC (Ping timeout: 252 seconds)
[19:32:19] <lynxlynxlynx> boom
[19:35:12] <Lightkey> big bada-boom!
[19:35:30] --> Maighstir has joined #GemRb
[19:35:49] <lynxlynxlynx> i'm doing something to ease the long play tests :)
[19:36:22] <lynxlynxlynx> and of course the first attempt crashed
[19:36:25] <pupnik_> i am very interested in ways to help share game statuses
[19:36:35] <pupnik_> why not a common database of savegames online
[19:37:11] <fuzzie> we need a 'go faster' key :P
[19:37:21] <avenger> fuzzie, we didn't implement InLine yet
[19:37:33] <fuzzie> avenger: no, all the movement/formation stuff is annoying :)
[19:37:34] <lynxlynxlynx> pupnik_: we don't have finished importers/exporters yet, so the saves get too old every now and then
[19:37:56] <avenger> inline is just a little coordinate geometry
[19:38:03] <lynxlynxlynx> for the originals they wouldn't be too useful, since you never know with what mods it was done
[19:38:14] <fuzzie> well, i keep my weidu logs with my saves
[19:38:35] <fuzzie> but then you can never find the same version of the mods..
[19:39:08] <pupnik_> so maybe a more high level way to play that is repeatable
[19:39:17] <fuzzie> well, apparently lynx has something in mind :)
[19:39:18] <lynxlynxlynx> vanilla is repeatable
[19:39:32] <lynxlynxlynx> this is something completely different :)
[19:39:36] <pupnik_> i have bread waiting
[19:39:49] <fuzzie> i think no-one actually plays with vanilla
[19:40:03] <lynxlynxlynx> well, vanilla+patch
[19:40:06] <pupnik_> i was using unmodified bg2 install
[19:40:11] <lynxlynxlynx> fixpack already has options
[19:40:14] <fuzzie> and the fixpack is full of absolutely crazy, for example
[19:40:24] <lynxlynxlynx> plus that
[19:43:20] <CIA-26> GemRB: 03lynxlupodian * rc9a4677fe35f 10gemrb/gemrb/core/ (GUI/GameControl.cpp Map.cpp Map.h):
[19:43:20] <CIA-26> GemRB: added a cheat key to consolidate all visible ground piles under the cursor
[19:43:20] <CIA-26> GemRB: actually it checks the explored map, so also previously found/made piles
[19:43:20] <CIA-26> GemRB: will be moved
[19:43:45] <fuzzie> ah, neat
[19:43:53] <lynxlynxlynx> ctrl+w
[19:44:07] <lynxlynxlynx> i'll optimise it some more, so it does stacking
[19:44:16] <lynxlynxlynx> and i made an oversight
[19:45:40] <avenger> fuzzie: it does this: the string parameter is a 'scripting name' which gets converted to an object, the object parameter is a second object.
[19:46:05] <avenger> then it calculates the vectors of Sender vs Ob1, and Sender vs Ob2 lines.
[19:46:16] <avenger> then does some floating point magic with these two vectors
[19:46:24] <fuzzie> hehe, 'floating point magic' :)
[19:46:30] <avenger> probably checks if they are close enough
[19:46:36] <fuzzie> i hate decoding that stuff
[19:46:40] <avenger> because that means, the 3 points are in line
[19:47:23] <avenger> .text:0048A454 fild [ebp+var_A78]
[19:47:25] <avenger> .text:0048A45A fstp [ebp+var_210]
[19:47:26] <avenger> .text:0048A460 fld [ebp+var_1EC]
[19:47:28] <avenger> .text:0048A466 fcomp [ebp+var_208]
[19:47:30] <avenger> .text:0048A46C fnstsw ax
[19:47:31] <avenger> this IS magic :)
[19:47:44] <avenger> totally gibberish
[19:48:25] <fuzzie> haha :)
[19:52:39] <lynxlynxlynx> hmpf, we don't have such a function yet
[19:59:16] <avenger> omg, that previous snippet is nothing compared to the monster i see now
[20:00:10] <avenger> 13 floating point instructions in a row, then a few more. Broken only by an acos function call :)
[20:01:31] <CIA-26> GemRB: 03lynxlupodian * rd5e13b3119f2 10gemrb/gemrb/core/Map.cpp: optimised Map::MoveVisibleGroundPiles
[20:01:52] <avenger> oh, i recognised one of the floating point constants :) it is PI
[20:02:18] <avenger> hmm 3.6e2 is 360, that is fine too
[20:06:17] <avenger> in the end: *360/2*pi if fcomp is compare, then compared to 30
[20:08:53] <wjp> without folding constants? and only doing that to compare with a constant?
[20:11:00] <avenger> yes, it does *360 then / 2
[20:11:10] <avenger> with floating point constants
[20:11:38] <avenger> i guess msvc6 optimisation is not the best for floating point?
[20:12:16] <Lightkey> wjp jumping out from nowhere :p
[20:12:21] * wjp does that
[20:12:41] <wjp> Lightkey too :-)
[20:12:48] * Lightkey whistles
[20:12:49] <avenger> wjp, what is: (p1x-p2x)^2+(p1y-p2y)^2 ?
[20:13:00] <wjp> distance squared
[20:13:10] <wjp> (between p1 and p2)
[20:14:11] <avenger> ok, so it is not inclination of the lines, or such, i wonder how does this turn into inline calculation
[20:15:05] <fuzzie> compiler deciding to inline it? :)
[20:16:54] <avenger> so far, it calculates the distance of the two objects from sender.
[20:17:49] <avenger> hmm, i have some feeling, part of this 'magic' is just converting the values to and from floating point :) without doing anything
[20:18:40] <fuzzie> the magic of coprocessors!
[20:19:20] <avenger> it looks like it calculates 3 distance squares, btw. If two of them is less than 65, it considers them too close, and bails out :)
[20:19:29] <fuzzie> i mean, things like fild which just push onto the coprocessor stack are surely just that, as well as things like fnstsw which i assume is the "store status word" thing
[20:20:09] <fuzzie> it is a horrible design really, "let's assume the floating point is done on a seperate chip" :)
[20:20:42] <avenger> then calculates square root from the distance squares, NOW how that makes any sense
[20:26:14] <avenger> then squares them again...
[20:26:29] <wjp> :-)
[20:26:56] <avenger> i wonder what is this crap about, it looks like it does almost nothing
[20:29:27] <wjp> want me to take a look? I should be able to recognize most of the basic computational geometry things
[20:29:36] <lynxlynxlynx> heh
[20:32:04] <avenger> yes, it is not too complicated, if you can wrap your head around the stack handling
[20:32:17] <avenger> shall i send you the snippet?
[20:32:25] <wjp> ok
[20:33:30] <avenger> http://pastebin.com/kQWgbeBT
[20:34:06] <avenger> fdm1 is the distance square of me and point1, the rest you can find out
[20:39:07] <wjp> that's the cosine rule
[20:39:34] <wjp> so after the acos it has one of the angles of the triangle me,p1,p2
[20:39:50] <wjp> the one at 'me', specifically
[20:40:11] <avenger> but 30 sounds so big :)
[20:41:14] <avenger> so, it looks at p1 and p2, and if the angle is less than 30, it considers p1 and p2 in line
[20:41:48] <lynxlynxlynx> heh, this time the fireshield bug worked in my favour
[20:42:43] <avenger> wjp: any idea why it does square/sqrt/square again?
[20:43:41] <wjp> maybe the compiler is inlining a 'compute angle from lengths of sides of triangle' function (or macro)
[20:44:02] <lynxlynxlynx> of course my joy was immediately offset by a corrupted save
[20:47:36] <avenger> pfft, we still corrupt saves
[20:47:36] <wjp> I'm assuming 'fmul 360; fdiv 2; fmul pi' does not do '((x * 360) / 2) * pi ?
[20:47:51] <wjp> but why not?
[20:47:53] <avenger> i thought it does
[20:48:13] <wjp> I was expecting ((x * 360) / (2 * pi))
[20:48:37] <wjp> (because that would convert radians to degrees)
[20:48:48] <lynxlynxlynx> a creature has bad memorised spells index and count
[20:48:59] <avenger> ok, so this is not 30 degree?
[20:49:26] <avenger> then maybe it is smaller?
[20:50:06] <avenger> that would explain, 30 is a bit too big angle for 'inline'
[20:50:13] <wjp> are you sure about the pi constant?
[20:50:26] <avenger> yes, i can recognise 3.1415...
[20:50:36] <avenger> dq 3.1415926535
[20:50:58] <avenger> 30 is written as: dq 3.0e1
[20:51:05] <avenger> but i guess that is 3.0 * 10 :)
[20:51:11] <wjp> yes
[20:52:46] <avenger> ok, so it is x*360/2*pi. that is ~9 times more than it would be if it would be divided by pi. so instead of 30 it is ~4 degrees?
[20:53:41] <avenger> that would be much better for a line
[20:53:52] <wjp> very weird though
[20:54:17] <avenger> well, can you write this down, a bit optimised?
[20:54:18] <fuzzie> maybe the original code did something like ((x*360)/(2*pi))*(pi*pi)?
[20:54:33] <wjp> which is also very weird :-)
[20:55:00] <fuzzie> i am not looking at the code, so i don't know if it is likely that it would be used as input into something like area of a circle?
[20:56:07] <wjp> avenger: double C = ( fdm2^2 + fdm1^2 - fd12^2 ) / (2*fdm1*fdm2)
[20:56:11] <fuzzie> otherwise i guess you just decide bioware are crazy, done
[20:56:17] <wjp> double angle = acos(C)
[20:56:40] <avenger> thanks
[20:56:41] <wjp> and then _apparently_ compare angle*180*pi with 30, however little sense that makes
[20:56:57] <avenger> we'll see if it works soon
[20:57:24] <wjp> fuzzie: but even then pi^2 would be weird
[20:57:48] <wjp> but it's not impossible that someone screwed up the conversion and nobody noticed
[20:58:02] <fuzzie> easy to do, in C++..
[20:58:41] <wjp> hard to notice the missing parens in angle*360/2*pi I guess
[20:59:12] <fuzzie> well, that screams "AAAAA needs more parens" to me :)
[20:59:22] <wjp> sure, to me too :-)
[20:59:55] <fuzzie> but yes, that was the point i was too lazy to make
[21:00:21] <wjp> unless I'm missing why 'fmul 360; fdiv 2; fmul pi' doesn't do what I'm saying it does
[21:00:33] <fuzzie> no, it pretty much does that
[21:01:04] <fuzzie> assuming those are actually the values
[21:01:33] <wjp> 20:50 <@wjp> are you sure about the pi constant?
[21:01:33] <wjp> 20:50 <@avenger> yes, i can recognise 3.1415...
[21:01:44] <fuzzie> with a single parameter, it just pops value off the stack, does the operation with the parameter, pushes value on the stack
[21:01:53] <fuzzie> not much to go wrong there
[21:02:35] <Lightkey> and because DrMcCoy is spamming the other channel with his new project, I would not want the other two here feel left out: http://github.com/DrMcCoy/eos/ :-P
[21:02:49] <Lightkey> well, not so new
[21:03:26] <fuzzie> see, that is more helpful than me wondering what 'eos' is :P
[21:03:29] <Lightkey> Aurora engine clone^Wviewer
[21:03:39] <fuzzie> here, take a gold star
[21:03:53] <wjp> is that NWN?
[21:04:27] <fuzzie> the sshots are KoToR, but i guess NWN too
[21:04:28] <Lightkey> fuzzie: well, I typed in eos and drmccoy in google..
[21:04:37] <avenger> i can't believe, we got Distance, SquaredMapDistance, and now i need SquaredDistance :(
[21:04:39] <fuzzie> pity NWN was awful and all, but i would like to play kotor
[21:04:45] <wjp> although judging by the screenshots he links to in #scummvm he's aiming at KOTOR
[21:05:03] <wjp> but you already said that :-)
[21:05:23] <fuzzie> there really must be something infectious about the whole reimplementing-games thing
[21:05:44] <lynxlynxlynx> kotor has some nice npcs, but is otherwise painfully linear like nwn
[21:05:46] <wjp> it's all the fun of game development without having to design a game :-)
[21:06:10] <fuzzie> and with all the fun of REing thrown in? :)
[21:06:17] <wjp> yup
[21:06:40] <avenger> well, i didn't have problems with designing a game, we did glory of istar. We just always got blocked by engine limitations
[21:07:34] <avenger> designing an engine from grounds up, that is too much, i admit :)
[21:07:43] <avenger> but adding features would be fun
[21:15:56] <avenger> i wonder why it checks if fdm1 == fdm2
[21:16:43] <lynxlynxlynx> oh crap
[21:17:05] <lynxlynxlynx> [Streams]: Invalid seek position: -1494812561 (limit: 1860) loooooping
[21:17:19] <fuzzie> any idea why?
[21:17:36] <avenger> bad data
[21:17:39] <lynxlynxlynx> my suspect is the illusion draconis casts
[21:17:50] <fuzzie> or, bad gemrb handling :p
[21:18:16] <lynxlynxlynx> well, it's different than before, so i blame gemrb
[21:18:36] <lynxlynxlynx> previously hte data was bad in ReadInventory
[21:19:25] <lynxlynxlynx> now i can't even tell because it scrolls so fast
[21:19:53] <fuzzie> make it abort()?
[21:20:28] --> spike411 has joined #GemRb
[21:23:29] <lynxlynxlynx> i was trying blindly, but my reflexes are too slow
[21:24:11] <lynxlynxlynx> CREImporter::ReadEffects
[21:24:26] <lynxlynxlynx> EffectsOffset of 2790755975
[21:24:36] <fuzzie> that means it failed before reading the EffectsOffset
[21:25:07] <fuzzie> which happens before ReadInventory..
[21:25:12] <fuzzie> so that could be anything
[21:25:38] <spike411> Hey guys, having a fun weekend night?
[21:26:10] <lynxlynxlynx> if you consider debugging and obfuscated math fun
[21:26:30] <spike411> Perverse fun maybe.
[21:26:34] <lynxlynxlynx> fuzzie: that's at least consistent
[21:26:49] <lynxlynxlynx> i'll try valgrind
[21:27:21] <lynxlynxlynx> and it is in a nameless actor again (the name may be read later though)
[21:27:54] <fuzzie> i think the name is read beforehand, but not much help if it's corrupt
[21:28:12] <fuzzie> valgrind sounds sensible
[21:28:30] <fuzzie> and i am having fun just sitting at the computer after having done all my weekend excitement during the day :)
[21:29:07] <lynxlynxlynx> but the save is corrupt, so i should run the whole battle through valgrind, right?
[21:29:19] <lynxlynxlynx> or do you think we just interpret it badly for some reason?
[21:30:13] <fuzzie> i have no idea
[21:32:45] <avenger> hmm fuzzie, i have a question, can we find an actor by scriptname now?
[21:32:59] <lynxlynxlynx> cool, it caught something
[21:33:51] <lynxlynxlynx> http://pastebin.com/qs7ubSdY
[21:35:59] <wjp> I'm guessing that's the invalid EffectsOffset
[21:36:10] <fuzzie> avenger: we can, but i think that is a bug?
[21:36:25] <lynxlynxlynx> yeah, it does the printf right after the suspicius var
[21:36:58] <fuzzie> avenger: well, except global actors
[21:37:29] <avenger> why would it be a bug?
[21:37:39] <fuzzie> there is a comment somewhere
[21:37:48] <avenger> i mean, Range("imoen") should work
[21:38:02] <avenger> more like Range("imoen",20)
[21:38:10] <fuzzie> sure, but imoen is a global actor
[21:38:22] <avenger> ok, then range("goblin",20)
[21:38:29] <fuzzie> i added a GetActorByScriptName and now i can't remember why.
[21:38:43] <fuzzie> oh, the stupid dialog code.
[21:38:44] <lynxlynxlynx> the savegame is broken, dltcep can't open it
[21:38:46] <fuzzie> i hate the dialog code.
[21:39:07] <lynxlynxlynx> too bad
[21:39:15] <fuzzie> avenger: right, but that only works if the Sender has an area, and it checks the area
[21:39:18] <fuzzie> avenger: that is ok?
[21:39:36] <avenger> yes yes
[21:39:38] <fuzzie> oh right, i fixed this code :P
[21:39:56] <avenger> i need to find someone in the same area with scriptname
[21:40:07] <avenger> and, this should work for ANY object with scriptname in it
[21:40:08] <fuzzie> Map::GetActor
[21:40:26] <avenger> but i don't see where it is in the regular getactorfromobject code
[21:40:29] <fuzzie> we handle other scriptables seperately, using the tilemap
[21:40:40] <avenger> yes, i found those
[21:40:44] <fuzzie> see the 'GetActorObject' code
[21:40:47] <avenger> i didn't find where we handle actors
[21:40:48] <fuzzie> which runs if it failed to find an actotr
[21:41:04] <avenger> i found that, but that wouldn't find an actor
[21:41:08] <fuzzie> oh
[21:41:09] <avenger> just other scriptables
[21:41:12] <fuzzie> hehe
[21:41:28] <fuzzie> that is in EvaluateObject
[21:41:33] <fuzzie> which is in GetAllObjects
[21:41:47] <fuzzie> sorry. makes sense now? :)
[21:41:54] <avenger> oh right
[21:42:22] <fuzzie> i guess i should tidy up the function names
[21:42:26] <avenger> this weird crap is used only in this single trigger, so it won't need a new function
[21:42:49] <avenger> triggers don't have 2 object parameters, so they resorted for a scriptname in the stringparameter :)
[21:43:15] <fuzzie> ok. for triggers, that is easy :)
[21:45:42] <avenger> lynx can you find what broke the area?
[21:46:05] <lynxlynxlynx> i'll try, my bet is still on the illusion
[21:46:07] <avenger> i bet it is something about embedded effects :)
[21:46:25] <lynxlynxlynx> now i'm looking at ids targetting
[21:46:40] <lynxlynxlynx> true seeing doesn't kill illusions
[21:46:53] --> Mataniko has joined #GemRb
[21:47:13] <lynxlynxlynx> how do you know it is an illusion? Answer: look at the gender
[21:48:17] <lynxlynxlynx> i guess we don't set that yet for them
[21:48:29] <avenger> yep
[21:48:37] <avenger> there is a lot of stuff about illusions we don't do
[21:49:23] <avenger> for example, the original engine checks the detect illusions skill, and if you make the roll, it destroys the creature in sight
[21:49:39] <lynxlynxlynx> that's different
[21:50:00] <avenger> yes, but we don't do it either
[21:50:23] <lynxlynxlynx> i know
[21:51:11] <avenger> i guess, the remove illusion school would simply destroy creatures with the illusionary gender
[21:51:55] <lynxlynxlynx> yes, it's matching 7 - ILLUSIONARY
[21:52:22] <lynxlynxlynx> but this is not done by the remove school/secondary type effects
[21:52:31] <lynxlynxlynx> it's a separate one :)
[21:52:49] <avenger> i don't see it in the opcode
[21:52:51] <avenger> ok
[21:53:20] <avenger> so it is just a slay opcode with ids targeting 'gender, illusionary' ?
[21:54:23] <avenger> yeah, destroy self
[21:54:27] <avenger> so, why it wouldn't work
[21:54:54] <lynxlynxlynx> because our illusions don't have that gender
[21:55:02] <avenger> huh?
[21:55:09] <fuzzie> which illusions?
[21:55:14] <avenger> isn't it in the 'cre'?
[21:55:43] <lynxlynxlynx> what cre? we copy the caster
[21:55:54] <avenger> which spell?
[21:56:04] <lynxlynxlynx> all the puppetmasters
[21:56:16] <lynxlynxlynx> mislead, simulacrum, project image
[21:56:40] <avenger> that is the copyself opcode
[21:56:44] <avenger> 0xec
[21:56:54] <-- raevol has left IRC (Quit: Leaving.)
[21:57:21] <lynxlynxlynx> i'm testing a fix now
[21:57:27] <avenger> text:0053CEDD mov [ebp+var_24.Gender], 7
[21:57:29] <avenger> .text:0053CEE1 mov [ebp+var_44.Gender], 7
[21:57:31] <avenger> .text:0053CEE5 mov [ebp+var_58.Gender], 7
[21:57:32] <avenger> yeah :)
[21:57:34] <avenger> i found it
[21:57:44] <avenger> it changes the copy's IDS fields
[21:57:48] <avenger> all 3
[21:58:00] <avenger> we got only one, so don't look for 3 fields
[21:58:11] <avenger> just modify the base stat
[21:58:35] <lynxlynxlynx> that's what i'm doing
[21:58:51] <lynxlynxlynx> too bad true sight is party friendly
[21:59:47] <avenger> btw, the copy's hitpoints are halved, do we have that?
[22:00:10] <fuzzie> it's funny, #scummvm is now discussing cutscene bugs and trigger issues and queue problems in the later Bioware games, i guess they never got much better with them :)
[22:00:19] <lynxlynxlynx> not unless it is in the attached effect
[22:00:23] <avenger> now always
[22:00:25] <avenger> i mean, not always
[22:00:29] <avenger> only for param2=1
[22:01:07] <avenger> and param2=3 is not an illusion
[22:01:31] <lynxlynxlynx> yeah, minime
[22:01:32] <avenger> so param2=1: gender change, half hp, param2=2: gender change only, param2=3: no changes
[22:02:29] <lynxlynxlynx> yep
[22:04:47] <avenger> fuzzie: was there any useful info?
[22:05:49] <CIA-26> GemRB: 03lynxlupodian * r9e41cb9625cb 10gemrb/gemrb/plugins/FXOpcodes/FXOpcodes.cpp:
[22:05:49] <CIA-26> GemRB: fx_puppet_master: mark the two illusionary puppets as illusions, so ids
[22:05:49] <CIA-26> GemRB: matching can work (used in dispelling) and halve the hp for mislead
[22:05:54] <lynxlynxlynx> bah
[22:06:05] <lynxlynxlynx> killed it too late
[22:06:21] <fuzzie> avenger: not unless you want to play nwn :)
[22:06:36] <avenger> ah well, not really
[22:07:23] <CIA-26> GemRB: 03lynxlupodian * r36b96ce0ba92 10gemrb/gemrb/plugins/FXOpcodes/FXOpcodes.cpp: ups, use the gender contants in fx_puppet_master
[22:07:32] <fuzzie> i'm pretty sure any shared code is stuff we worked out long ago
[22:10:17] <lynxlynxlynx> well, this time the save was fine
[22:10:33] <lynxlynxlynx> i did cheat kill through it though
[22:10:39] <lynxlynxlynx> so we'll know tommorow
[22:10:48] <lynxlynxlynx> err, in a few hours
[22:13:12] <-- lynxlynxlynx has left IRC (Remote host closed the connection)
[22:20:53] <SiENcE_> hey
[22:21:42] <SiENcE_> i think i release the dingoo port as soon as we release the new dingux kernel.
[22:32:51] <-- Maighstir has left IRC (Quit: ~ Trillian Astra - www.trillian.im ~)
[22:54:46] <avenger> cool, inline works, and as a bonus i found a bug in dltcep's script compiler :)
[22:55:11] <-- avenger has left IRC (Quit: ChatZilla 0.9.86 [Firefox 3.6.8/20100722155716])
[23:12:50] <CIA-26> GemRB: 03avenger_teambg * rfe541f07d148 10gemrb/gemrb/ (6 files in 3 dirs): implemented inline trigger (thanks wjp)
[23:14:23] <Lightkey> hehe
[23:14:29] <spike411> What's with [CREImporter]: Unresolved spell index: 253 level:1, type: 6? Cannot see any spell 253 here http://iesdp.gibberlings3.net/appendices/spell_lists/iwd2spells.htm
[23:15:06] <fuzzie> 253 is maybe actually -3?
[23:15:13] <-- SiENcE_ has left IRC (Quit: cya @all)
[23:15:24] <fuzzie> our iwd2 save code is really messed up with spells, possibly
[23:15:33] <fuzzie> but it is past 1am so can't remember how
[23:15:52] <spike411> COFFEE TIME!
[23:16:42] <spike411> Do you have anything remotely resembling an issue tracker? I've seen some wiki pages…
[23:17:27] <spike411> Also IWD2, when moving character portraits: http://paste.jabbim.cz/4826 An unimplemented feature I guess?
[23:17:45] <fuzzie> we have an issue tracker on sourceforge
[23:17:55] <spike411> Oh I see, I missed that.
[23:18:08] <CIA-26> GemRB: 03avenger_teambg * rb416e7eaba9b 10dltcep/ (21 files): dltcep source update
[23:18:10] <fuzzie> but we tend not to use it for bugs, because we have an awful lot of them
[23:18:16] <spike411> Haha
[23:18:38] <fuzzie> and if we want to add 10 at once and remove the 5 we fixed in the meantime, the wiki is easier :)
[23:24:30] <spike411> Does gemrb set IWD2 to the highest difficulty level or what? :o
[23:24:31] <spike411> The
[23:24:44] <spike411> The goblins seem somewhat stronger. :D
[23:25:17] <spike411> I've only played IWD2 on Normal before…
[23:25:21] <fuzzie> the portait issue is probably avenger's fault
[23:25:29] <spike411> Let's point at him!
[23:25:37] <Lightkey> it's always his fault
[23:25:38] <spike411> When he's here anyway.
[23:25:41] <fuzzie> you can try changing that line to 'i-1'
[23:25:47] <spike411> OK
[23:25:48] <Lightkey> he reads the logs :-)
[23:30:21] <Lightkey> Avenger: btw if you want to read back what they talked about in #scummvm, there is logs.scummvm.org
[23:37:04] <spike411> fuzzie: OK, i - 1 seems to have fixed the Python error. Still the behaviour seems a bit bugged. When I move the portrait, I cannot select it directly afterwards (although the character is selected and I can e.g. command him to go somewhere).