Merge branch 'master' into master

This commit is contained in:
Thalpy
2019-07-06 16:03:17 +01:00
committed by GitHub
34 changed files with 248 additions and 34 deletions
@@ -18,7 +18,7 @@
/datum/antagonist/traitor/on_gain()
if(owner.current && isAI(owner.current))
traitor_kind = TRAITOR_AI
SSticker.mode.traitors += owner
owner.special_role = special_role
if(give_objectives)
@@ -48,7 +48,7 @@
A.verbs -= /mob/living/silicon/ai/proc/choose_modules
A.malf_picker.remove_malf_verbs(A)
qdel(A.malf_picker)
SSticker.mode.traitors -= owner
if(!silent && owner.current)
to_chat(owner.current,"<span class='userdanger'> You are no longer the [special_role]! </span>")
@@ -244,14 +244,16 @@
return
var/mob/traitor_mob=owner.current
to_chat(traitor_mob, "<U><B>The Syndicate provided you with the following information on how to identify their agents:</B></U>")
to_chat(traitor_mob, "<B>Code Phrase</B>: <span class='danger'>[GLOB.syndicate_code_phrase]</span>")
to_chat(traitor_mob, "<B>Code Response</B>: <span class='danger'>[GLOB.syndicate_code_response]</span>")
var/phrases = jointext(GLOB.syndicate_code_phrase, ", ")
var/responses = jointext(GLOB.syndicate_code_response, ", ")
antag_memory += "<b>Code Phrase</b>: [GLOB.syndicate_code_phrase]<br>"
antag_memory += "<b>Code Response</b>: [GLOB.syndicate_code_response]<br>"
var/dat = "<U><B>The Syndicate have provided you with the following codewords to identify fellow agents:</B></U>\n"
dat += "<B>Code Phrase</B>: <span class='blue'>[phrases]</span>\n"
dat += "<B>Code Response</B>: <span class='red'>[responses]</span>"
to_chat(traitor_mob, dat)
to_chat(traitor_mob, "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe.")
antag_memory += "<b>Code Phrase</b>: <span class='blue'>[phrases]</span><br>"
antag_memory += "<b>Code Response</b>: <span class='red'>[responses]</span><br>"
/datum/antagonist/traitor/proc/add_law_zero()
var/mob/living/silicon/ai/killer = owner.current
@@ -24,7 +24,8 @@
"blackpepper" = list("peppermillsmall", "pepper mill", "Often used to flavor food or make people sneeze"),
"cornoil" = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"),
"sugar" = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!"),
"mayonnaise" = list("mayonnaise", "mayonnaise jar", "An oily condiment made from egg yolks."))
"mayonnaise" = list("mayonnaise", "mayonnaise jar", "An oily condiment made from egg yolks."),
"peanut_butter" = list("peanutbutter", "peanut butter jar", "A deliciously and sticky spread made from peanuts."))
var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters.
/obj/item/reagent_containers/food/condiment/suicide_act(mob/living/carbon/user)
@@ -52,6 +52,33 @@
list_reagents = list("nutriment" = 2, "cherryjelly" = 5, "vitamin" = 2)
foodtype = GRAIN | FRUIT
/obj/item/reagent_containers/food/snacks/jellysandwich/pbj
name = "\improper PB & J sandwich"
desc = "A grand creation of peanut butter, jelly and bread! An all-american classic."
icon_state = "pbjsandwich"
tastes = list("bread" = 1, "jelly" = 1, "peanuts" = 1)
/obj/item/reagent_containers/food/snacks/jellysandwich/pbj/cherry
bonus_reagents = list("cherryjelly" = 5, "peanut_butter" = 5, "vitamin" = 2)
list_reagents = list("nutriment" = 2, "cherryjelly" = 5, "peanut_butter" = 5, "vitamin" = 2)
foodtype = GRAIN | FRUIT
/obj/item/reagent_containers/food/snacks/jellysandwich/pbj/slime
bonus_reagents = list("slimejelly" = 5, "peanut_butter" = 5, "vitamin" = 2)
list_reagents = list("nutriment" = 2, "slimejelly" = 5, "peanut_butter" = 5, "vitamin" = 2)
foodtype = GRAIN | TOXIC
/obj/item/reagent_containers/food/snacks/peanutbutter_sandwich
name = "peanut butter sandwich"
desc = "You wish you had some jelly to go with this..."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "peanutbuttersandwich"
trash = /obj/item/trash/plate
bitesize = 3
bonus_reagents = list("peanut_butter" = 5, "vitamin" = 2)
list_reagents = list("nutriment" = 2, "peanut_butter" = 5, "vitamin" = 2)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/notasandwich
name = "not-a-sandwich"
desc = "Something seems to be wrong with this, you can't quite figure what. Maybe it's his moustache."
@@ -83,6 +110,19 @@
list_reagents = list("nutriment" = 1, "slimejelly" = 5, "vitamin" = 2)
foodtype = GRAIN | TOXIC | SUGAR
/obj/item/reagent_containers/food/snacks/peanut_buttertoast
name = "peanut butter toast"
desc = "A slice of toast covered with delicious peanut butter."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "peanutbuttertoast"
trash = /obj/item/trash/plate
bitesize = 3
bonus_reagents = list("peanut_butter" = 5, "vitamin" = 2)
list_reagents = list("nutriment" = 1, "peanut_butter" = 5, "vitamin" = 2)
tastes = list("toast" = 1, "peanuts" = 1)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/twobread
name = "two bread"
desc = "This seems awfully bitter."
@@ -116,7 +116,7 @@
result = /obj/item/reagent_containers/food/snacks/jelliedtoast/slime
subcategory = CAT_MISCFOOD
/datum/crafting_recipe/food/jelliedyoast
/datum/crafting_recipe/food/jelliedtoast
name = "Jellied toast"
reqs = list(
/datum/reagent/consumable/cherryjelly = 5,
@@ -125,6 +125,15 @@
result = /obj/item/reagent_containers/food/snacks/jelliedtoast/cherry
subcategory = CAT_MISCFOOD
/datum/crafting_recipe/food/peanutbuttertoast
name = "Peanut butter toast"
reqs = list(
/datum/reagent/consumable/peanut_butter = 5,
/obj/item/reagent_containers/food/snacks/breadslice/plain = 1
)
result = /obj/item/reagent_containers/food/snacks/peanut_buttertoast
subcategory = CAT_MISCFOOD
/datum/crafting_recipe/food/twobread
name = "Two bread"
reqs = list(
@@ -43,6 +43,48 @@
result = /obj/item/reagent_containers/food/snacks/jellysandwich/cherry
subcategory = CAT_SANDWICH
/datum/crafting_recipe/food/pbj_slimesandwich
name = "PB&J sandwich"
reqs = list(
/datum/reagent/toxin/slimejelly = 5,
/datum/reagent/consumable/peanut_butter = 5,
/obj/item/reagent_containers/food/snacks/breadslice/plain = 2,
)
result = /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/slime
subcategory = CAT_SANDWICH
/datum/crafting_recipe/food/pbj_slimesandwich/alt
reqs = list(
/obj/item/reagent_containers/food/snacks/jelliedtoast/slime = 1,
/obj/item/reagent_containers/food/snacks/peanut_buttertoast = 1,
)
/datum/crafting_recipe/food/pbj_sandwich
name = "PB&J sandwich"
reqs = list(
/datum/reagent/consumable/cherryjelly = 5,
/datum/reagent/consumable/peanut_butter = 5,
/obj/item/reagent_containers/food/snacks/breadslice/plain = 2,
)
result = /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/cherry
subcategory = CAT_SANDWICH
/datum/crafting_recipe/food/pbj_sandwich/alt
reqs = list(
/obj/item/reagent_containers/food/snacks/jelliedtoast/cherry = 1,
/obj/item/reagent_containers/food/snacks/peanut_buttertoast = 1,
)
/datum/crafting_recipe/peanutbutter_sandwich
name = "Peanut butter sandwich"
reqs = list(
/datum/reagent/consumable/peanut_butter = 5,
/obj/item/reagent_containers/food/snacks/breadslice/plain = 2,
)
result = /obj/item/reagent_containers/food/snacks/peanutbutter_sandwich
subcategory = CAT_SANDWICH
/datum/crafting_recipe/food/notasandwich
name = "Not a sandwich"
reqs = list(
@@ -303,6 +303,7 @@ h1.alert, h2.alert {color: #000000;}
.userdanger {color: #ff0000; font-weight: bold; font-size: 24px;}
.danger {color: #ff0000;}
.warning {color: #ff0000; font-style: italic;}
.alertwarning {color: #FF0000; font-weight: bold}
.boldwarning {color: #ff0000; font-style: italic; font-weight: bold}
.announce {color: #228b22; font-weight: bold;}
.boldannounce {color: #ff0000; font-weight: bold;}
@@ -316,6 +317,8 @@ h1.alert, h2.alert {color: #000000;}
.unconscious {color: #0000ff; font-weight: bold;}
.suicide {color: #ff5050; font-style: italic;}
.green {color: #03ff39;}
.red {color: #FF0000}
.blue {color: #215cff}
.nicegreen {color: #14a833;}
.userlove {color: #FF1493; font-style: italic; font-weight: bold; text-shadow: 0 0 6px #ff6dbc;}
.love {color: #ff006a; font-style: italic; text-shadow: 0 0 6px #ff6d6d;}
+30
View File
@@ -0,0 +1,30 @@
/obj/item/seeds/peanutseed
name = "pack of peanut seeds"
desc = "These seeds grow to produce fruits botanically classified as legumes, but mundanely referred as nuts."
icon_state = "seed-peanut"
species = "peanut"
plantname = "Peanut Vines"
product = /obj/item/reagent_containers/food/snacks/grown/peanut
yield = 6
growthstages = 4
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
reagents_add = list("vitamin" = 0.02, "nutriment" = 0.15, "cooking_oil" = 0.03)
/obj/item/reagent_containers/food/snacks/grown/peanut
seed = /obj/item/seeds/peanutseed
name = "peanut"
desc = "Peanuts for the peanut gallery!" //get me a better description, boys.
icon_state = "peanut"
filling_color = "#C4AE7A"
bitesize = 100
foodtype = VEGETABLES
dried_type = /obj/item/reagent_containers/food/snacks/roasted_peanuts
cooked_type = /obj/item/reagent_containers/food/snacks/roasted_peanuts
/obj/item/reagent_containers/food/snacks/roasted_peanuts
name = "roasted peanuts"
desc = "A handful of roasted peanuts, with or without salt."
icon_state = "roasted_peanuts"
foodtype = VEGETABLES
list_reagents = list("nutriment" = 6, "vitamin" = 1)
juice_results = list("peanut_butter" = 3)
+12 -1
View File
@@ -40,10 +40,21 @@
else
. = initial(dt.flags) & TONGUELESS_SPEECH
/mob/living/carbon/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode)
/mob/living/carbon/hear_intercept(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode)
. = ..()
if(!client)
return
for(var/T in get_traumas())
var/datum/brain_trauma/trauma = T
message = trauma.on_hear(message, speaker, message_language, raw_message, radio_freq)
if (src.mind.has_antag_datum(/datum/antagonist/traitor))
for (var/codeword in GLOB.syndicate_code_phrase)
var/regex/codeword_match = new("([codeword])", "ig")
message = codeword_match.Replace(message, "<span class='blue'>$1</span>")
for (var/codeword in GLOB.syndicate_code_response)
var/regex/codeword_match = new("([codeword])", "ig")
message = codeword_match.Replace(message, "<span class='red'>$1</span>")
return message
+7 -2
View File
@@ -229,9 +229,14 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
// Recompose message for AI hrefs, language incomprehension.
message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode)
message = hear_intercept(message, speaker, message_language, raw_message, radio_freq, spans, message_mode)
show_message(message, 2, deaf_message, deaf_type)
return message
/mob/living/proc/hear_intercept(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode)
return message
/mob/living/send_speech(message, message_range = 6, obj/source = src, bubble_type = bubble_icon, list/spans, datum/language/message_language=null, message_mode)
var/static/list/eavesdropping_modes = list(MODE_WHISPER = TRUE, MODE_WHISPER_CRIT = TRUE)
var/eavesdrop_range = 0
@@ -390,8 +395,8 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
else
. = ..()
/mob/living/whisper(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null)
say("#[message]", bubble_type, spans, sanitize, language)
/mob/living/whisper(message, bubble_type, list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
say("#[message]", bubble_type, spans, sanitize, language, ignore_spam, forced)
/mob/living/get_language_holder(shadow=TRUE)
if(mind && shadow)
@@ -580,6 +580,19 @@
else
return ..()
/mob/living/silicon/robot/crowbar_act(mob/living/user, obj/item/I) //TODO: make fucking everything up there in that attackby() proc use the proper tool_act() procs. But honestly, who has time for that? 'cause I know for sure that you, the person reading this, sure as hell doesn't.
var/validbreakout = FALSE
for(var/obj/item/dogborg/sleeper/S in held_items)
if(!LAZYLEN(S.contents))
continue
if(!validbreakout)
visible_message("<span class='notice'>[user] wedges [I] into the crevice separating [S] from [src]'s chassis, and begins to pry...</span>", "<span class='notice'>You wedge [I] into the crevice separating [S] from [src]'s chassis, and begin to pry...</span>")
validbreakout = TRUE
S.go_out()
if(validbreakout)
return TRUE
return ..()
/mob/living/silicon/robot/verb/unlock_own_cover()
set category = "Robot Commands"
set name = "Unlock Cover"
@@ -441,6 +441,14 @@
. = 1
..()
/datum/reagent/consumable/peanut_butter
name = "Peanut Butter"
id = "peanut_butter"
description = "A popular food paste made from ground dry-roasted peanuts."
color = "#C29261"
nutriment_factor = 15 * REAGENTS_METABOLISM
taste_description = "peanuts"
/datum/reagent/consumable/cornoil
name = "Corn Oil"
id = "cornoil"
+1 -1
View File
@@ -418,7 +418,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
surplus = 30
include_modes = list(/datum/game_mode/nuclear)
/datum/uplink_item/badass/rapid
/datum/uplink_item/dangerous/rapid
name = "Gloves of the North Star"
desc = "These gloves let the user punch people very fast. Does not improve weapon attack speed or the meaty fists of a hulk."
item = /obj/item/clothing/gloves/rapid
+1
View File
@@ -23,6 +23,7 @@
/obj/item/seeds/lime = 3,
/obj/item/seeds/onion = 3,
/obj/item/seeds/orange = 3,
/obj/item/seeds/peanutseed = 3,
/obj/item/seeds/pineapple = 3,
/obj/item/seeds/potato = 3,
/obj/item/seeds/poppy = 3,