Misc:
+Fixes unreported issue with initializing lighting on a specific zlevel
+Fixes two similar issues with moveElement and moveRange. Where fromIndex or toIndex could be adjusted incorrectly in certain conditions. Potentially causing bad-sorts, or out of bound errors.
+Rewrites listclearnulls(list/L) to no longer iterate through L.len elements for every null in the list (plus 1). i.e. went from L.len*(number_of_nulls+1) list-element reads (best-case), to L.len list-element reads (worst-case)
+New proc/getElementByVar(list/L, varname, value) which finds the first datum in a list, with a variable named varname, which equals value. You can also feed it atoms instead of lists due to the way the in operator functions.
+Fixes an unreported issue with Yota's list2text rewrite. Under certain conditions, the first element would not be converted into a string. Causing type-mismatch runtimes.
+New global map_ready variable. This is not fully implemented yet, but will be used to avoid duplicate calls to initialize() for map objects.
+All turfs now maintain references to all lights currently illuminating them. This will mean higher memory use unfortunately, due to the huge number of turfs. However, it will speed up updateAffectingLights significantly. I've used list husbandry to reduce baseline memory usage, so it shouldn't be any worse than some past atmos modifications memory-wise.
-Removed 'quadratic lighting', can add this back at some point. Sorry.
+modified the way lum() works slightly, to allow turfs to have overridden delta-lumen. i.e. space cannot be illuminated more than its default ambiance. This allowed removal of some iffy special-snowflake lighting areas implemented by somebody else.
+Lighting images in the dmi can now use arbitrary naming schemes. It is reliant on order now. This allows the dmi to be replaced by simply dropping in a new dmi.
-Removed all subtypes of /area/shuttle. Shuttles now create duplicate 'rooms' of /area/shuttle. (More on this later). This will conflict with most maps. Guide on how to fix to follow.
+All verbs/tools relating to world.tick_lag were refactored to use world.fps. However old config text for setting tick_lag will still work (it converts the value to fps for you)
+MC stats improved using smoothing. They now have their own tab so they dont get in the way when you're playing as an admin.
-removed the push_mob_back stuff due to conflicting changes. Sorry Giacom.
_OK, NOW THE ACTUAL INTERESTING STUFF_
Following systems moved over to subsystem datums:
air_master
garbage_manager
lighting_controller
process_mobs (aka Life())
nanomanager
power
sun
pipenets
AFK kick loops
shuttle_controller (aka emergency shuttle/pods), supply_shuttle and other shuttles
voting
bots
radio
diseases
events
jobs
objects
ticker
Subsystems hooks and variables should be commented fairly in-depth. If anything isn't particularly clear, please make an issue.
Many system-specific global variables have been refactored into
All tickers which previously used world.timeofday now use world.time
some subsystems can iterate before round start. this resolves the issue with votes not working pregame
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.
*TABLEPASS was already totally obsolete.
FPRINT was used, but it was on virtually everything anyway.
Removes those flags from every instance where they were used. Also assigned and removed other flags where it made sense.
If it is desired, I can revive the flag as NOFPRINT, which would retain the original functionality, though inverted. That way it would be be used only where it was intentional (holodeck items could use this for example).
* Increased players per blob and decreased blob count to win.
* Changed the health value of the blob spores.
* Blob gamemode will give the blob core a resource rate of 2, random event blob cores will get 1.
* Raised the amount of time that has to pass before the blob event occurs.
* Increased the difficulty of expanding into space.
* Added a player limit to the blob gamemode.
* Removed density from shield and other variables which are set in the abstract blob.
* Deleted spores after they die.
* Reset the brute resistance.
* Disabled random blobs in the blob gamemode.
* Double'd the blob spore's health.
* Blobs can expand into space again but it will be harder to do than on a space tile.
* Dead robots will be gibbed in their blob_act() as their bodies will block the blob.
* Reduced the damage the blob takes from explosions, and increased the brute resistance. Blobs main weakness is fire, not force.
Standardization of the object tree and some modified functionality.
Moved a lot of storage/*_kit and similar boxes to storage/box/* ; most of these can now be found in boxes.dm. First aid kits remain a separate item type.
Replacement Light boxes pick up lights (for example broken ones) when used on them
Moved weapon/secstorage to storage/secure
Moved plant bags, ore satchel, trash bag, and sheet snatcher to storage/bag, in bags.dm
Fixed reagent_containers and snacks to pass through attackby() so the use_to_pickup code works. This affects plant bags, trash bags, and pill bottles.
Dice packs are now pill bottles, and all pill bottles can pick up dice.
Added error handling to uplink/generate_menu() so that one mistyped string doesn't bork the whole syndie uplink menu, since strings cannot be type-checked at compile time.
Cigarette packs and crayon boxes are now storage/fancy, however they retain existing update_icon() code.
Added a comment to storage.dm so that future people know where to look for use_to_pickup and allow_quick_gather code.
Updated all maps.
I've tried to test this thoroughly but I wouldn't be surprised if there were a few lingering issues. Try not to panic if you encounter any.
Full (i think) list of changed paths:
/obj/item/weapon/storage/flashbang_kit > /obj/item/weapon/storage/box/flashbangs
/obj/item/weapon/storage/body_bag_box > /obj/item/weapon/storage/box/bodybags
/obj/item/weapon/storage/chemimp_kit > /obj/item/weapon/storage/box/chemimp
/obj/item/weapon/storage/trackimp_kit > /obj/item/weapon/storage/box/trackimp
/obj/item/weapon/storage/seccart_kit > /obj/item/weapon/storage/box/seccarts
/obj/item/weapon/storage/handcuff_kit > /obj/item/weapon/storage/box/handcuffs
/obj/item/weapon/cigpacket > /obj/item/weapon/storage/fancy/cigarettes
/obj/item/weapon/storage/mousetraps > /obj/item/weapon/storage/box/mousetraps
/obj/item/weapon/storage/PDAbox > /obj/item/weapon/storage/box/PDAs
/obj/item/weapon/storage/id_kit > /obj/item/weapon/storage/box/ids
/obj/item/weapon/storage/lightbox/mixed > /obj/item/weapon/storage/box/lights/mixed
/obj/item/weapon/storage/donkpocket_kit > /obj/item/weapon/storage/box/donkpockets
/obj/item/weapon/storage/beakerbox > /obj/item/weapon/storage/box/beakers
/obj/item/weapon/storage/syringes > /obj/item/weapon/storage/box/syringes
/obj/item/weapon/storage/gl_kit > /obj/item/weapon/storage/box/rxglasses
/obj/item/weapon/storage/diskbox > /obj/item/weapon/storage/box/disks
/obj/item/weapon/storage/stma_kit > /obj/item/weapon/storage/box/masks
/obj/item/weapon/storage/lglo_kit > /obj/item/weapon/storage/box/gloves
/obj/item/weapon/storage/lightbox/bulbs > /obj/item/weapon/storage/box/lights/bulbs
/obj/item/weapon/plantbag > /obj/item/weapon/storage/bag/plants
/obj/item/weapon/storage/satchel > /obj/item/weapon/storage/bag/ore
/obj/item/weapon/trashbag > /obj/item/weapon/storage/bag/trash
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5494 316c924e-a436-60f5-8080-3fe189b3f50e
-Made computers use idle_power_usage and active_power_usage that it used from the MC.
I'm sure something is likely to break because I removed a lot of snowflake code. I tried to test all the computers with what I can but if you find something odd then please tell me.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5369 316c924e-a436-60f5-8080-3fe189b3f50e
Cargo Techs, Miners, and Roboticists no longer start with gloves. Instead, a limited number of gloves have been added to each of their departments.
Shuttle Brig now requires Holding Cell access
Janitor given a pair of latex gloves
Red pen added to Warden's office by request
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5238 316c924e-a436-60f5-8080-3fe189b3f50e
-Atmos delay is now based on active players, to help fight lag for massive player rounds.
-Changed some for(blah in world) loops to use the correct lists.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4958 316c924e-a436-60f5-8080-3fe189b3f50e
Updated flashlight code a little.
Added inhand sprites for desk lamps.
Standardised modules/paperwork.
Decapitalised a bunch of mining items.
Slightly reverted update_icons.dm, so we're not looping through mutations more than we need to. Also, skeletons can now wear lipstick!
A few other things which aren't worth listing individually.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4855 316c924e-a436-60f5-8080-3fe189b3f50e
-Changed the air assimilation for ReplaceWithFloor() and ReplaceWithPlating() so that it doesn't count non-floors/non-space turfs against the average.
-Commented them as well
Fixes Issue 851
-Standardized AIbots a bit, primarily with vars, attackby(), emag() and such (Mostly excludes M.U.L.E.'s though)
-AIbots now have a maintenece panel on them, which can be opened after unlocking the access panel by using a screwdriver
-The bots are now repaired by opening the maint panel and using a welder
-Emagging the access panel will unlock it permanatly, and emagging it with the maint panel open will trigger the emag behavior
-Floorbots will actually pull up tiles when emagged, 90% to just pull up the plating (And add it to the tile stock), and 10% to replace the floor with lattice
-When destroyed, floorbots will actually drop all the tiles they have stored, not just 1
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4528 316c924e-a436-60f5-8080-3fe189b3f50e
-Added a proc for cyborg modules to 'rebuild', which makes it possible to remove items from the modules without clogging up the module menu
-Made the emag for minerborgs work better as a result
-Gave borgs their special radios back
-Fixed an apparently ancient bug where everything inside a borg will appear on the screen (MMI, cell, radio, etc...). It wasn't complex at all and I can't believe no one had fixed it yet.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4524 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
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
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
-Redid icons to be more optimized at compile by setting icon = 'icons/folder/icon.dmi' instead of just icon = 'icon.dmi', meaning that Dream Maker doesn't have to search through every single file for every single .dmi. This shouldn't lead to any errors because of how I went about it, plus the fact that Dream Maker would have freaked out if I screwed something up. Also moved around 2 icons that weren't sorted well.
r4146 compile time: 1 minute, 40 seconds
r4147 compile time: 45 seconds
[VGTG]
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4147 316c924e-a436-60f5-8080-3fe189b3f50e
-Any instance where dept backpacks would spawn would have a 50% chance of spawning a dept satchel instead
-brown satchels have been replaced with grey ones, although the classic brown ones are still available in the luxury dorms
-Satchels have in-hands now, so you can't run around with backpacks full of bombs unnoticed anymore
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4079 316c924e-a436-60f5-8080-3fe189b3f50e
-New item, the Sheet Snatcher. Picks up mineral sheets (Excluding wood and sandstone, since they aren't 'sheets' per se). Standard one holds up to 300 sheets, minerborgs get 500. Will hold any combination of sheets, and auto-stacks them when emptied, works similarly to the ore satchels
-Mech drills can mine sand, with diamond drills getting an extended volume
-Mech Diamond Drills will drill through rwalls again, but it is pretty slow, sometimes taking 5-6 tries just to get the plating off
-Mining Ripleys no longer runtime to hell when the status panel is opened
-Fixes Issue 572, now when floors are created, they assimilate air from nearby tiles, so if it's in space, there will be no air, etc...
-Bumping an asteroid wall as a human or borg with a pickaxe in your hand will make you automattically start mining the wall, feels MUCH faster due to ignoring click_delay()
-Miner borgs with the satchel in their active modules will automatically scoop up the ores
-Clicking an asteroid turf with the satchel will function just as if you clicked on an ore (if any are present)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3867 316c924e-a436-60f5-8080-3fe189b3f50e
-New spare ID box sprite. New pill-bottle box sprite.
-Added spades for botanists who want to play with dirt.
-A spade can be found in the hydroponics supply area, along with a couple spare tools useful for the job.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3782 316c924e-a436-60f5-8080-3fe189b3f50e
- Window doors currently have 200 health, this can and will change if break ins become too common.
- They still do not have wires, so you can not 'hack' them that way.
- As always, emags still hack open window doors
Changes to the hidden mining room treasures.
- Added quality pickaxes, jackhammers and drills as a possible treasure.
- - Higher quality tools are rarer of course
- - Plasma cutter is possible but rare
- Added a ripley (equipped with a drill and hydrolic clamp) as a possible treasure.
- - There is a chance for the ripley to have a diamond drill instead of a regular drill.
Modified the resource crate.
- - It no longer always gives you multiple stacks of every mineral.
- - It now gives you a chance to get each mineral based on rarity.
- - The size of the mineral stack is also partly based on rarity.
- - There is a very small chance to recieve nothing in this crate.
- - There is a very small chance to recieve a jetpack in this crate ontop of the metal.
Updated the changelog
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3696 316c924e-a436-60f5-8080-3fe189b3f50e
* Arcade
* Prison Shuttle Console
* Area Air Control
* Atmos Alert Computer
* Mining Shuttle Console
If anybody is not okay with this, feel free to comment out the attackby code of that computer. But keep the circuitboard for future reference.
This should make all computers on the station be able to be disassembled.
Fixed some error message for cellchargers.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3683 316c924e-a436-60f5-8080-3fe189b3f50e
- Replaced them with a whole range of inventory slot flags. These now govern whether an item can or can't be placed in a certain inventory slot. See setup.dm for information on the flags. These flags only affect humans tho, as humans are the only beings with an inventory to talk of.
- Standardized some gun code and some other pieces of code as I came accross them. I hate indented variable definitions!
This commit should not bring any change whatsoever to the game from a player's perspective.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3659 316c924e-a436-60f5-8080-3fe189b3f50e
In short: massive updates to security, the library, hydroponics, the kitchen and the bar, by Flazeo and Ikarrus
Massive updates to the PA, with Invisty's new sprites, done by Sieve
New sprites for field gens too, also by Invisty
Borg and battery updates by Sieve
Fake gloves by Sieve
I messed around with some pressure_resistance stuff on Dumpdavidson's suggestion (only in paperwork)
PROBABLY A BUNCH OF OTHER SHIT
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3505 316c924e-a436-60f5-8080-3fe189b3f50e
Inspecting yourself for organ damage now randomly shows damaged organs if you have halloss
Mining shuttle now shunts people where it wants to be
Shuttles now crush people if they fail to move out of where they want to be with the initial shunt.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3337 316c924e-a436-60f5-8080-3fe189b3f50e
Added Nodrak's Jump to Mob verb.
Added Sieve's lantern fix. Commented out the silicate recipe.
Added Skaer's sec cartridge box to the armoury.
Moved the check_if_buckled() proc to mob/living, rather than having it repeated.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3168 316c924e-a436-60f5-8080-3fe189b3f50e