code logs -> 2017 -> Thu, 16 Feb 2017< code.20170215.log - code.20170217.log >
--- Log opened Thu Feb 16 00:00:27 2017
01:14 Derakon[AFK] is now known as Derakon
03:00 Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has quit [A TLS packet with unexpected length was received.]
03:01 Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
03:01 mode/#code [+o Syloq] by ChanServ
03:12
<&ToxicFrog>
I just understood why the oblivion portals mod has so many weird item/quest/script interlinks
03:12
<&ToxicFrog>
Like, it has an item named ptfIsAnchored that sits in a blueroom doing nothing
03:13
<&ToxicFrog>
*but*
03:13
<&ToxicFrog>
That item has a script attached to it that runs when the player frobs it
03:13
<&ToxicFrog>
And that script sets a property on the item
03:13
<&ToxicFrog>
This is how the portal mod implements function calls.
03:13
<&ToxicFrog>
The caller gets a ref to the object, sets some properties on it, and then generates a virtual frob event on it.
03:13
<&ToxicFrog>
And then reads the result property.
03:14
<~Vornicus>
madness
03:16
<@Reiv>
... it's using scripts on objects as functions O.o
03:16
<&ToxicFrog>
Yes.
03:16
<@Reiv>
I guess the language is a little primitive, huh
03:16
<&ToxicFrog>
Because the Oblivion engine doesn't support function calls, see.
03:16
<@Reiv>
eesh, right
03:16
<@Reiv>
That's honestly kinda clever
03:16
<&ToxicFrog>
I mean, OBSE was able to hack in support for them, but this mod predates OBSE
03:17
<@Reiv>
Are any of them acting as, uh, global variables or the like?
03:17
<&ToxicFrog>
No, those are linked to quests
03:18
<&ToxicFrog>
Like, as shipped, this mod has:
03:18
<&ToxicFrog>
- 10 DOOR objects (the portals themselves)
03:18
<&ToxicFrog>
- 1 CELL (the blueroom)
03:18
<&ToxicFrog>
- 1 CREA (creature), I haven't figured out what this is for yet
03:18
<&ToxicFrog>
- 4 MISC, the objects holding the functions
03:19
<&ToxicFrog>
- 5 QUST, still figuring out what these do; one of them runs at startup to install the spells, one of them exists to hold the map markers for the portals, and one is used to move the player (for some reason player movement is implemented with a custom script rather than the existing door mechanics), not sure about the other two
03:20
<&ToxicFrog>
The one that runs at startup also holds global references to the ten portals, since objects that are *not* referenced in some manner get unloaded when the player leaves the cell, which is a problem if you need to grab a ref to them later to move them around
03:21
<&ToxicFrog>
- 10 SPELs, one for each portal; this is entirely on the programmer, it could have been done with one spell and a messagebox
03:21
<&ToxicFrog>
- 1 SOUN, for the teleporter activation
03:23
<&ToxicFrog>
- and 19 SCPTs, ten of which are the spell scripts to open the portals, four of them are the scripts for the MISCs, two are initialization scripts, one for moving the player, one as the activation script for the portals, and I have no idea what ptsWatch does.
03:23
<&ToxicFrog>
I'm cheating a bit here because I don't care about supporting Oblivion or Shivering Isles, which simplifies some of the sanity checking involved here
03:24
<&ToxicFrog>
But I'm pretty sure I can cut this down to 10 DOORs, 1 CELL, 1 QUST, 1 SPEL, and 2-3 SCPTs.
03:25
<&ToxicFrog>
The "move the player" quest, btw, is a procedure (i.e. a function with no return value)
03:26
<&ToxicFrog>
It's called by calling StartQuest in another script and then on the next frame the quest script fires, does its thing, and calls StopQuest.
03:26
<&ToxicFrog>
Have I mentioned that TES modding is a gigantic clusterfuck?
03:28
<@Reiv>
Good heavens
03:28
<@Reiv>
Well, now you know how to make a sixth portal though, right~
03:28
<@Reiv>
(Or, you know, run screaming)
03:29
<&ToxicFrog>
Er? I've always known how, I've just also always known that it would be a colossal pain in the ass
03:29
<&ToxicFrog>
Less so on the code side once I'm done this refactoring, but it still requires me to at minimum get out a model and texture editor
03:29
<&ToxicFrog>
which are *not* part of the TESCS, I'd have to download them separately from...somewhere
03:30
<@Reiv>
... fun
03:30
<&ToxicFrog>
Assuming NIF is even an editable format and not the output of a model compiler, which I'm not 100% sure on
03:34
<&ToxicFrog>
Ok, looking at ptsWatch
03:35
<&ToxicFrog>
I think what it's doing is constantly scanning to see if the player is within 10k units of one of the portal quest markers
03:35
<&ToxicFrog>
And if so it calls moveTo and setPos to move the portal to the exact location of the marker
03:36
<&ToxicFrog>
Which makes no sense, because the portal is already moved to the location of the marker when the player casts the spell, in ptsOpenPortal__
03:39
<~Vornicus>
perhaps it gets unloaded if you're too far away?
03:39
<&ToxicFrog>
It shouldn't, because the quest holds a ref to it, and even if it did, why would that matter?
03:40
<&ToxicFrog>
...the ptShadow is a rat
03:41
<&ToxicFrog>
There are ten of them in the blueroom, for no apparent reason
03:41
<&ToxicFrog>
Oh, they're referenced from the portal activation script! Let's take a look.
03:44
<~Vornicus>
I don't know
03:45
<~Vornicus>
I'm not too up on Oblivion.
03:45
<~Vornicus>
But for instance, in Mario 64, if you walk too far away from the spawn point of a goomba trio, they disappear and then when you get close again they reappear with their state reset
03:48
<&ToxicFrog>
So, in TES4, stuff gets unloaded when far away but its state is preserved
03:48
<&ToxicFrog>
Within certain limits, but those limits include positioning information for statics
03:56
<&ToxicFrog>
...
03:56
<&ToxicFrog>
The rats are the quest markers
03:56
<&ToxicFrog>
You can't just place a quest marker wherever, so it has ten invisible, intangible, lobotomized rats it uses instead
03:57
<&ToxicFrog>
I wonder if this is why ptsWatch exists; if something moves the rats it needs to make sure the markers still match up with the visible portals
03:58
<@Reiv>
... why does it use /rats/
04:00
<&ToxicFrog>
They're small.
04:12
<@Reiv>
oh, huh, you know that's kind of pretty intelligible. Carry on!
05:11 Derakon is now known as Derakon[AFK]
05:22 Alek [Alek@Nightstar-cltq0r.il.comcast.net] has quit [Ping timeout: 121 seconds]
05:25 Alek [Alek@Nightstar-cltq0r.il.comcast.net] has joined #code
05:25 mode/#code [+o Alek] by ChanServ
06:00 LadyOfLight [catalyst@Nightstar-nharc3.dab.02.net] has joined #code
07:01 Alek [Alek@Nightstar-cltq0r.il.comcast.net] has quit [Ping timeout: 121 seconds]
07:04 Alek [Alek@Nightstar-cltq0r.il.comcast.net] has joined #code
07:05 mode/#code [+o Alek] by ChanServ
07:28 AverageJoe [evil1@Nightstar-lc3.hbj.189.210.IP] has joined #code
07:31 AverageJoe [evil1@Nightstar-lc3.hbj.189.210.IP] has quit [[NS] Quit: Leaving]
08:24 * gnolam blerghs.
08:24 * gnolam is in a mazy of twisty little corner cases, all alike.
08:27
<~Vornicus>
if they were all alike they wouldn't be terribly corner
08:31
< LadyOfLight>
Alike in impact but not detail?
09:00 Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Connection closed]
09:01 Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
09:01 mode/#code [+o Syloq] by ChanServ
09:20 macdjord is now known as macdjord|slep
09:40 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Operation timed out]
10:22
<@gnolam>
A gazillion permutations of the-same-thing-really that are juuust different enough that you can't handle them cleanly.
10:41
<@TheWatcher>
>.<
10:44
< LadyOfLight>
You just defined the language I'm attempting to parse quite succinctly
11:52 Kindamoody[zZz] is now known as Kindamoody
12:12 LadyOfLight` [catalyst@Nightstar-4ahv6k.dab.02.net] has joined #code
12:15 LadyOfLight [catalyst@Nightstar-nharc3.dab.02.net] has quit [Ping timeout: 121 seconds]
12:50 LadyOfLight` is now known as LadyOfLight
13:29
<@Pi>
Justt lovely: https://twitter.com/puffnfresh/status/832037599355105280
15:39 LadyOfLight [catalyst@Nightstar-4ahv6k.dab.02.net] has quit [[NS] Quit: Bye]
16:26 LadyOfLight [catalyst@Nightstar-4ahv6k.dab.02.net] has joined #code
16:26
< LadyOfLight>
Dammit, C switch fallthrough behaviour
16:38 McMartin [mcmartin@Nightstar-rpcdbf.sntcca.sbcglobal.net] has quit [Ping timeout: 121 seconds]
18:42 LadyOfLight` [catalyst@Nightstar-874ro9.dab.02.net] has joined #code
18:45 LadyOfLight [catalyst@Nightstar-4ahv6k.dab.02.net] has quit [Ping timeout: 121 seconds]
19:10 LadyOfLight [catalyst@Nightstar-m2jb2n.dab.02.net] has joined #code
19:11 LadyOfLight` [catalyst@Nightstar-874ro9.dab.02.net] has quit [Ping timeout: 121 seconds]
19:14 LadyOfLight` [catalyst@Nightstar-u1qndt.dab.02.net] has joined #code
19:16 LadyOfLight [catalyst@Nightstar-m2jb2n.dab.02.net] has quit [Ping timeout: 121 seconds]
19:28 LadyOfLight [catalyst@Nightstar-bt5k4h.81.in-addr.arpa] has joined #code
20:34 Alek [Alek@Nightstar-cltq0r.il.comcast.net] has quit [Ping timeout: 121 seconds]
20:35 LadyOfLight` [catalyst@Nightstar-u1qndt.dab.02.net] has quit [Ping timeout: 121 seconds]
20:37 Alek [Alek@Nightstar-cltq0r.il.comcast.net] has joined #code
20:37 mode/#code [+o Alek] by ChanServ
20:47
<@celticminstrel>
Oh wow. I just discovered Firefox lets you mute tabs that insist on playing background music. I mean, it doesn't really matter for me since I disabled autoplay, but it's still a great idea.
20:53
<@Alek>
yep!
20:59 ErikMesoy [Erik@Nightstar-hq72t5.customer.cdi.no] has quit [Ping timeout: 121 seconds]
21:00 ErikMesoy [Erik@Nightstar-hq72t5.customer.cdi.no] has joined #code
21:23
<@celticminstrel>
Still probably gonna switch away from Firefox as soon as I can get a new computer, though.
21:29
<@Tamber>
https://twitter.com/_Ninji/status/832336744959922177
21:42
< LadyOfLight>
checks out
21:49 LadyOfLight [catalyst@Nightstar-bt5k4h.81.in-addr.arpa] has quit [[NS] Quit: Leaving]
22:07 * TheWatcher finally, finally thinks he's cracked a problem he's been stewing on for nearly two years
22:08
<@TheWatcher>
Now I just need to write the code to see if it actually works...
22:13 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code
22:13 mode/#code [+qo Vornicus Vornicus] by ChanServ
23:45 LadyOfLight [catalyst@Nightstar-07ra9n.dab.02.net] has joined #code
23:52 Kindamoody is now known as Kindamoody[zZz]
--- Log closed Fri Feb 17 00:00:28 2017
code logs -> 2017 -> Thu, 16 Feb 2017< code.20170215.log - code.20170217.log >

[ Latest log file ]