#exult@irc.freenode.net logs for 10 Apr 2013 (GMT)

Archive Today Yesterday Tomorrow
Exult homepage

[03:56:16] <-- Demorde has left IRC (Remote host closed the connection)
[09:17:54] <-- Matt_O has left IRC (Quit: Leaving)
[10:50:26] <-- Marzo has left IRC (Ping timeout: 246 seconds)
[10:54:02] --> Marzo has joined #exult
[11:50:59] <-- Marzo has left IRC (Ping timeout: 246 seconds)
[11:56:51] --> TheCycoONE has joined #exult
[12:22:34] <-- TheCycoONE has left IRC (Read error: Connection reset by peer)
[12:23:25] --> TheCycoONE has joined #exult
[12:35:44] --> Marzo has joined #exult
[12:57:49] <-- Marzo has left IRC (Ping timeout: 246 seconds)
[13:05:24] --> Marzo has joined #exult
[13:15:48] <-- Marzo has left IRC (Ping timeout: 264 seconds)
[13:24:24] --> Marzo has joined #exult
[13:56:00] <-- Marzo has left IRC (Ping timeout: 264 seconds)
[14:09:21] --> Marzo has joined #exult
[14:42:16] <Dominus> wjp: this little patch for schedule.cc fixes the crash http://pastebin.com/msNHw4d0
[14:42:55] <Dominus> this checks whether we are still in patrol schedule after switching to the real schedule
[14:43:47] <Dominus> Probably a check further up whether "real" schedule is patrol at the moment might be better, but I have no idea how to do that
[14:46:22] <wjp> I think that if is not even necessary
[14:46:37] <wjp> the if right above the code you add already checks if the schedule is unchanged
[14:47:22] <Dominus> oh, wasn't quite sure whether that is what it did
[14:48:13] <wjp> and should it be inside or outside the if (cnt != 0) ?
[14:48:28] <wjp> if outside, it also applies to npcs that do not have any preset schedules at all
[14:49:58] <Dominus> I think it should only apply to npcs with presets
[14:50:35] <wjp> I'm not sure why having presets should affect that
[14:52:42] <Dominus> perhaps because these should be set to the combat stuff further down or is that not what it does for those without presets
[14:52:45] <Dominus> ?
[14:53:30] <Dominus> Also wjp, if I just place the npc->set_schedule_type(loiter) beneath the if (safenpc->get_schedule() != this), the parrot keeps his patrol schedule
[14:54:59] <Dominus> so maybe I should move the if schedule type patrol in the if (safenpc->get_schedule() != this) and add an else return?
[14:55:40] <wjp> what do you mean?
[14:56:00] <-- Marzo has left IRC (Ping timeout: 264 seconds)
[14:56:09] <wjp> if you make that set(loiter) command easier to reach it does not get executed?
[14:56:25] <wjp> (because that does not seem to make sense)
[14:56:40] <Dominus> yeah :)
[14:56:44] <Dominus> makes no sense
[14:58:12] <wjp> what is the exact patch you're trying now?
[15:00:48] <Dominus> http://pastebin.com/xiyRnS1r
[15:01:00] <Dominus> with this patrol schedule remains for npc 37
[15:01:15] <Dominus> with the other it was set to loiter
[15:01:46] <wjp> ah, no, that's exactly the opposite
[15:01:58] <wjp> now it sets it to loiter if it _didn't_ stay in patrol
[15:03:45] <Dominus> ah, got it (I think)
[15:03:56] <Dominus> else
[15:03:56] <Dominus> npc->set_schedule_type(loiter);
[15:04:08] <wjp> right
[15:04:13] <Dominus> that doesn't crash *and* sets to loiter
[15:04:15] <wjp> although you don't even need the 'else'
[15:05:07] <Dominus> I don't? This I don't understand then.
[15:05:16] <wjp> because of the return
[15:05:43] <wjp> all code below that if is automatically only executed if the return wasn't triggered
[15:05:46] <wjp> even without an explicit else
[15:06:24] <Dominus> oh curios. I though that if that if doesn't trigger then every npc that was changed above will be set to loiter
[15:06:55] <wjp> no, if it was changed above, that if will be true and it will return
[15:07:14] <Dominus> d'oh
[15:07:21] <Dominus> thanks for being patient with me :)
[15:07:50] <wjp> although I'm not convinced this fixes the parrot crash
[15:08:52] * Dominus is making a full clean and compile
[15:09:26] <wjp> do you still have that change to update_schedule in place?
[15:11:31] <Dominus> I didn't have it in place but it seems that make didn't catch up on that
[15:11:40] <Dominus> which means, yes, it still crashes
[15:12:14] <Dominus> it doesn't even get to the if (safenpc_>
[15:12:23] <Dominus> I think it loops before
[15:12:44] <wjp> yes, it stays stuck in update_schedule
[15:12:59] <Dominus> I should have picked up on it that the parrot was staying in patrol without it crashing exult
[15:13:00] <wjp> I think you had a backtrace somewhere
[15:14:06] <wjp> does it fix the crystal ball?
[15:14:45] <Dominus> no
[15:15:08] <Dominus> the crystal ball shouldn't even b in the !gotpath if AFAICT
[15:15:13] <Dominus> but is
[15:15:42] <Dominus> in Patrol_schedule::Patrol_schedule(
[15:16:18] <Dominus> the gotpath = nearby.size() != 0; definition sucks the crystal ball into the !gotpath if
[15:16:41] <Dominus> but it really should be an excluded from that
[15:17:01] <wjp> why?
[15:17:13] <wjp> if there are no path eggs, it can't start processing those
[15:17:23] <Dominus> there are path eggs
[15:17:36] <wjp> but it can't find them?
[15:18:06] <wjp> or does it start searching before walking to the schedule loc?
[15:18:27] <Dominus> I'm not sure, just that when I commented the whole if (!gotpath) stuff the crystal ball worked again
[15:19:41] <Dominus> the paths in the crystal ball start with arrow path eggs, that might throw it off
[15:20:28] <Dominus> sorry, wjp, I have to go. maybe we can break our heads over this later
[15:20:38] <wjp> see you later
[16:35:12] --> Matt_O has joined #exult
[17:08:23] <-- SHODAN has left IRC (Changing host)
[17:08:23] --> SHODAN has joined #exult
[18:19:58] --> ParuCodex has joined #exult
[18:20:48] <-- ParuNexus has left IRC (Ping timeout: 252 seconds)
[20:14:20] <Dominus> wjp, I'm here again :)
[20:14:38] <Dominus> so about patrol schedule change loop, parts of my bt at https://sourceforge.net/tracker/?func=detail&aid=3608937&group_id=2335&atid=102335
[20:14:52] --> TheCycoTWO has joined #exult
[20:16:20] <-- TheCycoONE has left IRC (Ping timeout: 257 seconds)
[20:18:22] --> TheCycoONE has joined #exult
[20:21:33] <-- TheCycoTWO has left IRC (Ping timeout: 240 seconds)
[20:27:37] <-- TheCycoONE has left IRC (Quit: And then there were n-1)
[20:36:12] <Dominus> so it loops there, with updating schedule in schedule.cc, through actors.cc update_schedule, then schedule is patrol, does some patrol stuff (readying weapon etc) which leads again to schedule.cc void Patrol_schedule::now_what
[21:32:08] --> Marzo has joined #exult
[22:40:58] <Dominus> grr, why can't I compare the state the npc *would* have after update_schedule with the state he now has?
[23:22:04] <-- Marzo has left IRC (Ping timeout: 245 seconds)
[23:24:53] --> Marzo has joined #exult
[23:43:38] <Dominus> I give up, staring at code doesn't help...