The FillHeadPosition proc makes sure there will almost always be at least one head by grabbing a list of everyone who has the job set to high, if no one has it set to high it will check the next job until it either gets at least one player or runs out of jobs. If it has at least one player it picks a random player out of the list then terminates as we now have one head. If we ran out of jobs we now check the jobs again using the medium setting. If that does not work then we use low.
After this proc has been ran you likely have one head, if wanted it could easily force a head by checking the return however that was deemed unnecessary. Next the code runs nearly the exact same code but for AI checking. After that it proceeds with the standard job selection code, the rest of the heads are in here.
tl;dr It was working fine, you will end up with at least one head so long as a single player has a head set above never. Using this for all heads overrides the entire point of having a low/med/high for heads and will cause low pop servers to have a very high head to crew ratio. Also please read over and try to understand what code is doing and why before you start messing with it.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4297 316c924e-a436-60f5-8080-3fe189b3f50e
Well, hopefully a fix. I've tested it locally to make sure it still actually assigns jobs without any problems, and it should work but we wont know for sure until we get more people trying it out.
Thanks to Tonberrytoby for correcting me and pretty much pinpointing the source of the problem.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4296 316c924e-a436-60f5-8080-3fe189b3f50e
-Added the unused alien resin door. Only aliens can open it, it will also auto-close after 10 seconds.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4294 316c924e-a436-60f5-8080-3fe189b3f50e
-Made inhands for hardsuit helmets
-Due to feedback, the Nuke Op pinpointer will change modes on its own when the nuke is armed/disarmed. (As such, the toggle verb was removed) This should also help with the issue of both modes trying to run at the same time.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4290 316c924e-a436-60f5-8080-3fe189b3f50e
- - If a breath is successful, meaning it had enough oxygen, another breath will be taken in 4 ticks. This is the same as it was before. (The presence of other gases will damage you, but it will not make the breath not count as a 'successful' one)
- - If a breath is not successful, you will not wait another 4 ticks for another breath! You will try to breathe again in the next tick. Every time a breath is deemed unsuccessful, it will cause damage to you. If there is no oxygen on the tile, it will cause 3 oxyloss damage to you, if there is some oxygen, but not enough, it will do a percentage of that. The amount of damage is the same as before, but it's dealt as 3 per tick instead of 12 per four ticks. The reason for this is to make the 'slowly passing out' effects more visible, as the overlay changes for every 5 points of oxy damage.
- - The healing effect of an area to oxyloss remains at 5 points per FOUR ticks, as it's only applied on successful breaths, which then don't try to breathe again for another 4 ticks.
- - You still pass out at 50 oxygen damage.
- The dark image overlay you have when blind or in critical condition now has mouse opacity set to 0, which means all mouse clicks pass through. If this causes any problems - let me know, it is however needed as it otherwise prevents any clicks. So while you could see a small circle around you, you wouldn't be able to interact with anything in it.
Video: http://youtu.be/fJAU8Tppxi0
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4281 316c924e-a436-60f5-8080-3fe189b3f50e
- Changed the 'black overlay' you get when paralyzed, blind or in critical condition to include a small circle around you. It still 'blinks' once every 25 seconds or so.
- Added a flag BLOCK_GAS_SMOKE_EFFECT, which can be applied to masks, glasses and hats, which prevent gas smoke, which contains reagents, from having an effect on you. Currently only present for gas masks.
- Dramatically lowered the amount of damage you get per breath while in critical condition. Critical condition now lasts for about 5 minutes if nothing is causing you any additional harm. This in combination with the new black image overlay is an attempt at making doctors more willing to help. For one thing they'll have more time to get to you, for another you will get to see if they murder you before sending you to genetics.
- Added Cheridan's wooden chairs to code
- Added a action_button_name to all items, which defaults to null and contains the text which appears on the action button. If an action button exists, but this variable is not set, the text will default to 'Use [name]', name being the name of the item tied to the button.
- Fixed the problem which resulted in certain glasses types making you keep night vision abilities even after you took them off.
(Screenshot of black overlay: http://www.kamletos.si/blackimage4.png)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4280 316c924e-a436-60f5-8080-3fe189b3f50e
Also, Shades will be assigned a real name and original name upon creation, to prevent them from getting a random name when ghosted.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4278 316c924e-a436-60f5-8080-3fe189b3f50e
-As a result, they also have a button that toggles their headset between station-bounced and subspace transmission. While they are transmitting over subspace, they will be using TComms and have access to department channels. While transmitting over the station-bounced system, they cannot access department channels. Simple
-Changed binary chat for silicon mobs to be ':b' for both consistency and to make the security channel useable for borgs.
-To insert/remove keys, you need to have the cover open and the cell in place, use a key to insert and use a screwdriver to remove keys (Having the cell out will expose the wires when a screwdriver is used)
-Cleaned up mech_fabricator.dm a bit
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4277 316c924e-a436-60f5-8080-3fe189b3f50e
There were no checks in re-enter corpse for anyone currently controlling the corpse. Meaning any attached client was left mobless and hence garbage collected (DCed).
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4276 316c924e-a436-60f5-8080-3fe189b3f50e
Cleaned up a bit of the broadcasting code.
Made everything use turf's z levels as I find them more reliable, sometimes an item's loc can be null or the z level can be entirely wrong. I hope the high usage of get_turf() will not create problems.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4275 316c924e-a436-60f5-8080-3fe189b3f50e
chemical_reactions_list for storing /datum/chemical_reaction so we don't have to spawn them all everytime two reagents get mixed together.
chemical_reagents_list, unlike reactions it is indexed by id so we can have fast lookup of reagent data. Again, without spawning everytype of that datum everytime we add a reagent to something
It was making all subtypes of this datum everytime it filled any reagent_container with a single reagent. Considering how many reagent containers there are that's a lot of wastage. Now it only does this once, thank goodness.
Unfortunately I had to stick the initialisation inside the datum/reagents holder object's New() proc, since New() for map ojects gets called before world/New()
Fixed clean_blood() yet again *sigh*. It's probably as good as I'm gonna get it without changing loadsa stuff needlessly.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4273 316c924e-a436-60f5-8080-3fe189b3f50e
The hub will no longer report admins who are stealthminning.
Added a server byond_version check. All it does is tell you if your byond_version is below RECOMMENDED_VERSION and encourages you to update BYOND.
Underwear and bag lists are now a single global list rather than creating the same list for every new player.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4268 316c924e-a436-60f5-8080-3fe189b3f50e
It is not in effect yet (minimum version is v0 :P). However, <b>everyone must update to at least byond version 494 by the end of the month, or they may find themselves unable to connect</b>.
If anyone has a legitimate reason for why they need to use an older version (linux, language-support etc) please get in touch and we'll work something out.
Why is this even necessary? Encouraging the payerbase to keep up-to-date BYOND clients will allow us to implement newer BYOND features reliably. It also makes sure all clients are behaving similarly.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4263 316c924e-a436-60f5-8080-3fe189b3f50e
Notify me if any issues with them, or any simple_animal arise.
Fixed a few issues with space bears.
Slightly improved teleporter code, and did a few misc runtime fixes.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4258 316c924e-a436-60f5-8080-3fe189b3f50e
It needs to be kept as up-to-date as possible, so it autoupdates every 6+ hours or so to ensure the database is relatively up-to-date.
Like the previous commit, I'd only really recommend it if the other stuff isn't getting the job done.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4257 316c924e-a436-60f5-8080-3fe189b3f50e
-Sorted the dispensable chemicals list alphabetically.
-Made the chemical dispenser use process() instead of calling itself in a spawn()
-Made the receiver and broadcaster easier to build (less parts)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4256 316c924e-a436-60f5-8080-3fe189b3f50e
It's not quite as well done as I'd like it but it works and can be helpful.
IP bans are kinda lame so please only use them for multikeyers/extreme-douchebags and such.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4255 316c924e-a436-60f5-8080-3fe189b3f50e
-equip_to_appropriate_slot will now return whether it's successful or not.
-Fixed the receivers and broadcasters being the wrong preset.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4250 316c924e-a436-60f5-8080-3fe189b3f50e
-AI Upload Foyer is now Secure Tech Access, and the outer door only requires Bridge access
-Attached to it are two new rooms: The messaging server room and the communications relay.
-The comms relay room runs off its own SMES unit like the AI, so it won't be affected by powersinks
-Reduced the number of recievers/broadcasters. Only presets now. Giacom will finish them. He also needs to fix the password paper not generating.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4246 316c924e-a436-60f5-8080-3fe189b3f50e
-Broadcasters, receivers and relays do not produce heat anymore.
-The station/DJ station's relays only need a single broadcaster/receiver now.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4245 316c924e-a436-60f5-8080-3fe189b3f50e
-Added in the proper list stuff for changeling stasis
-Added a verb to the debug list (Game Admin+) to check the mob lists instead of requiring the item (Works the same way)
Fixes Issue 708
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4240 316c924e-a436-60f5-8080-3fe189b3f50e
- Robots being deleted passed the mmi object to the mob list instead of the mmi's brainmob
- DNA injectors were checking for a user, but not for a mob.
- DNA computers would try to modify the dna of a mob that no longer existed.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4239 316c924e-a436-60f5-8080-3fe189b3f50e
Basically if a mob is alive, it'll run a set of procs and if it's dead, it'll skip them.
I've also done a couple minor tweaks to metroids including minimal optimization and moving their targetting stuff out of life.dm() and into handle_targets(). That part isnt really necessary but it helps clean up the life() proc.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4238 316c924e-a436-60f5-8080-3fe189b3f50e