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
Gameplay-wise:
-Made all messages consistent, no more message about 'beginning' to do something when actually it's done. (Addresses Issue #1540)
-Now to attack patient on table with surgery tool you need to have harm intent (Addresses Issue #1540)
-All surgeries now have delays and begin/finish messages on each step, much like bone surgery.
Code-wise:
-All code handling surgery steps was moved in appropriate procs for each tool, to get rid of one HUGE attack proc.
Now attack proc checks for prereqs for surgery (like masks covering face), checks for targeted zone and calls needed proc.
-Deleted all code that handled messages for when user performs surgery on himself, because that's honest to god dead code. You need to be down to get surgery don on you, and you can't use tools while down. So until something is changed, those messages removed to improve readability of code.
-Added interrupt proc, that handles interruptions during surgery for each tool. For now all types of surgery handled the same, may be implemented differently later.
Signed-off-by: comma <krauchinsky@gmail.com>
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 issue 643, the code will now check that the TKed item's loc is on turf, i.e: not in a locker or in someone's pockets.
-Fixed issue 282, the locker wouldn't pick up the chameleon's dummy because it was an effect and not an item. I added a hacky exception for the chameleon projector. I've also made the starting item something more useful so that people will use it more. Please report any issues you find with this, I'm sure nothing too bad will happen.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4313 316c924e-a436-60f5-8080-3fe189b3f50e
-Resolved Issue 720. Message should now properly tell you who got cult armor
-Resolved Issue 642. Bad indentation caused girders to disappear if you move away while building them.
-Commented out admin messages when monkeys used non-monkey SEs
-Atmos techs given Construction Area access
-Remapped the south end of Med-Sci
--Misc. Research Lab added to science
--Virology moved to be made more isolated
-Updated Changelog
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4312 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
-Medical, security, and tool-belts may now hold any type of lighter
-Medical belts may now hold latex gloves and sterile masks
-Security belts may now hold gas masks
-Tool-belts may now hold cigarette packs
- 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
-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
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
- added bears, mice (cats will chase mice, mice squeak occasionally)
- removed some unique simple_animals (ian and runtime will be the only ones for now)
- structure improvements, tweaks and cleanup for simple_animals and critters
- space carp should work fine now
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
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
-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
The janitor spawns with a portalathe but doesn't have one in his wardrobe, so this adds that. If the librarian gets a barcode scanner in his, then the janitor's should include the portalathe.
The captain has taken a few lessons from the head of security! When joining, the captain will now start with matching gloves, a pair of jackboots, and the more sensible captain's cap. The old Napoleonic hat is still available in the captain's closet, and both the closets and wardrobes were updated to reflect this change.
The quartermaster started with brown shoes, but only had black ones available in his wardrobes. This change should make his starting equipment more consistent.
The head of personnel should no longer be so paranoid, and now spawns without wearing body armor or a helmet. Additionally, the body armor and helmet from the wardrobe closet and bag were removed. A gun, helmet, and body armor are still available in the secure locker for emergencies.
The breath mask inside the engineer box included with the ERT backpack looked terrible when worn with the ERT helmet, yet was required if any of the team were operating near a breach or anything. This change only returns the removed SWAT mask (which leaves the helmet sprite intact) to the response team's basic equipment.
Both the secure closet and the wardrobe bag have the medsci headset in it, and the chemist lab is conjoined with research, so why shouldn't the chemist start with that headset? This commit also moves the chemist to Medical on the roster because that's where the job shows up everywhere else.
- 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
- Hopefully addressed the concerns about the ultra-darkness. Night vision, mesons, thermals and material scanners now make you see through darkness. (Lighting code does not affect you)
- Ghosts get a "toggle darkness" verb, which changes their see_invisibility. When the toggle is enabled, ghosts cannot see other ghosts. This is due to invisibility.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4235 316c924e-a436-60f5-8080-3fe189b3f50e
-Added the new Mining Borg's jetpack sprite, thanks to WJohnston.
-Sorted the observer list for mobs.
-Updated the changelog.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4233 316c924e-a436-60f5-8080-3fe189b3f50e
- Added two max() things to lighting code. This should stop the negative luminosity error, which happens when large explosions happen, resulting in a large blob of permanently black space. Space will be black now, but when you go through it with a flashlight, it will actually be illuminated properly.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4232 316c924e-a436-60f5-8080-3fe189b3f50e
- Added pajama closets which contain 2 red and 2 blue pj's with 4 pairs of white shoes - for use in medbay and crew quarters. (pj sprites by baystation 12)
- Added the cart, plasma research, engineering and robotics vending machines from baystation 12 - Mostly for the sprites.
- Added science airlocks (sprites by baystation 12), made them work with our door construction / deconstruction mechanic. (those sprites are by me~)
- Added hazard doors, sprites by baystation 12. They're reskinned firedoors.
- Added two more styles of filing cabinets, all sprites from baystation 12.
- Changed the space law book's sprite to the one baystation 12 uses.
- Added a few floor sprites from baystation 12
- Added critter crates, sprites from baystation 12
- Added some surgery sprites from baystation 12
- Added plant sprites from baystation 12
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4229 316c924e-a436-60f5-8080-3fe189b3f50e
-Added the mining borg (no jetpack yet)
-Added the high tech security airlock (no assembly for it yet)
-Added the new telecomm sprites
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4227 316c924e-a436-60f5-8080-3fe189b3f50e
- Fixed the problem of mousetraps staying armed after a mouse triggered them
- Fixed the problem which made the following text appear when runtime splats a mouse: "Runtime Runtime SPLATS the mouse."
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4225 316c924e-a436-60f5-8080-3fe189b3f50e
PDAs now need to be in a Z level with a functioning Relay/Comms Network in order to send messages. It will also send uncompressed (scrambled) messages like you would with the ordinary voice messages.
I've gotten rid of the "in world" check for blackboxes, when there can only be one.
You can now easily send test signals to see if Telecomms is functioning for an atom. test_telecomms()
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4222 316c924e-a436-60f5-8080-3fe189b3f50e
The main problem is: if a mind is transferred to a ghost, objectives that have that mind as a target will treat the ghost as the target mob. Which is clearly a problem. This should fix exploits where people could force people to win/lose objectives via ghosting, gibbing, etc.
It should also eliminate any other weird bugs like the one Nodrak fixed a while ago where pais would keep their mind....meaning they were like, a cultist pai or something and could rat antags out to its owner using the HUD.
Removed some conditions from objectives (like those pertaining to the thunderdome) as they were bait for meta. >ghost >teleport to thunderdome >antag fails the objective she completed
Resolves issue 662
Fixes a few instances of original_name becomming null (there's still loads)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4214 316c924e-a436-60f5-8080-3fe189b3f50e
Stopped attacking patient during head surgery with hemostat.
Was caused by try_bone_surgery called twice in code.
Removed one redunant call.
Fixed runtimes during face surgery.
Null organ was caused by not being 'mouth' organ there.
Made it select 'head' as affected organ.
Fixed putting ammo in RCDs, resolves issue 696. Removed a little spam-text from RCDs too.
Removed some dyslexia from spesscash.
added an undef for LEGCUFF_LAYER
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4209 316c924e-a436-60f5-8080-3fe189b3f50e