As such, changelings can now be reported at round-end, even after gibbing. Resolves Issue 251
Changeling power proc_holders are now datums rather than objects.
Condensed all those changeling stings down a bit. This will make fixing issue 351 easier to fix
Replaced changeling fakedeath and a number of checks for the zombiepowder reagent with a bitflag: mob/var/status_flags & FAKEDEATH
setting the FAKEDEATH flag will make the mob appear dead in exactly the same way changeling parasting and parapens worked. I've updated changelings and zombiepowder to work with this flag.
Bug fixes for the staff of change. There was a type mismatch and I typo'd "alien" as "xeno" so xenos were not being randomly picked.
TODO:
changeling purchased verbs could probably be moved to mind/special_verbs. Likewise, other modular antag proc-holders can be merged with the changeling system using the same type of datum. (namely wizards)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4377 316c924e-a436-60f5-8080-3fe189b3f50e
As a result, cyborg death squads were also removed.
This also fixes meteors and space dust so that they properly take into account the borders of the map. Please do not hardcode numbers when we have defines in place.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4374 316c924e-a436-60f5-8080-3fe189b3f50e
The all-in-one reagent grinder now knows that the bartender's shaker is something that holds reagents, and not a reagent itself. Fixes issue 747.
Note: Chemistry paths in general are rather horrible, they really need re-working. I suspect other non-reagents are able to be placed into this grinder as a reagent instead of as a container.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4372 316c924e-a436-60f5-8080-3fe189b3f50e
- Syringe overlay layer is no longer above the blackout screen layer
Fixed issue 704
- Shades (and all simple animals) can no longer pick up paper bins/donut boxes with clickdragging (were there any other objects you could pick up with onmousedrop?)
Fixed issue 737
- Dead/unconscious cultists no longer count towards cultist count on rune use (such as sacrifice, nar-sie, etc)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4360 316c924e-a436-60f5-8080-3fe189b3f50e
Noticed the space worm icons were both in animal.dmi and critter.dmi, so deleted the extras in critter.dmi and set the space worm to use animal.dmi
Deleted the creatures othering.dmi and moved its icons into critter.dmi with the rest of the critter stuff. Who knows why it had its own.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4359 316c924e-a436-60f5-8080-3fe189b3f50e
Editing bans will now report the duration correctly.
Known issues:
The ban system looks like something my cat threw up.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4358 316c924e-a436-60f5-8080-3fe189b3f50e
Cause: Those min() and max() were being called unnecessarily and were skewing the sd_lumcount values.
Rebalanced darkness a little.
Possible issues: Lights seem to have a longer range now. which could possibly explain the increased cpu use of sd_lighting recently.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4356 316c924e-a436-60f5-8080-3fe189b3f50e
-Made all aliens use this when determining how much to recharge/heal.
-Deleted handle_enviroments which overshadow the base alien one.
-Made maxHealth actually do something. Every alien caste had their own updatehealth which did not use maxHealth, which was very stupid.
-Fixed an issue where a player could accidentally pick a breed of alien when typing. Larva will now have to use the evolve verb in order to evolve.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4353 316c924e-a436-60f5-8080-3fe189b3f50e
Replaced mob/var/original_name with datum/mind/var/name.
Halved the speak-chances of every simple-animal because that constant squeaking was insufferable.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4346 316c924e-a436-60f5-8080-3fe189b3f50e
Minds part2 - Carn loses her mind.
The way datum/mind stuff works has been changed a lot. I really can't explain everything. If you have any questions it'd just be easier if you leave a comment or ask me in coderbus.
Generally, minds now represent IC characters rather than following a client around constantly. Minds can change owners, mobs, (names WIP).
Technical babble:
The var/current and var/original variables of the mind datum must always be of type mob/living (or null). Please do not mind.transfer_to(ghost_mob). If you want to ghost somebody use ghostize()! It will do all the technical stuff for you.
mob/dead/observer/var/corpse was removed. mob/dead/observer/var/mind is now used as a reference to the last mind the player had (so respawning code has something to reference), but also because mind.current is a far more useful way of tracking a corpse. If somebody triggers a mind.transfer_to() call on your corpse, your mind will be tranfered to another mob/living or something...that will then be considered your corpse. This could allow for more interesting mind_transfers. For instance, the "raise corpse" rune ghostizes any player in the corpse to be raised and selectes a random dead player to take possesion of their character! The person possesing them will have all of their memories, objectives, etc. The poor guy who was originally the owner cannot re-enter body if there is another player in his body...but if that player is ghosted he can once again return. Exorcisms anybody?
Changes to cloning and hydroponics. I will likely have to rework these later as they're hacky as hell right now.
A lot of stuff is now handled by Login/Logout rather than in hundreds of different places. One such example, mind datums get their variables updated at Login and Logout.
Fixed a few minor bugs. I'll update the issues manually in a bit because I literally cannot think atm.
TL;DR guide:
-If you want to make somebody a ghost use ghostize(). Or you will need to find a doctor to stitch your bits back on. :)
-You don't have to worry about making minds. Simply doing key="carnwennan" or whatever will either: A) make a new mind and initialise it if there isn't one or B) take possession of the mind currently attached to the mob.
-It's safe to transfer a mind even if a key isn't in-body (e.g. they are ghosted/admin-observing etc!) Minds have an active variable which tracks whether they are currently synced with a key. This is to avoid dragging ghosts back into their bodies when say, a wizard mind_transfers them.
-Transferring a mind whilst var/active=1 will cause the following: mob.key = mind.key. So no need to do that separately (in fact you'll lag things if you do, so don't)
-If you do want to initialize a mind manually, say if you don't have a client to login to the mob yet, simply do new_mob.mind_initialize(). Simple! When someody is logged into that mob they will take ownership of the mind and it will sync up.
NOTE: a lot is probably broken since this is a pretty massive change. Please let me know asap (with actual info! Shouting at me, "IT BORKED HALP", doesn't help)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4342 316c924e-a436-60f5-8080-3fe189b3f50e
Split a bunch of procs in helpers.dm into new files:
-helper_list
-helper_text
-helper_type2type
These files are sorted into groups internally. Hopefully people will make it easier for people to find useful procs.
I've added comments to a good chunk of these procs as well explaining what they do.
I've removed a few unused or unnecessary procs and fixed up a couple that were not working as intended.
I've also moved a mob proc 'get_equipped_items()' into mob/inventory.
All of the non-helper.dm files (besides mob/inventory.dm) are the result of fixing duplicate procs. It seems that there used to be text searching procs where one was case sensitive and one was not, and at some point someone removed the case-sensitivity of the case sensitive procs. I've re-added the case-sensitivity and as a result, I've had to go through extra files and ensure that they were calling the proper proc.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4341 316c924e-a436-60f5-8080-3fe189b3f50e
-Fixed issue 742, the transfer will now use the absolute value.
-Fixed issue 743, someone forgot to change the label and the amount it takes. It was originally 200 but it was changed to 50.
Cleaned up alien/life.dm by removing unneeded code.
Made it so weeds don't heal you so god damn much.
Buffed eating people to heal you, now that nutriments are not handled.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4334 316c924e-a436-60f5-8080-3fe189b3f50e
-Made the telecommunication server and NTSL broadcast more robust so that having a HUB is an option, if someone decides to create their own network.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4325 316c924e-a436-60f5-8080-3fe189b3f50e
-Increased brightness of light bulbs to 4 (up from 3). This is so I wouldn't have to spam a whole bunch of light bulbs in darker areas to get the same mood it had before the darkness update. And since I don't need them any more, I've removed a bunch of light bulbs I added in in an earlier commit.
-Added a maint door to the Janitor's closet
-Map changes to library and medbay. Thanks, Dingus!
-Updated changelog
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4324 316c924e-a436-60f5-8080-3fe189b3f50e
This part focuses on:
-structuring the way silicon mobs initialise upon login (there was some hideous copypasta in Login() and New() which used spawn() to change the order of the calls so it was all jumbled up. I think I've got it sorted now.
-Borgs var/real_name was not initialising as "Cyborg". Meaning the name checks were kind of borked.
-Ghosts are now deleted at logout if they no longer have a key. This will stop unneeded ghosts being left lying around. It will not delete ghosts with keys assigned (so people can't respawn or anything). Removed all the del(ghost_ref) stuff I could find. Generally movign the key from a ghost should be the last thing you do as the ghost will be deleted by Logout. However I've put it in a spawn() to hopefully avoid coders accisentally using it in a way which causes runtimes.
-Fixed clone-plants spawning dud potato-people left, right and centre. They'll now dump seeds if it fails for whatever reason.
-Cultist and Rev status are removed at mob/living/silicon/Login() rather than having to be called on a special-case basis everywhere. This may not be necessary when this stuff is finished.
-Removed a bunch of :
-Commented mob/living/Login() with the rest of the antag-indicator code from cloning.dm and hydroponics.dm for any coders whom feel brave/suicidal to fix the related issues
Next on the agenda, replacing mob/var/original_name with datum/mind/var/name to fix the ticker runtimes
Then, fixing mind/proc/transfer_to(mob) once and for all. (There are issues with duplicate minds, role updates, inconsistent initialisation etc etc *yawn*
There's probably a few obscure bugs in there somewhere. Might want to hold off on the updates for a bit. Coderbus will likely spot them all by the end of the week.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4322 316c924e-a436-60f5-8080-3fe189b3f50e
-Fixed the issue with cookies not appearing mobs until they picked up something
-Now when you are in the process of suiciding, Life() will treat all breaths as failed and you will take more oxyloss than someone in crit that isn't suiciding (Instead of being in crit forever because you could still breathe just fine).
-Fixed a pretty dumb bug in human life, where you would be treated as dead at -100 health, but you didn't die until you hit -101. This mostly caused issues with oxyloss, because once you hit -100 you stopped breathing, but were still alive.
-You can no longer put borg items on monkies, and while I was at it I made directionals for their handcuffs
Fixes Issue 728
Fixes Issue 731
Fixes Issue 714
Fixes Issue 694
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4310 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
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