Added two new materials, Titanium and plastitanium. Titanium is naturally occuring, and plastitanium is an alloy made of plasma and titanium.
These materials can be used to build shuttle walls and floors, though this serves no current purpose.
Before you yell "SNOWFLAKE" about the materials, I have definite planned purposes for them, not to mention what else they could be potentially used for (mechs, R&D, etc.)
You can use titanium to make white shuttle walls that smooth (like the ones of the escape shuttle), and plastitanium to make the grey syndie shuttle walls. You can also make floor tiles out of each material for the different shuttle floors. This PR itself doesn't change any of the paths on the map to use smoothed shuttlewalls and I'll save that for a seperate PR.
Also this PR makes ORM code better and allows people to easily add new alloys
Sprites by WJ
This PR ports pockets (from Animus Green) and adds them to some clothing.
Shoes that support storing items now use pockets system.
Some hats have 1 small pocket.
Detective's hat spawns with a flask in it.
Clown's mask has a single tiny top-secret pocket. Honk!
This PR also includes two or three path fixes. It also fixes internal storages (pockets, storage implant) having less "max depth" than external ones.
* Pinpointer refactor
* Gives operatives the proper pinpointers
* Improves operative and AI tracking a bit
* Bashing people over minor mistakes is the new thing
* Replaces some more strings with defines
* Makes operative tracking actually functional
* Improves operative tracking
* Conflicts I
* Conflicts III
* Conflicts I
* Conflicts III
* Adds two new tracking modes
* Fixes a grammar error
Added dextrous guardians to the code, able to hold and use items and store a single item within themselves.
Dextrous guardians do low damage on punches, have medium damage resist, and recalling or leashing will force them to drop any items in their hands.
* Tiles are now (mostly) pooled objects
Floors no longer have a builtin_tile, but instead use PoolOrNew().
Also added a do-nothing SSpool so you can inspect the global pool.
* Entries for time keeping
* MORE STATISTICS
* Stat tracking, auto filling
* Code review I
* Code review II
* Code review III
🆑
add: When a player uses a communication console to ask for the codes to
the self destruct, for better or for worse, the admins can set them with
a single click. Whether the admins a) click the button b) actually give
the random person the codes, is another thing entirely.
/🆑
- Also tidied up prayer code to use some new admin defines
- Adds the random_nukecode() proc, which returns a random numeric string
between "00000" and "99999". No more requiring it to be at least 10000,
we have the power of ZERO PADDING.
* Instant Runoff Voting!
This adds the game code required for voting IRV style
* Fixes votes not working for non-admins
* spans and databases
* this is a silly commit, you should never go here again.
* That explains why some people couldn't drag until they re-opened the page.
* Prevent window focus fuckary with voting.
* Fireball Spell Changes
- Changes the fireball spell to be click-to-fire.
- Converted Devil and Wand fireballs as well.
- Moved some code to the /proc_holder level to work across the /alien
and /spell branches.
* Tweaks and Fixes
- Infernal Fireball is now a projectile and has the right explosion
values.
- Removed non-projectile spell versions of fireball, as they are unused
- Fixed fireball not seeking adjacent targets.
- Fixed incorrect bolding slashes.
* Fix
Fixes the fireball sometimes missing.
* Fixes and tweak
- Uses TRUE/FALSE defines instead of 0 and 1 for boolean variables.
- Ranged abilities now remove themselves tries to use an ability in a
disabled state. (Such as being knocked out)
- Define for the click cooldown.
* Adds cogscarabs to clock cult
* playstyle string
* info
* oh good going
* no static
* delay it eating all the metal
* scarab removal service
* cog
* ree
* error handling
* todo: languages = RATVAR
* isclockmob
* very large box
* faintly glowing eyes
🆑 coiax
rscadd: Due to budget cuts, the shuttle's hyperspace engines now create
a visual distortion at their destination, a few secons before arrival.
Crewmembers are encouraged to use these "ripples" as an indication of
where not to stand.
/🆑
- Adds a new layer RIPPLE_LAYER, above vines, below ghosts
- Ripples appear at 10 seconds (the engines online time) and fade in
from fully transparent to fully visible during that time.
* Pylons pulse cult floors when finished conversion
Once a cult pylon has converted everything it can, it then starts
picking random cult floors and pulsing them like they were just created.
Fixes#18539 by making it intended behaviour.
* Converts the wizard tiles into real cult tiles
I'm unhappy with the way revenants are right now, and my code for them is pretty unsatisfactory in comparison to what I know now. Although revenants will still fill the same role of just being spookier ghosts, they'll be a bit more passive - incapable, for instance, of giving diseases to people. The new revenants will be called umbras and will use vitae instead of essence.
Total change list:
Revenants have been renamed to umbras. Essence has been renamed to vitae. This may be temporary.
Umbra spawn events are now weighted higher and spawn an unoccupied umbra. Ghosts are alerted to the umbra's position and may interact with it to take control of it.
Umbras' health is not based on vitae but has a hard cap at 100.
Umbras have a passive vitae drain each tick, defaulting at 0.01. If the umbra runs out of vitae, they will die irrevocably. They also slowly regenerate health by doing this.
When an umbra dies, they leave behind umbral ashes that reform after one minute. They're difficult to see and can be scattered by activating them, although they also have high research levels if you're fast enough.
Harvesting vitae from critical targets no longer kills them. Harvesting a target in general prohibits them from being harvested until five minutes later, but they can be drained again after that.
EMPs revitalize umbras and give them hefty amounts of vitae due to their physical nature.
Umbras have four abilities: Toggle Nightvision, Discordant Whisper, Possess, and Thoughtsteal.
Toggle Nightvision is self-explanatory.
Discordant Whisper is identical to the original revenant's transmit.
Possess allows the umbra to slip into a human's body unnoticed. While in their body, umbras will slowly drain vitae from the human at a tiny rate - not enough to cause harm, but enough to induce adverse effects in the clueless human. These effects intensify over time and eventually lead to the umbra being forced out of their host.
Thoughtsteal paralyzes a living human for several seconds while the umbra steals their memories. After several seconds, the umbra copies the notes of the target's memories and turns invisible - the hapless victim is stunned for several seconds afterwards and can't be Thoughtstolen by the same umbra again. Umbras have an objective to steal the memories of 25% of the station's population.
Salt piles have been added, created by salt shaker or just by splashing salt. These piles will prevent an umbra from passing and reveal them briefly if they try.
Basically, they key difference between StonedMC and CarnMC is that when multiple ticks want to run at the same byond tick, we divvy up the tick between the subsystems, rather then allow one subsystem to hog it all.
The key difference between StonedMC and GoonPS is that we allow the subsystems to tell us how to divvy up the tick using flags and priority.
The new SS_ flags allows us to select behaviors that used to be piggybacked as side effects of dynamic wait or default but sometimes unneeded behavior.
Dynamic wait is 100% gone, lower priority and SS_BACKGROUND are better more refined ways of doing this when combined with MC_TICK_CHECK
I have by design never looked at the inners of goonPS, so this is all original code but I know it uses two loops because of comments by goon devs on reddit threads, that design didn't make sense before, but when I can tell a SS how much of a byond tick it is allowed to have, knowing how many need to run this tick is helpful I also know a bit more about how it works from piecing together comments in #vgstation.
Detailed list of changes:
Subsystems now have flags, allowing fine grain control over things like rather or not it processes, inits, rather it's wait is how long between runs (post run timing) or how long between starts, and rather or not late fires should cause the next fire to be earlier.
Mc now has two loops One loop handles queuing shit, one loop handles running shit.
MC now splits up tick allotment rather than first come first serve Subsystems can even request a bigger share using higher priorities. (It will even resume subsystems it paused if other subsystems hadn't used as much as it predicted they might need)
Default fps is now 20 This is related enough to the MC and it's a change that's really long since over due
All code oddities are most likely to be necessities to lower overhead on the mc since it runs every tick
Slime/Jelly people also gain a new "power" that forces their limbs to be eaten for jelly if the slimeperson is in threat of dying from a lack of jelly.
Slime/Jelly people can now be dismembered
New specflag: TOXINLOVER
Species with TOXINLOVER (Slime and Jelly people, as well as zombies) take inverse toxin damage, things that typically heal toxin damage will instead cause it and visa versa. Additionally this ties the mutant's blood level to these transactions, reaffirming the slime and jelly peoples vulnerability to antitoxin and the like, which had been lost in the blood rewrite