This commit first and foremost ports the -tg- atom pooling system, and
removes the old experimental system entirely.
Secondly, this PR modifies the qdel system to use a -tg- lookalike
"destroy hint" system, which means that individual objects can tell qdel
what to do with them beyond taking care of things they need to delete.
This ties into the atom pooling system via a new hint define,
QDEL_HINT_PUTINPOOL, which will place the atom in the pool instead of
deleting it as per standard.
Emitter beams are now fully pooled.
Qdel now has semi-compatibility with all datum types, however it is not
the same as -tg-'s "Queue everything!" system. It simply passes it through
the GC immediately and adds it to the "hard del" lists. This means that
reagents can be qdel'ed, but there is no purpose as of yet, as it is more
or less the same as just deleting them, with the added effect of adding
logs of them being deleted to the garbage collector.
Turns out timed alerts, which are ONLY used by Make Wizard, were broken
ever since they were added... 11 months ago. Now they work, so Make
Wizard works.
-tg-'s shuffle proc can handle associative and unassociative lists,
whereas ours could only handle unassociative. This caused the holiday
controller to break.
add_logs will now respect the admin argument, which determines whether
the attack goes into the file log and is shown to admins. Previously,
this argument didn't exist in our codebase, and ported add_logs calls
that used it would runtime.
This commit overhauls the global.dm file, global_lists.dm file, and
defines.dm file into a tree system based on -tg-.
All defines have been split and distributed in code/__DEFINES/
Everything from global.dm and global_lists.dm has been split and
distributed in code/_globalvars
The _compile_options.dm file contains anything that absolutely, 100%, must
be initialized before world.dm.
Name definitions have been moved to code/_globalvars/lists/names.dm.
Other things to note
- All instances of something.z == 2/1/3/5 have been replaced with easily
configurable defines, labeled ZLEVEL_. The map include file can
override these by defining custom ones in it's file, as it is at the
top of the tree.
This commit fixes the following things:
- Get_Area() now properly returns the area
- Events will no longer runtime upon being manually triggered by an admin
- The prison break event works again
- Grabbing will no longer runtime (May result in people with pixel
offsets from a grab being stuck, better than a runtime)
Largely a port of https://github.com/Baystation12/Baystation12/pull/8038
(Credit to Zuhayr for his hard work on botany)
Breakdown of the port:
- Plant traits have been expanded drastically
- You want a bio-luminescent tomato that explodes into a cloud of acid
when thrown or stepped on? Or maybe a corn vine that entangles people
and injects them with mannitol and it's harvests that can be used as a
battery? Totally possible.
- Adds new random seeds! Replaces the egg-plant seed in the exotic seeds
crate from cargo with 2 of these.
- Literally random, they have randomly generated stats, chemicals, and
traits. Great for researching, and/or wasting cargo's supply points.
- Plant analyzers can now print off the last scan they recorded, meaning
you can distribute copies of the report to validate your claims of
having the dankest weed on station.
- Potatoes, carrots, watermelons, soybeans, and pumpkins can all be
sliced/diced/carved with ANY sharp object, such as knives, hatchets,
glass shards, and e-swords.
- This should give the chef a bit more room to make it look like he
actually is doing the work by slicing up fries by hand. The processor
still also works.
- New reagent: Wood Pulp
- Currently has no use in recipes, but any plant with this reagent in it
can be chopped into planks with a hatchet. Did someone order some
Ambrosia Deus planks?
- Also, vines with woodpulp are dense. You have been warned.
Now onto the stuff I did in addition to the stuff from Bay.
- Fixed typos where plasma was mistakenly called "phoron" in the port.
(Sorry bay)
- Replaced bay's botany mutation chances with our tiered mutation
system.
- Re-re-added tobacco, space tobacco, tea aspera, tea astra, coffee
arabica, and coffee robusta.
- Re-enabled the rolling of joints
- Made it possible to hand-roll cigarettes from tobacco / space tobacco.
(A requested / promised addition)
- Just like with joints, it will inherit any chems in the tobacco, has
the same reagent capacity as a joint, but looks and smokes like a cig
(lasts as long as the cigarettes) with a different name/description to
differentiate it from pre-made cigs.
- Corn can now be juiced in the grinder, in addition to grinding it.
Grinding corn will result in it's contained reagents (like corn starch),
while juicing corn will result in corn oil.
- Re-added the additional plant analyzer information when scanning trays
(displays age, weed level, etc)
Also cleaned up the recipes_microwave.dm file, removing the commented
out recipes that were distributed to the other machines during the
Kitchen Overhaul. Shortens the file a bit and makes it more readable.
I probably forgot stuff, so I will add things as I remember them / they
get pointed out.
This commit ports the base system of LINDA from TG. This version of linda
is the original version, with none of -tg-'s fixes, rewrites, or other
such improvements attached.
The mob ignite system has been 100% removed, as LINDA does not support
this normally. It may be added back in when the improvements and refactors
to LINDA have been ported.
Stuff goes under types.
Types have procs.
Never have 500 lines of repeated code again.
I came very close to crying while editing this. You should appreciate
that.
----
This commit entirely reworks how placing things on walls work- Posters
have intentionally been left alone to reduce the amount of lines
changed. With this commit, wall-mounted objects are no longer snowflaked
into the wall file.
This moves the multiple lists of blacklisted hostile mobs
(as in, unsafe or intended for special use) into a single global
variable. This means that gold slime cores and dimensional tears
now use the same list of mobs, for simplicity.
This commit first adds a new helper proc labeled isAntag(), as well as
adding a check for antags for every instance of msg_admin_attack().
Goals of this commit:
- Make admin ATTACK: logs indicate if attacker is an antagonist.
Note; High probability of merge conflicts, 47 files changed.