Fixes blind AI (lack of power) staying blind if transfered to a mech or a card.
Fixes magboots action button icon not updating when toggling the boots on.
Fixes Area teleport spells not having a cancel button when choosing the destination area.
Fixes spell action button not being removed when the spell is refunded.
Fixes revenant spell action button icons not being updated when the revenant is inhibited by a null rod.
Wizard events that spare the wizard should now properly spare apprentices too.
Moves renaming as an apprentice to the end of the spawn proc because the input prompt stops various important things (including the sound meant to inform people they got apprentice) from happening until after it's dealt with.
Restores the "+" for positive quality items in RPG loot. The reason this was changed was already fixed, it just was mistakenly never put back.
Instances where the game would give special treatment to MODE players will instead check to see if a player's assigned_role (job) matches their special_role (antag status). All antags that start off station (as well as ninjas for some weird reason) were affected.
Fixes#8743
Players who would otherwise qualify to play as an implanted job will spawn as the most wanted not implanted job they qualify for if they are an onstation antagonist. If they don't qualify for any job in this way depending on preferences they will either spawn as an assistant or a random job (which also makes sure they don't end up in an incompatible job).
Note this doesn't impact late join antagonists or mulligan antagonists. Roundstart only.
A generic check for antags now exists in check_finished, and overrides a lot of checks in specific modes. Specific checks are still needed if you have special means of determining antag viability (blob cores), or things to do when specific antags die (summon events).
In situations where mulligans are on but fail, the round will usually lurch on as "extended" but in wizard/malf/blob/ragin mages the round will end then and there. This mirrors current behavior.
Config settings are fully customizable and for the most part defaults mirror existing behaviors:
Revolution, Shadowling, Gang, Ragin Mages and Monkey are noncontinuous and will end with the death of all antagonists.
* There is a change here in shadowling in that rounds with living thralls but no living shadowlings will continue until the thralls are delt with, as they can still raise their dead master.
* Abductors not ending with the death of all ayyliens if there are still probe victims around is likewise a change. If the dev of abduction would rather have it default the other way, we can do that.
* Monkey being noncontinuous is a change, but given how monkey mode works, it really only makes sense.
All modes that are continous use the mulligan system by default, remember that this will only come into effect if EVERY antagonist dies, so modes with many antagonists are very likely to only mulligan extremely rarely because if even one isn't slaughtered and is instead brigged or otherwise neutralized nonfatally the mulligan will never come. A nice little bonus for security not to kill everyone!
Fixes a bug where shuttle stranding could occur in continous rev modes (not something on by default)
Probably buggy as hell in initial commit. Please no quick merge
Makes another set of config options for which rounds types, if any, use the midround antagonist (mulligan) system. Keep in mind this is by definition a subset of round with continuous set. Again this feature is only present for the roundtypes where I KNOW it works properly, other modes can't use midround antags.
The check antagonist screen will show how the game will behave when all the antagonists die, and it can be changed on the fly by admins, the four possible states are:
End on antagonist death (noncontinuous rounds)
Continue if antagonists die (unsupported continuous by default round)
Continue if antagonists die, creating replacement antagonists (continuous, using midround antags)
Continue if antagonists die, not creating new antagonists (continuous, not using midround antags)
When rounds prepare to mulligan admins will additionally get the option to just keep the round going without any automatically created antags in case they want to run their own shinanagans instead. They can also as before choose to end the round.
Shuffles some flags around that should hopefully prevent round_converted() from running more than once. It's not a huge crisis if it does because late join antag is self capping, but still, not intended behavoir!
EXTENDED
TRAITOR
CHANGELING
DOUBLE AGENTS
TRAITORLING
based on the game probabilities set through the config.
The round will not convert if more than 30% of the players are dead (round immediatly ends) or if the shuttle is beyond the point of no return (the round ends normally).
Adds the CONTINIOUS_ROUND_BLOB config
The huds won't be activated when there's just one wizard, but when another magic user is brought in the huds will appear for both of them to allow for easy identification in the face of rampant mindswaps and/or identity shinanagans and/or getting turned into a cow by a staff of change.
The huds are on by default in ragin' mages.
uplink_welcome was actually used as a greeting text from uplinks, now they'll always show "Syndicate Uplink Console:". The removed strings weren't nothing important, actually, with the addition of the uplinks in cargo, you were able to metagame the ongoing gamemode.
Fixes issue #119
Transferred all the different colours of under clothes and shoes to obj/item/clothing/under/colour/XXX and obj/item/clothing/shoes/sneakers/XXX
Added two extra options to the spawn menu of the game panel, clothing and food.
Works pretty well. If it can't GC something, it'll just del() it and be done.
Speed is amazing, holy shit.
New procs you should be aware of:
qdel(atom/movable) - sets up an object for garbage collection. Call this rather than del(atom/movable).
atom/movable/Destroy() - called right before the object is GC'd, so it still has a loc. Also called if the object is del()'d.
new controller - garbage.dm has all the details on this. Basically it nulls all references on GC'd objects and force del() them if necessary.
Generally speaking, objects should use Destroy() for behavior prior to deletion rather than Del(). You should also always call the parent so the object gets the right gc_destroyed var set.
ISSUES:
Tries to GC mobs atm. This actually works for new players, not so much for humans/monkies/simple_animals/anything. I'm guessing it needs to clear out their mind and HUD and maybe other things.
Gibbing is really bugged. It works, but the overlays just sit there for awhile and ugh. I'm very tempted just to del() mob/living and mob/camera and call it a day.
qdel() equipment doesn't unequip the item.
Pipes don't generally GC correctly. Debugging suggests they get referenced in many pipenets and that isn't cleared properly. However some do work fine. Need assistance here.
Bots don't GC, probably in the radio controller.
Lots of other shit doesn't GC but it's hard to find them because of the pipe spam.
I think I'm calling Destroy() twice by accident.
- Construct spells are an exception.
- Spells are transferred whenever a mind is transferred: cloning, pod cloning, borging, staff of changing.
- Spells are not transferred when you create a new mind for a new mob: soul stones, golems, respawns.
- To my surprise, this did not fix the issue where a mind-swapped wizard loses their spells when their original body is destroyed. I do not know why this happens.
- Non-human mobs can't use spells by default. Varedit spell.human_req to do that.
Currently, if the config option for continuous wizard rounds is off the round will end immediately following the death of the wizard.
With this change after the death of the wizard the game will additionally check to see if the wizard has made any antagonists that are still alive to do things after his death. The round won't end unless these antags don't exist or have all already died as well.
This allows for summon guns/magics survivors to not get blueballed out of antag round because the wizard died quickly. Additionally this allows wizards who made apprentices the chance for them to get the wizard alive again (the new healing apprentice has a staff that can raise the dead who is uniquely suited to this task.) Additionally additionally this allows for a mindswap wizard to not get instantly meta'd out when the round doesn't end when the wizard's head is caved it WITHOUT forcing extended on people.
This change was originally part of the Magic Mania pull, but was removed and placed in its own PR on request.