diff --git a/code/defines/area/Space Station 13 areas.dm b/code/defines/area/Space Station 13 areas.dm
index ebf285b3d5e..586387a3e60 100644
--- a/code/defines/area/Space Station 13 areas.dm
+++ b/code/defines/area/Space Station 13 areas.dm
@@ -223,9 +223,6 @@ proc/process_ghost_teleport_locs()
icon_state = "shuttle"
name = "\improper Transport Shuttle"
-/area/shuttle/transport2/centcom
- icon_state = "shuttle"
-
/area/shuttle/alien/base
icon_state = "shuttle"
name = "\improper Alien Shuttle Base"
@@ -1456,7 +1453,6 @@ var/list/centcom_areas = list (
/area/shuttle/escape_pod3/centcom,
/area/shuttle/escape_pod5/centcom,
/area/shuttle/transport1/centcom,
- /area/shuttle/transport2/centcom,
/area/shuttle/administration/centcom,
/area/shuttle/specops/centcom,
)
diff --git a/code/defines/obj/toy.dm b/code/defines/obj/toy.dm
index 7797812474b..719042ddd5f 100644
--- a/code/defines/obj/toy.dm
+++ b/code/defines/obj/toy.dm
@@ -13,56 +13,56 @@
/obj/item/toy/prize/ripley
name = "toy ripley"
- desc = "Mini-Mecha action figure! Collect them all! 1/11"
+ desc = "Mini-Mecha action figure! Collect them all! 1/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
/obj/item/toy/prize/fireripley
name = "toy firefighting ripley"
- desc = "Mini-Mecha action figure! Collect them all! 2/11"
+ desc = "Mini-Mecha action figure! Collect them all! 2/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
icon_state = "fireripleytoy"
/obj/item/toy/prize/deathripley
name = "toy deathsquad ripley"
- desc = "Mini-Mecha action figure! Collect them all! 3/11"
+ desc = "Mini-Mecha action figure! Collect them all! 3/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
icon_state = "deathripleytoy"
/obj/item/toy/prize/gygax
name = "toy gygax"
- desc = "Mini-Mecha action figure! Collect them all! 4/11"
+ desc = "Mini-Mecha action figure! Collect them all! 4/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
icon_state = "gygaxtoy"
/obj/item/toy/prize/durand
name = "toy gygax"
- desc = "Mini-Mecha action figure! Collect them all! 5/11"
+ desc = "Mini-Mecha action figure! Collect them all! 5/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
icon_state = "durandprize"
/obj/item/toy/prize/honk
name = "toy H.O.N.K."
- desc = "Mini-Mecha action figure! Collect them all! 6/11"
+ desc = "Mini-Mecha action figure! Collect them all! 6/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
icon_state = "honkprize"
/obj/item/toy/prize/marauder
name = "toy marauder"
- desc = "Mini-Mecha action figure! Collect them all! 7/11"
+ desc = "Mini-Mecha action figure! Collect them all! 7/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
icon_state = "marauderprize"
/obj/item/toy/prize/seraph
name = "toy seraph"
- desc = "Mini-Mecha action figure! Collect them all! 8/11"
+ desc = "Mini-Mecha action figure! Collect them all! 8/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
icon_state = "seraphprize"
/obj/item/toy/prize/mauler
name = "toy mauler"
- desc = "Mini-Mecha action figure! Collect them all! 9/11"
+ desc = "Mini-Mecha action figure! Collect them all! 9/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
icon_state = "maulerprize"
/obj/item/toy/prize/odysseus
name = "toy odysseus"
- desc = "Mini-Mecha action figure! Collect them all! 10/11"
+ desc = "Mini-Mecha action figure! Collect them all! 10/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
icon_state = "odysseusprize"
/obj/item/toy/prize/phazon
name = "toy phazon"
- desc = "Mini-Mecha action figure! Collect them all! 11/11"
+ desc = "Mini-Mecha action figure! Collect them all! 11/11. Send the full collection in a closed crate to CentCom at your local quartermaster for a GREAT reward!"
icon_state = "phazonprize"
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 7383c441813..da1629654f2 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -85,7 +85,7 @@
if(..())
return
- if (!src.blocked)
+ if (!src.blocked && !src.gameover)
if (href_list["attack"])
src.blocked = 1
var/attackamt = rand(2,6)
@@ -148,30 +148,33 @@
/obj/machinery/computer/arcade/proc/arcade_action()
if ((src.enemy_mp <= 0) || (src.enemy_hp <= 0))
- src.gameover = 1
- src.temp = "[src.enemy_name] has fallen! Rejoice!"
+ if(!gameover)
+ src.gameover = 1
+ src.temp = "[src.enemy_name] has fallen! Rejoice!"
- if(emagged)
- new /obj/effect/spawner/newbomb/timer/syndicate(src.loc)
- new /obj/item/clothing/head/collectable/petehat(src.loc)
- message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.")
- log_game("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.")
- src.New()
- emagged = 0
+ if(emagged)
+ feedback_inc("arcade_win_emagged")
+ new /obj/effect/spawner/newbomb/timer/syndicate(src.loc)
+ new /obj/item/clothing/head/collectable/petehat(src.loc)
+ message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.")
+ log_game("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.")
+ src.New()
+ emagged = 0
+ else if(!contents.len)
+ feedback_inc("arcade_win_normal")
+ var/prizeselect = pickweight(prizes)
+ new prizeselect(src.loc)
- else if(!contents.len)
- var/prizeselect = pickweight(prizes)
- new prizeselect(src.loc)
+ if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun
+ new /obj/item/toy/ammo/gun(src.loc)
- if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun
- new /obj/item/toy/ammo/gun(src.loc)
+ else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit
+ new /obj/item/clothing/head/syndicatefake(src.loc)
- else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit
- new /obj/item/clothing/head/syndicatefake(src.loc)
-
- else
- var/atom/movable/Prize = pick(contents)
- Prize.loc = src.loc
+ else
+ feedback_inc("arcade_win_normal")
+ var/atom/movable/prize = pick(contents)
+ prize.loc = src.loc
else if (emagged && (turtle >= 4))
var/boomamt = rand(5,10)
@@ -189,7 +192,10 @@
sleep(10)
src.temp = "You have been drained! GAME OVER"
if(emagged)
+ feedback_inc("arcade_loss_mana_emagged")
usr.gib()
+ else
+ feedback_inc("arcade_loss_mana_normal")
else if ((src.enemy_hp <= 10) && (src.enemy_mp > 4))
src.temp = "[src.enemy_name] heals for 4 health!"
@@ -205,7 +211,10 @@
src.gameover = 1
src.temp = "You have been crushed! GAME OVER"
if(emagged)
+ feedback_inc("arcade_loss_hp_emagged")
usr.gib()
+ else
+ feedback_inc("arcade_loss_hp_normal")
src.blocked = 0
return
diff --git a/code/game/master_controller.dm b/code/game/master_controller.dm
index a35e7fd69f5..157cc9cdb60 100644
--- a/code/game/master_controller.dm
+++ b/code/game/master_controller.dm
@@ -97,11 +97,6 @@ datum/controller/game_controller
proc/process()
- if(!Failsafe)
- Failsafe = new /datum/failsafe
- spawn(0)
- Failsafe.spin()
-
var/currenttime = world.timeofday
var/diff = (currenttime - last_tick_timeofday) / 10
last_tick_timeofday = currenttime
@@ -229,40 +224,4 @@ datum/controller/game_controller
process()
- return 1
-
-
-
-/datum/failsafe // This thing pretty much just keeps poking the master controller
- var/spinning = 1
- var/current_iteration = 0
-
-/datum/failsafe/proc/spin()
- if(!master_controller) // Well fuck. How did this happen?
- sleep(50)
- if(!master_controller)
- master_controller = new /datum/controller/game_controller()
- spawn(-1)
- master_controller.setup()
-
- else
- while(spinning)
- current_iteration = controller_iteration
- sleep(600) // Wait 15 seconds
- if(current_iteration == controller_iteration) // Mm. The master controller hasn't ticked yet.
-
- for (var/mob/M in world)
- if (M.client && M.client.holder)
- M << " Warning. The Master Controller has not fired in the last 60 seconds. Restart recommended. Automatic restart in 60 seconds."
-
- sleep(600)
- if(current_iteration == controller_iteration)
- for (var/mob/M in world)
- if (M.client && M.client.holder)
- M << " Warning. The Master Controller has not fired in the last 2 minutes. Automatic restart beginning."
- master_controller.process()
- sleep(150)
- else
- for (var/mob/M in world)
- if (M.client && M.client.holder)
- M << " The Master Controller has fired. Automatic restart aborted."
\ No newline at end of file
+ return 1
\ No newline at end of file
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index 519e039f151..021459ee06b 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -2,8 +2,8 @@
#define SUPPLY_DOCKZ 2 //Z-level of the Dock.
#define SUPPLY_STATIONZ 1 //Z-level of the Station.
#define SUPPLY_POINTSPER 10 //Points per tick.
-#define SUPPLY_POINTDELAY 3000 //Delay between ticks in milliseconds.
-#define SUPPLY_MOVETIME 1800 //Time to station is milliseconds.
+#define SUPPLY_POINTDELAY 3000 //Delay between ticks in milliseconds.
+#define SUPPLY_MOVETIME 1200 //Time to station is milliseconds.
#define SUPPLY_POINTSPERCRATE 5 //Points per crate sent back.
#define SUPPLY_STATION_AREATYPE "/area/supply/station" //Type of the supply shuttle area for station
#define SUPPLY_DOCK_AREATYPE "/area/supply/dock" //Type of the supply shuttle area for dock
@@ -18,6 +18,21 @@ var/supply_shuttle_time = 0
var/supply_shuttle_timeleft = 0
var/supply_shuttle_points = 50
var/ordernum=0
+var/supplyshuttle_mech_redeem = 0 //You can redeem a full set of mech toys for a reward.
+
+var/list/mechtoys = list(
+ /obj/item/toy/prize/ripley,
+ /obj/item/toy/prize/fireripley,
+ /obj/item/toy/prize/deathripley,
+ /obj/item/toy/prize/gygax,
+ /obj/item/toy/prize/durand,
+ /obj/item/toy/prize/honk,
+ /obj/item/toy/prize/marauder,
+ /obj/item/toy/prize/seraph,
+ /obj/item/toy/prize/mauler,
+ /obj/item/toy/prize/odysseus,
+ /obj/item/toy/prize/phazon
+)
/area/supply/station //DO NOT TURN THE SD_LIGHTING STUFF ON FOR SHUTTLES. IT BREAKS THINGS.
name = "supply shuttle"
@@ -81,11 +96,6 @@ var/ordernum=0
T.blocks_air = 0
..()
-/area/supplyshuttle
- name = "Supply Shuttle"
- icon_state = "supply"
- requires_power = 0
-
/obj/machinery/computer/supplycomp
name = "Supply shuttle console"
icon = 'computer.dmi'
@@ -214,6 +224,16 @@ This method wont take into account storage items developed in the future and doe
del(slip)
var/crate = locate(/obj/structure/closet/crate) in T
if(crate)
+ if(mechtoys)
+ var/toysfound = 0
+ for(var/toytype in mechtoys)
+ if( !locate(toytype) in crate )
+ break
+ else
+ toysfound++
+ if(toysfound && toysfound == mechtoys.len)
+ supplyshuttle_mech_redeem++
+ feedback_inc("supply_mech_collection_redeemed")
del(crate)
supply_shuttle_points += SUPPLY_POINTSPERCRATE
@@ -235,10 +255,13 @@ This method wont take into account storage items developed in the future and doe
var/pickedloc = 0
var/found = 0
for(var/C in markers)
- if ((locate(/obj/structure/closet/crate) in get_turf(C)) || (locate(/obj/structure/largecrate) in get_turf(C))) continue
+ if ((locate(/obj/structure/closet/crate) in get_turf(C)) || (locate(/obj/structure/largecrate) in get_turf(C)))
+ continue
found = 1
pickedloc = get_turf(C)
- if (!found) pickedloc = get_turf(pick(markers))
+ break
+ if (!found)
+ pickedloc = get_turf(pick(markers))
var/datum/supply_order/SO = S
var/datum/supply_packs/SP = SO.object
@@ -275,6 +298,26 @@ This method wont take into account storage items developed in the future and doe
slip.info += "
"
slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS