This commit is contained in:
Jazz23
2019-01-10 21:04:09 -08:00
51 changed files with 654 additions and 329 deletions
@@ -179,11 +179,6 @@
(the writing trails off, as if the writer was interrupted)<br>
"}
/obj/item/paper/terrorspiders9
name = "paper - 'Research Notes'"
info = "<b>The notes appear gibberish to you. Perhaps a destructive analyzer in R&D could make sense of them.</b>"
origin_tech = "combat=4;materials=4;engineering=4;biotech=4"
/obj/item/gun/energy/laser/awaymission_aeg
name = "Wireless Energy Gun"
desc = "An energy gun that recharges wirelessly during away missions. Does not work on the main station."
+1
View File
@@ -28,6 +28,7 @@
var/toggle_cooldown = null
var/cooldown = 0
var/species_disguise = null
var/magical = FALSE
//BS12: Species-restricted clothing check.
/obj/item/clothing/mob_can_equip(M as mob, slot)
+5 -3
View File
@@ -125,6 +125,8 @@
icon_state = "wizzclown"
item_state = "wizzclown"
flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR
flags_inv = HIDEEARS | HIDEEYES
magical = TRUE
/obj/item/clothing/mask/gas/virusclown_hat
name = "clown wig and mask"
@@ -203,7 +205,7 @@
var/safety = 1
actions_types = list(/datum/action/item_action/halt, /datum/action/item_action/adjust, /datum/action/item_action/selectphrase)
var/phrase_list = list(
"halt" = "HALT! HALT! HALT! HALT!",
"bobby" = "Stop in the name of the Law.",
"compliance" = "Compliance is in your best interest.",
@@ -272,11 +274,11 @@
else if(actiontype == /datum/action/item_action/selectphrase)
var/key = phrase_list[phrase]
var/message = phrase_list[key]
if (!safety)
to_chat(user, "<span class='notice'>You set the restrictor to: FUCK YOUR CUNT YOU SHIT EATING COCKSUCKER MAN EAT A DONG FUCKING ASS RAMMING SHIT FUCK EAT PENISES IN YOUR FUCK FACE AND SHIT OUT ABORTIONS OF FUCK AND DO SHIT IN YOUR ASS YOU COCK FUCK SHIT MONKEY FUCK ASS WANKER FROM THE DEPTHS OF SHIT.</span>")
return
switch(aggressiveness)
if(1)
phrase = (phrase < 6) ? (phrase + 1) : 1
+1
View File
@@ -79,6 +79,7 @@ obj/item/clothing/shoes/magboots/syndie/advance //For the Syndicate Strike Team
magboot_state = "wizmag"
slowdown_active = SHOES_SLOWDOWN //wiz hardsuit already slows you down, no need to double it
magpulse_name = "gripping ability"
magical = TRUE
/obj/item/clothing/shoes/magboots/wizard/attack_self(mob/user)
if(user)
@@ -44,6 +44,7 @@
icon_state = "wizard"
strip_delay = 50
put_on_delay = 50
magical = TRUE
/obj/item/clothing/shoes/sandal/marisa
desc = "A pair of magic, black shoes."
@@ -81,6 +82,11 @@
var/footstep = 1 //used for squeeks whilst walking
shoe_sound = "clownstep"
/obj/item/clothing/shoes/clown_shoes/magical
name = "magical clown shoes"
desc = "Standard-issue shoes of the wizarding class clown. Damn they're huge! And powerful! Somehow."
magical = TRUE
/obj/item/clothing/shoes/jackboots
name = "jackboots"
desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
+5 -5
View File
@@ -339,7 +339,7 @@
linkedsuit = loc
/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user)
if(!linkedsuit)
to_chat(user, "<span class='notice'>You must attach the helmet to a syndicate hardsuit to toggle combat mode!</span>")
return
@@ -479,15 +479,15 @@
icon_state = "hardsuit0-wiz"
item_state = "wiz_helm"
item_color = "wiz"
unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles!
unacidable = TRUE //No longer shall our kind be foiled by lone chemists with spray bottles!
armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50)
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
unacidable = 1
species_fit = list("Grey")
sprite_sheets = list(
"Grey" = 'icons/mob/species/grey/helmet.dmi'
)
magical = TRUE
/obj/item/clothing/suit/space/hardsuit/wizard
icon_state = "hardsuit-wiz"
@@ -495,13 +495,13 @@
desc = "A bizarre gem-encrusted suit that radiates magical energies."
item_state = "wiz_hardsuit"
w_class = WEIGHT_CLASS_NORMAL
unacidable = 1
unacidable = TRUE
armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50)
allowed = list(/obj/item/teleportation_scroll,/obj/item/tank)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
unacidable = 1
sprite_sheets = null
magical = TRUE
//Medical hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/medical
@@ -403,8 +403,10 @@
/obj/item/clothing/suit/space/eva/plasmaman/wizard
name = "robed plasmaman suit"
icon_state = "plasmamanWizardBlue_suit"
magical = TRUE
/obj/item/clothing/head/helmet/space/eva/plasmaman/wizard
name = "wizard hat"
icon_state = "plasmamanWizardBlue_helmet0"
base_state = "plasmamanWizardBlue_helmet"
magical = TRUE
+7 -1
View File
@@ -10,6 +10,7 @@
//Not given any special protective value since the magic robes are full-body protection --NEO
strip_delay = 50
put_on_delay = 50
magical = TRUE
/obj/item/clothing/head/wizard/red
name = "red wizard hat"
@@ -35,6 +36,7 @@
gas_transfer_coefficient = 1
permeability_coefficient = 1
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
magical = FALSE
/obj/item/clothing/head/wizard/marisa
name = "Witch Hat"
@@ -67,6 +69,7 @@
strip_delay = 50
put_on_delay = 50
burn_state = FIRE_PROOF
magical = TRUE
/obj/item/clothing/suit/wizrobe/red
name = "red wizard robe"
@@ -120,6 +123,7 @@
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
unacidable = 0
burn_state = FLAMMABLE
magical = FALSE
/obj/item/clothing/head/wizard/marisa/fake
name = "Witch Hat"
@@ -130,6 +134,7 @@
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
unacidable = 0
burn_state = FLAMMABLE
magical = FALSE
/obj/item/clothing/suit/wizrobe/marisa/fake
name = "Witch Robe"
@@ -140,4 +145,5 @@
permeability_coefficient = 1
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
unacidable = 0
burn_state = FLAMMABLE
burn_state = FLAMMABLE
magical = FALSE
+4 -20
View File
@@ -37,36 +37,20 @@ var/global/list/unused_trade_stations = list("sol")
var/mob/C = pick_n_take(candidates)
if(C)
GLOB.respawnable_list -= C.client
var/mob/living/carbon/human/M = create_trader(picked_loc)
M.ckey = C.ckey
var/mob/living/carbon/human/M = new /mob/living/carbon/human(picked_loc)
M.ckey = C.ckey // must be before equipOutfit, or that will runtime due to lack of mind
M.equipOutfit(/datum/outfit/admin/sol_trader)
M.dna.species.after_equip_job(null, M)
M.mind.objectives += trader_objectives
greet_trader(M)
success_spawn = 1
if(!success_spawn)
unused_trade_stations += station // Return the station to the list of usable stations.
/datum/event/traders/proc/create_trader(var/turf/picked_loc)
var/mob/living/carbon/human/M
switch(station)
if("sol")
M = new /mob/living/carbon/human(picked_loc)
M.equip_to_slot_or_del(new /obj/item/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/storage/backpack/industrial(M), slot_back)
var/obj/item/card/id/supply/W = new(M)
W.name = "[M.real_name]'s ID Card (Sol Trader)"
W.assignment = "Sol Trader"
W.registered_name = M.real_name
W.access = list(access_trade_sol, access_maint_tunnels, access_external_airlocks)
M.equip_to_slot_or_del(W, slot_wear_id)
return M
/datum/event/traders/proc/greet_trader(var/mob/living/carbon/human/M)
to_chat(M, "<span class='boldnotice'>You are a trader!</span>")
to_chat(M, "<span class='notice'>You are currently docked at [get_area(M)].</span>")
to_chat(M, "<span class='notice'>You are about to trade with [station_name()].</span>")
to_chat(M, "<span class='notice'>Negotiate an agreement, and request docking.</span>")
spawn(25)
show_objectives(M.mind)
+11 -1
View File
@@ -21,6 +21,15 @@
add_random_traits()
add_random_plant_type(35)
/obj/item/seeds/random/labelled
name = "pack of exotic strange seeds"
/obj/item/seeds/random/labelled/New()
. = ..()
add_random_traits(1, 2)
add_random_plant_type(100)
desc = "Label: \n" + get_analyzer_text()
/obj/item/reagent_containers/food/snacks/grown/random
seed = /obj/item/seeds/random
name = "strange plant"
@@ -32,4 +41,5 @@
. = ..()
wine_power = rand(0.1,1.5)
if(prob(1))
wine_power = 2.0
wine_power = 2.0
+22 -9
View File
@@ -25,7 +25,7 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi
var/image/ghostimage = null //this mobs ghost image, for deleting and stuff
var/ghostvision = 1 //is the ghost able to see things humans can't?
var/seedarkness = 1
var/data_hud_seen = 0 //this should one of the defines in __DEFINES/hud.dm
var/data_hud_seen = FALSE //this should one of the defines in __DEFINES/hud.dm
/mob/dead/observer/New(var/mob/body=null, var/flags=1)
sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
@@ -297,30 +297,43 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/dead/observer/proc/show_me_the_hud(hud_index)
var/datum/atom_hud/H = huds[hud_index]
H.add_hud_to(src)
data_hud_seen = hud_index
/mob/dead/observer/proc/remove_the_hud(hud_index) //remove old huds
var/datum/atom_hud/H = huds[hud_index]
H.remove_hud_from(src)
/mob/dead/observer/verb/toggle_medHUD()
set category = "Ghost"
set name = "Toggle Medic/Sec/DiagHUD"
set desc = "Toggles the medical HUD."
set name = "Toggle Medic/Sec/Diag/All HUDs"
set desc = "Toggles the HUDs."
if(!client)
return
if(data_hud_seen) //remove old huds
var/datum/atom_hud/H = huds[data_hud_seen]
H.remove_hud_from(src)
switch(data_hud_seen) //give new huds
if(0)
if(FALSE)
data_hud_seen = DATA_HUD_SECURITY_ADVANCED
show_me_the_hud(DATA_HUD_SECURITY_ADVANCED)
to_chat(src, "<span class='notice'>Security HUD set.</span>")
if(DATA_HUD_SECURITY_ADVANCED)
data_hud_seen = DATA_HUD_MEDICAL_ADVANCED
remove_the_hud(DATA_HUD_SECURITY_ADVANCED)
show_me_the_hud(DATA_HUD_MEDICAL_ADVANCED)
to_chat(src, "<span class='notice'>Medical HUD set.</span>")
if(DATA_HUD_MEDICAL_ADVANCED)
data_hud_seen = DATA_HUD_DIAGNOSTIC
remove_the_hud(DATA_HUD_MEDICAL_ADVANCED)
show_me_the_hud(DATA_HUD_DIAGNOSTIC)
to_chat(src, "<span class='notice'>Diagnostic HUD set.</span>")
if(DATA_HUD_DIAGNOSTIC)
data_hud_seen = 0
data_hud_seen = data_hud_seen + DATA_HUD_SECURITY_ADVANCED + DATA_HUD_MEDICAL_ADVANCED
show_me_the_hud(DATA_HUD_SECURITY_ADVANCED)
show_me_the_hud(DATA_HUD_MEDICAL_ADVANCED)
to_chat(src, "<span class='notice'>All HUDs enabled.</span>")
else
data_hud_seen = FALSE
remove_the_hud(DATA_HUD_DIAGNOSTIC)
remove_the_hud(DATA_HUD_SECURITY_ADVANCED)
remove_the_hud(DATA_HUD_MEDICAL_ADVANCED)
to_chat(src, "<span class='notice'>HUDs disabled.</span>")
@@ -147,7 +147,7 @@ var/global/list/damage_icon_parts = list()
E.update_icon()
if(E.damage_state == "00")
continue
var/icon/DI
var/cache_index = "[E.damage_state]/[E.icon_name]/[dna.species.blood_color]/[dna.species.name]"
@@ -437,7 +437,7 @@ var/global/list/damage_icon_parts = list()
else
//warning("Invalid f_style for [species.name]: [f_style]")
/mob/living/carbon/human/update_mutations(var/update_icons=1)
remove_overlay(MUTATIONS_LAYER)
@@ -681,6 +681,8 @@ var/global/list/damage_icon_parts = list()
overlays_standing[GLASSES_LAYER] = new_glasses
apply_overlay(GLASSES_LAYER)
update_misc_effects()
/mob/living/carbon/human/update_inv_ears(var/update_icons=1)
remove_overlay(EARS_LAYER)
if(client && hud_used)
@@ -1035,7 +1037,7 @@ var/global/list/damage_icon_parts = list()
/mob/living/carbon/human/proc/update_tail_layer(var/update_icons=1)
remove_overlay(TAIL_UNDERLIMBS_LAYER) // SEW direction icons, overlayed by LIMBS_LAYER.
remove_overlay(TAIL_LAYER) /* This will be one of two things:
If the species' tail is overlapped by limbs, this will be only the N direction icon so tails
If the species' tail is overlapped by limbs, this will be only the N direction icon so tails
can still appear on the outside of uniforms and such.
Otherwise, since the user's tail isn't overlapped by limbs, it will be a full icon with all directions. */
@@ -1110,7 +1112,7 @@ var/global/list/damage_icon_parts = list()
/mob/living/carbon/human/proc/start_tail_wagging(var/update_icons=1)
remove_overlay(TAIL_UNDERLIMBS_LAYER) // SEW direction icons, overlayed by LIMBS_LAYER.
remove_overlay(TAIL_LAYER) /* This will be one of two things:
If the species' tail is overlapped by limbs, this will be only the N direction icon so tails
If the species' tail is overlapped by limbs, this will be only the N direction icon so tails
can still appear on the outside of uniforms and such.
Otherwise, since the user's tail isn't overlapped by limbs, it will be a full icon with all directions. */
@@ -158,11 +158,6 @@
data["shuttle"] = shuttle
if(trade_dockrequest_timelimit > world.time)
data["dock_request"] = 1
else
data["dock_request"] = 0
return data
/datum/computer_file/program/comm/Topic(href, href_list)
@@ -386,16 +381,5 @@
else
to_chat(usr, "<span class='danger'>Nano-Mob Hunter GO! game server is offline for extended maintenance. Contact your Central Command administrators for more info if desired.</span>")
if("AcceptDocking")
to_chat(usr, "Docking request accepted!")
trade_dock_timelimit = world.time + 1200
trade_dockrequest_timelimit = 0
event_announcement.Announce("Docking request for trading ship approved, please dock at port bay 4.", "Docking Request")
if("DenyDocking")
to_chat(usr, "Docking requeset denied!")
trade_dock_timelimit = 0
trade_dockrequest_timelimit = 0
event_announcement.Announce("Docking request for trading ship denied.", "Docking request")
SSnanoui.update_uis(src)
return 1
+12
View File
@@ -702,3 +702,15 @@
contact_poison = null
add_attack_logs(src, user, "Picked up [src], the paper poisoned by [contact_poison_poisoner]")
..()
/obj/item/paper/researchnotes
name = "paper - 'Research Notes'"
info = "<b>The notes appear gibberish to you. Perhaps a destructive analyzer in R&D could make sense of them.</b>"
origin_tech = "combat=4;materials=4;engineering=4;biotech=4"
/obj/item/paper/researchnotes/New()
var/list/possible_techs = list("materials", "engineering", "plasmatech", "powerstorage", "bluespace", "biotech", "combat", "magnets", "programming", "syndicate")
var/mytech = pick(possible_techs)
var/mylevel = rand(7, 9)
origin_tech = "[mytech]=[mylevel]"
name = "research notes - [mytech] [mylevel]"
@@ -379,7 +379,7 @@
/obj/item/ammo_casing/cap
desc = "A cap for children toys."
caliber = "caps"
caliber = "cap"
projectile_type = /obj/item/projectile/bullet/cap
/obj/item/ammo_casing/laser
@@ -30,13 +30,13 @@
/obj/item/ammo_casing/magic/spellblade
projectile_type = /obj/item/projectile/magic/spellblade
/obj/item/ammo_casing/magic/slipping
projectile_type = /obj/item/projectile/magic/slipping
/obj/item/ammo_casing/magic/chaos/newshot()
projectile_type = pick(typesof(/obj/item/projectile/magic))
..()
/obj/item/ammo_casing/magic/honk
projectile_type = /obj/item/projectile/bullet/honker
/obj/item/ammo_casing/forcebolt
projectile_type = /obj/item/projectile/forcebolt
@@ -140,6 +140,15 @@
overlays += image(icon = icon, icon_state = iconF, pixel_x = flight_x_offset, pixel_y = flight_y_offset)
/obj/item/gun/energy/kinetic_accelerator/experimental
name = "experimental kinetic accelerator"
desc = "A modified, far more dangerous version of the proto-kinetic accelerator, with half the cooldown and twice the modkit space of the standard version."
icon_state = "kineticgun_h"
item_state = "kineticgun_h"
origin_tech = "combat=5;powerstorage=3;engineering=5"
overheat_time = 8
max_mod_capacity = 200
//Casing
/obj/item/ammo_casing/energy/kinetic
projectile_type = /obj/item/projectile/kinetic
+12 -7
View File
@@ -52,14 +52,19 @@
no_den_usage = 1
fire_sound = 'sound/magic/Staff_Door.ogg'
/obj/item/gun/magic/staff/honk
/obj/item/gun/magic/staff/slipping
name = "staff of slipping"
desc = "An artefact that spits... bananas?"
ammo_type = /obj/item/ammo_casing/magic/slipping
icon_state = "staffofslipping"
item_state = "staffofslipping"
max_charges = 10
recharge_rate = 2
fire_sound = 'sound/items/bikehorn.ogg'
/obj/item/gun/magic/staff/slipping/honkmother
name = "staff of the honkmother"
desc = "Honk"
ammo_type = /obj/item/ammo_casing/magic/honk
icon_state = "honker"
item_state = "honker"
max_charges = 4
recharge_rate = 8
desc = "An ancient artefact, sought after by clowns everywhere."
fire_sound = 'sound/items/Airhorn.ogg'
/obj/item/gun/magic/staff/focus
@@ -209,23 +209,6 @@
weaken = 4
stun = 4
/obj/item/projectile/bullet/honker
name = "banana"
damage = 0
weaken = 5
stun = 5
forcedodge = 1
nodamage = 1
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
hitsound = 'sound/items/bikehorn.ogg'
icon = 'icons/obj/hydroponics/harvest.dmi'
icon_state = "banana"
range = 200
/obj/item/projectile/bullet/honker/New()
..()
SpinAnimation()
/obj/item/projectile/bullet/mime
damage = 0
stun = 5
@@ -301,3 +301,32 @@
flag = "magic"
dismemberment = 50
nodamage = 0
/obj/item/projectile/magic/slipping
name = "magical banana"
icon = 'icons/obj/hydroponics/harvest.dmi'
icon_state = "banana"
var/slip_stun = 5
var/slip_weaken = 5
hitsound = 'sound/items/bikehorn.ogg'
/obj/item/projectile/magic/slipping/New()
..()
SpinAnimation()
/obj/item/projectile/magic/slipping/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/H = target
H.slip(src, slip_stun, slip_weaken, 0, FALSE, TRUE) //Slips even with noslips/magboots on. NO ESCAPE!
else if(isrobot(target)) //You think you're safe, cyborg? FOOL!
var/mob/living/silicon/robot/R = target
if(!R.incapacitated())
to_chat(target, "<span class='warning'>You get splatted by [src], HONKING your sensors!</span>")
R.Stun(slip_stun)
else if(ismob(target))
var/mob/M = target
if(!M.stunned)
to_chat(target, "<span class='notice'>You get splatted by [src].</span>")
M.Weaken(slip_weaken)
M.Stun(slip_stun)
. = ..()
@@ -206,6 +206,16 @@
desc = "A bottle of the ever-changing quantum hair dye."
list_reagents = list("hair_dye" = 50)
/obj/item/reagent_containers/glass/bottle/reagent/omnizine
name = "Omnizine Bottle"
desc = "A reagent bottle. Contains Omnizine."
list_reagents = list("omnizine" = 50)
/obj/item/reagent_containers/glass/bottle/reagent/strange_reagent
name = "Strange Reagent Bottle"
desc = "A bottle of glowing fluid."
list_reagents = list("strange_reagent" = 30)
////////////////////Traitor Poison Bottle//////////////////////////////
/obj/item/reagent_containers/glass/bottle/traitor
@@ -326,6 +336,18 @@
icon_state = "round_bottle"
spawned_disease = /datum/disease/tuberculosis
/obj/item/reagent_containers/glass/bottle/regeneration
name = "Regeneration culture bottle"
desc = "A small bottle. Contains a sample of a virus that heals toxin damage."
icon_state = "round_bottle"
spawned_disease = /datum/disease/advance/heal
/obj/item/reagent_containers/glass/bottle/sensory_restoration
name = "Sensory Restoration culture bottle"
desc = "A small bottle. Contains a sample of a virus that heals sensory damage."
icon_state = "round_bottle"
spawned_disease = /datum/disease/advance/sensory_restoration
/obj/item/reagent_containers/glass/bottle/tuberculosiscure
name = "BVAK bottle"
desc = "A small bottle containing Bio Virus Antidote Kit."
+1 -31
View File
@@ -877,46 +877,16 @@
possible_destinations = "sit_arrivals;sit_engshuttle;sit_away"
var/global/trade_dock_timelimit = 0
var/global/trade_dockrequest_timelimit = 0
/obj/machinery/computer/shuttle/trade
name = "Freighter Console"
docking_request = 1
var/possible_destinations_dock
var/possible_destinations_nodock
var/docking_request_message = "A trading ship has submitted a request to dock for trading. This request can be accepted or denied using a communications console."
/obj/machinery/computer/shuttle/trade/attack_hand(mob/user)
if(world.time < trade_dock_timelimit)
possible_destinations = possible_destinations_dock
else
possible_destinations = possible_destinations_nodock
docking_request = (world.time > trade_dockrequest_timelimit && world.time > trade_dock_timelimit)
..(user)
/obj/machinery/computer/shuttle/trade/Topic(href, href_list)
if(..())
return 1
if(href_list["request"])
if(world.time < trade_dockrequest_timelimit || world.time < trade_dock_timelimit)
return
to_chat(usr, "<span class='notice'>Request sent.</span>")
event_announcement.Announce(docking_request_message, "Docking Request")
trade_dockrequest_timelimit = world.time + 1200 // They have 2 minutes to approve the request.
return 1
/obj/machinery/computer/shuttle/trade/sol
req_access = list(access_trade_sol)
possible_destinations_dock = "trade_sol_base;trade_sol_offstation;trade_dock"
possible_destinations_nodock = "trade_sol_base;trade_sol_offstation"
possible_destinations = "trade_sol_base;trade_dock"
shuttleId = "trade_sol"
docking_request_message = "A trading ship of Sol origin has requested docking aboard the NSS Cyberiad for trading. This request can be accepted or denied using a communications console."
//#undef DOCKING_PORT_HIGHLIGHT
/turf/proc/copyTurf(turf/T)
if(T.type != type)
var/obj/O