Replaced the EMP grenades from the uplink with an EMP kit.
The kit contains a grenade, an implant and a flashlight with 5 uses that can EMP any object or mob in melee range.
It will search list/L for a /datum/data/record with fields[field] == value, and return it.
This removes a vast amount of copypasta (there's still so much left in there though). It also removes all the locate(\ref[record]) I could find, which were normal used with topic(), meaning it was susceptible to abuse.
Secbots, ed209s and turrets are now smarter with their record-checks. They now prefer to use our face-name rather than id-name. ICly, this is the bot using facial recognition. This fixes an issue where it'd try to use the name variable which could be in the format "Unknown (as their id name)" when they were disfigured, etc. causing record-lookup to fail.
Additionally, these bots will treat those without a valid record in the security database, to be treated like criminals.
-Ported Bay's cargo computer category system
-Created a box containing six flashes
-Crates have been tweaked significantly. Crates have been reduced to single item types where possible, namely with expensive crates such as weapons and armor. A total of 28 new crates have been added, including chemical and tracking implants, and raw materials can also be bought from cargo for a significant number of points (subject to change)
* Added a Del() to the projection which will disrupt the chameleon projector, before being deleted by acid or a drill (killing the person inside).
* Made chameleon projectors disrupt if moved from the hand, to make it consistent. Currently you could put them in pockets but if you picked them up it would disrupt. Fixing this would involve changing all use of dropped() so instead I made them disrupt when equipped and, due to how dropped() works, when they switch hands. Lowered the disrupt cooldown to make up for this.
* Fixed being able to order items with an inactive uplink.
* Shortened the name of an uplink item to make room.
* Removed the (?) from the Random Item to help avoid confusion with the new buttons.
Modules can just run install(target,user) and everything will work fine.
Upload computers cleaned up quite heavily. Less copy+paste. Removed that pointless "Open access panel" verb they had.
Law changing procs moved from mob/living/silicon/robot and mob/living/silicon/ai to mob/living/silicon. This means clear_inherent_laws(), add_inherent_law(), etc. This is what the new file is for. Doesn't change anything since they both had exact copies of the same procs.
NOTE: This commit doesn't change the maps, so don't checkout to this without the next one.
I had this idea with the other dice stuff, but dismissed it as silly snowcode that would have just lower my odds of getting it commited. Since several people have asked for this functionality in the time since, here it is.
*the dice now all have different colors, to make them easy to tell the difference between them at a glance.
*the d2 has been swapped out for a d00, though you can still create a d2 if someone demands it.
*the generic pill bottle full of dice has been replaced with a proper dice bag.
*actually throwing a die will now cause it to roll until the throw ends, at which point it will state the result of the throw. The old method still works as well.
*most new dice have had their sprites edited to be smaller.
*minor grammer corrections.
Added a Jump to Node power.
Cleaned up the code.
Changed some more values.
Added a blob_act() to camera.
Removed most "if(gamemode == "blob") checks to stop people from using it to metagame.
Removed cells exploding when being blob_act()'d
Places where the D6 and D20 spawned (the library and perma) now spawn with a dice bottle. Said dice bottles now contains a D2, D4, D8, D10, and D12 in addition to the preexisting D6 and D20 for a richer meta-roleplaying experience.
This also fixes an obscure bug where dice could be generated invisible because their initial value was set to 0.
Additionally this fixes the grammer of dice descriptions, which were not using the singular "die".