- Increased the mining satchel capacity from 30 to 50
- Fixed the issue where picking up all the items from a tile would display the pick-up message as many times as there were items to pick up.
- Fixed the problem which made ores sometimes stay on your screen after being inserted into an ore box.
- Restored the ability to empty satchels, and any other storage item that has the 'empty contents' verb, by just using them on themselves.
- Fixed an ages-old desync bug which happened when you used the a crossbow on a storage item.
- Fixed a potential problem which caused removed item's layers to not get updated properly.
- Fixes issue 819
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4490 316c924e-a436-60f5-8080-3fe189b3f50e
All credits to the author for this handy little script.
I Committed the modified python script to tool directory. Although it needs to be in the root folder of your repo to work.
To notice the improved compile times, in dreammaker go to Build > Preferences > and untick "automatically set file_dir for subfolders"
If this commit inteferes with any large projects just revert it, do your thing, then rerun the script. Easy-peasy.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4488 316c924e-a436-60f5-8080-3fe189b3f50e
Boxes affected:
- Donut boxes
- Egg cartons
- Candle packs
- Match boxes
- Snap pop boxes
- Monkey cube boxes
Items I didn't merge:
- Pizza boxes
- Cigarette packs
Pizza boxes are a whole new kind of 'special snowflake code' that is best left the way it is. Cigarette packs involve some stuff I'm unfamiliar with so that can wait until I learn what I need to learn.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4452 316c924e-a436-60f5-8080-3fe189b3f50e
New variables:
var/use_to_pickup = if 1, the storage item also works like satchels, which means you can use it on something else to pick it up.
var/display_contents_with_number = if 1, the items in the storage item are grouped by type with the number of items being displayed. See the screenshot.
var/allow_quick_empty = if 1 on creation, it adds a verb that allows you to empty the item with one click
var/allow_quick_gather = if 1 on creation, it adds a verb which allows you to switch between pick-up methods. one-per-click or all-on-tile. Same as satchels worked. use_to_pickup must be 1 for any of that to matter.
var/collection_mode = 1; //0 = pick one at a time, 1 = pick all on tile
New procs:
/obj/item/weapon/storage/proc/can_be_inserted(obj/item/W as obj, stop_messages = 0)
- Returns 0 or 1, depending on whether the item W can be inserted
/obj/item/weapon/storage/proc/handle_item_insertion(obj/item/W as obj)
- Inserts the item into the storage item and calls all the procs it needs to. Doesn't check whether the item can fit tho, tha'ts what can_be_inserted() is for.
/obj/item/weapon/storage/proc/remove_from_storage(obj/item/W as obj, atom/new_location)
- Removes item W from the storage object and sets it's loc to new_location or get_turf(src) if one is not provided.
/obj/item/proc/on_exit_storage(obj/item/weapon/storage/S as obj)
- Called after the object has been removed from the storage item S. The object's loc is already set to the new one.
/obj/item/proc/on_enter_storage(obj/item/weapon/storage/S as obj)
- Called after the object has been inserted into the storage item S. The object's loc is already set to S.
I made satchels work on this new code. The rest will be added to it soon. See the screenshot.
Screenshot:
http://www.kamletos.si/new%20satchels.png
This is yet another big change and it is very possible that bugs will come from it. Please report them to me or on the tracker.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4451 316c924e-a436-60f5-8080-3fe189b3f50e
I changed how uplinks worked. Instead of there being a duplicate item which would switch out when it activates, there's an item called "obj/item/device/uplink/hidden". It is a hidden uplink which you can place in any obj/item. In "hidden" is where it will generate menus, check for triggers to show the menu and etc.. No need to switch out with duplicate items or add the menu onto the PDA's notes.
How to create a new uplink item in 3 easy steps!
1. All obj/item 's have a hidden_uplink var. By default it's null. Give the item one with "new(src)", it must be in it's contents. Feel free to add/remove "uses".
2. Code in the triggers. Use check_trigger for this, I recommend closing the item's menu with "usr << browse(null, "window=windowname") if it returns true. The var/value is the value that will be compared with the var/target. If they are equal it will activate the menu.
3. If you want the menu to stay until the users locks his uplink, add an active_uplink_check(mob/user as mob) in your interact/attack_hand proc. Then check if it's true, if true return. This will stop the normal menu appearing and will instead show the uplink menu.
I've given the recharge station's verbs a category so they don't create their own tab.
I've added a mob/proc called put_in_any_hand_if_possible. Name speaks for itself. Returns true if successful, false otherwise.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4450 316c924e-a436-60f5-8080-3fe189b3f50e
Changed the path of large beakers, so they're actually a subtype of beaker (wtf)
Moved new_year.dm to unused.
Updated Carn's sequential master controller to not have tension stuff, for potential live testing.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4444 316c924e-a436-60f5-8080-3fe189b3f50e
-Deleted the old /obj/item/weapon/'grenade', there's standardized stuff now, and the old shit doesn't even work. Waste of space, 0/10 would delete again.
-Fixed clusterbangs. Honk
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4426 316c924e-a436-60f5-8080-3fe189b3f50e
Code-wide changes: /mob -level procs:
equip_if_possible() is now known as equip_to_slot_or_del() to prevent confusion with equip_to_slot_if_possible() and to better describe what it does.
equip_to_slot_if_possible(item, slot, del_on_fail, disable_warning, redraw_mob)
equip_to_appropriate_slot() is now a /mob - level proc.
equip_to_slot() is an unsafe proc, which just handles the final step of actually getting an item onto the mob. It has no checks of whether it can or can't do that. Use equip_to_slot_if_possible() for that purpose.
New /obj/item -level proc:
/obj/item/proc/mob_can_equip(M as mob, slot, disable_warning = 0)
This proc can be used to determine whehter a mob can pick up an item from the item's side.
Carn, I'll need you to review code/modules/mob/living/carbon/human/inventory.dm to ensure that I'm not redrawing the mob too many times.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4423 316c924e-a436-60f5-8080-3fe189b3f50e
Fixes issue 505.
Boxing gloves can no longer be used to make stungloves (with descriptive, adventure game style failure message~).
People without savefiles no longer get the "Your save has been deleted" message when they start the game.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4402 316c924e-a436-60f5-8080-3fe189b3f50e
-Fixes horrible chat spam when loading smartfridges up with plant bags.
-Fixes the bug where reishi mushrooms and broken wooden floors had ugly sprites.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4400 316c924e-a436-60f5-8080-3fe189b3f50e
Fixed issue 767.
The fix for issue 767 was to standardise spray bottle code (to some extent). If any issues come up with spray bottles, pepper spray, or chem sprayers, report them to me.
Cyborgs now recharge their pacid and lube, as the size of their bottles was quartered.
Changed the flash item_state to "flashbang", as it looks exactly like a flash.
There's some more grammar and text clean up too, mostly with crates and closets.
Finally, fixed some pipes in virology, and changed the librarian's den so the bookcases are at the top.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4394 316c924e-a436-60f5-8080-3fe189b3f50e
Everything related to clothing should now be defined in modules/clothing. I'm almost certain there's clothing code hidden elsewhere but this should be the vast majority of it finished.
Everything is set up related to the object types themselves (meaning paths.)
So all hats will be in modules/clothing/head, all gloves will be in modules/clothing/gloves, ect...
I've removed 'modules/clothing/random.dm' and 'objects/items/clothing.dm' which both seemed to just be a place where people would put stuff they were too lazy to find a proper home for.
I've also moved files that had no, or very few blocks of code into more catagorized areas.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4388 316c924e-a436-60f5-8080-3fe189b3f50e
Fixes issue 676.
Fixes issue 700.
Fixes issue 753.
Fixes issue 754.
Fixes issue 755.
Additionally I slightly cleaned up grenade code and stunglove code, and removed mustardbomb.dm (because it was fucking awful).
THIS BUGFIX TRAIN AIN'T STOPPIN'
Thanks QualityVan for the issue 521 fix, and thanks Nodrak & Tobba for pointing out my dumbness for issues 753 & 754 respectively.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4382 316c924e-a436-60f5-8080-3fe189b3f50e
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
- 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
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 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
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
- 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
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
Instead of 'x has been attacked with y by z' it now reads 'x has been 'y.attack_verb-ed' with y by z'!
Example:
Monkeyman has been bashed in the head with a riot shield by Nodrak!
or
Monkeyman has been stabbed in the chest with an energy sword by Nodrak!
- Every obj now has a list named "attack_verbs"
- When declaring an object, just use attack_verb = list("verb1", "verb2") and so on to initialize the list for that specific item.
- I've added a bunch of these to a ton of items already, feel free to modify or add more. Just try to stay away from gimmicky verbs (clown stuff being the exception.)
clothing.dm and spawner.dm only had a single definition in each of them, so their definitins have been moved to obj.dm and their original dm files deleted. I'm not sure about spawner but clothing had all of its other definitions removed recently.
radio.dm was a completely blank file, so it was removed.
Changelog updated
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4182 316c924e-a436-60f5-8080-3fe189b3f50e
-Almost every instance of 'for(mob in world)' has been killed. Because GODDAMN was it being run a bunch. Instead, a series of global lists have been made, and they are all handled auto-magically through New()'s, Del()'s, Login()'s, death()'s, etc...
Lists are as follows:
-mob_list : Contains all atom/mobs by ref
-player_list : Like mob_list, but only contains mobs with clients attached
-admin_list : Like player_list, but holds all mobs with clients attached and admin status
-living_mob_list : Contains all mobs that ARE alive, regardless of client status
-dead_mob_list : Contains all mobs that are dead, which comes down to corpses and ghosts
-cable_list : A list containing every obj/structure/cable in existence
Note: There is an object (/obj/item/debuglist) that you can use to check the contents of each of the lists except for cables (Since getting a message saying "a cable," x9001 isn't very helpful)
These lists have been tested as much as I could on my own, and have been mostly implemented. There are still places where they could be used, but for now it's important that the core is working. If this all checks out I would really like to implement it into the MC as well, simply so it doesn't check call Life() on every mob by checking for all the ones in world every damn tick.
Just testing locally I was able to notice improvements with certain aspects, like admin verbs being MUCH more responsive (They checked for every mob in the world every time they were clicked), many sources of needless lag were cut out (Like Adminwho and Who checking every single mob when clicked), and due to the cable_list powernet rebuilding is MUCH more efficient, because instead of checking for every cable in the world every time a powernet was broken (read: A cable was deleted), it runs though the pre-made list, and even with a singulo tearing all the way across the station, the powernet load was VERY small compared to pretty much everything else.
If you want to know how any of this works, check global_lists.dm, there I have it rigorously commented, and it should provide an understanding of what's going on.
Mob related in worlds before this commit: 1262
After: 4
I'm helping
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4179 316c924e-a436-60f5-8080-3fe189b3f50e