Rename all non-snake_case types. (#27268)

* refactor: Rename all non-snake_case types (not procs or vars (yet)).

* completely dynamic update script

* might help to include the data

* update aa's scuffed python

* oh

* set script PR number

* run updatepaths again

* Add other table updates with JSON columns

* bump SQL version

* just fucking end my life

* move JSON data
This commit is contained in:
warriorstar-orion
2024-11-30 19:08:45 +00:00
committed by GitHub
parent db4dda0fdf
commit 0ffa8303a7
180 changed files with 2492 additions and 1781 deletions
+1 -1
View File
@@ -968,7 +968,7 @@ GLOBAL_VAR_INIT(gamma_ship_location, 1) // 0 = station , 1 = space
return TRUE
if(istype(tothing, /obj/structure/AIcore/deactivated))
if(istype(tothing, /obj/structure/ai_core/deactivated))
var/question = "Are you sure you want to place [frommob.name]([frommob.key]) in control of an empty AI core?"
+4 -4
View File
@@ -414,12 +414,12 @@
if("monkey") M.change_mob_type( /mob/living/carbon/human/monkey , null, null, delmob, 1)
if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob, 1)
if("cat") M.change_mob_type( /mob/living/simple_animal/pet/cat , null, null, delmob, 1)
if("runtime") M.change_mob_type( /mob/living/simple_animal/pet/cat/Runtime , null, null, delmob, 1)
if("runtime") M.change_mob_type( /mob/living/simple_animal/pet/cat/runtime , null, null, delmob, 1)
if("corgi") M.change_mob_type( /mob/living/simple_animal/pet/dog/corgi , null, null, delmob, 1)
if("crab") M.change_mob_type( /mob/living/simple_animal/crab , null, null, delmob, 1)
if("coffee") M.change_mob_type( /mob/living/simple_animal/crab/Coffee , null, null, delmob, 1)
if("coffee") M.change_mob_type( /mob/living/simple_animal/crab/coffee , null, null, delmob, 1)
if("parrot") M.change_mob_type( /mob/living/simple_animal/parrot , null, null, delmob, 1)
if("polyparrot") M.change_mob_type( /mob/living/simple_animal/parrot/Poly , null, null, delmob, 1)
if("polyparrot") M.change_mob_type( /mob/living/simple_animal/parrot/poly , null, null, delmob, 1)
if("constructarmoured") M.change_mob_type( /mob/living/simple_animal/hostile/construct/armoured , null, null, delmob, 1)
if("constructbuilder") M.change_mob_type( /mob/living/simple_animal/hostile/construct/builder , null, null, delmob, 1)
if("constructwraith") M.change_mob_type( /mob/living/simple_animal/hostile/construct/wraith , null, null, delmob, 1)
@@ -3342,7 +3342,7 @@
return 1
else if(href_list["viewruntime"])
var/datum/ErrorViewer/error_viewer = locateUID(href_list["viewruntime"])
var/datum/error_viewer/error_viewer = locateUID(href_list["viewruntime"])
if(!istype(error_viewer))
to_chat(usr, "<span class='warning'>That runtime viewer no longer exists.</span>")
return
+1 -1
View File
@@ -146,7 +146,7 @@
to_chat(usr, " at: [e.file]:[e.line]")
/proc/SDQL_parse(list/query_list)
var/datum/SDQL_parser/parser = new()
var/datum/sdql_parser/parser = new()
var/list/querys = list()
var/list/query_tree = list()
var/pos = 1
+31 -31
View File
@@ -42,7 +42,7 @@
//
//////////
/datum/SDQL_parser
/datum/sdql_parser
var/query_type
var/error = 0
@@ -55,15 +55,15 @@
var/list/binary_operators = list("+", "-", "/", "*", "&", "|", "^")
var/list/comparitors = list("=", "==", "!=", "<>", "<", "<=", ">", ">=")
/datum/SDQL_parser/New(query_list)
/datum/sdql_parser/New(query_list)
query = query_list
/datum/SDQL_parser/proc/parse_error(error_message)
/datum/sdql_parser/proc/parse_error(error_message)
error = 1
to_chat(usr, "<span class='danger'>SDQL2 Parsing Error: [error_message]</span>")
return length(query) + 1
/datum/SDQL_parser/proc/parse()
/datum/sdql_parser/proc/parse()
tree = list()
query(1, tree)
@@ -72,25 +72,25 @@
else
return tree
/datum/SDQL_parser/proc/token(i)
/datum/sdql_parser/proc/token(i)
if(i <= length(query))
return query[i]
else
return null
/datum/SDQL_parser/proc/tokens(i, num)
/datum/sdql_parser/proc/tokens(i, num)
if(i + num <= length(query))
return query.Copy(i, i + num)
else
return null
/datum/SDQL_parser/proc/tokenl(i)
/datum/sdql_parser/proc/tokenl(i)
return lowertext(token(i))
//query: select_query | delete_query | update_query
/datum/SDQL_parser/proc/query(i, list/node)
/datum/sdql_parser/proc/query(i, list/node)
query_type = tokenl(i)
switch(query_type)
@@ -113,7 +113,7 @@
// select_query: 'SELECT' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]
/datum/SDQL_parser/proc/select_query(i, list/node)
/datum/sdql_parser/proc/select_query(i, list/node)
var/list/select = list()
i = select_list(i + 1, select)
@@ -140,7 +140,7 @@
//delete_query: 'DELETE' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]
/datum/SDQL_parser/proc/delete_query(i, list/node)
/datum/sdql_parser/proc/delete_query(i, list/node)
var/list/select = list()
i = select_list(i + 1, select)
@@ -167,7 +167,7 @@
//update_query: 'UPDATE' select_list [('FROM' | 'IN') from_list] 'SET' assignments ['WHERE' bool_expression]
/datum/SDQL_parser/proc/update_query(i, list/node)
/datum/sdql_parser/proc/update_query(i, list/node)
var/list/select = list()
i = select_list(i + 1, select)
@@ -203,7 +203,7 @@
//call_query: 'CALL' call_function ['ON' select_list [('FROM' | 'IN') from_list] ['WHERE' bool_expression]]
/datum/SDQL_parser/proc/call_query(i, list/node)
/datum/sdql_parser/proc/call_query(i, list/node)
var/list/func = list()
i = variable(i + 1, func)
@@ -239,7 +239,7 @@
//select_list: select_item [',' select_list]
/datum/SDQL_parser/proc/select_list(i, list/node)
/datum/sdql_parser/proc/select_list(i, list/node)
i = select_item(i, node)
if(token(i) == ",")
@@ -249,7 +249,7 @@
//from_list: from_item [',' from_list]
/datum/SDQL_parser/proc/from_list(i, list/node)
/datum/sdql_parser/proc/from_list(i, list/node)
i = from_item(i, node)
if(token(i) == ",")
@@ -259,7 +259,7 @@
//assignments: assignment, [',' assignments]
/datum/SDQL_parser/proc/assignments(i, list/node)
/datum/sdql_parser/proc/assignments(i, list/node)
i = assignment(i, node)
if(token(i) == ",")
@@ -269,7 +269,7 @@
//select_item: '*' | select_function | object_type
/datum/SDQL_parser/proc/select_item(i, list/node)
/datum/sdql_parser/proc/select_item(i, list/node)
if(token(i) == "*")
node += "*"
i++
@@ -284,7 +284,7 @@
//from_item: 'world' | object_type
/datum/SDQL_parser/proc/from_item(i, list/node)
/datum/sdql_parser/proc/from_item(i, list/node)
if(token(i) == "world")
node += "world"
@@ -297,7 +297,7 @@
//bool_expression: expression [bool_operator bool_expression]
/datum/SDQL_parser/proc/bool_expression(i, list/node)
/datum/sdql_parser/proc/bool_expression(i, list/node)
var/list/bool = list()
i = expression(i, bool)
@@ -311,7 +311,7 @@
//assignment: <variable name> '=' expression
/datum/SDQL_parser/proc/assignment(i, list/node, list/assignment_list = list())
/datum/sdql_parser/proc/assignment(i, list/node, list/assignment_list = list())
assignment_list += token(i)
if(token(i + 1) == ".")
@@ -330,7 +330,7 @@
//variable: <variable name> | <variable name> '.' variable
/datum/SDQL_parser/proc/variable(i, list/node)
/datum/sdql_parser/proc/variable(i, list/node)
var/list/L = list(token(i))
node[++node.len] = L
@@ -368,7 +368,7 @@
//object_type: <type path> | string
/datum/SDQL_parser/proc/object_type(i, list/node)
/datum/sdql_parser/proc/object_type(i, list/node)
if(copytext(token(i), 1, 2) == "/")
node += token(i)
@@ -380,7 +380,7 @@
//comparitor: '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>='
/datum/SDQL_parser/proc/comparitor(i, list/node)
/datum/sdql_parser/proc/comparitor(i, list/node)
if(token(i) in list("=", "==", "!=", "<>", "<", "<=", ">", ">="))
node += token(i)
@@ -392,7 +392,7 @@
//bool_operator: 'AND' | '&&' | 'OR' | '||'
/datum/SDQL_parser/proc/bool_operator(i, list/node)
/datum/sdql_parser/proc/bool_operator(i, list/node)
if(tokenl(i) in list("and", "or", "&&", "||"))
node += token(i)
@@ -404,7 +404,7 @@
//string: ''' <some text> ''' | '"' <some text > '"'
/datum/SDQL_parser/proc/string(i, list/node)
/datum/sdql_parser/proc/string(i, list/node)
if(copytext(token(i), 1, 2) in list("'", "\""))
node += token(i)
@@ -415,7 +415,7 @@
return i + 1
//array: '{' expression, expression, ... '}'
/datum/SDQL_parser/proc/array(i, list/node)
/datum/sdql_parser/proc/array(i, list/node)
// Arrays get turned into this: list("{", list(exp_1a = exp_1b, ...), ...), "{" is to mark the next node as an array.
if(copytext(token(i), 1, 2) != "{")
parse_error("Expected an array but found '[token(i)]'")
@@ -443,7 +443,7 @@
return i + 1
//call_function: <function name> ['(' [arguments] ')']
/datum/SDQL_parser/proc/call_function(i, list/node, list/arguments)
/datum/sdql_parser/proc/call_function(i, list/node, list/arguments)
var/list/cur_argument = list()
if(length(tokenl(i)))
var/procname = ""
@@ -470,7 +470,7 @@
//select_function: count_function
/datum/SDQL_parser/proc/select_function(i, list/node)
/datum/sdql_parser/proc/select_function(i, list/node)
parse_error("Sorry, function calls aren't available yet")
@@ -478,7 +478,7 @@
//expression: ( unary_expression | '(' expression ')' | value ) [binary_operator expression]
/datum/SDQL_parser/proc/expression(i, list/node)
/datum/sdql_parser/proc/expression(i, list/node)
if(token(i) in unary_operators)
i = unary_expression(i, node)
@@ -516,7 +516,7 @@
//unary_expression: unary_operator ( unary_expression | value | '(' expression ')' )
/datum/SDQL_parser/proc/unary_expression(i, list/node)
/datum/sdql_parser/proc/unary_expression(i, list/node)
if(token(i) in unary_operators)
var/list/unary_exp = list()
@@ -553,7 +553,7 @@
//binary_operator: comparitor | '+' | '-' | '/' | '*' | '&' | '|' | '^'
/datum/SDQL_parser/proc/binary_operator(i, list/node)
/datum/sdql_parser/proc/binary_operator(i, list/node)
if(token(i) in (binary_operators + comparitors))
node += token(i)
@@ -565,7 +565,7 @@
//value: variable | string | number | 'null'
/datum/SDQL_parser/proc/value(i, list/node)
/datum/sdql_parser/proc/value(i, list/node)
if(token(i) == "null")
node += "null"
@@ -1,4 +1,4 @@
/datum/action/changeling/absorbDNA
/datum/action/changeling/absorb_dna
name = "Absorb DNA"
desc = "Absorb the DNA of our victim. Requires us to strangle them."
button_overlay_icon_state = "absorb_dna"
@@ -6,7 +6,7 @@
power_type = CHANGELING_INNATE_POWER
req_human = TRUE
/datum/action/changeling/absorbDNA/can_sting(mob/living/carbon/user)
/datum/action/changeling/absorb_dna/can_sting(mob/living/carbon/user)
if(!..())
return FALSE
@@ -24,7 +24,7 @@
return cling.can_absorb_dna(G.affecting)
/datum/action/changeling/absorbDNA/sting_action(mob/user)
/datum/action/changeling/absorb_dna/sting_action(mob/user)
var/obj/item/grab/G = user.get_active_hand()
var/mob/living/carbon/human/target = G.affecting
cling.is_absorbing = TRUE
@@ -5,7 +5,7 @@
category = /datum/changeling_power_category/stings
var/sting_icon = null
/// A middle click override used to intercept changeling stings performed on a target.
var/datum/middleClickOverride/callback_invoker/click_override
var/datum/middle_click_override/callback_invoker/click_override
/datum/action/changeling/sting/New(Target)
. = ..()
+2 -2
View File
@@ -239,10 +239,10 @@ GLOBAL_DATUM_INIT(global_prizes, /datum/prizes, new())
typepath = /obj/item/toy/prizeball/figure
cost = 75
/datum/prize_item/AI
/datum/prize_item/ai
name = "Toy AI Unit"
desc = "Law 1: Maximize fun for crew."
typepath = /obj/item/toy/AI
typepath = /obj/item/toy/ai
cost = 75
/datum/prize_item/capgun
@@ -424,7 +424,7 @@
new /obj/item/hemostat(src)
new /obj/item/scalpel(src)
new /obj/item/cautery(src)
new /obj/item/FixOVein(src)
new /obj/item/fix_o_vein(src)
new /obj/item/surgicaldrill(src)
new /obj/item/bonegel(src)
new /obj/item/bonesetter(src)
+2 -2
View File
@@ -11,7 +11,7 @@
to_chat(user, "<span class='notice'>***********************************************************</span>")
/datum/buildmode_mode/mapgen/change_settings(mob/user)
var/list/gen_paths = subtypesof(/datum/mapGenerator)
var/list/gen_paths = subtypesof(/datum/map_generator)
var/type = input(user,"Select Generator Type","Type") as null|anything in gen_paths
if(!type) return
@@ -32,7 +32,7 @@
if(left_click) //rectangular
if(cornerA && cornerB)
var/datum/mapGenerator/G = new generator_path
var/datum/map_generator/G = new generator_path
G.defineRegion(cornerA, cornerB, 1)
highlight_region(G.map)
var/confirm = alert("Are you sure you want run the map generator?", "Run generator", "Yes", "No")
@@ -157,7 +157,7 @@
display_name = "Bandana, skull"
path = /obj/item/clothing/mask/bandana/skull
/datum/gear/pAI
/datum/gear/pai
display_name = "Personal Artificial Intelligence"
path = /obj/item/paicard
cost = 2
+1 -1
View File
@@ -381,7 +381,7 @@
name = "agreeable glasses"
desc = "H.C Limited edition."
var/punused = FALSE
actions_types = list(/datum/action/item_action/YEEEAAAAAHHHHHHHHHHHHH)
actions_types = list(/datum/action/item_action/yeeeaaaaahhhhhhhhhhhhh)
/obj/item/clothing/glasses/sunglasses/yeah/attack_self(mob/user)
pun(user)
+1 -1
View File
@@ -74,7 +74,7 @@
icon_state = "beret_hos_black"
armor = list(MELEE = 35, BULLET = 20, LASER = 20, ENERGY = 5, BOMB = 15, RAD = 0, FIRE = 50, ACID = 75)
strip_delay = 80
dog_fashion = /datum/dog_fashion/head/HoS
dog_fashion = /datum/dog_fashion/head/hos
/obj/item/clothing/head/beret/sec
name = "security beret"
+2 -2
View File
@@ -127,12 +127,12 @@
item_state = "hardhat0_yellow"
dog_fashion = /datum/dog_fashion/head/hardhat
/obj/item/clothing/head/collectable/HoS
/obj/item/clothing/head/collectable/hos
name = "collectable HoS hat"
desc = "Now you can beat prisoners, set silly sentences and arrest for no reason too!"
icon_state = "hos_cap"
/obj/item/clothing/head/collectable/HoP
/obj/item/clothing/head/collectable/hop
name = "collectable HoP hat"
desc = "It's your turn to demand excessive paperwork, signatures, stamps, and hire more clowns! Papers, please!"
icon_state = "hopcap"
+2 -2
View File
@@ -117,13 +117,13 @@
)
//Security
/obj/item/clothing/head/HoS
/obj/item/clothing/head/hos
name = "head of security's cap"
desc = "The robust standard-issue cap of the Head of Security. For showing the officers who's in charge."
icon_state = "hos_cap"
armor = list(MELEE = 35, BULLET = 20, LASER = 20, ENERGY = 5, BOMB = 15, RAD = 0, FIRE = 50, ACID = 75)
strip_delay = 80
dog_fashion = /datum/dog_fashion/head/HoS
dog_fashion = /datum/dog_fashion/head/hos
/obj/item/clothing/head/warden
name = "warden's police hat"
+3 -3
View File
@@ -217,19 +217,19 @@
name = "staff hazard vest"
desc = "A high-visibilty vest used in work zones. Designed to easily identify station staff from visitors."
icon_state = "hazard_staff"
allowed = list(/obj/item/flashlight, /obj/item/t_scanner, /obj/item/tank/internals/emergency_oxygen, /obj/item/paper, /obj/item/clipboard, /obj/item/analyzer, /obj/item/screwdriver, /obj/item/radio, /obj/item/wrench, /obj/item/weldingtool, /obj/item/crowbar, /obj/item/wirecutters, /obj/item/rcd, /obj/item/rpd, /obj/item/rcs, /obj/item/destTagger)
allowed = list(/obj/item/flashlight, /obj/item/t_scanner, /obj/item/tank/internals/emergency_oxygen, /obj/item/paper, /obj/item/clipboard, /obj/item/analyzer, /obj/item/screwdriver, /obj/item/radio, /obj/item/wrench, /obj/item/weldingtool, /obj/item/crowbar, /obj/item/wirecutters, /obj/item/rcd, /obj/item/rpd, /obj/item/rcs, /obj/item/dest_tagger)
/obj/item/clothing/suit/storage/hazardvest/qm
name = "warehouse supervisor hazard vest"
desc = "A high-visibilty vest used in work zones. Designed to easily identify the supply supervisor."
icon_state = "hazard_qm"
allowed = list(/obj/item/flashlight, /obj/item/t_scanner, /obj/item/tank/internals/emergency_oxygen, /obj/item/paper, /obj/item/clipboard, /obj/item/analyzer, /obj/item/screwdriver, /obj/item/radio, /obj/item/wrench, /obj/item/weldingtool, /obj/item/crowbar, /obj/item/wirecutters, /obj/item/rcs, /obj/item/destTagger, /obj/item/melee/baton, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic, /obj/item/melee/knuckleduster)
allowed = list(/obj/item/flashlight, /obj/item/t_scanner, /obj/item/tank/internals/emergency_oxygen, /obj/item/paper, /obj/item/clipboard, /obj/item/analyzer, /obj/item/screwdriver, /obj/item/radio, /obj/item/wrench, /obj/item/weldingtool, /obj/item/crowbar, /obj/item/wirecutters, /obj/item/rcs, /obj/item/dest_tagger, /obj/item/melee/baton, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic, /obj/item/melee/knuckleduster)
/obj/item/clothing/suit/storage/hazardvest/ce
name = "foreman hazard vest"
desc = "A high-visibility vest used in work zones. Designed to easily identify the engineering supervisor."
icon_state = "hazard_ce"
allowed = list(/obj/item/flashlight, /obj/item/t_scanner, /obj/item/tank/internals/emergency_oxygen, /obj/item/paper, /obj/item/clipboard, /obj/item/analyzer, /obj/item/screwdriver, /obj/item/radio, /obj/item/wrench, /obj/item/weldingtool, /obj/item/crowbar, /obj/item/wirecutters, /obj/item/rcd, /obj/item/rpd, /obj/item/destTagger, /obj/item/melee/baton, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic)
allowed = list(/obj/item/flashlight, /obj/item/t_scanner, /obj/item/tank/internals/emergency_oxygen, /obj/item/paper, /obj/item/clipboard, /obj/item/analyzer, /obj/item/screwdriver, /obj/item/radio, /obj/item/wrench, /obj/item/weldingtool, /obj/item/crowbar, /obj/item/wirecutters, /obj/item/rcd, /obj/item/rpd, /obj/item/dest_tagger, /obj/item/melee/baton, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic)
//Internal Affairs
/obj/item/clothing/suit/storage/iaa
+2 -2
View File
@@ -196,8 +196,8 @@
/obj/item/weaponcrafting/ishotgunconstruction3/attackby(obj/item/I, mob/user as mob, params)
..()
if(istype(I, /obj/item/stack/packageWrap))
var/obj/item/stack/packageWrap/C = I
if(istype(I, /obj/item/stack/package_wrap))
var/obj/item/stack/package_wrap/C = I
if(C.use(5))
var/obj/item/gun/projectile/revolver/doublebarrel/improvised/W = new /obj/item/gun/projectile/revolver/doublebarrel/improvised
user.unEquip(src)
+3 -3
View File
@@ -25,7 +25,7 @@
/// Will this recipe send an admin message when it's completed.
var/alert_admins_on_craft = FALSE
/datum/crafting_recipe/IED
/datum/crafting_recipe/ied
name = "IED"
result = list(/obj/item/grenade/iedcasing)
reqs = list(/datum/reagent/fuel = 50,
@@ -82,7 +82,7 @@
result = list(/obj/item/pneumatic_cannon/ghetto)
tools = list(TOOL_WELDER, TOOL_WRENCH)
reqs = list(/obj/item/stack/sheet/metal = 4,
/obj/item/stack/packageWrap = 8,
/obj/item/stack/package_wrap = 8,
/obj/item/pipe = 2)
time = 300
category = CAT_WEAPONRY
@@ -475,7 +475,7 @@
reqs = list(/obj/item/weaponcrafting/receiver = 1,
/obj/item/pipe = 1,
/obj/item/weaponcrafting/stock = 1,
/obj/item/stack/packageWrap = 5,)
/obj/item/stack/package_wrap = 5,)
tools = list(TOOL_SCREWDRIVER)
time = 100
category = CAT_WEAPONRY
+1 -1
View File
@@ -1693,7 +1693,7 @@
slot_flags = ITEM_SLOT_ACCESSORY
/// Sagrotter: Xann Zxiax
/obj/item/clothing/accessory/medal/fluff/XannZxiax
/obj/item/clothing/accessory/medal/fluff/xann_zxiax
name = "Zxiax Garnet"
desc = "Green Garnet on fancy blue cord, when you look at the Garnet, you feel strangely appeased."
icon = 'icons/obj/custom_items.dmi'
@@ -142,7 +142,7 @@
/obj/machinery/computer/account_database/proc/print_new_account_info(datum/money_account/account)
//create a sealed package containing the account details
var/obj/item/smallDelivery/package = new /obj/item/smallDelivery(loc)
var/obj/item/small_delivery/package = new /obj/item/small_delivery(loc)
var/obj/item/paper/printout = new /obj/item/paper(package)
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, TRUE)
@@ -204,7 +204,7 @@
R.stamped += /obj/item/stamp
R.overlays += stampoverlay
R.stamps += "<hr><i>This paper has been stamped by the EFTPOS device.</i>"
var/obj/item/smallDelivery/D = new(get_turf(loc))
var/obj/item/small_delivery/D = new(get_turf(loc))
if(istype(loc, /mob/living/carbon/human))
var/mob/living/carbon/human/H = loc
if(H.back)
+23 -23
View File
@@ -8,10 +8,10 @@
// right here:
#ifdef DEBUG
GLOBAL_DATUM_INIT(error_cache, /datum/ErrorViewer/ErrorCache, new())
GLOBAL_DATUM_INIT(error_cache, /datum/error_viewer/error_cache, new())
#else
// If debugging is disabled, there's nothing useful to log, so don't bother.
GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
GLOBAL_DATUM(error_cache, /datum/error_viewer/error_cache)
#endif
// - ErrorSource datums exist for each line (of code) that generates an error,
@@ -21,10 +21,10 @@ GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
// relevant info about that error.
// Common vars and procs are kept at the ErrorViewer level
/datum/ErrorViewer/
/datum/error_viewer/
var/name = ""
/datum/ErrorViewer/proc/browseTo(user, html)
/datum/error_viewer/proc/browseTo(user, html)
if(user)
var/datum/browser/popup = new(user, "error_viewer", "Runtime Viewer", 700, 500)
popup.add_head_content({"<style>
@@ -47,7 +47,7 @@ GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
popup.set_content(html)
popup.open(0)
/datum/ErrorViewer/proc/buildHeader(datum/ErrorViewer/back_to, linear, refreshable)
/datum/error_viewer/proc/buildHeader(datum/error_viewer/back_to, linear, refreshable)
// Common starter HTML for showTo
var/html = ""
@@ -59,11 +59,11 @@ GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
html += "<br><br>"
return html
/datum/ErrorViewer/proc/showTo(user, datum/ErrorViewer/back_to, linear)
/datum/error_viewer/proc/showTo(user, datum/error_viewer/back_to, linear)
// Specific to each child type
return
/datum/ErrorViewer/proc/makeLink(linktext, datum/ErrorViewer/back_to, linear)
/datum/error_viewer/proc/makeLink(linktext, datum/error_viewer/back_to, linear)
var/back_to_param = ""
if(!linktext)
linktext = name
@@ -73,17 +73,17 @@ GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
back_to_param += ";viewruntime_linear=1"
return "<A href='byond://?_src_=holder;viewruntime=[src.UID()][back_to_param]'>[html_encode(linktext)]</A>"
/datum/ErrorViewer/ErrorCache
/datum/error_viewer/error_cache
var/list/errors = list()
var/list/error_sources = list()
var/list/errors_silenced = list()
/datum/ErrorViewer/ErrorCache/showTo(user, datum/ErrorViewer/back_to, linear)
/datum/error_viewer/error_cache/showTo(user, datum/error_viewer/back_to, linear)
var/html = buildHeader(null, linear, refreshable=1)
html += "[GLOB.total_runtimes] runtimes, [GLOB.total_runtimes_skipped] skipped<br><br>"
if(!linear)
html += "organized | [makeLink("linear", null, 1)]<hr>"
var/datum/ErrorViewer/ErrorSource/error_source
var/datum/error_viewer/error_source/error_source
for(var/erroruid in error_sources)
error_source = error_sources[erroruid]
var/e_count_text = length(error_source.errors)
@@ -92,21 +92,21 @@ GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
html += "<p class='runtime_list'>([e_count_text]) [error_source.makeLink(null, src)]<br></p>"
else
html += "[makeLink("organized", null)] | linear<hr>"
for(var/datum/ErrorViewer/ErrorEntry/error_entry in errors)
for(var/datum/error_viewer/error_entry/error_entry in errors)
html += "<p class='runtime_list'>[error_entry.makeLink(null, src, 1)]<br></p>"
browseTo(user, html)
/datum/ErrorViewer/ErrorCache/proc/logError(exception/e, list/desclines, skipCount, datum/e_src)
/datum/error_viewer/error_cache/proc/logError(exception/e, list/desclines, skipCount, datum/e_src)
if(!istype(e))
return // Abnormal exception, don't even bother
var/erroruid = "[e.file][e.line]"
var/datum/ErrorViewer/ErrorSource/error_source = error_sources[erroruid]
var/datum/error_viewer/error_source/error_source = error_sources[erroruid]
if(!error_source)
error_source = new(e)
error_sources[erroruid] = error_source
var/datum/ErrorViewer/ErrorEntry/error_entry = new(e, desclines, skipCount, e_src)
var/datum/error_viewer/error_entry/error_entry = new(e, desclines, skipCount, e_src)
error_entry.error_source = error_source
errors += error_entry
error_source.errors += error_entry
@@ -120,26 +120,26 @@ GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
log_debug("Runtime in [e.file]:[e.line]: [html_encode(e.name)] [error_entry.makeLink(viewtext)]")
error_source.next_message_at = world.time + ERROR_MSG_DELAY
/datum/ErrorViewer/ErrorSource
/datum/error_viewer/error_source
var/list/errors = list()
var/next_message_at = 0
/datum/ErrorViewer/ErrorSource/New(exception/e)
/datum/error_viewer/error_source/New(exception/e)
if(!istype(e))
name = "\[[time_stamp()]] Uncaught exceptions"
return
name = "\[[time_stamp()]] Runtime in [e.file]:[e.line]: [e]"
/datum/ErrorViewer/ErrorSource/showTo(user, datum/ErrorViewer/back_to, linear)
/datum/error_viewer/error_source/showTo(user, datum/error_viewer/back_to, linear)
if(!istype(back_to))
back_to = GLOB.error_cache
var/html = buildHeader(back_to, refreshable=1)
for(var/datum/ErrorViewer/ErrorEntry/error_entry in errors)
for(var/datum/error_viewer/error_entry/error_entry in errors)
html += "<p class='runtime_list'>[error_entry.makeLink(null, src)]<br></p>"
browseTo(user, html)
/datum/ErrorViewer/ErrorEntry
var/datum/ErrorViewer/ErrorSource/error_source
/datum/error_viewer/error_entry
var/datum/error_viewer/error_source/error_source
var/exception/exc
var/desc = ""
var/srcRef
@@ -151,7 +151,7 @@ GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
var/turf/usrLoc
var/isSkipCount
/datum/ErrorViewer/ErrorEntry/New(exception/e, list/desclines, skipCount, datum/e_src)
/datum/error_viewer/error_entry/New(exception/e, list/desclines, skipCount, datum/e_src)
if(!istype(e))
name = "\[[time_stamp()]] Uncaught exception: [e]"
return
@@ -175,7 +175,7 @@ GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
usrUID = usr.UID()
usrLoc = get_turf(usr)
/datum/ErrorViewer/ErrorEntry/showTo(user, datum/ErrorViewer/back_to, linear)
/datum/error_viewer/error_entry/showTo(user, datum/error_viewer/back_to, linear)
if(!istype(back_to))
back_to = error_source
@@ -205,7 +205,7 @@ GLOBAL_DATUM(error_cache, /datum/ErrorViewer/ErrorCache)
browseTo(user, html)
/datum/ErrorViewer/ErrorEntry/makeLink(linktext, datum/ErrorViewer/back_to, linear)
/datum/error_viewer/error_entry/makeLink(linktext, datum/error_viewer/back_to, linear)
if(isSkipCount)
return html_encode(name)
+1 -1
View File
@@ -536,7 +536,7 @@
M.visible_message("<span class='warning'>[M.name] leaps up onto [src] and attempts to fish through the opening!</span>", "<span class='notice'>You jump up onto [src] and begin fishing through the opening!</span>")
if(water_level && prob(45)) //If there is water, there is a chance the cat will slip, Syndicat will spark like E-N when this happens
M.visible_message("<span class='notice'>[M.name] slipped and got soaked!</span>", "<span class='notice'>You slipped and got soaked!</span>")
if(istype(M, /mob/living/simple_animal/pet/cat/Syndi))
if(istype(M, /mob/living/simple_animal/pet/cat/syndi))
do_sparks(3, 1, src)
else //No water or didn't slip, get that fish!
M.visible_message("<span class='warning'>[M.name] catches and devours a live fish!</span>", "<span class='notice'>You catch and devour a live fish, yum!</span>")
@@ -19,7 +19,7 @@ There is no excuse to do this wrong now that there is an example for you. --Fals
*/
/datum/bottler_recipe/Paradise_Punch
/datum/bottler_recipe/paradise_punch
name = "Paradise Punch"
description = "Tastes just how you'd think Paradise would if you could bottle it."
ingredients = list(/obj/item/food/grown/grapes,
@@ -27,7 +27,7 @@ There is no excuse to do this wrong now that there is an example for you. --Fals
/obj/item/food/grown/cherries)
result = "paradise_punch"
/datum/bottler_recipe/Applepocalypse
/datum/bottler_recipe/applepocalypse
name = "Apple-pocalypse"
description = "If doomsday came in fruit form, it'd probably be apples."
ingredients = list(/obj/item/food/grown/apple,
@@ -35,7 +35,7 @@ There is no excuse to do this wrong now that there is an example for you. --Fals
/obj/item/food/grown/apple)
result = "apple-pocalypse"
/datum/bottler_recipe/Berry_Banned
/datum/bottler_recipe/berry_banned
name = "Berry Banned"
description = "Reason for ban: Excessive Flavor."
ingredients = list(/obj/item/food/grown/berries,
@@ -43,7 +43,7 @@ There is no excuse to do this wrong now that there is an example for you. --Fals
/obj/item/food/grown/berries)
result = "berry_banned"
/datum/bottler_recipe/Berry_Banned2
/datum/bottler_recipe/berry_banned2
name = "Berry Banned"
description = "Reason for ban: Excessive Flavor."
ingredients = list(/obj/item/food/grown/berries/poison,
@@ -51,7 +51,7 @@ There is no excuse to do this wrong now that there is an example for you. --Fals
/obj/item/food/grown/berries/poison)
result = "berry_banned2"
/datum/bottler_recipe/Blackeye_Brew
/datum/bottler_recipe/blackeye_brew
name = "Blackeye Brew"
description = "Creamy, smooth flavor, just like the bald heads of the masses. Supposedly aged for 30 years."
ingredients = list(/obj/item/reagent_containers/drinks/cans/cola,
@@ -59,7 +59,7 @@ There is no excuse to do this wrong now that there is an example for you. --Fals
/obj/item/food/frozen/icecream)
result = "blackeye_brew"
/datum/bottler_recipe/Grape_Granade
/datum/bottler_recipe/grape_granade
name = "Grape Granade"
description = "Exploding with grape flavor and a favorite among ERT members system-wide."
ingredients = list(/obj/item/reagent_containers/drinks/cans/grape_juice,
@@ -67,7 +67,7 @@ There is no excuse to do this wrong now that there is an example for you. --Fals
/obj/item/flash)
result = "grape_granade"
/datum/bottler_recipe/Meteor_Malt
/datum/bottler_recipe/meteor_malt
name = "Meteor Malt"
description = "Soft drinks have been detected on collision course with your tastebuds."
ingredients = list(/obj/item/stack/ore,
@@ -139,19 +139,19 @@
tastes = list("shrimp" = 1, "batter" = 1)
goal_difficulty = FOOD_GOAL_NORMAL
/obj/item/food/sliceable/Ebi_maki
/obj/item/food/sliceable/ebi_maki
name = "ebi maki roll"
desc = "A large unsliced roll of Ebi Sushi."
icon = 'icons/obj/food/seafood.dmi'
icon_state = "Ebi_maki"
slice_path = /obj/item/food/sushi_Ebi
slice_path = /obj/item/food/sushi_ebi
slices_num = 4
bitesize = 3
list_reagents = list("nutriment" = 8)
tastes = list("shrimp" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_DUPLICATE
/obj/item/food/sushi_Ebi
/obj/item/food/sushi_ebi
name = "ebi sushi"
desc = "A simple sushi consisting of cooked shrimp and rice."
icon = 'icons/obj/food/seafood.dmi'
@@ -161,19 +161,19 @@
tastes = list("shrimp" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_EASY
/obj/item/food/sliceable/Ikura_maki
/obj/item/food/sliceable/ikura_maki
name = "ikura maki roll"
desc = "A large unsliced roll of Ikura Sushi."
icon = 'icons/obj/food/seafood.dmi'
icon_state = "Ikura_maki"
slice_path = /obj/item/food/sushi_Ikura
slice_path = /obj/item/food/sushi_ikura
slices_num = 4
bitesize = 3
list_reagents = list("nutriment" = 8, "protein" = 4)
tastes = list("salmon roe" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_DUPLICATE
/obj/item/food/sushi_Ikura
/obj/item/food/sushi_ikura
name = "ikura sushi"
desc = "A simple sushi consisting of salmon roe."
icon = 'icons/obj/food/seafood.dmi'
@@ -183,19 +183,19 @@
tastes = list("salmon roe" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_EASY
/obj/item/food/sliceable/Sake_maki
/obj/item/food/sliceable/sake_maki
name = "sake maki roll"
desc = "A large unsliced roll of Sake Sushi."
icon = 'icons/obj/food/seafood.dmi'
icon_state = "Sake_maki"
slice_path = /obj/item/food/sushi_Sake
slice_path = /obj/item/food/sushi_sake
slices_num = 4
bitesize = 3
list_reagents = list("nutriment" = 8)
tastes = list("raw salmon" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_DUPLICATE
/obj/item/food/sushi_Sake
/obj/item/food/sushi_sake
name = "sake sushi"
desc = "A simple sushi consisting of raw salmon and rice."
icon = 'icons/obj/food/seafood.dmi'
@@ -205,19 +205,19 @@
tastes = list("raw salmon" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_EASY
/obj/item/food/sliceable/SmokedSalmon_maki
/obj/item/food/sliceable/smoked_salmon_maki
name = "smoked salmon maki roll"
desc = "A large unsliced roll of Smoked Salmon Sushi."
icon = 'icons/obj/food/seafood.dmi'
icon_state = "SmokedSalmon_maki"
slice_path = /obj/item/food/sushi_SmokedSalmon
slice_path = /obj/item/food/sushi_smoked_salmon
slices_num = 4
bitesize = 3
list_reagents = list("nutriment" = 8)
tastes = list("smoked salmon" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_DUPLICATE
/obj/item/food/sushi_SmokedSalmon
/obj/item/food/sushi_smoked_salmon
name = "smoked salmon sushi"
desc = "A simple sushi consisting of cooked salmon and rice."
icon = 'icons/obj/food/seafood.dmi'
@@ -227,19 +227,19 @@
tastes = list("smoked salmon" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_EASY
/obj/item/food/sliceable/Tamago_maki
/obj/item/food/sliceable/tamago_maki
name = "tamago maki roll"
desc = "A large unsliced roll of Tamago Sushi."
icon = 'icons/obj/food/seafood.dmi'
icon_state = "Tamago_maki"
slice_path = /obj/item/food/sushi_Tamago
slice_path = /obj/item/food/sushi_tamago
slices_num = 4
bitesize = 3
list_reagents = list("nutriment" = 8)
tastes = list("egg" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_DUPLICATE
/obj/item/food/sushi_Tamago
/obj/item/food/sushi_tamago
name = "tamago sushi"
desc = "A simple sushi consisting of egg and rice."
icon = 'icons/obj/food/seafood.dmi'
@@ -249,19 +249,19 @@
tastes = list("egg" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_EASY
/obj/item/food/sliceable/Inari_maki
/obj/item/food/sliceable/inari_maki
name = "inari maki roll"
desc = "A large unsliced roll of Inari Sushi."
icon = 'icons/obj/food/seafood.dmi'
icon_state = "Inari_maki"
slice_path = /obj/item/food/sushi_Inari
slice_path = /obj/item/food/sushi_inari
slices_num = 4
bitesize = 3
list_reagents = list("nutriment" = 8)
tastes = list("fried tofu" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_DUPLICATE
/obj/item/food/sushi_Inari
/obj/item/food/sushi_inari
name = "inari sushi"
desc = "A piece of fried tofu stuffed with rice."
icon = 'icons/obj/food/seafood.dmi'
@@ -271,19 +271,19 @@
tastes = list("fried tofu" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_EASY
/obj/item/food/sliceable/Masago_maki
/obj/item/food/sliceable/masago_maki
name = "masago maki roll"
desc = "A large unsliced roll of Masago Sushi."
icon = 'icons/obj/food/seafood.dmi'
icon_state = "Masago_maki"
slice_path = /obj/item/food/sushi_Masago
slice_path = /obj/item/food/sushi_masago
slices_num = 4
bitesize = 3
list_reagents = list("nutriment" = 8, "protein" = 4)
tastes = list("goldfish roe" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_DUPLICATE
/obj/item/food/sushi_Masago
/obj/item/food/sushi_masago
name = "masago sushi"
desc = "A simple sushi consisting of goldfish roe."
icon = 'icons/obj/food/seafood.dmi'
@@ -293,19 +293,19 @@
tastes = list("goldfish roe" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_EASY
/obj/item/food/sliceable/Tobiko_maki
/obj/item/food/sliceable/tobiko_maki
name = "tobiko maki roll"
desc = "A large unsliced roll of Tobkio Sushi."
icon = 'icons/obj/food/seafood.dmi'
icon_state = "Tobiko_maki"
slice_path = /obj/item/food/sushi_Tobiko
slice_path = /obj/item/food/sushi_tobiko
slices_num = 4
bitesize = 3
list_reagents = list("nutriment" = 8, "protein" = 4)
tastes = list("shark roe" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_DUPLICATE
/obj/item/food/sushi_Tobiko
/obj/item/food/sushi_tobiko
name = "tobiko sushi"
desc = "A simple sushi consisting of shark roe."
icon = 'icons/obj/food/seafood.dmi'
@@ -315,19 +315,19 @@
tastes = list("shark roe" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_EASY
/obj/item/food/sliceable/TobikoEgg_maki
/obj/item/food/sliceable/tobiko_egg_maki
name = "tobiko and egg maki roll"
desc = "A large unsliced roll of Tobkio and Egg Sushi."
icon = 'icons/obj/food/seafood.dmi'
icon_state = "TobikoEgg_maki"
slice_path = /obj/item/food/sushi_TobikoEgg
slice_path = /obj/item/food/sushi_tobiko_egg
slices_num = 4
bitesize = 3
list_reagents = list("nutriment" = 8, "protein" = 4)
tastes = list("shark roe" = 1, "rice" = 1, "egg" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_DUPLICATE
/obj/item/food/sushi_TobikoEgg
/obj/item/food/sushi_tobiko_egg
name = "tobiko and egg sushi"
desc = "A sushi consisting of shark roe and an egg."
icon = 'icons/obj/food/seafood.dmi'
@@ -337,19 +337,19 @@
tastes = list("shark roe" = 1, "rice" = 1, "egg" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_EASY
/obj/item/food/sliceable/Tai_maki
/obj/item/food/sliceable/tai_maki
name = "tai maki roll"
desc = "A large unsliced roll of Tai Sushi."
icon = 'icons/obj/food/seafood.dmi'
icon_state = "Tai_maki"
slice_path = /obj/item/food/sushi_Tai
slice_path = /obj/item/food/sushi_tai
slices_num = 4
bitesize = 3
list_reagents = list("nutriment" = 8)
tastes = list("catfish" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_DUPLICATE
/obj/item/food/sushi_Tai
/obj/item/food/sushi_tai
name = "tai sushi"
desc = "A simple sushi consisting of catfish and rice."
icon = 'icons/obj/food/seafood.dmi'
@@ -359,7 +359,7 @@
tastes = list("catfish" = 1, "rice" = 1, "seaweed" = 1)
goal_difficulty = FOOD_GOAL_EASY
/obj/item/food/sushi_Unagi
/obj/item/food/sushi_unagi
name = "unagi sushi"
desc = "A simple sushi consisting of eel and rice."
icon = 'icons/obj/food/seafood.dmi'
@@ -608,7 +608,7 @@
/obj/machinery/smartfridge/secure/circuits/Initialize(mapload)
. = ..()
accepted_items_typecache = typecacheof(list(
/obj/item/aiModule,
/obj/item/ai_module,
/obj/item/circuitboard
))
@@ -638,13 +638,13 @@
/obj/machinery/smartfridge/secure/circuits/aiupload/experimental
name = "\improper Experimental Laws Storage"
starting_items = list(
/obj/item/aiModule/cctv = 1,
/obj/item/aiModule/hippocratic = 1,
/obj/item/aiModule/maintain = 1,
/obj/item/aiModule/paladin = 1,
/obj/item/aiModule/peacekeeper = 1,
/obj/item/aiModule/quarantine = 1,
/obj/item/aiModule/robocop = 1
/obj/item/ai_module/cctv = 1,
/obj/item/ai_module/hippocratic = 1,
/obj/item/ai_module/maintain = 1,
/obj/item/ai_module/paladin = 1,
/obj/item/ai_module/peacekeeper = 1,
/obj/item/ai_module/quarantine = 1,
/obj/item/ai_module/robocop = 1
)
/obj/machinery/smartfridge/secure/circuits/aiupload/experimental/Initialize(mapload)
@@ -654,13 +654,13 @@
/obj/machinery/smartfridge/secure/circuits/aiupload/highrisk
name = "\improper High-Risk Laws Storage"
starting_items = list(
/obj/item/aiModule/freeform = 1,
/obj/item/aiModule/freeformcore = 1,
/obj/item/aiModule/nanotrasen_aggressive = 1,
/obj/item/aiModule/oneCrewMember = 1,
/obj/item/aiModule/protectStation = 1,
/obj/item/aiModule/purge = 1,
/obj/item/aiModule/tyrant = 1
/obj/item/ai_module/freeform = 1,
/obj/item/ai_module/freeformcore = 1,
/obj/item/ai_module/nanotrasen_aggressive = 1,
/obj/item/ai_module/one_crew_member = 1,
/obj/item/ai_module/protect_station = 1,
/obj/item/ai_module/purge = 1,
/obj/item/ai_module/tyrant = 1
)
/obj/machinery/smartfridge/secure/circuits/aiupload/highrisk/Initialize(mapload)
@@ -172,95 +172,95 @@
being_cooked.reagents.del_reagent("carpotoxin")
return being_cooked
/datum/recipe/grill/sushi_Tamago
/datum/recipe/grill/sushi_tamago
reagents = list("sake" = 5)
items = list(
/obj/item/food/egg,
/obj/item/food/boiledrice,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_Tamago
result = /obj/item/food/sushi_tamago
/datum/recipe/grill/sushi_Unagi
/datum/recipe/grill/sushi_unagi
reagents = list("sake" = 5)
items = list(
/obj/item/fish/electric_eel,
/obj/item/food/boiledrice,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_Unagi
result = /obj/item/food/sushi_unagi
/datum/recipe/grill/sushi_Ebi
/datum/recipe/grill/sushi_ebi
items = list(
/obj/item/food/boiledrice,
/obj/item/food/boiled_shrimp,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_Ebi
result = /obj/item/food/sushi_ebi
/datum/recipe/grill/sushi_Ikura
/datum/recipe/grill/sushi_ikura
items = list(
/obj/item/food/boiledrice,
/obj/item/fish_eggs/salmon,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_Ikura
result = /obj/item/food/sushi_ikura
/datum/recipe/grill/sushi_Inari
/datum/recipe/grill/sushi_inari
items = list(
/obj/item/food/boiledrice,
/obj/item/food/fried_tofu,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_Inari
result = /obj/item/food/sushi_inari
/datum/recipe/grill/sushi_Sake
/datum/recipe/grill/sushi_sake
items = list(
/obj/item/food/boiledrice,
/obj/item/food/salmonmeat,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_Sake
result = /obj/item/food/sushi_sake
/datum/recipe/grill/sushi_SmokedSalmon
/datum/recipe/grill/sushi_smoked_salmon
items = list(
/obj/item/food/boiledrice,
/obj/item/food/salmonsteak,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_SmokedSalmon
result = /obj/item/food/sushi_smoked_salmon
/datum/recipe/grill/sushi_Masago
/datum/recipe/grill/sushi_masago
items = list(
/obj/item/food/boiledrice,
/obj/item/fish_eggs/goldfish,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_Masago
result = /obj/item/food/sushi_masago
/datum/recipe/grill/sushi_Tobiko
/datum/recipe/grill/sushi_tobiko
items = list(
/obj/item/food/boiledrice,
/obj/item/fish_eggs/shark,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_Tobiko
result = /obj/item/food/sushi_tobiko
/datum/recipe/grill/sushi_TobikoEgg
/datum/recipe/grill/sushi_tobiko_egg
items = list(
/obj/item/food/sushi_Tobiko,
/obj/item/food/sushi_tobiko,
/obj/item/food/egg,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_TobikoEgg
result = /obj/item/food/sushi_tobiko_egg
/datum/recipe/grill/sushi_Tai
/datum/recipe/grill/sushi_tai
items = list(
/obj/item/food/boiledrice,
/obj/item/food/catfishmeat,
/obj/item/stack/seaweed
)
result = /obj/item/food/sushi_Tai
result = /obj/item/food/sushi_tai
/datum/recipe/grill/goliath
items = list(/obj/item/food/monstermeat/goliath)
@@ -69,18 +69,18 @@
category = CAT_FOOD
subcategory = CAT_SANDWICH
/datum/crafting_recipe/sushi_Ebi
/datum/crafting_recipe/sushi_ebi
name = "Ebi Sushi"
reqs = list(
/obj/item/food/boiledrice = 1,
/obj/item/food/boiled_shrimp = 1,
/obj/item/stack/seaweed = 1,
)
result = list(/obj/item/food/sushi_Ebi)
result = list(/obj/item/food/sushi_ebi)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/Ebi_maki
/datum/crafting_recipe/ebi_maki
name = "Ebi Maki Roll"
reqs = list(
/obj/item/food/boiledrice = 1,
@@ -88,22 +88,22 @@
/obj/item/stack/seaweed = 1,
)
pathtools = list(/obj/item/kitchen/sushimat)
result = list(/obj/item/food/sliceable/Ebi_maki)
result = list(/obj/item/food/sliceable/ebi_maki)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/sushi_Ikura
/datum/crafting_recipe/sushi_ikura
name = "Ikura Sushi"
reqs = list(
/obj/item/food/boiledrice = 1,
/obj/item/fish_eggs/salmon = 1,
/obj/item/stack/seaweed = 1,
)
result = list(/obj/item/food/sushi_Ikura)
result = list(/obj/item/food/sushi_ikura)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/Ikura_maki
/datum/crafting_recipe/ikura_maki
name = "Ikura Maki Roll"
reqs = list(
/obj/item/food/boiledrice = 1,
@@ -111,22 +111,22 @@
/obj/item/stack/seaweed = 1,
)
pathtools = list(/obj/item/kitchen/sushimat)
result = list(/obj/item/food/sliceable/Ikura_maki)
result = list(/obj/item/food/sliceable/ikura_maki)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/sushi_Inari
/datum/crafting_recipe/sushi_inari
name = "Inari Sushi"
reqs = list(
/obj/item/food/boiledrice = 1,
/obj/item/food/fried_tofu = 1,
/obj/item/stack/seaweed = 1,
)
result = list(/obj/item/food/sushi_Inari)
result = list(/obj/item/food/sushi_inari)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/Inari_maki
/datum/crafting_recipe/inari_maki
name = "Inari Maki Roll"
reqs = list(
/obj/item/food/boiledrice = 1,
@@ -134,22 +134,22 @@
/obj/item/stack/seaweed = 1,
)
pathtools = list(/obj/item/kitchen/sushimat)
result = list(/obj/item/food/sliceable/Inari_maki)
result = list(/obj/item/food/sliceable/inari_maki)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/sushi_Sake
/datum/crafting_recipe/sushi_sake
name = "Sake Sushi"
reqs = list(
/obj/item/food/boiledrice = 1,
/obj/item/food/salmonmeat = 1,
/obj/item/stack/seaweed = 1,
)
result = list(/obj/item/food/sushi_Sake)
result = list(/obj/item/food/sushi_sake)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/Sake_maki
/datum/crafting_recipe/sake_maki
name = "Sake Maki Roll"
reqs = list(
/obj/item/food/boiledrice = 1,
@@ -157,22 +157,22 @@
/obj/item/stack/seaweed = 1,
)
pathtools = list(/obj/item/kitchen/sushimat)
result = list(/obj/item/food/sliceable/Sake_maki)
result = list(/obj/item/food/sliceable/sake_maki)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/sushi_SmokedSalmon
/datum/crafting_recipe/sushi_smoked_salmon
name = "Smoked Salmon Sushi"
reqs = list(
/obj/item/food/boiledrice = 1,
/obj/item/food/salmonsteak = 1,
/obj/item/stack/seaweed = 1,
)
result = list(/obj/item/food/sushi_SmokedSalmon)
result = list(/obj/item/food/sushi_smoked_salmon)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/SmokedSalmon_maki
/datum/crafting_recipe/smoked_salmon_maki
name = "Smoked Salmon Maki Roll"
reqs = list(
/obj/item/food/boiledrice = 1,
@@ -180,22 +180,22 @@
/obj/item/stack/seaweed = 1,
)
pathtools = list(/obj/item/kitchen/sushimat)
result = list(/obj/item/food/sliceable/SmokedSalmon_maki)
result = list(/obj/item/food/sliceable/smoked_salmon_maki)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/sushi_Masago
/datum/crafting_recipe/sushi_masago
name = "Masago Sushi"
reqs = list(
/obj/item/food/boiledrice = 1,
/obj/item/fish_eggs/goldfish = 1,
/obj/item/stack/seaweed = 1,
)
result = list(/obj/item/food/sushi_Masago)
result = list(/obj/item/food/sushi_masago)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/Masago_maki
/datum/crafting_recipe/masago_maki
name = "Masago Maki Roll"
reqs = list(
/obj/item/food/boiledrice = 1,
@@ -203,22 +203,22 @@
/obj/item/stack/seaweed = 1,
)
pathtools = list(/obj/item/kitchen/sushimat)
result = list(/obj/item/food/sliceable/Masago_maki)
result = list(/obj/item/food/sliceable/masago_maki)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/sushi_Tobiko
/datum/crafting_recipe/sushi_tobiko
name = "Tobiko Sushi"
reqs = list(
/obj/item/food/boiledrice = 1,
/obj/item/fish_eggs/shark = 1,
/obj/item/stack/seaweed = 1,
)
result = list(/obj/item/food/sushi_Tobiko)
result = list(/obj/item/food/sushi_tobiko)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/Tobiko_maki
/datum/crafting_recipe/tobiko_maki
name = "Tobiko Maki Roll"
reqs = list(
/obj/item/food/boiledrice = 1,
@@ -226,45 +226,45 @@
/obj/item/stack/seaweed = 1,
)
pathtools = list(/obj/item/kitchen/sushimat)
result = list(/obj/item/food/sliceable/Tobiko_maki)
result = list(/obj/item/food/sliceable/tobiko_maki)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/sushi_TobikoEgg
/datum/crafting_recipe/sushi_tobiko_egg
name = "Tobiko and Egg Sushi"
reqs = list(
/obj/item/food/sushi_Tobiko = 1,
/obj/item/food/sushi_tobiko = 1,
/obj/item/food/egg = 1,
/obj/item/stack/seaweed = 1,
)
result = list(/obj/item/food/sushi_TobikoEgg)
result = list(/obj/item/food/sushi_tobiko_egg)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/TobikoEgg_maki
/datum/crafting_recipe/tobiko_egg_maki
name = "Tobiko and Egg Maki Roll"
reqs = list(
/obj/item/food/sushi_Tobiko = 4,
/obj/item/food/sushi_tobiko = 4,
/obj/item/food/egg = 4,
/obj/item/stack/seaweed = 1,
)
pathtools = list(/obj/item/kitchen/sushimat)
result = list(/obj/item/food/sliceable/TobikoEgg_maki)
result = list(/obj/item/food/sliceable/tobiko_egg_maki)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/sushi_Tai
/datum/crafting_recipe/sushi_tai
name = "Tai Sushi"
reqs = list(
/obj/item/food/boiledrice = 1,
/obj/item/food/catfishmeat = 1,
/obj/item/stack/seaweed = 1,
)
result = list(/obj/item/food/sushi_Tai)
result = list(/obj/item/food/sushi_tai)
category = CAT_FOOD
subcategory = CAT_SUSHI
/datum/crafting_recipe/Tai_maki
/datum/crafting_recipe/tai_maki
name = "Tai Maki Roll"
reqs = list(
/obj/item/food/boiledrice = 1,
@@ -272,7 +272,7 @@
/obj/item/stack/seaweed = 1,
)
pathtools = list(/obj/item/kitchen/sushimat)
result = list(/obj/item/food/sliceable/Tai_maki)
result = list(/obj/item/food/sliceable/tai_maki)
category = CAT_FOOD
subcategory = CAT_SUSHI
+1 -1
View File
@@ -4,7 +4,7 @@
for(var/turf/simulated/floor/T in orange(1,xmas))
for(var/i=1,i<=rand(1,5),i++)
new /obj/item/a_gift(T)
for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in GLOB.mob_list)
for(var/mob/living/simple_animal/pet/dog/corgi/ian/Ian in GLOB.mob_list)
Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat)
for(var/datum/crafting_recipe/snowman/S in GLOB.crafting_recipes)
S.always_available = TRUE
+1 -1
View File
@@ -127,7 +127,7 @@
begin_day = 1
begin_month = JULY
/datum/holiday/UFO
/datum/holiday/ufo
name = "UFO Day"
begin_day = 2
begin_month = JULY
+2 -2
View File
@@ -331,13 +331,13 @@
new /obj/effect/decal/cleanable/ash(get_turf(src))
qdel(src)
/obj/item/CQC_manual
/obj/item/cqc_manual
name = "old manual"
desc = "A small, black manual. There are drawn instructions of tactical hand-to-hand combat."
icon = 'icons/obj/library.dmi'
icon_state = "cqcmanual"
/obj/item/CQC_manual/attack_self(mob/living/carbon/human/user)
/obj/item/cqc_manual/attack_self(mob/living/carbon/human/user)
if(!istype(user) || !user)
return
if(user.mind) //Prevents changelings and vampires from being able to learn it
+2 -2
View File
@@ -415,7 +415,7 @@
if(isstorage(G.gift))
L += get_contents(G.gift)
for(var/obj/item/smallDelivery/D in Storage.return_inv()) //Check for package wrapped items
for(var/obj/item/small_delivery/D in Storage.return_inv()) //Check for package wrapped items
L += D.wrapped
if(isstorage(D.wrapped)) //this should never happen
L += get_contents(D.wrapped)
@@ -441,7 +441,7 @@
if(isstorage(G.gift))
L += get_contents(G.gift)
for(var/obj/item/smallDelivery/D in contents) //Check for package wrapped items
for(var/obj/item/small_delivery/D in contents) //Check for package wrapped items
L += D.wrapped
if(isstorage(D.wrapped)) //this should never happen
L += get_contents(D.wrapped)
+1 -1
View File
@@ -97,7 +97,7 @@
var/datum/language/default_language
var/datum/middleClickOverride/middleClickOverride = null
var/datum/middle_click_override/middleClickOverride = null
/// Famous last words -- if succumbing, what the user's last words were
var/last_words
+7 -7
View File
@@ -69,7 +69,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
//MALFUNCTION
var/datum/module_picker/malf_picker
var/datum/spell/ai_spell/choose_modules/modules_action
var/list/datum/AI_Module/current_modules = list()
var/list/datum/ai_module/current_modules = list()
var/can_dominate_mechs = FALSE
var/shunted = FALSE // TRUE if the AI is currently shunted. Used to differentiate between shunted and ghosted/braindead
@@ -104,7 +104,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
var/obj/machinery/doomsday_device/doomsday_device
var/obj/machinery/hologram/holopad/holo = null
var/mob/camera/aiEye/eyeobj
var/mob/camera/ai_eye/eyeobj
var/sprint = 10
var/cooldown = 0
var/acceleration = 1
@@ -115,7 +115,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
var/obj/machinery/camera/portable/builtInCamera
var/obj/structure/AIcore/deactivated/linked_core //For exosuit control
var/obj/structure/ai_core/deactivated/linked_core //For exosuit control
/// If our AI doesn't want to be the arrivals announcer, this gets set to FALSE.
var/announce_arrivals = TRUE
@@ -217,7 +217,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(!safety)//Only used by AIize() to successfully spawn an AI.
if(!B)//If there is no player/brain inside.
new/obj/structure/AIcore/deactivated(loc)//New empty terminal.
new/obj/structure/ai_core/deactivated(loc)//New empty terminal.
qdel(src)//Delete AI.
return
else
@@ -1322,7 +1322,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
to_chat(user, "<span class='warning'>Intelligence transfer aborted.</span>")
return
new /obj/structure/AIcore/deactivated(loc)//Spawns a deactivated terminal at AI location.
new /obj/structure/ai_core/deactivated(loc)//Spawns a deactivated terminal at AI location.
aiRestorePowerRoutine = 0//So the AI initially has power.
control_disabled = TRUE //Can't control things remotely if you're stuck in a card!
aiRadio.disabledAi = TRUE //No talking on the built-in radio for you either!
@@ -1389,7 +1389,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
///Removes all malfunction-related /datum/action's from the target AI.
/mob/living/silicon/ai/proc/remove_malf_abilities()
QDEL_NULL(modules_action)
for(var/datum/AI_Module/AM in current_modules)
for(var/datum/ai_module/AM in current_modules)
for(var/datum/action/A in actions)
if(istype(A, initial(AM.power_type)))
qdel(A)
@@ -1433,7 +1433,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
else
to_chat(src, "<span class='warning'>Target is not on or near any active cameras on the station.</span>")
/mob/living/silicon/ai/proc/camera_visibility(mob/camera/aiEye/moved_eye)
/mob/living/silicon/ai/proc/camera_visibility(mob/camera/ai_eye/moved_eye)
GLOB.cameranet.visibility(moved_eye, client, all_eyes)
/mob/living/silicon/ai/handle_fire()
@@ -44,7 +44,7 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new())
var/list/chunks_post_seen = list()
for(var/V in moved_eyes)
var/mob/camera/aiEye/eye = V
var/mob/camera/ai_eye/eye = V
if(C)
chunks_pre_seen |= eye.visibleCameraChunks
// 0xf = 15
@@ -76,7 +76,7 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new())
if(C)
for(var/V in other_eyes)
var/mob/camera/aiEye/eye = V
var/mob/camera/ai_eye/eye = V
chunks_post_seen |= eye.visibleCameraChunks
var/list/remove = chunks_pre_seen - chunks_post_seen
@@ -56,7 +56,7 @@
SScamera.queue(src)
// Add an AI eye to the chunk, then update if changed.
/datum/camerachunk/proc/add(mob/camera/aiEye/eye, add_images = TRUE)
/datum/camerachunk/proc/add(mob/camera/ai_eye/eye, add_images = TRUE)
if(add_images)
var/client/client = eye.GetViewerClient()
if(client)
@@ -67,11 +67,11 @@
if(changed)
SScamera.queue(src)
/datum/camerachunk/proc/aiEye_destroyed(mob/camera/aiEye/eye)
/datum/camerachunk/proc/aiEye_destroyed(mob/camera/ai_eye/eye)
remove(eye, FALSE)
// Remove an AI eye from the chunk, then update if changed.
/datum/camerachunk/proc/remove(mob/camera/aiEye/eye, remove_images = TRUE)
/datum/camerachunk/proc/remove(mob/camera/ai_eye/eye, remove_images = TRUE)
if(remove_images)
var/client/client = eye.GetViewerClient()
if(client)
@@ -134,7 +134,7 @@
obscured += t.obscured
images_to_add += t.obscured
for(var/mob/camera/aiEye/eye as anything in seenby)
for(var/mob/camera/ai_eye/eye as anything in seenby)
var/client/client = eye.GetViewerClient()
if(client)
client.images -= images_to_remove
@@ -3,7 +3,7 @@
// An invisible (no icon) mob that the AI controls to look around the station with.
// It streams chunks as it moves around, which will show it what the AI can and cannot see.
/mob/camera/aiEye
/mob/camera/ai_eye
name = "Inactive AI Eye"
icon = 'icons/mob/ai.dmi' //Allows ghosts to see what the AI is looking at.
@@ -23,7 +23,7 @@
// Use this when setting the aiEye's location.
// It will also stream the chunk that the new loc is in.
/mob/camera/aiEye/setLoc(T)
/mob/camera/ai_eye/setLoc(T)
if(ai)
if(!isturf(ai.loc))
return
@@ -39,26 +39,26 @@
var/obj/machinery/hologram/holopad/H = ai.current
H.move_hologram(ai, T)
/mob/camera/aiEye/Move()
/mob/camera/ai_eye/Move()
return 0
/mob/camera/aiEye/Process_Spacemove(movement_dir)
/mob/camera/ai_eye/Process_Spacemove(movement_dir)
// Nothing in space can stop us from moving.
return 1
/mob/camera/aiEye/proc/GetViewerClient()
/mob/camera/ai_eye/proc/GetViewerClient()
if(ai)
return ai.client
return null
/mob/camera/aiEye/proc/RemoveImages()
/mob/camera/ai_eye/proc/RemoveImages()
var/client/C = GetViewerClient()
if(C && use_static)
for(var/V in visibleCameraChunks)
var/datum/camerachunk/chunk = V
C.images -= chunk.obscured
/mob/camera/aiEye/Destroy()
/mob/camera/ai_eye/Destroy()
if(ai)
ai.all_eyes -= src
ai = null
@@ -131,7 +131,7 @@
/mob/living/silicon/ai/proc/create_eye()
if(eyeobj)
return
eyeobj = new /mob/camera/aiEye()
eyeobj = new /mob/camera/ai_eye()
all_eyes += eyeobj
eyeobj.ai = src
eyeobj.setLoc(loc)
@@ -146,7 +146,7 @@
acceleration = !acceleration
to_chat(usr, "Camera acceleration has been toggled [acceleration ? "on" : "off"].")
/mob/camera/aiEye/hear_say(list/message_pieces, verb = "says", italics = 0, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE)
/mob/camera/ai_eye/hear_say(list/message_pieces, verb = "says", italics = 0, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE)
if(relay_speech)
if(istype(ai))
ai.relay_speech(speaker, message_pieces, verb)
@@ -11,7 +11,7 @@ GLOBAL_LIST_EMPTY(empty_playable_ai_cores)
cryo_AI()
/mob/living/silicon/ai/proc/cryo_AI()
var/dead_aicore = new /obj/structure/AIcore/deactivated(loc)
var/dead_aicore = new /obj/structure/ai_core/deactivated(loc)
GLOB.empty_playable_ai_cores += dead_aicore
GLOB.global_announcer.autosay("[src] has been moved to intelligence storage.", "Artificial Intelligence Oversight", follow_target_override = dead_aicore)
@@ -67,7 +67,7 @@ GLOBAL_LIST_EMPTY(empty_playable_ai_cores)
CRASH("moveToEmptyCore called without any available cores")
// IsJobAvailable for AI checks that there is an empty core available in this list
var/obj/structure/AIcore/deactivated/C = GLOB.empty_playable_ai_cores[1]
var/obj/structure/ai_core/deactivated/C = GLOB.empty_playable_ai_cores[1]
GLOB.empty_playable_ai_cores -= C
forceMove(C.loc)
@@ -1,14 +1,14 @@
// Recruiting observers to play as pAIs
GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler for pAI candidates
GLOBAL_DATUM_INIT(paiController, /datum/pai_controller, new) // Global handler for pAI candidates
/datum/paiController
/datum/pai_controller
var/list/pai_candidates = list()
var/list/asked = list()
var/askDelay = 10 * 60 * 1 // One minute [ms * sec * min]
/datum/paiController/Topic(href, href_list[])
/datum/pai_controller/Topic(href, href_list[])
var/datum/pai_save/candidate = locateUID(href_list["candidate"])
@@ -115,7 +115,7 @@ GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler fo
return
recruitWindow(usr)
/datum/paiController/proc/recruitWindow(mob/M)
/datum/pai_controller/proc/recruitWindow(mob/M)
var/datum/pai_save/candidate = M.client.pai_save
var/dat = ""
@@ -234,7 +234,7 @@ GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler fo
M << browse(dat, "window=paiRecruit;size=580x580;")
/datum/paiController/proc/findPAI(obj/item/paicard/p, mob/user)
/datum/pai_controller/proc/findPAI(obj/item/paicard/p, mob/user)
requestRecruits(p, user)
var/list/available = list()
for(var/datum/pai_save/c in GLOB.paiController.pai_candidates)
@@ -349,7 +349,7 @@ GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler fo
user << browse(dat, "window=findPai")
/datum/paiController/proc/requestRecruits(obj/item/paicard/P, mob/user)
/datum/pai_controller/proc/requestRecruits(obj/item/paicard/P, mob/user)
for(var/mob/dead/observer/O in GLOB.player_list)
if(O.client && (ROLE_PAI in O.client.prefs.be_special))
if(player_old_enough_antag(O.client,ROLE_PAI))
@@ -357,7 +357,7 @@ GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler fo
to_chat(O, "<span class='boldnotice'>A pAI card activated by [user.real_name] is looking for personalities. (<a href='byond://?src=[O.UID()];jump=\ref[P]'>Teleport</a> | <a href='byond://?src=[UID()];signup=\ref[O]'>Sign Up</a>)</span>")
//question(O.client)
/datum/paiController/proc/check_recruit(mob/dead/observer/O)
/datum/pai_controller/proc/check_recruit(mob/dead/observer/O)
if(jobban_isbanned(O, ROLE_PAI) || jobban_isbanned(O, "nonhumandept"))
return 0
if(!player_old_enough_antag(O.client,ROLE_PAI))
@@ -370,7 +370,7 @@ GLOBAL_DATUM_INIT(paiController, /datum/paiController, new) // Global handler fo
return 1
return 0
/datum/paiController/proc/question(client/C)
/datum/pai_controller/proc/question(client/C)
spawn(0)
if(!C) return
asked.Add(C.key)
@@ -35,7 +35,7 @@
var/obj/item/matter_decompiler/decompiler = null
// What objects can drones bump into
var/static/list/allowed_bumpable_objects = list(/obj/machinery/door, /obj/machinery/recharge_station, /obj/machinery/disposal/deliveryChute,
var/static/list/allowed_bumpable_objects = list(/obj/machinery/door, /obj/machinery/recharge_station, /obj/machinery/disposal/delivery_chute,
/obj/machinery/teleport/hub, /obj/effect/portal, /obj/structure/transit_tube/station)
var/reboot_cooldown = 1 MINUTES
@@ -346,7 +346,7 @@
/obj/item/surgicaldrill,
/obj/item/bonesetter,
/obj/item/bonegel,
/obj/item/FixOVein,
/obj/item/fix_o_vein,
/obj/item/extinguisher/mini,
/obj/item/reagent_containers/glass/beaker/large,
/obj/item/reagent_containers/dropper,
@@ -847,7 +847,7 @@
/obj/item/surgicaldrill,
/obj/item/bonesetter,
/obj/item/bonegel,
/obj/item/FixOVein,
/obj/item/fix_o_vein,
/obj/item/card/emag,
/obj/item/crowbar/cyborg/red,
/obj/item/pinpointer/operative,
@@ -29,7 +29,7 @@
footstep_type = FOOTSTEP_MOB_CLAW
//RUNTIME IS ALIVE! SQUEEEEEEEE~
/mob/living/simple_animal/pet/cat/Runtime
/mob/living/simple_animal/pet/cat/runtime
name = "Runtime"
desc = "GCAT."
icon_state = "cat"
@@ -42,35 +42,35 @@
var/list/family = list()
var/list/children = list() //Actual mob instances of children
/mob/living/simple_animal/pet/cat/Runtime/Initialize(mapload)
/mob/living/simple_animal/pet/cat/runtime/Initialize(mapload)
. = ..()
SSpersistent_data.register(src)
/mob/living/simple_animal/pet/cat/Runtime/Destroy()
/mob/living/simple_animal/pet/cat/runtime/Destroy()
SSpersistent_data.registered_atoms -= src
return ..()
/mob/living/simple_animal/pet/cat/Runtime/persistent_load()
/mob/living/simple_animal/pet/cat/runtime/persistent_load()
read_memory()
deploy_the_cats()
/mob/living/simple_animal/pet/cat/Runtime/persistent_save()
/mob/living/simple_animal/pet/cat/runtime/persistent_save()
if(SEND_SIGNAL(src, COMSIG_LIVING_WRITE_MEMORY) & COMPONENT_DONT_WRITE_MEMORY)
return FALSE
write_memory(FALSE)
/mob/living/simple_animal/pet/cat/Runtime/make_babies()
/mob/living/simple_animal/pet/cat/runtime/make_babies()
var/mob/baby = ..()
if(baby)
children += baby
return baby
/mob/living/simple_animal/pet/cat/Runtime/death()
/mob/living/simple_animal/pet/cat/runtime/death()
if(can_die())
write_memory(TRUE)
return ..()
/mob/living/simple_animal/pet/cat/Runtime/proc/read_memory()
/mob/living/simple_animal/pet/cat/runtime/proc/read_memory()
var/savefile/S = new /savefile("data/npc_saves/Runtime.sav")
S["family"] >> family
@@ -78,7 +78,7 @@
family = list()
log_debug("Persistent data for [src] loaded (family: [family ? list2params(family) : "None"])")
/mob/living/simple_animal/pet/cat/Runtime/proc/write_memory(dead)
/mob/living/simple_animal/pet/cat/runtime/proc/write_memory(dead)
var/savefile/S = new /savefile("data/npc_saves/Runtime.sav")
family = list()
if(!dead)
@@ -92,7 +92,7 @@
S["family"] << family
log_debug("Persistent data for [src] saved (family: [family ? list2params(family) : "None"])")
/mob/living/simple_animal/pet/cat/Runtime/proc/deploy_the_cats()
/mob/living/simple_animal/pet/cat/runtime/proc/deploy_the_cats()
for(var/cat_type in family)
if(family[cat_type] > 0)
for(var/i in 1 to min(family[cat_type],100)) //Limits to about 500 cats, you wouldn't think this would be needed (BUT IT IS)
@@ -174,13 +174,13 @@
stop_automated_movement = TRUE
walk(src, movement_target, 0, 3)
/mob/living/simple_animal/pet/cat/Proc
/mob/living/simple_animal/pet/cat/proc_cat
name = "Proc"
gender = MALE
gold_core_spawnable = NO_SPAWN
unique_pet = TRUE
/mob/living/simple_animal/pet/cat/Var
/mob/living/simple_animal/pet/cat/var_cat
name = "Var"
desc = "Maintenance Cat!"
gold_core_spawnable = NO_SPAWN
@@ -197,7 +197,7 @@
pass_flags = PASSMOB
collar_type = "kitten"
/mob/living/simple_animal/pet/cat/Syndi
/mob/living/simple_animal/pet/cat/syndi
name = "SyndiCat"
desc = "It's a SyndiCat droid."
icon_state = "Syndicat"
@@ -213,11 +213,11 @@
melee_damage_lower = 5
melee_damage_upper = 15
/mob/living/simple_animal/pet/cat/Syndi/Initialize(mapload)
/mob/living/simple_animal/pet/cat/syndi/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_NOBREATH, SPECIES_TRAIT)
/mob/living/simple_animal/pet/cat/Syndi/npc_safe(mob/user)
/mob/living/simple_animal/pet/cat/syndi/npc_safe(mob/user)
if(GAMEMODE_IS_NUCLEAR)
return TRUE
return FALSE
@@ -46,7 +46,7 @@
return
//mining pet
/mob/living/simple_animal/cockroach/Brad
/mob/living/simple_animal/cockroach/brad
name = "Brad"
desc = "Lavaland's most resilient cockroach. Seeing this little guy walk through the wastes almost makes you wish for nuclear winter."
response_help = "carefully pets"
@@ -36,7 +36,7 @@
return TRUE
//COFFEE! SQUEEEEEEEEE!
/mob/living/simple_animal/crab/Coffee
/mob/living/simple_animal/crab/coffee
name = "Coffee"
real_name = "Coffee"
desc = "It's Coffee, the other pet!"
@@ -316,7 +316,7 @@
add_overlay(back_icon)
//IAN! SQUEEEEEEEEE~
/mob/living/simple_animal/pet/dog/corgi/Ian
/mob/living/simple_animal/pet/dog/corgi/ian
name = "Ian"
real_name = "Ian" //Intended to hold the name without altering it.
gender = MALE
@@ -332,19 +332,19 @@
var/record_age = 1
var/saved_head //path
/mob/living/simple_animal/pet/dog/corgi/Ian/Initialize(mapload)
/mob/living/simple_animal/pet/dog/corgi/ian/Initialize(mapload)
. = ..()
SSpersistent_data.register(src)
/mob/living/simple_animal/pet/dog/corgi/Ian/Destroy()
/mob/living/simple_animal/pet/dog/corgi/ian/Destroy()
SSpersistent_data.registered_atoms -= src
return ..()
/mob/living/simple_animal/pet/dog/corgi/Ian/death()
/mob/living/simple_animal/pet/dog/corgi/ian/death()
write_memory(TRUE)
..()
/mob/living/simple_animal/pet/dog/corgi/Ian/persistent_load()
/mob/living/simple_animal/pet/dog/corgi/ian/persistent_load()
read_memory()
if(age == 0)
var/turf/target = get_turf(loc)
@@ -365,12 +365,12 @@
desc = "At a ripe old age of [record_age], Ian's not as spry as he used to be, but he'll always be the HoP's beloved corgi." //RIP
turns_per_move = 20
/mob/living/simple_animal/pet/dog/corgi/Ian/persistent_save()
/mob/living/simple_animal/pet/dog/corgi/ian/persistent_save()
if(SEND_SIGNAL(src, COMSIG_LIVING_WRITE_MEMORY) & COMPONENT_DONT_WRITE_MEMORY)
return FALSE
write_memory(FALSE)
/mob/living/simple_animal/pet/dog/corgi/Ian/proc/read_memory()
/mob/living/simple_animal/pet/dog/corgi/ian/proc/read_memory()
if(fexists("data/npc_saves/Ian.sav")) //legacy compatability to convert old format to new
var/savefile/S = new /savefile("data/npc_saves/Ian.sav")
S["age"] >> age
@@ -393,7 +393,7 @@
place_on_head(new saved_head)
log_debug("Persistent data for [src] loaded (age: [age] | record_age: [record_age] | saved_head: [saved_head ? saved_head : "None"])")
/mob/living/simple_animal/pet/dog/corgi/Ian/proc/write_memory(dead)
/mob/living/simple_animal/pet/dog/corgi/ian/proc/write_memory(dead)
var/json_file = file("data/npc_saves/Ian.json")
var/list/file_data = list()
if(!dead)
@@ -414,7 +414,7 @@
WRITE_FILE(json_file, json_encode(file_data))
log_debug("Persistent data for [src] saved (age: [age] | record_age: [record_age] | saved_head: [saved_head ? saved_head : "None"])")
/mob/living/simple_animal/pet/dog/corgi/Ian/handle_automated_movement()
/mob/living/simple_animal/pet/dog/corgi/ian/handle_automated_movement()
. = ..()
//Feeding, chasing food, FOOOOODDDD
if(IS_HORIZONTAL(src) || buckled)
@@ -450,7 +450,7 @@
if(prob(1))
chasetail()
/mob/living/simple_animal/pet/dog/corgi/Ian/proc/move_to_target()
/mob/living/simple_animal/pet/dog/corgi/ian/proc/move_to_target()
stop_automated_movement = TRUE
step_to(src, movement_target, 1)
sleep(3)
@@ -470,7 +470,7 @@
else if(prob(30) && ishuman(movement_target.loc)) // mean hooman has stolen it
custom_emote(EMOTE_VISIBLE, "stares at [movement_target.loc]'s [movement_target] with a sad puppy-face.")
/mob/living/simple_animal/pet/dog/corgi/Ian/narsie_act()
/mob/living/simple_animal/pet/dog/corgi/ian/narsie_act()
playsound(src, 'sound/misc/demon_dies.ogg', 75, TRUE)
var/mob/living/simple_animal/pet/dog/corgi/narsie/N = new(loc)
N.setDir(dir)
@@ -538,7 +538,7 @@
return 1 //Void puppies can navigate space.
//LISA! SQUEEEEEEEEE~
/mob/living/simple_animal/pet/dog/corgi/Lisa
/mob/living/simple_animal/pet/dog/corgi/lisa
name = "Lisa"
real_name = "Lisa"
gender = FEMALE
@@ -554,11 +554,11 @@
strippable_inventory_slots = list(/datum/strippable_item/corgi_back, /datum/strippable_item/pet_collar) //Lisa already has a cute bow!
var/turns_since_scan = 0
/mob/living/simple_animal/pet/dog/corgi/Lisa/Life()
/mob/living/simple_animal/pet/dog/corgi/lisa/Life()
..()
make_babies()
/mob/living/simple_animal/pet/dog/corgi/Lisa/handle_automated_movement()
/mob/living/simple_animal/pet/dog/corgi/lisa/handle_automated_movement()
. = ..()
if(!IS_HORIZONTAL(src) && !buckled)
if(prob(1))
@@ -19,14 +19,14 @@
response_harm = "kicks"
//Captain fox
/mob/living/simple_animal/pet/dog/fox/Renault
/mob/living/simple_animal/pet/dog/fox/renault
name = "Renault"
desc = "Renault, the Captain's trustworthy fox. I wonder what it says?"
unique_pet = TRUE
gold_core_spawnable = NO_SPAWN
//Syndi fox
/mob/living/simple_animal/pet/dog/fox/Syndifox
/mob/living/simple_animal/pet/dog/fox/syndifox
name = "Syndifox"
desc = "Syndifox, the Syndicate's most respected mascot. I wonder what it says?"
icon_state = "Syndifox"
@@ -41,11 +41,11 @@
melee_damage_lower = 10
melee_damage_upper = 20
/mob/living/simple_animal/pet/dog/fox/Syndifox/Initialize(mapload)
/mob/living/simple_animal/pet/dog/fox/syndifox/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_NOBREATH, SPECIES_TRAIT)
/mob/living/simple_animal/pet/dog/fox/Syndifox/npc_safe(mob/user)
/mob/living/simple_animal/pet/dog/fox/syndifox/npc_safe(mob/user)
if(GAMEMODE_IS_NUCLEAR)
return TRUE
return FALSE
@@ -144,7 +144,7 @@
icon_state = "mouse_brown"
//TOM IS ALIVE! SQUEEEEEEEE~K :)
/mob/living/simple_animal/mouse/brown/Tom
/mob/living/simple_animal/mouse/brown/tom
name = "Tom"
real_name = "Tom"
response_help = "pets"
@@ -153,23 +153,23 @@
unique_pet = TRUE
gold_core_spawnable = NO_SPAWN
/mob/living/simple_animal/mouse/brown/Tom/update_desc()
/mob/living/simple_animal/mouse/brown/tom/update_desc()
. = ..()
desc = "Jerry the cat is not amused."
/mob/living/simple_animal/mouse/brown/Tom/Initialize(mapload)
/mob/living/simple_animal/mouse/brown/tom/Initialize(mapload)
. = ..()
// Tom fears no cable.
ADD_TRAIT(src, TRAIT_SHOCKIMMUNE, SPECIES_TRAIT)
/mob/living/simple_animal/mouse/white/Brain
/mob/living/simple_animal/mouse/white/brain
name = "Brain"
real_name = "Brain"
response_harm = "splats"
unique_pet = TRUE
gold_core_spawnable = NO_SPAWN
/mob/living/simple_animal/mouse/white/Brain/update_desc()
/mob/living/simple_animal/mouse/white/brain/update_desc()
. = ..()
desc = "Gee Virology, what are we going to do tonight? The same thing we do every night, try to take over the world!"
@@ -62,7 +62,7 @@
butcher_results = list(/obj/item/food/monstermeat/bearmeat = 5, /obj/item/clothing/head/bearpelt/polar = 1)
//SPACE BEARS! SQUEEEEEEEE~ OW! FUCK! IT BIT MY HAND OFF!!
/mob/living/simple_animal/hostile/bear/Hudson
/mob/living/simple_animal/hostile/bear/hudson
name = "Hudson"
desc = "Feared outlaw, this guy is one bad news bear." //I'm sorry...
icon_state = "combat_bear"
@@ -70,7 +70,7 @@
icon_dead = "combat_bear_dead"
butcher_results = list(/obj/item/food/monstermeat/bearmeat = 5, /obj/item/clothing/head/bearpelt/brown = 1)
/mob/living/simple_animal/hostile/bear/Hudson/Initialize(mapload)
/mob/living/simple_animal/hostile/bear/hudson/Initialize(mapload)
. = ..()
var/unbearable_pun = pick("He's unbearably cute.", "It looks like he is a bearer of bad news.", "Sadly, he is bearly able to comprehend puns.")
desc = "That's Hudson. " + unbearable_pun // I am not sorry for this.
@@ -649,7 +649,7 @@
/*
* Sub-types
*/
/mob/living/simple_animal/parrot/Poly
/mob/living/simple_animal/parrot/poly
name = "Poly"
desc = "Poly the Parrot. An expert on quantum cracker theory."
clean_speak = list(
@@ -679,13 +679,13 @@
gold_core_spawnable = NO_SPAWN
available_channels = list(":e")
/mob/living/simple_animal/parrot/Poly/Initialize(mapload)
/mob/living/simple_animal/parrot/poly/Initialize(mapload)
. = ..()
ears = new /obj/item/radio/headset/headset_eng(src)
clean_speak += "Danger! Crystal hyperstructure integrity faltering! Integrity: [rand(75, 99)]%" // Has to be here cause of the `rand()`.
/mob/living/simple_animal/parrot/Poly/npc_safe(mob/user) // Hello yes, I have universal speak and I follow people around and shout out antags
/mob/living/simple_animal/parrot/poly/npc_safe(mob/user) // Hello yes, I have universal speak and I follow people around and shout out antags
return FALSE
/mob/living/simple_animal/parrot/handle_message_mode(message_mode, list/message_pieces, verb, used_radios)
@@ -38,11 +38,11 @@
// Sprites by Travelling Merchant
/datum/sprite_accessory/head_accessory/kidan/kidan_Mantie_Long
/datum/sprite_accessory/head_accessory/kidan/kidan_mantie_long
name = "Mantie Long"
icon_state = "Mantie_Long"
/datum/sprite_accessory/head_accessory/kidan/kidan_Mantie_Curled
/datum/sprite_accessory/head_accessory/kidan/kidan_mantie_curled
name = "Mantie Curled"
icon_state = "Mantie_Curled"
+2 -2
View File
@@ -535,11 +535,11 @@
/*
* Premade paper
*/
/obj/item/paper/Court
/obj/item/paper/court
name = "Judgement"
info = "For crimes against the station, the offender is sentenced to:<BR>\n<BR>\n"
/obj/item/paper/Toxin
/obj/item/paper/toxin
name = "Chemical Information"
info = "Known Onboard Toxins:<BR>\n\tGrade A Semi-Liquid Plasma:<BR>\n\t\tHighly poisonous. You cannot sustain concentrations above 15 units.<BR>\n\t\tA gas mask fails to filter plasma after 50 units.<BR>\n\t\tWill attempt to diffuse like a gas.<BR>\n\t\tFiltered by scrubbers.<BR>\n\t\tThere is a bottled version which is very different<BR>\n\t\t\tfrom the version found in canisters!<BR>\n<BR>\n\t\tWARNING: Highly Flammable. Keep away from heat sources<BR>\n\t\texcept in a enclosed fire area!<BR>\n\t\tWARNING: It is a crime to use this without authorization.<BR>\nKnown Onboard Anti-Toxin:<BR>\n\tAnti-Toxin Type 01P: Works against Grade A Plasma.<BR>\n\t\tBest if injected directly into bloodstream.<BR>\n\t\tA full injection is in every regular Med-Kit.<BR>\n\t\tSpecial toxin Kits hold around 7.<BR>\n<BR>\nKnown Onboard Chemicals (other):<BR>\n\tRejuvenation T#001:<BR>\n\t\tEven 1 unit injected directly into the bloodstream<BR>\n\t\t\twill cure paralysis and sleep plasma.<BR>\n\t\tIf administered to a dying patient it will prevent<BR>\n\t\t\tfurther damage for about units*3 seconds.<BR>\n\t\t\tit will not cure them or allow them to be cured.<BR>\n\t\tIt can be administeredd to a non-dying patient<BR>\n\t\t\tbut the chemicals disappear just as fast.<BR>\n\tSoporific T#054:<BR>\n\t\t5 units wilkl induce precisely 1 minute of sleep.<BR>\n\t\t\tThe effect are cumulative.<BR>\n\t\tWARNING: It is a crime to use this without authorization"
@@ -337,7 +337,7 @@
/obj/machinery/field/containment,
/obj/structure/disposalpipe,
/obj/structure/disposaloutlet,
/obj/machinery/disposal/deliveryChute,
/obj/machinery/disposal/delivery_chute,
/obj/machinery/camera,
/obj/structure/sign,
/obj/structure/lattice,
+15 -15
View File
@@ -1,4 +1,4 @@
/datum/mapGenerator
/datum/map_generator
//Map information
var/list/map = list()
@@ -6,13 +6,13 @@
//mapGeneratorModule information
var/list/modules = list()
/datum/mapGenerator/New()
/datum/map_generator/New()
..()
initialiseModules()
//Defines the region the map represents, sets map
//Returns the map
/datum/mapGenerator/proc/defineRegion(turf/Start, turf/End, replace = 0)
/datum/map_generator/proc/defineRegion(turf/Start, turf/End, replace = 0)
if(!checkRegion(Start, End))
return 0
@@ -25,7 +25,7 @@
//Defines the region the map represents, as a CIRCLE!, sets map
//Returns the map
/datum/mapGenerator/proc/defineCircularRegion(turf/Start, turf/End, replace = 0)
/datum/map_generator/proc/defineCircularRegion(turf/Start, turf/End, replace = 0)
if(!checkRegion(Start, End))
return 0
@@ -60,13 +60,13 @@
//Empties the map list, he's dead jim.
/datum/mapGenerator/proc/undefineRegion()
/datum/map_generator/proc/undefineRegion()
map = list() //bai bai
//Checks for and Rejects bad region coordinates
//Returns 1/0
/datum/mapGenerator/proc/checkRegion(turf/Start, turf/End)
/datum/map_generator/proc/checkRegion(turf/Start, turf/End)
. = 1
if(!Start || !End)
@@ -81,29 +81,29 @@
//Requests the mapGeneratorModule(s) to (re)generate
/datum/mapGenerator/proc/generate()
/datum/map_generator/proc/generate()
syncModules()
if(!modules || !length(modules))
return
for(var/datum/mapGeneratorModule/mod in modules)
for(var/datum/map_generator_module/mod in modules)
spawn(0)
mod.generate()
//Requests the mapGeneratorModule(s) to (re)generate this one turf
/datum/mapGenerator/proc/generateOneTurf(turf/T)
/datum/map_generator/proc/generateOneTurf(turf/T)
if(!T)
return
syncModules()
if(!modules || !length(modules))
return
for(var/datum/mapGeneratorModule/mod in modules)
for(var/datum/map_generator_module/mod in modules)
spawn(0)
mod.place(T)
//Replaces all paths in the module list with actual module datums
/datum/mapGenerator/proc/initialiseModules()
/datum/map_generator/proc/initialiseModules()
for(var/path in modules)
if(ispath(path))
modules.Remove(path)
@@ -112,8 +112,8 @@
//Sync mapGeneratorModule(s) to mapGenerator
/datum/mapGenerator/proc/syncModules()
for(var/datum/mapGeneratorModule/mod in modules)
/datum/map_generator/proc/syncModules()
for(var/datum/map_generator_module/mod in modules)
mod.sync(src)
@@ -129,7 +129,7 @@
if(!check_rights(R_MAINTAINER))
return
var/datum/mapGenerator/nature/N = new()
var/datum/map_generator/nature/N = new()
var/startInput = clean_input("Start turf of Map, (X;Y;Z)", "Map Gen Settings", "1;1;1")
var/endInput = clean_input("End turf of Map (X;Y;Z)", "Map Gen Settings", "[world.maxx];[world.maxy];[mob ? mob.z : 1]")
//maxx maxy and current z so that if you fuck up, you only fuck up one entire z level instead of the entire universe
@@ -170,7 +170,7 @@
theCluster = MAP_GENERATOR_CLUSTER_CHECK_NONE
if(theCluster)
for(var/datum/mapGeneratorModule/M in N.modules)
for(var/datum/map_generator_module/M in N.modules)
M.clusterCheckFlags = theCluster
@@ -1,6 +1,6 @@
/datum/mapGeneratorModule
var/datum/mapGenerator/mother = null
/datum/map_generator_module
var/datum/map_generator/mother = null
var/list/spawnableAtoms = list()
var/list/spawnableTurfs = list()
var/clusterMax = 5
@@ -10,14 +10,14 @@
//Syncs the module up with it's mother
/datum/mapGeneratorModule/proc/sync(datum/mapGenerator/mum)
/datum/map_generator_module/proc/sync(datum/map_generator/mum)
mother = null
if(mum)
mother = mum
//Generates it's spawnable atoms and turfs
/datum/mapGeneratorModule/proc/generate()
/datum/map_generator_module/proc/generate()
if(!mother)
return
var/list/map = mother.map
@@ -26,7 +26,7 @@
//Place a spawnable atom or turf on this turf
/datum/mapGeneratorModule/proc/place(turf/T)
/datum/map_generator_module/proc/place(turf/T)
if(!T)
return 0
@@ -103,7 +103,7 @@
//Checks and Rejects dense turfs
/datum/mapGeneratorModule/proc/checkPlaceAtom(turf/T)
/datum/map_generator_module/proc/checkPlaceAtom(turf/T)
. = 1
if(!T)
return 0
@@ -127,19 +127,19 @@
//Settings appropriate for a turf that covers the entire map region, eg a fill colour on a bottom layer in a graphics program.
//Should only have one of these in your mapGenerator unless you want to waste CPU
/datum/mapGeneratorModule/bottomLayer
/datum/map_generator_module/bottom_layer
clusterCheckFlags = MAP_GENERATOR_CLUSTER_CHECK_NONE
spawnableAtoms = list()//Recommended: No atoms.
spawnableTurfs = list(/turf = 100)
//Settings appropriate for turfs/atoms that cover SOME of the map region, sometimes referred to as a splatter layer.
/datum/mapGeneratorModule/splatterLayer
/datum/map_generator_module/splatter_layer
clusterCheckFlags = MAP_GENERATOR_CLUSTER_CHECK_ALL
spawnableAtoms = list(/atom = 30)
spawnableTurfs = list(/turf = 30)
//Settings appropriate for turfs/atoms that cover a lot of the map region, eg a dense forest.
/datum/mapGeneratorModule/denseLayer
/datum/map_generator_module/dense_layer
clusterCheckFlags = MAP_GENERATOR_CLUSTER_CHECK_NONE
spawnableAtoms = list(/atom = 75)
spawnableTurfs = list(/turf = 75)
@@ -2,11 +2,11 @@
// Helper to repressurize the area in case it was run in space
/datum/mapGeneratorModule/bottomLayer/repressurize
/datum/map_generator_module/bottom_layer/repressurize
spawnableAtoms = list()
spawnableTurfs = list()
/datum/mapGeneratorModule/bottomLayer/repressurize/generate()
/datum/map_generator_module/bottom_layer/repressurize/generate()
if(!mother)
return
var/list/map = mother.map
@@ -22,10 +22,10 @@
T.blind_set_air(air)
//Only places atoms/turfs on area borders
/datum/mapGeneratorModule/border
/datum/map_generator_module/border
clusterCheckFlags = MAP_GENERATOR_CLUSTER_CHECK_NONE
/datum/mapGeneratorModule/border/generate()
/datum/map_generator_module/border/generate()
if(!mother)
return
var/list/map = mother.map
@@ -33,7 +33,7 @@
if(is_border(T))
place(T)
/datum/mapGeneratorModule/border/proc/is_border(turf/T)
/datum/map_generator_module/border/proc/is_border(turf/T)
for(var/direction in list(SOUTH,EAST,WEST,NORTH))
if(get_step(T,direction) in mother.map)
continue
@@ -3,18 +3,18 @@
//Pine Trees
/datum/mapGeneratorModule/pineTrees
/datum/map_generator_module/pine_trees
spawnableAtoms = list(/obj/structure/flora/tree/pine = 30)
//Dead Trees
/datum/mapGeneratorModule/deadTrees
/datum/map_generator_module/dead_trees
spawnableAtoms = list(/obj/structure/flora/tree/dead = 10)
//Random assortment of bushes
/datum/mapGeneratorModule/randBushes
/datum/map_generator_module/rand_bushes
spawnableAtoms = list()
/datum/mapGeneratorModule/randBushes/New()
/datum/map_generator_module/rand_bushes/New()
..()
spawnableAtoms = typesof(/obj/structure/flora/ausbushes)
for(var/i in spawnableAtoms)
@@ -22,16 +22,16 @@
//Random assortment of rocks and rockpiles
/datum/mapGeneratorModule/randRocks
/datum/map_generator_module/rand_rocks
spawnableAtoms = list(/obj/structure/flora/rock = 40, /obj/structure/flora/rock/pile = 20)
//Grass turfs
/datum/mapGeneratorModule/bottomLayer/grassTurfs
/datum/map_generator_module/bottom_layer/grass_turfs
spawnableTurfs = list(/turf/simulated/floor/grass = 100)
//Grass tufts with a high spawn chance
/datum/mapGeneratorModule/denseLayer/grassTufts
/datum/map_generator_module/dense_layer/grass_tufts
spawnableTurfs = list()
spawnableAtoms = list(/obj/structure/flora/ausbushes/grassybush = 75)
@@ -38,7 +38,7 @@ mapGenerator:
initialiseModules()
Example: initialiseModules()
Desc: Replaces all typepaths in the modules list with actual /datum/mapGenerator/Module types
Desc: Replaces all typepaths in the modules list with actual /datum/map_generator/Module types
Existing Calls: mapGenerator/New()
syncModules()
@@ -51,7 +51,7 @@ mapGeneratorModule
Desc: a mapGeneratorModule has spawnableAtoms and spawnableTurfs lists
which it will generate on turfs in it's mother's map based on cluster variables
sync(var/datum/mapGenerator/mum)
sync(var/datum/map_generator/mum)
Example: sync(a_mapGenerator_as_a_variable)
Desc: Sets the Mother variable to the mum argument
Existing Calls: mapGenerator/syncModules()
@@ -1,23 +1,23 @@
//Asteroid turfs
/datum/mapGeneratorModule/bottomLayer/asteroidTurfs
/datum/map_generator_module/bottom_layer/asteroid_turfs
spawnableTurfs = list(/turf/simulated/floor/plating/asteroid/airless = 100)
/datum/mapGeneratorModule/bottomLayer/asteroidWalls
/datum/map_generator_module/bottom_layer/asteroid_walls
spawnableTurfs = list(/turf/simulated/mineral = 100)
//Border walls
/datum/mapGeneratorModule/border/asteroidWalls
/datum/map_generator_module/border/asteroid_walls
spawnableAtoms = list()
spawnableTurfs = list(/turf/simulated/mineral = 100)
//Random walls
/datum/mapGeneratorModule/splatterLayer/asteroidWalls
/datum/map_generator_module/splatter_layer/asteroid_walls
clusterCheckFlags = MAP_GENERATOR_CLUSTER_CHECK_NONE
spawnableAtoms = list()
spawnableTurfs = list(/turf/simulated/mineral = 30)
//Monsters
/datum/mapGeneratorModule/splatterLayer/asteroidMonsters
/datum/map_generator_module/splatter_layer/asteroid_monsters
spawnableTurfs = list()
spawnableAtoms = list(/mob/living/simple_animal/hostile/asteroid/basilisk = 10, \
/mob/living/simple_animal/hostile/asteroid/hivelord = 10, \
@@ -26,20 +26,20 @@
// GENERATORS
/datum/mapGenerator/asteroid/hollow
modules = list(/datum/mapGeneratorModule/bottomLayer/asteroidTurfs, \
/datum/mapGeneratorModule/border/asteroidWalls)
/datum/map_generator/asteroid/hollow
modules = list(/datum/map_generator_module/bottom_layer/asteroid_turfs, \
/datum/map_generator_module/border/asteroid_walls)
/datum/mapGenerator/asteroid/hollow/random
modules = list(/datum/mapGeneratorModule/bottomLayer/asteroidTurfs, \
/datum/mapGeneratorModule/border/asteroidWalls, \
/datum/mapGeneratorModule/splatterLayer/asteroidWalls)
/datum/map_generator/asteroid/hollow/random
modules = list(/datum/map_generator_module/bottom_layer/asteroid_turfs, \
/datum/map_generator_module/border/asteroid_walls, \
/datum/map_generator_module/splatter_layer/asteroid_walls)
/datum/mapGenerator/asteroid/hollow/random/monsters
modules = list(/datum/mapGeneratorModule/bottomLayer/asteroidTurfs, \
/datum/mapGeneratorModule/border/asteroidWalls, \
/datum/mapGeneratorModule/splatterLayer/asteroidWalls, \
/datum/mapGeneratorModule/splatterLayer/asteroidMonsters)
/datum/map_generator/asteroid/hollow/random/monsters
modules = list(/datum/map_generator_module/bottom_layer/asteroid_turfs, \
/datum/map_generator_module/border/asteroid_walls, \
/datum/map_generator_module/splatter_layer/asteroid_walls, \
/datum/map_generator_module/splatter_layer/asteroid_monsters)
/datum/mapGenerator/asteroid/filled
modules = list(/datum/mapGeneratorModule/bottomLayer/asteroidWalls)
/datum/map_generator/asteroid/filled
modules = list(/datum/map_generator_module/bottom_layer/asteroid_walls)
@@ -1,10 +1,10 @@
//Exists primarily as a test type.
/datum/mapGenerator/nature
modules = list(/datum/mapGeneratorModule/bottomLayer/grassTurfs, \
/datum/mapGeneratorModule/pineTrees, \
/datum/mapGeneratorModule/deadTrees, \
/datum/mapGeneratorModule/randBushes, \
/datum/mapGeneratorModule/randRocks, \
/datum/mapGeneratorModule/denseLayer/grassTufts)
/datum/map_generator/nature
modules = list(/datum/map_generator_module/bottom_layer/grass_turfs, \
/datum/map_generator_module/pine_trees, \
/datum/map_generator_module/dead_trees, \
/datum/map_generator_module/rand_bushes, \
/datum/map_generator_module/rand_rocks, \
/datum/map_generator_module/dense_layer/grass_tufts)
@@ -1,21 +1,21 @@
// Modules
/datum/mapGeneratorModule/bottomLayer/syndieFloor
/datum/map_generator_module/bottom_layer/syndie_floor
spawnableTurfs = list(/turf/simulated/floor/mineral/plastitanium/red = 100)
/datum/mapGeneratorModule/border/syndieWalls
/datum/map_generator_module/border/syndie_walls
spawnableAtoms = list()
spawnableTurfs = list(/turf/simulated/wall/r_wall = 100)
/datum/mapGeneratorModule/syndieFurniture
/datum/map_generator_module/syndie_furniture
clusterCheckFlags = MAP_GENERATOR_CLUSTER_CHECK_SAME_ATOMS
spawnableTurfs = list()
spawnableAtoms = list(/obj/structure/table = 20,/obj/structure/chair = 15,/obj/structure/chair/stool = 10, \
/obj/structure/computerframe = 15, /obj/item/storage/toolbox/syndicate = 15 ,\
/obj/structure/closet/syndicate = 25)
/datum/mapGeneratorModule/splatterLayer/syndieMobs
/datum/map_generator_module/splatter_layer/syndie_mobs
clusterCheckFlags = MAP_GENERATOR_CLUSTER_CHECK_SAME_ATOMS
spawnableAtoms = list(/mob/living/simple_animal/hostile/syndicate = 30, \
/mob/living/simple_animal/hostile/syndicate/melee = 20, \
@@ -26,26 +26,26 @@
// Generators
/// walls and floor only
/datum/mapGenerator/syndicate/empty
modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \
/datum/mapGeneratorModule/border/syndieWalls,\
/datum/mapGeneratorModule/bottomLayer/repressurize)
/datum/map_generator/syndicate/empty
modules = list(/datum/map_generator_module/bottom_layer/syndie_floor, \
/datum/map_generator_module/border/syndie_walls,\
/datum/map_generator_module/bottom_layer/repressurize)
/datum/mapGenerator/syndicate/mobsonly
modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \
/datum/mapGeneratorModule/border/syndieWalls,\
/datum/mapGeneratorModule/splatterLayer/syndieMobs, \
/datum/mapGeneratorModule/bottomLayer/repressurize)
/datum/map_generator/syndicate/mobsonly
modules = list(/datum/map_generator_module/bottom_layer/syndie_floor, \
/datum/map_generator_module/border/syndie_walls,\
/datum/map_generator_module/splatter_layer/syndie_mobs, \
/datum/map_generator_module/bottom_layer/repressurize)
/datum/mapGenerator/syndicate/furniture
modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \
/datum/mapGeneratorModule/border/syndieWalls,\
/datum/mapGeneratorModule/syndieFurniture, \
/datum/mapGeneratorModule/bottomLayer/repressurize)
/datum/map_generator/syndicate/furniture
modules = list(/datum/map_generator_module/bottom_layer/syndie_floor, \
/datum/map_generator_module/border/syndie_walls,\
/datum/map_generator_module/syndie_furniture, \
/datum/map_generator_module/bottom_layer/repressurize)
/datum/mapGenerator/syndicate/full
modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \
/datum/mapGeneratorModule/border/syndieWalls,\
/datum/mapGeneratorModule/syndieFurniture, \
/datum/mapGeneratorModule/splatterLayer/syndieMobs, \
/datum/mapGeneratorModule/bottomLayer/repressurize)
/datum/map_generator/syndicate/full
modules = list(/datum/map_generator_module/bottom_layer/syndie_floor, \
/datum/map_generator_module/border/syndie_walls,\
/datum/map_generator_module/syndie_furniture, \
/datum/map_generator_module/splatter_layer/syndie_mobs, \
/datum/map_generator_module/bottom_layer/repressurize)
@@ -487,7 +487,7 @@
ammo_type = /obj/item/ammo_casing/shotgun/meteorslug
/obj/item/ammo_box/magazine/m12g/XtrLrg
/obj/item/ammo_box/magazine/m12g/xtr_lrg
name = "\improper XL shotgun magazine (12g slugs)"
desc = "An extra large drum magazine."
icon_state = "m12gXlSl"
@@ -495,12 +495,12 @@
ammo_type = /obj/item/ammo_casing/shotgun
max_ammo = 16
/obj/item/ammo_box/magazine/m12g/XtrLrg/buckshot
/obj/item/ammo_box/magazine/m12g/xtr_lrg/buckshot
name = "\improper XL shotgun magazine (12g buckshot)"
icon_state = "m12gXlBs"
ammo_type = /obj/item/ammo_casing/shotgun/buckshot
/obj/item/ammo_box/magazine/m12g/XtrLrg/dragon
/obj/item/ammo_box/magazine/m12g/xtr_lrg/dragon
name = "\improper XL shotgun magazine (12g dragon's breath)"
icon_state = "m12gXlDb"
ammo_type = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath
@@ -329,7 +329,7 @@
. = ..()
if(magazine)
. += "[magazine.icon_state]"
if(istype(magazine, /obj/item/ammo_box/magazine/m12g/XtrLrg))
if(istype(magazine, /obj/item/ammo_box/magazine/m12g/xtr_lrg))
w_class = WEIGHT_CLASS_BULKY
else
w_class = WEIGHT_CLASS_NORMAL
@@ -340,7 +340,7 @@
icon_state = "bulldog[chambered ? "" : "-e"]"
/obj/item/gun/projectile/automatic/shotgun/bulldog/attackby(obj/item/A as obj, mob/user as mob, params)
if(istype(A, /obj/item/ammo_box/magazine/m12g/XtrLrg))
if(istype(A, /obj/item/ammo_box/magazine/m12g/xtr_lrg))
if(isstorage(loc)) // To prevent inventory exploits
var/obj/item/storage/Strg = loc
if(Strg.max_w_class < WEIGHT_CLASS_BULKY)
@@ -95,7 +95,7 @@
item_state = "deagleg"
//APS Pistol//
/obj/item/gun/projectile/automatic/pistol/APS
/obj/item/gun/projectile/automatic/pistol/aps
name = "stechkin APS pistol"
desc = "A deadly automatic pistol produced by the USSP's State Armory. Uses 10mm ammo."
icon_state = "aps"
@@ -134,7 +134,7 @@
result_amount = 5
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/kahluaVodka
/datum/chemical_reaction/kahlua_vodka
name = "KahluaVodka"
id = "kahlauVodka"
result = "kahlua"
@@ -716,7 +716,7 @@
P.forceMove(get_turf(holder.my_atom))
//Rainbow :o)
/datum/chemical_reaction/slimeRNG
/datum/chemical_reaction/slime_rng
name = "Random Core"
id = "slimerng"
result = null
@@ -725,7 +725,7 @@
required_other = TRUE
required_container = /obj/item/slime_extract/rainbow
/datum/chemical_reaction/slimeRNG/on_reaction(datum/reagents/holder)
/datum/chemical_reaction/slime_rng/on_reaction(datum/reagents/holder)
SSblackbox.record_feedback("tally", "slime_cores_used", 1, type)
var/mob/living/simple_animal/slime/random/S = new (get_turf(holder.my_atom))
S.visible_message("<span class='danger'>Infused with plasma, the core begins to quiver and grow, and a new baby slime emerges from it!</span>")
@@ -149,7 +149,7 @@
//////////////////////////////
// MARK: CMO HYPO
//////////////////////////////
/obj/item/reagent_containers/hypospray/CMO
/obj/item/reagent_containers/hypospray/cmo
name = "advanced hypospray"
desc = "Nanotrasen's own, reverse-engineered and improved version of DeForest's hypospray."
list_reagents = list("omnizine" = 30)
@@ -157,11 +157,11 @@
penetrate_thick = TRUE
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
/obj/item/reagent_containers/hypospray/CMO/Initialize(mapload)
/obj/item/reagent_containers/hypospray/cmo/Initialize(mapload)
. = ..()
RegisterSignal(src, COMSIG_PARENT_QDELETING, PROC_REF(alert_admins_on_destroy))
/obj/item/reagent_containers/hypospray/CMO/examine_more(mob/user)
/obj/item/reagent_containers/hypospray/cmo/examine_more(mob/user)
. = ..()
. += "The DeForest Medical Corporation's hypospray is a highly successful medical device currently under patent protection. Naturally, this has not stopped Nanotrasen from taking the design and tinkering with it."
. += ""
@@ -190,22 +190,22 @@
blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-")
return ..()
/obj/item/reagent_containers/iv_bag/blood/APlus
/obj/item/reagent_containers/iv_bag/blood/a_plus
blood_type = "A+"
/obj/item/reagent_containers/iv_bag/blood/AMinus
/obj/item/reagent_containers/iv_bag/blood/a_minus
blood_type = "A-"
/obj/item/reagent_containers/iv_bag/blood/BPlus
/obj/item/reagent_containers/iv_bag/blood/b_plus
blood_type = "B+"
/obj/item/reagent_containers/iv_bag/blood/BMinus
/obj/item/reagent_containers/iv_bag/blood/b_minus
blood_type = "B-"
/obj/item/reagent_containers/iv_bag/blood/OPlus
/obj/item/reagent_containers/iv_bag/blood/o_plus
blood_type = "O+"
/obj/item/reagent_containers/iv_bag/blood/OMinus
/obj/item/reagent_containers/iv_bag/blood/o_minus
blood_type = "O-"
/obj/item/reagent_containers/iv_bag/blood/vox
@@ -126,7 +126,7 @@
if(PIPE_DISPOSALS_OUTLET)
return /obj/structure/disposaloutlet
if(PIPE_DISPOSALS_CHUTE)
return /obj/machinery/disposal/deliveryChute
return /obj/machinery/disposal/delivery_chute
if(PIPE_DISPOSALS_SORT_RIGHT, PIPE_DISPOSALS_SORT_LEFT)
return /obj/structure/disposalpipe/sortjunction
return
@@ -248,7 +248,7 @@
else if(ptype==PIPE_DISPOSALS_CHUTE) // Disposal outlet
var/obj/machinery/disposal/deliveryChute/P = new /obj/machinery/disposal/deliveryChute(src.loc)
var/obj/machinery/disposal/delivery_chute/P = new /obj/machinery/disposal/delivery_chute(src.loc)
src.transfer_fingerprints_to(P)
P.dir = dir
+10 -10
View File
@@ -63,7 +63,7 @@
/obj/machinery/disposal/Moved(atom/OldLoc, Dir)
. = ..()
eject()
var/ptype = istype(src, /obj/machinery/disposal/deliveryChute) ? PIPE_DISPOSALS_CHUTE : PIPE_DISPOSALS_BIN //Check what disposaltype it is
var/ptype = istype(src, /obj/machinery/disposal/delivery_chute) ? PIPE_DISPOSALS_CHUTE : PIPE_DISPOSALS_BIN //Check what disposaltype it is
var/turf/T = OldLoc
if(T.intact)
var/turf/simulated/floor/F = T
@@ -550,7 +550,7 @@
for(var/mob/living/silicon/robot/syndicate/saboteur/R in src)
wrapcheck = 1
for(var/obj/item/smallDelivery/O in src)
for(var/obj/item/small_delivery/O in src)
wrapcheck = 1
if(wrapcheck == 1)
@@ -704,11 +704,11 @@
var/mob/living/carbon/human/H = AM
if(HAS_TRAIT(H, TRAIT_FAT)) // is a human and fat?
has_fat_guy = TRUE // set flag on holder
if(istype(AM, /obj/structure/bigDelivery) && !hasmob)
var/obj/structure/bigDelivery/T = AM
if(istype(AM, /obj/structure/big_delivery) && !hasmob)
var/obj/structure/big_delivery/T = AM
destinationTag = T.sortTag
if(istype(AM, /obj/item/smallDelivery) && !hasmob)
var/obj/item/smallDelivery/T = AM
if(istype(AM, /obj/item/small_delivery) && !hasmob)
var/obj/item/small_delivery/T = AM
destinationTag = T.sortTag
//Drones can mail themselves through maint.
if(isdrone(AM))
@@ -717,8 +717,8 @@
if(istype(AM, /mob/living/silicon/robot/syndicate/saboteur))
var/mob/living/silicon/robot/syndicate/saboteur/S = AM
destinationTag = S.mail_destination
if(istype(AM, /obj/item/shippingPackage) && !hasmob)
var/obj/item/shippingPackage/sp = AM
if(istype(AM, /obj/item/shipping_package) && !hasmob)
var/obj/item/shipping_package/sp = AM
if(sp.sealed) //only sealed packages get delivered to their intended destination
destinationTag = sp.sortTag
@@ -1232,8 +1232,8 @@
if(..())
return
if(istype(I, /obj/item/destTagger))
var/obj/item/destTagger/O = I
if(istype(I, /obj/item/dest_tagger))
var/obj/item/dest_tagger/O = I
var/tag = uppertext(GLOB.TAGGERLOCATIONS[O.currTag])
playsound(loc, 'sound/machines/twobeep.ogg', 100, 1)
if(O.currTag == 1)
+53 -53
View File
@@ -1,4 +1,4 @@
/obj/structure/bigDelivery
/obj/structure/big_delivery
name = "large parcel"
desc = "A big wrapped package."
icon = 'icons/obj/storage.dmi'
@@ -10,19 +10,19 @@
var/giftwrapped = FALSE
var/sortTag = 1
/obj/structure/bigDelivery/Destroy()
/obj/structure/big_delivery/Destroy()
var/turf/T = get_turf(src)
for(var/atom/movable/AM in contents)
AM.forceMove(T)
return ..()
/obj/structure/bigDelivery/ex_act(severity)
/obj/structure/big_delivery/ex_act(severity)
for(var/atom/movable/AM in contents)
AM.ex_act()
CHECK_TICK
..()
/obj/structure/bigDelivery/attack_hand(mob/user as mob)
/obj/structure/big_delivery/attack_hand(mob/user as mob)
playsound(loc, 'sound/items/poster_ripped.ogg', 50, 1)
if(wrapped)
wrapped.forceMove(get_turf(src))
@@ -35,9 +35,9 @@
qdel(src)
/obj/structure/bigDelivery/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/destTagger))
var/obj/item/destTagger/O = W
/obj/structure/big_delivery/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/dest_tagger))
var/obj/item/dest_tagger/O = W
if(sortTag != O.currTag)
var/tag = uppertext(GLOB.TAGGERLOCATIONS[O.currTag])
@@ -45,8 +45,8 @@
sortTag = O.currTag
playsound(loc, 'sound/machines/twobeep.ogg', 100, 1)
else if(istype(W, /obj/item/shippingPackage))
var/obj/item/shippingPackage/sp = W
else if(istype(W, /obj/item/shipping_package))
var/obj/item/shipping_package/sp = W
if(sp.sealed)
return
else
@@ -74,7 +74,7 @@
else
return ..()
/obj/item/smallDelivery
/obj/item/small_delivery
name = "small parcel"
desc = "A small wrapped package."
icon = 'icons/obj/storage.dmi'
@@ -83,19 +83,19 @@
var/giftwrapped = FALSE
var/sortTag = 1
/obj/item/smallDelivery/ex_act(severity)
/obj/item/small_delivery/ex_act(severity)
for(var/atom/movable/AM in contents)
AM.ex_act()
CHECK_TICK
..()
/obj/item/smallDelivery/emp_act(severity)
/obj/item/small_delivery/emp_act(severity)
..()
for(var/i in contents)
var/atom/A = i
A.emp_act(severity)
/obj/item/smallDelivery/attack_self(mob/user)
/obj/item/small_delivery/attack_self(mob/user)
if(wrapped?.loc == src) //sometimes items can disappear. For example, bombs. --rastaf0
wrapped.forceMove(get_turf(src))
if(ishuman(user))
@@ -103,9 +103,9 @@
playsound(src, 'sound/items/poster_ripped.ogg', 50, TRUE)
qdel(src)
/obj/item/smallDelivery/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/destTagger))
var/obj/item/destTagger/O = W
/obj/item/small_delivery/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/dest_tagger))
var/obj/item/dest_tagger/O = W
if(sortTag != O.currTag)
var/tag = uppertext(GLOB.TAGGERLOCATIONS[O.currTag])
@@ -113,8 +113,8 @@
sortTag = O.currTag
playsound(loc, 'sound/machines/twobeep.ogg', 100, 1)
else if(istype(W, /obj/item/shippingPackage))
var/obj/item/shippingPackage/sp = W
else if(istype(W, /obj/item/shipping_package))
var/obj/item/shipping_package/sp = W
if(sp.sealed)
return
else
@@ -139,7 +139,7 @@
else
return ..()
/obj/item/stack/packageWrap
/obj/item/stack/package_wrap
name = "package wrapper"
icon = 'icons/obj/stacks/miscellaneous.dmi'
icon_state = "deliveryPaper"
@@ -148,9 +148,9 @@
amount = 25
max_amount = 25
resistance_flags = FLAMMABLE
var/static/list/no_wrap = list(/obj/item/smallDelivery, /obj/structure/bigDelivery, /obj/item/evidencebag, /obj/structure/closet/body_bag)
var/static/list/no_wrap = list(/obj/item/small_delivery, /obj/structure/big_delivery, /obj/item/evidencebag, /obj/structure/closet/body_bag)
/obj/item/stack/packageWrap/pre_attack(atom/A, mob/living/user, params)
/obj/item/stack/package_wrap/pre_attack(atom/A, mob/living/user, params)
. = ..()
if(!in_range(A, user))
return
@@ -162,10 +162,10 @@
if(is_type_in_list(target, no_wrap))
return
if(istype(target, /obj/item/stack/packageWrap) && user.a_intent != INTENT_HARM)
if(istype(target, /obj/item/stack/package_wrap) && user.a_intent != INTENT_HARM)
return
if(is_type_in_list(A.loc, list(/obj/item/smallDelivery, /obj/structure/bigDelivery)))
if(is_type_in_list(A.loc, list(/obj/item/small_delivery, /obj/structure/big_delivery)))
return
if(target.anchored)
@@ -174,12 +174,12 @@
if(target in user)
return
if(isitem(target) && !(isstorage(target) && !istype(target,/obj/item/storage/box) && !istype(target, /obj/item/shippingPackage)))
if(isitem(target) && !(isstorage(target) && !istype(target,/obj/item/storage/box) && !istype(target, /obj/item/shipping_package)))
var/obj/item/O = target
if(!use(1))
return FALSE
var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up!
var/obj/item/small_delivery/P = new /obj/item/small_delivery(get_turf(O.loc)) //Aaannd wrap it up!
if(!isturf(O.loc))
if(user.client)
user.client.screen -= O
@@ -194,14 +194,14 @@
add_fingerprint(user)
else if(istype(target, /obj/structure/closet/crate))
var/obj/structure/bigDelivery/D = wrap_closet(target, user)
var/obj/structure/big_delivery/D = wrap_closet(target, user)
if(!D)
return FALSE
D.icon_state = "deliverycrate"
else if(istype(target, /obj/structure/closet))
var/obj/structure/closet/C = target
var/obj/structure/bigDelivery/D = wrap_closet(target, user)
var/obj/structure/big_delivery/D = wrap_closet(target, user)
if(!D)
return FALSE
D.init_welded = C.welded
@@ -225,7 +225,7 @@
return FALSE
// Separate proc to avoid copy pasting the code twice
/obj/item/stack/packageWrap/proc/wrap_closet(obj/structure/closet/C, mob/user)
/obj/item/stack/package_wrap/proc/wrap_closet(obj/structure/closet/C, mob/user)
if(C.opened)
return
if(amount < 3)
@@ -233,12 +233,12 @@
return
if(!do_after_once(user, 1.5 SECONDS, target = C) || C.opened || !use(3)) // Checking these again since it's after a delay
return
var/obj/structure/bigDelivery/P = new(get_turf(C))
var/obj/structure/big_delivery/P = new(get_turf(C))
P.wrapped = C
C.loc = P
return P
/obj/item/destTagger
/obj/item/dest_tagger
name = "destination tagger"
desc = "Used to set the destination of properly wrapped packages."
icon = 'icons/obj/device.dmi'
@@ -254,25 +254,25 @@
//disposals must always be 1, since anything that's untagged will automatically go to disposals, or sort_type = list(1) --Superxpdude
var/datum/ui_module/destination_tagger/destination_tagger
/obj/item/destTagger/Initialize(mapload)
/obj/item/dest_tagger/Initialize(mapload)
. = ..()
destination_tagger = new(src)
/obj/item/destTagger/Destroy()
/obj/item/dest_tagger/Destroy()
QDEL_NULL(destination_tagger)
return ..()
/obj/item/destTagger/attack_self(mob/user)
/obj/item/dest_tagger/attack_self(mob/user)
add_fingerprint(user)
ui_interact(user)
/obj/item/destTagger/ui_state(mob/user)
/obj/item/dest_tagger/ui_state(mob/user)
return GLOB.default_state
/obj/item/destTagger/ui_interact(mob/user, datum/tgui/ui = null)
/obj/item/dest_tagger/ui_interact(mob/user, datum/tgui/ui = null)
destination_tagger.ui_interact(user)
/obj/machinery/disposal/deliveryChute
/obj/machinery/disposal/delivery_chute
name = "delivery chute"
desc = "A chute for big and small packages alike!"
density = TRUE
@@ -281,20 +281,20 @@
deconstructs_to = PIPE_DISPOSALS_CHUTE
var/can_deconstruct = FALSE
/obj/machinery/disposal/deliveryChute/Initialize(mapload)
/obj/machinery/disposal/delivery_chute/Initialize(mapload)
. = ..()
trunk = locate() in loc
if(trunk)
trunk.linked = src // link the pipe trunk to self
/obj/machinery/disposal/deliveryChute/interact()
/obj/machinery/disposal/delivery_chute/interact()
return
/obj/machinery/disposal/deliveryChute/update()
/obj/machinery/disposal/delivery_chute/update()
return
/obj/machinery/disposal/deliveryChute/CanPass(atom/movable/mover, turf/target)
/obj/machinery/disposal/delivery_chute/CanPass(atom/movable/mover, turf/target)
// If the mover is a thrownthing passing through space, remove its thrown datum,
// ingest it like normal, and mark the chute as not passible.
// This prevents the mover from Entering the chute's turf
@@ -307,7 +307,7 @@
. = ..()
/obj/machinery/disposal/deliveryChute/Bumped(atom/movable/AM) //Go straight into the chute
/obj/machinery/disposal/delivery_chute/Bumped(atom/movable/AM) //Go straight into the chute
if(isprojectile(AM) || isAI(AM) || QDELETED(AM))
return
@@ -336,17 +336,17 @@
M.loc = src
flush()
/obj/machinery/disposal/deliveryChute/flush()
/obj/machinery/disposal/delivery_chute/flush()
flushing = 1
flick("intake-closing", src)
var/deliveryCheck = 0
var/obj/structure/disposalholder/H = new(src) // virtual holder object which actually
// travels through the pipes.
for(var/obj/structure/bigDelivery/O in src)
for(var/obj/structure/big_delivery/O in src)
deliveryCheck = 1
for(var/obj/item/smallDelivery/O in src)
for(var/obj/item/small_delivery/O in src)
deliveryCheck = 1
for(var/obj/item/shippingPackage/O in src)
for(var/obj/item/shipping_package/O in src)
deliveryCheck = 1
if(!O.sealed) //unsealed shipping packages will default to disposals
O.sortTag = 1
@@ -370,14 +370,14 @@
update()
return
/obj/machinery/disposal/deliveryChute/screwdriver_act(mob/user, obj/item/I)
/obj/machinery/disposal/delivery_chute/screwdriver_act(mob/user, obj/item/I)
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
can_deconstruct = !can_deconstruct
to_chat(user, "You [can_deconstruct ? "unfasten": "fasten"] the screws around the power connection.")
/obj/machinery/disposal/deliveryChute/welder_act(mob/user, obj/item/I)
/obj/machinery/disposal/delivery_chute/welder_act(mob/user, obj/item/I)
. = TRUE
if(!can_deconstruct)
return
@@ -396,7 +396,7 @@
C.density = TRUE
qdel(src)
/obj/item/shippingPackage
/obj/item/shipping_package
name = "Shipping package"
desc = "A pre-labeled package for shipping an item to coworkers."
icon = 'icons/obj/boxes.dmi'
@@ -405,7 +405,7 @@
var/sortTag = 1
var/sealed = 0
/obj/item/shippingPackage/attackby(obj/item/O, mob/user, params)
/obj/item/shipping_package/attackby(obj/item/O, mob/user, params)
if(sealed)
if(is_pen(O))
var/str = tgui_input_text(user, "Intended recipient?", "Address", max_length = MAX_NAME_LEN)
@@ -418,7 +418,7 @@
if(wrapped)
to_chat(user, "<span class='notice'>[src] already contains \a [wrapped].</span>")
return
if(isitem(O) && !isstorage(O) && !istype(O, /obj/item/shippingPackage))
if(isitem(O) && !isstorage(O) && !istype(O, /obj/item/shipping_package))
if(!user.canUnEquip(O))
to_chat(user, "<span class='warning'>[O] is stuck to your hand, you cannot put it in [src]!</span>")
return
@@ -432,7 +432,7 @@
add_fingerprint(usr)
to_chat(user, "<span class='notice'>You put [O] in [src].</span>")
/obj/item/shippingPackage/attack_self(mob/user)
/obj/item/shipping_package/attack_self(mob/user)
if(sealed)
to_chat(user, "<span class='notice'>You tear open [src], dropping the contents onto the floor.</span>")
playsound(loc, 'sound/items/poster_ripped.ogg', 50, 1)
@@ -458,7 +458,7 @@
user.unEquip(src)
qdel(src)
/obj/item/shippingPackage/update_desc()
/obj/item/shipping_package/update_desc()
. = ..()
desc = "A pre-labeled package for shipping an item to coworkers."
if(sortTag)
@@ -466,6 +466,6 @@
if(!sealed)
desc += " The package is not sealed."
/obj/item/shippingPackage/Destroy()
/obj/item/shipping_package/Destroy()
QDEL_NULL(wrapped)
return ..()
@@ -9,7 +9,7 @@
req_tech = list("programming" = 5, "materials" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
build_path = /obj/item/aiModule/freeform
build_path = /obj/item/ai_module/freeform
category = list("AI Modules")
/datum/design/onecrewmember_module
@@ -19,7 +19,7 @@
req_tech = list("programming" = 6, "materials" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
build_path = /obj/item/aiModule/oneCrewMember
build_path = /obj/item/ai_module/one_crew_member
category = list("AI Modules")
/datum/design/oxygen_module
@@ -29,7 +29,7 @@
req_tech = list("programming" = 4, "biotech" = 2, "materials" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
build_path = /obj/item/aiModule/oxygen
build_path = /obj/item/ai_module/oxygen
category = list("AI Modules")
/datum/design/protectstation_module
@@ -39,7 +39,7 @@
req_tech = list("programming" = 5, "materials" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
build_path = /obj/item/aiModule/protectStation
build_path = /obj/item/ai_module/protect_station
category = list("AI Modules")
/datum/design/purge_module
@@ -49,7 +49,7 @@
req_tech = list("programming" = 5, "materials" = 6)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
build_path = /obj/item/aiModule/purge
build_path = /obj/item/ai_module/purge
category = list("AI Modules")
/datum/design/quarantine_module
@@ -59,7 +59,7 @@
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
build_path = /obj/item/aiModule/quarantine
build_path = /obj/item/ai_module/quarantine
category = list("AI Modules")
/datum/design/reset_module
@@ -69,7 +69,7 @@
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
build_path = /obj/item/aiModule/reset
build_path = /obj/item/ai_module/reset
category = list("AI Modules")
/datum/design/safeguard_module
@@ -79,7 +79,7 @@
req_tech = list("programming" = 3, "materials" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
build_path = /obj/item/aiModule/safeguard
build_path = /obj/item/ai_module/safeguard
category = list("AI Modules")
/datum/design/antimov_module
@@ -89,7 +89,7 @@
req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
build_path = /obj/item/aiModule/antimov
build_path = /obj/item/ai_module/antimov
category = list("AI Modules")
/datum/design/pranksimov_module
@@ -99,7 +99,7 @@
req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_BANANIUM = 100)
build_path = /obj/item/aiModule/pranksimov
build_path = /obj/item/ai_module/pranksimov
category = list("AI Modules")
/datum/design/asimov
@@ -109,7 +109,7 @@
req_tech = list("programming" = 3, "materials" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
build_path = /obj/item/aiModule/asimov
build_path = /obj/item/ai_module/asimov
category = list("AI Modules")
/datum/design/corporate_module
@@ -119,7 +119,7 @@
req_tech = list("programming" = 5, "materials" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
build_path = /obj/item/aiModule/corp
build_path = /obj/item/ai_module/corp
category = list("AI Modules")
/datum/design/crewsimov
@@ -129,7 +129,7 @@
req_tech = list("programming" = 3, "materials" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
build_path = /obj/item/aiModule/crewsimov
build_path = /obj/item/ai_module/crewsimov
category = list("AI Modules")
/datum/design/freeformcore_module
@@ -139,7 +139,7 @@
req_tech = list("programming" = 6, "materials" = 6)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
build_path = /obj/item/aiModule/freeformcore
build_path = /obj/item/ai_module/freeformcore
category = list("AI Modules")
/datum/design/paladin_module
@@ -149,7 +149,7 @@
req_tech = list("programming" = 5, "materials" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
build_path = /obj/item/aiModule/paladin
build_path = /obj/item/ai_module/paladin
category = list("AI Modules")
/datum/design/tyrant_module
@@ -159,5 +159,5 @@
req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
build_path = /obj/item/aiModule/tyrant
build_path = /obj/item/ai_module/tyrant
category = list("AI Modules")
@@ -404,7 +404,7 @@
id = "fixovein"
build_type = AUTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 3000)
build_path = /obj/item/FixOVein
build_path = /obj/item/fix_o_vein
category = list("initial", "Medical")
/datum/design/bonegel
@@ -878,7 +878,7 @@
id = "desttagger"
build_type = AUTOLATHE
materials = list(MAT_METAL = 250, MAT_GLASS = 150)
build_path = /obj/item/destTagger
build_path = /obj/item/dest_tagger
category = list("initial", "Electronics")
/datum/design/handlabeler
@@ -300,7 +300,7 @@
desc = "An advanced FixOVein obtained through Abductor technology."
id = "alien_fixovein"
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/FixOVein/alien
build_path = /obj/item/fix_o_vein/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical")
@@ -230,7 +230,7 @@
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/RPED
/datum/design/rped
name = "Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
id = "rped"
@@ -240,7 +240,7 @@
build_path = /obj/item/storage/part_replacer
category = list("Stock Parts")
/datum/design/BS_RPED
/datum/design/bs_rped
name = "Bluespace RPED"
desc = "Powered by bluespace technology, this RPED variant can upgrade buildings from a distance, without needing to remove the panel first."
id = "bs_rped"
+2 -2
View File
@@ -482,7 +482,7 @@
if(globalMalf > 16 && globalMalf < 35)
visible_message("<span class='warning'>[src] melts [exp_on], ian-izing the air around it!</span>")
throwSmoke(loc)
var/mob/living/tracked_ian = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_living_list
var/mob/living/tracked_ian = locate(/mob/living/simple_animal/pet/dog/corgi/ian) in GLOB.mob_living_list
if(tracked_ian)
throwSmoke(tracked_ian.loc)
tracked_ian.loc = loc
@@ -496,7 +496,7 @@
if(globalMalf > 36 && globalMalf < 59)
visible_message("<span class='warning'>[src] encounters a run-time error!</span>")
throwSmoke(loc)
var/mob/living/tracked_runtime = locate(/mob/living/simple_animal/pet/cat/Runtime) in GLOB.mob_living_list
var/mob/living/tracked_runtime = locate(/mob/living/simple_animal/pet/cat/runtime) in GLOB.mob_living_list
if(tracked_runtime)
throwSmoke(tracked_runtime.loc)
tracked_runtime.loc = loc
@@ -1,5 +1,5 @@
//Xenobio control console
/mob/camera/aiEye/remote/xenobio
/mob/camera/ai_eye/remote/xenobio
visible_icon = 1
icon = 'icons/obj/abductor.dmi'
icon_state = "camera_target"
@@ -8,12 +8,12 @@
/// Area that the xenobio camera eye is allowed to travel
var/allowed_area = null
/mob/camera/aiEye/remote/xenobio/Initialize(mapload)
/mob/camera/ai_eye/remote/xenobio/Initialize(mapload)
. = ..()
var/area/A = get_area(loc)
allowed_area = A.name
/mob/camera/aiEye/remote/xenobio/setLoc(t)
/mob/camera/ai_eye/remote/xenobio/setLoc(t)
var/area/new_area = get_area(t)
if(!new_area)
return
@@ -80,7 +80,7 @@
return ..()
/obj/machinery/computer/camera_advanced/xenobio/CreateEye()
eyeobj = new /mob/camera/aiEye/remote/xenobio(get_turf(src))
eyeobj = new /mob/camera/ai_eye/remote/xenobio(get_turf(src))
eyeobj.origin = src
eyeobj.visible_icon = TRUE
eyeobj.acceleration = FALSE
@@ -223,7 +223,7 @@
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = target
if(iswallturf(remote_eye.loc))
@@ -243,7 +243,7 @@
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = target
if(GLOB.cameranet.checkTurfVis(remote_eye.loc))
@@ -265,7 +265,7 @@
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = target
var/obj/machinery/monkey_recycler/recycler = X.connected_recycler
@@ -309,7 +309,7 @@
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = target
var/obj/machinery/monkey_recycler/recycler = X.connected_recycler
@@ -334,7 +334,7 @@
if(!target || !isliving(owner))
return
var/mob/living/C = owner
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/remote_eye = C.remote_control
if(GLOB.cameranet.checkTurfVis(remote_eye.loc))
for(var/mob/living/simple_animal/slime/S in remote_eye.loc)
@@ -351,7 +351,7 @@
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = target
if(QDELETED(X.current_potion))
@@ -420,7 +420,7 @@
to_chat(user, "<span class='warning'>Target is not near a camera. Cannot proceed.</span>")
return
var/mob/living/C = user
var/mob/camera/aiEye/remote/xenobio/E = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/E = C.remote_control
var/area/mobarea = get_area(S.loc)
if(mobarea.name == E.allowed_area || mobarea.xenobiology_compatible)
slime_scan(S, C)
@@ -431,7 +431,7 @@
to_chat(user, "<span class='warning'>Target is not near a camera. Cannot proceed.</span>")
return
var/mob/living/C = user
var/mob/camera/aiEye/remote/xenobio/E = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/E = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin
var/area/mobarea = get_area(S.loc)
if(!X.current_potion)
@@ -446,7 +446,7 @@
to_chat(user, "<span class='warning'>Target is not near a camera. Cannot proceed.</span>")
return
var/mob/living/C = user
var/mob/camera/aiEye/remote/xenobio/E = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/E = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin
var/area/mobarea = get_area(S.loc)
if(mobarea.name == E.allowed_area || mobarea.xenobiology_compatible)
@@ -467,7 +467,7 @@
to_chat(user, "<span class='warning'>Target is not near a camera. Cannot proceed.</span>")
return
var/mob/living/C = user
var/mob/camera/aiEye/remote/xenobio/E = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/E = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin
var/area/turfarea = get_area(T)
if(iswallturf(T))
@@ -483,7 +483,7 @@
to_chat(user, "<span class='warning'>Target is not near a camera. Cannot proceed.</span>")
return
var/mob/living/C = user
var/mob/camera/aiEye/remote/xenobio/E = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/E = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin
var/obj/machinery/monkey_recycler/recycler = X.connected_recycler
var/area/turfarea = get_area(T)
@@ -517,7 +517,7 @@
to_chat(user, "<span class='warning'>Target is not near a camera. Cannot proceed.</span>")
return
var/mob/living/C = user
var/mob/camera/aiEye/remote/xenobio/E = C.remote_control
var/mob/camera/ai_eye/remote/xenobio/E = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = E.origin
var/area/mobarea = get_area(M.loc)
var/obj/machinery/monkey_recycler/recycler = X.connected_recycler
+1 -1
View File
@@ -140,7 +140,7 @@
return FALSE //If you put an AI that isn't malf in it I'm shooting you
if(interaction == AI_TRANS_TO_CARD) //No patrick you can't card the AI out of the computer.
return
AI.linked_core = new /obj/structure/AIcore/deactivated(AI.loc)
AI.linked_core = new /obj/structure/ai_core/deactivated(AI.loc)
ai_enter_emergency_computer(AI)
/obj/machinery/computer/emergency_shuttle/proc/ai_enter_emergency_computer(mob/living/silicon/ai/AI)
+14 -14
View File
@@ -55,8 +55,8 @@
shuttle_port = null
return
eyeobj = new /mob/camera/aiEye/remote/shuttle_docker(get_turf(locate("landmark*Observer-Start")), src) // There should always be an observer start landmark
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
eyeobj = new /mob/camera/ai_eye/remote/shuttle_docker(get_turf(locate("landmark*Observer-Start")), src) // There should always be an observer start landmark
var/mob/camera/ai_eye/remote/shuttle_docker/the_eye = eyeobj
the_eye.setDir(shuttle_port.dir)
var/turf/origin = locate(shuttle_port.x + x_offset, shuttle_port.y + y_offset, shuttle_port.z)
for(var/V in shuttle_port.shuttle_areas)
@@ -76,7 +76,7 @@
/obj/machinery/computer/camera_advanced/shuttle_docker/give_eye_control(mob/user)
..()
if(!QDELETED(user) && user.client)
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
var/mob/camera/ai_eye/remote/shuttle_docker/the_eye = eyeobj
var/list/to_add = list()
to_add += the_eye.placement_images
to_add += the_eye.placed_images
@@ -89,7 +89,7 @@
/obj/machinery/computer/camera_advanced/shuttle_docker/remove_eye_control(mob/living/user)
..()
if(!QDELETED(user) && user.client)
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
var/mob/camera/ai_eye/remote/shuttle_docker/the_eye = eyeobj
var/list/to_remove = list()
to_remove += the_eye.placement_images
to_remove += the_eye.placed_images
@@ -103,7 +103,7 @@
if(designating_target_loc || !current_user)
return
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
var/mob/camera/ai_eye/remote/shuttle_docker/the_eye = eyeobj
var/landing_clear = checkLandingSpot()
if(designate_time && (landing_clear != SHUTTLE_DOCKER_BLOCKED))
to_chat(current_user, "<span class='warning'>Targeting transit location, please wait [DisplayTimeText(designate_time)]...</span>")
@@ -162,7 +162,7 @@
return TRUE
/obj/machinery/computer/camera_advanced/shuttle_docker/proc/rotateLandingSpot()
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
var/mob/camera/ai_eye/remote/shuttle_docker/the_eye = eyeobj
var/list/image_cache = the_eye.placement_images
the_eye.setDir(turn(the_eye.dir, -90))
for(var/i in 1 to length(image_cache))
@@ -178,7 +178,7 @@
checkLandingSpot()
/obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingSpot()
var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj
var/mob/camera/ai_eye/remote/shuttle_docker/the_eye = eyeobj
var/turf/eyeturf = get_turf(the_eye)
if(!eyeturf)
return SHUTTLE_DOCKER_BLOCKED
@@ -253,7 +253,7 @@
if(dock)
jumpto_ports[dock.id] = TRUE
/mob/camera/aiEye/remote/shuttle_docker
/mob/camera/ai_eye/remote/shuttle_docker
visible_icon = FALSE
use_static = FALSE
simulated = FALSE
@@ -262,11 +262,11 @@
var/list/placement_images = list()
var/list/placed_images = list()
/mob/camera/aiEye/remote/shuttle_docker/Initialize(mapload, obj/machinery/computer/camera_advanced/origin)
/mob/camera/ai_eye/remote/shuttle_docker/Initialize(mapload, obj/machinery/computer/camera_advanced/origin)
src.origin = origin
return ..()
/mob/camera/aiEye/remote/shuttle_docker/setLoc(T)
/mob/camera/ai_eye/remote/shuttle_docker/setLoc(T)
if(isspaceturf(get_turf(T)) || isspacearea(get_area(T)) || istype(get_area(T), /area/shuttle))
..()
var/obj/machinery/computer/camera_advanced/shuttle_docker/console = origin
@@ -275,7 +275,7 @@
else
return
/mob/camera/aiEye/remote/shuttle_docker/update_remote_sight(mob/living/user)
/mob/camera/ai_eye/remote/shuttle_docker/update_remote_sight(mob/living/user)
user.sight = SEE_TURFS
..()
@@ -290,7 +290,7 @@
if(QDELETED(target) || !isliving(target))
return
var/mob/living/C = target
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
var/mob/camera/ai_eye/remote/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin
origin.rotateLandingSpot()
@@ -303,7 +303,7 @@
if(QDELETED(target) || !isliving(target))
return
var/mob/living/C = target
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
var/mob/camera/ai_eye/remote/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin
origin.placeLandingSpot(target)
@@ -315,7 +315,7 @@
if(QDELETED(target) || !isliving(target))
return
var/mob/living/C = target
var/mob/camera/aiEye/remote/remote_eye = C.remote_control
var/mob/camera/ai_eye/remote/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/shuttle_docker/console = remote_eye.origin
playsound(console, 'sound/machines/terminal_prompt_deny.ogg', 25, 0)
+1 -1
View File
@@ -70,7 +70,7 @@
/obj/item/clothing/head/collectable/rabbitears,
/obj/item/clothing/head/collectable/wizard,
/obj/item/clothing/head/collectable/hardhat,
/obj/item/clothing/head/collectable/HoS,
/obj/item/clothing/head/collectable/hos,
/obj/item/clothing/head/collectable/thunderdome,
/obj/item/clothing/head/collectable/swat,
/obj/item/clothing/head/collectable/slime,
@@ -156,7 +156,7 @@
cost = 100
containername = "collector crate"
/datum/supply_packs/engineering/engine/PA
/datum/supply_packs/engineering/engine/particle_accelerator
name = "Particle Accelerator Crate"
contains = list(/obj/structure/particle_accelerator/fuel_chamber,
/obj/machinery/particle_accelerator/control_box,
@@ -129,12 +129,12 @@
name = "Blood Pack Variety Crate"
contains = list(/obj/item/reagent_containers/iv_bag,
/obj/item/reagent_containers/iv_bag,
/obj/item/reagent_containers/iv_bag/blood/APlus,
/obj/item/reagent_containers/iv_bag/blood/AMinus,
/obj/item/reagent_containers/iv_bag/blood/BPlus,
/obj/item/reagent_containers/iv_bag/blood/BMinus,
/obj/item/reagent_containers/iv_bag/blood/OPlus,
/obj/item/reagent_containers/iv_bag/blood/OMinus,
/obj/item/reagent_containers/iv_bag/blood/a_plus,
/obj/item/reagent_containers/iv_bag/blood/a_minus,
/obj/item/reagent_containers/iv_bag/blood/b_plus,
/obj/item/reagent_containers/iv_bag/blood/b_minus,
/obj/item/reagent_containers/iv_bag/blood/o_plus,
/obj/item/reagent_containers/iv_bag/blood/o_minus,
/obj/item/reagent_containers/iv_bag/slime,
/obj/item/reagent_containers/iv_bag/blood/vox,
/obj/machinery/iv_drip)
@@ -148,7 +148,7 @@
/obj/item/surgicaldrill,
/obj/item/clothing/mask/breath/medical,
/obj/item/tank/internals/anesthetic,
/obj/item/FixOVein,
/obj/item/fix_o_vein,
/obj/item/hemostat,
/obj/item/scalpel,
/obj/item/bonegel,
@@ -126,7 +126,7 @@
/obj/item/camera_film,
/obj/item/camera_film,
/obj/item/storage/photo_album,
/obj/item/stack/packageWrap,
/obj/item/stack/package_wrap,
/obj/item/reagent_containers/glass/paint/red,
/obj/item/reagent_containers/glass/paint/green,
/obj/item/reagent_containers/glass/paint/blue,
@@ -331,7 +331,7 @@
/obj/item/clothing/head/collectable/rabbitears,
/obj/item/clothing/head/collectable/wizard,
/obj/item/clothing/head/collectable/hardhat,
/obj/item/clothing/head/collectable/HoS,
/obj/item/clothing/head/collectable/hos,
/obj/item/clothing/head/collectable/thunderdome,
/obj/item/clothing/head/collectable/swat,
/obj/item/clothing/head/collectable/slime,
+2 -2
View File
@@ -269,7 +269,7 @@
desc = "An alien surgical toolset, designed to be installed on the subject's arm."
icon_state = "toolkit_surgical"
origin_tech = "materials=5;engineering=5;plasmatech=5;powerstorage=4;abductor=2"
contents = newlist(/obj/item/retractor/alien, /obj/item/hemostat/alien, /obj/item/cautery/alien, /obj/item/bonesetter/alien, /obj/item/scalpel/alien, /obj/item/circular_saw/alien, /obj/item/bonegel/alien, /obj/item/FixOVein/alien, /obj/item/surgicaldrill/alien)
contents = newlist(/obj/item/retractor/alien, /obj/item/hemostat/alien, /obj/item/cautery/alien, /obj/item/bonesetter/alien, /obj/item/scalpel/alien, /obj/item/circular_saw/alien, /obj/item/bonegel/alien, /obj/item/fix_o_vein/alien, /obj/item/surgicaldrill/alien)
action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/abductor.dmi')
action_icon_state = list(/datum/action/item_action/organ_action/toggle = "belt")
@@ -335,7 +335,7 @@
name = "surgical toolset implant"
desc = "A set of surgical tools hidden behind a concealed panel on the user's arm."
icon_state = "toolkit_surgical"
contents = newlist(/obj/item/retractor/augment, /obj/item/hemostat/augment, /obj/item/cautery/augment, /obj/item/bonesetter/augment, /obj/item/scalpel/augment, /obj/item/circular_saw/augment, /obj/item/bonegel/augment, /obj/item/FixOVein/augment, /obj/item/surgicaldrill/augment)
contents = newlist(/obj/item/retractor/augment, /obj/item/hemostat/augment, /obj/item/cautery/augment, /obj/item/bonesetter/augment, /obj/item/scalpel/augment, /obj/item/circular_saw/augment, /obj/item/bonegel/augment, /obj/item/fix_o_vein/augment, /obj/item/surgicaldrill/augment)
origin_tech = "materials=3;engineering=3;biotech=3;programming=2;magnets=3"
action_icon = list(/datum/action/item_action/organ_action/toggle = 'icons/obj/storage.dmi')
action_icon_state = list(/datum/action/item_action/organ_action/toggle = "duffel-med")
+2 -2
View File
@@ -166,8 +166,8 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby"))
var/mob/living/carbon/human/H = L
if(H.check_ear_prot() >= HEARING_PROTECTION_TOTAL)
continue
if(istype(L, /mob/camera/aiEye))
var/mob/camera/aiEye/ai_eye = L
if(istype(L, /mob/camera/ai_eye))
var/mob/camera/ai_eye/ai_eye = L
if(ai_eye.relay_speech && ai_eye.ai)
listeners += ai_eye.ai
else
+3 -3
View File
@@ -273,7 +273,7 @@
/obj/item/bonegel/augment
toolspeed = 0.5
/obj/item/FixOVein
/obj/item/fix_o_vein
name = "FixOVein"
desc = "An advanced medical device which uses an array of manipulators to reconnect and repair ruptured blood vessels."
icon = 'icons/obj/surgery.dmi'
@@ -286,11 +286,11 @@
w_class = WEIGHT_CLASS_SMALL
tool_behaviour = TOOL_FIXOVEIN
/obj/item/FixOVein/Initialize(mapload)
/obj/item/fix_o_vein/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
/obj/item/FixOVein/augment
/obj/item/fix_o_vein/augment
toolspeed = 0.5
/obj/item/bonesetter
@@ -41,8 +41,8 @@
playsound(host, 'sound/machines/terminal_select.ogg', 15, TRUE)
. = TRUE
// Handle setting tags (and flushing for drones)
if(istype(host, /obj/item/destTagger))
var/obj/item/destTagger/O = host
if(istype(host, /obj/item/dest_tagger))
var/obj/item/dest_tagger/O = host
O.currTag = my_tag
else if(isrobot(host))
var/mob/living/silicon/robot/R = host