diff --git a/_maps/map_files/RandomRuins/SpaceRuins/clownmime.dmm b/_maps/map_files/RandomRuins/SpaceRuins/clownmime.dmm
index 853fed945a1..f3c7a0b0e89 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/clownmime.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/clownmime.dmm
@@ -146,7 +146,7 @@
/turf/simulated/floor/plating/airless,
/area/space/nearstation)
"F" = (
-/obj/structure/computerframe/HONKputer,
+/obj/structure/computerframe,
/turf/simulated/floor/plasteel/airless,
/area/space/nearstation)
"G" = (
diff --git a/code/__DEFINES/gamemode.dm b/code/__DEFINES/gamemode.dm
index 9aee8f85eba..042fdc6e3e9 100644
--- a/code/__DEFINES/gamemode.dm
+++ b/code/__DEFINES/gamemode.dm
@@ -32,7 +32,6 @@
#define SPECIAL_ROLE_FREE_GOLEM "Free Golem"
#define SPECIAL_ROLE_GOLEM "Golem"
#define SPECIAL_ROLE_HEAD_REV "Head Revolutionary"
-#define SPECIAL_ROLE_HONKSQUAD "Honksquad"
#define SPECIAL_ROLE_REV "Revolutionary"
#define SPECIAL_ROLE_MORPH "Morph"
#define SPECIAL_ROLE_MULTIVERSE "Multiverse Traveller"
diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm
index fb8d4d99720..816a80f7379 100644
--- a/code/datums/outfits/outfit_admin.dm
+++ b/code/datums/outfits/outfit_admin.dm
@@ -1223,3 +1223,68 @@
var/obj/item/radio/headset/R = H.l_ear
if(istype(R))
R.flags |= NODROP
+
+/datum/outfit/admin/honksquad
+ name = "Honksquad"
+
+ uniform = /obj/item/clothing/under/rank/clown
+ mask = /obj/item/clothing/mask/gas/clown_hat
+ back = /obj/item/storage/backpack/clown
+ id = /obj/item/card/id/clown
+
+ backpack_contents = list(
+ /obj/item/storage/box/survival = 1,
+ /obj/item/bikehorn = 1,
+ /obj/item/stamp/clown = 1,
+ /obj/item/toy/crayon/rainbow = 1,
+ /obj/item/reagent_containers/spray/waterflower = 1,
+ /obj/item/reagent_containers/food/snacks/grown/banana = 1,
+ )
+
+ shoes = /obj/item/clothing/shoes/clown_shoes
+ suit = /obj/item/clothing/suit/storage/det_suit
+ pda = /obj/item/pda/clown
+ l_ear = /obj/item/radio/headset
+ r_pocket = /obj/item/reagent_containers/food/pill/patch/jestosterone
+
+/datum/outfit/admin/honksquad/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ . = ..()
+ if(H.gender == FEMALE)
+ uniform = /obj/item/clothing/under/rank/clown/sexy
+ mask = /obj/item/clothing/mask/gas/clown_hat/sexy
+
+ if(prob(50))
+ // You have to do it like this to make it work with assoc lists without a runtime.
+ // Trust me.
+ backpack_contents.Add(/obj/item/gun/energy/clown)
+ backpack_contents[/obj/item/gun/energy/clown] = 1 // Amount. Not boolean. Do not TRUE this. You turkey.
+ else
+ backpack_contents.Add(/obj/item/gun/throw/piecannon)
+ backpack_contents[/obj/item/gun/throw/piecannon] = 1
+
+/datum/outfit/admin/honksquad/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ . = ..()
+ if(visualsOnly)
+ return
+
+ // Setup their clumsy gene
+ H.dna.SetSEState(GLOB.clumsyblock, TRUE)
+ H.check_mutations = TRUE
+
+ // Setup their headset
+ var/obj/item/radio/R = H.l_ear
+ if(istype(R))
+ R.set_frequency(DTH_FREQ) // Clowns can be part of "special operations"
+
+ // And their PDA
+ var/obj/item/pda/P = H.wear_pda
+ if(istype(P))
+ P.owner = H.real_name
+ P.ownjob = "Clown"
+ P.name = "PDA-[H.real_name] ([P.ownjob])"
+
+ // And their ID
+ var/obj/item/card/id/I = H.wear_id
+ if(istype(I))
+ apply_to_card(I, H, list(ACCESS_CLOWN), "Clown")
+ H.sec_hud_set_ID()
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 3abc12a169d..6cba8733a2d 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -7,7 +7,6 @@
max_integrity = 100
var/state = 0
var/obj/item/circuitboard/circuit = null
- var/base_mineral = /obj/item/stack/sheet/metal
/obj/structure/computerframe/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT))
@@ -18,7 +17,7 @@
deconstruct()
/obj/structure/computerframe/proc/drop_computer_parts()
- new base_mineral(loc, 5)
+ new /obj/item/stack/sheet/metal(loc, 5)
if(circuit)
circuit.forceMove(loc)
circuit = null
@@ -357,14 +356,6 @@
build_path = /obj/machinery/computer/turbine_computer
origin_tech = "programming=4;engineering=4;powerstorage=4"
-/obj/item/circuitboard/HONKputer
- name = "Circuit board (HONKputer)"
- build_path = /obj/machinery/computer/HONKputer
- origin_tech = "programming=2"
- icon = 'icons/obj/machines/HONKputer.dmi'
- icon_state = "bananium_board"
- board_type = "honkcomputer"
-
/obj/item/circuitboard/supplycomp/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I,/obj/item/multitool))
@@ -552,116 +543,3 @@
if(I.use_tool(src, user, 50, volume = I.tool_volume) && !state)
to_chat(user, "You deconstruct [src].")
deconstruct(TRUE)
-
-
-
-/obj/structure/computerframe/HONKputer
- name = "Bananium Computer-frame"
- icon = 'icons/obj/machines/HONKputer.dmi'
- base_mineral = /obj/item/stack/sheet/mineral/bananium
-
-/obj/structure/computerframe/HONKputer/attackby(obj/item/P as obj, mob/user as mob, params)
- switch(state)
- if(0)
- if(istype(P, /obj/item/wrench))
- playsound(loc, P.usesound, 50, 1)
- if(do_after(user, 20, target = src))
- to_chat(user, "You wrench the frame into place.")
- anchored = 1
- state = 1
- if(1)
- if(istype(P, /obj/item/wrench))
- playsound(loc, P.usesound, 50, 1)
- if(do_after(user, 20 * P.toolspeed, target = src))
- to_chat(user, "You unfasten the frame.")
- anchored = 0
- state = 0
- if(istype(P, /obj/item/circuitboard) && !circuit)
- var/obj/item/circuitboard/B = P
- if(B.board_type == "honkcomputer")
- playsound(loc, P.usesound, 50, 1)
- to_chat(user, "You place the circuit board inside the frame.")
- icon_state = "1"
- circuit = P
- user.drop_item()
- P.loc = src
- else
- to_chat(user, "This frame does not accept circuit boards of this type!")
- if(istype(P, /obj/item/screwdriver) && circuit)
- playsound(loc, P.usesound, 50, 1)
- to_chat(user, "You screw the circuit board into place.")
- state = 2
- icon_state = "2"
- if(istype(P, /obj/item/crowbar) && circuit)
- playsound(loc, P.usesound, 50, 1)
- to_chat(user, "You remove the circuit board.")
- state = 1
- icon_state = "0"
- circuit.loc = loc
- circuit = null
- return
- if(2)
- if(istype(P, /obj/item/screwdriver) && circuit)
- playsound(loc, P.usesound, 50, 1)
- to_chat(user, "You unfasten the circuit board.")
- state = 1
- icon_state = "1"
- if(istype(P, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/C = P
- if(C.get_amount() >= 5)
- playsound(loc, C.usesound, 50, 1)
- to_chat(user, "You start to add cables to the frame.")
- if(do_after(user, 20 * C.toolspeed, target = src))
- if(state == 2 && C.get_amount() >= 5 && C.use(5))
- to_chat(user, "You add cables to the frame.")
- state = 3
- icon_state = "3"
- else
- to_chat(user, "At some point during construction you lost some cable. Make sure you have five lengths before trying again.")
- return
- else
- to_chat(user, "You need five lengths of cable to wire the frame.")
- return
- if(3)
- if(istype(P, /obj/item/wirecutters))
- playsound(loc, P.usesound, 50, 1)
- to_chat(user, "You remove the cables.")
- state = 2
- icon_state = "2"
- var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc )
- A.amount = 5
-
- if(istype(P, /obj/item/stack/sheet/glass))
- var/obj/item/stack/sheet/glass/G = P
- if(G.get_amount() >= 2)
- playsound(loc, G.usesound, 50, 1)
- to_chat(user, "You start to add the glass panel to the frame.")
- if(do_after(user, 20 * G.toolspeed, target = src))
- if(state == 3 && G.get_amount() >= 2 && G.use(2))
- to_chat(user, "You put in the glass panel.")
- state = 4
- icon_state = "4"
- else
- to_chat(user, "At some point during construction you lost some glass. Make sure you have two sheets before trying again.")
- return
- else
- to_chat(user, "You need two sheets of glass for this.")
- return
- if(4)
- if(istype(P, /obj/item/crowbar))
- playsound(loc, P.usesound, 50, 1)
- to_chat(user, "You remove the glass panel.")
- state = 3
- icon_state = "3"
- new /obj/item/stack/sheet/glass(loc, 2)
- if(istype(P, /obj/item/screwdriver))
- playsound(loc, P.usesound, 50, 1)
- to_chat(user, "You connect the monitor.")
- var/B = new circuit.build_path (loc)
- if(circuit.powernet) B:powernet = circuit.powernet
- if(circuit.id) B:id = circuit.id
- if(circuit.records) B:records = circuit.records
- if(circuit.frequency) B:frequency = circuit.frequency
- qdel(src)
- return
- return ..()
diff --git a/code/game/machinery/computer/honkputer.dm b/code/game/machinery/computer/honkputer.dm
deleted file mode 100644
index 6990e1c3dc8..00000000000
--- a/code/game/machinery/computer/honkputer.dm
+++ /dev/null
@@ -1,118 +0,0 @@
-/obj/machinery/computer/HONKputer
- name = "\improper HONKputer Mark I"
- desc = "A yellow computer used in case of critically low levels of HONK."
- icon = 'icons/obj/machines/HONKputer.dmi'
- icon_state = "honkputer"
- icon_keyboard = "key_honk"
- icon_screen = "honkcomms"
- light_color = LIGHT_COLOR_PINK
- req_access = list(ACCESS_CLOWN)
- circuit = /obj/item/circuitboard/HONKputer
- var/authenticated = 0
- var/message_cooldown = 0
- var/state = STATE_DEFAULT
- var/const/STATE_DEFAULT = 1
-
-/obj/machinery/computer/HONKputer/process()
- if(..())
- src.updateDialog()
-
-/obj/machinery/computer/HONKputer/Topic(href, href_list)
- if(..())
- return 1
- if(is_away_level(src.z))
- to_chat(usr, "Unable to establish a connection: You're too far away from the station!")
- return
- usr.set_machine(src)
-
- if(!href_list["operation"])
- return
- switch(href_list["operation"])
- // main interface
- if("main")
- src.state = STATE_DEFAULT
- if("login")
- var/mob/M = usr
- var/obj/item/card/id/I = M.get_active_hand()
- if(istype(I, /obj/item/pda))
- var/obj/item/pda/pda = I
- I = pda.id
- if(I && istype(I))
- if(src.check_access(I) || src.emagged==1)
- authenticated = 1
- if("logout")
- authenticated = 0
-
- if("MessageHonkplanet")
- if(src.authenticated==1)
- if(message_cooldown)
- to_chat(usr, "Arrays recycling. Please stand by.")
- return
- var/input = stripped_input(usr, "Please choose a message to transmit to your HONKbrothers on the homeworld. Transmission does not guarantee a response.", "To abort, send an empty message.", "")
- if(!input || !(usr in view(1,src)))
- return
- HONK_announce(input, usr)
- to_chat(usr, "Message transmitted.")
- log_game("[key_name(usr)] has made a HONKplanet announcement: [input]")
- message_cooldown = 1
- spawn(6000)//10 minute cooldown
- message_cooldown = 0
-
- src.updateUsrDialog()
-
-/obj/machinery/computer/HONKputer/emag_act(user as mob)
- if(!emagged)
- src.emagged = 1
- to_chat(user, "You scramble the login circuits, allowing anyone to use the console!")
-
-/obj/machinery/computer/HONKputer/attack_hand(mob/user as mob)
- if(..())
- return
- if(is_away_level(src.z))
- to_chat(user, "Unable to establish a connection: You're too far away from the station!")
- return
-
- user.set_machine(src)
- var/dat = "
HONKputer Interface"
-
- if(istype(user, /mob/living/silicon))
- to_chat(user, "This console is not networked to the rest of the grid.")
- return
-
- switch(src.state)
- if(STATE_DEFAULT)
- if(src.authenticated)
- dat += "
\[ Log Out \]"
- dat += "
\[ Send an emergency message to Honkplanet \]"
- else
- dat += "
\[ Log In \]"
-
-
- dat += "
\[ [(src.state != STATE_DEFAULT) ? "Main Menu | " : ""]Close \]"
- user << browse(dat, "window=honkputer;size=400x500")
- onclose(user, "honkputer")
-
-
-/obj/machinery/computer/HONKputer/attackby(obj/I, mob/user, params)
- if(istype(I, /obj/item/screwdriver) && circuit)
- var/obj/item/screwdriver/S = I
- playsound(src.loc, S.usesound, 50, 1)
- if(do_after(user, 20 * S.toolspeed, target = src))
- var/obj/structure/computerframe/HONKputer/A = new /obj/structure/computerframe/HONKputer( src.loc )
- var/obj/item/circuitboard/M = new circuit( A )
- A.circuit = M
- A.anchored = 1
- for(var/obj/C in src)
- C.loc = src.loc
- if(src.stat & BROKEN)
- to_chat(user, "The broken glass falls out.")
- new /obj/item/shard( src.loc )
- A.state = 3
- A.icon_state = "3"
- else
- to_chat(user, "You disconnect the monitor.")
- A.state = 4
- A.icon_state = "4"
- qdel(src)
- else
- return ..()
diff --git a/code/game/machinery/computer/salvage_ship.dm b/code/game/machinery/computer/salvage_ship.dm
deleted file mode 100644
index 917849101a5..00000000000
--- a/code/game/machinery/computer/salvage_ship.dm
+++ /dev/null
@@ -1,110 +0,0 @@
-#define SALVAGE_SHIP_MOVE_TIME 300
-#define SALVAGE_SHIP_COOLDOWN 800
-
-/obj/machinery/computer/salvage_ship
- name = "salvage ship terminal"
- icon = 'icons/obj/computer.dmi'
- icon_keyboard = "syndie_key"
- icon_screen = "syndishuttle"
- req_access = list(ACCESS_SALVAGE_CAPTAIN)
- var/area/curr_location
- var/moving = 0
- var/lastMove = 0
-
-
-/obj/machinery/computer/salvage_ship/New()
- . = ..()
- curr_location = locate(/area/shuttle/salvage/start)
-
-
-/obj/machinery/computer/salvage_ship/proc/salvage_move_to(area/destination as area)
- if(moving) return
- if(lastMove + SALVAGE_SHIP_COOLDOWN > world.time) return
- var/area/dest_location = locate(destination)
- if(curr_location == dest_location) return
-
- moving = 1
- lastMove = world.time
-
- if(curr_location.z != dest_location.z)
- var/area/transit_location = locate(/area/shuttle/salvage/transit)
- curr_location.move_contents_to(transit_location)
- curr_location = transit_location
- sleep(SALVAGE_SHIP_MOVE_TIME)
-
- curr_location.move_contents_to(dest_location)
- curr_location = dest_location
- moving = 0
- return 1
-
-/obj/machinery/computer/salvage_ship/attack_ai(mob/user as mob)
- src.add_hiddenprint(user)
- return attack_hand(user)
-
-/obj/machinery/computer/salvage_ship/attack_hand(mob/user as mob)
- if(!allowed(user))
- to_chat(user, "Access Denied")
- return
-
- user.set_machine(src)
-
- var/dat = {"Location: [curr_location]
- Ready to move[max(lastMove + SALVAGE_SHIP_COOLDOWN - world.time, 0) ? " in [max(round((lastMove + SALVAGE_SHIP_COOLDOWN - world.time) * 0.1), 0)] seconds" : ": now"]
- Middle of Nowhere
- Station Auxiliary Docking |
- North of the Station |
- East of the Station |
- South of the Station
- Trading Post
- Clown Asteroid |
- Derelict Station |
- Ruskie DJ Station
- Communications Satellite |
- Abandoned Ship
- Close"}
-
- user << browse(dat, "window=computer;size=575x450")
- onclose(user, "computer")
- return
-
-
-/obj/machinery/computer/salvage_ship/Topic(href, href_list)
- if(..())
- return 1
- if(!isliving(usr)) return
- var/mob/living/user = usr
-
- if(in_range(src, user) || istype(user, /mob/living/silicon))
- user.set_machine(src)
-
- if(href_list["salvage"])
- salvage_move_to(/area/shuttle/salvage/start)
- else if(href_list["start"])
- salvage_move_to(/area/shuttle/salvage/start)
- else if(href_list["arrivals"])
- salvage_move_to(/area/shuttle/salvage/arrivals)
- else if(href_list["derelict"])
- salvage_move_to(/area/shuttle/salvage/derelict)
- else if(href_list["djstation"])
- salvage_move_to(/area/shuttle/salvage/djstation)
- else if(href_list["north"])
- salvage_move_to(/area/shuttle/salvage/north)
- else if(href_list["east"])
- salvage_move_to(/area/shuttle/salvage/east)
- else if(href_list["south"])
- salvage_move_to(/area/shuttle/salvage/south)
- else if(href_list["commssat"])
- salvage_move_to(/area/shuttle/salvage/commssat)
- else if(href_list["abandoned_ship"])
- salvage_move_to(/area/shuttle/salvage/abandoned_ship)
- else if(href_list["clown_asteroid"])
- salvage_move_to(/area/shuttle/salvage/clown_asteroid)
- else if(href_list["trading_post"])
- salvage_move_to(/area/shuttle/salvage/trading_post)
-
- add_fingerprint(usr)
- updateUsrDialog()
- return
-
-/obj/machinery/computer/salvage_ship/bullet_act(obj/item/projectile/Proj)
- visible_message("[Proj] ricochets off [src]!")
diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm
deleted file mode 100644
index 216c4fd8b67..00000000000
--- a/code/game/machinery/computer/specops_shuttle.dm
+++ /dev/null
@@ -1,338 +0,0 @@
-//Config stuff
-#define SPECOPS_MOVETIME 600 //Time to station is milliseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves.
-#define SPECOPS_STATION_AREATYPE "/area/shuttle/specops/station" //Type of the spec ops shuttle area for station
-#define SPECOPS_DOCK_AREATYPE "/area/shuttle/specops/centcom" //Type of the spec ops shuttle area for dock
-#define SPECOPS_RETURN_DELAY 6000 //Time between the shuttle is capable of moving.
-
-GLOBAL_VAR_INIT(specops_shuttle_moving_to_station, 0)
-GLOBAL_VAR_INIT(specops_shuttle_moving_to_centcom, 0)
-GLOBAL_VAR_INIT(specops_shuttle_at_station, 0)
-GLOBAL_VAR_INIT(specops_shuttle_can_send, 1)
-GLOBAL_VAR_INIT(specops_shuttle_time, 0)
-GLOBAL_VAR_INIT(specops_shuttle_timeleft, 0)
-
-/obj/machinery/computer/specops_shuttle
- name = "\improper Spec. Ops. shuttle console"
- icon = 'icons/obj/computer.dmi'
- icon_keyboard = "security_key"
- icon_screen = "syndishuttle"
- light_color = LIGHT_COLOR_PURE_CYAN
- req_access = list(ACCESS_CENT_SPECOPS)
-// req_access = list(ACCESS_CENT_SPECOPS)
- var/temp = null
- var/hacked = 0
- var/allowedtocall = 0
- var/specops_shuttle_timereset = 0
-
-/proc/specops_return()
- var/obj/item/radio/intercom/announcer = new /obj/item/radio/intercom(null)//We need a fake AI to announce some stuff below. Otherwise it will be wonky.
- announcer.config(list("Response Team" = 0))
-
- var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values.
- var/message = "\"THE SPECIAL OPERATIONS SHUTTLE IS PREPARING TO RETURN\""//Initial message shown.
- if(announcer)
- announcer.autosay(message, "A.L.I.C.E.", "Response Team", list(1,2))
-
- while(GLOB.specops_shuttle_time - world.timeofday > 0)
- var/ticksleft = GLOB.specops_shuttle_time - world.timeofday
-
- if(ticksleft > 1e5)
- GLOB.specops_shuttle_time = world.timeofday + 10 // midnight rollover
- GLOB.specops_shuttle_timeleft = (ticksleft / 10)
-
- //All this does is announce the time before launch.
- if(announcer)
- var/rounded_time_left = round(GLOB.specops_shuttle_timeleft)//Round time so that it will report only once, not in fractions.
- if(rounded_time_left in message_tracker)//If that time is in the list for message announce.
- message = "\"ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN\""
- if(rounded_time_left==0)
- message = "\"ALERT: TAKEOFF\""
- announcer.autosay(message, "A.L.I.C.E.", "Response Team")
- message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle.
- //Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that.
-
- sleep(5)
-
- GLOB.specops_shuttle_moving_to_station = 0
- GLOB.specops_shuttle_moving_to_centcom = 0
-
- GLOB.specops_shuttle_at_station = 1
-
- var/area/start_location = locate(/area/shuttle/specops/station)
- var/area/end_location = locate(/area/shuttle/specops/centcom)
-
- var/list/dstturfs = list()
- var/throwy = world.maxy
-
- for(var/turf/T in end_location)
- dstturfs += T
- if(T.y < throwy)
- throwy = T.y
-
- // hey you, get out of the way!
- for(var/turf/T in dstturfs)
- // find the turf to move things to
- var/turf/D = locate(T.x, throwy - 1, 1)
- //var/turf/E = get_step(D, SOUTH)
- for(var/atom/movable/AM as mob|obj in T)
- AM.Move(D)
- if(istype(T, /turf/simulated))
- qdel(T)
-
- for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area...
- bug.gib()
-
- for(var/mob/living/simple_animal/pest in end_location) // And for the other kind of bug...
- pest.gib()
-
- start_location.move_contents_to(end_location)
-
- for(var/turf/T in get_area_turfs(end_location) )
- var/mob/M = locate(/mob) in T
- to_chat(M, "You have arrived at Central Command. Operation has ended!")
-
- GLOB.specops_shuttle_at_station = 0
-
- for(var/obj/machinery/computer/specops_shuttle/S in GLOB.machines)
- S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY
-
- qdel(announcer)
-
-/proc/specops_process()
- var/area/centcom/specops/special_ops = locate()//Where is the specops area located?
- var/obj/item/radio/intercom/announcer = new /obj/item/radio/intercom(null)//We need a fake AI to announce some stuff below. Otherwise it will be wonky.
- announcer.config(list("Response Team" = 0))
-
- var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values.
- var/message = "\"THE SPECIAL OPERATIONS SHUTTLE IS PREPARING FOR LAUNCH\""//Initial message shown.
- if(announcer)
- announcer.autosay(message, "A.L.I.C.E.", "Response Team")
- //message = "ARMORED SQUAD TAKE YOUR POSITION ON GRAVITY LAUNCH PAD"
- //announcer.autosay(message, "A.L.I.C.E.", "Response Team")
-
- while(GLOB.specops_shuttle_time - world.timeofday > 0)
- var/ticksleft = GLOB.specops_shuttle_time - world.timeofday
-
- if(ticksleft > 1e5)
- GLOB.specops_shuttle_time = world.timeofday + 10 // midnight rollover
- GLOB.specops_shuttle_timeleft = (ticksleft / 10)
-
- //All this does is announce the time before launch.
- if(announcer)
- var/rounded_time_left = round(GLOB.specops_shuttle_timeleft)//Round time so that it will report only once, not in fractions.
- if(rounded_time_left in message_tracker)//If that time is in the list for message announce.
- message = "\"ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN\""
- if(rounded_time_left==0)
- message = "\"ALERT: TAKEOFF\""
- announcer.autosay(message, "A.L.I.C.E.", "Response Team")
- message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle.
- //Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that.
-
- sleep(5)
-
- GLOB.specops_shuttle_moving_to_station = 0
- GLOB.specops_shuttle_moving_to_centcom = 0
-
- GLOB.specops_shuttle_at_station = 1
- if(GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom) return
-
- if(!specops_can_move())
- to_chat(usr, "The Special Operations shuttle is unable to leave.")
- return
-
- //Begin Marauder launchpad.
- spawn(0)//So it parallel processes it.
- for(var/obj/machinery/door/poddoor/M in special_ops)
- switch(M.id_tag)
- if("ASSAULT0")
- spawn(10)//1 second delay between each.
- M.open()
- if("ASSAULT1")
- spawn(20)
- M.open()
- if("ASSAULT2")
- spawn(30)
- M.open()
- if("ASSAULT3")
- spawn(40)
- M.open()
-
- sleep(10)
-
- var/spawn_marauder[] = new()
- for(var/thing in GLOB.landmarks_list)
- var/obj/effect/landmark/L = thing
- if(L.name == "Marauder Entry")
- spawn_marauder.Add(L.loc)
- for(var/thing in GLOB.landmarks_list)
- var/obj/effect/landmark/L = thing
- if(L.name == "Marauder Exit")
- var/obj/effect/portal/P = new(L.loc, pick(spawn_marauder))
- //P.invisibility = 101//So it is not seen by anyone.
- P.failchance = 0//So it has no fail chance when teleporting.
- spawn_marauder.Remove(P.target)
-
- sleep(10)
-
- for(var/obj/machinery/mass_driver/M in special_ops)
- switch(M.id_tag)
- if("ASSAULT0")
- spawn(10)
- M.drive()
- if("ASSAULT1")
- spawn(20)
- M.drive()
- if("ASSAULT2")
- spawn(30)
- M.drive()
- if("ASSAULT3")
- spawn(40)
- M.drive()
-
- sleep(50)//Doors remain open for 5 seconds.
-
- for(var/obj/machinery/door/poddoor/M in special_ops)
- switch(M.id_tag)//Doors close at the same time.
- if("ASSAULT0")
- spawn(0)
- M.close()
- if("ASSAULT1")
- spawn(0)
- M.close()
- if("ASSAULT2")
- spawn(0)
- M.close()
- if("ASSAULT3")
- spawn(0)
- M.close()
- //End Marauder launchpad.
-
- var/area/start_location = locate(/area/shuttle/specops/centcom)
- var/area/end_location = locate(/area/shuttle/specops/station)
-
- var/list/dstturfs = list()
- var/throwy = world.maxy
-
- for(var/turf/T in end_location)
- dstturfs += T
- if(T.y < throwy)
- throwy = T.y
-
- // hey you, get out of the way!
- for(var/turf/T in dstturfs)
- // find the turf to move things to
- var/turf/D = locate(T.x, throwy - 1, 1)
- //var/turf/E = get_step(D, SOUTH)
- for(var/atom/movable/AM as mob|obj in T)
- AM.Move(D)
- if(istype(T, /turf/simulated))
- qdel(T)
-
- start_location.move_contents_to(end_location)
-
- for(var/turf/T in get_area_turfs(end_location) )
- var/mob/M = locate(/mob) in T
- to_chat(M, "You have arrived to [station_name()]. Commence operation!")
-
- for(var/obj/machinery/computer/specops_shuttle/S in GLOB.machines)
- S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY
-
- qdel(announcer)
-
-/proc/specops_can_move()
- if(GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom)
- return 0
- for(var/obj/machinery/computer/specops_shuttle/S in GLOB.machines)
- if(world.timeofday <= S.specops_shuttle_timereset)
- return 0
- return 1
-
-/obj/machinery/computer/specops_shuttle/attack_ai(mob/user as mob)
- to_chat(user, "Access Denied.")
- return 1
-
-/obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob, params)
- if(istype(I,/obj/item/card/emag))
- to_chat(user, "The electronic systems in this console are far too advanced for your primitive hacking peripherals.")
- else
- return ..()
-
-/obj/machinery/computer/specops_shuttle/attack_hand(mob/user as mob)
- if(!allowed(user))
- to_chat(user, "Access Denied.")
- return
-
-//Commented out so admins can do shenanigans at their leisure. Also makes the force-spawned admin ERTs able to use the shuttle.
-// if(sent_strike_team == 0 && send_emergency_team == 0)
-// to_chat(usr, "The strike team has not yet deployed.")
-// return
-
- if(..())
- return
-
- user.machine = src
- var/dat
- if(temp)
- dat = temp
- else
- dat += {"
Special Operations Shuttle
- \nLocation: [GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom ? "Departing for [station_name()] in ([GLOB.specops_shuttle_timeleft] seconds.)":GLOB.specops_shuttle_at_station ? "Station":"Dock"]
- [GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom ? "\n*The Special Ops. shuttle is already leaving.*
\n
":GLOB.specops_shuttle_at_station ? "\nShuttle standing by...
\n
":"\nDepart to [station_name()]
\n
"]
- \nClose"}
-
- user << browse(dat, "window=computer;size=575x450")
- onclose(user, "computer")
- return
-
-/obj/machinery/computer/specops_shuttle/Topic(href, href_list)
- if(..())
- return 1
-
- if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
- usr.machine = src
-
- if(href_list["sendtodock"])
- if(!GLOB.specops_shuttle_at_station|| GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom) return
-
- if(!specops_can_move())
- to_chat(usr, "Central Command will not allow the Special Operations shuttle to return yet.")
- if(world.timeofday <= specops_shuttle_timereset)
- if(((world.timeofday - specops_shuttle_timereset)/10) > 60)
- to_chat(usr, "[-((world.timeofday - specops_shuttle_timereset)/10)/60] minutes remain!")
- to_chat(usr, "[-(world.timeofday - specops_shuttle_timereset)/10] seconds remain!")
- return
-
- to_chat(usr, "The Special Operations shuttle will arrive at Central Command in [(SPECOPS_MOVETIME/10)] seconds.")
-
- temp += "Shuttle departing.
OK"
- updateUsrDialog()
-
- GLOB.specops_shuttle_moving_to_centcom = 1
- GLOB.specops_shuttle_time = world.timeofday + SPECOPS_MOVETIME
- spawn(0)
- specops_return()
-
- else if(href_list["sendtostation"])
- if(GLOB.specops_shuttle_at_station || GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom) return
-
- if(!specops_can_move())
- to_chat(usr, "The Special Operations shuttle is unable to leave.")
- return
-
- to_chat(usr, "The Special Operations shuttle will arrive on [station_name()] in [(SPECOPS_MOVETIME/10)] seconds.")
-
- temp += "Shuttle departing.
OK"
- updateUsrDialog()
-
- GLOB.specops_shuttle_moving_to_station = 1
-
- GLOB.specops_shuttle_time = world.timeofday + SPECOPS_MOVETIME
- spawn(0)
- specops_process()
-
- else if(href_list["mainmenu"])
- temp = null
-
- add_fingerprint(usr)
- updateUsrDialog()
- return
diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm
deleted file mode 100644
index 6b72e5bbf5b..00000000000
--- a/code/game/machinery/computer/syndicate_specops_shuttle.dm
+++ /dev/null
@@ -1,254 +0,0 @@
-//Config stuff
-#define SYNDICATE_ELITE_MOVETIME 600 //Time to station is milliseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves.
-#define SYNDICATE_ELITE_STATION_AREATYPE "/area/shuttle/syndicate_elite/station" //Type of the spec ops shuttle area for station
-#define SYNDICATE_ELITE_DOCK_AREATYPE "/area/shuttle/syndicate_elite/mothership" //Type of the spec ops shuttle area for dock
-
-GLOBAL_VAR_INIT(syndicate_elite_shuttle_moving_to_station, 0)
-GLOBAL_VAR_INIT(syndicate_elite_shuttle_moving_to_mothership, 0)
-GLOBAL_VAR_INIT(syndicate_elite_shuttle_at_station, 0)
-GLOBAL_VAR_INIT(syndicate_elite_shuttle_can_send, 1)
-GLOBAL_VAR_INIT(syndicate_elite_shuttle_time, 0)
-GLOBAL_VAR_INIT(syndicate_elite_shuttle_timeleft, 0)
-
-/obj/machinery/computer/syndicate_elite_shuttle
- name = "\improper Elite Syndicate Squad shuttle console"
- icon = 'icons/obj/computer.dmi'
- icon_keyboard = "syndie_key"
- icon_screen = "syndishuttle"
- light_color = LIGHT_COLOR_PURE_CYAN
- req_access = list(ACCESS_SYNDICATE)
- bubble_icon = "syndibot"
- var/temp = null
- var/hacked = 0
- var/allowedtocall = 0
-
-/proc/syndicate_elite_process()
- var/area/syndicate_mothership/control/syndicate_ship = locate()//To find announcer. This area should exist for this proc to work.
- //var/area/syndicate_mothership/elite_squad/elite_squad = locate()//Where is the specops area located?
- var/mob/living/silicon/decoy/announcer = locate() in syndicate_ship//We need a fake AI to announce some stuff below. Otherwise it will be wonky.
-
- var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values.
- var/message = "THE SYNDICATE ELITE SHUTTLE IS PREPARING FOR LAUNCH"//Initial message shown.
- if(announcer)
- announcer.say(message)
- // message = "ARMORED SQUAD TAKE YOUR POSITION ON GRAVITY LAUNCH PAD"
- // announcer.say(message)
-
- while(GLOB.syndicate_elite_shuttle_time - world.timeofday > 0)
- var/ticksleft = GLOB.syndicate_elite_shuttle_time - world.timeofday
-
- if(ticksleft > 1e5)
- GLOB.syndicate_elite_shuttle_time = world.timeofday // midnight rollover
- GLOB.syndicate_elite_shuttle_timeleft = (ticksleft / 10)
-
- //All this does is announce the time before launch.
- if(announcer)
- var/rounded_time_left = round(GLOB.syndicate_elite_shuttle_timeleft)//Round time so that it will report only once, not in fractions.
- if(rounded_time_left in message_tracker)//If that time is in the list for message announce.
- message = "ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN"
- if(rounded_time_left==0)
- message = "ALERT: TAKEOFF"
- announcer.say(message)
- message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle.
- //Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that.
-
- sleep(5)
-
- GLOB.syndicate_elite_shuttle_moving_to_station = 0
- GLOB.syndicate_elite_shuttle_moving_to_mothership = 0
-
- GLOB.syndicate_elite_shuttle_at_station = 1
- if(GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership) return
-
- if(!syndicate_elite_can_move())
- to_chat(usr, "The Syndicate Elite shuttle is unable to leave.")
- return
-
-/*
- //Begin Marauder launchpad.
- spawn(0)//So it parallel processes it.
- for(var/obj/machinery/door/poddoor/M in elite_squad)
- switch(M.id)
- if("ASSAULT0")
- spawn(10)//1 second delay between each.
- M.open()
- if("ASSAULT1")
- spawn(20)
- M.open()
- if("ASSAULT2")
- spawn(30)
- M.open()
- if("ASSAULT3")
- spawn(40)
- M.open()
-
- sleep(10)
-
- var/spawn_marauder[] = new()
- for(var/obj/effect/landmark/L in GLOB.landmarks_list)
- if(L.name == "Marauder Entry")
- spawn_marauder.Add(L)
- for(var/obj/effect/landmark/L in GLOB.landmarks_list)
- if(L.name == "Marauder Exit")
- var/obj/effect/portal/P = new(L.loc)
- P.invisibility = 101//So it is not seen by anyone.
- P.failchance = 0//So it has no fail chance when teleporting.
- P.target = pick(spawn_marauder)//Where the marauder will arrive.
- spawn_marauder.Remove(P.target)
-
- sleep(10)
-
- for(var/obj/machinery/mass_driver/M in elite_squad)
- switch(M.id)
- if("ASSAULT0")
- spawn(10)
- M.drive()
- if("ASSAULT1")
- spawn(20)
- M.drive()
- if("ASSAULT2")
- spawn(30)
- M.drive()
- if("ASSAULT3")
- spawn(40)
- M.drive()
-
- sleep(50)//Doors remain open for 5 seconds.
-
- for(var/obj/machinery/door/poddoor/M in elite_squad)
- switch(M.id)//Doors close at the same time.
- if("ASSAULT0")
- spawn(0)
- M.close()
- if("ASSAULT1")
- spawn(0)
- M.close()
- if("ASSAULT2")
- spawn(0)
- M.close()
- if("ASSAULT3")
- spawn(0)
- M.close()
- elite_squad.readyreset()//Reset firealarm after the team launched.
- */
- //End Marauder launchpad.
-
- for(var/thing in GLOB.landmarks_list)
- var/obj/effect/landmark/L = thing
- if(L.name == "Syndicate Breach Area")
- explosion(L.loc,4,6,8,10,0)
-
- sleep(40)
-
-
- var/area/start_location = locate(/area/shuttle/syndicate_elite/mothership)
- var/area/end_location = locate(/area/shuttle/syndicate_elite/station)
-
- var/list/dstturfs = list()
- var/throwy = world.maxy
-
- for(var/turf/T in end_location)
- dstturfs = T
- if(T.y < throwy)
- throwy = T.y
-
- // hey you, get out of the way!
- for(var/turf/T in dstturfs)
- // find the turf to move things to
- var/turf/D = locate(T.x, throwy - 1, 1)
- //var/turf/E = get_step(D, SOUTH)
- for(var/atom/movable/AM as mob|obj in T)
- AM.Move(D)
- if(istype(T, /turf/simulated))
- qdel(T)
-
- for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area...
- bug.gib()
-
- for(var/mob/living/simple_animal/pest in end_location) // And for the other kind of bug...
- pest.gib()
-
- start_location.move_contents_to(end_location)
-
- for(var/turf/T in get_area_turfs(end_location) )
- var/mob/M = locate(/mob) in T
- to_chat(M, "You have arrived to [station_name()]. Commence operation!")
-
-/proc/syndicate_elite_can_move()
- if(GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership) return 0
- else return 1
-
-/obj/machinery/computer/syndicate_elite_shuttle/attack_ai(mob/user as mob)
- to_chat(user, "Access Denied.")
- return 1
-
-/obj/machinery/computer/syndicate_elite_shuttle/attackby(I as obj, user as mob, params)
- if(istype(I,/obj/item/card/emag))
- to_chat(user, "The electronic systems in this console are far too advanced for your primitive hacking peripherals.")
- else
- return ..()
-
-/obj/machinery/computer/syndicate_elite_shuttle/attack_hand(mob/user as mob)
- if(!allowed(user))
- to_chat(user, "Access Denied.")
- return
-
-// if(sent_syndicate_strike_team == 0)
-// to_chat(usr, "The strike team has not yet deployed.")
-// return
-
- if(..())
- return
-
- user.set_machine(src)
- var/dat
- if(temp)
- dat = temp
- else
- dat = {"
Special Operations Shuttle
- \nLocation: [GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership ? "Departing for [station_name()] in ([GLOB.syndicate_elite_shuttle_timeleft] seconds.)":GLOB.syndicate_elite_shuttle_at_station ? "Station":"Dock"]
- [GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership ? "\n*The Syndicate Elite shuttle is already leaving.*
\n
":GLOB.syndicate_elite_shuttle_at_station ? "\nShuttle Offline
\n
":"\nDepart to [station_name()]
\n
"]
- \nClose"}
-
- user << browse(dat, "window=computer;size=575x450")
- onclose(user, "computer")
- return
-
-/obj/machinery/computer/syndicate_elite_shuttle/Topic(href, href_list)
- if(..())
- return 1
-
- if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
- usr.set_machine(src)
-
- if(href_list["sendtodock"])
- if(!GLOB.syndicate_elite_shuttle_at_station|| GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership) return
-
- to_chat(usr, "The Syndicate will not allow the Elite Squad shuttle to return.")
- return
-
- else if(href_list["sendtostation"])
- if(GLOB.syndicate_elite_shuttle_at_station || GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership) return
-
- if(!specops_can_move())
- to_chat(usr, "The Syndicate Elite shuttle is unable to leave.")
- return
-
- to_chat(usr, "The Syndicate Elite shuttle will arrive on [station_name()] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds.")
-
- temp = "Shuttle departing.
OK"
- updateUsrDialog()
-
- GLOB.syndicate_elite_shuttle_moving_to_station = 1
-
- GLOB.syndicate_elite_shuttle_time = world.timeofday + SYNDICATE_ELITE_MOVETIME
- spawn(0)
- syndicate_elite_process()
-
-
- else if(href_list["mainmenu"])
- temp = null
-
- add_fingerprint(usr)
- updateUsrDialog()
- return
diff --git a/code/game/objects/items/changestone.dm b/code/game/objects/items/changestone.dm
deleted file mode 100644
index 0f3851e1777..00000000000
--- a/code/game/objects/items/changestone.dm
+++ /dev/null
@@ -1,23 +0,0 @@
-/obj/item/changestone
- name = "An uncut ruby"
- desc = "The ruby shines and catches the light, despite being uncut"
- icon = 'icons/obj/artifacts.dmi'
- icon_state = "changerock"
-
-/obj/item/changestone/attack_hand(mob/user as mob)
- if(istype(user,/mob/living/carbon/human))
- var/mob/living/carbon/human/H = user
- if(!H.gloves)
- if(H.gender == FEMALE)
- H.change_gender(MALE)
- else
- H.change_gender(FEMALE)
- H.dna.ready_dna(H)
- H.update_body()
- ..()
-
-
-
-
-
-
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index d7567ce575c..14250f49674 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -83,7 +83,6 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \
null, \
new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \
null, \
- new/datum/stack_recipe("bananium computer frame", /obj/structure/computerframe/HONKputer, 50, time = 25, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("bananium grenade casing", /obj/item/grenade/bananade/casing, 4, on_floor = 1), \
))
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
index 5cfd50a5ce9..16cd1084805 100644
--- a/code/modules/admin/secrets.dm
+++ b/code/modules/admin/secrets.dm
@@ -70,7 +70,6 @@
Send SIT - Syndicate Infiltration Team
Send in a Syndie Strike Team
Send in the Deathsquad
- Send in a HONKsquad
Send in a Gimmick Team
Change Security Level
Security Level - Green
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 437721f383a..398a5d14ffb 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -2894,9 +2894,6 @@
spawn(0)
H.corgize()
ok = 1
- if("honksquad")
- if(usr.client.honksquad())
- SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send Team - HONKsquad")
if("striketeam")
if(usr.client.strike_team())
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Send Team - Deathsquad")
diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm
deleted file mode 100644
index 485f25ab757..00000000000
--- a/code/modules/admin/verbs/honksquad.dm
+++ /dev/null
@@ -1,142 +0,0 @@
-//HONKsquad
-
-#define HONKSQUAD_POSSIBLE 6 //if more Commandos are needed in the future
-GLOBAL_VAR_INIT(sent_honksquad, 0)
-
-/client/proc/honksquad()
- if(!SSticker)
- to_chat(usr, "The game hasn't started yet!")
- return
- if(world.time < 6000)
- to_chat(usr, "There are [(6000-world.time)/10] seconds remaining before it may be called.")
- return
- if(GLOB.sent_honksquad == 1)
- to_chat(usr, "Clown Planet has already dispatched a HONKsquad.")
- return
- if(alert("Do you want to send in the HONKsquad? Once enabled, this is irreversible.",,"Yes","No")!="Yes")
- return
- alert("This 'mode' will go on until proper levels of HONK have been restored. You may also admin-call the evac shuttle when appropriate. Assigning the team's detailed task is recommended from there. While you will be able to manually pick the candidates from active ghosts, their assignment in the squad will be random.")
-
- var/input = null
- while(!input)
- input = sanitize(copytext(input(src, "Please specify which mission the HONKsquad shall undertake.", "Specify Mission", ""),1,MAX_MESSAGE_LEN))
- if(!input)
- if(alert("Error, no mission set. Do you want to exit the setup process?",,"Yes","No")=="Yes")
- return
-
- if(GLOB.sent_honksquad)
- to_chat(usr, "Looks like someone beat you to it. HONK.")
- return
-
- GLOB.sent_honksquad = 1
-
-
- var/honksquad_number = HONKSQUAD_POSSIBLE //for selecting a leader
- var/honk_leader_selected = 0 //when the leader is chosen. The last person spawned.
-
-
-//Generates a list of HONKsquad from active ghosts. Then the user picks which characters to respawn as the commandos.
- var/list/candidates = list() //candidates for being a commando out of all the active ghosts in world.
- var/list/commandos = list() //actual commando ghosts as picked by the user.
- for(var/mob/dead/observer/G in GLOB.player_list)
- if(!G.client.holder && !G.client.is_afk()) //Whoever called/has the proc won't be added to the list.
- if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
- candidates += G.key
- for(var/i=HONKSQUAD_POSSIBLE,(i>0&&candidates.len),i--)//Decrease with every commando selected.
- var/candidate = input("Pick characters to spawn as the HONKsquad. This will go on until there either no more ghosts to pick from or the slots are full.", "Active Players") as null|anything in candidates //It will auto-pick a person when there is only one candidate.
- candidates -= candidate //Subtract from candidates.
- commandos += candidate//Add their ghost to commandos.
-
-//Spawns HONKsquad and equips them.
- for(var/thing in GLOB.landmarks_list)
- var/obj/effect/landmark/L = thing
- if(honksquad_number<=0) break
- if(L.name == "HONKsquad")
- honk_leader_selected = honksquad_number == 1?1:0
-
- var/mob/living/carbon/human/new_honksquad = create_honksquad(L, honk_leader_selected)
-
- if(commandos.len)
- new_honksquad.key = pick(commandos)
- commandos -= new_honksquad.key
- new_honksquad.internal = new_honksquad.s_store
- new_honksquad.update_action_buttons_icon()
-
- //So they don't forget their code or mission.
- new_honksquad.mind.store_memory("Mission: [input].")
-
- to_chat(new_honksquad, "You are a HONKsquad. [!honk_leader_selected ? "commando" : "LEADER"] in the service of Clown Planet. You are called in cases of exteme low levels of HONK. You are NOT authorized to kill.\nYour current mission is: [input]")
-
- honksquad_number--
-
-
- message_admins("[key_name_admin(usr)] has spawned a HONKsquad.", 1)
- log_admin("[key_name(usr)] used Spawn HONKsquad.")
- return 1
-
-/client/proc/create_honksquad(obj/spawn_location, honk_leader_selected = 0)
- var/mob/living/carbon/human/new_honksquad = new(spawn_location.loc)
- var/honksquad_leader_rank = pick("Lieutenant", "Captain", "Major")
- var/honksquad_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
- var/honksquad_name = pick(GLOB.clown_names)
-
- var/datum/preferences/A = new()//Randomize appearance for the commando.
- if(honk_leader_selected)
- A.age = rand(35,45)
- A.real_name = "[honksquad_leader_rank] [honksquad_name]"
- else
- A.real_name = "[honksquad_rank] [honksquad_name]"
- A.copy_to(new_honksquad)
-
- new_honksquad.dna.ready_dna(new_honksquad)//Creates DNA.
-
- //Creates mind stuff.
- new_honksquad.mind_initialize()
- new_honksquad.mind.assigned_role = SPECIAL_ROLE_HONKSQUAD
- new_honksquad.mind.special_role = SPECIAL_ROLE_HONKSQUAD
- new_honksquad.mind.offstation_role = TRUE
- new_honksquad.add_language("Clownish")
- SSticker.mode.traitors |= new_honksquad.mind//Adds them to current traitor list. Which is really the extra antagonist list.
- new_honksquad.equip_honksquad(honk_leader_selected)
- return new_honksquad
-
-/mob/living/carbon/human/proc/equip_honksquad(honk_leader_selected = 0)
-
- var/obj/item/radio/R = new /obj/item/radio/headset(src)
- R.set_frequency(1442)
- equip_to_slot_or_del(R, slot_l_ear)
- equip_to_slot_or_del(new /obj/item/storage/backpack/clown(src), slot_back)
- equip_to_slot_or_del(new /obj/item/storage/box/survival(src), slot_in_backpack)
- if(src.gender == FEMALE)
- equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat/sexy(src), slot_wear_mask)
- equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown/sexy(src), slot_w_uniform)
- else
- equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(src), slot_w_uniform)
- equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(src), slot_wear_mask)
- equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(src), slot_shoes)
- equip_to_slot_or_del(new /obj/item/pda/clown(src), slot_wear_pda)
- equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(src), slot_wear_mask)
- equip_to_slot_or_del(new /obj/item/reagent_containers/food/snacks/grown/banana(src), slot_in_backpack)
- equip_to_slot_or_del(new /obj/item/bikehorn(src), slot_in_backpack)
- equip_to_slot_or_del(new /obj/item/stamp/clown(src), slot_in_backpack)
- equip_to_slot_or_del(new /obj/item/toy/crayon/rainbow(src), slot_in_backpack)
- equip_to_slot_or_del(new /obj/item/reagent_containers/spray/waterflower(src), slot_in_backpack)
- equip_to_slot_or_del(new /obj/item/reagent_containers/food/pill/patch/jestosterone(src), slot_r_store)
- if(prob(50))
- equip_to_slot_or_del(new /obj/item/gun/energy/clown(src), slot_in_backpack)
- else
- equip_to_slot_or_del(new /obj/item/gun/throw/piecannon(src), slot_in_backpack)
- dna.SetSEState(GLOB.clumsyblock, TRUE)
- singlemutcheck(src, GLOB.clumsyblock, MUTCHK_FORCED)
-
-
-
- var/obj/item/card/id/W = new(src)
- W.name = "[real_name]'s ID Card"
- W.icon_state = "centcom_old"
- W.access = list(ACCESS_CLOWN)//They get full station access.
- W.assignment = "HONKsquad"
- W.registered_name = real_name
- equip_to_slot_or_del(W, slot_wear_id)
-
- return 1
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index 5bb640ed8ea..8055c5e7a03 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -59,15 +59,6 @@
if(X.prefs.sound & SOUND_ADMINHELP)
SEND_SOUND(X, sound('sound/effects/adminhelp.ogg'))
-/proc/HONK_announce(text, mob/Sender)
- var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
- msg = "HONK: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) (RPLY): [msg]"
- for(var/client/X in GLOB.admins)
- if(R_EVENT & X.holder.rights)
- to_chat(X, msg)
- if(X.prefs.sound & SOUND_ADMINHELP)
- SEND_SOUND(X, sound('sound/effects/adminhelp.ogg'))
-
/proc/ERT_Announce(text, mob/Sender, repeat_warning)
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
msg = "ERT REQUEST: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_TP(Sender,"TP")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) ([ADMIN_BSA(Sender,"BSA")]) (RESPOND): [msg]"
diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm
index a0122dccd78..a489685a340 100644
--- a/code/modules/reagents/chemistry/reagents/misc.dm
+++ b/code/modules/reagents/chemistry/reagents/misc.dm
@@ -442,7 +442,7 @@
if(!istype(C))
return
if(C.mind)
- if(C.mind.assigned_role == "Clown" || C.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)
+ if(C.mind.assigned_role == "Clown")
to_chat(C, "Whatever that was, it feels great!")
else if(C.mind.assigned_role == "Mime")
to_chat(C, "You feel nauseous.")
@@ -460,7 +460,7 @@
var/update_flags = STATUS_UPDATE_NONE
if(prob(10))
M.emote("giggle")
- if(M?.mind.assigned_role == "Clown" || M?.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)
+ if(M?.mind.assigned_role == "Clown")
update_flags |= M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings!
else
M.AdjustDizzy(10, 0, 500)
diff --git a/paradise.dme b/paradise.dme
index a6b2a53c467..6295af0a3dd 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -685,7 +685,6 @@
#include "code\game\machinery\computer\crew.dm"
#include "code\game\machinery\computer\depot.dm"
#include "code\game\machinery\computer\HolodeckControl.dm"
-#include "code\game\machinery\computer\honkputer.dm"
#include "code\game\machinery\computer\law.dm"
#include "code\game\machinery\computer\medical.dm"
#include "code\game\machinery\computer\message.dm"
@@ -695,13 +694,10 @@
#include "code\game\machinery\computer\power.dm"
#include "code\game\machinery\computer\prisoner.dm"
#include "code\game\machinery\computer\robot.dm"
-#include "code\game\machinery\computer\salvage_ship.dm"
#include "code\game\machinery\computer\security.dm"
#include "code\game\machinery\computer\sm_monitor.dm"
-#include "code\game\machinery\computer\specops_shuttle.dm"
#include "code\game\machinery\computer\station_alert.dm"
#include "code\game\machinery\computer\store.dm"
-#include "code\game\machinery\computer\syndicate_specops_shuttle.dm"
#include "code\game\machinery\doors\airlock.dm"
#include "code\game\machinery\doors\airlock_control.dm"
#include "code\game\machinery\doors\airlock_electronics.dm"
@@ -823,7 +819,6 @@
#include "code\game\objects\items\bodybag.dm"
#include "code\game\objects\items\candle.dm"
#include "code\game\objects\items\cardboard_cutouts.dm"
-#include "code\game\objects\items\changestone.dm"
#include "code\game\objects\items\contraband.dm"
#include "code\game\objects\items\control_wand.dm"
#include "code\game\objects\items\crayons.dm"
@@ -1184,7 +1179,6 @@
#include "code\modules\admin\verbs\freeze.dm"
#include "code\modules\admin\verbs\getlogs.dm"
#include "code\modules\admin\verbs\gimmick_team.dm"
-#include "code\modules\admin\verbs\honksquad.dm"
#include "code\modules\admin\verbs\infiltratorteam_syndicate.dm"
#include "code\modules\admin\verbs\logging_view.dm"
#include "code\modules\admin\verbs\map_template_loadverb.dm"