Commit Graph

58 Commits

Author SHA1 Message Date
SkyratBot
ec09510459 Bools and returns super-pr (#53221) (#565)
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is

Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>

Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Couls <coul422@gmail.com>
2020-08-30 05:12:59 +02:00
SkyratBot
ee324ab3c2 [MIRROR] Cleanup up all instances of using var/ definitions in proc parameters. (#240)
* Cleanup up all instances of using var/ definitions in proc parameters. (#52728)

* var/list cleanup

* The rest of the owl

* plushvar bad

* Can't follow my own advice.

* Cleanup up all instances of using var/ definitions in proc parameters.

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2020-08-07 18:26:21 +01:00
jdawg1290
62676e72a8 Force LF line endings with gitattributes and convert repo (#52266)
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-07-16 03:02:40 +03:00
ShizCalev
f999167b80 Replaces radio channel names and keys with defines 2018-11-16 09:36:49 -05:00
Tad Hardesty
911cb97718 Tidy telecomms radio code, make PDA server real telecomms machinery (#33647)
* Refactor radio message broadcasting in a major way

Broacast_Message and everywhere that uses it, including radio talk_into
and the telecomms broadcaster and allinone. Other telecomms machinery
has had dead code excised.

Functionality should be roughly the same as before, but:
- CentCom headsets are only magic when using the CentCom frequency
- Syndicate frequency speech on the station no longer double-talks
- Talking directly into an intercom or radio which also has its
  microphone on no longer double-talks.

* Split signal/vocal into subspace and subspace/vocal

* Move the message server and its computer to telecomms folder

* Slightly tidy the message server and computer

* Move subspace receiver logic to a proc on signal/subspace

* Repath the message server under machinery/telecomms

* Largely get PDA messages onto subspace proper

* Actually require the server for PDA messages

* Improve signal/subspace/New() and copy()

* Improve input handling on the message server

* Fix initialization and Z checks of allinones

* Add a constructor for virtualspeaker

* Fix radiation storms initializing a bad virtualspeaker

* Fix runtimes with machines talking into radios

* Finish making the message server a real telecomms machine

* Make CTF radios independent also

* Fix window IDs of message server PDA photos
2017-12-20 22:02:55 +01:00
Tad Hardesty
71659b1e1a Tidy non-telecomms radio code (#33381)
* Remove extraneous parameters of receive_signal

* Delete unused signal datum procs

* Remove signal/var/encryption in favor of data

* Add and use datum/signal/New

* Clean up PDA and pAI integrated signalers

* Remove unused send_hear proc

* Clean up vars on obj/item/radio, change receive_range to can_receive

* Remove suffix var from radios

* Fix cell timer radios
2017-12-15 11:37:58 +13:00
Tad Hardesty
51c7bdc007 Replace radio frequency magic numbers with defines (#33236)
* Change transmission_method to use defines rather than magic numbers

* Use MIN and MAX_FREE_FREQ defines when bounds-checking radios

* Remove violently broken "Debug Signals" verb

The relevant Destroy() is never called, making the static pointers list
take lots of memory and be large enough, even at roundstart, to crash
the chat when invoked (25k+ entries).

* Remove unnecessary checks for SSradio not existing

* Move department frequencies from GLOB to defines

* Replace all hardcoded radio frequencies with named defines

* Change the radio filters to be defines

* Use a define for the default signaler code
2017-12-07 14:58:27 +01:00
Emmett Gaines
825ab4def4 [512] The great \ref purge (#31824)
* The great \ref purge

* cleanup
2017-10-28 17:20:04 -04:00
Jordan Brown
d144c88fb5 Annihilates the colons! (#29812) 2017-08-15 12:49:35 -03:00
shizcalev
22764665c9 CentCom Standardization 2017-08-07 19:04:27 -04:00
Cyberboss
9e1ef0ffe2 Global variable wrappers (#25325)
* Add the system for managed global variables

* Travis ban old globals

* So you CAN inline proccall, that's neat

* Fix that

* master.dm

* Remove the hack procs

* Move InitGlobals to the proper spot

* configuration.dm

* Fix the missing pre-slash

* clockcult.dm

* This is probably for the best

* Doy

* Fix shit

* Rest of the DEFINES tree

* Fix

* Use global. for access

* Update find_references_in_globals

Always hated that proc

Whoever made it must've bee a r e a l idiot...

* __HELPERS tree

* Move global initialization to master.

Fix the declaration

* database.dm

* Dat newline

* I said DECLARATIVE order!

* Here's something you can chew on @Iamgoofball

* game_modes.dm

* Fix this

* genetics.dm

* flavor_misc.dm

* More stuff

* Do it mso's way. Keep the controllers as global

* Make master actually see it

* Fix

* Finish _globalvars/lists

* Finish the rest of the _globalvars tree

* This is weird

* Migrate the controllers

* SLOTH -> GLOB

* Lighting globals

* round_start_time -> ticker

* PAI card list -> pai SS

* record_id_num -> static

* Diseases list -> SSdisease

* More disease globals to the SS

* More disease stuff

* Emote list

* Better and better

* Bluh

* So much stuff

* Ahh

* Wires

* dview

* station_areas

* Teleportlocs

* blood_splatter_icons

* Stuff and such

* More stuff

* RAD IO

* More stuff and such

* Blob shit

* Changeling stuff

* Add "Balance" to changelogs

* Balance for changelog compiler + Auto Tagging

* Update the PR template

* hivemind_bank

* Bip

* sacrificed

* Good shit

* Better define

* More cult shit

* Devil shit

* Gang shit

* > borers

Fix shit

* Rename the define

* Nuke

* Objectives

* Sandbox

* Multiverse sword

* Announce systems

* Stuff and such

* TC con

* Airlock

* doppllllerrrrrr

* holopads

* Shut up byond you inconsistent fuck

* Sneaky fuck

* Burp

* Bip

* Fixnshit

* Port without regard

* askdlfjs;

* asdfjasoidojfi

* Protected globals and more

* SO MANY

* ajsimkvahsaoisd

* akfdsiaopwimfeoiwafaw

* gsdfigjosidjfgiosdg

* AHHHHHHHHHHHHHHHHHHHHHHH!!!!!

* facerolll

* ASDFASDFASDF

* Removes the unused parts of dmm_suite

* WIP

* Fix quote

* asdfjauwfnkjs

* afwlunhskjfda

* asfjlaiwuefhaf

* SO CLOSE

* wwwweeeeeewwwww

* agdgmoewranwg

* HOLY MOTHER OF FUCK AND THATS JUST HALF THE JOB?!?

* Fix syntax errors

* 100 errors

* Another 100

* So many...

* Ugh

* More shit

* kilme

* Stuuuuuufffff

* ajrgmrlshio;djfa;sdkl

* jkbhkhjbmjvjmh

* soi soi soi

* butt

* TODAY WE LEARNED THAT GLOBAL AND STATIC ARE THE EXACT SAME FUCKING THING

* lllllllllllllllllllllllllllllllllllllllllll

* afsdijfiawhnflnjhnwsdfs

* yugykihlugk,kj

* time to go

* STUFFF!!!

* AAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!

* ngoaijdjlfkamsdlkf

* Break time

* aufjsdklfalsjfi

* CONTROL KAY AND PRAY

* IT COMPILEELEELELAKLJFKLDAFJLKFDJLADKJHFLJKAJGAHIEJALDFJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

* Goteem

* Fix testing mode

* This does not belong in this PR

* Convert it to a controller

* Eh, fuck this option

* Revert controllerization Ill do it some other time

* Fix

* Working controllerization

* FOR THE LOVE OF CHRIST PROTECT THE LOGS

* Protect admins and deadmins

* Use the inbuilt proc
2017-04-06 23:26:13 -06:00
coiax
4c66182ff0 CTF teams have their own radio channels + fixes (#25456) 2017-03-25 19:53:03 -03:00
Lzimann
5a618297ce Replaces the default output with the to_chat wrapper. 2017-03-10 01:32:05 -03:00
MrStonedOne
fd80575f38 Removes a bunch of sleep(-1) and spawn(-1) from the code
This seems to be causing issues where if the queue was too long, byond would attempt to process through all of it while hanging everything else.
2016-01-04 15:17:12 -08:00
Bjorn Neergaard
34b717afb4 radio_controller -> SSradio, SSbp -> SSnpc 2015-12-04 22:25:24 -06:00
duncathan
1278b3e8ef fixes #11870; removes every last out of place del() call or definition 2015-10-04 08:03:04 -06:00
Firecage
4688c2c969 Fixes proc arguments 2015-07-15 23:52:35 +02:00
Miauw
a881478743 Removes strip_html_properly(), replaces it with html_encode().
It was not as proper as the name would imply, and experience and amused redditors have taught me that writing a proper HTML-scrubbing function is a very hard task indeed.
2015-06-11 15:37:41 +02:00
Firecage
3a826fe13c Changes alot of datum/ to /datum/ 2015-05-31 02:40:54 +02:00
Fayrik
84df0192f4 Buffs Deathsquads. 2015-04-18 00:06:17 +01:00
GunHog
3f762ee6b5 PDA Upgrade and Bot Fixes
-The Captain's PDA can now access multiple bots!
- The Captain and HoP PDAs can now also remotely access Newscasters!
- Bot radio code now no longer uses filters to allow for multi-access
radio control.
- Bots can now patrol while off station.
2015-04-08 20:12:01 -05:00
Fayrik
4f43fff199 Issue fixes! All that, and more! 2015-03-29 03:54:41 +01:00
carnie
a029a49392 SubSystem rewrite
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
2014-12-31 13:25:41 +00:00
Menshin
ec944abfc6 * limit atmos/fire alerts to the current z_level
* atmos/fire alerts are now linked to an object and not its area, as intended
* simplified and full pathed the radio frequency datum
* made radio objects properly clean on del/qdel, instead of letting the radio controller remove nulls at each post_signal()
2014-11-14 10:10:45 +01:00
Menshin
b77e2fc46a Conflicts solving 2014-11-04 20:24:52 +01:00
Menshin
26f70fd9aa * Completed the _strip_html_properly_ proc to also limit the length of the text
* Removed uses of _strip_html_simple_
* Replaced input or redondant trimming/text_copying with the new unified _stripped_input_
2014-10-15 16:00:22 +02:00
GunHog
589c1f4cbb Botcall, TG edition! 2014-09-25 09:44:41 -05:00
Miauw
bc2b8d0d5d DONE DONE DONE DONE DONE DONE 2014-08-27 17:40:26 +02:00
Miauw
e3c0b2fa43 AHAHAHAHAHAHHAHAHAHAHASDHHADFHEUAHGUIHGDGIJDOINGEIOKILLTHEMALL 2014-08-24 20:35:49 +02:00
Miauw
f704c320d7 More saycode bugfixing, adds a saycode readme, etc. 2014-08-23 16:21:02 +02:00
Miauw
433262e5e0 Removes debug messages. 2014-08-17 12:58:03 +02:00
Miauw
1fef6effc3 RADIO CODE WORKS NOW HOLY SHIT
(warning, contains tons of debug messages that still need removal)
2014-08-16 20:33:50 +02:00
Miauw
8602795aec FUCKING RADIO CODE 2014-08-07 18:11:53 +02:00
GunHog
db1b1231e7 Reflects the color change for AI Private
Changed "light blue" to "magenta".
2014-04-01 20:50:11 -05:00
GunHog
0e18325227 Adds AI Private to communications.dm 2014-03-31 00:45:32 -05:00
Tenebrosity
b3d37e1d0a Makes deathsquad frequency (144.1) a different colour again, this time grey to differentiate it from science's plum. 2013-12-31 16:50:17 +13:00
Tenebrosity
e4b251a488 Adds different radio frequency colours for engineering, security, medical, service and supply. 2013-12-30 20:09:35 +13:00
Cheridan
0c47147ab1 Phase 2 of my master plan:
-Adds a Service headset channel, given to the botanists, barman, and chef. The HoP also gets the service channel on his headset.

Note: The Service Preset Server will have to be added to Telecomms on the map before the channel is usable. I'll put up the map when/if this gets merged.
2013-05-13 12:20:12 -05:00
Giacomand
af525cb75b - Urgent fix to NTSL. Sanitizes the output of NTSL, including the broadcast() function.
- Added a GetCleanVar to be used when getting a global variable to use inside the game code, it will sanitize() the variable if the compare argument is not equal to it; the compare argument should used to see if NTSL has changed the value.
 - Added a sanitize_data proc for the signal datum. It will sanitize all the data using strip_html_simple().
2013-03-12 16:50:28 +00:00
ericgfwong@hotmail.com
e6a652771b Security frequency chatter now appears in cyan (Similar to how command is gold)
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5620 316c924e-a436-60f5-8080-3fe189b3f50e
2013-01-27 23:25:16 +00:00
giacomand@gmail.com
54d02d75a3 - Committed SuperSayu's patch fix for silicon alarms.
- Made the singularity not move stuff while contained, should help and make it easier to work with; such as fixing the field generator.
 - Added logging for gold slime extracts.
 - Removed unneeded deletion of signals in telecomms code.
 - Added a debug verb which will record pointers of signals that weren't garbage collected.
 - Removed the need to create a mob to compare it in telecomms code.
 - The spider infestation is more likely going to spawn nurses.
 - Runtime fix with spells. 
 - Reverse list actually does something now. Bots never needed it so I removed it. (Thanks carn)
 - Added an ON_BORDER flag for border firedoors.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5601 316c924e-a436-60f5-8080-3fe189b3f50e
2013-01-22 23:45:47 +00:00
johnsonmt88@gmail.com
3ac21339c1 You can now make a single camera use multiple networks.
var/network = string is now var/list/network = list().
I've also added a "network_multi" var which is a string. This is specifically for placing cameras on a map that you want to put on multiple networks. Apparently DM's map maker doesn't support lists, so just type them all in as a string and camera/initialize() will take care of the rest.
Input the networks with commas seperating them, for example: "SS13,RD,Secret,Prison,Ect"

I fixed a few issues while editing the cameras on the map as well.

Both maps:
- Re-added the telescreen in the misc research room that got removed at some point. (Thanks to Ikarrus for pointing this out)
- Any room that had 2 cameras (one for each network) were merged into one camera with the new network lists.
- - Permabrig-hallway (SS13, Prison)
- - Every room in R&D (including robotics) (SS13, RD)
- - The bomb testing range (RD, Toxins)

tgstation.2.1.1.dmm:
- Added a missing wire in engineering-sec (Thanks to SuperSayu for pointing this out)
- Fixed some mis-orientated firelocks. (Thanks to Intigracy for pointing this out)
- - The mining door between cargo and mining
- - The door between the hallway and the engineering lobby

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5596 316c924e-a436-60f5-8080-3fe189b3f50e
2013-01-22 01:24:09 +00:00
ericgfwong@hotmail.com
a3780d7021 Renamed Cargo radio to Supply radio
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5266 316c924e-a436-60f5-8080-3fe189b3f50e
2012-12-06 00:16:11 +00:00
giacomand@gmail.com
c6a4b991bc TELECOMMUNICATION
Improvements to Telecomms. I wasn't happy with my relays and having telecomms send several messages on different Z levels was not effecient. I decided to overcome this by removing the need to attach Broadcasters and Transmitters to relays. Then I made relays just add to the signal data which z levels the message will be broadcasted on, instead of sending the message several times. It's a bit hard to explain but basically it should be better then ever, and adding more relays will not create serious performance issues. Since you can't control whether the Z level could only receive messages or only send them, I added options on the relay itself so you can set it. I then made an additional feature, which Nodrak gave me the idea for, which is that busses can change the frequency of a signal. It's an option on the Bus and you can set it to change the signal's frequency, which can create hilarious situations such as the command channel being redirected to the general channel. No way to duplicate a signal with a different frequency at the moment.
Since relays earlier depended on a stupid system in order to become a off-site relay, I instead just made it limited to the satellite Z level, which makes more sense.

Broadcasters and Receivers are linked to the HUB, but it's still possible to create a simple telecommunication system with a "Receiver -> Bus -> Processer -> Broadcaster" (though it will be slow)

OTHER

Smartfridge limit was lowered to 999, just below the infinite loop check limit. This is to prevent further issues that may occure.

Moved creating some icon datums above the SQL procs, just to make sure that the SQL itself isn't sleeping and causing issues with the datums being used before being loaded.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5183 316c924e-a436-60f5-8080-3fe189b3f50e
2012-11-25 00:08:29 +00:00
vageyenaman@gmail.com
d12a3d898e Added a new telecomm thingie on the syndicate shuttle. It intercepts all radio chatter and relays it to the syndicate channel. Pretty nifty!
Reverted the comm satellite layout. It should be much more balanced this way.

Some bugfixes.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2975 316c924e-a436-60f5-8080-3fe189b3f50e
2012-01-18 04:52:34 +00:00
vageyenaman@gmail.com
e7c27d1299 Huge fukken commit. Very game-changing new feature has been added but it isn't actually available to players yet.
Spess Networking Technology:

    ▪ The machines are located in Centcom near the cargo shuttle.
    ▪ A new admin debug verb "Change Radio Type". Using this will toggle between old (current) radio code and the new radio code. ADMINS: I recommend only doing this if Doohl (me) is around to take note of anything that happens.
    ▪ The whole thing works, in theory, but hasn't been stress-tested with the usual 60+ players. I will write up a Tgstation Wiki article and/or explain what some of the stuff does in IRC or ingame.


One last thing to point out: this is a PROTOTYPE. I have tested it myself and optimized the code very well. In theory, this new radio system is significantly less laggy AND has many more features. However, because of it's a prototype, it can at any time destroy the server. The reason I am committing this and not updating the changelog is because it's not an actual feature YET. I want to stress test this on the servers to see how it fairs, then add some more stuff to it like the ability to link machines and repair networks.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2807 316c924e-a436-60f5-8080-3fe189b3f50e
2011-12-25 07:10:12 +00:00
vageyenaman@gmail.com
c8452fa96b ◦ When equipping corgis with objects, their icons immediately update. Fixes a bit of visual lag.
◦ The kitchen and booze vending machines have some changed commodity values. Most importantly, kitchen has more eating utensils and trays.
◦ Changed the afterattack() and DblClick() to have the (location,control,params) parameters.
◦ Added a new radio filter, "RADIO_MAGNETS".
◦ Mucked around with /datum/signal. Just an extra variable and another comment.
◦ Guns' afterattack() proc now carries location,control,params.
◦ Projectiles now track exactly where the player clicked on a tile. Pretty neat, huh?


New stuff:
   ◦ A new machine has been added: magnetic generators. They fit under floor tiles and can create dyanmic magnetic fields by directing ionized proton/electron beams to another tile.
   ◦ Another machine/computer was added that can control these magnetic generators. These machines come with their own pseudo-scripting engine for directing the magnetic beams magnetic modules create. They're not really complete yet, but they work for the firing range. I plan on expanding on this maybe sometime in the future, creating more applications for magnets elsewhere.
   ◦ Firing range things have been added, including target stakes and targets (both sprited by Veyveyr). You can mount targets onto target stakes and shoot them. Pixel-precision aiming has been applied to the targets (ONLY THE TARGETS!) so that you can see where you shot it and whatnot. You can literally blow holes through the targets until they collapse on themselves.
   ◦ Added a small little manual to the firing range on how to use the new stuff. It hopefully isn't too complicated to use.


    

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2543 316c924e-a436-60f5-8080-3fe189b3f50e
2011-11-23 02:00:18 +00:00
mport2004@gmail.com
28b7c860a8 The infinite cells return proc has been set to return 1 rather than null.
Communications.dm works once again. 
Updated a few admin commands that I missed to work with the job datums.
Fixed a type path issue in the cult talismans.
Assembly remote signalers now iterate though their for loop properly.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2347 316c924e-a436-60f5-8080-3fe189b3f50e
2011-10-13 06:58:20 +00:00
mport2004@gmail.com
17ed3899c4 Fixed the map/code issues that the body bags caused.
/obj/effects is now /obj/effect.
/obj/station_objects is now /obj/structure.
Did a bit of minor blob work. 
The Bay 12 body bags were replaced with closets because having two sets of code that do almost the same thing is silly.
Changed back a few of the last jobproc edits as the remove from list before assign was a check to see if the mob was fucked up and if it was remove it so we did not check it again as it would still be fucked up.
The medbay/tox monkeys names are random once more.  More random name monkeys will help with changeling and clean up the observe/mob menus.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2324 316c924e-a436-60f5-8080-3fe189b3f50e
2011-10-03 10:28:57 +00:00
baloh.matevz
e8c6b08419 - Object tree grouped a bit more.
Two new categories were made: station_objects and effects. station_objects, which I'm sure someone will want renamed to 'structures' contains the objects which don't need process() or power code.

Effects contains objects which are either landmarks, triggers, spawners or decal.

Screenshot:
http://www.kamletos.si/new%20object%20tree.PNG

I didn't notice any bugs, but with a revision editing 276 files of byond code, you never know.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2323 316c924e-a436-60f5-8080-3fe189b3f50e
2011-10-03 06:54:28 +00:00