mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-23 05:07:51 +01:00
[MIRROR] Have you bingled that (#10545)
Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
co-authored by
Cameron Lennox
Kashargul
parent
057fffd669
commit
16a213f699
@@ -29,9 +29,9 @@
|
||||
switch(type)
|
||||
if("feet")
|
||||
if(!H.shoes)
|
||||
affecting = H.get_organ(pick("l_leg", "r_leg"))
|
||||
affecting = H.get_organ(pick(BP_L_LEG, BP_R_LEG))
|
||||
H.Weaken(3)
|
||||
if("l_hand", "r_hand")
|
||||
if(BP_L_HAND, BP_R_HAND)
|
||||
if(!H.gloves)
|
||||
affecting = H.get_organ(type)
|
||||
H.Stun(3)
|
||||
@@ -54,9 +54,9 @@
|
||||
to_chat(user, span_notice("You arm [src]."))
|
||||
else
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
var/which_hand = BP_L_HAND
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
which_hand = BP_R_HAND
|
||||
triggered(user, which_hand)
|
||||
user.visible_message(span_warning("[user] accidentally sets off [src], breaking their fingers."), \
|
||||
span_warning("You accidentally trigger [src]!"))
|
||||
@@ -70,9 +70,9 @@
|
||||
/obj/item/assembly/mousetrap/attack_hand(var/mob/living/user)
|
||||
if(armed)
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
var/which_hand = "l_hand"
|
||||
var/which_hand = BP_L_HAND
|
||||
if(!user.hand)
|
||||
which_hand = "r_hand"
|
||||
which_hand = BP_R_HAND
|
||||
triggered(user, which_hand)
|
||||
user.visible_message(span_warning("[user] accidentally sets off [src], breaking their fingers."), \
|
||||
span_warning("You accidentally trigger [src]!"))
|
||||
@@ -97,7 +97,7 @@
|
||||
if(armed)
|
||||
finder.visible_message(span_warning("[finder] accidentally sets off [src], breaking their fingers."), \
|
||||
span_warning("You accidentally trigger [src]!"))
|
||||
triggered(finder, finder.hand ? "l_hand" : "r_hand")
|
||||
triggered(finder, finder.hand ? BP_L_HAND : BP_R_HAND)
|
||||
return 1 //end the search!
|
||||
return 0
|
||||
|
||||
|
||||
@@ -351,7 +351,7 @@ GLOBAL_DATUM_INIT(catalogue_data, /datum/category_collection/catalogue, new)
|
||||
name = "TSC - Major Bill's Transportation"
|
||||
datum_to_copy = /datum/lore/organization/tsc/mbt
|
||||
|
||||
/datum/category_item/catalogue/information/organization/commonwealth //VS EDIT 1
|
||||
/datum/category_item/catalogue/information/organization/solgov //VS EDIT 1
|
||||
name = "Government - Commonwealth of Sol-Procyon" //VS EDIT 2
|
||||
datum_to_copy = /datum/lore/organization/gov/commonwealth //VS EDIT 3
|
||||
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
/datum/category_item/catalogue/information/organization/solgov
|
||||
name = "Government - Commonwealth of Sol-Procyon"
|
||||
|
||||
//TODO: VIRGO_LORE_WRITING_WIP - this whole file
|
||||
//CHOMPedits: basically every "desc" variable in this file.
|
||||
|
||||
|
||||
@@ -845,7 +845,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
|
||||
// Full prosthetic bodies without a brain are borderline unkillable so make sure they have a brain to remove/destroy.
|
||||
var/datum/species/current_species = GLOB.all_species[pref.species]
|
||||
if(!current_species.has_organ["brain"])
|
||||
if(!current_species.has_organ[O_BRAIN])
|
||||
limb_selection_list -= "Full Body"
|
||||
else if(pref.organ_data[BP_TORSO] == "cyborg")
|
||||
limb_selection_list |= "Head"
|
||||
@@ -990,7 +990,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
|
||||
if(pref.organ_data[BP_HEAD] != "cyborg")
|
||||
to_chat(user, span_warning("You may only select a cybernetic or synthetic brain if you have a full prosthetic body."))
|
||||
return
|
||||
organ = "brain"
|
||||
organ = O_BRAIN
|
||||
|
||||
var/datum/species/current_species = GLOB.all_species[pref.species]
|
||||
var/list/organ_choices = list("Normal")
|
||||
|
||||
@@ -167,11 +167,11 @@
|
||||
. += "<del>[rank]</del></td></a><td>" + span_bold(" \[WHITELIST ONLY]") + "</td></tr>"
|
||||
continue
|
||||
//VOREStation Add End
|
||||
if(job.is_species_banned(user.client.prefs.species, user.client.prefs.organ_data["brain"]) == TRUE)
|
||||
if(job.is_species_banned(user.client.prefs.species, user.client.prefs.organ_data[O_BRAIN]) == TRUE)
|
||||
. += "<del>[rank]</del></td></a><td> \[THIS RACE/BRAIN TYPE CANNOT TAKE THIS ROLE.\]</td></tr>"
|
||||
continue
|
||||
if((job.minimum_character_age || job.min_age_by_species) && user.client && (user.read_preference(/datum/preference/numeric/human/age) < job.get_min_age(user.client.prefs.species, user.client.prefs.organ_data["brain"])))
|
||||
. += "<del>[rank]</del></td></a><td> \[MINIMUM CHARACTER AGE FOR SELECTED RACE/BRAIN TYPE: [job.get_min_age(user.client.prefs.species, user.client.prefs.organ_data["brain"])]\]</td></tr>"
|
||||
if((job.minimum_character_age || job.min_age_by_species) && user.client && (user.read_preference(/datum/preference/numeric/human/age) < job.get_min_age(user.client.prefs.species, user.client.prefs.organ_data[O_BRAIN])))
|
||||
. += "<del>[rank]</del></td></a><td> \[MINIMUM CHARACTER AGE FOR SELECTED RACE/BRAIN TYPE: [job.get_min_age(user.client.prefs.species, user.client.prefs.organ_data[O_BRAIN])]\]</td></tr>"
|
||||
continue
|
||||
if((pref.job_civilian_low & ASSISTANT) && job.type != /datum/job/assistant)
|
||||
. += span_gray("[rank]") + "</a></td><td></td></tr>"
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
var/activate_string = "Activate"
|
||||
var/deactivate_string = "Deactivate"
|
||||
|
||||
var/list/stat_rig_module/stat_modules = new()
|
||||
var/list/stat_modules = new()
|
||||
|
||||
/obj/item/rig_module/examine()
|
||||
. = ..()
|
||||
@@ -129,11 +129,11 @@
|
||||
|
||||
charges = processed_charges
|
||||
|
||||
stat_modules += new/stat_rig_module/activate(src)
|
||||
stat_modules += new/stat_rig_module/deactivate(src)
|
||||
stat_modules += new/stat_rig_module/engage(src)
|
||||
stat_modules += new/stat_rig_module/select(src)
|
||||
stat_modules += new/stat_rig_module/charge(src)
|
||||
stat_modules += new/atom/movable/stat_rig_module/activate(src)
|
||||
stat_modules += new/atom/movable/stat_rig_module/deactivate(src)
|
||||
stat_modules += new/atom/movable/stat_rig_module/engage(src)
|
||||
stat_modules += new/atom/movable/stat_rig_module/select(src)
|
||||
stat_modules += new/atom/movable/stat_rig_module/charge(src)
|
||||
|
||||
/obj/item/rig_module/Destroy()
|
||||
holder.installed_modules -= src
|
||||
@@ -236,28 +236,27 @@
|
||||
/obj/item/rig_module/proc/accepts_item(var/obj/item/input_device)
|
||||
return 0
|
||||
|
||||
/stat_rig_module
|
||||
parent_type = /atom/movable
|
||||
/atom/movable/stat_rig_module
|
||||
var/module_mode = ""
|
||||
var/obj/item/rig_module/module
|
||||
|
||||
/stat_rig_module/Initialize(mapload)
|
||||
/atom/movable/stat_rig_module/Initialize(mapload)
|
||||
. = ..()
|
||||
module = loc
|
||||
if(!istype(module))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
/stat_rig_module/Destroy()
|
||||
/atom/movable/stat_rig_module/Destroy()
|
||||
module = null
|
||||
. = ..()
|
||||
|
||||
/stat_rig_module/proc/AddHref(var/list/href_list)
|
||||
/atom/movable/stat_rig_module/proc/AddHref(var/list/href_list)
|
||||
return
|
||||
|
||||
/stat_rig_module/proc/CanUse()
|
||||
/atom/movable/stat_rig_module/proc/CanUse()
|
||||
return 0
|
||||
|
||||
/stat_rig_module/Click()
|
||||
/atom/movable/stat_rig_module/Click()
|
||||
if(CanUse())
|
||||
switch(module_mode)
|
||||
if("select")
|
||||
@@ -276,10 +275,10 @@
|
||||
if("select_charge_type")
|
||||
module.charge_selected = module.charges[module.charges.Find(module.charge_selected)]
|
||||
|
||||
/stat_rig_module/DblClick()
|
||||
/atom/movable/stat_rig_module/DblClick()
|
||||
return Click()
|
||||
|
||||
/stat_rig_module/activate/Initialize(mapload)
|
||||
/atom/movable/stat_rig_module/activate/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!istype(module))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
@@ -288,10 +287,10 @@
|
||||
name += " ([module.active_power_cost*10]A)"
|
||||
module_mode = "activate"
|
||||
|
||||
/stat_rig_module/activate/CanUse()
|
||||
/atom/movable/stat_rig_module/activate/CanUse()
|
||||
return module.toggleable && !module.active
|
||||
|
||||
/stat_rig_module/deactivate/Initialize(mapload)
|
||||
/atom/movable/stat_rig_module/deactivate/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!istype(module))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
@@ -302,10 +301,10 @@
|
||||
|
||||
module_mode = "deactivate"
|
||||
|
||||
/stat_rig_module/deactivate/CanUse()
|
||||
/atom/movable/stat_rig_module/deactivate/CanUse()
|
||||
return module.toggleable && module.active
|
||||
|
||||
/stat_rig_module/engage/Initialize(mapload)
|
||||
/atom/movable/stat_rig_module/engage/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!istype(module))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
@@ -314,26 +313,26 @@
|
||||
name += " ([module.use_power_cost*10]E)"
|
||||
module_mode = "engage"
|
||||
|
||||
/stat_rig_module/engage/CanUse()
|
||||
/atom/movable/stat_rig_module/engage/CanUse()
|
||||
return module.usable
|
||||
|
||||
/stat_rig_module/select/Initialize(mapload)
|
||||
/atom/movable/stat_rig_module/select/Initialize(mapload)
|
||||
. = ..()
|
||||
name = "Select"
|
||||
module_mode = "select"
|
||||
|
||||
/stat_rig_module/select/CanUse()
|
||||
/atom/movable/stat_rig_module/select/CanUse()
|
||||
if(module.selectable)
|
||||
name = module.holder.selected_module == module ? "Selected" : "Select"
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/stat_rig_module/charge/Initialize(mapload)
|
||||
/atom/movable/stat_rig_module/charge/Initialize(mapload)
|
||||
. = ..()
|
||||
name = "Change Charge"
|
||||
module_mode = "select_charge_type"
|
||||
|
||||
/stat_rig_module/charge/AddHref(var/list/href_list)
|
||||
/atom/movable/stat_rig_module/charge/AddHref(var/list/href_list)
|
||||
var/charge_index = module.charges.Find(module.charge_selected)
|
||||
if(!charge_index)
|
||||
charge_index = 0
|
||||
@@ -342,7 +341,7 @@
|
||||
|
||||
href_list["charge_type"] = module.charges[charge_index]
|
||||
|
||||
/stat_rig_module/charge/CanUse()
|
||||
/atom/movable/stat_rig_module/charge/CanUse()
|
||||
if(module.charges && module.charges.len)
|
||||
var/datum/rig_charge/charge = module.charges[module.charge_selected]
|
||||
name = "[charge.display_name] ([charge.charges]C) - Change"
|
||||
|
||||
@@ -996,8 +996,8 @@
|
||||
return wearer.pulledby.relaymove(wearer, direction)
|
||||
else if(istype(wearer.buckled, /obj/structure/bed/chair/wheelchair))
|
||||
if(ishuman(wearer.buckled))
|
||||
var/obj/item/organ/external/l_hand = wearer.get_organ("l_hand")
|
||||
var/obj/item/organ/external/r_hand = wearer.get_organ("r_hand")
|
||||
var/obj/item/organ/external/l_hand = wearer.get_organ(BP_L_HAND)
|
||||
var/obj/item/organ/external/r_hand = wearer.get_organ(BP_R_HAND)
|
||||
if((!l_hand || (l_hand.status & ORGAN_DESTROYED)) && (!r_hand || (r_hand.status & ORGAN_DESTROYED)))
|
||||
return // No hands to drive your chair? Tough luck!
|
||||
wearer_move_delay += 2
|
||||
|
||||
@@ -94,13 +94,13 @@
|
||||
user.visible_message(span_danger("\The [user] tries to take prints from \the [H], but they move away."))
|
||||
return 1
|
||||
|
||||
if(user.zone_sel.selecting == "r_hand" || user.zone_sel.selecting == "l_hand")
|
||||
if(user.zone_sel.selecting == BP_R_HAND || user.zone_sel.selecting == BP_L_HAND)
|
||||
var/has_hand
|
||||
var/obj/item/organ/external/O = H.organs_by_name["r_hand"]
|
||||
var/obj/item/organ/external/O = H.organs_by_name[BP_R_HAND]
|
||||
if(istype(O) && !O.is_stump())
|
||||
has_hand = 1
|
||||
else
|
||||
O = H.organs_by_name["l_hand"]
|
||||
O = H.organs_by_name[BP_L_HAND]
|
||||
if(istype(O) && !O.is_stump())
|
||||
has_hand = 1
|
||||
if(!has_hand)
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
to_chat(user, span_notice("No fingerprints found on [M]"))
|
||||
flick("[icon_state]0",src)
|
||||
return 0
|
||||
else if(user.zone_sel.selecting == "r_hand" || user.zone_sel.selecting == "l_hand")
|
||||
else if(user.zone_sel.selecting == BP_R_HAND || user.zone_sel.selecting == BP_L_HAND)
|
||||
var/obj/item/sample/print/P = new /obj/item/sample/print(user.loc)
|
||||
P.attack(M, user)
|
||||
to_chat(user, span_notice("Done printing."))
|
||||
|
||||
@@ -112,3 +112,41 @@
|
||||
for(var/datum/money_account/D in all_money_accounts)
|
||||
if(D.account_number == account_number)
|
||||
return D
|
||||
|
||||
//Performing purchases by ID card
|
||||
/proc/purchase_with_id_card(obj/item/card/id/I, mob/M, var/purchase_title = "Company", var/purchase_terminal = "Terminal", var/purchase_desc = "Purchase of Something", var/price = 0)
|
||||
// Check if account can pay at all
|
||||
var/datum/money_account/customer_account = get_account(I.associated_account_number)
|
||||
if(!customer_account)
|
||||
to_chat(M, span_warning("Error: Unable to access account. Please contact technical support if problem persists."))
|
||||
return FALSE
|
||||
if(customer_account.suspended)
|
||||
to_chat(M, span_warning("Unable to access account: account suspended."))
|
||||
return FALSE
|
||||
// Have the customer punch in the PIN before checking if there's enough money. Prevents people from figuring out acct is
|
||||
// empty at high security levels
|
||||
if(customer_account.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2)
|
||||
var/attempt_pin = tgui_input_number(M, "Enter pin code", "Vendor transaction")
|
||||
customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2)
|
||||
if(!customer_account)
|
||||
to_chat(M, span_warning("Unable to access account: incorrect credentials."))
|
||||
return FALSE
|
||||
if(price > customer_account.money)
|
||||
to_chat(M, span_warning("Insufficient funds in account."))
|
||||
return FALSE
|
||||
// debit money from the purchaser's account
|
||||
customer_account.money -= price
|
||||
// create entry in the purchaser's account log
|
||||
var/datum/transaction/T = new()
|
||||
T.target_name = "[purchase_title] (via [purchase_terminal])"
|
||||
T.purpose = purchase_desc
|
||||
if(price > 0)
|
||||
T.amount = "([price])"
|
||||
else
|
||||
T.amount = "[price]"
|
||||
T.source_terminal = purchase_terminal
|
||||
T.date = current_date_string
|
||||
T.time = stationtime2text()
|
||||
// Okay to move the money at this point
|
||||
customer_account.transaction_log.Add(T)
|
||||
return TRUE
|
||||
|
||||
@@ -316,51 +316,12 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
/obj/machinery/vending/proc/pay_with_card(obj/item/card/id/I, mob/M)
|
||||
visible_message(span_info("[M] swipes a card through [src]."))
|
||||
playsound(src, 'sound/machines/id_swipe.ogg', 50, 1)
|
||||
|
||||
var/datum/money_account/customer_account = get_account(I.associated_account_number)
|
||||
if(!customer_account)
|
||||
to_chat(M, span_warning("Error: Unable to access account. Please contact technical support if problem persists."))
|
||||
if(!purchase_with_id_card(I, M, vendor_account.owner_name, name, "Purchase of [currently_vending.item_name]", currently_vending.price))
|
||||
return FALSE
|
||||
|
||||
if(customer_account.suspended)
|
||||
to_chat(M, span_warning("Unable to access account: account suspended."))
|
||||
return FALSE
|
||||
|
||||
// Have the customer punch in the PIN before checking if there's enough money. Prevents people from figuring out acct is
|
||||
// empty at high security levels
|
||||
if(customer_account.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2)
|
||||
var/attempt_pin = tgui_input_number(M, "Enter pin code", "Vendor transaction")
|
||||
customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2)
|
||||
|
||||
if(!customer_account)
|
||||
to_chat(M, span_warning("Unable to access account: incorrect credentials."))
|
||||
return FALSE
|
||||
|
||||
if(currently_vending.price > customer_account.money)
|
||||
to_chat(M, span_warning("Insufficient funds in account."))
|
||||
return FALSE
|
||||
|
||||
// Okay to move the money at this point
|
||||
|
||||
// debit money from the purchaser's account
|
||||
customer_account.money -= currently_vending.price
|
||||
|
||||
// create entry in the purchaser's account log
|
||||
var/datum/transaction/T = new()
|
||||
T.target_name = "[vendor_account.owner_name] (via [name])"
|
||||
T.purpose = "Purchase of [currently_vending.item_name]"
|
||||
if(currently_vending.price > 0)
|
||||
T.amount = "([currently_vending.price])"
|
||||
else
|
||||
T.amount = "[currently_vending.price]"
|
||||
T.source_terminal = name
|
||||
T.date = current_date_string
|
||||
T.time = stationtime2text()
|
||||
customer_account.transaction_log.Add(T)
|
||||
|
||||
// Give the vendor the money. We use the account owner name, which means
|
||||
// that purchases made with stolen/borrowed card will look like the card
|
||||
// owner made them
|
||||
var/datum/money_account/customer_account = get_account(I.associated_account_number)
|
||||
credit_purchase(customer_account.owner_name)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -902,6 +902,7 @@
|
||||
reagents.add_reagent(REAGENT_ID_POISONBERRYJUICE, 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/donut/plain/jelly/slimejelly
|
||||
name = "slime jelly donut"
|
||||
filling_color = "#ED1169"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/donut/plain/jelly/slimejelly/Initialize(mapload)
|
||||
@@ -909,6 +910,7 @@
|
||||
reagents.add_reagent(REAGENT_ID_SLIMEJELLY, 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly
|
||||
name = "cherry jelly donut"
|
||||
filling_color = "#ED1169"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/donut/plain/jelly/cherryjelly/Initialize(mapload)
|
||||
@@ -1557,6 +1559,7 @@
|
||||
nutriment_desc = list("sweetness" = 2, "pie" = 3)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/ber
|
||||
/obj/item/reagent_containers/food/snacks/berryclafoutis/berry/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(REAGENT_ID_BERRYJUICE, 5)
|
||||
@@ -2223,6 +2226,12 @@
|
||||
nutriment_desc = list("toasted bread" = 2)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jelliedtoast/cherry
|
||||
name = "Cherry Jellied Toast"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jelliedtoast/slime
|
||||
name = "Slime Jellied Toast"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jelliedtoast/cherry/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(REAGENT_ID_CHERRYJELLY, 5)
|
||||
@@ -2264,6 +2273,12 @@
|
||||
nutriment_desc = list("buns" = 5)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jellyburger/slime
|
||||
name = "Slime Jelly Burger"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jellyburger/cherry
|
||||
name = "Cherry Jelly Burger"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jellyburger/slime/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(REAGENT_ID_SLIMEJELLY, 5)
|
||||
@@ -2521,6 +2536,15 @@
|
||||
nutriment_desc = list("bread" = 2)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jellysandwich/slime
|
||||
name = "Slime Jelly Sandwich"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jellysandwich/slime
|
||||
name = "Cherry Jelly Sandwich"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jellysandwich/peanutbutter
|
||||
name = "Peanut Butter Jelly Sandwich"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/jellysandwich/slime/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent(REAGENT_ID_SLIMEJELLY, 5)
|
||||
@@ -3755,11 +3779,13 @@
|
||||
trash = /obj/item/trash/plate
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/gigapuddi/happy
|
||||
name = "Astro-Pudding (Happy)"
|
||||
desc = "A crème caramel of astronomical size, made with extra love."
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "happypuddi"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/gigapuddi/anger
|
||||
name = "Astro-Pudding (Angry)"
|
||||
desc = "A crème caramel of astronomical size, made with extra hate."
|
||||
icon_state = "angerpuddi"
|
||||
|
||||
@@ -4088,7 +4114,7 @@
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizzacrunchslice
|
||||
name = "pizza crunch"
|
||||
name = "pizza crunch slice"
|
||||
desc = "A little piece of a heart attack. It's toppings are a mystery, hidden under batter"
|
||||
icon_state = "pizzacrunchslice"
|
||||
filling_color = "#BAA14C"
|
||||
@@ -4603,8 +4629,8 @@
|
||||
reagents.add_reagent(REAGENT_ID_SUGAR, 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/roastedsunflower
|
||||
name = "sunflower seeds"
|
||||
desc = "Sunflower seeds!"
|
||||
name = "roasted sunflower seeds"
|
||||
desc = "Roasted sunflower seeds!"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "sunflowerseed"
|
||||
bitesize = 1
|
||||
@@ -6492,10 +6518,12 @@
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/omurice/heart
|
||||
name = "omelette rice (Love)"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "omuriceheart"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/omurice/face
|
||||
name = "omelette rice (Cute)"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "omuriceface"
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/slice/sushi/filled
|
||||
name = "stuffed sushi roll"
|
||||
name = "piece of sushi"
|
||||
desc = "A slice of a larger sushi roll, ready to devour."
|
||||
icon = 'icons/obj/food_vr.dmi'
|
||||
@@ -649,7 +650,7 @@
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grub_purple
|
||||
name = "pink candy grub"
|
||||
name = "purple candy grub"
|
||||
desc = "A thoroughly candied grub, it smells of grape."
|
||||
icon = 'icons/obj/food_vr.dmi'
|
||||
icon_state = "grub_purple"
|
||||
@@ -661,7 +662,7 @@
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grub_blue
|
||||
name = "pink candy grub"
|
||||
name = "blue candy grub"
|
||||
desc = "A thoroughly candied grub, it smells of blueberry."
|
||||
icon = 'icons/obj/food_vr.dmi'
|
||||
icon_state = "grub_blue"
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/meat/
|
||||
)
|
||||
result = /obj/structure/chaoscake
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layertwo
|
||||
reagents = list(REAGENT_ID_FLOUR = 30, REAGENT_ID_MILK = 20, REAGENT_ID_SUGAR = 10, REAGENT_ID_EGG = 9, )
|
||||
@@ -21,6 +22,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/chaoscake_layer
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layerthree
|
||||
reagents = list(REAGENT_ID_FLOUR = 25, REAGENT_ID_MILK = 15, REAGENT_ID_SUGAR = 10, REAGENT_ID_EGG = 6, REAGENT_ID_DEATHBELL = 10)
|
||||
@@ -31,6 +33,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/three
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layerfour
|
||||
reagents = list(REAGENT_ID_FLOUR = 25, REAGENT_ID_MILK = 15, REAGENT_ID_SUGAR = 10, REAGENT_ID_EGG = 6, REAGENT_ID_MILKSHAKE = 30)
|
||||
@@ -41,12 +44,14 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/four
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layerfive
|
||||
reagents = list(REAGENT_ID_FLOUR = 20, REAGENT_ID_MILK = 10, REAGENT_ID_SUGAR = 10, REAGENT_ID_EGG = 6, REAGENT_ID_BLOOD = 30)
|
||||
fruit = list(PLANT_TOMATO = 2)
|
||||
items = list() //supposed to be made with lobster, still has to be ported.
|
||||
result = /obj/item/chaoscake_layer/five
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layersix
|
||||
reagents = list(REAGENT_ID_FLOUR = 20, REAGENT_ID_MILK = 10, REAGENT_ID_SUGAR = 10, REAGENT_ID_EGG = 6, REAGENT_ID_SPRINKLES = 5)
|
||||
@@ -60,6 +65,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/six
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layerseven
|
||||
reagents = list(REAGENT_ID_FLOUR = 15, REAGENT_ID_MILK = 10, REAGENT_ID_SUGAR = 5, REAGENT_ID_EGG = 3, REAGENT_ID_DEVILSKISS = 20)
|
||||
@@ -70,6 +76,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/seven
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layereight
|
||||
reagents = list(REAGENT_ID_FLOUR = 15, REAGENT_ID_MILK = 10, REAGENT_ID_SUGAR = 5, REAGENT_ID_EGG = 3, REAGENT_ID_CREAM = 20)
|
||||
@@ -80,12 +87,14 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/eight
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layernine
|
||||
reagents = list(REAGENT_ID_WATER = 10, REAGENT_ID_BLOOD = 10)
|
||||
fruit = list(PLANT_GOLDAPPLE = 1)
|
||||
items = list()
|
||||
result = /obj/item/chaoscake_layer/nine
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/obj/structure/chaoscake
|
||||
name = "An unfinished cake"
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
/obj/item/stack/material/diamond
|
||||
)
|
||||
result = /obj/item/thecake_layer
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/thecake_thirdlayer
|
||||
reagents = list(REAGENT_ID_FLOUR = 300, REAGENT_ID_SINGULO = 300, REAGENT_ID_ATOMICBOMB = 150, REAGENT_ID_THREEMILEISLAND = 150, REAGENT_ID_MANHATTANPROJ = 100)
|
||||
@@ -66,6 +67,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/carpmeat
|
||||
)
|
||||
result = /obj/item/thecake_layer/three
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/thecake_fourthlayer
|
||||
reagents = list(REAGENT_ID_FLOUR = 400, REAGENT_ID_HOLYMARY = 100, REAGENT_ID_ANGELSKISS = 100, REAGENT_ID_GOLDSCHLAGER = 100, REAGENT_ID_GOLD = 300)
|
||||
@@ -88,6 +90,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/appletart
|
||||
)
|
||||
result = /obj/item/thecake_layer/four
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/thecake_fifthlayer
|
||||
reagents = list(REAGENT_ID_DEATHBELL = 1000)
|
||||
@@ -110,6 +113,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/xenomeat
|
||||
)
|
||||
result = /obj/item/thecake_layer/five
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/obj/structure/thecake/proc/HasSliceMissing()
|
||||
if(slices < maxslices)
|
||||
@@ -248,6 +252,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/chaoscake_layer
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layerthree
|
||||
reagents = list(REAGENT_ID_FLOUR = 240, REAGENT_ID_MILK = 150, REAGENT_ID_SUGAR = 80, REAGENT_ID_EGG = 24, REAGENT_ID_DEATHBELL = 100)
|
||||
@@ -258,6 +263,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/three
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layerfour
|
||||
reagents = list(REAGENT_ID_FLOUR = 240, REAGENT_ID_MILK = 150, REAGENT_ID_SUGAR = 80, REAGENT_ID_EGG = 24, REAGENT_ID_MILKSHAKE = 300)
|
||||
@@ -268,6 +274,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/four
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layerfive
|
||||
reagents = list(REAGENT_ID_FLOUR = 180, REAGENT_ID_MILK = 100, REAGENT_ID_SUGAR = 60, REAGENT_ID_EGG = 18, REAGENT_ID_BLOOD = 300)
|
||||
@@ -279,6 +286,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/lobster
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/five
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layersix
|
||||
reagents = list(REAGENT_ID_FLOUR = 180, REAGENT_ID_MILK = 100, REAGENT_ID_SUGAR = 60, REAGENT_ID_EGG = 18, REAGENT_ID_SPRINKLES = 10)
|
||||
@@ -292,6 +300,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/six
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layerseven
|
||||
reagents = list(REAGENT_ID_FLOUR = 120, REAGENT_ID_MILK = 50, REAGENT_ID_SUGAR = 40, REAGENT_ID_EGG = 12, REAGENT_ID_DEVILSKISS = 200)
|
||||
@@ -302,6 +311,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/seven
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layereight
|
||||
reagents = list(REAGENT_ID_FLOUR = 120, REAGENT_ID_MILK = 50, REAGENT_ID_SUGAR = 40, REAGENT_ID_EGG = 12, REAGENT_ID_CREAM = 200)
|
||||
@@ -312,15 +322,17 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/chaoscake_layer/eight
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/chaoscake_layernine
|
||||
reagents = list(REAGENT_ID_WATER = 100, REAGENT_ID_BLOOD = 100)
|
||||
fruit = list(PLANT_GOLDAPPLE = 50)
|
||||
items = list()
|
||||
result = /obj/item/chaoscake_layer/nine
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/obj/structure/chaoscake
|
||||
name = "An unfinished cake"
|
||||
name = "An strange unfinished cake"
|
||||
desc = "A single layer of a strange cake, you can see the cherry paste ooze, but it feels very incomplete..."
|
||||
|
||||
icon = 'icons/obj/food64x64.dmi'
|
||||
|
||||
@@ -603,6 +603,7 @@
|
||||
/obj/item/holder
|
||||
)
|
||||
result = /obj/effect/decal/cleanable/blood/gibs
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/splat/before_cook(obj/container)
|
||||
if(istype(container, /obj/machinery/microwave))
|
||||
|
||||
@@ -62,6 +62,8 @@
|
||||
// This is a bitfield, more than one type can be used
|
||||
// Grill is presently unused and not listed
|
||||
|
||||
var/wiki_flag = 0
|
||||
|
||||
/datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents, var/exact = FALSE)
|
||||
if(!reagents || !reagents.len)
|
||||
return TRUE
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/pizza/crunch
|
||||
coating = /datum/reagent/nutriment/coating/batter
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/friedmushroom
|
||||
appliance = FRYER
|
||||
@@ -141,6 +142,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/donut/plain/jelly/poisonberry
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/jellydonut/slime // Subtypes of jellydonut, appliance inheritance applies.
|
||||
reagents = list(REAGENT_ID_SLIMEJELLY = 5, REAGENT_ID_SUGAR = 5)
|
||||
@@ -168,6 +170,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/donut/chaos
|
||||
result_quantity = 2
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/funnelcake
|
||||
appliance = FRYER
|
||||
|
||||
@@ -18,18 +18,6 @@
|
||||
)
|
||||
result = /obj/item/storage/box/wings //This is kinda like the donut box.
|
||||
|
||||
//CHOMP remove start
|
||||
/*/datum/recipe/chickenwings
|
||||
* appliance = FRYER
|
||||
* items = list(
|
||||
* /obj/item/reagent_containers/food/snacks/meat,
|
||||
* /obj/item/reagent_containers/food/snacks/meat,
|
||||
* /obj/item/reagent_containers/food/snacks/meat,
|
||||
* /obj/item/reagent_containers/food/snacks/meat
|
||||
* )
|
||||
* result = /obj/item/reagent_containers/food/snacks/generalschicken
|
||||
*CHOMP remove end */
|
||||
|
||||
/datum/recipe/locust
|
||||
appliance = FRYER
|
||||
reagents = list(REAGENT_ID_SODIUMCHLORIDE = 1)
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/bun
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/human/burger
|
||||
wiki_flag = WIKI_SPOILER // Alt recipie doesn't need to be shown(breaks tgui)
|
||||
|
||||
/datum/recipe/plainburger
|
||||
appliance = GRILL
|
||||
@@ -21,6 +22,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/meat/syntiflesh
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/monkeyburger
|
||||
wiki_flag = WIKI_SPOILER // Alt recipie doesn't need to be shown(breaks tgui)
|
||||
|
||||
/datum/recipe/brainburger
|
||||
appliance = GRILL
|
||||
@@ -102,6 +104,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/bun
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/bunbun
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/hotdog
|
||||
appliance = GRILL
|
||||
@@ -119,6 +122,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/meat/human,
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/human/kabob
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/kabob //Do not put before humankabob
|
||||
appliance = GRILL
|
||||
@@ -137,6 +141,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/meat/monkey
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/monkeykabob
|
||||
wiki_flag = WIKI_SPOILER // Alt recipie doesn't need to be shown(breaks tgui)
|
||||
|
||||
/datum/recipe/syntikabob
|
||||
appliance = GRILL
|
||||
@@ -146,6 +151,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/meat/syntiflesh
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/monkeykabob
|
||||
wiki_flag = WIKI_SPOILER // Alt recipie doesn't need to be shown(breaks tgui)
|
||||
|
||||
/datum/recipe/tofukabob
|
||||
appliance = GRILL
|
||||
@@ -163,6 +169,7 @@
|
||||
/obj/item/clothing/head/wizard/fake,
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/spellburger
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/spellburger
|
||||
appliance = GRILL
|
||||
|
||||
@@ -49,6 +49,7 @@ I said no!
|
||||
/obj/item/reagent_containers/food/snacks/meatball
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/donkpocket //SPECIAL
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/donkpocket/proc/warm_up(var/obj/item/reagent_containers/food/snacks/donkpocket/being_cooked)
|
||||
being_cooked.heat()
|
||||
@@ -111,6 +112,7 @@ I said no!
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/flatdough
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/berryclafoutis/poison
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/wingfangchu
|
||||
reagents = list(REAGENT_ID_SOYSAUCE = 5)
|
||||
@@ -480,6 +482,7 @@ I said no!
|
||||
/obj/item/reagent_containers/food/snacks/doughslice
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/donkpocket/dankpocket
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/validsalad/make_food(var/obj/container as obj)
|
||||
. = ..(container)
|
||||
@@ -546,6 +549,7 @@ I said no!
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/roastedsunflower
|
||||
result_quantity = 2
|
||||
wiki_flag = WIKI_SPOILER // Other recipies are other oils
|
||||
|
||||
/datum/recipe/roastedsunflowerseeds
|
||||
reagents = list(REAGENT_ID_SODIUMCHLORIDE = 1, REAGENT_ID_COOKINGOIL = 1)
|
||||
@@ -562,6 +566,7 @@ I said no!
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/roastedsunflower
|
||||
result_quantity = 2
|
||||
wiki_flag = WIKI_SPOILER // Other recipies are other oils
|
||||
|
||||
/datum/recipe/roastedpeanuts
|
||||
fruit = list(PLANT_PEANUT = 2)
|
||||
@@ -574,12 +579,14 @@ I said no!
|
||||
reagents = list(REAGENT_ID_SODIUMCHLORIDE = 2, REAGENT_ID_CORNOIL = 1)
|
||||
result = /obj/item/reagent_containers/food/snacks/roastedpeanuts
|
||||
result_quantity = 2
|
||||
wiki_flag = WIKI_SPOILER // other recipies are just other oils
|
||||
|
||||
/datum/recipe/roastedpeanutspeanut
|
||||
fruit = list(PLANT_PEANUT = 2)
|
||||
reagents = list(REAGENT_ID_SODIUMCHLORIDE = 2, REAGENT_ID_PEANUTOIL = 1)
|
||||
result = /obj/item/reagent_containers/food/snacks/roastedpeanuts
|
||||
result_quantity = 2
|
||||
wiki_flag = WIKI_SPOILER // other recipies are just other oils
|
||||
|
||||
/datum/recipe/mint
|
||||
reagents = list(REAGENT_ID_SUGAR = 5, REAGENT_ID_FROSTOIL = 5)
|
||||
@@ -630,6 +637,7 @@ I said no!
|
||||
fruit = list(PLANT_POISONBERRIES = 1)
|
||||
result = /obj/item/reagent_containers/food/snacks/berrymuffin/poison
|
||||
result_quantity = 2
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/ghostmuffin
|
||||
reagents = list(REAGENT_ID_MILK = 5, REAGENT_ID_SUGAR = 5)
|
||||
@@ -650,6 +658,7 @@ I said no!
|
||||
fruit = list(PLANT_POISONBERRIES = 1)
|
||||
result = /obj/item/reagent_containers/food/snacks/ghostmuffin/poison
|
||||
result_quantity = 2
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/recipe/eggroll
|
||||
reagents = list(REAGENT_ID_SOYSAUCE = 10)
|
||||
@@ -954,7 +963,6 @@ I said no!
|
||||
/obj/item/reagent_containers/food/snacks/meatball,
|
||||
/obj/item/reagent_containers/food/snacks/meatball
|
||||
)
|
||||
result
|
||||
result = /obj/item/reagent_containers/food/snacks/burrito_hell
|
||||
reagent_mix = RECIPE_REAGENT_REPLACE //Already hot sauce
|
||||
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/carpmeat
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/sushi
|
||||
wiki_flag = WIKI_SPOILER // Secretish? Just assume carp is fish anyway
|
||||
|
||||
/datum/recipe/lobster
|
||||
fruit = list(PLANT_LEMON = 1, PLANT_LETTUCE = 1)
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/carpmeat
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/zestfish
|
||||
wiki_flag = WIKI_SPOILER // secret if you know!
|
||||
|
||||
|
||||
//Predesigned breads
|
||||
@@ -166,6 +167,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/cheesewedge
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/meatbread
|
||||
wiki_flag = WIKI_SPOILER // Synthflesh secret
|
||||
|
||||
/datum/recipe/xenomeatbread
|
||||
appliance = OVEN
|
||||
@@ -400,6 +402,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/cheesewedge
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/pizza/meatpizza
|
||||
wiki_flag = WIKI_SPOILER // Synthflesh spoiler
|
||||
|
||||
/datum/recipe/mushroompizza
|
||||
appliance = OVEN
|
||||
|
||||
@@ -242,10 +242,10 @@
|
||||
if(!isanimal(user))
|
||||
if( !user.get_active_hand() ) //if active hand is empty
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
|
||||
var/obj/item/organ/external/temp = H.organs_by_name[BP_R_HAND]
|
||||
|
||||
if (H.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
temp = H.organs_by_name[BP_L_HAND]
|
||||
if(temp && !temp.is_usable())
|
||||
to_chat(user,span_notice("You try to move your [temp.name], but cannot!"))
|
||||
return
|
||||
@@ -261,10 +261,10 @@
|
||||
if(!isanimal(user))
|
||||
if( !user.get_active_hand() ) //if active hand is empty
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
|
||||
var/obj/item/organ/external/temp = H.organs_by_name[BP_R_HAND]
|
||||
|
||||
if (H.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
temp = H.organs_by_name[BP_L_HAND]
|
||||
if(temp && !temp.is_usable())
|
||||
to_chat(user,span_notice("You try to move your [temp.name], but cannot!"))
|
||||
return
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
if(!reagents || reagents.total_volume <= 0)
|
||||
return
|
||||
reagents.remove_any(rand(1,3)) //Todo, make it actually remove the reagents the seed uses.
|
||||
var/affected = pick("r_hand","l_hand")
|
||||
var/affected = pick(BP_R_HAND,BP_L_HAND)
|
||||
seed.do_thorns(H,src,affected)
|
||||
seed.do_sting(H,src,affected)
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
var/has_item_product // Item products. (Eggy)
|
||||
var/force_layer
|
||||
var/harvest_sound = null //Vorestation edit - sound the plant makes when harvested
|
||||
var/wiki_flag = 0
|
||||
|
||||
// Making the assumption anything in HYDRO-ponics is capable of processing water, and nutrients commonly associated with it, leaving us with the below to be tweaked.
|
||||
var/list/beneficial_reagents // Reagents considered uniquely 'beneficial' by a plant.
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
name = PLANT_POISONAPPLE
|
||||
mutants = null
|
||||
chems = list(REAGENT_ID_CYANIDE = list(1,5))
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/seed/apple/gold
|
||||
name = PLANT_GOLDAPPLE
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
if(istype(H) && H.shoes)
|
||||
return
|
||||
seed.do_thorns(victim,src)
|
||||
seed.do_sting(victim,src,pick("r_foot","l_foot","r_leg","l_leg"))
|
||||
seed.do_sting(victim,src,pick(BP_R_FOOT,BP_L_FOOT,BP_R_LEG,BP_L_LEG))
|
||||
|
||||
if(seed.get_trait(TRAIT_SPORING) && prob(round(seed.get_trait(TRAIT_POTENCY)/2)))
|
||||
seed.create_spores(get_turf(victim))
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
data["name"] = seed_name
|
||||
data["uid"] = uid
|
||||
data["endurance"] = get_trait(TRAIT_ENDURANCE)
|
||||
data["yield"] = get_trait(TRAIT_YIELD)
|
||||
data["crop_yield"] = get_trait(TRAIT_YIELD)
|
||||
data["maturation_time"] = get_trait(TRAIT_MATURATION)
|
||||
data["production_time"] = get_trait(TRAIT_PRODUCTION)
|
||||
data["potency"] = get_trait(TRAIT_POTENCY)
|
||||
|
||||
@@ -0,0 +1,241 @@
|
||||
/*
|
||||
* Library Public Computer
|
||||
* Complete recode of this into a search engine for recipes and reagents
|
||||
*/
|
||||
/obj/machinery/librarywikicomp
|
||||
name = "datacore computer"
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "computer"
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
|
||||
desc = "Used for research, I swear!"
|
||||
|
||||
VAR_PRIVATE/doc_title = "Click a search entry!"
|
||||
VAR_PRIVATE/doc_body = ""
|
||||
VAR_PRIVATE/searchmode = null
|
||||
VAR_PRIVATE/sub_category = null //sublists for food menu
|
||||
VAR_PRIVATE/crash = FALSE
|
||||
VAR_PRIVATE/just_donated = FALSE
|
||||
VAR_PRIVATE/datum/internal_wiki/page/P
|
||||
|
||||
/obj/machinery/librarywikicomp/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/librarywikicomp/attack_hand(mob/user)
|
||||
if(..())
|
||||
return 1
|
||||
if(crash)
|
||||
user.visible_message("[user] performs percussive maintenance on \the [src].", "You try to smack some sense into \the [src].")
|
||||
if(prob(10))
|
||||
crash = FALSE
|
||||
if(!crash)
|
||||
tgui_interact(user)
|
||||
playsound(src, "keyboard", 40) // into console
|
||||
|
||||
/obj/machinery/librarywikicomp/tgui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
just_donated = FALSE
|
||||
ui = new(user, src, "PublicLibraryWiki", name)
|
||||
ui.open()
|
||||
|
||||
|
||||
/obj/machinery/librarywikicomp/tgui_close(mob/user)
|
||||
. = ..()
|
||||
P = null
|
||||
sub_category= null
|
||||
searchmode = null
|
||||
|
||||
/obj/machinery/librarywikicomp/tgui_data(mob/user)
|
||||
var/data = list()
|
||||
if(SSinternal_wiki)
|
||||
data["crash"] = crash
|
||||
data["botany_data"] = null
|
||||
data["material_data"] = null
|
||||
data["particle_data"] = null
|
||||
data["catalog_data"] = null
|
||||
data["ore_data"] = null
|
||||
data["sub_categories"] = null
|
||||
data["donated"] = SSinternal_wiki.get_donation_current()
|
||||
data["goal"] = SSinternal_wiki.get_donation_goal()
|
||||
data["has_donated"] = just_donated
|
||||
if(!crash)
|
||||
// search page
|
||||
data["errorText"] = ""
|
||||
data["searchmode"] = searchmode
|
||||
// get searches
|
||||
switch(searchmode)
|
||||
if("Food Recipes")
|
||||
data["sub_categories"] = SSinternal_wiki.get_appliances()
|
||||
data["search"] = list()
|
||||
if(sub_category)
|
||||
data["search"] = SSinternal_wiki.get_searchcache_food(sub_category)
|
||||
if(P)
|
||||
data["food_data"] = P.get_data()
|
||||
|
||||
if("Drink Recipes")
|
||||
data["search"] = SSinternal_wiki.get_searchcache_drink()
|
||||
if(P)
|
||||
data["drink_data"] = P.get_data()
|
||||
|
||||
if("Chemistry")
|
||||
data["search"] = SSinternal_wiki.get_searchcache_chem()
|
||||
if(P)
|
||||
data["chemistry_data"] = P.get_data()
|
||||
|
||||
if("Botany")
|
||||
data["search"] = SSinternal_wiki.get_searchcache_seed()
|
||||
if(P)
|
||||
data["botany_data"] = P.get_data()
|
||||
|
||||
if("Catalogs")
|
||||
data["sub_categories"] = SSinternal_wiki.get_catalogs()
|
||||
data["search"] = list()
|
||||
if(sub_category)
|
||||
data["search"] = SSinternal_wiki.get_searchcache_catalog(sub_category)
|
||||
if(P)
|
||||
data["catalog_data"] = P.get_data()
|
||||
|
||||
if("Materials")
|
||||
data["search"] = SSinternal_wiki.get_searchcache_material()
|
||||
if(P)
|
||||
data["material_data"] = P.get_data()
|
||||
|
||||
if("Particle Physics")
|
||||
data["search"] = SSinternal_wiki.get_searchcache_particle()
|
||||
if(P)
|
||||
data["particle_data"] = P.get_data()
|
||||
|
||||
if("Ores")
|
||||
data["search"] = SSinternal_wiki.get_searchcache_ore()
|
||||
if(P)
|
||||
data["ore_data"] = P.get_data()
|
||||
|
||||
else
|
||||
data["search"] = list()
|
||||
|
||||
// display message
|
||||
data["print"] = (doc_body && length(doc_body) > 0)
|
||||
else
|
||||
// intentional TGUI crash, amazingly awful
|
||||
data["searchmode"] = "Error"
|
||||
data["search"] = null
|
||||
else
|
||||
data["errorText"] = "Database unreachable."
|
||||
return data
|
||||
|
||||
/obj/machinery/librarywikicomp/tgui_act(action, params, datum/tgui/ui)
|
||||
if(..())
|
||||
return TRUE
|
||||
add_fingerprint(ui.user)
|
||||
playsound(src, "keyboard", 40) // into console
|
||||
|
||||
switch(action)
|
||||
if("closesearch")
|
||||
if(!crash)
|
||||
P = null
|
||||
searchmode = null
|
||||
sub_category = null
|
||||
doc_title = "Click a search entry!"
|
||||
doc_body = ""
|
||||
. = TRUE
|
||||
|
||||
if("swapsearch")
|
||||
if(!crash)
|
||||
var/new_mode = params["data"]
|
||||
if(searchmode == new_mode)
|
||||
return FALSE
|
||||
P = null
|
||||
doc_title = null
|
||||
doc_body = null
|
||||
searchmode = new_mode
|
||||
. = TRUE
|
||||
|
||||
if("crash")
|
||||
// intentional TGUI crash, amazingly awful
|
||||
if(issilicon(ui.user) && ui.user.client)
|
||||
ui.user.client.create_fake_ad_popup_multiple(/obj/screen/popup/default, rand(4,10))
|
||||
if(!crash)
|
||||
crash = TRUE
|
||||
// crashes till it fixes itself
|
||||
VARSET_IN(src, crash, FALSE, rand(1000, 4000))
|
||||
. = TRUE
|
||||
|
||||
if("print")
|
||||
if(!crash && doc_title && doc_body)
|
||||
visible_message(span_notice("[src] rattles and prints out a sheet of paper."))
|
||||
// playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
|
||||
|
||||
var/obj/item/paper/paper = new /obj/item/paper(loc)
|
||||
paper.name = doc_title
|
||||
paper.info = doc_body
|
||||
. = TRUE
|
||||
|
||||
if("setsubcat")
|
||||
if(!crash)
|
||||
var/new_subcat = params["data"]
|
||||
if(sub_category == new_subcat)
|
||||
return FALSE
|
||||
P = null
|
||||
doc_title = null
|
||||
doc_body = null
|
||||
sub_category = new_subcat
|
||||
. = TRUE
|
||||
// final search
|
||||
if("search")
|
||||
if(!crash)
|
||||
var/search = params["data"]
|
||||
var/datum/internal_wiki/page/new_page = null
|
||||
if(searchmode == "Food Recipes")
|
||||
new_page = SSinternal_wiki.get_page_food(search)
|
||||
if(searchmode == "Drink Recipes")
|
||||
new_page = SSinternal_wiki.get_page_drink(search)
|
||||
if(searchmode == "Chemistry")
|
||||
new_page = SSinternal_wiki.get_page_chem(search)
|
||||
if(searchmode == "Botany")
|
||||
new_page = SSinternal_wiki.get_page_seed(search)
|
||||
if(searchmode == "Catalogs")
|
||||
new_page = SSinternal_wiki.get_page_catalog(search)
|
||||
if(searchmode == "Materials")
|
||||
new_page = SSinternal_wiki.get_page_material(search)
|
||||
if(searchmode == "Particle Physics")
|
||||
new_page = SSinternal_wiki.get_page_particle(search)
|
||||
if(searchmode == "Ores")
|
||||
new_page = SSinternal_wiki.get_page_ore(search)
|
||||
|
||||
if(new_page == P)
|
||||
return FALSE
|
||||
|
||||
P = new_page
|
||||
|
||||
if(P)
|
||||
doc_title = P.title
|
||||
doc_body = P.get_print() // TODO - pass get_data() instead, as only printing should use get_print()
|
||||
else
|
||||
doc_title = "Error"
|
||||
doc_body = "Invalid data."
|
||||
. = TRUE
|
||||
// Support the wiki
|
||||
if("donate")
|
||||
if(!crash)
|
||||
var/amount = params["donate"]
|
||||
var/mob/living/carbon/human/H = ui.user
|
||||
if(!ishuman(H) || !H.IsAdvancedToolUser(TRUE))
|
||||
to_chat(ui.user,"Donating to Bingle.exo is Byond your comprehension!")
|
||||
else if(amount)
|
||||
pay_donation(H.GetIdCard(), ui.user, amount, ui)
|
||||
. = TRUE
|
||||
|
||||
/obj/machinery/librarywikicomp/proc/pay_donation(var/obj/item/card/id/I, var/mob/user, var/amount, var/datum/tgui/ui)
|
||||
visible_message(span_info("[user] swipes a card through [src]."))
|
||||
playsound(src, 'sound/machines/id_swipe.ogg', 50, 1)
|
||||
if(SSinternal_wiki.pay_with_card(I, user, src, amount))
|
||||
playsound(src, 'sound/machines/ping.ogg', 50, 1)
|
||||
just_donated = TRUE
|
||||
SStgui.update_user_uis(user, ui)
|
||||
|
||||
// mapper varient for dorms and residences
|
||||
/obj/machinery/librarywikicomp/personal
|
||||
name = "personal datacore computer"
|
||||
desc = "Have you Bingled THAT today?"
|
||||
@@ -235,6 +235,8 @@ var/list/name_to_material
|
||||
// Wallrot crumble message.
|
||||
var/rotting_touch_message = "crumbles under your touch"
|
||||
|
||||
var/wiki_flag = 0
|
||||
|
||||
// Placeholders for light tiles and rglass.
|
||||
/datum/material/proc/build_rod_product(var/mob/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack)
|
||||
if(!rod_product)
|
||||
@@ -306,6 +308,7 @@ var/list/name_to_material
|
||||
// Used by walls when qdel()ing to avoid neighbor merging.
|
||||
/datum/material/placeholder
|
||||
name = "placeholder"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
// Places a girder object when a wall is dismantled, also applies reinforced material.
|
||||
/datum/material/proc/place_dismantled_girder(var/turf/target, var/datum/material/reinf_material, var/datum/material/girder_material)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
hardness = 500
|
||||
weight = 500
|
||||
protectiveness = 80 // 80%
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/alienalloy/elevatorium
|
||||
name = "elevatorium"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
sheet_singular_name = "brick"
|
||||
sheet_plural_name = "bricks"
|
||||
conductive = 0
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/cult/place_dismantled_girder(var/turf/target)
|
||||
new /obj/structure/girder/cult(target, MAT_CULT)
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
icon_base = "stone"
|
||||
door_icon_base = "stone"
|
||||
icon_reinf = "reinf_mesh"
|
||||
icon_colour = "##FFF3B2"
|
||||
icon_colour = "#FFF3B2"
|
||||
protectiveness = 30
|
||||
integrity = 240
|
||||
weight = 30
|
||||
|
||||
@@ -3,15 +3,18 @@
|
||||
display_name = MAT_STEEL
|
||||
stack_type = null
|
||||
shard_type = SHARD_NONE
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/plastic/holographic
|
||||
name = "holo" + MAT_PLASTIC
|
||||
display_name = MAT_PLASTIC
|
||||
stack_type = null
|
||||
shard_type = SHARD_NONE
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/wood/holographic
|
||||
name = "holo" + MAT_WOOD
|
||||
display_name = MAT_WOOD
|
||||
stack_type = null
|
||||
shard_type = SHARD_NONE
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
@@ -59,57 +59,66 @@
|
||||
|
||||
/datum/material/cloth/teal
|
||||
name = MAT_CLOTH_TEAL
|
||||
display_name =MAT_CLOTH_TEAL
|
||||
display_name = MAT_CLOTH_TEAL
|
||||
use_name = "teal cloth"
|
||||
icon_colour = "#00EAFA"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/cloth/black
|
||||
name = MAT_CLOTH_BLACK
|
||||
display_name = MAT_CLOTH_BLACK
|
||||
use_name = "black cloth"
|
||||
icon_colour = "#505050"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/cloth/green
|
||||
name = MAT_CLOTH_GREEN
|
||||
display_name = MAT_CLOTH_GREEN
|
||||
use_name = "green cloth"
|
||||
icon_colour = "#01C608"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/cloth/puple
|
||||
name = MAT_CLOTH_PURPLE
|
||||
display_name = MAT_CLOTH_PURPLE
|
||||
use_name = "purple cloth"
|
||||
icon_colour = "#9C56C4"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/cloth/blue
|
||||
name = MAT_CLOTH_BLUE
|
||||
display_name = MAT_CLOTH_BLUE
|
||||
use_name = "blue cloth"
|
||||
icon_colour = "#6B6FE3"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/cloth/beige
|
||||
name = MAT_CLOTH_BEIGE
|
||||
display_name = MAT_CLOTH_BEIGE
|
||||
use_name = "beige cloth"
|
||||
icon_colour = "#E8E7C8"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/cloth/lime
|
||||
name = MAT_CLOTH_LIME
|
||||
display_name = MAT_CLOTH_LIME
|
||||
use_name = "lime cloth"
|
||||
icon_colour = "#62E36C"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/cloth/yellow
|
||||
name = MAT_CLOTH_YELLOW
|
||||
display_name = MAT_CLOTH_YELLOW
|
||||
use_name = "yellow cloth"
|
||||
icon_colour = "#EEF573"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/cloth/orange
|
||||
name = MAT_CLOTH_ORANGE
|
||||
display_name = MAT_CLOTH_ORANGE
|
||||
use_name = "orange cloth"
|
||||
icon_colour = "#E3BF49"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
|
||||
|
||||
@@ -128,6 +137,7 @@
|
||||
conductive = 0
|
||||
hardness = 5
|
||||
integrity = 40
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/cotton
|
||||
name = MAT_COTTON
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
|
||||
/datum/material/wood/log/hard
|
||||
name = MAT_HARDLOG
|
||||
display_name = MAT_HARDWOOD
|
||||
icon_colour = "#6f432a"
|
||||
stack_type = /obj/item/stack/material/log/hard
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
explosion_resistance = 200
|
||||
hardness = 500
|
||||
weight = 500
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/fluff //This is to allow for 2 handed weapons that don't want to have a prefix.
|
||||
name = " "
|
||||
@@ -18,6 +19,7 @@
|
||||
sheet_plural_name = "fluffs"
|
||||
hardness = 60
|
||||
weight = 20 //Strong as iron.
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/darkglass
|
||||
name = MAT_DARKGLASS
|
||||
@@ -25,6 +27,7 @@
|
||||
icon_base = MAT_DARKGLASS
|
||||
table_icon_base = MAT_DARKGLASS
|
||||
icon_colour = "#FFFFFF"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/material/fancyblack
|
||||
name = MAT_FANCYBLACK
|
||||
@@ -32,3 +35,4 @@
|
||||
icon_base = MAT_FANCYBLACK
|
||||
table_icon_base = MAT_FANCYBLACK
|
||||
icon_colour = "#FFFFFF"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
stack_type = /obj/item/stack/material/supermatter
|
||||
shard_type = SHARD_SHARD
|
||||
radioactivity = 20
|
||||
stack_type = null
|
||||
luminescence = 3
|
||||
ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE
|
||||
icon_base = "stone"
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
|
||||
if(burn_user)
|
||||
H.visible_message(span_danger("\The [src] flashes as it scorches [H]'s hands!"))
|
||||
H.apply_damage(amount / 2 + 5, BURN, "r_hand", used_weapon=src)
|
||||
H.apply_damage(amount / 2 + 5, BURN, "l_hand", used_weapon=src)
|
||||
H.apply_damage(amount / 2 + 5, BURN, BP_R_HAND, used_weapon=src)
|
||||
H.apply_damage(amount / 2 + 5, BURN, BP_L_HAND, used_weapon=src)
|
||||
H.drop_from_inventory(src, get_turf(H))
|
||||
return
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
)
|
||||
var/xarch_source_mineral = REAGENT_ID_IRON
|
||||
var/reagent = REAGENT_ID_SILICATE
|
||||
var/wiki_flag = 0
|
||||
|
||||
/ore/New()
|
||||
. = ..()
|
||||
@@ -65,6 +66,7 @@
|
||||
display_name = ORE_SAND
|
||||
smelts_to = MAT_GLASS
|
||||
alloy = 1
|
||||
ore = /obj/item/ore/glass
|
||||
compresses_to = MAT_SANDSTONE
|
||||
|
||||
/ore/phoron
|
||||
@@ -140,6 +142,7 @@
|
||||
display_name = "metallic hydrogen"
|
||||
smelts_to = MAT_TRITIUM
|
||||
compresses_to = MAT_METALHYDROGEN
|
||||
ore = /obj/item/ore/hydrogen
|
||||
scan_icon = "mineral_rare"
|
||||
reagent = REAGENT_ID_HYDROGEN
|
||||
|
||||
|
||||
@@ -56,9 +56,9 @@
|
||||
if(!istype(M, /mob/living/carbon)) return
|
||||
if (ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
|
||||
var/obj/item/organ/external/temp = H.organs_by_name[BP_R_HAND]
|
||||
if (H.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
temp = H.organs_by_name[BP_L_HAND]
|
||||
if(temp && !temp.is_usable())
|
||||
to_chat(H, span_warning("You can't use your [temp.name]"))
|
||||
return
|
||||
@@ -122,7 +122,7 @@
|
||||
|
||||
/mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null, var/stun = 1)
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
if(def_zone == "l_hand" || def_zone == "r_hand") //Diona (And any other potential plant people) hands don't get shocked.
|
||||
if(def_zone == BP_L_HAND || def_zone == BP_R_HAND) //Diona (And any other potential plant people) hands don't get shocked.
|
||||
if(species.flags & IS_PLANT)
|
||||
return 0
|
||||
shock_damage *= siemens_coeff
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
user.visible_message(span_danger("\The [user] plunges \the [W] into \the [src]!"))
|
||||
|
||||
var/damage = shank_armor_helper(W, G, user)
|
||||
apply_damage(damage, W.damtype, "torso", 0, sharp=W.sharp, edge=W.edge)
|
||||
apply_damage(damage, W.damtype, BP_TORSO, 0, sharp=W.sharp, edge=W.edge)
|
||||
|
||||
if(W.hitsound)
|
||||
playsound(src, W.hitsound, 50, 1, -1)
|
||||
|
||||
@@ -313,7 +313,7 @@
|
||||
msg += span_warning("[T.He] [T.is] on fire!.")
|
||||
|
||||
var/ssd_msg = species.get_ssd(src)
|
||||
if(ssd_msg && (!should_have_organ("brain") || has_brain()) && stat != DEAD)
|
||||
if(ssd_msg && (!should_have_organ(O_BRAIN) || has_brain()) && stat != DEAD)
|
||||
if(!key)
|
||||
msg += span_deadsay("[T.He] [T.is] [ssd_msg]. It doesn't look like [T.he] [T.is] waking up anytime soon.")
|
||||
else if(!client)
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
L[++L.len] = list("Suit charge: [cell_status]", null, null, null, null)
|
||||
for(var/obj/item/rig_module/module in R.installed_modules)
|
||||
{
|
||||
for(var/stat_rig_module/SRM in module.stat_modules)
|
||||
for(var/atom/movable/stat_rig_module/SRM in module.stat_modules)
|
||||
if(SRM.CanUse())
|
||||
L[++L.len] = list(SRM.module.interface_name,null,null,SRM.name,REF(SRM))
|
||||
}
|
||||
@@ -377,7 +377,7 @@
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
|
||||
if (!def_zone)
|
||||
def_zone = pick("l_hand", "r_hand")
|
||||
def_zone = pick(BP_L_HAND, BP_R_HAND)
|
||||
|
||||
if(species.siemens_coefficient == -1)
|
||||
if(stored_shock_by_ref["\ref[src]"])
|
||||
@@ -813,7 +813,7 @@
|
||||
|
||||
//Used by various things that knock people out by applying blunt trauma to the head.
|
||||
//Checks that the species has a "head" (brain containing organ) and that hit_zone refers to it.
|
||||
/mob/living/carbon/human/proc/headcheck(var/target_zone, var/brain_tag = "brain")
|
||||
/mob/living/carbon/human/proc/headcheck(var/target_zone, var/brain_tag = O_BRAIN)
|
||||
|
||||
var/obj/item/organ/affecting = internal_organs_by_name[brain_tag]
|
||||
|
||||
@@ -1635,7 +1635,7 @@
|
||||
/mob/living/carbon/human/can_stand_overridden()
|
||||
if(wearing_rig && wearing_rig.ai_can_move_suit(check_for_ai = 1))
|
||||
// Actually missing a leg will screw you up. Everything else can be compensated for.
|
||||
for(var/limbcheck in list("l_leg","r_leg"))
|
||||
for(var/limbcheck in list(BP_L_LEG,BP_R_LEG))
|
||||
var/obj/item/organ/affecting = get_organ(limbcheck)
|
||||
if(!affecting)
|
||||
return 0
|
||||
|
||||
@@ -41,9 +41,9 @@
|
||||
|
||||
var/has_hands = TRUE
|
||||
if(istype(H))
|
||||
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
|
||||
var/obj/item/organ/external/temp = H.organs_by_name[BP_R_HAND]
|
||||
if(H.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
temp = H.organs_by_name[BP_L_HAND]
|
||||
if(!temp || !temp.is_usable())
|
||||
has_hands = FALSE
|
||||
for(var/thing in GetViruses()) //This is intentionally not having a has_hands check. If you are clicking on someone next to them, you're close enough to sneeze/cough on them!
|
||||
|
||||
@@ -51,8 +51,8 @@
|
||||
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
|
||||
if(should_have_organ("brain"))
|
||||
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name["brain"]
|
||||
if(should_have_organ(O_BRAIN))
|
||||
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name[O_BRAIN]
|
||||
if(sponge)
|
||||
sponge.take_damage(amount)
|
||||
brainloss = sponge.damage
|
||||
@@ -65,8 +65,8 @@
|
||||
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
|
||||
if(should_have_organ("brain"))
|
||||
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name["brain"]
|
||||
if(should_have_organ(O_BRAIN))
|
||||
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name[O_BRAIN]
|
||||
if(sponge)
|
||||
sponge.damage = min(max(amount, 0),(getMaxHealth()*2))
|
||||
brainloss = sponge.damage
|
||||
@@ -79,8 +79,8 @@
|
||||
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
|
||||
if(should_have_organ("brain"))
|
||||
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name["brain"]
|
||||
if(should_have_organ(O_BRAIN))
|
||||
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name[O_BRAIN]
|
||||
if(sponge)
|
||||
brainloss = min(sponge.damage,getMaxHealth()*2)
|
||||
else
|
||||
|
||||
@@ -545,9 +545,9 @@ emp_act
|
||||
// This does a prob check to catch the thing flying at you, with a minimum of 1%
|
||||
/mob/living/carbon/human/proc/can_catch(var/obj/O)
|
||||
if(!get_active_hand()) // If active hand is empty
|
||||
var/obj/item/organ/external/temp = organs_by_name["r_hand"]
|
||||
var/obj/item/organ/external/temp = organs_by_name[BP_R_HAND]
|
||||
if (hand)
|
||||
temp = organs_by_name["l_hand"]
|
||||
temp = organs_by_name[BP_L_HAND]
|
||||
if(temp && !temp.is_usable())
|
||||
return FALSE // The hand isn't working in the first place
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
return
|
||||
|
||||
var/limb_pain = FALSE
|
||||
for(var/limb_tag in list("l_leg","r_leg","l_foot","r_foot"))
|
||||
for(var/limb_tag in list(BP_L_LEG,BP_R_LEG,BP_L_FOOT,BP_R_FOOT))
|
||||
var/obj/item/organ/external/E = organs_by_name[limb_tag]
|
||||
if(!E || !E.is_usable())
|
||||
stance_damage += 2 // let it fail even if just foot&leg
|
||||
|
||||
@@ -47,8 +47,8 @@
|
||||
if(stat)
|
||||
return
|
||||
|
||||
var/obj/item/organ/external/l_hand = get_organ("l_hand")
|
||||
var/obj/item/organ/external/r_hand = get_organ("r_hand")
|
||||
var/obj/item/organ/external/l_hand = get_organ(BP_L_HAND)
|
||||
var/obj/item/organ/external/r_hand = get_organ(BP_R_HAND)
|
||||
if((!l_hand || l_hand.is_stump()) && (!r_hand || r_hand.is_stump()))
|
||||
to_chat(src, span_warning("You have no hands to play games with!"))
|
||||
return
|
||||
@@ -59,8 +59,8 @@
|
||||
continue
|
||||
if(H == src)
|
||||
continue
|
||||
var/obj/item/organ/external/l_hand2 = H.get_organ("l_hand")
|
||||
var/obj/item/organ/external/r_hand2 = H.get_organ("r_hand")
|
||||
var/obj/item/organ/external/l_hand2 = H.get_organ(BP_L_HAND)
|
||||
var/obj/item/organ/external/r_hand2 = H.get_organ(BP_R_HAND)
|
||||
if((!l_hand2 || l_hand2.is_stump()) && (!r_hand2 || r_hand2.is_stump()))
|
||||
continue
|
||||
nearby |= H
|
||||
@@ -70,8 +70,8 @@
|
||||
continue
|
||||
if(H == src)
|
||||
continue
|
||||
var/obj/item/organ/external/l_hand2 = H.get_organ("l_hand")
|
||||
var/obj/item/organ/external/r_hand2 = H.get_organ("r_hand")
|
||||
var/obj/item/organ/external/l_hand2 = H.get_organ(BP_L_HAND)
|
||||
var/obj/item/organ/external/r_hand2 = H.get_organ(BP_R_HAND)
|
||||
if((!l_hand2 || l_hand2.is_stump()) && (!r_hand2 || r_hand2.is_stump()))
|
||||
continue
|
||||
nearby |= H
|
||||
|
||||
@@ -1293,7 +1293,7 @@
|
||||
else //ALIVE. LIGHTS ARE ON
|
||||
updatehealth() //TODO
|
||||
|
||||
if(health <= CONFIG_GET(number/health_threshold_dead) || (should_have_organ("brain") && !has_brain()))
|
||||
if(health <= CONFIG_GET(number/health_threshold_dead) || (should_have_organ(O_BRAIN) && !has_brain()))
|
||||
death()
|
||||
blinded = 1
|
||||
silent = 0
|
||||
@@ -1321,7 +1321,7 @@
|
||||
qdel(a)
|
||||
|
||||
//Brain damage from Oxyloss
|
||||
if(should_have_organ("brain"))
|
||||
if(should_have_organ(O_BRAIN))
|
||||
var/brainOxPercent = 0.015 //Default 1.5% of your current oxyloss is applied as brain damage, 50 oxyloss is 1 brain damage
|
||||
if(CE_STABLE in chem_effects)
|
||||
brainOxPercent = 0.008 //Halved in effect
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#ffffff"
|
||||
scannable = 1
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/glamour_scaling/affect_blood(var/mob/living/carbon/target, var/removed)
|
||||
if(!(/mob/living/proc/set_size in target.verbs))
|
||||
|
||||
@@ -551,7 +551,7 @@
|
||||
return
|
||||
|
||||
//VOREStation Edit Start - Headpats and Handshakes.
|
||||
if(H.zone_sel.selecting == "head")
|
||||
if(H.zone_sel.selecting == BP_HEAD)
|
||||
if(target.touch_reaction_flags & SPECIES_TRAIT_PATTING_DEFENCE)
|
||||
H.visible_message( \
|
||||
span_warning("[target] reflexively bites the hand of [H] to prevent head patting!"), \
|
||||
@@ -564,7 +564,7 @@
|
||||
H.visible_message( \
|
||||
span_notice("[H] pats [target] on the head."), \
|
||||
span_notice("You pat [target] on the head."), )
|
||||
else if(H.zone_sel.selecting == "r_hand" || H.zone_sel.selecting == "l_hand")
|
||||
else if(H.zone_sel.selecting == BP_R_HAND || H.zone_sel.selecting == BP_L_HAND)
|
||||
H.visible_message( \
|
||||
span_notice("[H] shakes [target]'s hand."), \
|
||||
span_notice("You shake [target]'s hand."), )
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
virus_immune = 1
|
||||
|
||||
has_organ = list(
|
||||
"brain" = /obj/item/organ/internal/brain/golem
|
||||
O_BRAIN = /obj/item/organ/internal/brain/golem
|
||||
)
|
||||
|
||||
death_message = "becomes completely motionless..."
|
||||
|
||||
@@ -30,11 +30,11 @@ var/global/list/sparring_attack_cache = list()
|
||||
return FALSE
|
||||
|
||||
// Check if they have a functioning hand.
|
||||
var/obj/item/organ/external/E = user.organs_by_name["l_hand"]
|
||||
var/obj/item/organ/external/E = user.organs_by_name[BP_L_HAND]
|
||||
if(E && !E.is_stump())
|
||||
return TRUE
|
||||
|
||||
E = user.organs_by_name["r_hand"]
|
||||
E = user.organs_by_name[BP_R_HAND]
|
||||
if(E && !E.is_stump())
|
||||
return TRUE
|
||||
|
||||
@@ -79,7 +79,7 @@ var/global/list/sparring_attack_cache = list()
|
||||
if(BP_GROIN)
|
||||
target.visible_message(span_warning("[target] looks like [TT.he] [TT.is] in pain!"), span_warning("Oh god that hurt!")) // Chompstation edit
|
||||
target.apply_effects(stutter = attack_damage * 2, agony = attack_damage* 3, blocked = armour)
|
||||
if("l_leg", "l_foot", "r_leg", "r_foot")
|
||||
if(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT)
|
||||
if(!target.lying)
|
||||
target.visible_message(span_warning("[target] gives way slightly."))
|
||||
target.apply_effect(attack_damage*3, AGONY, armour)
|
||||
@@ -199,14 +199,14 @@ var/global/list/sparring_attack_cache = list()
|
||||
if(user.legcuffed || user.buckled)
|
||||
return FALSE
|
||||
|
||||
if(!(zone in list("l_leg", "r_leg", "l_foot", "r_foot", BP_GROIN)))
|
||||
if(!(zone in list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT, BP_GROIN)))
|
||||
return FALSE
|
||||
|
||||
var/obj/item/organ/external/E = user.organs_by_name["l_foot"]
|
||||
var/obj/item/organ/external/E = user.organs_by_name[BP_L_FOOT]
|
||||
if(E && !E.is_stump())
|
||||
return TRUE
|
||||
|
||||
E = user.organs_by_name["r_foot"]
|
||||
E = user.organs_by_name[BP_R_FOOT]
|
||||
if(E && !E.is_stump())
|
||||
return TRUE
|
||||
|
||||
@@ -247,14 +247,14 @@ var/global/list/sparring_attack_cache = list()
|
||||
if(!istype(target))
|
||||
return FALSE
|
||||
|
||||
if (!user.lying && (target.lying || (zone in list("l_foot", "r_foot"))))
|
||||
if (!user.lying && (target.lying || (zone in list(BP_L_FOOT, BP_R_FOOT))))
|
||||
if(target.grabbed_by == user && target.lying)
|
||||
return FALSE
|
||||
var/obj/item/organ/external/E = user.organs_by_name["l_foot"]
|
||||
var/obj/item/organ/external/E = user.organs_by_name[BP_L_FOOT]
|
||||
if(E && !E.is_stump())
|
||||
return TRUE
|
||||
|
||||
E = user.organs_by_name["r_foot"]
|
||||
E = user.organs_by_name[BP_R_FOOT]
|
||||
if(E && !E.is_stump())
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -966,7 +966,7 @@
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(!H.isSynthetic())
|
||||
var/obj/item/organ/internal/liver/L = H.internal_organs_by_name["liver"]
|
||||
var/obj/item/organ/internal/liver/L = H.internal_organs_by_name[O_LIVER]
|
||||
if(!L || L.is_broken())
|
||||
blood_vomit = 1
|
||||
|
||||
|
||||
@@ -336,11 +336,11 @@
|
||||
else
|
||||
t_him = "them"
|
||||
|
||||
if(H.zone_sel.selecting == "head")
|
||||
if(H.zone_sel.selecting == BP_HEAD)
|
||||
H.visible_message( \
|
||||
span_notice("[H] pats [target] on the head."), \
|
||||
span_notice("You pat [target] on the head."), )
|
||||
else if(H.zone_sel.selecting == "r_hand" || H.zone_sel.selecting == "l_hand")
|
||||
else if(H.zone_sel.selecting == BP_R_HAND || H.zone_sel.selecting == BP_L_HAND)
|
||||
H.visible_message( \
|
||||
span_notice("[H] shakes [target]'s hand."), \
|
||||
span_notice("You shake [target]'s hand."), )
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
if(!E || E.is_stump())
|
||||
to_chat(src, span_warning("\The [H] does not have a head!"))
|
||||
|
||||
if(!H.should_have_organ("brain"))
|
||||
if(!H.should_have_organ(O_BRAIN))
|
||||
to_chat(src, span_warning("\The [H] does not seem to have an ear canal to breach."))
|
||||
return
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/I = H.internal_organs_by_name["brain"]
|
||||
var/obj/item/organ/I = H.internal_organs_by_name[O_BRAIN]
|
||||
if(!I) // No brain organ, so the borer moves in and replaces it permanently.
|
||||
replace_brain()
|
||||
else
|
||||
@@ -182,7 +182,7 @@
|
||||
H.ChangeToHusk()
|
||||
|
||||
var/obj/item/organ/internal/borer/B = new(H)
|
||||
H.internal_organs_by_name["brain"] = B
|
||||
H.internal_organs_by_name[O_BRAIN] = B
|
||||
H.internal_organs |= B
|
||||
|
||||
var/obj/item/organ/external/affecting = H.get_organ(BP_HEAD)
|
||||
|
||||
@@ -277,8 +277,8 @@
|
||||
else if(istype(my_mob.buckled, /obj/structure/bed/chair/wheelchair))
|
||||
if(ishuman(my_mob))
|
||||
var/mob/living/carbon/human/driver = my_mob
|
||||
var/obj/item/organ/external/l_hand = driver.get_organ("l_hand")
|
||||
var/obj/item/organ/external/r_hand = driver.get_organ("r_hand")
|
||||
var/obj/item/organ/external/l_hand = driver.get_organ(BP_L_HAND)
|
||||
var/obj/item/organ/external/r_hand = driver.get_organ(BP_R_HAND)
|
||||
if((!l_hand || l_hand.is_stump()) && (!r_hand || r_hand.is_stump()))
|
||||
return // No hands to drive your chair? Tough luck!
|
||||
//drunk wheelchair driving
|
||||
|
||||
@@ -50,12 +50,14 @@ var/obj/effect/lobby_image = new /obj/effect/lobby_image
|
||||
created_for = ckey
|
||||
|
||||
new_player_panel()
|
||||
client.init_verbs()
|
||||
spawn(40)
|
||||
if(client)
|
||||
handle_privacy_poll()
|
||||
client.playtitlemusic()
|
||||
version_warnings()
|
||||
addtimer(CALLBACK(src, PROC_REF(do_after_login)), 4 SECONDS, TIMER_DELETE_ME)
|
||||
|
||||
/mob/new_player/proc/do_after_login()
|
||||
PRIVATE_PROC(TRUE)
|
||||
if(client)
|
||||
handle_privacy_poll()
|
||||
client.playtitlemusic()
|
||||
version_warnings()
|
||||
|
||||
/mob/new_player/proc/version_warnings()
|
||||
var/problems // string to store message to present to player as a problem
|
||||
|
||||
@@ -195,7 +195,6 @@
|
||||
client.prefs.dress_preview_mob(mannequin)
|
||||
var/mob/observer/dead/observer = new(mannequin)
|
||||
observer.moveToNullspace() //Let's not stay in our doomed mannequin
|
||||
qdel(mannequin) //We're not used anymore, so goodbye!
|
||||
|
||||
spawning = 1
|
||||
if(client.media)
|
||||
|
||||
@@ -4,7 +4,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
|
||||
name = "brain"
|
||||
health = 400 //They need to live awhile longer than other organs. Is this even used by organ code anymore?
|
||||
desc = "A piece of juicy meat found in a person's head."
|
||||
organ_tag = "brain"
|
||||
organ_tag = O_BRAIN
|
||||
parent_organ = BP_HEAD
|
||||
vital = 1
|
||||
icon_state = "brain2"
|
||||
@@ -175,7 +175,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
|
||||
/obj/item/organ/internal/brain/pariah_brain
|
||||
name = "brain remnants"
|
||||
desc = "Did someone tread on this? It looks useless for cloning or cyborgification."
|
||||
organ_tag = "brain"
|
||||
organ_tag = O_BRAIN
|
||||
parent_organ = BP_HEAD
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "chitin"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/organ/internal/liver
|
||||
name = "liver"
|
||||
icon_state = "liver"
|
||||
organ_tag = "liver"
|
||||
organ_tag = O_LIVER
|
||||
parent_organ = BP_GROIN
|
||||
|
||||
/obj/item/organ/internal/liver/process()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "cortical borer"
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "borer"
|
||||
organ_tag = "brain"
|
||||
organ_tag = O_BRAIN
|
||||
desc = "A disgusting space slug."
|
||||
parent_organ = BP_HEAD
|
||||
vital = 1
|
||||
|
||||
@@ -508,9 +508,9 @@
|
||||
if(user == src.owner)
|
||||
var/grasp
|
||||
if(user.l_hand == tool && (src.body_part & (ARM_LEFT|HAND_LEFT)))
|
||||
grasp = "l_hand"
|
||||
grasp = BP_L_HAND
|
||||
else if(user.r_hand == tool && (src.body_part & (ARM_RIGHT|HAND_RIGHT)))
|
||||
grasp = "r_hand"
|
||||
grasp = BP_R_HAND
|
||||
|
||||
if(grasp)
|
||||
to_chat(user, span_warning("You can't reach your [src.name] while holding [tool] in your [owner.get_bodypart_name(grasp)]."))
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
/obj/item/organ/internal/mmi_holder/Initialize(mapload, var/internal, var/obj/item/mmi/installed)
|
||||
. = ..(mapload, internal)
|
||||
if(!ishuman(loc) || istype(loc, /mob/living/carbon/human/dummy/mannequin))
|
||||
if(!ishuman(loc) || ismannequin(loc))
|
||||
return
|
||||
if(installed)
|
||||
stored_mmi = installed
|
||||
|
||||
@@ -93,11 +93,9 @@
|
||||
|
||||
/obj/item/organ/internal/regennetwork/Initialize(mapload)
|
||||
. = ..()
|
||||
var/mob/living/carbon/human/H = null
|
||||
spawn(15)
|
||||
if(ishuman(owner))
|
||||
H = owner
|
||||
color = H.species.get_blood_colour(H)
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
color = H.species.get_blood_colour(H)
|
||||
|
||||
/obj/item/organ/internal/regennetwork/proc/get_strain_percent(var/cost)
|
||||
adjust_strain(cost)
|
||||
|
||||
@@ -71,10 +71,10 @@
|
||||
if(!isanimal(user))
|
||||
if( !user.get_active_hand() ) //if active hand is empty
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
|
||||
var/obj/item/organ/external/temp = H.organs_by_name[BP_R_HAND]
|
||||
|
||||
if (H.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
temp = H.organs_by_name[BP_L_HAND]
|
||||
if(temp && !temp.is_usable())
|
||||
to_chat(user, span_notice("You try to move your [temp.name], but cannot!"))
|
||||
return
|
||||
|
||||
@@ -25,10 +25,10 @@
|
||||
if(!isanimal(user))
|
||||
if( !user.get_active_hand() ) //if active hand is empty
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
|
||||
var/obj/item/organ/external/temp = H.organs_by_name[BP_R_HAND]
|
||||
|
||||
if (H.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
temp = H.organs_by_name[BP_L_HAND]
|
||||
if(temp && !temp.is_usable())
|
||||
to_chat(user, span_notice("You try to move your [temp.name], but cannot!"))
|
||||
return
|
||||
@@ -41,9 +41,9 @@
|
||||
/obj/item/paper_bin/attack_hand(mob/user)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
|
||||
var/obj/item/organ/external/temp = H.organs_by_name[BP_R_HAND]
|
||||
if (H.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
temp = H.organs_by_name[BP_L_HAND]
|
||||
if(temp && !temp.is_usable())
|
||||
to_chat(user, span_notice("You try to move your [temp.name], but cannot!"))
|
||||
return
|
||||
|
||||
@@ -270,6 +270,7 @@
|
||||
*/
|
||||
|
||||
/datum/particle_smasher_recipe
|
||||
var/display_name = ""
|
||||
var/list/reagents // example: = list(REAGENT_ID_PACID = 5)
|
||||
var/list/items // example: = list(/obj/item/tool/crowbar, /obj/item/welder) Place /foo/bar before /foo. Do not include fruit. Maximum of 3 items.
|
||||
var/recipe_type = PS_RESULT_STACK // Are we producing a stack or an item?
|
||||
@@ -282,6 +283,7 @@
|
||||
var/required_atmos_temp_max = 600 // The maximum ambient atmospheric temperature required, in kelvin.
|
||||
var/probability = 0 // The probability for the recipe to be produced. 0 will make it impossible.
|
||||
var/item_consume_chance = 100 // The probability for the items (not materials) used in the recipe to be consume.
|
||||
var/wiki_flag = NONE
|
||||
|
||||
/datum/particle_smasher_recipe/proc/check_items(var/obj/container as obj)
|
||||
. = 1
|
||||
@@ -320,6 +322,7 @@
|
||||
return .
|
||||
|
||||
/datum/particle_smasher_recipe/deuterium_tritium
|
||||
display_name = MAT_TRITIUM + " from " + MAT_DEUTERIUM
|
||||
reagents = list(REAGENT_ID_HYDROGEN = 15)
|
||||
|
||||
result = /obj/item/stack/material/tritium
|
||||
@@ -332,6 +335,7 @@
|
||||
probability = 30
|
||||
|
||||
/datum/particle_smasher_recipe/verdantium_morphium
|
||||
display_name = MAT_MORPHIUM + " from " + MAT_VERDANTIUM
|
||||
result = /obj/item/stack/material/morphium
|
||||
required_material = /obj/item/stack/material/verdantium
|
||||
|
||||
@@ -340,6 +344,7 @@
|
||||
probability = 20
|
||||
|
||||
/datum/particle_smasher_recipe/plasteel_morphium
|
||||
display_name = MAT_MORPHIUM + " from Alien Junk"
|
||||
items = list(/obj/item/prop/alien/junk)
|
||||
|
||||
result = /obj/item/stack/material/morphium
|
||||
@@ -350,6 +355,7 @@
|
||||
probability = 10
|
||||
|
||||
/datum/particle_smasher_recipe/osmium_lead
|
||||
display_name = MAT_OSMIUM + " from " + MAT_LEAD
|
||||
reagents = list(REAGENT_ID_TUNGSTEN = 10)
|
||||
|
||||
result = /obj/item/stack/material/lead
|
||||
@@ -363,6 +369,7 @@
|
||||
probability = 50
|
||||
|
||||
/datum/particle_smasher_recipe/phoron_valhollide
|
||||
display_name = MAT_VALHOLLIDE + " from " + MAT_PHORON
|
||||
reagents = list(REAGENT_ID_PHORON = 10, REAGENT_ID_PACID = 10)
|
||||
|
||||
result = /obj/item/stack/material/valhollide
|
||||
@@ -376,6 +383,7 @@
|
||||
probability = 10
|
||||
|
||||
/datum/particle_smasher_recipe/valhollide_supermatter
|
||||
display_name = MAT_SUPERMATTER + " from " + MAT_VALHOLLIDE
|
||||
reagents = list(REAGENT_ID_PHORON = 300)
|
||||
|
||||
result = /obj/item/stack/material/supermatter
|
||||
@@ -389,6 +397,7 @@
|
||||
probability = 1
|
||||
|
||||
/datum/particle_smasher_recipe/donkpockets_coal
|
||||
display_name = "Ruined Donkpocket"
|
||||
items = list(/obj/item/reagent_containers/food/snacks/donkpocket)
|
||||
|
||||
recipe_type = PS_RESULT_ITEM
|
||||
@@ -404,6 +413,7 @@
|
||||
probability = 90
|
||||
|
||||
/datum/particle_smasher_recipe/donkpockets_ascend
|
||||
display_name = "Ascended Donkpocket"
|
||||
items = list(/obj/item/reagent_containers/food/snacks/donkpocket)
|
||||
reagents = list(REAGENT_ID_PHORON = 120)
|
||||
|
||||
@@ -420,6 +430,7 @@
|
||||
probability = 20
|
||||
|
||||
/datum/particle_smasher_recipe/glamour
|
||||
display_name = "Synthesize " + MAT_GLAMOUR
|
||||
items = list(/obj/item/glamour_unstable)
|
||||
|
||||
result = /obj/item/stack/material/glamour
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
log_game("SMES FAILURE: <b>[src.x]X [src.y]Y [src.z]Z</b> User: [h_user.ckey], Intensity: [intensity]/100")
|
||||
message_admins("SMES FAILURE: <b>[src.x]X [src.y]Y [src.z]Z</b> User: [h_user.ckey], Intensity: [intensity]/100 - <A href='byond://?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>")
|
||||
|
||||
var/used_hand = h_user.hand?"l_hand":"r_hand"
|
||||
var/used_hand = h_user.hand?BP_L_HAND:BP_R_HAND
|
||||
|
||||
switch (intensity)
|
||||
if (0 to 15)
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
if((CLUMSY in M.mutations) && prob(40)) //Clumsy handling
|
||||
var/obj/P = consume_next_projectile()
|
||||
if(P)
|
||||
if(process_projectile(P, user, user, pick("l_foot", "r_foot")))
|
||||
if(process_projectile(P, user, user, pick(BP_L_FOOT, BP_R_FOOT)))
|
||||
handle_post_fire(user, user)
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message(
|
||||
@@ -729,7 +729,7 @@
|
||||
in_chamber.on_hit(M)
|
||||
if(in_chamber.damage_type != HALLOSS && !in_chamber.nodamage)
|
||||
log_and_message_admins("commited suicide using \a [src]", user)
|
||||
user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", sharp = TRUE, used_weapon = src)
|
||||
user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, BP_HEAD, sharp = TRUE, used_weapon = src)
|
||||
user.death()
|
||||
else if(in_chamber.damage_type == HALLOSS)
|
||||
to_chat(user, span_notice("Ow..."))
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
idle_power_usage = 20
|
||||
clicksound = "button"
|
||||
var/analyzing = FALSE
|
||||
var/list/found_reagents = list()
|
||||
|
||||
/obj/machinery/chemical_analyzer/update_icon()
|
||||
icon_state = "chem_analyzer[analyzing ? "-working":""]"
|
||||
@@ -26,7 +27,6 @@
|
||||
return
|
||||
if(default_deconstruction_crowbar(user, I))
|
||||
return
|
||||
|
||||
if(istype(I,/obj/item/reagent_containers))
|
||||
analyzing = TRUE
|
||||
update_icon()
|
||||
@@ -45,153 +45,55 @@
|
||||
I.identify(IDENTITY_FULL, user)
|
||||
|
||||
// Now tell us everything that is inside.
|
||||
var/final_message = ""
|
||||
if(I.reagents && I.reagents.reagent_list.len)
|
||||
final_message += "<br>" // To add padding between regular chat and the output.
|
||||
found_reagents.Cut()
|
||||
for(var/datum/reagent/R in I.reagents.reagent_list)
|
||||
if(!R.name)
|
||||
continue
|
||||
final_message += span_notice("*=*=*=*= Contains " + span_info("[R.volume]u") + " of " + span_bold(span_underline("[R.name]")) + " =*=*=*=*<br>[R.description][R.from_belly ? " Something seems strange about it...? (OOC: It's from a belly!)" : ""]<br><br>")
|
||||
/* Downstream addiction code
|
||||
if(R.id in addictives)
|
||||
final_message += span_boldnotice(span_red("DANGER") + ", [(R.id in fast_addictives) ? "highly " : ""]addictive.)") + "<br>"
|
||||
*/
|
||||
var/list/products = SSchemistry.chemical_reactions_by_product[R.id]
|
||||
if(products != null && products.len > 0)
|
||||
var/segment = 1
|
||||
var/list/display_reactions = list()
|
||||
for(var/decl/chemical_reaction/CR in products)
|
||||
// if(!CR.spoiler) - Downstream self documenting wiki code
|
||||
display_reactions.Add(CR)
|
||||
for(var/decl/chemical_reaction/CR in display_reactions)
|
||||
if(display_reactions.len == 1)
|
||||
final_message += span_underline("Potential Chemical breakdown: <br>")
|
||||
else
|
||||
final_message += span_underline("Potential Chemical breakdown [segment]: <br>")
|
||||
segment += 1
|
||||
found_reagents[R.id] = R.volume
|
||||
tgui_interact(user)
|
||||
else
|
||||
to_chat(user, span_warning("Nothing detected in [I]"))
|
||||
|
||||
if(istype(CR,/decl/chemical_reaction/instant/slime))
|
||||
// Handle slimes
|
||||
var/decl/chemical_reaction/instant/slime/SR = CR
|
||||
if(SR.required)
|
||||
var/slime_path = SR.required
|
||||
final_message += " -core [span_info(initial(slime_path:name))]<br>"
|
||||
for(var/RQ in CR.required_reagents)
|
||||
var/decl/chemical_reaction/r_RQ = SSchemistry.chemical_reagents[RQ]
|
||||
if(!r_RQ)
|
||||
continue
|
||||
final_message += " -inducer [span_info(r_RQ.name)]<br>"
|
||||
else
|
||||
// Standard
|
||||
for(var/RQ in CR.required_reagents)
|
||||
var/decl/chemical_reaction/r_RQ = SSchemistry.chemical_reagents[RQ]
|
||||
if(!r_RQ)
|
||||
continue
|
||||
final_message += " -parts [span_info(r_RQ.name)]<br>"
|
||||
for(var/IH in CR.inhibitors)
|
||||
var/decl/chemical_reaction/r_IH = SSchemistry.chemical_reagents[IH]
|
||||
if(!r_IH)
|
||||
continue
|
||||
final_message += " -inhbi [span_info(r_IH.name)]<br>"
|
||||
for(var/CL in CR.catalysts)
|
||||
var/decl/chemical_reaction/r_CL = SSchemistry.chemical_reagents[CL]
|
||||
if(!r_CL)
|
||||
continue
|
||||
final_message += " -catyl [span_info(r_CL.name)]<br>"
|
||||
final_message += "<br>"
|
||||
else
|
||||
final_message += span_underline("Potential Chemical breakdown:") + "<br>" + span_red("UNKNOWN OR BASE-REAGENT") + "<br><br>"
|
||||
var/list/distilled_products = SSchemistry.distilled_reactions_by_product[R.id]
|
||||
if(distilled_products != null && distilled_products.len > 0)
|
||||
var/segment = 1
|
||||
|
||||
var/list/display_reactions = list()
|
||||
for(var/decl/chemical_reaction/distilling/CR in distilled_products)
|
||||
// if(!CR.spoiler) - Downstream self documenting wiki code
|
||||
display_reactions.Add(CR)
|
||||
|
||||
for(var/decl/chemical_reaction/distilling/CR in display_reactions)
|
||||
if(display_reactions.len == 1)
|
||||
final_message += span_underline("Potential Chemical Distillation: <br>")
|
||||
else
|
||||
final_message += span_underline("Potential Chemical Distillation [segment]: <br>")
|
||||
segment += 1
|
||||
|
||||
final_message += " -temps " + span_info("[CR.temp_range[1]]k") + " - " + span_info("[CR.temp_range[2]]k") + "<br>"
|
||||
|
||||
for(var/RQ in CR.required_reagents)
|
||||
var/decl/chemical_reaction/r_RQ = SSchemistry.chemical_reagents[RQ]
|
||||
if(!r_RQ)
|
||||
continue
|
||||
final_message += " -parts [span_info(r_RQ.name)]<br>"
|
||||
for(var/IH in CR.inhibitors)
|
||||
var/decl/chemical_reaction/r_IH = SSchemistry.chemical_reagents[IH]
|
||||
if(!r_IH)
|
||||
continue
|
||||
final_message += " -inhbi [span_info(r_IH.name)]<br>"
|
||||
for(var/CL in CR.catalysts)
|
||||
var/decl/chemical_reaction/r_CL = SSchemistry.chemical_reagents[CL]
|
||||
if(!r_CL)
|
||||
continue
|
||||
final_message += " -catyl [span_info(r_CL.name)]<br>"
|
||||
final_message += "<br>"
|
||||
|
||||
// We can get some reagents by grinding sheets and ores!
|
||||
var/grind_results = ""
|
||||
for(var/source in global.sheet_reagents)
|
||||
if(R.id in global.sheet_reagents[source])
|
||||
var/nm = initial(source:name)
|
||||
grind_results += " -grind [span_info(nm)]<br>"
|
||||
if(grind_results != "")
|
||||
final_message += span_underline("Material Sources: <br>")
|
||||
final_message += grind_results
|
||||
final_message += "<br>"
|
||||
|
||||
grind_results = ""
|
||||
for(var/source in global.ore_reagents)
|
||||
if(R.id in global.ore_reagents[source])
|
||||
var/nm = initial(source:name)
|
||||
grind_results += " -grind [span_info(nm)]<br>"
|
||||
if(grind_results != "")
|
||||
final_message += span_underline("Ore Sources: <br>")
|
||||
final_message += grind_results
|
||||
final_message += "<br>"
|
||||
|
||||
// The long forgotten fluid pumps!
|
||||
// TODO : Update turfs to provide what their fluidpump outputs are too
|
||||
var/pump_results = ""
|
||||
for(var/O in GLOB.ore_data)
|
||||
var/ore/OR = GLOB.ore_data[O]
|
||||
if(OR.reagent == R.id)
|
||||
pump_results += " -erosion [span_info(OR.display_name)]<br>"
|
||||
if(pump_results != "")
|
||||
final_message += span_underline("Fluid Pump Filtrate: <br>")
|
||||
final_message += pump_results
|
||||
final_message += "<br>"
|
||||
|
||||
var/makes_result = ""
|
||||
var/list/instant_by_reagent = SSchemistry.instant_reactions_by_reagent["[R.id]"]
|
||||
if(instant_by_reagent && instant_by_reagent.len)
|
||||
for(var/i = 1, i <= instant_by_reagent.len, i++)
|
||||
var/decl/chemical_reaction/OR = instant_by_reagent[i]
|
||||
if(istype(OR,/decl/chemical_reaction/instant/slime)) // very bloated and meant to be a mystery
|
||||
continue
|
||||
makes_result += " -[span_info(OR.name)]<br>"
|
||||
|
||||
var/list/distilled_by_reagent = SSchemistry.distilled_reactions_by_reagent["[R.id]"]
|
||||
if(distilled_by_reagent && distilled_by_reagent.len)
|
||||
for(var/i = 1, i <= distilled_by_reagent.len, i++)
|
||||
var/decl/chemical_reaction/OR = distilled_by_reagent[i]
|
||||
makes_result += " -[span_info(OR.name)]<br>"
|
||||
|
||||
if(makes_result != "")
|
||||
final_message += span_underline("Can Be Used To Produce: <br>")
|
||||
final_message += makes_result
|
||||
final_message += "<br>"
|
||||
|
||||
final_message += "Scanning of \the [I] complete."
|
||||
|
||||
to_chat(user, span_notice(final_message))
|
||||
analyzing = FALSE
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/machinery/chemical_analyzer/attack_hand(mob/user)
|
||||
if(!found_reagents.len)
|
||||
return ..()
|
||||
tgui_interact(user) // Show last analysis
|
||||
|
||||
/obj/machinery/chemical_analyzer/tgui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "ChemAnalyzerPro", name)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/chemical_analyzer/tgui_data(mob/user)
|
||||
var/list/data = list()
|
||||
|
||||
var/total_vol = 0
|
||||
var/list/reagents_sent = list()
|
||||
var/obj/item/reagent_containers/glass/beaker/large/beaker_path = /obj/item/reagent_containers/glass/beaker/large
|
||||
for(var/ID in found_reagents)
|
||||
var/datum/reagent/R = SSchemistry.chemical_reagents[ID]
|
||||
if(!R)
|
||||
continue
|
||||
var/list/subdata = list()
|
||||
subdata["title"] = R.name
|
||||
SSinternal_wiki.add_icon(subdata, initial(beaker_path.icon), initial(beaker_path.icon_state), R.color)
|
||||
// Get internal data
|
||||
subdata["description"] = R.description
|
||||
subdata["flavor"] = R.taste_description
|
||||
subdata["allergen"] = SSinternal_wiki.assemble_allergens(R.allergen_type)
|
||||
subdata["beakerAmount"] = found_reagents[ID]
|
||||
total_vol += found_reagents[ID]
|
||||
SSinternal_wiki.assemble_reaction_data(subdata, R)
|
||||
// Send as a big list of lists
|
||||
reagents_sent += list(subdata)
|
||||
data["scannedReagents"] = reagents_sent
|
||||
data["beakerTotal"] = total_vol
|
||||
data["beakerMax"] = initial(beaker_path.volume)
|
||||
|
||||
return data
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
var/reaction_sound = 'sound/effects/bubbles.ogg'
|
||||
|
||||
var/log_is_important = 0 // If this reaction should be considered important for logging. Important recipes message admins when mixed, non-important ones just log to file.
|
||||
var/wiki_flag = 0
|
||||
|
||||
/decl/chemical_reaction/proc/can_happen(var/datum/reagents/holder)
|
||||
//check that all the required reagents are present
|
||||
|
||||
@@ -1325,14 +1325,14 @@
|
||||
result_amount = 15
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/nuclearwaste_radium
|
||||
name = REAGENT_NUCLEARWASTE
|
||||
name = REAGENT_NUCLEARWASTE + " 226"
|
||||
id = "nuclearwasterad"
|
||||
result = REAGENT_ID_NUCLEARWASTE
|
||||
required_reagents = list(REAGENT_ID_OILSLICK = 1, REAGENT_ID_RADIUM = 1, REAGENT_ID_LIMEJUICE = 1)
|
||||
result_amount = 2
|
||||
|
||||
/decl/chemical_reaction/instant/drinks/nuclearwaste_uranium
|
||||
name = REAGENT_NUCLEARWASTE
|
||||
name = REAGENT_NUCLEARWASTE + " 238"
|
||||
id = "nuclearwasteuran"
|
||||
result = REAGENT_ID_NUCLEARWASTE
|
||||
required_reagents = list(REAGENT_ID_OILSLICK = 2, REAGENT_ID_URANIUM = 1)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/decl/chemical_reaction/instant/food
|
||||
name = REAGENT_DEVELOPER_WARNING // Unit test ignore
|
||||
wiki_flag = WIKI_FOOD
|
||||
|
||||
/decl/chemical_reaction/instant/food/hot_ramen
|
||||
name = REAGENT_HOTRAMEN
|
||||
@@ -30,7 +31,7 @@
|
||||
return
|
||||
|
||||
/decl/chemical_reaction/instant/food/chocolate_bar
|
||||
name = "Chocolate Bar"
|
||||
name = "Chocolate Bar Soy"
|
||||
id = "chocolate_bar_soy"
|
||||
result = null
|
||||
required_reagents = list(REAGENT_ID_SOYMILK = 2, REAGENT_ID_COCO = 2, REAGENT_ID_SUGAR = 2)
|
||||
@@ -44,7 +45,7 @@
|
||||
return
|
||||
|
||||
/decl/chemical_reaction/instant/food/chocolate_bar2
|
||||
name = "Chocolate Bar"
|
||||
name = "Chocolate Bar Milk"
|
||||
id = "chocolate_bar_milk"
|
||||
result = null
|
||||
required_reagents = list(REAGENT_ID_MILK = 2, REAGENT_ID_COCO = 2, REAGENT_ID_SUGAR = 2)
|
||||
@@ -58,7 +59,7 @@
|
||||
return
|
||||
|
||||
/decl/chemical_reaction/instant/food/cookingoilcorn
|
||||
name = REAGENT_COOKINGOIL
|
||||
name = "corn " + REAGENT_COOKINGOIL
|
||||
id = "cookingoilcorn"
|
||||
result = REAGENT_ID_COOKINGOIL
|
||||
required_reagents = list(REAGENT_ID_CORNOIL = 10)
|
||||
@@ -66,7 +67,7 @@
|
||||
result_amount = 10
|
||||
|
||||
/decl/chemical_reaction/instant/food/cookingoilpeanut
|
||||
name = REAGENT_COOKINGOIL
|
||||
name = "peanut " + REAGENT_ID_COOKINGOIL
|
||||
id = "cookingoilpeanut"
|
||||
result = REAGENT_ID_COOKINGOIL
|
||||
required_reagents = list(REAGENT_ID_PEANUTOIL = 10)
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
var/list/glass_special = null // null equivalent to list()
|
||||
|
||||
var/from_belly = FALSE
|
||||
var/wiki_flag = 0 // Bitflags for secret/food/drink reagent sorting
|
||||
|
||||
/datum/reagent/proc/remove_self(var/amount) // Shortcut
|
||||
if(holder)
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
allergen_factor = 1 //simulates mixed drinks containing less of the allergen, as they have only a single actual reagent unlike food
|
||||
|
||||
affects_robots = 1 //kiss my shiny metal ass
|
||||
wiki_flag = WIKI_DRINK
|
||||
|
||||
/datum/reagent/ethanol/touch_mob(var/mob/living/L, var/amount)
|
||||
..()
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
sober_message_list = list("Everything feels a little more grounded.",
|
||||
"Colors seem... flatter.",
|
||||
"Everything feels a little dull, now.")
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/drugs/bliss/affect_blood(mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
var/injectable = 0
|
||||
color = "#664330"
|
||||
affects_robots = 1 //VOREStation Edit
|
||||
wiki_flag = WIKI_FOOD
|
||||
|
||||
/datum/reagent/nutriment/mix_data(var/list/newdata, var/newamount)
|
||||
|
||||
@@ -411,6 +412,7 @@
|
||||
nutriment_factor = 1
|
||||
color = "#482000"
|
||||
allergen_type = ALLERGEN_COFFEE | ALLERGEN_STIMULANT //Again, coffee contains coffee
|
||||
wiki_flag = WIKI_DRINK
|
||||
|
||||
/datum/reagent/nutriment/tea
|
||||
name = REAGENT_TEAPOWDER
|
||||
@@ -421,6 +423,7 @@
|
||||
nutriment_factor = 1
|
||||
color = "#101000"
|
||||
allergen_type = ALLERGEN_STIMULANT //Strong enough to contain caffeine
|
||||
wiki_flag = WIKI_DRINK
|
||||
|
||||
/datum/reagent/nutriment/decaf_tea
|
||||
name = REAGENT_DECAFTEAPOWDER
|
||||
@@ -430,6 +433,7 @@
|
||||
taste_mult = 1.3
|
||||
nutriment_factor = 1
|
||||
color = "#101000"
|
||||
wiki_flag = WIKI_DRINK
|
||||
|
||||
/datum/reagent/nutriment/coco
|
||||
name = REAGENT_COCO
|
||||
@@ -461,6 +465,7 @@
|
||||
taste_mult = 1.3
|
||||
nutriment_factor = 1
|
||||
allergen_type = ALLERGEN_FRUIT //I suppose it's implied here that the juice is from dehydrated fruit.
|
||||
wiki_flag = WIKI_DRINK
|
||||
|
||||
/datum/reagent/nutriment/instantjuice/grape
|
||||
name = REAGENT_INSTANTGRAPE
|
||||
@@ -691,6 +696,7 @@
|
||||
ingest_met = REM
|
||||
color = "#000000"
|
||||
cup_prefix = "peppery"
|
||||
wiki_flag = WIKI_FOOD
|
||||
|
||||
/datum/reagent/enzyme
|
||||
name = REAGENT_ENZYME
|
||||
@@ -701,6 +707,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#365E30"
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
wiki_flag = WIKI_FOOD
|
||||
|
||||
/datum/reagent/spacespice
|
||||
name = REAGENT_SPACESPICE
|
||||
@@ -709,6 +716,7 @@
|
||||
reagent_state = SOLID
|
||||
color = "#e08702"
|
||||
cup_prefix = "spicy"
|
||||
wiki_flag = WIKI_FOOD
|
||||
|
||||
/datum/reagent/browniemix
|
||||
name = REAGENT_BROWNIEMIX
|
||||
@@ -717,6 +725,7 @@
|
||||
reagent_state = SOLID
|
||||
color = "#441a03"
|
||||
allergen_type = ALLERGEN_CHOCOLATE
|
||||
wiki_flag = WIKI_FOOD
|
||||
|
||||
/datum/reagent/cakebatter
|
||||
name = REAGENT_CAKEBATTER
|
||||
@@ -724,6 +733,7 @@
|
||||
description = "A batter for making delicious cakes."
|
||||
reagent_state = LIQUID
|
||||
color = "#F0EDDA"
|
||||
wiki_flag = WIKI_FOOD
|
||||
|
||||
/datum/reagent/frostoil
|
||||
name = REAGENT_FROSTOIL
|
||||
@@ -734,6 +744,7 @@
|
||||
reagent_state = LIQUID
|
||||
ingest_met = REM
|
||||
color = "#B31008"
|
||||
wiki_flag = WIKI_FOOD
|
||||
|
||||
/datum/reagent/frostoil/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
@@ -783,6 +794,7 @@
|
||||
ingest_met = REM
|
||||
color = "#B31008"
|
||||
cup_prefix = "hot"
|
||||
wiki_flag = WIKI_FOOD
|
||||
|
||||
/datum/reagent/capsaicin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
@@ -970,6 +982,7 @@
|
||||
var/adj_temp = 0
|
||||
var/nutriment_factor = 0 //CHOMPStation addition
|
||||
var/water_based = TRUE
|
||||
wiki_flag = WIKI_DRINK
|
||||
|
||||
/datum/reagent/drink/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/strength_mod = 1
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
taste_mult = 1.3
|
||||
nutriment_factor = 5
|
||||
color = "#fff200"
|
||||
wiki_flag = WIKI_DRINK
|
||||
|
||||
/datum/reagent/lipozine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.adjust_nutrition(-20 * removed)
|
||||
@@ -543,6 +544,7 @@
|
||||
id = REAGENT_ID_BRAINPROTEIN
|
||||
taste_description = "fatty, mushy meat and allspice"
|
||||
color = "#caa3c9"
|
||||
wiki_flag = WIKI_FOOD|WIKI_SPOILER
|
||||
|
||||
/datum/reagent/nutriment/protein/brainzsnax/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
@@ -580,6 +582,7 @@
|
||||
description = "A mixture of water and protein commonly used as a meal supplement."
|
||||
taste_description = "pure protein"
|
||||
color = "#ebd8cb"
|
||||
wiki_flag = WIKI_DRINK
|
||||
|
||||
/datum/reagent/nutriment/protein_powder/vanilla
|
||||
name = REAGENT_VANILLAPROTEINPOWDER
|
||||
|
||||
@@ -1392,6 +1392,7 @@
|
||||
metabolism = REM * 4 // Nanomachines gotta go fast.
|
||||
scannable = 1
|
||||
affects_robots = TRUE
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/healing_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.heal_organ_damage(2 * removed, 2 * removed)
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
mrate_static = TRUE
|
||||
overdose = 20 //High OD. This is to make numbing bites have somewhat of a downside if you get bit too much. Have to go to medical for dialysis.
|
||||
scannable = 0 //Let's not have medical mechs able to make an extremely strong organic painkiller
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/numbing_enzyme/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 200)
|
||||
|
||||
@@ -176,6 +176,7 @@
|
||||
|
||||
glass_name = "liquid gold"
|
||||
glass_desc = "It's magic. We don't have to explain it."
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/adminordrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
affect_blood(M, alien, removed)
|
||||
@@ -316,6 +317,7 @@
|
||||
affects_robots = TRUE
|
||||
description = "The immense power of a supermatter crystal, in liquid form. You're not entirely sure how that's possible, but it's probably best handled with care."
|
||||
taste_description = "taffy" // 0. The supermatter is tasty, tasty taffy.
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
// Same as if you boop it wrong. It touches you, you die
|
||||
/datum/reagent/supermatter/affect_touch(mob/living/carbon/M, alien, removed)
|
||||
@@ -357,6 +359,7 @@
|
||||
|
||||
glass_name = "holy water"
|
||||
glass_desc = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality."
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/water/holywater/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
@@ -651,6 +654,7 @@
|
||||
color = "#333333"
|
||||
metabolism = REM * 3 // Broken nanomachines go a bit slower.
|
||||
scannable = 1
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/defective_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.take_organ_damage(2 * removed, 2 * removed)
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
color = "#333333"
|
||||
scannable = 1
|
||||
affects_robots = TRUE
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/nif_repair_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(ishuman(M))
|
||||
|
||||
@@ -73,6 +73,7 @@
|
||||
color = "#005555"
|
||||
strength = 8
|
||||
skin_danger = 0.4
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/toxin/neurotoxic_protein/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_CHIMERA)
|
||||
@@ -201,6 +202,7 @@
|
||||
taste_description = "mold"
|
||||
reagent_state = SOLID
|
||||
strength = 5
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/toxin/mold/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
@@ -215,6 +217,7 @@
|
||||
reagent_state = LIQUID
|
||||
strength = 5
|
||||
filtered_organs = list(O_SPLEEN)
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/toxin/expired_medicine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
@@ -484,6 +487,7 @@
|
||||
color = "#664330"
|
||||
power = 2
|
||||
meltdose = 30
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/acid/diet_digestive
|
||||
name = REAGENT_DIETSTOMACID
|
||||
@@ -494,6 +498,7 @@
|
||||
color = "#664330"
|
||||
power = 0.4
|
||||
meltdose = 150
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/thermite/venom
|
||||
name = REAGENT_THERMITEV
|
||||
@@ -503,6 +508,7 @@
|
||||
reagent_state = SOLID
|
||||
color = "#673910"
|
||||
touch_met = 50
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/thermite/venom/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.adjustFireLoss(3 * removed)
|
||||
@@ -524,6 +530,7 @@
|
||||
taste_description = "fire"
|
||||
color = "#B31008"
|
||||
filtered_organs = list(O_SPLEEN)
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/condensedcapsaicin/venom/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
@@ -635,6 +642,7 @@
|
||||
taste_mult = 1.3
|
||||
reagent_state = LIQUID
|
||||
color = "#801E28"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/slimejelly/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
@@ -762,6 +770,7 @@
|
||||
|
||||
glass_name = REAGENT_ID_BEER
|
||||
glass_desc = "A freezing pint of beer"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/* Drugs */
|
||||
|
||||
@@ -774,6 +783,7 @@
|
||||
color = "#202040"
|
||||
metabolism = REM * 0.25
|
||||
overdose = REAGENTS_OVERDOSE
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/serotrotium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
@@ -876,6 +886,7 @@
|
||||
taste_description = "sludge"
|
||||
reagent_state = LIQUID
|
||||
color = "#13BC5E"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/slimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(M.isSynthetic())
|
||||
@@ -902,6 +913,7 @@
|
||||
taste_description = "sludge"
|
||||
reagent_state = LIQUID
|
||||
color = "#FF69B4"
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/aslimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(M.isSynthetic())
|
||||
@@ -935,6 +947,7 @@
|
||||
color = "#555555"
|
||||
metabolism = REM * 4 // Nanomachines. Fast.
|
||||
affects_robots = TRUE
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/shredding_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.adjustBruteLoss(4 * removed)
|
||||
@@ -949,6 +962,7 @@
|
||||
color = "#555555"
|
||||
metabolism = REM * 4
|
||||
affects_robots = TRUE
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/irradiated_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
SSradiation.radiate(get_turf(M), 20) // Irradiate people around you.
|
||||
@@ -964,6 +978,7 @@
|
||||
metabolism = REM * 4
|
||||
filtered_organs = list(O_SPLEEN)
|
||||
affects_robots = TRUE
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/neurophage_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.adjustBrainLoss(2 * removed) // Their job is to give you a bad time.
|
||||
@@ -976,6 +991,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#1E4600"
|
||||
taste_mult = 0
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/salmonella/on_mob_life(mob/living/carbon/M)
|
||||
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
color = "#D18AA5"
|
||||
|
||||
/datum/reagent/toxin/phoron/phoronvirusfood
|
||||
name = REAGENT_ADRANOLVIRUSFOOD
|
||||
name = REAGENT_PHORONVIRUSFOOD
|
||||
id = REAGENT_ID_PHORONVIRUSFOOD
|
||||
description = "Mutates viruses when mixed in blood. This one seems to be the strongest."
|
||||
color = "#A69DA9"
|
||||
|
||||
@@ -88,12 +88,12 @@
|
||||
switch(damage_type)
|
||||
if("BRUTE")
|
||||
H.visible_message(span_danger("\The [src] creaks as it ravages [H]'s hands!"))
|
||||
H.apply_damage(rand(min_damage,max_damage), BRUTE, "r_hand", used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BRUTE, "l_hand", used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BRUTE, BP_R_HAND, used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BRUTE, BP_L_HAND, used_weapon=src)
|
||||
if("BURN")
|
||||
H.visible_message(span_danger("\The [src] flashes as it scorches [H]'s hands!"))
|
||||
H.apply_damage(rand(min_damage,max_damage), BURN, "r_hand", used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BURN, "l_hand", used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BURN, BP_R_HAND, used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BURN, BP_L_HAND, used_weapon=src)
|
||||
if("TOX")
|
||||
H.visible_message(span_danger("\The [src] seethes and hisses like burning acid!"))
|
||||
if(!H.isSynthetic())
|
||||
@@ -145,12 +145,12 @@
|
||||
switch(damage_type)
|
||||
if("BRUTE")
|
||||
H.visible_message(span_danger("\The [src] creaks as it ravages [H]'s hands!"))
|
||||
H.apply_damage(rand(min_damage,max_damage), BRUTE, "r_hand", used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BRUTE, "l_hand", used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BRUTE, BP_R_HAND, used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BRUTE, BP_L_HAND, used_weapon=src)
|
||||
if("BURN")
|
||||
H.visible_message(span_danger("\The [src] flashes as it scorches [H]'s hands!"))
|
||||
H.apply_damage(rand(min_damage,max_damage), BURN, "r_hand", used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BURN, "l_hand", used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BURN, BP_R_HAND, used_weapon=src)
|
||||
H.apply_damage(rand(min_damage,max_damage), BURN, BP_L_HAND, used_weapon=src)
|
||||
if("TOX")
|
||||
H.visible_message(span_danger("\The [src] seethes and hisses like burning acid!"))
|
||||
if(!H.isSynthetic())
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
/datum/surgery_step/cavity/implant_removal/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if(affected.organ_tag == BP_HEAD)
|
||||
var/obj/item/organ/internal/brain/sponge = target.internal_organs_by_name["brain"]
|
||||
var/obj/item/organ/internal/brain/sponge = target.internal_organs_by_name[O_BRAIN]
|
||||
return ..() && (!sponge || !sponge.damage)
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -533,12 +533,12 @@
|
||||
user.balloon_alert(user, "you cannot install a computer brain into a meat skull") // CHOMPEdit
|
||||
return SURGERY_FAILURE
|
||||
|
||||
if(!target.should_have_organ("brain"))
|
||||
if(!target.should_have_organ(O_BRAIN))
|
||||
to_chat(user, span_danger("You're pretty sure [target.species.name_plural] don't normally have a brain."))
|
||||
user.balloon_alert(user, "you're pertty sure [target.species.name_plural] don't normall have a brain") // CHOMPEdit
|
||||
return SURGERY_FAILURE
|
||||
|
||||
if(!isnull(target.internal_organs["brain"]))
|
||||
if(!isnull(target.internal_organs[O_BRAIN]))
|
||||
to_chat(user, span_danger("Your subject already has a brain."))
|
||||
user.balloon_alert(user, "your subject already has a brain") // CHOMPEdit
|
||||
return SURGERY_FAILURE
|
||||
@@ -572,7 +572,7 @@
|
||||
else
|
||||
holder = new /obj/item/organ/internal/mmi_holder(target, 1, M) // Fallback to old behavior if organic MMI or if no subtype exists.
|
||||
//VOREstation edit end
|
||||
target.internal_organs_by_name["brain"] = holder
|
||||
target.internal_organs_by_name[O_BRAIN] = holder
|
||||
|
||||
if(M.brainmob && M.brainmob.mind)
|
||||
M.brainmob.mind.transfer_to(target)
|
||||
@@ -640,12 +640,12 @@
|
||||
user.balloon_alert(user, "you're fairly certain a nymph can't pilot a normal robot") // CHOMPEdit
|
||||
return SURGERY_FAILURE
|
||||
|
||||
if(!target.should_have_organ("brain"))
|
||||
if(!target.should_have_organ(O_BRAIN))
|
||||
to_chat(user, span_danger("You're pretty sure [target.species.name_plural] don't normally have a brain."))
|
||||
user.balloon_alert(user, "you're pretty sure [target.species.name_plural] don't normall have a brain") // CHOMPEdit
|
||||
return SURGERY_FAILURE
|
||||
|
||||
if(!isnull(target.internal_organs["brain"]))
|
||||
if(!isnull(target.internal_organs[O_BRAIN]))
|
||||
to_chat(user, span_danger("Your subject already has a cephalon."))
|
||||
user.balloon_alert(user, "your subject already has a cephalon") // CHOMPEdit
|
||||
return SURGERY_FAILURE
|
||||
@@ -667,7 +667,7 @@
|
||||
|
||||
var/obj/item/holder/diona/N = tool
|
||||
var/obj/item/organ/internal/brain/cephalon/cephalon = new(target, 1)
|
||||
target.internal_organs_by_name["brain"] = cephalon
|
||||
target.internal_organs_by_name[O_BRAIN] = cephalon
|
||||
var/mob/living/carbon/alien/diona/D = N.held_mob
|
||||
user.drop_from_inventory(tool)
|
||||
|
||||
|
||||
@@ -687,6 +687,8 @@
|
||||
var/list/usable_markings = markings.Copy() ^ body_marking_styles_list.Copy()
|
||||
var/marking_styles[0]
|
||||
for(var/marking_style in usable_markings)
|
||||
if(marking_style == DEVELOPER_WARNING_NAME)
|
||||
continue
|
||||
var/datum/sprite_accessory/marking/S = body_marking_styles_list[marking_style]
|
||||
var/our_iconstate = S.icon_state
|
||||
if(LAZYLEN(S.body_parts))
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
if(!job.minimum_character_age && !job.min_age_by_species)
|
||||
return TRUE
|
||||
|
||||
var/min_age = job.get_min_age(prefs.species, prefs.organ_data["brain"])
|
||||
var/min_age = job.get_min_age(prefs.species, prefs.organ_data[O_BRAIN])
|
||||
if(prefs.read_preference(/datum/preference/numeric/human/age) >= min_age)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -1536,7 +1536,7 @@
|
||||
holder = holdertmp
|
||||
else
|
||||
holder = new(body_backup, 1)
|
||||
body_backup.internal_organs_by_name["brain"] = holder
|
||||
body_backup.internal_organs_by_name[O_BRAIN] = holder
|
||||
MMI.loc = holder
|
||||
holder.stored_mmi = MMI
|
||||
holder.update_from_mmi()
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
return
|
||||
if (hasorgans(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/obj/item/organ/external/temp = H.organs_by_name["r_hand"]
|
||||
var/obj/item/organ/external/temp = H.organs_by_name[BP_R_HAND]
|
||||
if (user.hand)
|
||||
temp = H.organs_by_name["l_hand"]
|
||||
temp = H.organs_by_name[BP_L_HAND]
|
||||
if(temp && !temp.is_usable())
|
||||
to_chat(user, span_notice("You try to move your [temp.name], but cannot!"))
|
||||
return
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
/obj/item/melee/artifact_blade/attack(mob/living/M, mob/living/user, var/target_zone)
|
||||
if(M == user) //No accidentally hitting yourself and exploding.
|
||||
return
|
||||
var/zone = (user.hand ? "l_arm":"r_arm") //Which arm we're in!
|
||||
var/zone = (user.hand ? BP_L_ARM:BP_R_ARM) //Which arm we're in!
|
||||
var/prior_force = force
|
||||
if(empowered)
|
||||
force = force*2
|
||||
|
||||
@@ -655,6 +655,7 @@
|
||||
description = "A slimy liquid which appears to rapidly clot internal hemorrhages by increasing the effectiveness of platelets at low quantities. Toxic in high quantities."
|
||||
taste_description = "slime"
|
||||
overdose = 5
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/osteodaxon/slime
|
||||
name = REAGENT_SLIMEBONEFIXER
|
||||
@@ -662,6 +663,7 @@
|
||||
description = "A slimy liquid which can be used to heal bone fractures at low quantities. Toxic in high quantities."
|
||||
taste_description = "slime"
|
||||
overdose = 5
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
/datum/reagent/peridaxon/slime
|
||||
name = REAGENT_SLIMEORGANFIXER
|
||||
@@ -669,6 +671,7 @@
|
||||
description = "A slimy liquid which is used to encourage recovery of internal organs and nervous systems in low quantities. Toxic in high quantities."
|
||||
taste_description = "slime"
|
||||
overdose = 5
|
||||
wiki_flag = WIKI_SPOILER
|
||||
|
||||
|
||||
// **************
|
||||
|
||||
@@ -218,3 +218,4 @@
|
||||
color = "#FABA3A"
|
||||
nutriment_factor = 30
|
||||
taste_description = "slimy nectar"
|
||||
wiki_flag = WIKI_FOOD|WIKI_SPOILER
|
||||
|
||||
Reference in New Issue
Block a user