#gemrb@irc.freenode.net logs for 8 Aug 2011 (GMT)

Archive Today Yesterday Tomorrow
GemRB homepage


[01:22:16] <-- barra_away has left IRC (Quit: Verlassend)
[05:18:27] --> PixelScum has joined #gemrb
[05:21:12] <-- Drakkar has left IRC (Ping timeout: 240 seconds)
[06:27:59] --> BaldimerBrandybo has joined #gemrb
[06:31:26] <-- PixelScum has left IRC (Ping timeout: 258 seconds)
[07:05:02] --> lynxlynxlynx has joined #gemrb
[07:05:03] <-- lynxlynxlynx has left IRC (Changing host)
[07:05:03] --> lynxlynxlynx has joined #gemrb
[07:05:03] --- ChanServ gives channel operator status to lynxlynxlynx
[07:21:24] --> adominguez has joined #gemrb
[07:32:17] --> Avenger has joined #gemrb
[07:33:17] --- ChanServ gives channel operator status to Avenger
[07:53:03] <Avenger> lynx i fixed two bugs on your todo :)
[07:54:05] <Avenger> maybe one of these fix this bug: http://forums.gibberlings3.net/index.php?showtopic=22707
[07:55:24] <Avenger> or maybe not
[08:03:33] --> edheldil has joined #gemrb
[08:03:34] --- ChanServ gives channel operator status to edheldil
[08:31:58] <lynxlynxlynx> yeah, i saw :)
[08:33:59] <Avenger> it didn't fix that quest, but i'm on some trail
[08:34:41] <lynxlynxlynx> we do turn npcs hostile too early
[08:35:00] <lynxlynxlynx> it can be seen when getting into saradush too
[08:36:53] <Avenger> it seems the attackedby trigger isn't cleared, or reset
[08:37:46] <lynxlynxlynx> i think it's more general
[08:37:57] <lynxlynxlynx> like some scripts run too early
[08:38:34] <fuzzie> hitby! :(
[08:38:39] <lynxlynxlynx> in the saradush case the problematic thing could be shout
[09:36:07] --> Sindikat has joined #gemrb
[09:42:56] <-- Sindikat has left IRC (Ping timeout: 260 seconds)
[11:04:51] <-- lynxlynxlynx has left IRC (Ping timeout: 276 seconds)
[11:20:11] --> lynxlynxlynx has joined #gemrb
[11:20:11] --- ChanServ gives channel operator status to lynxlynxlynx
[12:21:39] <Avenger> heh it seems i managed to fix the tenya quest
[12:21:45] <-- Avenger has left IRC (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330])
[12:26:15] <CIA-26> GemRB: 03avenger_teambg * re70f3575c6ab 10gemrb/gemrb/plugins/FXOpcodes/FXOpcodes.cpp: a small fix in unsummon (keep the effect around if it couldn't work at the moment)
[12:26:35] <Kiranos> nice Avenger, is fixing the random encounters much work?
[12:26:39] <Kiranos> of bg1
[12:34:04] <lynxlynxlynx> i think the biggest part is the research/reverse engineering - how did it work in the original? Are we using all the known data fields for this that we know about?
[12:35:18] <Kiranos> sorry, I'm just a player :( I dont have much knowledge in the actual engine/source
[12:35:19] <CIA-26> GemRB: 03avenger_teambg * rca398b474773 10gemrb/gemrb/core/ (5 files in 2 dirs): various scripting fixes for the Tenya quest bug
[12:35:42] --> Avenger has joined #gemrb
[12:35:49] <fuzzie> so what was the final fix there?
[12:36:05] <Avenger> the core problem was what you said
[12:36:28] <Avenger> but there was some other messup. when tenya finally wanted to go away with spwi995, she casted sppr105 instead.
[12:36:43] <Avenger> the aborted spell was cast instead of the new spell
[12:36:46] <fuzzie> ah :)
[12:36:57] <fuzzie> nice finding
[12:37:09] <Avenger> actually, it now works when several people attack her with different attack frame times
[12:37:24] <fuzzie> great
[12:37:43] <Avenger> i just spread the original settarget parts into several locations :)
[12:38:03] <fuzzie> does that work ok with target indicators?
[12:38:21] <Avenger> kiranos: what's wrong with bg1 spawns? too frequent or two high level
[12:38:28] <Avenger> two->too
[12:38:47] <Avenger> fuzzie: target indicator as in recticle?
[12:38:49] <fuzzie> i think it has too many
[12:39:13] <fuzzie> and nm, you moved AttackedBy not SetTarget :P
[12:39:20] <fuzzie> i misread
[12:39:25] <Kiranos> Avenger: I'm about to start a new game of bg1 on android and read about known issues and saw that there was an issue of to many spawns (they had the correct level) this is how far I've come
[12:39:26] <Avenger> settarget parts :)
[12:39:32] <Kiranos> I can report when I actually start to play
[12:39:45] <fuzzie> i think the spawns have some issue with adding up levels of existing spawns bla bla
[12:39:48] <fuzzie> but not sure
[12:39:55] <fuzzie> i lost track again of what we implemented
[12:40:00] <Kiranos> random spawns happen pretty often when you try to replenish your spells so it's rather important it works somewhat
[12:40:08] <Avenger> maybe the spawns don't take a delay timer into account
[12:40:39] <Avenger> hmm are you sure they are random spawns and not 'rest spawns' ?
[12:40:51] <Avenger> there are two different spawn types
[12:40:56] <fuzzie> the rest spawns in bg1 work ok, i think
[12:41:20] <Avenger> the best would be a saved game which works differently in original and gemrb
[12:41:32] <Avenger> even if it means entering a new area
[12:41:36] <Kiranos> ah ok. I'll start play playthrough once there is 0.6.5 hits android market
[12:41:40] <Kiranos> and report any issues
[12:41:47] <fuzzie> but we don't even try to deal with the area spawn levels, do we?
[12:42:14] <Avenger> there is a spawngroup level thing we calculate with, i think
[12:42:20] <Avenger> it calculates with party strength
[12:42:33] <Avenger> but there may be some delay stuff
[12:42:33] <fuzzie> but that is only at spawn time
[12:42:54] <Avenger> there is something about spawns don't reset when on screen
[12:43:00] <Avenger> or there is a flag for that
[12:43:02] <Avenger> i think
[12:43:09] <fuzzie> the original engine keeps track of all spawns in an area
[12:43:21] <Avenger> i know the spawns calculate with visibility range
[12:43:24] <fuzzie> we don't do that, right?
[12:43:30] <Avenger> no we don't
[12:43:34] <Avenger> that may be the problem
[12:45:38] <Avenger> i believe spawn points can even totally deplete
[12:45:49] <Avenger> but i didn't find either code or fields for that
[12:46:34] <fuzzie> well, i only have bg2 code here, which is all different
[12:47:31] <Avenger> i don't know ;)
[12:47:40] <lynxlynxlynx> are you sure the last commit didn't break something in spellcasting?
[12:47:46] <Avenger> i thought the spawn code is almost the same
[12:47:55] <lynxlynxlynx> from the comment is sounds more like we should clean up after aborted casts
[12:47:57] <Avenger> lynx: no idea :)
[12:48:19] <lynxlynxlynx> and many debug prints are bad copies
[12:48:27] <Avenger> if you can, test a few things
[12:48:41] <Avenger> meh you are right
[12:48:54] <Avenger> this code should be moved into gsutils as SpellCore already
[12:49:14] <lynxlynxlynx> yeah, i had that in mind too
[12:49:24] <Avenger> the original engine has only 1-2 functions too
[12:49:32] <lynxlynxlynx> fuzzie said we're doing something wrong anyway
[12:49:34] <fuzzie> i think bg2 spawn points are missing half the delay stuff
[12:49:37] <Avenger> i think it has separate point/actor targets
[12:49:50] <fuzzie> the original engine has copies for force as well as point/actor
[12:50:08] <fuzzie> but they're really not very different
[12:50:19] <fuzzie> just wasteful duplication, you could make do with one + some if statements
[12:50:29] <Avenger> i think most of the variations is because one can work on plain non-actor scriptables
[12:50:44] <fuzzie> but the original engine does stuff in the middle of the cast
[12:50:55] <fuzzie> while gemrb tries splitting into just 'start cast' and 'do actual cast now', which is no good
[12:51:03] <Avenger> :(
[12:51:06] <fuzzie> pst's spellcasting stances seem to be handled there too
[12:51:07] <Avenger> i thought it is good :)
[12:51:17] <fuzzie> which of course we don't even pretend to support :P
[12:51:19] <Avenger> you can do that with more action states
[12:51:34] <Avenger> if you don't just use setwait
[12:51:36] <fuzzie> yeah, we could put some more checks in the actions
[12:51:42] <fuzzie> no big deal
[12:51:51] <Avenger> you can still keep the start cast/do actual cast parts
[12:52:11] <Avenger> just the scheduling changes from setwait to local
[12:52:16] <fuzzie> it is all just keyed off the aura var
[12:52:25] <Avenger> yeah, we will have to use it
[12:52:41] <Avenger> when you come back from your exams ;P
[12:53:07] <fuzzie> you can see the huge block wrapped in field_354C, which would be the 'start cast'
[12:53:23] <fuzzie> then you just need a few aura checks, mostly for pst i hope, then the 'finish cast'
[12:53:53] <fuzzie> and then, just need some silenced/sanctuary/invis/etc checks for every action tick :)
[12:54:02] <Avenger> so, pst has more than 2 casting stances?
[12:54:15] <fuzzie> i think maybe pst stances can be handled inside the stance code
[12:54:26] <Avenger> yes, that's what i hope
[12:54:34] <Avenger> maybe they are just not automatically looping
[12:54:41] <fuzzie> you just need some way of telling it how long the cast is, i think
[12:54:42] <Avenger> at best ;)
[12:54:54] <Avenger> we already know that
[12:54:56] <fuzzie> so it knows whether to use the fast or slow stances
[12:55:05] <Avenger> oh i see
[12:55:26] <fuzzie> i dunno, i only glanced at the code, i'm going by someone's notes
[12:55:27] <Avenger> so it has different starting stances based on duration
[12:55:36] <lynxlynxlynx> aura pollution is the last big bit missing for spellcasting in general
[12:55:46] <fuzzie> the aura stuff is pretty easy, honestly
[12:55:55] <fuzzie> but i really don't want to get stuck in it now
[12:56:07] <Avenger> after exam?
[12:56:12] <lynxlynxlynx> yeah, it's like initiative
[12:56:46] <fuzzie> it's really just one extra variable, reset to -1 if at 100, there's some double speed thing if hasted i think, then a few checks in spell code
[12:57:14] --> Sindikat has joined #gemrb
[12:57:16] <fuzzie> a good thing for someone not-me to fix would be to make attack rounds 100 ticks long
[12:58:12] <lynxlynxlynx> now they're 60?
[12:58:19] <fuzzie> they're 90, i think
[12:58:28] <lynxlynxlynx> oh, in ticks
[12:58:34] <lynxlynxlynx> 6*15
[12:58:35] <Avenger> fuzzie don't forget auracleansing
[12:59:03] <fuzzie> Avenger: that is dealt with in spell code..?
[12:59:04] <lynxlynxlynx> timer under treshold == clean
[12:59:16] <lynxlynxlynx> or if the cleansing stat is set
[12:59:38] <fuzzie> yes
[12:59:43] <fuzzie> it is at the start of spell actions
[12:59:55] <fuzzie> if auracleansing and aura!=1, display DCS_aura_cleansed, set aura to -1
[13:00:01] <fuzzie> only on first tick of action
[13:02:29] <-- Sindikat has left #gemrb
[13:02:51] <fuzzie> very lazy way to do it, seems sensible
[13:03:03] <-- adominguez has left IRC (Quit: Saliendo)
[13:05:55] <lynxlynxlynx> i can do the merge and this last bit (i already have on the todo :))
[13:08:11] --> SiENcE has joined #gemrb
[13:10:13] <lynxlynxlynx> Avenger: fx_create_inventory_item ; any reason it is done this way? now the item is not dropped if the inventory is full
[13:10:16] <Avenger> hehe, last oots strip is hilarious
[13:10:20] <Avenger> http://www.giantitp.com/forums/showthread.php?t=210598&page=2
[13:10:28] <Avenger> oops that's the forum
[13:10:48] <Avenger> lynx? i didn't change it
[13:11:31] <lynxlynxlynx> i didn't say you did; though, you probably implemented it
[13:11:43] <lynxlynxlynx> just asking if there's something i don't know
[13:12:42] <Avenger> you cannot expect the function to work without area
[13:13:35] <Avenger> did you test this in the original?
[13:13:41] <Avenger> goodberry is a good spell for it
[13:15:14] <lynxlynxlynx> what does the area have to do with it :s
[13:15:32] <Avenger> btw, this code is leaking items
[13:15:40] <lynxlynxlynx> my failing test case is from tob: clerics get a symbol of their god once they reach a certain level
[13:15:45] <Avenger> -->now the item is not dropped if the inventory is full
[13:15:52] <Avenger> if it is dropped, it needs area
[13:16:02] <lynxlynxlynx> ah, true
[13:16:16] <Avenger> but, this effect is used by clab files (on character generation)
[13:16:43] <lynxlynxlynx> for fists?
[13:17:01] <Avenger> not sure, maybe it was only in a mod :)
[13:17:12] <Avenger> but i know it works in clab without dropping the item :)
[13:17:22] <fuzzie> how would it work? :P
[13:17:36] <lynxlynxlynx> you don't have anything in the inventory at that time, so it wouldn't have to drop it
[13:17:45] <Avenger> well, instead of the inventory, it put the item into the magic slot
[13:18:18] <Avenger> which of course was damn wrong for our mod :)
[13:18:54] <CIA-26> GemRB: 03lynxlupodian * r1d81343a0217 10gemrb/gemrb/core/Scriptable/Actor.cpp: combat rounds are 100 ticks long, not 90 as one would expect
[13:19:01] <-- Demitar has left IRC (Quit: Burn the land and boil the sea, you can't take the sky from me!)
[13:19:42] <fuzzie> well i was thinking a solution which is not hard-coded :P it differs per-game
[13:19:45] <Avenger> i just want to say, Inventory::AddSlotItemRes is leaking now if the item doesn't fit in the inventory
[13:19:59] <Avenger> it should do two more things
[13:20:22] <Avenger> 1. get the current area, if it exist, create a heap, if it doesn't exist, destruct the item
[13:20:23] <fuzzie> for attack stuff we could pull it from the attack bitmaps but it doesn't help for spell rounds which are also 100 in bg
[13:21:53] <lynxlynxlynx> it differs? do you have the values?
[13:22:24] <fuzzie> it is 100 for bg1/bg2/iwd, 50 for pst
[13:22:43] <lynxlynxlynx> ok, i'll just add it to our times table
[13:22:50] <fuzzie> seems sensible
[13:23:04] <fuzzie> afaik it's also 100 in iwd2 but i haven't looked and there were people claiming it was 90
[13:23:56] <fuzzie> but the iwd2 round base data is the same as in bg1/iwd, so i am provisionally assuming 100
[13:28:44] <lynxlynxlynx> yeah
[13:32:31] <CIA-26> GemRB: 03lynxlupodian * reb20bde8f0c6 10gemrb/gemrb/ (9 files in 8 dirs):
[13:32:31] <CIA-26> GemRB: added another column to gametime.2da as apparently the games have a different
[13:32:31] <CIA-26> GemRB: attack/spellcasting round size
[14:00:07] <Avenger> added another column :P
[14:00:15] <Avenger> it is another row, hehe
[14:03:27] <Avenger> btw, there is something weird in pst spell effects. It seems their duration is not multiplied when converted to absolute time
[14:04:00] <Avenger> in bg1, delays are usually 1, in pst delays are ~15/22
[14:05:18] <lynxlynxlynx> ups :)
[14:06:52] <Avenger> the odd thing is: the blur spell has a duration of 30
[14:06:59] <Avenger> which is supposed to be multiplied
[14:07:11] <Avenger> so, only delays are not multiplied
[14:07:21] <Avenger> it feels like a gameflag
[14:08:35] <Avenger> well, in the blur spell there is a delay with 60, so i'm unsure
[14:09:51] <Avenger> i don't know how this works. in some cases a delay like 22 is almost instant, in other cases, a delay like 60 is entirely normal (lots of rounds)
[14:10:22] <Avenger> i guess i will have to look into the ida list :)
[14:10:41] <-- Avenger has left IRC (Quit: bye!)
[14:39:45] <lynxlynxlynx> sounds like it is sometimes in ticks instead of seconds
[15:14:46] --> Avenger has joined #gemrb
[15:14:55] <Avenger> omg, pst has some weird code based on spell numbers
[15:15:02] <Avenger> a large switch case
[15:16:10] <fuzzie> what does it do
[15:16:10] <fuzzie> ?
[15:16:12] <Avenger> they totally hardcoded some spell fields into the exe :D
[15:16:29] <Avenger> let me decode one for you
[15:21:55] --> Maighstir has joined #gemrb
[15:53:10] <Avenger> huh, i wonder why the friends spell has something to do with wisdom bonus
[15:55:18] <edheldil> Avenger: lore, dreams, etc?
[15:56:43] <Avenger> there is this spell duration hacking code that is hardcoded into pst. for friends, it checks if the effect is the wisdom bonus, but friends only has a charisma bonus
[15:57:32] <Avenger> it even depends on luck :)
[16:01:10] <edheldil> in PST many things depend on luck
[16:01:26] <Avenger> omg, another hack, for morte's taunting, alters the saving throw bonus based on the morte_taunt variable
[16:01:45] <Avenger> now, that will be fun to unhardcode
[16:01:47] <lynxlynxlynx> yeah, he can learn new curses throught the game
[16:02:21] <Avenger> in bg2 they would simply create 5 different spells and replace the innate :)
[16:02:22] <lynxlynxlynx> the first time it's right infront of the cemetary (near or with annah)
[16:02:32] <lynxlynxlynx> yeah :/
[16:03:14] <Avenger> now we got a weird exe hack that alters the loaded spin101 spell, and hack its stun effect on the fly
[16:14:03] <Avenger> ok, pst has some weird hack with timing, i see it now
[16:15:41] --> Sindikat has joined #gemrb
[16:28:34] --> HenneNWH has joined #gemrb
[16:28:56] <HenneNWH> Hi there!
[16:29:41] <edheldil> Hi, HenneNWH
[16:30:37] <HenneNWH> Theres a regression in ca398b474773e7389806ac052f4301cf6c32a7c0 , which makes an ugly echo effect on the fight dialog sounds.
[16:31:58] <HenneNWH> It seems, that the same soundfile is played multiple times. Tested with bg1. Triggered by attacking enemies.
[16:34:39] <fuzzie> because LastTarget can't be checked to see if a new enemy is being approached
[16:34:53] <fuzzie> it should be checking CurrentActionTicks == 0 anyway you'd think?
[16:35:10] <fuzzie> not sure
[16:35:15] <fuzzie> prod Avenger, anyway :P
[16:35:40] <Avenger> hmm
[16:36:20] <Avenger> where is it fuzzie?
[16:36:42] <fuzzie> in AttackCore
[16:36:51] <fuzzie> inside the !AC_NO_SOUND check
[16:38:15] <Avenger> ok, so i have to set lasttarget before it
[16:38:34] <fuzzie> or just don't check new target
[16:38:44] <fuzzie> is that really how it works in original?
[16:39:10] <Avenger> ahh, it can check currentactionticks of course
[16:39:17] <fuzzie> i would have thought that repeatedly clicking for an attack would get you new attack sounds but i have no idea if that's right
[16:39:33] <fuzzie> oh hey i can just check my notes
[16:39:35] <Avenger> like this if (!CurrentActionTicks) {
[16:39:56] <fuzzie> yeah
[16:40:00] <fuzzie> the original checks for that
[16:40:08] <fuzzie> 18:37 <fuzzie> it should be checking CurrentActionTicks == 0 anyway you'd think?
[16:40:10] <fuzzie> ;p
[16:40:21] <Avenger> yes i read that
[16:40:26] <fuzzie> it does that in all cases except AttackNoSound i guess
[16:40:36] <fuzzie> and that check is already implemented
[16:41:07] <Avenger> henne: change line 1189 from if (actor->LastTarget != targetID) { to if (!CurrentActionTicks) {
[16:41:25] <fuzzie> that is a nice fix :)
[16:42:42] <Avenger> no that's a compilation error :P
[16:43:07] <Avenger> it should be if (!Sender->CurrentActionTicks) {
[16:43:27] <fuzzie> well i mean in theory :P
[16:46:35] <Avenger> ok, this works
[16:46:55] <Avenger> lynx if you are near git, please commit it
[16:47:48] <HenneNWH> That works, thanks alot. But do not forget to remote the local targetID variable, since GCC treads warnings as errors and warns that targetID is only set.
[16:48:09] <Avenger> oh hmm
[16:48:15] <-- Sindikat has left #gemrb
[16:48:29] <lynxlynxlynx> will have to wait, i'm halfway through the spell core merge
[16:48:37] <Avenger> thanks
[16:48:57] <lynxlynxlynx> but currently still work working ;)
[16:49:36] <Avenger> i'm always happy when i can remove some extra lines
[16:49:36] <HenneNWH> s/remote/remove
[17:07:37] <-- SiENcE has left IRC (Quit: @all: cya)
[17:13:14] <lynxlynxlynx> fuzzie: do you know if SpellNoDec/SpellPointNoDec should really be cast instantly?
[17:13:45] <fuzzie> i have no idea
[17:14:13] <lynxlynxlynx> ok, i'll disable it then, it doesn't make much sense with regards to all the others
[17:18:48] <lynxlynxlynx> what about ReallyForceSpellPoint, it is the only one with an IF_STOPATTACK check for early bailout
[17:19:00] <lynxlynxlynx> the nonpoint version doesn't have it either
[17:20:12] <fuzzie> that is trying to stop it from running if it died, but that should really be handled at a higher level i thought
[17:24:39] <lynxlynxlynx> yeah, we have a check like that in ExecuteActions
[17:41:24] <CIA-26> GemRB: 03lynxlupodian * rdf2eea89d6f2 10gemrb/gemrb/core/GameScript/ (Actions.cpp GSUtils.cpp GSUtils.h GameScript.h):
[17:41:24] <CIA-26> GemRB: merged spellcasting actions into SpellCore/SpellPointCore
[17:41:24] <CIA-26> GemRB: (plus SpellNoDec was changed not to cast partially instantly)
[17:44:55] <Avenger> spellnodec is not instant
[17:45:17] <Avenger> it is same as spell except: 1. it doesn't need to be memorized
[17:46:56] <CIA-26> GemRB: 03lynxlupodian * r1852d866da01 10gemrb/gemrb/core/GameScript/ (Actions.cpp GameScript.cpp):
[17:46:56] <CIA-26> GemRB: made reallyforcespell/reallyforcespellpoint require a living sender
[17:46:56] <CIA-26> GemRB: (the whole point of reallyforcespelldead's existence)
[17:46:56] <lynxlynxlynx> yeah, i've changed it per the note i added
[17:46:56] <CIA-26> GemRB: 03lynxlupodian * r6b5d3b7788e5 10gemrb/gemrb/core/GameScript/Actions.cpp: made SpellNoDec/SpellPointNoDec like their depleting counterparts
[17:51:40] <Avenger> ok, invisibility removed: if caster has invisibility + target != caster + spell is hostile
[17:51:55] <fuzzie> are you decoding spell action, Avenger?
[17:52:00] <Avenger> yes
[17:52:03] <fuzzie> i could type in my notes
[17:52:12] <fuzzie> i wrote the whole thing down (for bg2)
[17:52:28] <Avenger> sanctuary removed: if spell is hostile and actor has sanctuary
[17:52:36] <fuzzie> mostly because i was interested in the effect loop at the end
[17:52:40] <lynxlynxlynx> invisibility should be removed in more circumstances
[17:52:47] <Avenger> also checks if target is caster
[17:52:55] <lynxlynxlynx> any spellcasting
[17:53:22] <Avenger> that may be elsewhere
[17:53:45] <fuzzie> if (ourstate & INVIS) and (target != caster or SF_HOSTILE)) apply forcevisible, if (ourstate & SANCTUARY) and (target != this or SF_HOSTILE) apply Cure:Sanctuary?
[17:54:04] <Avenger> relevant code is here
[17:54:08] <Avenger> .text:0091319D 830 and edx, STATE_INVIS
[17:54:10] <Avenger> .text:009131A0 830 test edx, edx
[17:54:11] <Avenger> .text:009131A2 830 jz loc_91331A
[17:54:13] <Avenger> .text:009131A8 830 mov eax, [ebp+arg_target]
[17:54:15] <Avenger> .text:009131AB 830 mov ecx, [eax+actor.scr.globalID]
[17:54:16] <Avenger> .text:009131AE 830 mov [ebp+var_5A4], ecx
[17:54:18] <Avenger> .text:009131B4 830 mov edx, [ebp+pActor]
[17:54:19] <fuzzie> but this code is weird because it's in the code twice
[17:54:20] <Avenger> .text:009131BA 830 mov eax, [ebp+var_5A4]
[17:54:21] <Avenger> .text:009131C0 830 cmp eax, [edx+actor.scr.globalID]
[17:54:23] <Avenger> .text:009131C3 830 jnz short remove_invis
[17:54:24] <Avenger> .text:009131C5 830 mov ecx, [ebp+pActor]
[17:54:26] <Avenger> .text:009131CB 830 mov ecx, [ecx+actor.pCurSpell]
[17:54:27] <Avenger> .text:009131D1 830 call GetSpellAttributes
[17:54:29] <Avenger> .text:009131D6 830 and eax, SF_HOSTILE
[17:54:30] <Avenger> .text:009131DB 830 test eax, eax
[17:54:32] <Avenger> .text:009131DD 830 jz loc_91331A
[17:54:33] <Avenger> .text:009131E3
[17:54:35] <Avenger> .text:009131E3 remove_invis: ; CODE XREF: Spell+1568j
[17:54:36] <Avenger> hehe, sorry :)
[17:54:39] <Avenger> it is twice because the no_dec side is in a separate branch
[17:54:47] <fuzzie> but why does the no_dec side check aura?
[17:55:13] <fuzzie> maybe i misinterpreted it at thew time, and the aura check is only covering SF_NOT_IN_COMBAT etc checks
[17:55:19] <Avenger> it just skips the 'have spell/deplete spell' part
[17:55:48] <fuzzie> ok
[17:56:12] <Avenger> the forcespell/reallyforcespell stuff is more lenient
[17:56:22] <Avenger> and in separate function
[17:56:27] <fuzzie> did you get anywhere with pst? no rush
[17:56:43] <Avenger> yes, but i jump between pst and tob
[17:57:07] <Avenger> what was the last pst question :)
[17:57:29] <fuzzie> "what were black isle thinking?" i think
[17:57:39] <Avenger> hehe
[17:58:00] <Avenger> can you decode that disasm part i quoted?
[17:58:11] <fuzzie> well i could but i already know what it does :P
[17:58:26] <lynxlynxlynx> hehe
[17:58:30] <Avenger> so it is if (ourstate & INVIS) and (target != caster or SF_HOSTILE))
[17:58:43] <Avenger> and not if (ourstate & INVIS) and target != caster and SF_HOSTILE)
[17:58:58] <fuzzie> yes
[17:59:04] <Avenger> i have trouble with conditional jumps :D
[17:59:19] <CIA-26> GemRB: 03lynxlupodian * r1f34b4cf0b02 10gemrb/gemrb/core/GameScript/GSUtils.cpp: fixed excessive fight screaming
[17:59:31] <Avenger> but i see it now you are right
[17:59:39] <fuzzie> lynxlynxlynx: :)
[18:02:21] <lynxlynxlynx> can we just use AdjustedTicks for the aura? I see we don't do any adjustment yet
[18:03:18] <fuzzie> no
[18:03:39] <lynxlynxlynx> what is it meant for?
[18:03:53] <fuzzie> there's various things which are hasted/slowed, and it's used for those
[18:04:07] <fuzzie> but the aura needs to be able to start/reset at an arbitary point, so you need a seperate var
[18:05:10] <lynxlynxlynx> yeah, but it should be compared to this instead of normal ticks, right?
[18:05:21] <fuzzie> it should just be a counter
[18:05:45] <lynxlynxlynx> +1 on each action call then?
[18:06:05] <fuzzie> hm, i hate that bit
[18:06:09] <fuzzie> but yes
[18:06:35] <lynxlynxlynx> wouldn't it be simpler to store the adjusted ticks in an unused parameter and then increase the counter by the difference?
[18:06:35] <fuzzie> i remember faking aura removal by simply running 100 actions every tick in the AI script, it's so dumb
[18:06:50] <lynxlynxlynx> +1 doesn't cut it for slow/haste
[18:06:59] <fuzzie> this isn't per action
[18:07:11] <fuzzie> oh i see what you meant there
[18:07:14] <lynxlynxlynx> oh right
[18:07:23] <fuzzie> no, you increase it by 1 every time an action is called, in the update loop. it's horrible.
[18:07:32] <fuzzie> i don't know if it's worth keeping that, i don't know why they did it.
[18:08:01] <fuzzie> i think it's sped up if you're hasted, but not slowed down if you're slowed, but off the top of my head i forget, sorry, unhelpful
[18:10:40] <lynxlynxlynx> i can't think of anything nicer now
[18:11:02] <lynxlynxlynx> so that's what i'll start with, it can always be ammended later
[18:19:29] <fuzzie> well it's also called if there is no currentaction ofc
[18:19:34] <fuzzie> but i will go back to hiding
[18:24:17] <Avenger> if hasted, then aura is increased every ai update, if not hasted (or slowed) then aura is increased every second ai update
[18:25:05] <fuzzie> oh?
[18:25:09] <Avenger> when aura reaches speed*10, then spell is cast
[18:25:09] <fuzzie> i don't see that
[18:27:18] <fuzzie> ok, avenger means action update not ai update :) otherwise he is quite right
[18:30:36] <lynxlynxlynx> http://sprunge.us/JOMH?diff <-- this is what i have currently
[18:31:25] <lynxlynxlynx> no haste handling, no message, no currentaction exception (what do you mean?)
[18:31:31] <fuzzie> yeah, that works nicely
[18:32:03] <fuzzie> definitely not how the original does it
[18:32:07] <fuzzie> so good :P
[18:33:30] <lynxlynxlynx> ok :)
[18:34:14] <fuzzie> much better to have some code anyway!
[18:37:01] <lynxlynxlynx> http://sprunge.us/bjKD?diff
[18:37:05] <lynxlynxlynx> that's with haste
[18:37:42] <lynxlynxlynx> i could do the same for adjusted ticks, but then i'd need to convert one modulo check and we'd need to be careful not to ever use them
[18:39:18] <fuzzie> hm?
[18:39:59] <fuzzie> and, well, Avenger says it's actually half-speed if not hasted, for aura, but i don't think that is actually true because spell rounds are not that long
[18:41:00] <lynxlynxlynx> doesn't match my experience either
[18:41:21] <lynxlynxlynx> and that starting commit did cause problems, now the wrong spell got cast
[18:41:52] <lynxlynxlynx> the delay works in the prevention of casting sense, but there is no casting once it is over
[18:42:27] <Avenger> it is not exactly the same as original
[18:42:52] <Avenger> if (Sender->AuraTicks == core->Time.attack_round_size) {
[18:42:55] <Avenger> this is not right
[18:43:06] <fuzzie> that is 100
[18:43:25] <fuzzie> and it seems harmless to have the check there?
[18:45:59] <lynxlynxlynx> interesting, all the usual games have the Aura Cleansed string
[19:11:39] <Avenger> well, it was added during bg1 development
[19:31:35] <Avenger> if a caster gets hurt, they always lose their spell?
[19:31:55] <Avenger> i thought there is some randomness
[19:32:01] <fuzzie> don't think so
[19:32:15] <Avenger> well, maybe only in iwd2
[19:32:21] <Avenger> there is the concentration skill
[19:33:02] <Avenger> so, in bg2 you need to hurt a caster only by 1 hp every round?
[19:34:36] <fuzzie> don't you have to do physical damage?
[19:34:56] <fuzzie> or no, that is not true, you can ruin casters with acid arrow i guess
[19:36:43] <lynxlynxlynx> yes
[19:37:02] <lynxlynxlynx> that's why weapons with added elemental damage are so effective at disruption
[19:37:36] <lynxlynxlynx> cheesy stoneskin only helps vs physical attacks, so that 1 point of cold damage is all it takes to disrupt the enemy
[19:38:08] <Avenger> fuzzie, do you know what is actor.669e?
[19:38:23] <Avenger> something about puppets :)
[19:38:40] <Avenger> guess, it is the puppet iD ?
[19:39:31] <Avenger> it looks like, if the puppetmaster is hit, the puppet is automatically removed
[19:41:11] <Avenger> weird code checks this twice
[19:41:26] <Avenger> once in damage opcode, and once in a function called CheckPuppetMaster
[19:42:34] <fuzzie> what does CheckPuppetMaster check though?
[19:42:51] <fuzzie> not a trigger instead?
[19:43:15] <Avenger> i think it is called every once in a while
[19:43:51] <Avenger> it is called by CGameSprite::ProcessAI
[19:45:01] --> Demitar has joined #gemrb
[19:50:20] <lynxlynxlynx> that sounds like the code for mislead
[19:50:32] <lynxlynxlynx> if the caster is hurt, the illusion is dispelled
[19:51:49] <Avenger> yes
[19:52:08] <Avenger> it also causes the master frozen and give portrait icon 0x4d
[19:52:52] <Avenger> if pmtype==2
[19:52:57] <Avenger> that is probably project image
[19:53:46] <lynxlynxlynx> http://www.gamebanshee.com/showshot.php?/baldursgateii/spells/images/projectimage.jpg
[19:53:49] <lynxlynxlynx> you're right
[20:04:52] <Avenger> brb, syncing the repo with my sandbox
[20:04:54] <-- Avenger has left IRC (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330])
[20:13:25] <CIA-26> GemRB: 03avenger_teambg * ra67121673d78 10gemrb/gemrb/core/ (5 files in 2 dirs): removed some commented out code
[20:20:57] <lynxlynxlynx> hmm, i'm missing an aura reset somewhere
[20:21:46] <lynxlynxlynx> now you can't cast right after loading, since the counter has to fill up first
[20:23:15] <lynxlynxlynx> oh, i can just init it with 100
[20:39:01] <CIA-26> GemRB: 03lynxlupodian * rac819c6ade92 10gemrb/TODO: TODO: removed some resolved items
[20:39:02] <CIA-26> GemRB: 03lynxlupodian * r1329537d1565 10gemrb/gemrb/core/GameScript/GSUtils.cpp: added newlines to the warnings in SpellCore
[20:40:42] <CIA-26> GemRB: 03lynxlupodian * r9c0938d27a45 10gemrb/gemrb/ (12 files in 9 dirs): implemented aura pollution and cleansing
[21:05:27] <HenneNWH> cu
[21:05:30] <-- HenneNWH has left #gemrb
[22:01:28] <-- lynxlynxlynx has left IRC (Read error: Connection reset by peer)
[22:35:40] <-- Maighstir has left IRC (Quit: .)