diff --git a/code/WorkInProgress/Ported/Abi79/uplinks.dm b/code/WorkInProgress/Ported/Abi79/uplinks.dm
index a27345d4c02..f7af9e38cf3 100644
--- a/code/WorkInProgress/Ported/Abi79/uplinks.dm
+++ b/code/WorkInProgress/Ported/Abi79/uplinks.dm
@@ -71,11 +71,104 @@ A list of items and costs is stored under the datum of every game mode, alongsid
src.menu_message += "[name] ([cost])
"
category_items++
+// src.menu_message += "Random Item (??)
"
src.menu_message += "
"
return
Topic(href, href_list)
if (href_list["buy_item"])
+/* if(href_list["buy_item"] == "random")
+ var/list/randomItems = list()
+
+ //Sorry for all the ifs, but it makes it 1000 times easier for other people/servers to add or remove items from this list
+ //Add only items the player can afford:
+ if(uses > 19)
+ randomItems.Add("/obj/item/weapon/circuitboard/teleporter") //Teleporter Circuit Board (costs 20, for nuke ops)
+
+ if(uses > 9)
+ randomItems.Add("/obj/item/toy/syndicateballoon")//Syndicate Balloon
+ randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_uplink") //Uplink Implanter
+ randomItems.Add("/obj/item/weapon/storage/box/syndicate") //Syndicate bundle
+
+ //if(uses > 8) //Nothing... yet.
+ //if(uses > 7) //Nothing... yet.
+
+ if(uses > 6)
+ randomItems.Add("/obj/item/weapon/aiModule/syndicate") //Hacked AI Upload Module
+ randomItems.Add("/obj/machinery/singularity_beacon/syndicate") //Singularity Beacon
+
+ if(uses > 5)
+ randomItems.Add("/obj/item/weapon/gun/projectile") //Revolver
+
+ if(uses > 4)
+ randomItems.Add("/obj/item/weapon/gun/energy/crossbow") //Energy Crossbow
+ randomItems.Add("/obj/item/device/powersink") //Powersink
+
+ if(uses > 3)
+ randomItems.Add("/obj/item/weapon/melee/energy/sword") //Energy Sword
+ randomItems.Add("/obj/item/clothing/mask/gas/voice") //Voice Changer
+ randomItems.Add("/obj/item/device/chameleon") //Chameleon Projector
+ randomItems.Add("/obj/item/clothing/glasses/thermal") //Syndicate Space Suit
+
+ if(uses > 2)
+ randomItems.Add("/obj/item/weapon/storage/emp_kit") //EMP Grenades
+ randomItems.Add("/obj/item/weapon/pen/paralysis") //Paralysis Pen
+ randomItems.Add("/obj/item/weapon/cartridge/syndicate") //Detomatix Cartridge
+ randomItems.Add("/obj/item/clothing/under/chameleon") //Chameleon Jumpsuit
+ randomItems.Add("/obj/item/weapon/card/id/syndicate") //Agent ID Card
+ randomItems.Add("/obj/item/weapon/card/emag") //Cryptographic Sequencer
+ randomItems.Add("/obj/item/weapon/storage/syndie_kit/space") //Syndicate Space Suit
+ randomItems.Add("/obj/item/device/encryptionkey/binary") //Binary Translator Key
+ randomItems.Add("/obj/item/weapon/storage/syndie_kit/imp_freedom") //Freedom Implant
+
+ if(uses > 1)
+ var/list/usrItems = usr.get_contents()
+ var/hasRevolver = 0
+ for(var/obj/I in usrItems) //Only add revolver ammo if the user has a gun that can shoot it
+ if(istype(I,/obj/item/weapon/gun/projectile))
+ hasRevolver = 1
+
+ if(hasRevolver) randomItems.Add("/obj/item/ammo_magazine/a357") //Revolver ammo
+ randomItems.Add("/obj/item/clothing/shoes/syndigaloshes") //No-Slip Syndicate Shoes
+ randomItems.Add("/obj/item/weapon/plastique") //C4
+
+ if(uses > 0)
+ randomItems.Add("/obj/item/weapon/soap/syndie") //Syndicate Soap
+ randomItems.Add("/obj/item/weapon/storage/toolbox/syndicate") //Syndicate Toolbox
+
+ if(!randomItems)
+ del(randomItems)
+ return 0
+ else
+ href_list["buy_item"] = pick(randomItems)
+
+ switch(href_list["buy_item"]) //Ok, this gets a little messy, sorry.
+ if("/obj/item/weapon/circuitboard/teleporter")
+ uses -= 20
+ if("/obj/item/toy/syndicateballoon" , "/obj/item/weapon/storage/syndie_kit/imp_uplink")
+ uses -= 10
+ if("/obj/item/weapon/aiModule/syndicate" , "/obj/machinery/singularity_beacon/syndicate" , "/obj/item/weapon/storage/box/syndicate")
+ uses -= 7
+ if("/obj/item/weapon/gun/projectile")
+ uses -= 6
+ if("/obj/item/weapon/gun/energy/crossbow" , "/obj/item/device/powersink")
+ uses -= 5
+ if("/obj/item/weapon/melee/energy/sword" , "/obj/item/clothing/mask/gas/voice" , "/obj/item/device/chameleon" , "/obj/item/clothing/glasses/thermal")
+ uses -= 4
+ if("/obj/item/weapon/storage/emp_kit" , "/obj/item/weapon/pen/paralysis" , "/obj/item/weapon/cartridge/syndicate" , "/obj/item/clothing/under/chameleon" , \
+ "/obj/item/weapon/card/id/syndicate" , "/obj/item/weapon/card/emag" , "/obj/item/weapon/storage/syndie_kit/space" , "/obj/item/device/encryptionkey/binary" , \
+ "/obj/item/weapon/storage/syndie_kit/imp_freedom")
+ uses -= 3
+ if("/obj/item/ammo_magazine/a357" , "/obj/item/clothing/shoes/syndigaloshes" , "/obj/item/weapon/plastique")
+ uses -= 2
+ if("/obj/item/weapon/soap/syndie" , "/obj/item/weapon/storage/toolbox/syndicate")
+ uses -= 1
+
+ del(randomItems)
+ return 1
+*/
+
+
if(text2num(href_list["cost"]) > uses) // Not enough crystals for the item
return 0
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 35232e6ab9c..e67d702ed53 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -70,8 +70,7 @@ Implants;
/obj/item/weapon/storage/syndie_kit/imp_uplink:10:Uplink Implant (Contains 5 Telecrystals);
Whitespace:Seperator;
Badassery;
-/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);
-Whitespace:Seperator;"}
+/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);"}
// Items removed from above:
/*
diff --git a/code/game/objects/closets/secure/hydroponics.dm b/code/game/objects/closets/secure/hydroponics.dm
index 3831aa5dac2..99fec169fb8 100644
--- a/code/game/objects/closets/secure/hydroponics.dm
+++ b/code/game/objects/closets/secure/hydroponics.dm
@@ -16,7 +16,8 @@
new /obj/item/clothing/under/rank/hydroponics(src)
new /obj/item/clothing/suit/storage/apron(src)
new /obj/item/clothing/under/rank/hydroponics(src)
- new /obj/item/clothing/head/helmet/greenbandana(src)
new /obj/item/device/analyzer/plant_analyzer(src)
+ new /obj/item/clothing/head/helmet/greenbandana(src)
+ new /obj/item/weapon/minihoe(src)
new /obj/item/weapon/hatchet(src)
return
\ No newline at end of file
diff --git a/code/game/objects/closets/secure/security.dm b/code/game/objects/closets/secure/security.dm
index dfc84c4d1e1..7cc627d870b 100644
--- a/code/game/objects/closets/secure/security.dm
+++ b/code/game/objects/closets/secure/security.dm
@@ -144,9 +144,9 @@
new /obj/item/device/pda/security(src)
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/weapon/storage/belt/security(src)
- new /obj/item/weapon/flashbang(src)
- new /obj/item/weapon/pepperspray(src)
new /obj/item/device/flash(src)
+ new /obj/item/weapon/pepperspray(src)
+ new /obj/item/weapon/flashbang(src)
new /obj/item/weapon/melee/baton(src)
new /obj/item/clothing/glasses/sunglasses/sechud(src)
return
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 3e6b14ee0c5..4d301b5fc0c 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -323,4 +323,15 @@ WELDINGTOOOL
New()
if(prob(50))
- icon_state = "cutters-y"
\ No newline at end of file
+ icon_state = "cutters-y"
+
+/obj/item/weapon/wirecutters/attack(mob/M as mob, mob/user as mob)
+ if((M.handcuffed) && (istype(M:handcuffed, /obj/item/weapon/handcuffs/cable)))
+ M.visible_message("You cut \the [M]'s restraints with \the [src]!",\
+ "\The [usr] cuts \the [M]'s restraints with \the [src]!",\
+ "You hear cable being cut.")
+ M.handcuffed = null
+ M.update_clothing()
+ return
+ else
+ ..()
\ No newline at end of file
diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm
index 1ccdb01cdf4..5449634b6ab 100644
--- a/code/game/shuttle_engines.dm
+++ b/code/game/shuttle_engines.dm
@@ -1,8 +1,6 @@
-
/obj/structure/shuttle
name = "shuttle"
icon = 'shuttle.dmi'
- pressure_resistance = 4*ONE_ATMOSPHERE
/obj/structure/shuttle/window
name = "shuttle window"
@@ -12,6 +10,12 @@
opacity = 0
anchored = 1
+/obj/structure/shuttle/window/New()
+ var/temploc = src.loc
+ for(var/turf/simulated/W in range(temploc,0))
+ W.blocks_air = 1
+ W.density = 1
+ ..()
/obj/structure/shuttle/engine
name = "engine"
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 0a76b274e8f..a585e8a09ec 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -291,8 +291,9 @@
verbs += /client/proc/everyone_random
verbs += /client/proc/only_one
verbs += /client/proc/deadmin_self
- verbs += /client/proc/giveruntimelog //used by coders to retrieve runtime logs
- verbs += /client/proc/cinematic //used by coders to retrieve runtime logs
+ verbs += /client/proc/giveruntimelog //used by coders to retrieve runtime logs
+ verbs += /client/proc/cinematic //show a cinematic sequence
+ verbs += /client/proc/startSinglo //Used to prevent the station from losing power while testing stuff out.
verbs += /client/proc/enable_debug_verbs
verbs += /client/proc/kill_air
verbs += /client/proc/callprocgen
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 8c0bf186172..3b794c05a11 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -461,7 +461,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
set name = "Del-All"
// to prevent REALLY stupid deletions
- var/blocked = list(/obj, /mob, /mob/living, /mob/living/carbon, /mob/living/carbon/human)
+ var/blocked = list(/obj, /mob, /mob/living, /mob/living/carbon, /mob/living/carbon/human, /mob/dead, /mob/dead/observer, /mob/living/silicon, /mob/living/silicon/robot, /mob/living/silicon/ai)
var/hsbitem = input(usr, "Choose an object to delete.", "Delete:") as null|anything in typesof(/obj) + typesof(/mob) - blocked
if(hsbitem)
for(var/atom/O in world)
@@ -902,6 +902,10 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
/client/proc/startSinglo()
+ set category = "Debug"
+ set name = "Start Singularity"
+ set desc = "Sets up the singularity and all machines to get power flowing through the station"
+
if(alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Yes","No") != "Yes")
return
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 78af9433113..1972513d46f 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -252,13 +252,13 @@
if(src.amount <= 14)
usr << "\red You need at least 15 lengths to make restraints!"
return
+ var/obj/item/weapon/handcuffs/cable/B = new /obj/item/weapon/handcuffs/cable(usr.loc)
+ usr << "\blue You wind some cable together to make some restraints."
if(src.amount == 15)
del(src)
else
src.amount -= 15
- var/obj/item/weapon/handcuffs/cable/B = new /obj/item/weapon/handcuffs/cable(usr.loc)
B.layer = 20
- usr << "\blue You wind some cable together to make some restraints."
..()
/obj/item/weapon/cable_coil/attackby(obj/item/weapon/W, mob/user)
diff --git a/html/changelog.html b/html/changelog.html
index 6822b7f6856..914de4de9ac 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -47,6 +47,15 @@ Stuff which is in development and not yet visible to players or just code relate
should be listed in the changelog upon commit though. Thanks. -->
+
+
16 May 2012
+
Erthilo updated:
+
+ - You can cut cable cuffs with wirecutters for quick removal.
+ - Stops pod windows leaking air everywhere.
+
+
+
15 May 2012
TG updated:
@@ -70,7 +79,6 @@ should be listed in the changelog upon commit though. Thanks. -->
The Head of Personnel can now change alert levels.
Fixes lockdown computers being blank.
-