#tfl@irc.freenode.net logs for 24 Nov 2006 (GMT)

Archive Today Yesterday Tomorrow
tfl homepage


[00:28:32] <-- Kirben has left IRC ("System Meltdown")
[00:47:05] --> Kirben has joined #tfl
[00:47:05] --- ChanServ gives voice to Kirben
[02:04:01] --- Marzo_away is now known as Marzo
[02:05:00] <Marzo> Quick question: do you think that C++-style assignment operators (e.g., +=, -=, *=, /=, %= and maybe &= for arrays) would be useful/desirable in UCC?
[02:05:23] <SleepingDragon> Hmm
[02:05:28] <SleepingDragon> += would
[02:05:34] <SleepingDragon> -= probably
[02:05:38] <SleepingDragon> The others are questionable
[02:06:24] <Marzo> I know that &= would be useful; although it is similar to <<, there are things that << doesn't do yet (such as concat strings)
[02:06:42] <SleepingDragon> We already have << for that
[02:06:49] * SleepingDragon doesn't like redundancy
[02:06:51] <Marzo> (although that may be good reason to change how << works)
[02:07:22] <Marzo> Yeah, I think I'll improve the functionality of << instead of adding &=
[02:07:33] <SleepingDragon> :-)
[02:07:48] <Marzo> *= and /= might be useful for the Karma system
[02:07:52] <SleepingDragon> The other ones are utility
[02:07:56] <SleepingDragon> Useful but not important
[02:08:24] <Marzo> By that reasoning, switch is utility -- useful but not important :-)
[02:08:31] <SleepingDragon> Heh
[02:08:42] <SleepingDragon> Theyd only be used in a few places
[02:08:47] <SleepingDragon> ie utility
[02:08:54] <Marzo> Or even whiles -- you can do that with ifs and gotos
[02:09:03] <Marzo> :-)
[02:09:03] <SleepingDragon> or just ifs
[02:09:24] <Marzo> Nah, you need at least two gotos
[02:09:32] <SleepingDragon> Or rather, fors
[02:09:42] <Marzo> (one for looping and one for skipping the loop goto)
[02:09:57] <Marzo> Even the for you can do with ifs and gotos
[02:10:08] <SleepingDragon> Yep
[02:10:12] <SleepingDragon> gotos are evil, though
[02:10:16] <Marzo> :-)
[02:10:33] <SleepingDragon> Gotos are the path away from virtue!
[02:10:38] <Marzo> I just think that being able to write a += 5; would be immenselly useful
[02:10:43] <Marzo> lol
[02:10:54] <SleepingDragon> += and -= are defintely useful
[02:11:44] <Marzo> Well, adding +=, -=, *=, /= and %= is just slightly less easy than adding only += and -=
[02:11:52] <Marzo> So why not go all the way?
[02:12:07] <Marzo> It is not like I am trying to add pointers to UCC :-p
[02:12:18] <SleepingDragon> Id kill you if you did
[02:12:56] <SleepingDragon> And then Id ressurect you just so I could kill you again
[02:12:58] <SleepingDragon> :D
[02:13:14] <Marzo> (technically, you have pointers already -- pointers to objects and NPCs, at least. But they can't be manipulated like in ASM/C/C++)
[02:13:17] <Marzo> :-)
[02:15:07] <SleepingDragon> heh
[02:15:23] <SleepingDragon> If you make me have to mess with pointers, I will cut your heart out with LBs fork
[02:15:35] <Marzo> :-)
[02:15:58] <Marzo> Relax, not even I am insane enough to add real pointer manipulation to UCC
[02:16:22] <Marzo> Although when I think about it, I already *did*, albeit indirectly
[02:16:28] * SleepingDragon shudders at the thought of pointer manipulation
[02:16:52] * Marzo thinks of the '*' and '&' operators, one of which was added by Marzo and the other by his request
[02:17:10] <Marzo> Hey, we already have pointers in UCC!
[02:17:21] * SleepingDragon runs away from the idea of pointer arithmetic
[02:17:23] <Marzo> The spell system is based on those pointers!
[02:17:39] <Marzo> It even does... *shudder* pointer arithmetic!
[02:18:04] <Marzo> npc->(*spell_function)(target);
[02:18:34] <Marzo> var getSpellFunction (var circle, var spell)
[02:18:34] <Marzo> {
[02:18:34] <Marzo> switch (circle)
[02:18:34] <Marzo> {
[02:18:34] <Marzo> case 0:
[02:18:34] <Marzo> return &spellAwaken + spell;
[02:18:36] <Marzo> case 1:
[02:18:38] <Marzo> return &spellAwakenAll + spell;
[02:18:40] <Marzo> case 2:
[02:18:42] <Marzo> return &spellDestroyTrap + spell;
[02:18:44] <Marzo> case 3:
[02:18:46] <Marzo> return &spellCurse + spell;
[02:18:48] <Marzo> case 4:
[02:18:50] <Marzo> return &spellConjure + spell;
[02:18:52] <Marzo> case 5:
[02:18:54] <Marzo> return &spellCharm + spell;
[02:18:56] <Marzo> case 6:
[02:18:58] <Marzo> return &spellCauseFear + spell;
[02:19:00] <Marzo> case 7:
[02:19:02] <Marzo> return &spellCreateGold + spell;
[02:19:04] <Marzo> case 8:
[02:19:05] * SleepingDragon has a heart attack and dies.
[02:19:06] <Marzo> return &spellDeathVortex + spell;
[02:19:08] <Marzo> }
[02:19:10] <Marzo> }
[02:19:26] * Marzo casts In Mani Corp
[02:20:05] <SleepingDragon> Hehe
[02:20:23] <Marzo> What is so funny?
[02:21:10] * SleepingDragon runs away mumbling incomprehensibly to an invisible gopher.
[02:21:58] <Marzo> Oh, I got it -- now, where is that spell to cure insanity again?
[02:22:30] <SleepingDragon> I think it had something to do with a geometric shape going boom.
[02:22:48] <Marzo> In mani ski-tas
[02:23:44] * SleepingDragon blocks Marzo for Pi minutes
[02:23:57] <Marzo> :-)
[02:24:17] <Marzo> 3.14159265358979...? That Pi?
[02:24:30] <SleepingDragon> not long enough! Keep computing! :-)
[02:25:07] <Marzo> I have a file somewhere with the first 100,000 digits... although I will certainly be kicked if I paste it here :-p
[02:26:59] <SleepingDragon> lol
[02:27:16] <SleepingDragon> when you can hand compute it to the 1,000th digit, you can be unblocked
[02:27:18] <SleepingDragon> :-)
[02:27:55] <Marzo> I also have a formula lying near that file which allows me to compute each digit individually, in hex :-)
[02:28:14] <SleepingDragon> Lol
[02:28:19] <SleepingDragon> Nonono
[02:28:22] <SleepingDragon> It must be octal :D
[02:28:37] <Marzo> It is trivial to convert from hex to octal :-)
[02:28:47] <SleepingDragon> Hehe
[02:33:07] <SleepingDragon> To gargish then!
[02:33:17] <Marzo> :-)
[02:33:37] <SleepingDragon> Bonus points if you express it in Orphidian
[02:53:24] <Marzo> Like I said, only slightly less easy to add all assignment operators
[02:53:37] <Marzo> +=, -=, *=, /= and %= are all in
[02:56:15] <SleepingDragon> Cool
[02:56:24] <SleepingDragon> %= is mod right? Never used it
[02:56:31] <Marzo> Right
[02:56:38] <SleepingDragon> Never used it, lol
[02:56:42] <SleepingDragon> C++ or UCC
[02:56:44] <SleepingDragon> :-)
[02:56:44] <Marzo> I didn't even know UCC had a mod operator until recently too
[02:57:03] <Marzo> It goes well in a couple of places
[02:57:43] <SleepingDragon> Hehe
[02:57:46] <SleepingDragon> I know ti had mod
[03:00:08] <SleepingDragon> I hvent used %= one time in my life, hehe
[03:00:33] <Marzo> :-)
[03:16:58] <Marzo> Ah, it is good to be able to write 'pos[Z] -= 4;' instead of 'pos[Z] = pos[Z] - 4;'
[03:18:17] <Marzo> OK, << now works with anything but classes
[03:19:23] <Marzo> Next step: currently, you can use only constants to get/set global flags -- maybe change that?
[03:20:17] <SleepingDragon> Yes, muchly
[03:20:46] <Marzo> This will require a somewhat major work, and it will require two new opcodes
[03:21:12] <Marzo> (I have been toying with the idea for a while, so I already have a feeling for the difficulty)
[03:21:50] <Marzo> The current opcodes used to get/set global flags have the opcode address pre-compiled as a parameter to the opcode, which is bad
[03:22:28] <SleepingDragon> Heh
[03:27:39] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[03:27:43] --> Kirben_ has joined #tfl
[03:27:43] --- ChanServ gives voice to Kirben_
[03:30:21] --- Kirben_ is now known as Kirben
[03:37:30] <Marzo> Heh, I just lost an eighth
[03:37:32] <Marzo> [01:20] Marzo: This will require a somewhat major work, and it will require two new opcodes
[03:37:40] <Marzo> 'major work'? Bah!
[03:37:55] <SleepingDragon> Lol
[03:38:01] <SleepingDragon> You lied!
[03:38:02] <SleepingDragon> :-)
[03:38:08] <Marzo> [01:37] Marzo: Heh, I just lost an eighth
[03:38:14] <Marzo> My point exactly :-p
[03:38:19] <SleepingDragon> That was me figuring out which Eight
[03:38:21] <SleepingDragon> h
[03:38:23] <SleepingDragon> :-)
[03:38:47] <Marzo> (now, where was that blind reagent lady again?)
[03:39:12] <SleepingDragon> Lol
[03:39:25] <Marzo> Will there be a blind reagent lady in TFL?
[03:40:31] * SleepingDragon prefers to be original :-)
[03:40:55] <Marzo> I was just checking :-p
[03:41:32] <SleepingDragon> Hehe
[03:41:35] <Marzo> Now, given my bit of foresight when I was writing the shrine meditation part, the code will be much smaller thanks to the new non-const-only global flags
[03:41:48] <SleepingDragon> Hehe
[03:42:15] <SleepingDragon> What we need is working global variables. Statics were still sketchy when I was bouncing around with them on Tues
[03:42:18] <Marzo> (I was already anticipating the flag change back then -- so you can see for how long I was thinking about the change)
[03:42:23] <SleepingDragon> Heh
[03:42:50] <Marzo> I think I squashed the last problems with statics
[03:43:08] <Marzo> There is only one way to be sure, though, which is to test it like crazy
[03:43:31] <Marzo> From shrines.uc:
[03:43:41] <Marzo> Get the Codex Quest level for the shrine. Would be much simpler
[03:43:41] <Marzo> if gflags accepted variables as well as constants...
[03:43:41] <Marzo> Basically, there are two flags per shrine which are used in bynary
[03:43:49] <Marzo> (in a comment block)
[03:44:14] <SleepingDragon> binary?
[03:44:15] <SleepingDragon> :-)
[03:44:17] <Marzo> And it should even have been binary
[03:44:18] <Marzo> Yes
[03:44:32] <Marzo> The two flags make the work of four
[03:46:18] <SleepingDragon> Yep
[03:47:26] <SleepingDragon> I should pester Justin
[03:47:33] <SleepingDragon> He said he'd have the music done in Sept.
[03:47:33] <Marzo> ?
[03:47:36] <Marzo> Oh
[03:47:44] <SleepingDragon> And it is very much past September :-)
[03:52:52] <Marzo> Ah, from 72 lines of code to a mere 11 simply due to the fact that flags need not be set by constants anymore
[03:53:10] <SleepingDragon> :-)
[03:53:44] <Marzo> I call that an improvement :-)
[03:54:27] <Marzo> But more seriously, we must fix several things in FoV which were done in a most bone-headed way by the original devs
[03:55:05] <SleepingDragon> :-)
[03:55:12] <Marzo> Two of them has already been fixed -- the fact that they wasted global flags for the black sword forging and bonding with the gem
[03:55:14] <SleepingDragon> FoVFixes
[03:55:16] <SleepingDragon> :-)
[03:55:29] <Marzo> But there is still Erethian and Dracothraxus
[03:55:32] <Marzo> :-)
[03:56:09] <Marzo> (and who know what else...)
[03:56:57] <Marzo> If you take a look at the code I wrote for Arcadion, and compare to the original, you will see exactly how bad it was
[03:57:28] <Marzo> I mean, Arcadion's dialogs -- for ALL forms -- were all in a SINGLE function
[03:57:59] <SleepingDragon> Heh
[03:58:44] <Marzo> Hey, I am forgetting that the codex display will also have a lot less code with the new non-const globals
[03:59:16] <SleepingDragon> :-)
[03:59:31] <Marzo> From show_codex.uc:
[03:59:39] <Marzo> Boring and long... I wish gflags could be variables as well as constants...
[03:59:44] <Marzo> (in a comment)
[03:59:45] <SleepingDragon> :D
[03:59:59] <SleepingDragon> You fixed your own problem then :-)
[04:00:16] <Marzo> It seems I always do lately :-)
[04:01:05] <Marzo> By the way, what is your opinion on the Codex messages in the Keyring mod?
[04:02:11] <SleepingDragon> How do you mean?
[04:02:41] <Marzo> The ones you see when you meditate on a shrine then go to the Codex
[04:03:16] <SleepingDragon> Ah
[04:03:16] <Marzo> "@Sacrifice is a virtue only if it is voluntary; to force others to Sacrifice of themselves is a grave injustice.~@Each man must be his own judge when determining how far he is willing to go to help others.@",
[04:03:16] <Marzo> "@The laws of the land are imperfect and do not always serve Justice.~@Keep always in mind that obeying or enforcing an unjust law is itself unjust.@",
[04:03:16] <Marzo> "@Pride is the bane of Virtue. When one deems himself to be better or to know more than others,~@he is opening the gates to unvirtuous behaviour by disregarding Truth, Love and Courage.@",
[04:03:16] <Marzo> "@The path to Spirituality is paved by wisdom and knowledge. Thou hast the need to know the right questions to ask,~@and hast to have learned enough of the world to be able to understand those questions.~@Spirituality is the never-ending search for the answers.@",
[04:03:20] <Marzo> "@There is a fine line between Valor and recklessness; wisdom lies in being able to tell one from another.~@Know that discretion is the better part of Valor.@",
[04:03:23] <Marzo> "@A life without enlightenment is a form of suffering about which the unenlightened is unaware.~@The enlightened can show their Compassion by fighting against such ignorance.@",
[04:03:26] <Marzo> "@Honor is more than being true to his word and being willing to defend one's convictions.~@Honor is also the courage to -revise- one's convictions when they are shown to be flawed or based on false assumptions.@",
[04:03:29] <Marzo> "@Honesty starts with one's self. Know thyself well, and maintain not a false assessment of thy knowledge or martial skills.~@Only when this is done can one achieve true enlightenment.@"
[04:03:30] <SleepingDragon> I might tweak them a bit at some point
[04:04:29] <Marzo> (which is why I am asking :-p)
[04:05:14] <SleepingDragon> "at some point" meaning Im not worrying about them now
[04:05:17] <SleepingDragon> One thought though
[04:05:23] <SleepingDragon> Centralize them as variable strings
[04:05:29] <SleepingDragon> And then call them
[04:05:30] <Marzo> Just did
[04:05:35] <SleepingDragon> Better programming style :-)
[04:06:05] <Marzo> It wasn't much possible (or rather, useful) due to const-only globals
[04:06:11] <SleepingDragon> Hehe
[04:06:18] <SleepingDragon> Doesnt need to be does it?
[04:06:26] <Marzo> :-)
[04:06:45] <Marzo> They are in a single array now, and a loop goes through all shrines displaying the messages
[04:06:45] <SleepingDragon> Just have a lookup f'n like I do for the virtue seer
[04:07:45] <SleepingDragon> lol
[04:07:48] <SleepingDragon> [23/11/2006 23:07 EST-5] * SleepingDragon likes the tilde
[04:07:48] <SleepingDragon> [23/11/2006 23:07 EST-5] * SleepingDragon thinks its a groovy diacritical mark
[04:07:48] <SleepingDragon> [23/11/2006 23:07 EST-5] Thadius856: Yep, its quite fuń
[04:08:00] <Marzo> :-)
[04:08:16] <Marzo> By the way, when are you going to wake up? :-)
[04:08:18] <SleepingDragon> Oh the conversations us bored bot developers have
[04:08:29] <SleepingDragon> Oh this is my "away" nick.
[04:08:42] <Marzo> My point more or less
[04:08:46] <SleepingDragon> Im not in good health, so I dont want random people badgering me.
[04:08:57] <Marzo> Oh
[04:09:07] <Marzo> That is a good idea, actually
[04:09:52] <Marzo> From 64 lines down to 19 (including 8 for the messages array)
[04:10:05] <SleepingDragon> Yep
[04:10:12] <SleepingDragon> I had surgery a week ago Wednesday
[04:10:27] <Marzo> On the leg again?
[04:10:36] <SleepingDragon> Foot
[04:10:51] <SleepingDragon> Removed a bone spur and pulled out my big toenail
[04:11:14] <Marzo> Ugh
[04:11:31] <Marzo> Lots of pain medication, I take it?
[04:11:55] <SleepingDragon> Yep
[04:12:05] <SleepingDragon> It only works for some 45 minutes to an hout, too
[04:12:13] <SleepingDragon> then i cant take it again for another four
[04:12:37] <Marzo> (make that 85 lines down to 22)
[04:12:44] <SleepingDragon> :-)
[04:12:57] <SleepingDragon> Commit that code when you're done!
[04:13:18] <Marzo> I will probably have to commit the UCC changes first :-)
[04:13:31] <SleepingDragon> :-)
[04:14:04] <SleepingDragon> If you bug Eagle, he can give you the simple stuff, its quite easy even he can do it :-)
[04:14:11] <SleepingDragon> IRC connection, parsing, etc
[04:14:15] <Marzo> So, how about a XP penalty for a cheating avatar which cheats his way into the codex?
[04:14:21] <SleepingDragon> Er, wrong channel
[04:14:26] <SleepingDragon> Nah!
[04:14:27] <Marzo> I noticed it
[04:14:29] <SleepingDragon> Have an easter egg
[04:14:33] <Marzo> :-)
[04:14:37] <Marzo> It is already
[04:15:27] <SleepingDragon> :-)
[04:15:46] * SleepingDragon wouldnt know, he doesn't cheat in that way :-)
[04:15:48] <Marzo> say(ominous_turning + single_line);
[04:15:48] <Marzo> say("@CHEATERS NEVER WIN!@");
[04:16:09] * SleepingDragon only cheats at the games in Buccs Den :-)
[04:16:23] <Marzo> This evaluates to:
[04:16:24] <Marzo> "Suddenly, a great wind starts blowing from nowhere. Amidst the terrible roar, the pages of the Codex turn wildly.~When the pages stop turning, there is but a single line in the page, containing exactly the message you need to see the most."
[04:16:36] <Marzo> "CHEATERS NEVER WIN!"
[04:17:06] <SleepingDragon> You should change the Codex over to the new book intrinsic
[04:17:14] <SleepingDragon> I could probably make a fancy graphic for it even :-)
[04:17:17] <Marzo> I am thinking about it
[04:17:27] <SleepingDragon> Or perhaps
[04:17:32] <SleepingDragon> A mixture of say and the gump
[04:17:36] <Marzo> The downside is that I already have a cool graphic for the codex closed
[04:17:41] <SleepingDragon> Like the stone thingy
[04:17:43] <SleepingDragon> In FoV
[04:17:59] <Marzo> What stone thingy? The stone of Castambre?
[04:18:45] <SleepingDragon> Yes
[04:18:56] <SleepingDragon> Remember the document explaining it?
[04:18:57] <Marzo> Heh, even the codex entrance egg will benefit from non-const flags
[04:19:00] <SleepingDragon> How it has some converse
[04:19:02] <Marzo> Yes
[04:19:06] <SleepingDragon> You could do something like that
[04:19:09] <SleepingDragon> Quite easily
[04:19:11] <Marzo> I did that in Zauriel's journal
[04:19:36] <SleepingDragon> :-)
[04:19:39] <SleepingDragon> I noticed
[04:21:48] <Marzo> From this:
[04:21:50] <Marzo> var in_quest = false;
[04:21:50] <Marzo> if ((gflags[MEDITATED_AT_SACRIFICE] && !gflags[VIEWED_CODEX_FOR_SACRIFICE] ) ||
[04:21:50] <Marzo> (gflags[MEDITATED_AT_JUSTICE] && !gflags[VIEWED_CODEX_FOR_JUSTICE] ) ||
[04:21:50] <Marzo> (gflags[MEDITATED_AT_HUMILITY] && !gflags[VIEWED_CODEX_FOR_HUMILITY] ) ||
[04:21:50] <Marzo> (gflags[MEDITATED_AT_SPIRITUALITY] && !gflags[VIEWED_CODEX_FOR_SPIRITUALITY]) ||
[04:21:52] <Marzo> (gflags[MEDITATED_AT_VALOR] && !gflags[VIEWED_CODEX_FOR_VALOR] ) ||
[04:21:54] <Marzo> (gflags[MEDITATED_AT_COMPASSION] && !gflags[VIEWED_CODEX_FOR_COMPASSION] ) ||
[04:21:56] <Marzo> (gflags[MEDITATED_AT_HONOR] && !gflags[VIEWED_CODEX_FOR_HONOR] ) ||
[04:21:58] <Marzo> (gflags[MEDITATED_AT_HONESTY] && !gflags[VIEWED_CODEX_FOR_HONESTY] ))
[04:22:00] <Marzo> in_quest = true;
[04:22:02] <Marzo> To this:
[04:22:04] <Marzo> var in_quest = false;
[04:22:06] <Marzo> var i = 0;
[04:22:08] <Marzo> while (i < 8)
[04:22:10] <Marzo> {
[04:22:10] <SleepingDragon> lol
[04:22:12] <Marzo> i += 1;
[04:22:14] <Marzo> if (gflags[MEDITATED_AT_SHRINE_BASE + i] && !gflags[VIEWED_CODEX_BASE + i])
[04:22:16] <Marzo> {
[04:22:18] <Marzo> in_quest = true;
[04:22:20] <Marzo> break;
[04:22:22] <Marzo> }
[04:22:24] <Marzo> }
[04:22:26] <Marzo> Ah, how refreshing
[04:22:35] <SleepingDragon> Wow it looks like a computer program
[04:22:43] <Marzo> ?
[04:22:54] <SleepingDragon> As opposed to an old 1986 pascal hack
[04:22:55] <SleepingDragon> :-)
[04:22:59] <Marzo> lol
[04:25:59] <SleepingDragon> :-)
[04:26:02] <Marzo> At some point I will probably have to rewrite the death function
[04:26:16] <SleepingDragon> The former is definetely 1986 pascal hack-ish
[04:26:17] <SleepingDragon> :-)
[04:26:42] <Marzo> But I think I will fix seance first
[04:26:59] <Marzo> It is FoV-style bone-headed
[04:27:13] <Marzo> Unless
[04:27:14] <Marzo> Hm
[04:27:28] <Marzo> How would you feel if seance was targeted?
[04:27:51] <Marzo> I mean -- you select the ghost NPC and can talk to *him*?
[04:28:11] <Marzo> (or she or it?)
[04:28:17] <Marzo> *she->her
[04:28:30] <SleepingDragon> Id kill you
[04:28:36] <Marzo> :-)
[04:28:46] <SleepingDragon> It doesnt function as it should, but as it is described makes sense
[04:28:55] <Marzo> Why? Only because Skara Brae would be much more annoying?
[04:29:01] <SleepingDragon> Make it expire at dawn and only work during the night
[04:29:48] <SleepingDragon> And the ghosts shouldnt be around during day, but that's fixable.
[04:30:05] <Marzo> It theoretically expires at dawn
[04:30:14] <SleepingDragon> But it doesnt in practice :-)
[04:30:25] <Marzo> Ah, I see
[04:30:48] <Marzo> If the hour is less than 6, it will expire at 6 AM
[04:30:57] <SleepingDragon> Or at least it didnt in the original, havent played through SB in Exult
[04:31:03] <Marzo> However, in all other cases, it will expire at 11PM
[04:31:05] <SleepingDragon> It doesnt check for when you sleep
[04:31:09] <SleepingDragon> I remember that bit
[04:31:21] <SleepingDragon> So you can sleep in bed or bedroll and retain it during day
[04:31:30] <Marzo> Thus, if you cast it at 6:01 AM, it will last all day
[04:31:42] <Marzo> (until 11:00 PM)
[04:31:51] <Marzo> It is a usecode bug
[04:31:55] <SleepingDragon> It needs fixed.
[04:32:04] <SleepingDragon> We should have it at least operate as described
[04:32:07] <SleepingDragon> before we fiddle with it
[04:32:41] <Marzo> I need to confirm how many ticks are one minute
[04:32:48] <Marzo> one GAME minute
[04:35:15] <SleepingDragon> Hmm
[04:35:17] <SleepingDragon> Dunno
[04:41:34] <Marzo> Apparently, 2400 ticks (10 fps) = 1 hour
[04:41:48] <SleepingDragon> Heh
[04:41:58] <SleepingDragon> We need some game time getting f'ns
[04:42:14] <SleepingDragon> B/c if they change framerate it hoses that
[04:42:20] <Marzo> There is UI_game_hour, UI_game_minute and UI_part_of_day
[04:42:31] <SleepingDragon> 'tworks
[04:42:33] <Marzo> I don't know if it hoses it or not
[04:42:41] <SleepingDragon> I would think it does.
[04:43:10] <Marzo> In any case, who would be insane enough to play the game at 2fps?
[04:43:24] <Marzo> That was a rethorical question, BTW
[04:43:35] * SleepingDragon raises hand
[04:47:11] * Marzo is testing
[04:56:35] <Marzo> Confirmed: 40 ticks == 10 game minutes / fps
[04:56:49] <SleepingDragon> Is it FPS sensitive or nto?
[04:57:02] <Marzo> It is what the '/ fps' stands for
[04:57:20] <Marzo> Divide 10 by fps and you get how many minutes 40 ticks stand for
[04:57:30] <SleepingDragon> So its dependant on fps?
[04:57:33] <Marzo> Yes
[04:58:01] <SleepingDragon> Are those intrinisics dependant on it as well?
[04:58:14] <Marzo> Basically, 15 game minutes are supposed to be equal to 1 real minute, regardless of fps
[04:58:19] <Marzo> No
[04:58:30] <Marzo> Only the number of ticks
[04:58:49] <SleepingDragon> Ah
[04:58:54] <Marzo> Basically, X fps means X ticks per second
[04:59:14] <Marzo> But the rate of game time to real time is fixed
[04:59:33] <Marzo> That poses a severe problem
[05:00:34] <SleepingDragon> Indeed
[05:00:41] <SleepingDragon> So fix it! :D
[05:00:48] <Marzo> There is no FPS-independent way of setting duration of scripts or spells
[05:01:10] <Marzo> I don't think it is possible or desirable
[05:01:28] <Marzo> (well, possible it is -- but at considerable effort)
[05:01:53] <Marzo> I think we have bigger fish to fry for now
[05:02:01] <Marzo> (or I, at least)
[05:02:26] <Marzo> You really play at 2fps or was that just a joke?
[05:02:27] <SleepingDragon> Heh
[05:02:44] <SleepingDragon> I had a crappy computer when Ultima 7 first came out :-)
[05:02:50] <Marzo> :-)
[05:02:57] <Marzo> That was many years ago
[05:03:12] <SleepingDragon> :-)
[05:03:27] <Marzo> Ok, that is doubly bad
[05:03:45] <SleepingDragon> Hmm?
[05:04:07] <Marzo> Seance assumes that there are 25 ticks in a minute
[05:04:20] <Marzo> (game minute)
[05:04:54] <Marzo> That works out to 6.25 fps
[05:06:25] <SleepingDragon> No wonder then
[05:08:45] * Marzo contemplates a set_alarm/delete_alarm intrinsic pair, but has no real idea of how much work it will be
[05:09:47] <Marzo> UI_set_alarm(object obj, int day, int hour, int minute, function fun int eventid)
[05:10:16] <Marzo> UI_delete_alarm(object obj, int day, int hour, int minute)
[05:10:21] <SleepingDragon> Say itll be lots
[05:10:32] <SleepingDragon> Then we'll happy when you lose anothe Eighth
[05:10:40] <Marzo> lol
[05:11:43] <Marzo> Maybe keep only the set_alarm function?
[05:11:52] <SleepingDragon> Heh
[05:12:14] <Marzo> I don't think that deleting alarms will really be useful
[05:13:02] <SleepingDragon> :-)
[05:13:38] <Marzo> In any case, the set_alarm intrinsic is now in my endless to-do list
[05:14:37] <Marzo> Well, since it is past 3:00 AM here, I will be going to bed
[05:15:00] <Marzo> Good night
[05:15:06] * Marzo unrolls the bedroll
[05:15:13] * SleepingDragon hands Mazro the magical bedroll that can comfortably fit 8.
[05:15:15] * Marzo double-clicks the bedroll
[05:15:46] <SleepingDragon> Sleep well, avatar
[05:15:46] <-- Marzo has left IRC ("Marzo vanishes suddenly.")
[06:36:41] <-- Kirben has left IRC ("System Meltdown")
[07:07:10] --> Kirben has joined #tfl
[07:07:10] --- ChanServ gives voice to Kirben
[07:18:23] <-- Kirben has left IRC ("System Meltdown")
[08:09:11] --> Kirben has joined #tfl
[08:09:11] --- ChanServ gives voice to Kirben
[09:15:54] <-- SleepingDragon has left IRC (Connection timed out)
[13:57:25] <-- Kirben has left IRC (Read error: 110 (Connection timed out))
[19:03:46] --> SleepingDragon has joined #tfl
[19:03:46] --- ChanServ gives voice to SleepingDragon
[21:38:26] --> Kirben has joined #tfl
[21:38:26] --- ChanServ gives voice to Kirben
[22:07:05] <-- Kirben has left IRC (Read error: 110 (Connection timed out))
[23:09:34] --> Kirben has joined #tfl
[23:09:34] --- ChanServ gives voice to Kirben