#nuvie@irc.freenode.net logs for 13 Jan 2004 (GMT)

Archive Today Yesterday Tomorrow
Nuvie homepage


[00:03:38] <-- wjp has left IRC ("Zzzzz...")
[02:54:43] --> SB-X has joined #nuvie
[03:41:04] * SB-X is away: no reason
[03:41:08] --- SB-X is now known as sbX|Afk
[06:37:21] <-- sbX|Afk has left IRC ("...")
[08:28:53] --> SB-X has joined #nuvie
[08:47:06] --> Yuv422 has joined #nuvie
[08:47:12] <Yuv422> hi
[08:50:02] <SB-X> hello
[08:50:24] <Yuv422> alt-216 show current time??
[08:50:29] <Yuv422> what do you think?
[08:51:14] <SB-X> i think yes
[08:51:30] <SB-X> sounds good
[08:51:37] <Yuv422> :)
[08:51:46] <Yuv422> I'll put it i now
[08:51:51] <Yuv422> i=in
[08:51:55] <SB-X> im messing with timedevent now
[08:52:03] <Yuv422> cool
[08:52:14] <SB-X> just added real_time bool to timedevent
[08:52:31] <SB-X> if true then TimedEvent::time and TimedEvent::delay are in game ticks which come from gameclock
[08:52:40] <SB-X> if false they are milliseconds
[08:52:52] <Yuv422> cool
[08:57:22] <Yuv422> do you have to subclass timedevent every time you want to use it?
[09:11:23] --> sbx has joined #nuvie
[09:11:24] <-- SB-X has left IRC (Read error: 104 (Connection reset by peer))
[09:12:40] <sbx> gfeh
[09:13:15] <Yuv422> still having irc problems?
[09:13:19] <sbx> apparently
[09:13:20] <sbx> yes you have to make a new timed event each time
[09:13:26] <sbx> should the code to find the config file be somewhere common so tools can use it?
[09:13:27] <Yuv422> :(
[09:13:38] <Yuv422> hmm
[09:13:52] <Yuv422> probably
[09:14:02] <Yuv422> tools were really just for testing
[09:14:14] <Yuv422> they've sort of hung around. ;)
[09:14:27] <sbx> they can still be useful
[09:14:36] <Yuv422> true
[09:14:40] <sbx> i can going to make a pack_conv
[09:14:43] <sbx> am*
[09:14:50] <sbx> to replace unpack_conv -r
[09:14:56] <Yuv422> ok
[09:15:25] <Yuv422> can you remember any monsters that stayed dead when you killed them?
[09:15:41] <sbx> the gargoyles at the start?
[09:15:49] <Yuv422> they have a temporary egg
[09:15:50] <sbx> all gargoyles at the shrines
[09:16:03] <Yuv422> the gargolyes at the start that is
[09:16:16] <Yuv422> are you sure about the shrines
[09:16:18] <Yuv422> I'll check
[09:16:24] <sbx> i think the shrine gargoyles might disappear after you "free" the shrine
[09:16:30] <sbx> which means use the rune on the force field
[09:16:46] <sbx> if you just kill them and go back without freeing it they will reappear
[09:16:47] <Yuv422> right
[09:17:14] <Yuv422> I wonder if they remove the egg from the map when you free the shrine
[09:17:30] <Yuv422> one way to find out
[09:17:34] <sbx> heh
[09:18:31] <Yuv422> any way of making timed event more generic
[09:18:47] <Yuv422> because it will be a hassle to subclass it every time it is used
[09:19:11] <Yuv422> maybe we could have a timer virtual class
[09:19:14] <sbx> every timed event is game specific and there probably arent that many
[09:19:20] <Yuv422> with a callback method
[09:19:30] <Yuv422> that classes inherit
[09:20:31] <Yuv422> so you pass the timer class your class pointer
[09:20:59] <Yuv422> then the timer calls the callback method with a supplied data token
[09:21:33] <Yuv422> the recipient class can then work out what action to take based on the data argument
[09:21:47] <Yuv422> it will make things more generic
[09:22:02] --> EsBee-Eks has joined #nuvie
[09:22:02] <-- sbx has left IRC (Read error: 104 (Connection reset by peer))
[09:22:04] <Yuv422> I think we'll have quite a few timers going
[09:22:12] <Yuv422> at any one time
[09:22:28] <Yuv422> kegs, clocks, magic
[09:22:28] <EsBee-Eks> i dont see how where that is easier
[09:22:43] <Yuv422> effects
[09:22:57] <Yuv422> not easier but more flexible
[09:23:04] <EsBee-Eks> because?
[09:23:13] <EsBee-Eks> i probably dont understand the example
[09:23:15] <EsBee-Eks> generic_timer->add_event(MySpecialTimer) ?
[09:24:04] <Yuv422> generic_timer->add_event(keg_class, (void *)my_keg_data,time_to_fire_event);
[09:24:41] <Yuv422> keg_class would inherit from a timer_callback base class
[09:24:59] <Yuv422> which would define a virtual method called timer_callback
[09:25:21] <Yuv422> generic_timer then calls keg_class->timer_callback(my_key_data)
[09:25:46] <Yuv422> and keg_class handles the event based on the my_keg_data
[09:26:07] <Yuv422> does that make sense?
[09:26:55] <EsBee-Eks> yes
[09:27:02] <Yuv422> what do you think?
[09:27:22] <EsBee-Eks> well right now it would be "new KegTimer(my_keg_data, time_to_fire);"
[09:27:40] <EsBee-Eks> in both you have to have a class to handle the data
[09:28:15] <EsBee-Eks> what else does it have to do?
[09:28:52] <Yuv422> your method splits the functionality between two classes
[09:29:08] <Yuv422> my method keeps all the implementation in one class
[09:29:40] <Yuv422> so the keg logic is contained in the keg class not the keg class and the kegtimer class
[09:29:55] <EsBee-Eks> what does the keg class have?
[09:30:04] <EsBee-Eks> i didn't know we would have a keg class :)
[09:30:16] <Yuv422> hehe yeah just an example
[09:30:44] <Yuv422> ok say an actor wants a timed callback
[09:30:59] <EsBee-Eks> yeah
[09:31:14] <Yuv422> you have all the code in actor
[09:31:20] <Yuv422> not in actor and actortimer
[09:31:39] <Yuv422> if you split into two classes you need to pass data between the two
[09:31:48] <Yuv422> which increases complexity
[09:32:08] <EsBee-Eks> so what if we just make a new CallbackTimedEvent
[09:32:16] <EsBee-Eks> is that like what you say?
[09:32:17] <Yuv422> not to say that there isn't complexity getting the callback message to the correct place with my method either. ;)
[09:32:35] <Yuv422> yes
[09:32:50] <Yuv422> then all classes that need timed events inherit from that class
[09:33:12] <Yuv422> so UseCode would inherit from CallbackTimedEvent
[09:33:17] <EsBee-Eks> oh
[09:33:27] <Yuv422> and U6UseCode would implement the callback method
[09:33:50] <Yuv422> then pass the data messages to the relevent method internally
[09:35:13] <EsBee-Eks> does it have to do it with inheritance?
[09:35:26] <EsBee-Eks> because UseCode isnt a timer
[09:35:45] <Yuv422> it is a timer target
[09:35:50] <Yuv422> or a timer user
[09:36:00] <Yuv422> to phrase it differently
[09:36:04] <EsBee-Eks> UseCode: public CallBackTarget?
[09:36:13] <Yuv422> yes
[09:36:18] <Yuv422> TimerCallbacktarget
[09:36:23] <EsBee-Eks> yes that makes more sense
[09:36:40] <Yuv422> so how does the idea sound?
[09:36:41] <EsBee-Eks> but i dont know if it has to replace the current functionality
[09:36:53] <EsBee-Eks> because basic timers can implement all the functionality in themselves
[09:37:01] <Yuv422> true
[09:37:13] <Yuv422> maybe we could implement it for future timers
[09:37:22] <Yuv422> like the clock timer and the keg timer
[09:37:27] <EsBee-Eks> we can just add a new timed event CallBackEvent or whatever that can call the function in any target
[09:37:45] <EsBee-Eks> or what you said
[09:38:10] <Yuv422> because we will have lots of magic timers
[09:38:14] <Yuv422> which are turn based
[09:38:19] <Yuv422> like invisible
[09:38:22] <EsBee-Eks> i havnt thought about the magic at all
[09:38:22] <Yuv422> sleep
[09:38:25] <Yuv422> etc
[09:38:36] <EsBee-Eks> and Actor will be doing things there?
[09:38:45] <Yuv422> probably
[09:39:02] <Yuv422> actor will proabably handle magic effects on the actor
[09:39:31] <Yuv422> like protection, invisibility spells/rings
[09:39:43] <EsBee-Eks> because if actor didnt do anything and it was all just "enable effect, disable effect, call actor->show" then it could all be implemented in the normal timer
[09:40:25] <Yuv422> but an actor needs to know if he/she is protected
[09:40:28] <Yuv422> for combat
[09:40:44] <EsBee-Eks> and you want that code in Actor
[09:40:49] <EsBee-Eks> i understand
[09:41:13] <Yuv422> so an actor can work out their own damage based on their armour etc
[09:42:55] <Yuv422> I think leting individual classes control their on timer logic is cleaner.
[09:44:10] <EsBee-Eks> yeah I hadn't thought about it
[09:44:17] --- EsBee-Eks is now known as SB-X
[09:45:23] <SB-X> is there any way to lock a file for editing in CVS?
[09:45:43] <Yuv422> I don't think so
[09:45:46] <Yuv422> why do you ask?
[09:46:21] <Yuv422> well you can do advisory locking I think
[09:46:36] * Yuv422 looks up his cvs book
[09:47:58] <Yuv422> nope no locking
[09:48:04] <Yuv422> as far as I can see
[09:48:13] <SB-X> to see if i could lock TimedEvent in case you want to add the new timer or change things now, while I am still editing it
[09:48:21] <SB-X> but since I have told you then there is no need :)
[09:48:29] <Yuv422> hehe yup
[09:49:07] <Yuv422> I'll leave it alone
[09:49:21] <Yuv422> I've got loads of other stuff to work on ATM. ;)
[09:49:23] <SB-X> i have to commit animmanger and changes to event & portraitview with it too
[09:49:49] <SB-X> i bet we can implement MOVE action too now, but that can wait
[09:50:24] <Yuv422> I was thinking we need to refresh portrait view every cycle
[09:50:39] <Yuv422> to get the palette effects going on some portraits
[09:50:55] <Yuv422> well I think it might only be Suteks portrait. ;)
[09:51:20] <SB-X> He palette cycles too? Completely mad.
[09:52:00] <SB-X> "They say there is a fine line between genius and madness."
[09:52:03] <SB-X> "Well, Sutek hops up and down on that line, cursing the fools that surround him!"
[09:52:38] <Yuv422> yes he really is quite mad. ;)
[09:53:11] <Yuv422> and he'll be the first to tell you.
[09:53:22] <SB-X> what's with the attacking chests?
[09:54:27] <Yuv422> 30d 3ab 0
[09:55:04] <Yuv422> it's an actor with an open chest object type
[09:55:19] <Yuv422> when you kill it it turns into an ordinary open chest.
[09:56:23] <Yuv422> It shoots curse and paralyse spells at you
[10:04:30] --> sbx has joined #nuvie
[10:04:31] <-- SB-X has left IRC (Read error: 104 (Connection reset by peer))
[10:05:51] <Yuv422> freeing the shrine removes the gargoyle egg
[10:06:51] --> EsBee-Eks has joined #nuvie
[10:06:52] <-- sbx has left IRC (Read error: 104 (Connection reset by peer))
[10:06:58] <EsBee-Eks> "Damn you IRC! Daammnn youuuuu!"
[10:07:40] <EsBee-Eks> (shrine egg) oh thats simple, but doesnt reveal any more info on eggs does it?
[10:10:54] <EsBee-Eks> different guards have different numbers
[10:10:57] <EsBee-Eks> where does the talkscript number come from?
[10:11:43] <Yuv422> hardcoded
[10:11:46] <Yuv422> I bed
[10:11:48] <Yuv422> bet
[10:11:56] <EsBee-Eks> hmm
[10:12:01] <EsBee-Eks> that explains why we can't talk to them
[10:12:17] <Yuv422> because the guard number will always change
[10:12:32] <Yuv422> as they are temporary
[10:12:41] <EsBee-Eks> must be the same with wisps
[10:12:46] <Yuv422> yes
[10:12:48] <EsBee-Eks> but shrines are a different issue
[10:14:38] <Yuv422> Converse: UNK OP=f9
[10:15:10] <EsBee-Eks> would that be meditate?
[10:15:21] <Yuv422> why yes it would ;)
[10:18:05] <EsBee-Eks> Heh, the gargoyles are standing around at the shrine of compassion, but seem to pose no threat.
[10:18:45] * Yuv422 charges in, armed with glass swords
[10:19:37] <EsBee-Eks> they were probably just meditating :\
[10:19:55] * Yuv422 wonders how the egg is tied to the force field
[10:19:58] <EsBee-Eks> your avatar must have a lot of STR but not a lot of INT
[10:20:10] <Yuv422> lol
[10:20:11] <EsBee-Eks> perhaps it is all in the rune code
[10:20:24] <Yuv422> I spamed the rune
[10:20:31] <Yuv422> without a quality or qty
[10:24:11] <Yuv422> the forcefield at the shrine of compassion has a quality of 1
[10:25:29] <Yuv422> nothing special about the egg
[10:25:39] <Yuv422> it has a quality of 2
[10:25:47] <Yuv422> which is still unknown
[10:27:44] <EsBee-Eks> 2=removable? :)
[10:27:54] <Yuv422> hmm
[10:27:54] <EsBee-Eks> maybe the rune just removes all nearby eggs
[10:27:55] <Yuv422> maybe
[10:28:02] <Yuv422> that's what I was thinking
[10:34:13] --> servus has joined #nuvie
[10:34:19] <servus> "Sam hasn't commited them yet.
[10:34:27] <Yuv422> ok I've commited my changes
[10:34:29] <servus> " I'm not officially on the project :P
[10:34:38] <Yuv422> hey seruus.
[10:34:52] <servus> Hlothere. I've just been reading logs
[10:34:56] <Yuv422> hehe
[10:35:05] <Yuv422> old logs by the sounds of it. ;)
[10:35:37] <Yuv422> that reminds me I've got to add you to the AUTHORS list
[10:36:28] <Yuv422> bbl
[10:39:15] <EsBee-Eks> hi servus
[10:39:52] <servus> Hi EsBee-Eks. Do I know you better under another name?
[10:40:58] --- EsBee-Eks is now known as SB-X
[10:40:59] <SB-X> ?
[10:41:43] * servus groans and slaps his head. Hi:-)
[10:43:06] <SB-X> i forget my name too sometimes, having to reconnect so much from IRC problems
[10:43:24] <servus> Yeah, but mIRC is worse because it simply closes all windows when it disconnects, and you lose all the log!
[10:45:35] * SB-X is using X-Chat atm.
[10:46:44] <servus> I should just use /etc/bin/irc
[10:56:51] <servus> Ooh, a Linux client of Ultima Online
[11:01:00] <SB-X> do you need the UO data files?
[11:08:48] <servus> But of course
[11:20:30] <Kirben> servus: There is an option in mirc to leave channels open on disconnect/kick.
[11:25:45] <servus> It wasn't there, but I found it. Thanks
[11:49:59] --> Yuv422_ has joined #nuvie
[11:50:16] <-- SB-X has left IRC (Read error: 54 (Connection reset by peer))
[11:52:55] --> SB-X has joined #nuvie
[12:03:14] <Yuv422_> http://www.uo.khakassia.ru/print.php?sid=38
[12:04:25] <servus> Who here reads Russian?
[12:04:51] <Yuv422_> does babelfish do russian?
[12:08:30] <-- Yuv422 has left IRC (Read error: 110 (Connection timed out))
[12:08:43] --- Yuv422_ is now known as Yuv422
[12:36:34] <Yuv422> Time for bed
[12:36:35] <Yuv422> cya
[12:36:37] <-- Yuv422 has left IRC ("[BX] iTs bEttEr tO bUrN oUt tHaN tO fAdE aWaY")
[12:36:56] <-- SB-X has left IRC (Read error: 104 (Connection reset by peer))
[12:38:34] --> SB-X has joined #nuvie
[13:10:29] --> sbx has joined #nuvie
[13:10:29] <-- SB-X has left IRC (Read error: 104 (Connection reset by peer))
[13:30:55] --> wjp has joined #nuvie
[15:23:06] --> EsBee-Eks has joined #nuvie
[15:23:06] <-- sbx has left IRC (Read error: 54 (Connection reset by peer))
[15:41:43] --- EsBee-Eks is now known as SB-X
[16:00:31] <-- SB-X has left IRC ("...")
[16:09:09] <-- Kirben has left IRC ("System Meltdown")
[21:13:57] <-- wjp has left IRC ("bbl")