Merge branch 'master' into synctesting

This commit is contained in:
deathride58
2018-04-09 21:43:26 +00:00
committed by GitHub
43 changed files with 411 additions and 90 deletions
+8 -4
View File
@@ -1094,14 +1094,18 @@
else if(href_list["deletemessage"])
if(!check_rights(R_ADMIN))
return
var/message_id = href_list["deletemessage"]
delete_message(message_id)
var/safety = alert("Delete message/note?",,"Yes","No");
if (safety == "Yes")
var/message_id = href_list["deletemessage"]
delete_message(message_id)
else if(href_list["deletemessageempty"])
if(!check_rights(R_ADMIN))
return
var/message_id = href_list["deletemessageempty"]
delete_message(message_id, browse = 1)
var/safety = alert("Delete message/note?",,"Yes","No");
if (safety == "Yes")
var/message_id = href_list["deletemessageempty"]
delete_message(message_id, browse = TRUE)
else if(href_list["editmessage"])
if(!check_rights(R_ADMIN))
@@ -348,7 +348,20 @@
return result.Join()
/datum/team/revolution/antag_listing_entry()
var/common_part = ..()
var/common_part = ""
var/list/parts = list()
parts += "<b>[antag_listing_name()]</b><br>"
parts += "<table cellspacing=5>"
var/list/heads = get_team_antags(/datum/antagonist/rev/head,TRUE)
for(var/datum/antagonist/A in heads | get_team_antags())
parts += A.antag_listing_entry()
parts += "</table>"
parts += antag_listing_footer()
common_part = parts.Join()
var/heads_report = "<b>Heads of Staff</b><br>"
heads_report += "<table cellspacing=5>"
for(var/datum/mind/N in SSjob.get_living_heads())
+35
View File
@@ -16,6 +16,15 @@
var/list/log = list()
var/range = 8
var/view_check = TRUE
actions_types = list(/datum/action/item_action/displayDetectiveScanResults)
/datum/action/item_action/displayDetectiveScanResults
name = "Display Forensic Scanner Results"
/datum/action/item_action/displayDetectiveScanResults/Trigger()
var/obj/item/device/detective_scanner/scanner = target
if(istype(scanner))
scanner.displayDetectiveScanResults(usr)
/obj/item/device/detective_scanner/attack_self(mob/user)
if(log.len && !scanning)
@@ -36,6 +45,7 @@
P.info += jointext(log, "<BR>")
P.info += "<HR><B>Notes:</B><BR>"
P.info_links = P.info
P.updateinfolinks()
if(ismob(loc))
var/mob/M = loc
@@ -165,3 +175,28 @@
/proc/get_timestamp()
return time2text(world.time + 432000, ":ss")
/obj/item/device/detective_scanner/AltClick(mob/living/user)
// Best way for checking if a player can use while not incapacitated, etc
if(!user.canUseTopic(src, be_close=TRUE))
return
if(!LAZYLEN(log))
to_chat(user, "<span class='notice'>Cannot clear logs, the scanner has no logs.</span>")
return
if(scanning)
to_chat(user, "<span class='notice'>Cannot clear logs, the scanner is in use.</span>")
return
to_chat(user, "<span class='notice'>The scanner logs are cleared.</span>")
log = list()
/obj/item/device/detective_scanner/proc/displayDetectiveScanResults(mob/living/user)
// No need for can-use checks since the action button should do proper checks
if(!LAZYLEN(log))
to_chat(user, "<span class='notice'>Cannot display logs, the scanner has no logs.</span>")
return
if(scanning)
to_chat(user, "<span class='notice'>Cannot display logs, the scanner is in use.</span>")
return
to_chat(user, "<span class='notice'><B>Scanner Report</B></span>")
for(var/iterLog in log)
to_chat(user, iterLog)
+10 -2
View File
@@ -10,8 +10,16 @@
/datum/round_event/anomaly/anomaly_bluespace/announce(fake)
priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
if(prob(90))
priority_announce("Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Unstable bluespace anomaly"
P.info = "Unstable bluespace anomaly detected on long range scanners. Expected location: [impact_area.name]."
P.update_icon()
/datum/round_event/anomaly/anomaly_bluespace/start()
var/turf/T = safepick(get_area_turfs(impact_area))
+10 -2
View File
@@ -11,8 +11,16 @@
announceWhen = 3
/datum/round_event/anomaly/anomaly_flux/announce(fake)
priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
if(prob(90))
priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Localized hyper-energetic flux wave"
P.info = "Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name]."
P.update_icon()
/datum/round_event/anomaly/anomaly_flux/start()
var/turf/T = safepick(get_area_turfs(impact_area))
+10 -1
View File
@@ -9,7 +9,16 @@
announceWhen = 20
/datum/round_event/anomaly/anomaly_grav/announce(fake)
priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
if(prob(90))
priority_announce("Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Gravitational anomaly"
P.info = "Gravitational anomaly detected on long range scanners. Expected location: [impact_area.name]."
P.update_icon()
/datum/round_event/anomaly/anomaly_grav/start()
var/turf/T = safepick(get_area_turfs(impact_area))
+10 -1
View File
@@ -9,7 +9,16 @@
announceWhen = 10
/datum/round_event/anomaly/anomaly_pyro/announce(fake)
priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
if(prob(90))
priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Pyroclastic anomaly"
P.info = "Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name]."
P.update_icon()
/datum/round_event/anomaly/anomaly_pyro/start()
var/turf/T = safepick(get_area_turfs(impact_area))
+10 -1
View File
@@ -11,7 +11,16 @@
announceWhen = 3
/datum/round_event/anomaly/anomaly_vortex/announce(fake)
priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert")
if(prob(90))
priority_announce("Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]", "Anomaly Alert")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Vortex anomaly"
P.info = "Localized high-intensity vortex anomaly detected on long range scanners. Expected location: [impact_area.name]."
P.update_icon()
/datum/round_event/anomaly/anomaly_vortex/start()
var/turf/T = safepick(get_area_turfs(impact_area))
+10 -1
View File
@@ -14,7 +14,16 @@
fakeable = TRUE
/datum/round_event/ghost_role/blob/announce(fake)
priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg')
if(prob(75))
priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/ai/outbreak5.ogg')
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "level 5 biohazard"
P.info = "Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak."
P.update_icon()
/datum/round_event/ghost_role/blob/spawn_role()
if(!GLOB.blobstart.len)
+10 -2
View File
@@ -28,8 +28,16 @@
source = initial(example.name)
else if(originMachine)
source = originMachine.name
priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert")
if(prob(50))
priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Rampant brand intelligence"
P.info = "Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source]."
P.update_icon()
/datum/round_event/brand_intelligence/start()
for(var/obj/machinery/vending/V in GLOB.machines)
if(!is_station_level(V.z))
+10 -1
View File
@@ -14,7 +14,16 @@
startWhen = rand(40, 60)
/datum/round_event/carp_migration/announce(fake)
priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
if(prob(50))
priority_announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Biological entities"
P.info = "Unknown biological entities have been detected near [station_name()], you may wish to break out arms."
P.update_icon()
/datum/round_event/carp_migration/start()
+10 -2
View File
@@ -12,8 +12,16 @@
announceWhen = 1
/datum/round_event/electrical_storm/announce(fake)
priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert")
if(prob(50))
priority_announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Electrical Storm"
P.info = "An electrical storm has been detected in your area, please repair potential electronic overloads."
P.update_icon()
/datum/round_event/electrical_storm/start()
var/list/epicentreList = list()
+10 -1
View File
@@ -16,4 +16,13 @@
some mild debris is expected.",
"A neighbouring station is throwing rocks at you. (Perhaps they've \
grown tired of your messages.)")
priority_announce(pick(reason), "Collision Alert")
if(prob(50))
priority_announce(pick(reason), "Collision Alert")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Collision Alert"
P.info = "[pick(reason)]"
P.update_icon()
+10 -2
View File
@@ -18,10 +18,18 @@
var/movement = pick("migrated", "swarmed", "stampeded", "descended")
var/location = pick("maintenance tunnels", "maintenance areas",
"\[REDACTED\]", "place with all those juicy wires")
priority_announce("Due to [cause], [plural] [name] have [movement] \
if(prob(50))
priority_announce("Due to [cause], [plural] [name] have [movement] \
into the [location].", "Migration Alert",
'sound/effects/mousesqueek.ogg')
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Rodent Migration"
P.info = "Due to [cause], [plural] [name] have [movement] into the [location]."
P.update_icon()
/datum/round_event/mice_migration/start()
SSsqueak.trigger_migration(rand(minimum_mice, maximum_mice))
+3 -2
View File
@@ -27,7 +27,7 @@
ship_name = pick(strings(PIRATE_NAMES_FILE, "ship_names"))
/datum/round_event/pirates/announce()
priority_announce("Incoming subspace communication. Secure channel opened at all communication consoles.", "Incoming Message", 'sound/ai/commandreport.ogg')
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
if(!control) //Means this is false alarm, todo : explicit checks instead of using announceWhen
return
@@ -82,7 +82,8 @@
else
notify_ghosts("Space pirates are waking up!", source = spawner, action=NOTIFY_ATTACK, flashwindow = FALSE)
priority_announce("Unidentified armed ship detected near the station.")
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') //CITADEL EDIT also metabreak here too
//Shuttle equipment
+10 -1
View File
@@ -30,7 +30,16 @@
/datum/round_event/grey_tide/announce(fake)
if(areasToOpen && areasToOpen.len > 0)
priority_announce("Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement.", "Security Alert")
if(prob(50))
priority_announce("Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement.", "Security Alert")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Gr3y.T1d3 virus"
P.info = "Gr3y.T1d3 virus detected in [station_name()] door subroutines. Severity level of [severity]. Recommend station AI involvement."
P.update_icon()
else
log_world("ERROR: Could not initate grey-tide. No areas in the list!")
kill()
+60 -6
View File
@@ -27,19 +27,73 @@
SSshuttle.shuttle_loan = src
switch(dispatch_type)
if(HIJACK_SYNDIE)
priority_announce("Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache.","CentCom Counter Intelligence")
if(prob(50))
priority_announce("Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache.","CentCom Counter Intelligence")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Cargo Report"
P.info = "Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache."
P.update_icon()
if(RUSKY_PARTY)
priority_announce("Cargo: A group of angry Russians want to have a party. Can you send them your cargo shuttle then make them disappear?","CentCom Russian Outreach Program")
if(prob(50))
priority_announce("Cargo: A group of angry Russians want to have a party. Can you send them your cargo shuttle then make them disappear?","CentCom Russian Outreach Program")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Cargo Report"
P.info = "Cargo: The syndicate are trying to infiltrate your station. If you let them hijack your cargo shuttle, you'll save us a headache."
P.update_icon()
if(SPIDER_GIFT)
priority_announce("Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?","CentCom Diplomatic Corps")
if(prob(50))
priority_announce("Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?","CentCom Diplomatic Corps")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Cargo Report"
P.info = "Cargo: The Spider Clan has sent us a mysterious gift. Can we ship it to you to see what's inside?"
P.update_icon()
if(DEPARTMENT_RESUPPLY)
priority_announce("Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","CentCom Supply Department")
if(prob(50))
priority_announce("Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?","CentCom Supply Department")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Cargo Report"
P.info = "Cargo: Seems we've ordered doubles of our department resupply packages this month. Can we send them to you?"
P.update_icon()
thanks_msg = "The cargo shuttle should return in 5 minutes."
bonus_points = 0
if(ANTIDOTE_NEEDED)
priority_announce("Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples.", "CentCom Research Initiatives")
if(prob(50))
priority_announce("Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples.", "CentCom Research Initiatives")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Cargo Report"
P.info = "Cargo: Your station has been chosen for an epidemiological research project. Send us your cargo shuttle to receive your research samples."
P.update_icon()
if (PIZZA_DELIVERY)
priority_announce("Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead", "CentCom Spacepizza Division")
if(prob(50))
priority_announce("Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead.", "CentCom Spacepizza Division")
else
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/ai/commandreport.ogg') // CITADEL EDIT metabreak
for(var/obj/machinery/computer/communications/C in GLOB.machines)
if(!(C.stat & (BROKEN|NOPOWER)) && is_station_level(C.z))
var/obj/item/paper/P = new(C.loc)
P.name = "Cargo Report"
P.info = "Cargo: It looks like a neighbouring station accidentally delivered their pizza to you instead."
P.update_icon()
/datum/round_event/shuttle_loan/proc/loan_shuttle()
priority_announce(thanks_msg, "Cargo shuttle commandeered by CentCom.")
+1 -1
View File
@@ -153,7 +153,7 @@
begin_month = APRIL
/datum/holiday/april_fools/celebrate()
SSjob.overflow_role = "Clown"
SSjob.set_overflow_role("Clown")
SSticker.login_music = 'sound/ambience/clown.ogg'
for(var/mob/dead/new_player/P in GLOB.mob_list)
if(P.client)
+2 -11
View File
@@ -6,8 +6,8 @@ Assistant
flag = ASSISTANT
department_flag = CIVILIAN
faction = "Station"
total_positions = -1
spawn_positions = -1
total_positions = 5
spawn_positions = 5
supervisors = "absolutely everyone"
selection_color = "#dddddd"
access = list() //See /datum/job/assistant/get_access()
@@ -23,15 +23,6 @@ Assistant
else
return ..()
/datum/job/assistant/config_check()
var/ac = CONFIG_GET(number/assistant_cap)
if(ac != 0)
total_positions = ac
spawn_positions = ac
return 1
return 0
/datum/outfit/job/assistant
name = "Assistant"
jobtype = /datum/job/assistant
+26 -17
View File
@@ -868,12 +868,17 @@
.["Toggle Purrbation"] = "?_src_=vars;[HrefToken()];purrbation=[REF(src)]"
/mob/living/carbon/human/MouseDrop_T(mob/living/target, mob/living/user)
if((target != pulling) || (grab_state < GRAB_AGGRESSIVE) || (user != target) || !isliving(user) || stat || user.stat)//Get consent first :^)
. = ..()
return
buckle_mob(target, TRUE, TRUE)
//If they dragged themselves and we're currently aggressively grabbing them try to piggyback
if(user == target && can_piggyback(target) && pulling == target && grab_state >= GRAB_AGGRESSIVE && stat == CONSCIOUS)
buckle_mob(target,TRUE,TRUE)
. = ..()
//Can C try to piggyback at all.
/mob/living/carbon/human/proc/can_piggyback(mob/living/carbon/C)
if(istype(C) && C.stat == CONSCIOUS)
return TRUE
return FALSE
/mob/living/carbon/human/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE)
if(!force)//humans are only meant to be ridden through piggybacking and special cases
return
@@ -882,24 +887,28 @@
return
var/datum/component/riding/human/riding_datum = LoadComponent(/datum/component/riding/human)
riding_datum.ride_check_rider_incapacitated = TRUE
riding_datum.ride_check_ridden_incapacitated = TRUE
riding_datum.ride_check_rider_restrained = TRUE
riding_datum.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 6), TEXT_SOUTH = list(0, 6), TEXT_EAST = list(-6, 4), TEXT_WEST = list( 6, 4)))
if(buckled_mobs && ((M in buckled_mobs) || (buckled_mobs.len >= max_buckled_mobs)) || buckled || (M.stat != CONSCIOUS))
return
visible_message("<span class='notice'>[M] starts to climb onto [src]...</span>")
if(do_after(M, 15, target = src))
if(iscarbon(M))
if(M.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE))
M.visible_message("<span class='warning'>[M] can't hang onto [src]!</span>")
return
if(!riding_datum.equip_buckle_inhands(M, 2)) //MAKE SURE THIS IS LAST!!
M.visible_message("<span class='warning'>[M] can't climb onto [src]!</span>")
return
. = ..(M, force, check_loc)
stop_pulling()
if(can_piggyback(M))
riding_datum.ride_check_ridden_incapacitated = TRUE
visible_message("<span class='notice'>[M] starts to climb onto [src]...</span>")
if(do_after(M, 15, target = src))
if(can_piggyback(M))
if(M.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE))
M.visible_message("<span class='warning'>[M] can't hang onto [src]!</span>")
return
if(!riding_datum.equip_buckle_inhands(M, 2)) //MAKE SURE THIS IS LAST!!
M.visible_message("<span class='warning'>[M] can't climb onto [src]!</span>")
return
. = ..(M, force, check_loc)
stop_pulling()
else
visible_message("<span class='warning'>[M] fails to climb onto [src]!</span>")
else
visible_message("<span class='warning'>[M] fails to climb onto [src]!</span>")
. = ..(M,force,check_loc)
stop_pulling()
/mob/living/carbon/human/do_after_coefficent()
. = ..()
@@ -137,6 +137,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard)
var/datum/looping_sound/supermatter/soundloop
var/moveable = TRUE
/obj/machinery/power/supermatter_shard/Initialize()
. = ..()
uid = gl_uid++
@@ -552,6 +554,10 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard)
radiation_pulse(src, 150, 4)
/obj/machinery/power/supermatter_shard/wrench_act(mob/user, obj/item/tool)
if (moveable)
default_unfasten_wrench(user, tool, time = 20)
return TRUE
/obj/machinery/power/supermatter_shard/CollidedWith(atom/movable/AM)
if(isliving(AM))
@@ -613,6 +619,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard)
anchored = TRUE
gasefficency = 0.15
explosion_power = 35
moveable = FALSE
/obj/machinery/power/supermatter_shard/crystal/engine
is_main_engine = TRUE
@@ -1397,7 +1397,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "#cc0000"
boozepwr = 35
taste_description = "an invigorating bitter freshness which suffuses your being; no enemy of the station will go unrobusted this day"
glass_icon_state = "glass_red"
glass_icon_state = "quadruple_sec"
glass_name = "Quadruple Sec"
glass_desc = "An intimidating and lawful beverage dares you to violate the law and make its day. Still can't drink it on duty, though."
@@ -1415,7 +1415,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "#ff3300"
boozepwr = 80
taste_description = "THE LAW"
glass_icon_state = "glass_red"
glass_icon_state = "quintuple_sec"
glass_name = "Quintuple Sec"
glass_desc = "Now you are become law, destroyer of clowns."
@@ -1436,7 +1436,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "00ff00"
boozepwr = 25
taste_description = "chocolate and mint dancing around your mouth"
glass_icon_state = "glass_green"
glass_icon_state = "grasshopper"
glass_name = "Grasshopper"
glass_desc = "You weren't aware edible beverages could be that green."
@@ -1447,7 +1447,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "ccff99"
boozepwr = 25
taste_description = "a slap on the face in the best possible way"
glass_icon_state = "glass_white"
glass_icon_state = "stinger"
glass_name = "Stinger"
glass_desc = "You wonder what would happen if you pointed this at a heat source..."
+6 -1
View File
@@ -46,7 +46,12 @@
// The underlying old area is the area assumed to be under the shuttle's starting location
// If it no longer/has never existed it will be created
var/area/underlying_old_area = locate(underlying_area_type) in GLOB.sortedAreas
var/area/underlying_old_area
for(var/i in GLOB.sortedAreas) // Locate grabs subtypes and we want a particular type
var/area/place = i
if(place.type == underlying_area_type)
underlying_old_area = place
break
if(!underlying_old_area)
underlying_old_area = new underlying_area_type(null)