Files
Bubberstation/code/genesis_call.dme
Lucy 93713be0be Move /world/Genesis to the top of the dme (#90255)
## About The Pull Request

okay so genesis actually needs to be first.

i did a bit of an experiment to see exactly what's called first.

`/world/proc/genesis_test` was just a `world.log << "[x]"` wrapper in
this test

top of the dme:
```dm
/world/proc/_a2()
    var/static/_ = world.genesis_test("a2")

/world/proc/_z2()
    var/static/_ = world.genesis_test("z2")
```

bottom of the dme:
```dm
/world/proc/_a1()
    var/static/_ = world.genesis_test("a1")

/world/proc/_z1()
    var/static/_ = world.genesis_test("z1")
```

here's the output:
```
Welcome BYOND! (5.0 Public Version 516.1659)
genesis testa2
genesis testz2
genesis testa1
genesis testz1
World loaded at 01:38:36!
```

so yeah, seems being included FIRST is correct.
to avoid any sort of potential accidental sorting/moving/priority
shenanigans, genesis itself is now in a `.dme` file, that is included
just below the header of the dme, before `// BEGIN_INTERNALS`

## Changelog

No user-facing changes. Or even noticeable by most coders.
2025-03-27 03:01:04 +00:00

53 lines
1.5 KiB
Plaintext

/*
You look around.
There is nothing but naught about you.
You've come to the end of the world.
You get a feeling that you really shouldn't be here.
Ever.
But with all ends come beginnings.
As you turn to leave, you spot it out of the corner of your eye.
Your eye widen in wonder as you look upon the the legendary treasure.
After all these years of pouring through shitcode
your endevours have brought you to...
*/
/**
* THE GENESIS CALL
*
* THE VERY FIRST LINE OF DM CODE TO EXECUTE
* Ong this must be done before !!!EVERYTHING!!! else
* NO IFS ANDS OR BUTS
* it's a hack, not an example of any sort, and DEFINITELY should NOT be emulated
* IT JUST HAS TO BE FIRST!!!!!!
* If you want to do something in the initialization pipeline
* FIRST RTFM IN /code/game/world.dm
* AND THEN NEVER RETURN TO THIS PLACE
*
*
*
* If you're still here, here's an explanation:
* BYOND loves to tell you about its loving spouse /global
* But it's actually having a sexy an affair with /static
* Specifically statics in procs
* Priority is given to these lines of code in REVERSE order of declaration in the .dme
* Which is why this file has a funky name
* So this is what we use to call world.Genesis()
* It's a nameless, no-op function, because it does absolutely nothing
* It exists to hold a static var which is initialized to null
* It's on /world to hide it from reflection
* Painful right? Good, now you share my suffering
* Please lock the door on your way out
*/
/world/proc/_()
var/static/_ = world.Genesis()