Updating PR again

This commit is contained in:
Regen
2014-06-17 02:48:28 +02:00
75 changed files with 27388 additions and 25442 deletions
+57 -24
View File
@@ -411,27 +411,59 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
if(usr.get_active_hand() != src)
return
var/w1
var/w2
var/w3
var/list/dictionary = list (
"convert" = list("join","blood","self"),
"wall" = list("destroy","travel","self"),
"blood boil" = list("destroy","see","blood"),
"blood drain" = list("travel","blood","self"),
"raise dead" = list("blood","join","hell"),
"summon narsie" = list("hell","join","self"),
"communicate" = list("self","other","technology"),
"emp" = list("destroy","see","technology"),
"manifest" = list("blood","see","travel"),
"summon tome" = list("see","blood","hell"),
"see invisible" = list("see","hell","join"),
"hide" = list("hide","see","blood"),
"reveal" = list("blood","see","hide"),
"astral journey" = list("hell","travel","self"),
"imbue" = list("hell","technology","join"),
"sacrifice" = list("hell","blood","join"),
"summon cultist" = list("join","other","self"),
"free cultist" = list("travel","technology","other"),
"deafen" = list("hide","other","see"),
"blind" = list("destroy","see","other"),
"stun" = list("join","hide","technology"),
"armor" = list("hell","destroy","other"),
"teleport" = list("travel","self"),
"teleport other" = list("travel","other")
)
var/list/english = list()
for (var/w in words)
english+=words[w]
var/list/scribewords = list("none")
for (var/entry in words)
if (words[entry] != entry)
english += list(words[entry] = entry)
for (var/entry in dictionary)
var/list/required = dictionary[entry]
if (length(english&required) == required.len)
scribewords += entry
var/chosen_rune = null
if(usr)
w1 = input("Write your first rune:", "Rune Scribing") in english
for (var/w in words)
if (words[w] == w1)
w1 = w
if(usr)
w2 = input("Write your second rune:", "Rune Scribing") in english
for (var/w in words)
if (words[w] == w2)
w2 = w
if(usr)
w3 = input("Write your third rune:", "Rune Scribing") in english
for (var/w in words)
if (words[w] == w3)
w3 = w
chosen_rune = input ("Choose a rune to scribe.") in scribewords
if (!chosen_rune)
return
if (chosen_rune == "none")
user << "\red You decide against scribing a rune, perhaps you should take this time to study your notes."
return
if (chosen_rune == "teleport")
dictionary[chosen_rune] += input ("Choose a destination word") in english
if (chosen_rune == "teleport other")
dictionary[chosen_rune] += input ("Choose a destination word") in english
if(usr.get_active_hand() != src)
return
@@ -446,9 +478,10 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
var/mob/living/carbon/human/H = user
var/obj/effect/rune/R = new /obj/effect/rune(user.loc)
user << "\red You finish drawing the arcane markings of the Geometer."
R.word1 = w1
R.word2 = w2
R.word3 = w3
var/list/required = dictionary[chosen_rune]
R.word1 = english[required[1]]
R.word2 = english[required[2]]
R.word3 = english[required[3]]
R.check_icon()
R.blood_DNA = list()
R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
@@ -467,8 +500,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
// return
// for(var/mob/M in nearby)
// if(M == user)
for(var/w in words)
words[w] = T.words[w]
for(var/entry in words)
words[entry] = T.words[entry]
user << "You copy the translation notes from your tome."
-43
View File
@@ -340,49 +340,6 @@
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
//var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds.
/datum/job/lawyer
title = "Internal Affairs Agent"
flag = LAWYER
department_flag = CIVILIAN
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the captain"
selection_color = "#dddddd"
access = list(access_lawyer, access_court, access_sec_doors, access_maint_tunnels)
minimal_access = list(access_lawyer, access_court, access_sec_doors, access_maint_tunnels)
alt_titles = list("Lawyer","Public Defender")
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_or_collect(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform)
H.equip_or_collect(new /obj/item/clothing/suit/storage/internalaffairs(H), slot_wear_suit)
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_or_collect(new /obj/item/clothing/glasses/sunglasses/big(H), slot_glasses)
H.equip_or_collect(new /obj/item/device/pda/lawyer(H), slot_wear_pda)
H.equip_or_collect(new /obj/item/weapon/storage/briefcase(H), slot_l_hand)
H.equip_or_collect(new /obj/item/device/laser_pointer(H), slot_l_store)
if(H.backbag == 1)
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
var/datum/organ/external/affected = H.organs_by_name["head"]
affected.implants += L
L.part = affected
return 1
/datum/job/barber
title = "Barber"
flag = BARBER
+31
View File
@@ -204,3 +204,34 @@
H.equip_or_collect(new /obj/item/weapon/stamp(H), slot_in_backpack)
H.equip_or_collect(new /obj/item/weapon/stamp/denied(H), slot_in_backpack)
return 1
/datum/job/brigdoc
title = "Brig Physician"
flag = BRIGDOC
department_flag = KARMA
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "the warden"
selection_color = "#ffeeee"
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
minimal_access = list(access_medical, access_morgue, access_surgery, access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels)
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_or_collect(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
H.equip_or_collect(new /obj/item/clothing/suit/storage/fr_jacket(H), slot_wear_suit)
H.equip_or_collect(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_or_collect(new /obj/item/device/pda/medical(H), slot_wear_pda)
H.equip_or_collect(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_s_store)
if(H.backbag == 1)
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
+83 -2
View File
@@ -103,7 +103,7 @@
total_positions = 1
spawn_positions = 1
supervisors = "Nanotrasen Board of Directors"
selection_color = "#ccccff"
selection_color = "#ddddff"
idtype = /obj/item/weapon/card/id/centcom
req_admin_notify = 1
minimal_player_age = 10
@@ -149,7 +149,7 @@
total_positions = 1
spawn_positions = 1
supervisors = "Whichever head your protect, and ultimately the Captain"
selection_color = "#ccccff"
selection_color = "#ddddff"
idtype = /obj/item/weapon/card/id/centcom
req_admin_notify = 1
minimal_player_age = 10
@@ -189,4 +189,85 @@
var/datum/organ/external/affected = H.organs_by_name["head"]
affected.implants += L
L.part = affected
return 1
/datum/job/judge
title = "Magistrate"
flag = JUDGE
department_flag = KARMA
faction = "Station"
total_positions = 1
spawn_positions = 1
supervisors = "Centcom High Court"
selection_color = "#ddddff"
idtype = /obj/item/weapon/card/id/centcom
req_admin_notify = 1
minimal_player_age = 10
access = list(access_security, access_sec_doors, access_brig, access_court, access_forensics_lockers,
access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads,
access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue,
access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics, access_lawyer,
access_theatre, access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station,
access_clown, access_mime, access_hop, access_RC_announce, access_keycard_auth, access_gateway)
minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_lawyer)
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_or_collect(new /obj/item/device/radio/headset/heads/hop(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
H.equip_if_possible(new /obj/item/clothing/under/suit_jacket/really_black(H), slot_w_uniform)
H.equip_if_possible(new /obj/item/clothing/suit/judgerobe(H), slot_wear_suit)
H.equip_if_possible(new /obj/item/clothing/shoes/centcom(H), slot_shoes)
H.equip_or_collect(new /obj/item/clothing/head/powdered_wig(H), slot_head)
H.equip_or_collect(new /obj/item/device/pda/heads/hop(H), slot_wear_pda)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
var/datum/organ/external/affected = H.organs_by_name["head"]
affected.implants += L
L.part = affected
return 1
//var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds.
/datum/job/lawyer
title = "Internal Affairs Agent"
flag = LAWYER
department_flag = CIVILIAN
faction = "Station"
total_positions = 2
spawn_positions = 2
supervisors = "the magistrate"
selection_color = "#ddddff"
access = list(access_lawyer, access_court, access_sec_doors, access_maint_tunnels)
minimal_access = list(access_lawyer, access_court, access_sec_doors, access_maint_tunnels)
alt_titles = list("Lawyer","Public Defender")
equip(var/mob/living/carbon/human/H)
if(!H) return 0
H.equip_or_collect(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
if(4) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
H.equip_or_collect(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform)
H.equip_or_collect(new /obj/item/clothing/suit/storage/internalaffairs(H), slot_wear_suit)
H.equip_or_collect(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_or_collect(new /obj/item/clothing/glasses/sunglasses/big(H), slot_glasses)
H.equip_or_collect(new /obj/item/device/pda/lawyer(H), slot_wear_pda)
H.equip_or_collect(new /obj/item/weapon/storage/briefcase(H), slot_l_hand)
H.equip_or_collect(new /obj/item/device/laser_pointer(H), slot_l_store)
if(H.backbag == 1)
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
var/datum/organ/external/affected = H.organs_by_name["head"]
affected.implants += L
L.part = affected
return 1
+10 -5
View File
@@ -53,6 +53,8 @@ var/const/BLUESHIELD =(1<<1)
var/const/CUSTOMS =(1<<2)
var/const/BARBER =(1<<3)
var/const/MECHANIC =(1<<4)
var/const/BRIGDOC =(1<<5)
var/const/JUDGE =(1<<6)
var/list/assistant_occupations = list(
)
@@ -64,8 +66,7 @@ var/list/command_positions = list(
"Head of Security",
"Chief Engineer",
"Research Director",
"Chief Medical Officer",
"Nanotrasen Representative"
"Chief Medical Officer"
)
@@ -112,7 +113,8 @@ var/list/civilian_positions = list(
"Assistant",
"Clown",
"Mime",
"Barber"
"Barber",
"Magistrate"
)
@@ -123,7 +125,8 @@ var/list/security_positions = list(
"Detective",
"Security Officer",
"Customs Officer",
"Blueshield"
"Blueshield",
"Brig Physician"
)
@@ -138,7 +141,9 @@ var/list/whitelisted_positions = list(
"Customs Officer",
"Nanotrasen Representative",
"Barber",
"Mechanic"
"Mechanic",
"Brig Physician",
"Magistrate"
)
/proc/guest_jobbans(var/job)
+1 -3
View File
@@ -1,4 +1,4 @@
#define AIRLOCK_CONTROL_RANGE 5
#define AIRLOCK_CONTROL_RANGE 22
// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access)
obj/machinery/door/airlock
@@ -53,8 +53,6 @@ obj/machinery/door/airlock/receive_signal(datum/signal/signal)
obj/machinery/door/airlock/proc/send_status()
if (!can_radio()) return
if(radio_connection)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
@@ -109,11 +109,6 @@
/datum/computer/file/embedded_program/docking/airlock/ready_for_undocking()
return airlock_program.check_doors_secured()
/datum/computer/file/embedded_program/docking/airlock/reset()
airlock_program.stop_cycling()
airlock_program.close_doors()
..()
//An airlock controller to be used by the airlock-based docking port controller.
//Same as a regular airlock controller but allows disabling of the regular airlock functions when docking
/datum/computer/file/embedded_program/airlock/docking
@@ -171,4 +166,5 @@
set category = "Debug"
set src in view(1)
src.program:initiate_undocking()
*/
@@ -14,8 +14,13 @@
MODE_CLIENT|STATE_UNDOCKED sent a request for docking and now waiting for a reply.
MODE_CLIENT|STATE_DOCKING server told us they are OK to dock, waiting for our docking port to be ready.
MODE_CLIENT|STATE_DOCKED idle - docked as client.
<<<<<<< HEAD
MODE_CLIENT|STATE_UNDOCKING we are either waiting for our docking port to be ready or for the server to give us the OK to undock.
=======
MODE_CLIENT|STATE_UNDOCKING we are either waiting for our docking port to be ready or for the server to give us the OK to finish undocking.
>>>>>>> 232e50e... Shuttle console refactoring
MODE_SERVER|STATE_UNDOCKED should never happen.
MODE_SERVER|STATE_DOCKING someone requested docking, we are waiting for our docking port to be ready.
MODE_SERVER|STATE_DOCKED idle - docked as server
@@ -24,10 +29,68 @@
MODE_NONE|STATE_UNDOCKED idle - not docked.
MODE_NONE|anything else should never happen.
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
=======
>>>>>>> ed4fb8d... Shuttles now dock on arrival and departure
=======
=======
*** Docking Signals ***
Docking
Client sends request_dock
<<<<<<< HEAD
When server is ready, sends confirm_dock
Client sends confirm_dock back
Undocking
Client sends request_undock
When server is ready, sends confirm_dock
Client sends confirm_dock back
Note that in both cases each side exchanges confirm_dock before the docking operation is considered done.
>>>>>>> dc7d8fa... Adjusts how undocking signals are used
=======
Server sends confirm_dock to say that yes, we will serve your request
When client is ready, sends confirm_dock
Server sends confirm_dock back to indicate that docking is complete
Undocking
Client sends request_undock
When client is ready, sends confirm_undock
Server sends confirm_undock back to indicate that docking is complete
Note that in both cases each side exchanges confirm_dock before the docking operation is considered done.
The client first sends a confirm message to indicate it is ready, and then finally the server will send it's
confirm message to indicate that the operation is complete.
Note also that when docking, the server sends an additional confirm message. This is because before docking,
the server and client do not have a defined relationship. Before undocking, the server and client are already
related to each other, thus the extra confirm message is not needed.
>>>>>>> d837e5d... Streamlined docking code
*** Override, what is it? ***
The purpose of enabling the override is to prevent the docking program from automatically doing things with the docking port when docking or undocking.
Maybe the shuttle is full of plamsa/phoron for some reason, and you don't want the door to automatically open, or the airlock to cycle.
This means that the prepare_for_docking/undocking and finish_docking/undocking procs don't get called.
The docking controller will still check the state of the docking port, and thus prevent the shuttle from launching unless they force the launch (handling forced
launches is not the docking controller's responsibility). In this case it is up to the players to manually get the docking port into a good state to undock
(which usually just means closing and locking the doors).
<<<<<<< HEAD
In line with this, docking controllers should prevent players from manually doing things when the override is disabled.
>>>>>>> acec01f... Docking overrides now have a clear purpose
=======
In line with this, docking controllers should prevent players from manually doing things when the override is NOT enabled.
>>>>>>> 232e50e... Shuttle console refactoring
*/
@@ -38,6 +101,7 @@
var/response_sent = 0 //so we don't spam confirmation messages
var/override_enabled = 0 //skips checks for the docking port being ready
var/received_confirm = 0 //for undocking, whether the client has recieved a confirmation from the server
/datum/computer/file/embedded_program/docking/receive_signal(datum/signal/signal, receive_method, receive_param)
var/receive_tag = signal.data["tag"] //for docking signals, this is the sender id
@@ -53,13 +117,14 @@
dock_state = STATE_DOCKING
if (!override_enabled)
prepare_for_docking()
else if (control_mode == MODE_SERVER && dock_state == STATE_DOCKING && receive_tag == tag_target) //client just sent us the confirmation back, we're done with the docking process
else if (control_mode == MODE_CLIENT && dock_state == STATE_DOCKING && receive_tag == tag_target)
dock_state = STATE_DOCKED
if (!override_enabled)
finish_docking() //server done docking!
finish_docking() //client done docking!
response_sent = 0
else
send_docking_command(tag_target, "abort_dock") //not expecting confirmation for anything - tell the other guy.
else if (control_mode == MODE_SERVER && dock_state == STATE_DOCKING && receive_tag == tag_target) //client just sent us the confirmation back, we're done with the docking process
received_confirm = 1
if ("request_dock")
if (control_mode == MODE_NONE && dock_state == STATE_UNDOCKED)
@@ -68,16 +133,21 @@
tag_target = receive_tag
if (!override_enabled)
prepare_for_docking()
send_docking_command(tag_target, "confirm_dock") //acknowledge the request
if ("confirm_undock")
if (control_mode == MODE_CLIENT && dock_state == STATE_UNDOCKING && receive_tag == tag_target)
send_docking_command(tag_target, "confirm_undock")
if (!override_enabled)
finish_undocking()
reset() //client is done undocking!
else if (control_mode == MODE_SERVER && dock_state == STATE_UNDOCKING && receive_tag == tag_target)
received_confirm = 1
if ("request_undock")
if (control_mode == MODE_SERVER && dock_state == STATE_DOCKED && receive_tag == tag_target)
dock_state = STATE_UNDOCKING
prepare_for_undocking()
if (!override_enabled)
prepare_for_undocking()
if ("dock_error")
if (receive_tag == tag_target)
@@ -86,26 +156,36 @@
/datum/computer/file/embedded_program/docking/process()
switch(dock_state)
if (STATE_DOCKING) //waiting for our docking port to be ready for docking
if (ready_for_docking() || override_enabled)
if (!response_sent)
send_docking_command(tag_target, "confirm_dock") //tell the other guy we're ready
response_sent = 1
if (control_mode == MODE_CLIENT) //client doesn't need to do anything further
dock_state = STATE_DOCKED
if (!override_enabled)
finish_docking() //client done docking!
response_sent = 0
if (STATE_UNDOCKING)
if (ready_for_undocking() || override_enabled)
if (ready_for_docking())
if (control_mode == MODE_CLIENT)
if (!response_sent)
send_docking_command(tag_target, "request_undock") //tell the server we want to undock now.
send_docking_command(tag_target, "confirm_dock") //tell the server we're ready
response_sent = 1
else if (control_mode == MODE_SERVER)
send_docking_command(tag_target, "confirm_undock") //tell the client we are OK to undock.
else if (control_mode == MODE_SERVER && received_confirm)
send_docking_command(tag_target, "confirm_dock") //tell the client we are done docking.
dock_state = STATE_DOCKED
if (!override_enabled)
finish_docking() //server done docking!
response_sent = 0
received_confirm = 0
if (STATE_UNDOCKING)
if (ready_for_undocking())
if (control_mode == MODE_CLIENT)
if (!response_sent)
send_docking_command(tag_target, "confirm_undock") //tell the server we are OK to undock.
response_sent = 1
else if (control_mode == MODE_SERVER && received_confirm)
send_docking_command(tag_target, "confirm_undock") //tell the client we are done undocking.
if (!override_enabled)
finish_undocking()
reset() //server is done undocking!
if (dock_state != STATE_DOCKING && dock_state != STATE_UNDOCKING)
response_sent = 0
@@ -132,11 +212,11 @@
return
dock_state = STATE_UNDOCKING
prepare_for_undocking()
if (!override_enabled)
prepare_for_undocking()
send_docking_command(tag_target, "request_undock")
//tell the docking port to start getting ready for docking - e.g. pressurize
/datum/computer/file/embedded_program/docking/proc/prepare_for_docking()
return
@@ -153,27 +233,29 @@
/datum/computer/file/embedded_program/docking/proc/prepare_for_undocking()
return
//we are docked, open the doors or whatever.
/datum/computer/file/embedded_program/docking/proc/finish_undocking()
return
//are we ready for undocking?
/datum/computer/file/embedded_program/docking/proc/ready_for_undocking()
return 1
/datum/computer/file/embedded_program/docking/proc/enable_override()
override_enabled = 1
//if (tag_target)
// send_docking_command(tag_target, "enable_override")
/datum/computer/file/embedded_program/docking/proc/disable_override()
override_enabled = 0
//if (tag_target)
// send_docking_command(tag_target, "disable_override")
/datum/computer/file/embedded_program/docking/proc/reset()
dock_state = STATE_UNDOCKED
control_mode = MODE_NONE
tag_target = null
response_sent = 0
received_confirm = 0
/datum/computer/file/embedded_program/docking/proc/force_undock()
//world << "[id_tag]: forcing undock"
if (tag_target)
send_docking_command(tag_target, "dock_error")
reset()
@@ -127,10 +127,6 @@
/datum/computer/file/embedded_program/docking/simple/ready_for_undocking()
return (memory["door_status"]["state"] == "closed" && memory["door_status"]["lock"] == "locked")
/datum/computer/file/embedded_program/docking/simple/reset()
close_door()
..()
/*** DEBUG VERBS ***
/obj/machinery/embedded_controller/radio/simple_docking_controller/verb/view_state()
@@ -157,4 +153,5 @@
set category = "Debug"
set src in view(1)
src.program:initiate_undocking()
*/
*/
+3 -2
View File
@@ -177,7 +177,7 @@
return
else if(istype(W, /obj/item/weapon/wrench))
if(do_after(user, 20))
if(!src) return
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
@@ -189,7 +189,7 @@
user.visible_message("[user] unfastens the bolts securing \the [src] to the floor.", "You unfasten the bolts securing \the [src] to the floor.")
anchored = 0
return
else if(src.panel_open)
for(var/datum/data/vending_product/R in product_records)
if(istype(W, R.product_path))
@@ -414,6 +414,7 @@
src.add_fingerprint(usr)
src.updateUsrDialog()
else
usr.unset_machine()
usr << browse(null, "window=vending")
return
return
+4 -1
View File
@@ -273,7 +273,10 @@
/obj/item/robot_parts/head/attackby(obj/item/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/device/flash))
if(src.flash1 && src.flash2)
if(istype(user,/mob/living/silicon/robot))
user << "\red How do you propose to do that?"
return
else if(src.flash1 && src.flash2)
user << "\blue You have already inserted the eyes!"
return
else if(src.flash1)
+159 -214
View File
@@ -8,133 +8,38 @@ Mineral Sheets
- Gold
- Silver
- Clown
Others:
- Adamantine
- Mythril
- Enriched Uranium
- Platinum
- Metallic Hydrogen
- Tritium
- Osmium
*/
/*
* Sandstone
*/
/obj/item/stack/sheet/mineral/sandstone
name = "sandstone bricks"
desc = "This appears to be a combination of both sand and stone."
singular_name = "sandstone brick"
icon_state = "sheet-sandstone"
throw_speed = 4
throw_range = 5
origin_tech = "materials=1"
sheettype = "sandstone"
var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = 1, on_floor = 1), \
/* new/datum/stack_recipe("sandstone wall", ???), \
new/datum/stack_recipe("sandstone floor", ???),\ */
)
/obj/item/stack/sheet/mineral/sandstone/New(var/loc, var/amount=null)
recipes = sandstone_recipes
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
..()
/*
* Diamond
*/
/obj/item/stack/sheet/mineral/diamond
name = "diamond"
icon_state = "sheet-diamond"
force = 5.0
throwforce = 5
w_class = 3.0
throw_range = 3
origin_tech = "materials=6"
perunit = 3750
sheettype = "diamond"
var/global/list/datum/stack_recipe/silver_recipes = list ( \
new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \
)
var/global/list/datum/stack_recipe/diamond_recipes = list ( \
new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/mineral/diamond/New(var/loc, var/amount=null)
recipes = diamond_recipes
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
..()
/*
* Uranium
*/
/obj/item/stack/sheet/mineral/uranium
name = "uranium"
icon_state = "sheet-uranium"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
origin_tech = "materials=5"
perunit = 2000
sheettype = "uranium"
var/global/list/datum/stack_recipe/uranium_recipes = list ( \
new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/mineral/uranium/New(var/loc, var/amount=null)
recipes = uranium_recipes
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
..()
/*
* Plasma
*/
/obj/item/stack/sheet/mineral/plasma
name = "solid plasma"
icon_state = "sheet-plasma"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
origin_tech = "plasmatech=2;materials=2"
perunit = 2000
sheettype = "plasma"
var/global/list/datum/stack_recipe/gold_recipes = list ( \
new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \
)
var/global/list/datum/stack_recipe/plasma_recipes = list ( \
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/mineral/plasma/New(var/loc, var/amount=null)
recipes = plasma_recipes
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
..()
/obj/item/stack/sheet/mineral/plastic
name = "Plastic"
icon_state = "sheet-plastic"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
origin_tech = "materials=3"
perunit = 2000
/obj/item/stack/sheet/mineral/plastic/cyborg
name = "plastic sheets"
icon_state = "sheet-plastic"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
perunit = 2000
var/global/list/datum/stack_recipe/plastic_recipes = list ( \
new/datum/stack_recipe("plastic crate", /obj/structure/closet/crate/plastic, 10, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("plastic ashtray", /obj/item/ashtray/plastic, 2, one_per_turf = 1, on_floor = 1), \
@@ -144,131 +49,171 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \
new/datum/stack_recipe("plastic bag", /obj/item/weapon/storage/bag/plasticbag, 3, on_floor = 1), \
)
/obj/item/stack/sheet/mineral/plastic/New(var/loc, var/amount=null)
recipes = plastic_recipes
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
..()
/*
* Gold
*/
/obj/item/stack/sheet/mineral/gold
name = "gold"
icon_state = "sheet-gold"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
origin_tech = "materials=4"
perunit = 2000
sheettype = "gold"
var/global/list/datum/stack_recipe/gold_recipes = list ( \
new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/mineral/gold/New(var/loc, var/amount=null)
recipes = gold_recipes
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
..()
/*
* Silver
*/
/obj/item/stack/sheet/mineral/silver
name = "silver"
icon_state = "sheet-silver"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
origin_tech = "materials=3"
perunit = 2000
sheettype = "silver"
var/global/list/datum/stack_recipe/silver_recipes = list ( \
new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/mineral/silver/New(var/loc, var/amount=null)
recipes = silver_recipes
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
..()
/*
* Clown
*/
/obj/item/stack/sheet/mineral/clown
name = "bananium"
icon_state = "sheet-clown"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
origin_tech = "materials=4"
perunit = 2000
sheettype = "clown"
/obj/item/stack/sheet/mineral/clown/New(var/loc, var/amount=null)
recipes = clown_recipes
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
..()
var/global/list/datum/stack_recipe/clown_recipes = list ( \
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/weapon/grenade/bananade/casing, 4, on_floor = 1), \
)
var/global/list/datum/stack_recipe/iron_recipes = list ( \
new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = 1, on_floor = 1), \
null, \
)
/obj/item/stack/sheet/mineral
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
/obj/item/stack/sheet/mineral/New()
..()
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
obj/item/stack/sheet/mineral/iron
name = "iron"
icon_state = "sheet-silver"
origin_tech = "materials=1"
sheettype = "iron"
color = "#333333"
perunit = 3750
obj/item/stack/sheet/mineral/iron/New()
..()
recipes = iron_recipes
/obj/item/stack/sheet/mineral/sandstone
name = "sandstone brick"
desc = "This appears to be a combination of both sand and stone."
singular_name = "sandstone brick"
icon_state = "sheet-sandstone"
throw_speed = 4
throw_range = 5
origin_tech = "materials=1"
sheettype = "sandstone"
/obj/item/stack/sheet/mineral/sandstone/New()
..()
recipes = sandstone_recipes
/obj/item/stack/sheet/mineral/diamond
name = "diamond"
icon_state = "sheet-diamond"
origin_tech = "materials=6"
perunit = 3750
sheettype = "diamond"
/****************************** Others ****************************/
/obj/item/stack/sheet/mineral/diamond/New()
..()
recipes = diamond_recipes
/obj/item/stack/sheet/mineral/uranium
name = "uranium"
icon_state = "sheet-uranium"
origin_tech = "materials=5"
perunit = 2000
sheettype = "uranium"
/obj/item/stack/sheet/mineral/uranium/New()
..()
recipes = uranium_recipes
/obj/item/stack/sheet/mineral/plasma
name = "solid plasma"
icon_state = "sheet-plasma"
origin_tech = "plasmatech=2;materials=2"
perunit = 2000
sheettype = "plasma"
/obj/item/stack/sheet/mineral/plasma/New()
..()
recipes = plasma_recipes
/obj/item/stack/sheet/mineral/plastic
name = "Plastic"
icon_state = "sheet-plastic"
origin_tech = "materials=3"
perunit = 2000
/obj/item/stack/sheet/mineral/plastic/New()
..()
recipes = plastic_recipes
/obj/item/stack/sheet/mineral/plastic/cyborg
name = "plastic sheets"
icon_state = "sheet-plastic"
perunit = 2000
/obj/item/stack/sheet/mineral/gold
name = "gold"
icon_state = "sheet-gold"
origin_tech = "materials=4"
perunit = 2000
sheettype = "gold"
/obj/item/stack/sheet/mineral/gold/New()
..()
recipes = gold_recipes
/obj/item/stack/sheet/mineral/silver
name = "silver"
icon_state = "sheet-silver"
origin_tech = "materials=3"
perunit = 2000
sheettype = "silver"
/obj/item/stack/sheet/mineral/silver/New()
..()
recipes = silver_recipes
/obj/item/stack/sheet/mineral/clown
name = "bananium"
icon_state = "sheet-clown"
origin_tech = "materials=4"
perunit = 2000
sheettype = "clown"
/obj/item/stack/sheet/mineral/clown/New(var/loc, var/amount=null)
..()
recipes = clown_recipes
/*
* Enriched Uranium
*/
/obj/item/stack/sheet/mineral/enruranium
name = "enriched uranium"
icon_state = "sheet-enruranium"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
origin_tech = "materials=5"
perunit = 1000
/*
* Adamantine
*/
/obj/item/stack/sheet/mineral/adamantine
name = "adamantine"
//Valuable resource, cargo can sell it.
/obj/item/stack/sheet/mineral/platinum
name = "platinum"
icon_state = "sheet-adamantine"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
origin_tech = "materials=4"
origin_tech = "materials=2"
sheettype = "platinum"
perunit = 2000
/*
* Mythril
*/
/obj/item/stack/sheet/mineral/mythril
name = "mythril"
//Extremely valuable to Research.
/obj/item/stack/sheet/mineral/mhydrogen
name = "metallic hydrogen"
icon_state = "sheet-mythril"
force = 5.0
throwforce = 5
w_class = 3.0
throw_speed = 3
throw_range = 3
origin_tech = "materials=4"
origin_tech = "materials=6;powerstorage=5;magnets=5"
sheettype = "mhydrogen"
perunit = 2000
//Fuel for MRSPACMAN generator.
/obj/item/stack/sheet/mineral/tritium
name = "tritium"
icon_state = "sheet-silver"
sheettype = "tritium"
origin_tech = "materials=5"
color = "#777777"
perunit = 2000
/obj/item/stack/sheet/mineral/osmium
name = "osmium"
icon_state = "sheet-silver"
sheettype = "osmium"
origin_tech = "materials=5"
color = "#9999FF"
perunit = 2000
@@ -70,7 +70,6 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
new/datum/stack_recipe("air alarm frame", /obj/item/alarm_frame, 2), \
new/datum/stack_recipe("fire alarm frame", /obj/item/firealarm_frame, 2), \
null, \
new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/metal
+2 -1
View File
@@ -99,7 +99,8 @@
/obj/machinery/bot,
/obj/machinery/door,
/obj/machinery/telecomms,
/obj/machinery/mecha_part_fabricator
/obj/machinery/mecha_part_fabricator,
/obj/vehicle
)
@@ -120,6 +120,8 @@ var/last_chew = 0
if(O.take_damage(3,0,1,"teeth marks"))
H:UpdateDamageIcon()
if(prob(10))
O.droplimb()
last_chew = world.time
+14 -3
View File
@@ -135,7 +135,8 @@ var/list/mechtoys = list(
var/points_per_process = 1
var/points_per_slip = 2
var/points_per_crate = 5
var/plasma_per_point = 2 // 2 plasma for 1 point
var/points_per_platinum = 5 // 5 points per sheet
var/points_per_plasma = 5
//control
var/ordernum
var/list/shoppinglist = list()
@@ -217,6 +218,7 @@ var/list/mechtoys = list(
if(!shuttle) return
var/plasma_count = 0
var/plat_count = 0
for(var/atom/movable/MA in shuttle)
if(MA.anchored) continue
@@ -238,14 +240,23 @@ var/list/mechtoys = list(
find_slip = 0
continue
// Sell plasma
// Sell phoron
if(istype(A, /obj/item/stack/sheet/mineral/plasma))
var/obj/item/stack/sheet/mineral/plasma/P = A
plasma_count += P.amount
// Sell platinum
if(istype(A, /obj/item/stack/sheet/mineral/platinum))
var/obj/item/stack/sheet/mineral/platinum/P = A
plat_count += P.amount
del(MA)
if(plasma_count)
points += Floor(plasma_count / plasma_per_point)
points += plasma_count * points_per_plasma
if(plat_count)
points += plat_count * points_per_platinum
//Buyin
proc/buy()
+13 -1
View File
@@ -2,4 +2,16 @@
name = "wall"
desc = "The patterns engraved on the wall seem to shift as you try to focus on them. You feel sick"
icon_state = "cult"
walltype = "cult"
walltype = "cult"
/turf/simulated/wall/rust
name = "rusted wall"
desc = "A rusted metal wall."
icon_state = "arust"
walltype = "arust"
/turf/simulated/wall/r_wall/rust
name = "rusted reinforced wall"
desc = "A huge chunk of rusted reinforced metal."
icon_state = "rrust"
walltype = "rrust"
+4
View File
@@ -22,6 +22,10 @@
var/icon_old = null
var/pathweight = 1
//Mining resource generation stuff.
var/has_resources
var/list/resources
/turf/New()
..()
for(var/atom/movable/AM as mob|obj in src)