mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 19:17:50 +01:00
Secondary goals (#24599)
* Extract requests console message sending code. * Add secondary goals * Converted supply shuttle to a signal-based system. * Lint. * Review suggestions. * Secondary goals can now check the supply shuttle for their requirements. * Remove redundant completion variable, undef what we define. * Made the request console refuse to issue a secondary goal until you finish the current one. * Made the shuttle blacklist error more specific, added locked/manifest-attached crates to blacklist. * Added round end secondary goal report. * Lint * Add tags to reagents for secondary goals to use. * Extracted the reagent logic from the bar goal, used reagent tags. * Added the Variety of Drinks Bar goal. * Added variety drinks goal for the Bar. * CC no longer complains about sending stuff in containers, but the shuttle will refuse lockboxes without goal items. * Allow unlocked lockboxes on the shuttle. * Added kitchen goals. * Lint * More lint * Add goals for scichem and medchem, pending reagent labelling. * Added Kudzu goal for botany. * I forgot to rename them, oops. * Lint * Made mechs sellable, configurable goal rewards. * Balancing changes. * Added random Ripley goal. * Add Clear Task Backlog station goal. * Lint * Oops. * did i even do this right * Lint * Excluded drinks available from upgraded booze dispenser. * Such bugs. Much fix. Wow. * Goal notice formatting. * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Made storage nesting better, improved consistency between storage types. * Out, er, space. * Added a proc for sending a requests console message. * Added error messages to Virology Goals. Backported a few small things from Secondary Goals to make this easier. * Extracted out the three-way reward code into a proc. * Update code/__DEFINES/dcs/signals.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Removed redundant SIGNAL_HANDLER labels. * Yes, that should be a proc. * Enforce important parent calls. * Thank you, DreamChecker * Undid accidental merge of #24699 * Removed a testing proc that wasn't intended for this PR. * Removed parts of #24750 that also crept in. * Made the variety of [x] goals more explicit that they want 50u of each. * Reduced Kudzu trait requirement to 1. * Request consoles now output the list of valid departments if you're at an unsupported one. * Added personal crates. * Added a supply pack of personal crates. * Added special cargo handling for personal crates. * Added automatic personal crate when requesting a goal. * Required personal crates for most secondary goals. * Add goal labels to the hand labeler, require them for mech goals. * Made secondary goals one-per-person, not one-per-department. * Added support for multi-line system messages to the request consoles. * Made the RC message for goals nicer. * Send goal crates even if no normal crates are ready, name and access-lock them properly. * Don't double-label. * Let's not use registered_account, names are fine. * Add a ton of blackbox data to cargo and secondary goals. * Fix a few bugs. * More bugfixing, couple more stats. * Even more stats. * Text fix. * Made cargo fines more consistent with other cargo feedback. * Fixed a bug that prevented non-top-level items from being checked for CARGO_REQUIRE_PRIORITY. * Blocked large crates from being sent back unopened. * Enum values should probably be different from each other. * Correct a bitflag mishap. * Removed redundant supply shuttle docking and buy/sell attempts. * Tweak message about personal crates to inlclude that they need to lock it. * Add /Crates to the Personal Lockers description. * Less pretty alignment, less complaining linters. * Corrected a bad name in stats tracking. * Reduced SciChem variety goal to 5 types. * Toned down Task Backlog a bit. * Fixed a bug that made unsellable items nested in containers be stolen by CC (qdeleted). * Don't require bluespace 8, that's silly. * Made secondary goals modifiable in the Modify Station Goals UI. * Whoops, that was supposed to be 600u. * i ded pls nerf --------- Co-authored-by: synthtee <127706731+SynthTwo@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
This commit is contained in:
co-authored by
Henri215
DGamerL
synthtee
parent
663e007d4d
commit
5c5f7842df
@@ -3317,7 +3317,7 @@
|
||||
else if(href_list["add_station_goal"])
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
var/list/type_choices = typesof(/datum/station_goal)
|
||||
var/list/type_choices = typesof(/datum/station_goal) - typesof(/datum/station_goal/secondary)
|
||||
var/picked = input("Choose goal type") in type_choices|null
|
||||
if(!picked)
|
||||
return
|
||||
@@ -3335,6 +3335,46 @@
|
||||
SSticker.mode.station_goals += G
|
||||
modify_goals()
|
||||
|
||||
else if(href_list["add_secondary_goal"])
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
var/list/type_choices = typesof(/datum/station_goal/secondary)
|
||||
for(var/T in type_choices)
|
||||
if(T == /datum/station_goal/secondary)
|
||||
continue
|
||||
var/datum/station_goal/secondary/SG = T
|
||||
if(initial(SG.abstract))
|
||||
type_choices -= SG
|
||||
var/picked = pick_closest_path(FALSE, make_types_fancy(type_choices), skip_filter = TRUE)
|
||||
if(!picked)
|
||||
return
|
||||
var/datum/station_goal/secondary/G = new picked()
|
||||
if(picked == /datum/station_goal/secondary)
|
||||
var/newname = clean_input("Enter goal name:")
|
||||
if(!newname)
|
||||
return
|
||||
G.name = newname
|
||||
var/description = input("Enter A.L.I.C.E message contents:") as message|null
|
||||
if(!description)
|
||||
return
|
||||
G.report_message = description
|
||||
var/admin_description = input("Enter description for admins:") as message|null
|
||||
if(!admin_description)
|
||||
return
|
||||
G.admin_desc = admin_description
|
||||
var/department_choices = list()
|
||||
for(var/obj/machinery/requests_console/RC in GLOB.allRequestConsoles)
|
||||
department_choices |= RC.department
|
||||
var/department = input("Choose goal department") in department_choices|null
|
||||
if(!department)
|
||||
return
|
||||
G.department = department
|
||||
G.should_send_crate = alert("Send a personal crate?","Send crate","Yes","No") == "Yes"
|
||||
G.Initialize()
|
||||
message_admins("[key_name_admin(usr)] created \"[G.name]\" station goal. Description: [G.admin_desc]")
|
||||
SSticker.mode.secondary_goals += G
|
||||
modify_goals()
|
||||
|
||||
else if(href_list["showdetails"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
@@ -1147,11 +1147,18 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
to_chat(usr, "<span class='warning'>This verb can only be used if the round has started.</span>")
|
||||
return
|
||||
|
||||
var/dat = ""
|
||||
var/list/dat = list()
|
||||
for(var/datum/station_goal/S in SSticker.mode.station_goals)
|
||||
dat += "[S.name] - <a href='?src=[S.UID()];announce=1'>Announce</a> | <a href='?src=[S.UID()];remove=1'>Remove</a><br>"
|
||||
dat += "<br><a href='?src=[UID()];add_station_goal=1'>Add New Goal</a>"
|
||||
usr << browse(dat, "window=goals;size=400x400")
|
||||
dat += "[S.name][S.completed ? " (C)" : ""] - <a href='?src=[S.UID()];announce=1'>Announce</a> | <a href='?src=[S.UID()];remove=1'>Remove</a>"
|
||||
dat += ""
|
||||
dat += "<a href='?src=[UID()];add_station_goal=1'>Add New Goal</a>"
|
||||
dat += ""
|
||||
dat += "<b>Secondary goals</b>"
|
||||
for(var/datum/station_goal/secondary/SG in SSticker.mode.secondary_goals)
|
||||
dat += "[SG.admin_desc][SG.completed ? " (C)" : ""] for [SG.requester_name || SG.department] - <a href='?src=[SG.UID()];announce=1'>Announce</a> | <a href='?src=[SG.UID()];remove=1'>Remove</a> | <a href='?src=[SG.UID()];mark_complete=1'>Mark complete</a> | <a href='?src=[SG.UID()];reset_progress=1'>Reset progress</a>"
|
||||
dat += "<a href='?src=[UID()];add_secondary_goal=1'>Add New Secondary Goal</a>"
|
||||
|
||||
usr << browse(dat.Join("<br>"), "window=goals;size=400x400")
|
||||
|
||||
/// Allow admin to add or remove traits of datum
|
||||
/datum/admins/proc/modify_traits(datum/D)
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
// Make the event start fun - give the vine a random hostile mutation
|
||||
if(SC.vines.len)
|
||||
SV = SC.vines[1]
|
||||
var/list/mutations = SC.mutations_list.Copy()
|
||||
while(mutations.len)
|
||||
var/list/mutations = subtypesof(/datum/spacevine_mutation)
|
||||
while(mutations)
|
||||
var/datum/spacevine_mutation/SM = pick_n_take(mutations)
|
||||
if(SM.quality == SPACEVINE_MUTATION_NEGATIVE && !SM.nofun)
|
||||
SM.add_mutation_to_vinepiece(SV)
|
||||
if(initial(SM.quality) == SPACEVINE_MUTATION_NEGATIVE && !initial(SM.nofun))
|
||||
SV.add_mutation(SM)
|
||||
break
|
||||
mutations.Cut()
|
||||
mutations = null
|
||||
@@ -35,19 +35,6 @@
|
||||
// For stuff that isn't fun as a random-event vine
|
||||
var/nofun = FALSE
|
||||
|
||||
/datum/spacevine_mutation/proc/add_mutation_to_vinepiece(obj/structure/spacevine/holder)
|
||||
holder.mutations |= src
|
||||
holder.color = hue
|
||||
|
||||
/datum/spacevine_mutation/proc/remove_mutation_from_vinepiece(obj/structure/spacevine/holder)
|
||||
holder.mutations -= src
|
||||
var/datum/spacevine_mutation/oldmutation
|
||||
if(holder.mutations.len)
|
||||
oldmutation = pick(holder.mutations)
|
||||
holder.color = oldmutation.hue
|
||||
else
|
||||
holder.color = ""
|
||||
|
||||
/datum/spacevine_mutation/proc/process_mutation(obj/structure/spacevine/holder)
|
||||
return
|
||||
|
||||
@@ -91,11 +78,6 @@
|
||||
return
|
||||
|
||||
|
||||
/datum/spacevine_mutation/space_covering
|
||||
name = "space protective"
|
||||
hue = "#aa77aa"
|
||||
quality = SPACEVINE_MUTATION_POSITIVE
|
||||
|
||||
/turf/simulated/floor/vines
|
||||
color = "#aa77aa"
|
||||
icon_state = "vinefloor"
|
||||
@@ -139,6 +121,9 @@
|
||||
SV.wither()
|
||||
|
||||
/datum/spacevine_mutation/space_covering
|
||||
name = "space protective"
|
||||
hue = "#aa77aa"
|
||||
quality = SPACEVINE_MUTATION_POSITIVE
|
||||
var/static/list/coverable_turfs
|
||||
|
||||
/datum/spacevine_mutation/space_covering/New()
|
||||
@@ -181,7 +166,7 @@
|
||||
// Lose bluespace upon piercing a single tile, and drop it from our own mutations too
|
||||
// Representing a loss in "high potential"
|
||||
// also conveniently prevents this from spreading too crazily
|
||||
remove_mutation_from_vinepiece(holder)
|
||||
holder.remove_mutation(src.type)
|
||||
holder.master.spawn_spacevine_piece(target, holder)
|
||||
playsound(holder, 'sound/misc/interference.ogg', 50, 1)
|
||||
. = TRUE
|
||||
@@ -421,9 +406,9 @@
|
||||
/obj/structure/spacevine/examine(mob/user)
|
||||
. = ..()
|
||||
var/text = "This one is a"
|
||||
if(mutations.len)
|
||||
if(length(mutations))
|
||||
for(var/A in mutations)
|
||||
var/datum/spacevine_mutation/SM = A
|
||||
var/datum/spacevine_mutation/SM = mutations[A]
|
||||
text += " [SM.name]"
|
||||
else
|
||||
text += " normal"
|
||||
@@ -431,20 +416,23 @@
|
||||
. += text
|
||||
|
||||
/obj/structure/spacevine/proc/wither()
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
SM.on_death(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/structure/spacevine/Destroy()
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
SM.on_deletion(src)
|
||||
if(master)
|
||||
master.vines -= src
|
||||
master.growth_queue -= src
|
||||
if(!master.vines.len)
|
||||
var/obj/item/seeds/kudzu/KZ = new(loc)
|
||||
KZ.mutations |= mutations
|
||||
for(var/mutation in mutations)
|
||||
KZ.mutations += mutation
|
||||
KZ.set_potency(10 ** sqrt(master.mutativeness))
|
||||
KZ.set_production(10 - (master.spread_cap / 10))
|
||||
qdel(master)
|
||||
@@ -456,12 +444,21 @@
|
||||
return ..()
|
||||
|
||||
/obj/structure/spacevine/proc/add_mutation(datum/spacevine_mutation/mutation)
|
||||
mutations |= mutation
|
||||
color = mutation.hue
|
||||
if(!mutations[mutation])
|
||||
mutations[mutation] = new mutation
|
||||
color = mutation.hue
|
||||
|
||||
/obj/structure/spacevine/proc/remove_mutation(datum/spacevine_mutation/mutation)
|
||||
mutations -= mutation
|
||||
if(length(mutations))
|
||||
var/oldmutation_type = pick(mutations)
|
||||
var/datum/spacevine_mutation/oldmutation = mutations[oldmutation_type]
|
||||
color = oldmutation.hue
|
||||
|
||||
/obj/structure/spacevine/proc/on_chem_effect(datum/reagent/R)
|
||||
var/override = 0
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
override += SM.on_chem(src, R)
|
||||
if(!override && istype(R, /datum/reagent/glyphosate))
|
||||
if(prob(50))
|
||||
@@ -469,7 +466,8 @@
|
||||
|
||||
/obj/structure/spacevine/proc/eat(mob/eater)
|
||||
var/override = 0
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
override += SM.on_eat(src, eater)
|
||||
if(!override)
|
||||
if(prob(10))
|
||||
@@ -493,7 +491,8 @@
|
||||
if(I.damtype == BURN)
|
||||
damage_dealt *= 4
|
||||
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
damage_dealt = SM.on_hit(src, user, I, damage_dealt) //on_hit now takes override damage as arg and returns new value for other mutations to permutate further
|
||||
take_damage(damage_dealt, I.damtype, MELEE, 1)
|
||||
|
||||
@@ -512,11 +511,13 @@
|
||||
|
||||
/obj/structure/spacevine/Crossed(mob/crosser, oldloc)
|
||||
if(isliving(crosser))
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
SM.on_cross(src, crosser)
|
||||
|
||||
/obj/structure/spacevine/attack_hand(mob/user)
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
SM.on_hit(src, user)
|
||||
user_unbuckle_mob(user, user)
|
||||
|
||||
@@ -529,14 +530,12 @@
|
||||
var/list/growth_queue = list()
|
||||
var/spread_multiplier = 5
|
||||
var/spread_cap = 30
|
||||
var/list/mutations_list = list()
|
||||
var/mutativeness = 1
|
||||
|
||||
/obj/structure/spacevine_controller/New(loc, list/muts, potency, production)
|
||||
color = "#ffffff"
|
||||
spawn_spacevine_piece(loc, null, muts)
|
||||
START_PROCESSING(SSobj, src)
|
||||
init_subtypes(/datum/spacevine_mutation/, mutations_list)
|
||||
if(potency != null && potency > 0)
|
||||
// 1 mutativeness at 10 potency
|
||||
// 4 mutativeness at 100 potency
|
||||
@@ -571,20 +570,21 @@
|
||||
growth_queue += SV
|
||||
vines += SV
|
||||
SV.master = src
|
||||
if(muts && muts.len)
|
||||
for(var/datum/spacevine_mutation/M in muts)
|
||||
M.add_mutation_to_vinepiece(SV)
|
||||
if(length(muts))
|
||||
for(var/M in muts)
|
||||
SV.add_mutation(M)
|
||||
return
|
||||
if(parent)
|
||||
SV.mutations |= parent.mutations
|
||||
SV.color = parent.color
|
||||
if(prob(mutativeness))
|
||||
var/list/random_mutations_picked = mutations_list - SV.mutations
|
||||
if(random_mutations_picked.len)
|
||||
var/datum/spacevine_mutation/randmut = pick(random_mutations_picked)
|
||||
randmut.add_mutation_to_vinepiece(SV)
|
||||
var/list/random_mutation_candidates = subtypesof(/datum/spacevine_mutation) - SV.mutations
|
||||
if(length(random_mutation_candidates))
|
||||
var/datum/spacevine_mutation/randmut = pick(random_mutation_candidates)
|
||||
SV.add_mutation(randmut)
|
||||
|
||||
for(var/datum/spacevine_mutation/SM in SV.mutations)
|
||||
for(var/SM_type in SV.mutations)
|
||||
var/datum/spacevine_mutation/SM = SV.mutations[SM_type]
|
||||
SM.on_birth(SV)
|
||||
|
||||
/obj/structure/spacevine_controller/process()
|
||||
@@ -607,7 +607,8 @@
|
||||
i++
|
||||
queue_end += SV
|
||||
growth_queue -= SV
|
||||
for(var/datum/spacevine_mutation/SM in SV.mutations)
|
||||
for(var/SM_type in SV.mutations)
|
||||
var/datum/spacevine_mutation/SM = SV.mutations[SM_type]
|
||||
SM.process_mutation(SV)
|
||||
if(SV.energy < 2) //If tile isn't fully grown
|
||||
if(prob(20))
|
||||
@@ -631,7 +632,8 @@
|
||||
icon_state = pick("Hvy1", "Hvy2", "Hvy3")
|
||||
energy = 2
|
||||
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
SM.on_grow(src)
|
||||
|
||||
/obj/structure/spacevine/proc/entangle_mob()
|
||||
@@ -645,7 +647,8 @@
|
||||
/obj/structure/spacevine/proc/entangle(mob/living/V)
|
||||
if(!V || isvineimmune(V))
|
||||
return
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
SM.on_buckle(src, V)
|
||||
if((V.stat != DEAD) && (V.buckled != src)) //not dead or captured
|
||||
to_chat(V, "<span class='danger'>The vines [pick("wind", "tangle", "tighten")] around you!</span>")
|
||||
@@ -654,14 +657,16 @@
|
||||
/obj/structure/spacevine/proc/spread()
|
||||
var/list/dir_list = GLOB.cardinal.Copy()
|
||||
var/spread_search = FALSE // Whether to exhaustive search all 4 cardinal dirs for an open direction
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
spread_search |= SM.on_search(src)
|
||||
while(dir_list.len)
|
||||
var/direction = pick(dir_list)
|
||||
dir_list -= direction
|
||||
var/turf/stepturf = get_step(src,direction)
|
||||
var/spread_success = FALSE
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
spread_success |= SM.on_spread(src, stepturf) // If this returns 1, spreading succeeded
|
||||
if(!locate(/obj/structure/spacevine, stepturf))
|
||||
// snowflake for space turf, but space turf is super common and a big deal
|
||||
@@ -674,7 +679,8 @@
|
||||
|
||||
/obj/structure/spacevine/ex_act(severity)
|
||||
var/i
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
i += SM.on_explosion(severity, src)
|
||||
if(!i && prob(100/severity))
|
||||
wither()
|
||||
@@ -682,7 +688,8 @@
|
||||
/obj/structure/spacevine/temperature_expose(null, temp, volume)
|
||||
..()
|
||||
var/override = 0
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
for(var/SM_type in mutations)
|
||||
var/datum/spacevine_mutation/SM = mutations[SM_type]
|
||||
override += SM.process_temperature(src, temp, volume)
|
||||
if(!override)
|
||||
wither()
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#FFD675"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
|
||||
/obj/item/food/snacks/sliceable/braincake
|
||||
@@ -47,6 +48,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#E6AEDB"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/sliceable/cheesecake
|
||||
name = "cheese cake"
|
||||
@@ -68,6 +70,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#FAF7AF"
|
||||
tastes = list("cake" = 4, "cream cheese" = 3)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/plaincake
|
||||
name = "vanilla cake"
|
||||
@@ -89,6 +92,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#F7EDD5"
|
||||
tastes = list("cake" = 5, "vanilla" = 1, "sweetness" = 2)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/orangecake
|
||||
name = "orange cake"
|
||||
@@ -110,6 +114,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#FADA8E"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/bananacake
|
||||
name = "banana cake"
|
||||
@@ -131,6 +136,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#FADA8E"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "banana" = 2)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/limecake
|
||||
name = "lime cake"
|
||||
@@ -152,6 +158,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#CBFA8E"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/lemoncake
|
||||
name = "lemon cake"
|
||||
@@ -173,6 +180,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#FAFA8E"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/chocolatecake
|
||||
name = "chocolate cake"
|
||||
@@ -194,6 +202,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#805930"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/birthdaycake
|
||||
name = "birthday cake"
|
||||
@@ -215,6 +224,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#FFD6D6"
|
||||
tastes = list("cake" = 5, "sweetness" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/sliceable/applecake
|
||||
name = "apple cake"
|
||||
@@ -236,6 +246,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#EBF5B8"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -251,6 +262,7 @@
|
||||
filling_color = "#DBC94F"
|
||||
list_reagents = list("nutriment" = 1, "sugar" = 3, "hot_coco" = 5 )
|
||||
tastes = list("cookie" = 1, "crunchy chocolate" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/fortunecookie
|
||||
name = "fortune cookie"
|
||||
@@ -261,6 +273,7 @@
|
||||
list_reagents = list("nutriment" = 3)
|
||||
trash = /obj/item/paper/fortune
|
||||
tastes = list("cookie" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/sugarcookie
|
||||
name = "sugar cookie"
|
||||
@@ -269,6 +282,7 @@
|
||||
icon_state = "sugarcookie"
|
||||
list_reagents = list("nutriment" = 1, "sugar" = 3)
|
||||
tastes = list("sweetness" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -285,6 +299,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2)
|
||||
tastes = list("pie" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/pie/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
@@ -302,6 +317,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 2)
|
||||
tastes = list("pie" = 1, "meat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/tofupie
|
||||
name = "tofu-pie"
|
||||
@@ -313,6 +329,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 2)
|
||||
tastes = list("pie" = 1, "tofu" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/amanita_pie
|
||||
name = "amanita pie"
|
||||
@@ -323,6 +340,7 @@
|
||||
bitesize = 4
|
||||
list_reagents = list("nutriment" = 6, "amanitin" = 3, "psilocybin" = 1, "vitamin" = 4)
|
||||
tastes = list("pie" = 1, "mushroom" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/plump_pie
|
||||
name = "plump pie"
|
||||
@@ -333,6 +351,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 2)
|
||||
tastes = list("pie" = 1, "mushroom" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/plump_pie/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -361,6 +380,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 2)
|
||||
tastes = list("pie" = 1, "apple" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/cherrypie
|
||||
@@ -372,6 +392,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 2)
|
||||
tastes = list("pie" = 1, "cherries" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/sliceable/pumpkinpie
|
||||
name = "pumpkin pie"
|
||||
@@ -384,6 +405,7 @@
|
||||
filling_color = "#F5B951"
|
||||
list_reagents = list("nutriment" = 20, "vitamin" = 5)
|
||||
tastes = list("pie" = 1, "pumpkin" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/pumpkinpieslice
|
||||
name = "pumpkin pie slice"
|
||||
@@ -393,6 +415,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#F5B951"
|
||||
tastes = list("pie" = 1, "pumpkin" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
//////////////////////
|
||||
// Donuts //
|
||||
@@ -433,6 +456,7 @@
|
||||
desc = "Like life, it never quite tastes the same."
|
||||
bitesize = 10
|
||||
tastes = list("donut" = 3, "chaos" = 1)
|
||||
goal_difficulty = FOOD_GOAL_HARD
|
||||
|
||||
/obj/item/food/snacks/donut/chaos/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -450,6 +474,7 @@
|
||||
icon_state = "jdonut1"
|
||||
extra_reagent = "berryjuice"
|
||||
tastes = list("jelly" = 1, "donut" = 3)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/donut/jelly/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -467,6 +492,7 @@
|
||||
desc = "You jelly?"
|
||||
icon_state = "jdonut1"
|
||||
extra_reagent = "slimejelly"
|
||||
goal_difficulty = FOOD_GOAL_HARD
|
||||
|
||||
/obj/item/food/snacks/donut/jelly/cherryjelly
|
||||
name = "jelly donut"
|
||||
@@ -487,6 +513,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3)
|
||||
tastes = list("sweet cake" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/pancake/attack_tk(mob/user)
|
||||
if(src in user.tkgrabbed_objects)
|
||||
@@ -509,6 +536,7 @@
|
||||
icon_state = "berry_pancake"
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3, "berryjuice" = 3)
|
||||
tastes = list("sweet cake" = 2, "berries" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/pancake/choc_chip_pancake
|
||||
name = "choc-chip pancake"
|
||||
@@ -516,6 +544,7 @@
|
||||
icon_state = "choc_chip_pancake"
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3, "cocoa" = 3)
|
||||
tastes = list("sweet cake" = 2, "chocolate" = 3)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
//////////////////////
|
||||
// Misc //
|
||||
@@ -529,6 +558,7 @@
|
||||
filling_color = "#E0CF9B"
|
||||
list_reagents = list("nutriment" = 6)
|
||||
tastes = list("muffin" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/berryclafoutis
|
||||
name = "berry clafoutis"
|
||||
@@ -539,6 +569,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 10, "berryjuice" = 5, "vitamin" = 2)
|
||||
tastes = list("pie" = 1, "blackberries" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/poppypretzel
|
||||
@@ -549,6 +580,7 @@
|
||||
filling_color = "#916E36"
|
||||
list_reagents = list("nutriment" = 5)
|
||||
tastes = list("pretzel" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/plumphelmetbiscuit
|
||||
name = "plump helmet biscuit"
|
||||
@@ -558,6 +590,7 @@
|
||||
filling_color = "#CFB4C4"
|
||||
list_reagents = list("nutriment" = 5)
|
||||
tastes = list("mushroom" = 1, "biscuit" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/plumphelmetbiscuit/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -576,6 +609,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 8, "gold" = 5, "vitamin" = 4)
|
||||
tastes = list("pie" = 1, "apple" = 1, "expensive metal" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/cracker
|
||||
@@ -587,6 +621,7 @@
|
||||
filling_color = "#F5DEB8"
|
||||
list_reagents = list("nutriment" = 1)
|
||||
tastes = list("cracker" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/croissant
|
||||
name = "croissant"
|
||||
@@ -597,6 +632,7 @@
|
||||
filling_color = "#ecb54f"
|
||||
list_reagents = list("nutriment" = 4, "sugar" = 2)
|
||||
tastes = list("croissant" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/croissant/throwing
|
||||
throwforce = 20
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
icon = 'icons/obj/food/burgerbread.dmi'
|
||||
icon_state = "meatbreadslice"
|
||||
filling_color = "#FF7575"
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/xenomeatbread
|
||||
name = "xenomeatbread loaf"
|
||||
@@ -75,6 +76,7 @@
|
||||
icon_state = "bananabreadslice"
|
||||
filling_color = "#EDE5AD"
|
||||
tastes = list("bread" = 10, "banana" = 5)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/tofubread
|
||||
name = "tofubread"
|
||||
@@ -93,6 +95,7 @@
|
||||
icon = 'icons/obj/food/burgerbread.dmi'
|
||||
icon_state = "tofubreadslice"
|
||||
filling_color = "#F7FFE0"
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/bread
|
||||
name = "bread"
|
||||
@@ -113,6 +116,7 @@
|
||||
filling_color = "#D27332"
|
||||
list_reagents = list("nutriment" = 2, "bread" = 5)
|
||||
tastes = list("bread" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/creamcheesebread
|
||||
name = "cream cheese bread"
|
||||
@@ -133,6 +137,7 @@
|
||||
filling_color = "#FFF896"
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 1)
|
||||
tastes = list("bread" = 10, "cheese" = 10)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/banarnarbread
|
||||
name = "banarnarbread loaf"
|
||||
@@ -153,6 +158,7 @@
|
||||
filling_color = "#6F0000"
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 1)
|
||||
tastes = list("heresy" = 10, "banana" = 10)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -166,6 +172,7 @@
|
||||
icon_state = "bun"
|
||||
list_reagents = list("nutriment" = 1)
|
||||
tastes = list("bun" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/flatbread
|
||||
@@ -175,6 +182,7 @@
|
||||
icon_state = "flatbread"
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
tastes = list("bread" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/baguette
|
||||
name = "baguette"
|
||||
@@ -187,6 +195,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
tastes = list("bread" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/baguette/combat
|
||||
sharp = TRUE
|
||||
@@ -205,6 +214,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "vitamin" = 2)
|
||||
tastes = list("bread" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/toast
|
||||
name = "toast"
|
||||
@@ -227,9 +237,11 @@
|
||||
|
||||
/obj/item/food/snacks/jelliedtoast/cherry
|
||||
list_reagents = list("nutriment" = 1, "cherryjelly" = 5, "vitamin" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/jelliedtoast/slime
|
||||
list_reagents = list("nutriment" = 1, "slimejelly" = 5, "vitamin" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/rofflewaffles
|
||||
name = "roffle waffles"
|
||||
@@ -241,6 +253,7 @@
|
||||
bitesize = 4
|
||||
list_reagents = list("nutriment" = 8, "psilocybin" = 2, "vitamin" = 2)
|
||||
tastes = list("waffle" = 1, "mushrooms" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/waffles
|
||||
name = "waffles"
|
||||
@@ -250,3 +263,4 @@
|
||||
trash = /obj/item/trash/waffles
|
||||
filling_color = "#E6DEB5"
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
@@ -13,25 +13,19 @@
|
||||
icon = 'icons/obj/food/candy.dmi'
|
||||
icon_state = "candy"
|
||||
tastes = list("candy" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
// ***********************************************************
|
||||
// Candy Ingredients / Flavorings / Byproduct
|
||||
// ***********************************************************
|
||||
|
||||
/obj/item/food/snacks/chocolatebar
|
||||
name = "chocolate bar"
|
||||
desc = "Such sweet, fattening food."
|
||||
icon_state = "chocolatebar"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 2, "chocolate" = 4)
|
||||
tastes = list("chocolate" = 1)
|
||||
|
||||
/obj/item/food/snacks/candy/caramel
|
||||
name = "caramel"
|
||||
desc = "Chewy and dense, yet it practically melts in your mouth!"
|
||||
icon_state = "caramel"
|
||||
filling_color = "#DB944D"
|
||||
list_reagents = list("cream" = 2, "sugar" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/candy/toffee
|
||||
@@ -40,6 +34,7 @@
|
||||
icon_state = "toffee"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/nougat
|
||||
name = "nougat"
|
||||
@@ -47,6 +42,7 @@
|
||||
icon_state = "nougat"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/taffy
|
||||
name = "saltwater taffy"
|
||||
@@ -54,6 +50,7 @@
|
||||
icon_state = "candy1"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 3)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/taffy/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -66,18 +63,21 @@
|
||||
filling_color = "#7D5F46"
|
||||
bitesize = 3
|
||||
list_reagents = list("cream" = 3, "chocolate" = 6)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/fudge/peanut
|
||||
name = "peanut fudge"
|
||||
desc = "Chocolate fudge, with bits of peanuts mixed in. People with nut allergies shouldn't eat this."
|
||||
icon_state = "fudge_peanut"
|
||||
filling_color = "#7D5F46"
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/fudge/cherry
|
||||
name = "chocolate cherry fudge"
|
||||
desc = "Chocolate fudge surrounding sweet cherries. Good for tricking kids into eating some fruit."
|
||||
icon_state = "fudge_cherry"
|
||||
filling_color = "#7D5F46"
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/fudge/cookies_n_cream
|
||||
name = "cookies 'n' cream fudge"
|
||||
@@ -85,12 +85,14 @@
|
||||
icon_state = "fudge_cookies_n_cream"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("cream" = 6, "chocolate" = 6)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/fudge/turtle
|
||||
name = "turtle fudge"
|
||||
desc = "Chocolate fudge with caramel and nuts. It doesn't contain real turtles, thankfully."
|
||||
icon_state = "fudge_turtle"
|
||||
filling_color = "#7D5F46"
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
// ***********************************************************
|
||||
// Candy Products (Pre-existing)
|
||||
@@ -135,6 +137,7 @@
|
||||
antable = FALSE
|
||||
list_reagents = list("nutriment" = 1, "chocolate" = 1)
|
||||
tastes = list("chocolate" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/candy/candycane
|
||||
@@ -143,6 +146,7 @@
|
||||
icon_state = "candycane"
|
||||
filling_color = "#F2F2F2"
|
||||
list_reagents = list("minttoxin" = 1, "sugar" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummybear
|
||||
name = "gummy bear"
|
||||
@@ -175,6 +179,7 @@
|
||||
filling_color = "#ED0758"
|
||||
bitesize = 0.1 //this is gonna take a while, you'll be working at this all shift.
|
||||
list_reagents = list("sugar" = 10)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/cash
|
||||
name = "candy cash"
|
||||
@@ -183,6 +188,7 @@
|
||||
filling_color = "#302000"
|
||||
list_reagents = list("nutriment" = 2, "chocolate" = 4)
|
||||
tastes = list("chocolate" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/candy/coin
|
||||
@@ -193,6 +199,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "chocolate" = 4)
|
||||
tastes = list("chocolate" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/candy/gum
|
||||
@@ -203,6 +210,7 @@
|
||||
filling_color = "#FF7495"
|
||||
bitesize = 0.2
|
||||
list_reagents = list("sugar" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/sucker
|
||||
name = "sucker"
|
||||
@@ -210,244 +218,273 @@
|
||||
icon_state = "sucker"
|
||||
filling_color = "#FFFFFF"
|
||||
list_reagents = list("sugar" = 10)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
// ***********************************************************
|
||||
// Gummy Bear Flavors
|
||||
// ***********************************************************
|
||||
|
||||
/obj/item/food/snacks/candy/gummybear/red
|
||||
name = "gummy bear"
|
||||
name = "red gummy bear"
|
||||
desc = "A small edible bear. It's red!"
|
||||
icon_state = "gbear_red"
|
||||
filling_color = "#801E28"
|
||||
list_reagents = list("sugar" = 10, "cherryjelly" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummybear/blue
|
||||
name = "gummy bear"
|
||||
name = "blue gummy bear"
|
||||
desc = "A small edible bear. It's blue!"
|
||||
icon_state = "gbear_blue"
|
||||
filling_color = "#863333"
|
||||
list_reagents = list("sugar" = 10, "berryjuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummybear/poison
|
||||
name = "gummy bear"
|
||||
name = "blue gummy bear"
|
||||
desc = "A small edible bear. It's blue!"
|
||||
icon_state = "gbear_blue"
|
||||
filling_color = "#863353"
|
||||
list_reagents = list("poisonberryjuice" = 12)
|
||||
|
||||
/obj/item/food/snacks/candy/gummybear/green
|
||||
name = "gummy bear"
|
||||
name = "green gummy bear"
|
||||
desc = "A small edible bear. It's green!"
|
||||
icon_state = "gbear_green"
|
||||
filling_color = "#365E30"
|
||||
list_reagents = list("sugar" = 10, "limejuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummybear/yellow
|
||||
name = "gummy bear"
|
||||
name = "yellow gummy bear"
|
||||
desc = "A small edible bear. It's yellow!"
|
||||
icon_state = "gbear_yellow"
|
||||
filling_color = "#863333"
|
||||
list_reagents = list("sugar" = 10, "lemonjuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummybear/orange
|
||||
name = "gummy bear"
|
||||
name = "orange gummy bear"
|
||||
desc = "A small edible bear. It's orange!"
|
||||
icon_state = "gbear_orange"
|
||||
filling_color = "#E78108"
|
||||
list_reagents = list("sugar" = 10, "orangejuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummybear/purple
|
||||
name = "gummy bear"
|
||||
name = "purple gummy bear"
|
||||
desc = "A small edible bear. It's purple!"
|
||||
icon_state = "gbear_purple"
|
||||
filling_color = "#993399"
|
||||
list_reagents = list("sugar" = 10, "grapejuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummybear/wtf
|
||||
name = "gummy bear"
|
||||
name = "rainbow gummy bear"
|
||||
desc = "A small bear. Wait... what?"
|
||||
icon_state = "gbear_rainbow"
|
||||
filling_color = "#60A584"
|
||||
list_reagents = list("sugar" = 10, "space_drugs" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
// ***********************************************************
|
||||
// Gummy Worm Flavors
|
||||
// ***********************************************************
|
||||
|
||||
/obj/item/food/snacks/candy/gummyworm/red
|
||||
name = "gummy worm"
|
||||
name = "red gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's red!"
|
||||
icon_state = "gworm_red"
|
||||
filling_color = "#801E28"
|
||||
list_reagents = list("sugar" = 10, "cherryjelly" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummyworm/blue
|
||||
name = "gummy worm"
|
||||
name = "blue gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's blue!"
|
||||
icon_state = "gworm_blue"
|
||||
filling_color = "#863333"
|
||||
list_reagents = list("sugar" = 10, "berryjuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummyworm/poison
|
||||
name = "gummy worm"
|
||||
name = "blue gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's blue!"
|
||||
icon_state = "gworm_blue"
|
||||
filling_color = "#863353"
|
||||
list_reagents = list("poisonberryjuice" = 12)
|
||||
|
||||
/obj/item/food/snacks/candy/gummyworm/green
|
||||
name = "gummy worm"
|
||||
name = "green gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's green!"
|
||||
icon_state = "gworm_green"
|
||||
filling_color = "#365E30"
|
||||
list_reagents = list("sugar" = 10, "limejuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummyworm/yellow
|
||||
name = "gummy worm"
|
||||
name = "yellow gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's yellow!"
|
||||
icon_state = "gworm_yellow"
|
||||
filling_color = "#863333"
|
||||
list_reagents = list("sugar" = 10, "lemonjuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummyworm/orange
|
||||
name = "gummy worm"
|
||||
name = "orange gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's orange!"
|
||||
icon_state = "gworm_orange"
|
||||
filling_color = "#E78108"
|
||||
list_reagents = list("sugar" = 10, "orangejuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummyworm/purple
|
||||
name = "gummy worm"
|
||||
name = "purple gummy worm"
|
||||
desc = "An edible worm, made from gelatin. It's purple!"
|
||||
icon_state = "gworm_purple"
|
||||
filling_color = "#993399"
|
||||
list_reagents = list("sugar" = 10, "grapejuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/gummyworm/wtf
|
||||
name = "gummy worm"
|
||||
name = "rainbow gummy worm"
|
||||
desc = "An edible worm. Did it just move?"
|
||||
icon_state = "gworm_rainbow"
|
||||
filling_color = "#60A584"
|
||||
list_reagents = list("sugar" = 10, "space_drugs" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
// ***********************************************************
|
||||
// Jelly Bean Flavors
|
||||
// ***********************************************************
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/red
|
||||
name = "jelly bean"
|
||||
name = "red jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's red!"
|
||||
icon_state = "jbean_red"
|
||||
filling_color = "#801E28"
|
||||
list_reagents = list("sugar" = 10, "cherryjelly" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/blue
|
||||
name = "jelly bean"
|
||||
name = "blue jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's blue!"
|
||||
icon_state = "jbean_blue"
|
||||
filling_color = "#863333"
|
||||
list_reagents = list("sugar" = 10, "berryjuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/poison
|
||||
name = "jelly bean"
|
||||
name = "blue jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's blue!"
|
||||
icon_state = "jbean_blue"
|
||||
filling_color = "#863353"
|
||||
list_reagents = list("poisonberryjuice" = 12)
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/green
|
||||
name = "jelly bean"
|
||||
name = "green jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's green!"
|
||||
icon_state = "jbean_green"
|
||||
filling_color = "#365E30"
|
||||
list_reagents = list("sugar" = 10, "limejuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/yellow
|
||||
name = "jelly bean"
|
||||
name = "yellow jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's yellow!"
|
||||
icon_state = "jbean_yellow"
|
||||
filling_color = "#863333"
|
||||
list_reagents = list("sugar" = 10, "lemonjuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/orange
|
||||
name = "jelly bean"
|
||||
name = "orange jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's orange!"
|
||||
icon_state = "jbean_orange"
|
||||
filling_color = "#E78108"
|
||||
list_reagents = list("sugar" = 10, "orangejuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/purple
|
||||
name = "jelly bean"
|
||||
name = "purple jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's purple!"
|
||||
icon_state = "jbean_purple"
|
||||
filling_color = "#993399"
|
||||
list_reagents = list("sugar" = 10, "grapejuice" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/chocolate
|
||||
name = "jelly bean"
|
||||
name = "chocolate jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's chocolate!"
|
||||
icon_state = "jbean_choc"
|
||||
filling_color = "#302000"
|
||||
list_reagents = list("sugar" = 10, "chocolate" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/popcorn
|
||||
name = "jelly bean"
|
||||
name = "popcorn jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's popcorn flavored!"
|
||||
icon_state = "jbean_popcorn"
|
||||
filling_color = "#664330"
|
||||
list_reagents = list("sugar" = 10, "nutriment" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/cola
|
||||
name = "jelly bean"
|
||||
name = "cola jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's Cola flavored!"
|
||||
icon_state = "jbean_cola"
|
||||
filling_color = "#102000"
|
||||
list_reagents = list("sugar" = 10, "cola" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/drgibb
|
||||
name = "jelly bean"
|
||||
name = "\improper Dr. Gibb jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's Dr. Gibb flavored!"
|
||||
icon_state = "jbean_cola"
|
||||
filling_color = "#102000"
|
||||
list_reagents = list("sugar" = 10, "dr_gibb" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/coffee
|
||||
name = "jelly bean"
|
||||
name = "coffee jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. It's Coffee flavored!"
|
||||
icon_state = "jbean_choc"
|
||||
filling_color = "#482000"
|
||||
list_reagents = list("sugar" = 10, "coffee" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/jellybean/wtf
|
||||
name = "jelly bean"
|
||||
name = "rainbow jelly bean"
|
||||
desc = "A candy bean, guaranteed to not give you gas. You aren't sure what color it is."
|
||||
icon_state = "jbean_rainbow"
|
||||
filling_color = "#60A584"
|
||||
list_reagents = list("sugar" = 10, "space_drugs" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
// ***********************************************************
|
||||
// Cotton Candy Flavors
|
||||
// ***********************************************************
|
||||
|
||||
/obj/item/food/snacks/candy/cotton/red
|
||||
name = "cotton candy"
|
||||
name = "red cotton candy"
|
||||
desc = "Light and fluffy, it's like eating a cloud made from sugar!"
|
||||
icon_state = "cottoncandy_red"
|
||||
trash = /obj/item/c_tube
|
||||
filling_color = "#801E28"
|
||||
list_reagents = list("sugar" = 15, "cherryjelly" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/cotton/blue
|
||||
name = "cotton candy"
|
||||
name = "blue cotton candy"
|
||||
desc = "Light and fluffy, it's like eating a cloud made from sugar!"
|
||||
icon_state = "cottoncandy_blue"
|
||||
trash = /obj/item/c_tube
|
||||
filling_color = "#863333"
|
||||
list_reagents = list("sugar" = 15, "berryjuice" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/cotton/poison
|
||||
name = "cotton candy"
|
||||
name = "blue cotton candy"
|
||||
desc = "Light and fluffy, it's like eating a cloud made from sugar!"
|
||||
icon_state = "cottoncandy_blue"
|
||||
trash = /obj/item/c_tube
|
||||
@@ -455,55 +492,61 @@
|
||||
list_reagents = list("poisonberryjuice" = 20)
|
||||
|
||||
/obj/item/food/snacks/candy/cotton/green
|
||||
name = "cotton candy"
|
||||
name = "green cotton candy"
|
||||
desc = "Light and fluffy, it's like eating a cloud made from sugar!"
|
||||
icon_state = "cottoncandy_green"
|
||||
trash = /obj/item/c_tube
|
||||
filling_color = "#365E30"
|
||||
list_reagents = list("sugar" = 15, "limejuice" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/cotton/yellow
|
||||
name = "cotton candy"
|
||||
name = "yellow cotton candy"
|
||||
desc = "Light and fluffy, it's like eating a cloud made from sugar!"
|
||||
icon_state = "cottoncandy_yellow"
|
||||
trash = /obj/item/c_tube
|
||||
filling_color = "#863333"
|
||||
list_reagents = list("sugar" = 15, "lemonjuice" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/cotton/orange
|
||||
name = "cotton candy"
|
||||
name = "orange cotton candy"
|
||||
desc = "Light and fluffy, it's like eating a cloud made from sugar!"
|
||||
icon_state = "cottoncandy_orange"
|
||||
trash = /obj/item/c_tube
|
||||
filling_color = "#E78108"
|
||||
list_reagents = list("sugar" = 15, "orangejuice" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/cotton/purple
|
||||
name = "cotton candy"
|
||||
name = "purple cotton candy"
|
||||
desc = "Light and fluffy, it's like eating a cloud made from sugar!"
|
||||
icon_state = "cottoncandy_purple"
|
||||
trash = /obj/item/c_tube
|
||||
filling_color = "#993399"
|
||||
list_reagents = list("sugar" = 15, "grapejuice" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/cotton/pink
|
||||
name = "cotton candy"
|
||||
name = "pink cotton candy"
|
||||
desc = "Light and fluffy, it's like eating a cloud made from sugar!"
|
||||
icon_state = "cottoncandy_pink"
|
||||
trash = /obj/item/c_tube
|
||||
filling_color = "#863333"
|
||||
list_reagents = list("sugar" = 15, "watermelonjuice" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/cotton/rainbow
|
||||
name = "cotton candy"
|
||||
name = "rainbow cotton candy"
|
||||
desc = "Light and fluffy, it's like eating a cloud made from sugar!"
|
||||
icon_state = "cottoncandy_rainbow"
|
||||
trash = /obj/item/c_tube
|
||||
filling_color = "#C8A5DC"
|
||||
list_reagents = list("omnizine" = 20)
|
||||
goal_difficulty = FOOD_GOAL_HARD
|
||||
|
||||
/obj/item/food/snacks/candy/cotton/bad_rainbow
|
||||
name = "cotton candy"
|
||||
name = "rainbow cotton candy"
|
||||
desc = "Light and fluffy, it's like eating a cloud made from sugar!"
|
||||
icon_state = "cottoncandy_rainbow"
|
||||
trash = /obj/item/c_tube
|
||||
@@ -523,27 +566,32 @@
|
||||
icon_state = "asteroidcrunch"
|
||||
trash = /obj/item/trash/candy
|
||||
filling_color = "#7D5F46"
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/confectionery/toffee
|
||||
name = "Yum-Baton Bar"
|
||||
desc = "Chocolate and toffee in the shape of a baton. Security sure knows how to pound these down!"
|
||||
icon_state = "yumbaton"
|
||||
filling_color = "#7D5F46"
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/confectionery/caramel
|
||||
name = "Malper Bar"
|
||||
desc = "A chocolate syringe filled with a caramel injection. Just what the doctor ordered!"
|
||||
icon_state = "malper"
|
||||
filling_color = "#7D5F46"
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/confectionery/caramel_nougat
|
||||
name = "Toxins Test Bar"
|
||||
desc = "An explosive combination of chocolate, caramel, and nougat. Research has never been so tasty!"
|
||||
icon_state = "toxinstest"
|
||||
filling_color = "#7D5F46"
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candy/confectionery/nougat
|
||||
name = "Tool-erone Bar"
|
||||
desc = "Chocolate-covered nougat, shaped like a wrench. Great for an engineer on the go!"
|
||||
icon_state = "toolerone"
|
||||
filling_color = "#7D5F46"
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
desc = "Goreng Pisang, also known as fried bananas."
|
||||
icon_state = "friedbanana"
|
||||
list_reagents = list("sugar" = 5, "nutriment" = 8, "cornoil" = 4)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/ricepudding
|
||||
name = "rice pudding"
|
||||
@@ -16,6 +17,7 @@
|
||||
filling_color = "#FFFBDB"
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 2)
|
||||
tastes = list("rice" = 1, "sweetness" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/spacylibertyduff
|
||||
name = "spacy liberty duff"
|
||||
@@ -26,6 +28,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "psilocybin" = 6)
|
||||
tastes = list("jelly" = 1, "mushroom" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/amanitajelly
|
||||
name = "amanita jelly"
|
||||
@@ -36,6 +39,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "amanitin" = 6, "psilocybin" = 3)
|
||||
tastes = list("jelly" = 1, "mushroom" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/candiedapple
|
||||
name = "candied apple"
|
||||
@@ -45,6 +49,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 3, "sugar" = 2)
|
||||
tastes = list("apple" = 2, "sweetness" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/mint
|
||||
name = "mint"
|
||||
@@ -53,3 +58,4 @@
|
||||
bitesize = 1
|
||||
filling_color = "#F2F2F2"
|
||||
list_reagents = list("minttoxin" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 1)
|
||||
tastes = list("taco" = 4, "meat" = 2, "cheese" = 2, "lettuce" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burrito
|
||||
name = "burrito"
|
||||
@@ -19,6 +20,7 @@
|
||||
filling_color = "#A36A1F"
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 1)
|
||||
tastes = list("torilla" = 2, "meat" = 3)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/chimichanga
|
||||
@@ -28,6 +30,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#A36A1F"
|
||||
list_reagents = list("omnizine" = 4, "cheese" = 2) //Deadpool reference. Deal with it.
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/enchiladas
|
||||
name = "enchiladas"
|
||||
@@ -38,6 +41,7 @@
|
||||
bitesize = 4
|
||||
list_reagents = list("nutriment" = 8, "capsaicin" = 6)
|
||||
tastes = list("hot peppers" = 1, "meat" = 3, "cheese" = 1, "sour cream" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/cornchips
|
||||
name = "corn chips"
|
||||
@@ -47,6 +51,7 @@
|
||||
trash = /obj/item/trash/chips
|
||||
filling_color = "#E8C31E"
|
||||
list_reagents = list("nutriment" = 3)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -113,6 +118,7 @@
|
||||
filling_color = "#F0F2E4"
|
||||
list_reagents = list("nutriment" = 5)
|
||||
tastes = list("custard" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/yakiimo
|
||||
name = "yaki imo"
|
||||
@@ -122,6 +128,7 @@
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 4)
|
||||
filling_color = "#8B1105"
|
||||
tastes = list("sweet potato" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -143,6 +150,7 @@
|
||||
trash = /obj/item/stack/rods
|
||||
filling_color = "#A85340"
|
||||
list_reagents = list("nutriment" = 8)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/tofukabob
|
||||
name = "tofu-kabob"
|
||||
@@ -151,6 +159,7 @@
|
||||
trash = /obj/item/stack/rods
|
||||
filling_color = "#FFFEE0"
|
||||
list_reagents = list("nutriment" = 8)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/picoss_kabob
|
||||
name = "picoss-kabob"
|
||||
@@ -160,3 +169,4 @@
|
||||
list_reagents = list("protein" = 8, "vitamin" = 4, "vinegar" = 1, "capsaicin" = 1)
|
||||
filling_color = "#A85340"
|
||||
tastes = list("fish" = 4, "acid" = 1, "onion" = 1, "heat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
@@ -30,13 +30,7 @@
|
||||
filling_color = "#FFD675"
|
||||
list_reagents = list("nutriment" = 4, "sugar" = 1, "vitamin" = 1, "banana" = 3)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "sad clowns" = 1, "ice-cream" = 1)
|
||||
|
||||
/obj/item/food/snacks/frozen/sundae
|
||||
name = "sundae"
|
||||
desc = "Portable ice cream in its own packaging."
|
||||
icon_state = "sundae"
|
||||
list_reagents = list("nutriment" = 2, "ice" = 2)
|
||||
tastes = list("ice cream" = 1, "banana" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
///////////////////
|
||||
// Ice Cream //
|
||||
@@ -100,6 +94,7 @@
|
||||
icon_state = "icecreamsandwich"
|
||||
list_reagents = list("nutriment" = 2, "ice" = 2)
|
||||
tastes = list("ice cream" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/berryicecreamsandwich
|
||||
name = "strawberry icecream sandwich"
|
||||
@@ -107,6 +102,7 @@
|
||||
icon_state = "strawberryicecreamsandwich"
|
||||
list_reagents = list("nutriment" = 2, "ice" = 2)
|
||||
tastes = list("ice cream" = 1, "strawberry" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/sundae
|
||||
name = "sundae"
|
||||
@@ -114,6 +110,7 @@
|
||||
icon_state = "sundae"
|
||||
list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2)
|
||||
tastes = list("ice cream" = 1, "banana" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/honkdae
|
||||
name = "honkdae"
|
||||
@@ -121,6 +118,7 @@
|
||||
icon_state = "honkdae"
|
||||
list_reagents = list("nutriment" = 6, "banana" = 10, "vitamin" = 4)
|
||||
tastes = list("ice cream" = 1, "banana" = 1, "a bad joke" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/cornuto
|
||||
name = "cornuto"
|
||||
@@ -128,6 +126,7 @@
|
||||
icon_state = "cornuto"
|
||||
list_reagents = list("nutriment" = 6, "hot_coco" = 4, "cream" = 2, "vanilla" = 4, "sugar" = 2)
|
||||
tastes = list("chopped hazelnuts" = 3, "waffle" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/peanutbuttermochi
|
||||
name = "peanut butter ice cream mochi"
|
||||
@@ -135,6 +134,7 @@
|
||||
icon_state = "pb_ice_cream_mochi"
|
||||
list_reagents = list("nutriment" = 4, "sugar" = 6, "peanutbutter" = 4, "milk" = 2)
|
||||
tastes = list("peanut butter" = 1, "mochi" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/spacefreezy
|
||||
name = "spacefreezy"
|
||||
@@ -142,6 +142,7 @@
|
||||
icon_state = "spacefreezy"
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 5, "bluecherryjelly" = 5)
|
||||
tastes = list("blue cherries" = 2, "ice cream" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
///////////////////
|
||||
// Snow Cones //
|
||||
@@ -161,6 +162,7 @@
|
||||
icon_state = "amber_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "applejuice" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "apples" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/berry
|
||||
name = "berry snowcone"
|
||||
@@ -168,6 +170,7 @@
|
||||
icon_state = "berry_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "berryjuice" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "berries" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/bluecherry
|
||||
name = "bluecherry snowcone"
|
||||
@@ -175,6 +178,7 @@
|
||||
icon_state = "blue_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "bluecherryjelly" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "bluecherries" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/cherry
|
||||
name = "cherry snowcone"
|
||||
@@ -182,6 +186,7 @@
|
||||
icon_state = "red_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "cherryjelly" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "cherries" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/fruitsalad
|
||||
name = "fruit salad snowcone"
|
||||
@@ -189,6 +194,7 @@
|
||||
icon_state = "fruitsalad_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "limejuice" = 5, "lemonjuice" = 5, "orangejuice" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "oranges" = 5, "lemons" = 5, "limes" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/grape
|
||||
name = "grape snowcone"
|
||||
@@ -196,6 +202,7 @@
|
||||
icon_state = "grape_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "grapejuice" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "grapes" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/honey
|
||||
name = "honey snowcone"
|
||||
@@ -203,6 +210,7 @@
|
||||
icon_state = "amber_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "honey" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "honey" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/lemon
|
||||
name = "lemon snowcone"
|
||||
@@ -210,6 +218,7 @@
|
||||
icon_state = "lemon_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "lemonjuice" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "lemons" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/lime
|
||||
name = "lime snowcone"
|
||||
@@ -217,6 +226,7 @@
|
||||
icon_state = "lime_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "limejuice" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "limes" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/mime
|
||||
name = "mime snowcone"
|
||||
@@ -224,6 +234,7 @@
|
||||
icon_state = "mime_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "nothing" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "silence" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/orange
|
||||
name = "orange snowcone"
|
||||
@@ -231,6 +242,7 @@
|
||||
icon_state = "orange_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "orangejuice" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "oranges" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/pineapple
|
||||
name = "pineapple snowcone"
|
||||
@@ -238,6 +250,7 @@
|
||||
icon_state = "pineapple_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "pineapplejuice" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "pineapple" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/rainbow
|
||||
name = "rainbow snowcone"
|
||||
@@ -245,6 +258,7 @@
|
||||
icon_state = "rainbow_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "colorful_reagent" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "rainbows" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/cola
|
||||
name = "space cola snowcone"
|
||||
@@ -252,6 +266,7 @@
|
||||
icon_state = "soda_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "cola" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "soda" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/snowcone/spacemountain
|
||||
name = "space mountain wind snowcone"
|
||||
@@ -259,6 +274,7 @@
|
||||
icon_state = "mountainwind_sc"
|
||||
list_reagents = list("water" = 10, "ice" = 5, "nutriment" = 1, "spacemountainwind" = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "mountain wind" = 5)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
///////////////////
|
||||
// Popsicles //
|
||||
@@ -271,6 +287,7 @@
|
||||
trash = /obj/item/trash/popsicle_stick
|
||||
list_reagents = list("nutriment" = 4, "sugar" = 4, "chocolate" = 3)
|
||||
tastes = list("ice cream" = 1, "chocolate" = 1, "vanilla" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/popsicle/bananatop
|
||||
name = "banana topsicle"
|
||||
@@ -278,6 +295,7 @@
|
||||
icon_state = "topsicle_banana"
|
||||
list_reagents = list("vitamin" = 4, "sugar" = 6, "banana" = 4)
|
||||
tastes = list("bananas" = 1, "tofu" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/popsicle/berrytop
|
||||
name = "berry topsicle"
|
||||
@@ -285,6 +303,7 @@
|
||||
icon_state = "topsicle_berry"
|
||||
list_reagents = list("vitamin" = 4, "sugar" = 6, "berryjuice" = 4)
|
||||
tastes = list("berries" = 1, "tofu" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/popsicle/pineappletop
|
||||
name = "pineapple topsicle"
|
||||
@@ -292,6 +311,7 @@
|
||||
icon_state = "topsicle_pineapple"
|
||||
list_reagents = list("vitamin" = 4, "sugar" = 6, "pineapplejuice" = 4)
|
||||
tastes = list("pineapples" = 1, "tofu" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/popsicle/licoricecream
|
||||
name = "licorice creamsicle"
|
||||
@@ -299,6 +319,7 @@
|
||||
icon_state = "licorice_creamsicle"
|
||||
list_reagents = list("nutriment" = 4, "cream" = 2, "vanilla" = 1, "sugar" = 4, "salt" = 1)
|
||||
tastes = list("salty licorice" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/popsicle/orangecream
|
||||
name = "orange creamsicle"
|
||||
@@ -306,6 +327,7 @@
|
||||
icon_state = "creamsicle_o"
|
||||
list_reagents = list("orangejuice" = 4, "cream" = 2, "vanilla" = 2, "sugar" = 4)
|
||||
tastes = list("ice cream" = 1, "oranges" = 1, "vanilla" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/popsicle/berrycream
|
||||
name = "berry creamsicle"
|
||||
@@ -313,6 +335,7 @@
|
||||
icon_state = "creamsicle_m"
|
||||
list_reagents = list("berryjuice" = 4, "cream" = 2, "vanilla" = 2, "sugar" = 4)
|
||||
tastes = list("ice cream" = 1, "berries" = 1, "vanilla" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/popsicle/frozenpineapple
|
||||
name = "frozen pineapple pop"
|
||||
@@ -320,6 +343,7 @@
|
||||
icon_state = "pineapple_pop"
|
||||
list_reagents = list("pineapplejuice" = 4, "sugar" = 4, "nutriment" = 2, "vitamin" = 2)
|
||||
tastes = list("cold pineapple" = 1, "chocolate" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/popsicle/sea_salt
|
||||
name = "sea salt ice-cream bar"
|
||||
@@ -327,6 +351,7 @@
|
||||
icon_state = "sea_salt_pop"
|
||||
list_reagents = list("salt" = 1, "nutriment" = 2, "cream" = 2, "vanilla" = 2, "sugar"= 4,)
|
||||
tastes = list("salt" = 1, "sweet" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/frozen/popsicle/ant
|
||||
name = "ant popsicle"
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("plantmatter" = 3)
|
||||
tastes = list("tofu" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soydope
|
||||
name = "soy dope"
|
||||
@@ -230,6 +231,7 @@
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 2, "sugar" = 2, "cocoa" = 2)
|
||||
tastes = list("chocolate" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
///Chocolate crumbles/pile
|
||||
/obj/item/food/snacks/chocolatebar/attackby(obj/item/I, mob/user, params)
|
||||
|
||||
@@ -201,6 +201,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 5)
|
||||
tastes = list("meat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/bacon
|
||||
name = "bacon"
|
||||
@@ -209,6 +210,7 @@
|
||||
icon_state = "bacon"
|
||||
list_reagents = list("nutriment" = 4, "porktonium" = 10, "msg" = 4)
|
||||
tastes = list("bacon" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/telebacon
|
||||
name = "tele bacon"
|
||||
@@ -218,6 +220,7 @@
|
||||
var/obj/item/radio/beacon/bacon/baconbeacon
|
||||
list_reagents = list("nutriment" = 4, "porktonium" = 10)
|
||||
tastes = list("bacon" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/telebacon/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -250,6 +253,7 @@
|
||||
filling_color = "#DB0000"
|
||||
list_reagents = list("protein" = 6, "vitamin" = 1, "porktonium" = 10)
|
||||
tastes = list("meat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/cutlet
|
||||
name = "cutlet"
|
||||
@@ -258,6 +262,7 @@
|
||||
icon_state = "cutlet"
|
||||
list_reagents = list("protein" = 2)
|
||||
tastes = list("meat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/spidereggsham
|
||||
name = "green eggs and ham"
|
||||
@@ -461,6 +466,7 @@
|
||||
bitesize = 1
|
||||
list_reagents = list("nutriment" = 3, "egg" = 5)
|
||||
tastes = list("egg" = 1, "salt" = 1, "pepper" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/boiledegg
|
||||
name = "boiled egg"
|
||||
@@ -469,6 +475,7 @@
|
||||
icon_state = "egg"
|
||||
filling_color = "#FFFFFF"
|
||||
list_reagents = list("nutriment" = 2, "egg" = 5, "vitamin" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/chocolateegg
|
||||
name = "chocolate egg"
|
||||
@@ -477,6 +484,7 @@
|
||||
icon_state = "chocolateegg"
|
||||
filling_color = "#7D5F46"
|
||||
list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/omelette
|
||||
name = "omelette du fromage"
|
||||
@@ -488,6 +496,7 @@
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 1)
|
||||
bitesize = 1
|
||||
tastes = list("egg" = 1, "cheese" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/benedict
|
||||
name = "eggs benedict"
|
||||
@@ -497,6 +506,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "egg" = 3, "vitamin" = 4)
|
||||
tastes = list("egg" = 1, "bacon" = 1, "bun" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -511,6 +521,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "ketchup" = 3, "vitamin" = 3)
|
||||
tastes = list("bun" = 3, "meat" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/meatbun
|
||||
name = "meat bun"
|
||||
@@ -520,6 +531,7 @@
|
||||
bitesize = 6
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 2)
|
||||
tastes = list("bun" = 3, "meat" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/sliceable/turkey
|
||||
name = "turkey"
|
||||
@@ -539,6 +551,7 @@
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#B97A57"
|
||||
tastes = list("turkey" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/organ
|
||||
name = "organ"
|
||||
@@ -573,3 +586,4 @@
|
||||
list_reagents = list("nutriment" = 3, "protein" = 10, "bbqsauce" = 10)
|
||||
filling_color = "#FF1C1C"
|
||||
bitesize = 3
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
filling_color = "#4D2F5E"
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 2)
|
||||
tastes = list("eggplant" = 2, "cheese" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soylentgreen
|
||||
name = "soylent green"
|
||||
@@ -29,6 +30,7 @@
|
||||
filling_color = "#E6FA61"
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 1)
|
||||
tastes = list("waffles" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/monkeysdelight
|
||||
name = "monkey's delight"
|
||||
@@ -39,6 +41,7 @@
|
||||
bitesize = 6
|
||||
list_reagents = list("nutriment" = 10, "banana" = 5, "vitamin" = 5)
|
||||
tastes = list("banana" = 1, "the jungle" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/dionaroast
|
||||
name = "roast diona"
|
||||
@@ -48,6 +51,7 @@
|
||||
filling_color = "#75754B"
|
||||
list_reagents = list("plantmatter" = 4, "nutriment" = 2, "radium" = 2, "vitamin" = 4)
|
||||
tastes = list("chewy vegetables" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/tofurkey
|
||||
name = "tofurkey"
|
||||
@@ -57,6 +61,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 12, "ether" = 3)
|
||||
tastes = list("tofu" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -73,6 +78,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6,"vitamin" = 4)
|
||||
tastes = list("lettuce" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/aesir
|
||||
name = "aesir salad"
|
||||
@@ -80,6 +86,7 @@
|
||||
icon_state = "aesirsalad"
|
||||
list_reagents = list("nutriment" = 8, "omnizine" = 8, "vitamin" = 6)
|
||||
tastes = list("divinity" = 1, "lettuce" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/antipasto
|
||||
name = "antipasto salad"
|
||||
@@ -87,6 +94,7 @@
|
||||
icon_state = "antipasto_salad"
|
||||
list_reagents = list("nutriment" = 12, "protein" = 6, "vitamin" = 6)
|
||||
tastes = list("lettuce" = 2, "salami" = 2, "mozzarella cheese" = 2, "tomatoes" = 2, "dressing" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/caesar
|
||||
name = "Caesar salad"
|
||||
@@ -94,6 +102,7 @@
|
||||
icon_state = "caesar_salad"
|
||||
list_reagents = list("nutriment" = 12, "vitamin" = 6)
|
||||
tastes = list("healthy greens" = 2, "olive dressing" = 2, "feta cheese" = 2, "pita bread" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/fruit
|
||||
name = "fruit salad"
|
||||
@@ -101,6 +110,7 @@
|
||||
icon_state = "fruitsalad"
|
||||
list_reagents = list("nutriment" = 9, "vitamin" = 4)
|
||||
tastes = list("fruit" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/greek
|
||||
name = "Greek salad"
|
||||
@@ -108,6 +118,7 @@
|
||||
icon_state = "greek_salad"
|
||||
list_reagents = list("nutriment" = 13, "vitamin" = 14)
|
||||
tastes = list("healthy greens" = 2, "olive dressing" = 1, "feta cheese" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/citrusdelight
|
||||
name = "citrus delight"
|
||||
@@ -115,6 +126,7 @@
|
||||
icon_state = "citrusdelight"
|
||||
list_reagents = list("nutriment" = 11, "vitamin" = 7)
|
||||
tastes = list("sourness" = 1, "leaves" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/jungle
|
||||
name = "jungle salad"
|
||||
@@ -122,6 +134,7 @@
|
||||
icon_state = "junglesalad"
|
||||
list_reagents = list("banana" = 5, "nutriment" = 11, "vitamin" = 7)
|
||||
tastes = list("fruit" = 1, "the jungle" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/kale
|
||||
name = "kale salad"
|
||||
@@ -129,6 +142,7 @@
|
||||
icon_state = "kale_salad"
|
||||
list_reagents = list("nutriment" = 12, "vitamin" = 12)
|
||||
tastes = list("healthy greens" = 2, "olive dressing" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/potato
|
||||
name = "potato salad"
|
||||
@@ -136,6 +150,7 @@
|
||||
icon_state = "potato_salad"
|
||||
list_reagents = list("nutriment" = 10, "protein" = 4)
|
||||
tastes = list("potato" = 2, "egg" = 2, "mayonnaise" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/melonfruitbowl
|
||||
name = "melon fruit bowl"
|
||||
@@ -144,6 +159,7 @@
|
||||
trash = null
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 4)
|
||||
tastes = list("melon" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/herb
|
||||
name = "herb salad"
|
||||
@@ -152,6 +168,7 @@
|
||||
filling_color = "#76B87F"
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 2)
|
||||
tastes = list("lettuce" = 1, "apple" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/salad/valid
|
||||
name = "valid salad"
|
||||
@@ -160,6 +177,7 @@
|
||||
filling_color = "#76B87F"
|
||||
list_reagents = list("nutriment" = 8, "salglu_solution" = 5, "vitamin" = 2)
|
||||
tastes = list("fried potato" = 1, "lettuce" = 1, "meat" = 1, "valids" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -270,6 +288,7 @@
|
||||
bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("popcorn" = 3, "butter" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/popcorn/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
filling_color = "#FCEE81"
|
||||
list_reagents = list("nutriment" = 2, "vitamin" = 1)
|
||||
tastes = list("pasta" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/pastatomato
|
||||
name = "spaghetti"
|
||||
@@ -46,6 +47,7 @@
|
||||
bitesize = 4
|
||||
list_reagents = list("nutriment" = 6, "tomatojuice" = 10, "vitamin" = 4)
|
||||
tastes = list("pasta" = 1, "tomato" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/meatballspaghetti
|
||||
name = "spaghetti & meatballs"
|
||||
@@ -56,6 +58,7 @@
|
||||
filling_color = "#DE4545"
|
||||
list_reagents = list("nutriment" = 8, "synaptizine" = 5, "vitamin" = 4)
|
||||
tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/spesslaw
|
||||
name = "spesslaw"
|
||||
@@ -65,6 +68,7 @@
|
||||
filling_color = "#DE4545"
|
||||
list_reagents = list("nutriment" = 8, "synaptizine" = 10, "vitamin" = 6)
|
||||
tastes = list("pasta" = 1, "tomato" = 1, "meat" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/macncheese
|
||||
name = "mac 'n' cheese"
|
||||
@@ -75,6 +79,7 @@
|
||||
filling_color = "#ffe45d"
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 2, "cheese" = 4)
|
||||
tastes = list("pasta" = 1, "cheese" = 1, "comfort" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/lasagna
|
||||
name = "lasagna"
|
||||
@@ -84,3 +89,4 @@
|
||||
filling_color = "#E18712"
|
||||
list_reagents = list("nutriment" = 10, "msg" = 3, "vitamin" = 4, "tomatojuice" = 10)
|
||||
tastes = list("pasta" = 1, "cheese" = 1, "tomato" = 1, "meat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
icon_state = "margheritapizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Meat Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/meatpizza
|
||||
@@ -41,6 +42,7 @@
|
||||
icon_state = "meatpizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
tastes = list("crust" = 1, "cheese" = 1, "meat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Mushroom Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/mushroompizza
|
||||
@@ -58,6 +60,7 @@
|
||||
icon_state = "mushroompizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
tastes = list("crust" = 1, "cheese" = 1, "mushroom" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Vegetable Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/vegetablepizza
|
||||
@@ -75,6 +78,7 @@
|
||||
icon_state = "vegetablepizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "carrot" = 1, "vegetables" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Hawaiian Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/hawaiianpizza
|
||||
@@ -92,6 +96,7 @@
|
||||
icon_state = "hawaiianpizzaslice"
|
||||
filling_color = "#e5b437"
|
||||
tastes = list("crust" = 1, "cheese" = 1, "pineapple" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Mac 'n' Cheese Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/macpizza
|
||||
@@ -110,6 +115,7 @@
|
||||
icon_state = "macpizzaslice"
|
||||
filling_color = "#ffe45d"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 2, "pasta" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Pepperoni Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/pepperonipizza
|
||||
@@ -128,6 +134,7 @@
|
||||
icon_state = "pepperonipizzaslice"
|
||||
filling_color = "#ffe45d"
|
||||
tastes = list("cheese" = 3, "pepperoni" = 3, "grease" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Cheese Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/cheesepizza
|
||||
@@ -144,6 +151,7 @@
|
||||
icon_state = "cheesepizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 3)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Donk-pocket Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/donkpocketpizza
|
||||
@@ -161,6 +169,7 @@
|
||||
icon_state = "donkpocketpizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
tastes = list("crust" = 1, "meat" = 1, "laziness" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Dank Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/dankpizza
|
||||
@@ -178,6 +187,7 @@
|
||||
icon_state = "dankpizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
tastes = list("crust" = 1, "cheese" = 1, "special herbs" = 2)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Firecracker Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/firecrackerpizza
|
||||
@@ -195,6 +205,7 @@
|
||||
icon_state = "firecrackerpizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
tastes = list("crust" = 1, "cheese" = 1, "HOTNESS" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// "Pesto" Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/pestopizza
|
||||
@@ -212,6 +223,7 @@
|
||||
icon_state = "pestopizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
tastes = list("tomato" = 1, "cheese" = 1, "wasabi" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
// Garlic Pizza
|
||||
/obj/item/food/snacks/sliceable/pizza/garlicpizza
|
||||
@@ -229,6 +241,7 @@
|
||||
icon_state = "garlicpizzaslice"
|
||||
filling_color = "#BAA14C"
|
||||
tastes = list("crust" = 1, "cheese" = 1, "garlic" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
|
||||
//////////////////////
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
tastes = list("bun" = 4, "meat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/brain
|
||||
name = "brainburger"
|
||||
@@ -59,6 +60,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
tastes = list("bun" = 4, "meat" = 1, "cheese" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/tofu
|
||||
name = "tofu burger"
|
||||
@@ -68,6 +70,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
tastes = list("bun" = 4, "tofu" = 4)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/hamborger
|
||||
name = "hamborger"
|
||||
@@ -135,6 +138,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 10, "vitamin" = 2)
|
||||
tastes = list("bun" = 4, "meat" = 2, "cheese" = 2, "type two diabetes" = 10)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/superbite
|
||||
name = "SuperBite burger"
|
||||
@@ -162,6 +166,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 7, "protein" = 1)
|
||||
tastes = list("bun" = 2, "meat" = 2, "white" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/ppatty/red
|
||||
name = "red pretty patty"
|
||||
@@ -171,6 +176,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 7, "protein" = 1)
|
||||
tastes = list("bun" = 2, "meat" = 2, "red" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/ppatty/orange
|
||||
name = "orange pretty patty"
|
||||
@@ -180,6 +186,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 7, "protein" = 1)
|
||||
tastes = list("bun" = 2, "meat" = 2, "orange" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/ppatty/yellow
|
||||
name = "yellow pretty patty"
|
||||
@@ -189,6 +196,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 7, "protein" = 1)
|
||||
tastes = list("bun" = 2, "meat" = 2, "yellow" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/ppatty/green
|
||||
name = "green pretty patty"
|
||||
@@ -198,6 +206,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 7, "protein" = 1)
|
||||
tastes = list("bun" = 2, "meat" = 2, "green" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/ppatty/blue
|
||||
name = "blue pretty patty"
|
||||
@@ -207,6 +216,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 7, "protein" = 1)
|
||||
tastes = list("bun" = 2, "meat" = 2, "blue" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/ppatty/purple
|
||||
name = "purple pretty patty"
|
||||
@@ -216,6 +226,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 7, "protein" = 1)
|
||||
tastes = list("bun" = 2, "meat" = 2, "purple" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/ppatty/rainbow
|
||||
name = "rainbow pretty patty"
|
||||
@@ -225,6 +236,7 @@
|
||||
bitesize = 4
|
||||
list_reagents = list("nutriment" = 14, "protein" = 5, "omnizine" = 10)
|
||||
tastes = list("bun" = 2, "meat" = 2, "rainbow" = 5)
|
||||
goal_difficulty = FOOD_GOAL_HARD
|
||||
|
||||
/obj/item/food/snacks/burger/elec
|
||||
name = "empowered burger"
|
||||
@@ -234,6 +246,7 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 5, "protein" = 1, "plasma" = 2)
|
||||
tastes = list("bun" = 2, "pure electricity" = 5)
|
||||
goal_difficulty = FOOD_GOAL_HARD
|
||||
|
||||
/obj/item/food/snacks/burger/rat
|
||||
name = "mouse burger"
|
||||
@@ -261,6 +274,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 3, "vitamin" = 2, "protein" = 6)
|
||||
tastes = list("bun" = 1, "bacon" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/burger/bearger
|
||||
@@ -280,6 +294,7 @@
|
||||
filling_color = "#F2B6EA"
|
||||
list_reagents = list("nutriment" = 4, "protein" = 6, "condensedcapsaicin" = 5, "capsaicin" = 5)
|
||||
tastes = list("bun" = 1, "extreme heat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/mcguffin
|
||||
name = "mcGuffin"
|
||||
@@ -289,6 +304,7 @@
|
||||
filling_color = "#F2B6EA"
|
||||
list_reagents = list("nutriment" = 2, "protein" = 7, "vitamin" = 1)
|
||||
tastes = list("muffin" = 1, "bacon" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/mcrib
|
||||
name = "mcRib"
|
||||
@@ -298,6 +314,7 @@
|
||||
filling_color = "#F2B6EA"
|
||||
list_reagents = list("nutriment" = 2, "protein" = 7, "vitamin" = 4, "bbqsauce" = 1)
|
||||
tastes = list("bun" = 1, "pork" = 1, "patty" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/jelly
|
||||
name = "jelly burger"
|
||||
@@ -308,10 +325,13 @@
|
||||
tastes = list("bun" = 4, "jelly" = 2)
|
||||
|
||||
/obj/item/food/snacks/burger/jelly/slime
|
||||
name = "slime burger"
|
||||
list_reagents = list("nutriment" = 6, "slimejelly" = 5, "vitamin" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/burger/jelly/cherry
|
||||
list_reagents = list("nutriment" = 6, "cherryjelly" = 5, "vitamin" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -326,6 +346,7 @@
|
||||
filling_color = "#D9BE29"
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
tastes = list("meat" = 2, "cheese" = 1, "bread" = 2, "lettuce" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/toastedsandwich
|
||||
name = "toasted sandwich"
|
||||
@@ -335,6 +356,7 @@
|
||||
filling_color = "#D9BE29"
|
||||
list_reagents = list("nutriment" = 6, "carbon" = 2)
|
||||
tastes = list("toast" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/grilledcheese
|
||||
name = "grilled cheese sandwich"
|
||||
@@ -344,6 +366,7 @@
|
||||
filling_color = "#D9BE29"
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 1) //why make a regualr sandwhich when you can make grilled cheese, with this nutriment value?
|
||||
tastes = list("toast" = 1, "grilled cheese" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/jellysandwich
|
||||
name = "jelly sandwich"
|
||||
@@ -356,9 +379,12 @@
|
||||
|
||||
/obj/item/food/snacks/jellysandwich/slime
|
||||
list_reagents = list("nutriment" = 2, "slimejelly" = 5, "vitamin" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/jellysandwich/cherry
|
||||
name = "slime sandwich"
|
||||
list_reagents = list("nutriment" = 2, "cherryjelly" = 5, "vitamin" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/notasandwich
|
||||
name = "not-a-sandwich"
|
||||
@@ -375,6 +401,7 @@
|
||||
icon_state = "wrap"
|
||||
list_reagents = list("nutriment" = 5)
|
||||
tastes = list("egg" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/blt
|
||||
name = "\improper BLT"
|
||||
@@ -385,6 +412,7 @@
|
||||
bitesize = 4
|
||||
list_reagents = list("nutriment" = 5, "protein" = 2)
|
||||
tastes = list("bacon" = 3, "lettuce" = 2, "tomato" = 2, "bread" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/peanut_butter_jelly
|
||||
name = "peanut butter and jelly sandwich"
|
||||
@@ -396,10 +424,14 @@
|
||||
tastes = list("peanut butter" = 3, "jelly" = 3, "bread" = 2)
|
||||
|
||||
/obj/item/food/snacks/peanut_butter_jelly/slime
|
||||
name = "peanut butter and slime sandwich"
|
||||
desc = "A classic PB&J sandwich, just like your mom used to make?"
|
||||
list_reagents = list("peanutbutter" = 2, "slimejelly" = 5, "nutriment" = 5, "protein" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/peanut_butter_jelly/cherry
|
||||
list_reagents = list("peanutbutter" = 2, "cherryjelly" = 5, "nutriment" = 5, "protein" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/philly_cheesesteak
|
||||
name = "Philly cheesesteak"
|
||||
@@ -410,6 +442,7 @@
|
||||
bitesize = 4
|
||||
list_reagents = list("nutriment" = 10, "protein" = 4)
|
||||
tastes = list("steak" = 3, "melted cheese" = 3, "onions" = 2, "bread" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/peanut_butter_banana
|
||||
name = "peanut butter and banana sandwich"
|
||||
@@ -420,3 +453,4 @@
|
||||
bitesize = 2
|
||||
list_reagents = list("nutriment" = 5, "protein" = 2)
|
||||
tastes = list("peanutbutter" = 3, "banana" = 3, "bread" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
bitesize = 1
|
||||
list_reagents = list("nutriment" = 4)
|
||||
tastes = list("fish" = 1, "bread" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/fishburger
|
||||
name = "Fillet-O-Carp sandwich"
|
||||
@@ -61,6 +62,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
tastes = list("bun" = 4, "fish" = 4)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/cubancarp
|
||||
name = "cuban carp"
|
||||
@@ -72,6 +74,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "capsaicin" = 1)
|
||||
tastes = list("fish" = 4, "batter" = 1, "hot peppers" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/fishandchips
|
||||
name = "fish and chips"
|
||||
@@ -82,6 +85,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6)
|
||||
tastes = list("fish" = 1, "chips" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/sashimi
|
||||
name = "carp sashimi"
|
||||
@@ -91,6 +95,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "capsaicin" = 5)
|
||||
tastes = list("raw carp" = 1, "hot peppers" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/fried_shrimp
|
||||
name = "fried shrimp"
|
||||
@@ -100,6 +105,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("shrimp" = 1, "bread crumbs" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/boiled_shrimp
|
||||
name = "boiled shrimp"
|
||||
@@ -109,6 +115,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("shrimp" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/shrimp_skewer
|
||||
name = "shrimp skewer"
|
||||
@@ -119,6 +126,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 8)
|
||||
tastes = list("shrimp" = 4)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/fish_skewer
|
||||
name = "fish skewer"
|
||||
@@ -129,6 +137,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("protein" = 6, "vitamin" = 4)
|
||||
tastes = list("shrimp" = 1, "batter" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/sliceable/Ebi_maki
|
||||
name = "ebi maki roll"
|
||||
@@ -149,6 +158,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("shrimp" = 1, "rice" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/Ikura_maki
|
||||
name = "ikura maki roll"
|
||||
@@ -169,6 +179,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
tastes = list("salmon roe" = 1, "rice" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/Sake_maki
|
||||
name = "sake maki roll"
|
||||
@@ -189,6 +200,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("raw salmon" = 1, "rice" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/SmokedSalmon_maki
|
||||
name = "smoked salmon maki roll"
|
||||
@@ -209,6 +221,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("smoked salmon" = 1, "rice" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/Tamago_maki
|
||||
name = "tamago maki roll"
|
||||
@@ -229,6 +242,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("egg" = 1, "rice" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/Inari_maki
|
||||
name = "inari maki roll"
|
||||
@@ -249,6 +263,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("fried tofu" = 1, "rice" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/Masago_maki
|
||||
name = "masago maki roll"
|
||||
@@ -269,6 +284,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
tastes = list("goldfish roe" = 1, "rice" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/Tobiko_maki
|
||||
name = "tobiko maki roll"
|
||||
@@ -289,6 +305,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
tastes = list("shark roe" = 1, "rice" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/TobikoEgg_maki
|
||||
name = "tobiko and egg maki roll"
|
||||
@@ -309,6 +326,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2, "protein" = 1)
|
||||
tastes = list("shark roe" = 1, "rice" = 1, "egg" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sliceable/Tai_maki
|
||||
name = "tai maki roll"
|
||||
@@ -329,6 +347,7 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("catfish" = 1, "rice" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_EASY
|
||||
|
||||
/obj/item/food/snacks/sushi_Unagi
|
||||
name = "unagi sushi"
|
||||
@@ -338,3 +357,4 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 2)
|
||||
tastes = list("grilled eel" = 1, "seaweed" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
filling_color = "#EDDD00"
|
||||
list_reagents = list("nutriment" = 4)
|
||||
tastes = list("fries" = 3, "salt" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/cheesyfries
|
||||
name = "cheesy fries"
|
||||
@@ -33,6 +34,7 @@
|
||||
filling_color = "#EDDD00"
|
||||
list_reagents = list("nutriment" = 6)
|
||||
tastes = list("fries" = 3, "cheese" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/tatortot
|
||||
name = "tator tot"
|
||||
@@ -41,6 +43,7 @@
|
||||
list_reagents = list("nutriment" = 4)
|
||||
filling_color = "FFD700"
|
||||
tastes = list("fried potato" = 3, "valids" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/onionrings
|
||||
name = "onion rings"
|
||||
@@ -50,6 +53,7 @@
|
||||
filling_color = "#C0C9A0"
|
||||
gender = PLURAL
|
||||
tastes = list("onion" = 3, "batter" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/carrotfries
|
||||
name = "carrot fries"
|
||||
@@ -59,6 +63,7 @@
|
||||
filling_color = "#FAA005"
|
||||
list_reagents = list("plantmatter" = 3, "oculine" = 3, "vitamin" = 2)
|
||||
tastes = list("carrots" = 3, "salt" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -71,6 +76,7 @@
|
||||
icon_state = "beans"
|
||||
list_reagents = list("nutriment" = 10, "beans" = 10, "vitamin" = 3)
|
||||
tastes = list("beans" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/// mashed taters
|
||||
/obj/item/food/snacks/mashed_potatoes
|
||||
@@ -81,6 +87,7 @@
|
||||
filling_color = "#D6D9C1"
|
||||
list_reagents = list("nutriment" = 5, "gravy" = 5, "mashedpotatoes" = 10, "vitamin" = 2)
|
||||
tastes = list("mashed potato" = 3, "gravy" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/stuffing
|
||||
name = "stuffing"
|
||||
@@ -89,6 +96,7 @@
|
||||
filling_color = "#C9AC83"
|
||||
list_reagents = list("nutriment" = 3)
|
||||
tastes = list("bread crumbs" = 1, "herbs" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/loadedbakedpotato
|
||||
name = "loaded baked potato"
|
||||
@@ -97,6 +105,7 @@
|
||||
filling_color = "#9C7A68"
|
||||
list_reagents = list("nutriment" = 6)
|
||||
tastes = list("potato" = 1, "cheese" = 1, "herbs" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/boiledrice
|
||||
name = "boiled rice"
|
||||
@@ -106,6 +115,7 @@
|
||||
filling_color = "#FFFBDB"
|
||||
list_reagents = list("nutriment" = 5, "vitamin" = 1)
|
||||
tastes = list("rice" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/roastparsnip
|
||||
@@ -116,3 +126,4 @@
|
||||
list_reagents = list("nutriment" = 3, "vitamin" = 4)
|
||||
filling_color = "#FF5500"
|
||||
tastes = list("parsnip" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
filling_color = "#785210"
|
||||
list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4)
|
||||
tastes = list("meatball" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/slimesoup
|
||||
name = "slime soup"
|
||||
@@ -28,6 +29,7 @@
|
||||
filling_color = "#C4DBA0"
|
||||
list_reagents = list("nutriment" = 5, "slimejelly" = 5, "water" = 5, "vitamin" = 4)
|
||||
tastes = list("slime" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/bloodsoup
|
||||
name = "tomato soup"
|
||||
@@ -36,6 +38,7 @@
|
||||
filling_color = "#FF0000"
|
||||
list_reagents = list("nutriment" = 2, "blood" = 10, "water" = 5, "vitamin" = 4)
|
||||
tastes = list("iron" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/clownstears
|
||||
name = "clown's tears"
|
||||
@@ -52,6 +55,7 @@
|
||||
filling_color = "#AFC4B5"
|
||||
list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4)
|
||||
tastes = list("vegetables" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/nettlesoup
|
||||
name = "nettle soup"
|
||||
@@ -60,6 +64,7 @@
|
||||
filling_color = "#AFC4B5"
|
||||
list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4)
|
||||
tastes = list("nettles" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/mysterysoup
|
||||
name = "mystery soup"
|
||||
@@ -68,6 +73,7 @@
|
||||
var/extra_reagent = null
|
||||
list_reagents = list("nutriment" = 6)
|
||||
tastes = list("chaos" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/mysterysoup/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -96,6 +102,7 @@
|
||||
filling_color = "#D92929"
|
||||
list_reagents = list("nutriment" = 5, "tomatojuice" = 10, "vitamin" = 3)
|
||||
tastes = list("tomato" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/misosoup
|
||||
name = "miso soup"
|
||||
@@ -103,6 +110,7 @@
|
||||
icon_state = "misosoup"
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 2)
|
||||
tastes = list("miso" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/mushroomsoup
|
||||
name = "chantrelle soup"
|
||||
@@ -111,6 +119,7 @@
|
||||
filling_color = "#E386BF"
|
||||
list_reagents = list("nutriment" = 8, "vitamin" = 4)
|
||||
tastes = list("mushroom" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/beetsoup
|
||||
name = "beet soup"
|
||||
@@ -119,6 +128,7 @@
|
||||
filling_color = "#FAC9FF"
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 2)
|
||||
tastes = list("beet" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/beetsoup/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -131,6 +141,7 @@
|
||||
filling_color = "#E386BF"
|
||||
list_reagents = list("nutriment" = 7, "protein" = 2)
|
||||
tastes = list("squirming" = 2, "tomato" = 2)
|
||||
goal_difficulty = FOOD_GOAL_HARD
|
||||
|
||||
/obj/item/food/snacks/soup/sweetpotatosoup
|
||||
name = "sweet potato soup"
|
||||
@@ -138,6 +149,7 @@
|
||||
icon_state = "sweetpotatosoup"
|
||||
list_reagents = list("nutriment" = 5)
|
||||
tastes = list("sweet potato" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
/obj/item/food/snacks/soup/redbeetsoup
|
||||
name = "red beet soup"
|
||||
@@ -145,6 +157,8 @@
|
||||
icon_state = "redbeetsoup"
|
||||
list_reagents = list("nutriment" = 5)
|
||||
tastes = list("red beet" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/frenchonionsoup
|
||||
name = "french onion soup"
|
||||
@@ -152,6 +166,8 @@
|
||||
icon_state = "onionsoup"
|
||||
list_reagents = list("nutriment" = 8)
|
||||
tastes = list("caramelized onions" = 3, "cheese" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/zurek
|
||||
name = "zurek"
|
||||
@@ -159,6 +175,8 @@
|
||||
icon_state = "zurek"
|
||||
list_reagents = list("nutriment" = 10, "protein" = 4)
|
||||
tastes = list("creamy vegetables" = 3, "sausage" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/cullenskink
|
||||
name = "cullen skink"
|
||||
@@ -166,6 +184,8 @@
|
||||
icon_state = "cullen_skink"
|
||||
list_reagents = list("nutriment" = 10, "protein" = 4)
|
||||
tastes = list("creamy broth" = 2, "fish" = 2, "vegetables" = 2)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/chicken_noodle_soup
|
||||
name = "chicken noodle soup"
|
||||
@@ -173,6 +193,8 @@
|
||||
icon_state = "chicken_noodle_soup"
|
||||
list_reagents = list("nutriment" = 10, "protein" = 4)
|
||||
tastes = list("broth" = 1, "chicken" = 1, "carrots" = 1, "noodles" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/cornchowder
|
||||
name = "corn chowder"
|
||||
@@ -180,6 +202,8 @@
|
||||
icon_state = "corn_chowder"
|
||||
list_reagents = list("nutriment" = 10, "protein" = 4)
|
||||
tastes = list("creamy broth" = 1, "bacon" = 1, "mixed vegetables" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/meatball_noodles
|
||||
name = "meatball noodle soup"
|
||||
@@ -187,6 +211,8 @@
|
||||
icon_state = "meatball_noodles"
|
||||
list_reagents = list("nutriment" = 10, "protein" = 4)
|
||||
tastes = list("bone broth" = 1, "meat" = 1, "gnocchi" = 1, "peanuts" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/seedsoup
|
||||
name = "Misklmæsch" //miskl = seed, mæsch = soup
|
||||
@@ -195,6 +221,8 @@
|
||||
icon_state = "moth_seed_soup"
|
||||
list_reagents = list("nutriment" = 6)
|
||||
tastes = list("bitterness" = 1, "sourness" = 1, "nature" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
//////////////////////
|
||||
// Stews //
|
||||
@@ -208,6 +236,8 @@
|
||||
bitesize = 7
|
||||
list_reagents = list("nutriment" = 10, "oculine" = 5, "tomatojuice" = 5, "vitamin" = 5)
|
||||
tastes = list("tomato" = 1, "carrot" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/stewedsoymeat
|
||||
name = "stewed soy meat"
|
||||
@@ -217,6 +247,8 @@
|
||||
trash = /obj/item/trash/plate
|
||||
list_reagents = list("nutriment" = 8)
|
||||
tastes = list("soy" = 1, "vegetables" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/beanstew
|
||||
name = "Prickeldröndolhaskl" //prickeld = spicy, röndol = bean, haskl = stew
|
||||
@@ -224,6 +256,8 @@
|
||||
icon_state = "moth_bean_stew"
|
||||
list_reagents = list("nutriment" = 10)
|
||||
tastes = list("beans" = 1, "cabbage" = 1, "spicy sauce" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/oatstew
|
||||
name = "Häfmisklhaskl" //häfmiskl = oat (häf from German hafer meaning oat, miskl meaning seed), haskl = stew
|
||||
@@ -231,6 +265,8 @@
|
||||
icon_state = "moth_oat_stew"
|
||||
list_reagents = list("nutriment" = 10)
|
||||
tastes = list("oats" = 1, "sweet potato" = 1, "carrot" = 1, "pumpkin" = 1, "parsnip" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/hong_kong_borscht
|
||||
name = "hong kong borscht"
|
||||
@@ -238,6 +274,8 @@
|
||||
icon_state = "hong_kong_borscht"
|
||||
list_reagents = list("nutriment" = 10, "protein" = 2)
|
||||
tastes = list("tomato" = 1, "cabbage" = 1, "meat" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/hong_kong_macaroni
|
||||
name = "hong kong macaroni"
|
||||
@@ -245,6 +283,8 @@
|
||||
icon_state = "hong_kong_macaroni"
|
||||
list_reagents = list("nutriment" = 8, "protein" = 2)
|
||||
tastes = list("cream" = 1, "chicken" = 1, "pasta" = 1, "ham" =1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
//////////////////////
|
||||
// Chili //
|
||||
@@ -257,6 +297,8 @@
|
||||
filling_color = "#FF3C00"
|
||||
list_reagents = list("nutriment" = 5, "capsaicin" = 1, "tomatojuice" = 2, "vitamin" = 2)
|
||||
tastes = list("hot peppers" = 1, "tomato" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/coldchili
|
||||
name = "cold chili"
|
||||
@@ -265,6 +307,8 @@
|
||||
filling_color = "#2B00FF"
|
||||
list_reagents = list("nutriment" = 5, "frostoil" = 1, "tomatojuice" = 2, "vitamin" = 2)
|
||||
tastes = list("tomato" = 1, "mint" = 1)
|
||||
goal_difficulty = FOOD_GOAL_NORMAL
|
||||
|
||||
|
||||
/obj/item/food/snacks/soup/clownchili
|
||||
name = "chili con carnival"
|
||||
|
||||
@@ -29,6 +29,10 @@
|
||||
var/temperature_min = 0 // To limit the temperature of a reagent container can attain when exposed to heat/cold
|
||||
var/temperature_max = 10000
|
||||
|
||||
// How difficult is this food for the kitchen to make?
|
||||
// Affects the quantity of food that is requested by CC.
|
||||
var/goal_difficulty = REAGENT_GOAL_SKIP
|
||||
|
||||
/obj/item/food/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
var/text = ..()
|
||||
var/text_string = ""
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
text_string += "[(text_string == "") ? "" : ", "][SM.name]"
|
||||
text_string += "[(text_string == "") ? "" : ", "][initial(SM.name)]"
|
||||
text += "\n- Plant Mutations: [(text_string == "") ? "None" : text_string]"
|
||||
return text
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
if(S.has_reagent("sterilizine", 5))
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
if(SM.quality == SPACEVINE_MUTATION_NEGATIVE)
|
||||
if(initial(SM.quality) == SPACEVINE_MUTATION_NEGATIVE)
|
||||
temp_mut_list += SM
|
||||
if(prob(20) && temp_mut_list.len)
|
||||
mutations.Remove(pick(temp_mut_list))
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
if(S.has_reagent("fuel", 5))
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
if(SM.quality == SPACEVINE_MUTATION_POSITIVE)
|
||||
if(initial(SM.quality) == SPACEVINE_MUTATION_POSITIVE)
|
||||
temp_mut_list += SM
|
||||
if(prob(20) && temp_mut_list.len)
|
||||
mutations.Remove(pick(temp_mut_list))
|
||||
@@ -69,7 +69,7 @@
|
||||
|
||||
if(S.has_reagent("phenol", 5))
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
if(SM.quality == SPACEVINE_MUTATION_MINOR_NEGATIVE)
|
||||
if(initial(SM.quality) == SPACEVINE_MUTATION_MINOR_NEGATIVE)
|
||||
temp_mut_list += SM
|
||||
if(prob(20) && temp_mut_list.len)
|
||||
mutations.Remove(pick(temp_mut_list))
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
#define LABEL_MODE_OFF 0
|
||||
#define LABEL_MODE_NORMAL 1
|
||||
#define LABEL_MODE_GOAL 2
|
||||
|
||||
/obj/item/hand_labeler
|
||||
name = "hand labeler"
|
||||
desc = "A combined label printer, applicator, and remover, all in a single portable device. Designed to be easy to operate and use."
|
||||
@@ -6,12 +10,12 @@
|
||||
item_state = "flight"
|
||||
var/label = null
|
||||
var/labels_left = 30
|
||||
var/mode = 0
|
||||
var/mode = LABEL_MODE_OFF
|
||||
|
||||
/obj/item/hand_labeler/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(!mode) //if it's off, give up.
|
||||
if(mode == LABEL_MODE_OFF) //if it's off, give up.
|
||||
return
|
||||
|
||||
if(!labels_left)
|
||||
@@ -20,13 +24,23 @@
|
||||
if(!label || !length(label))
|
||||
to_chat(user, "<span class='warning'>No text set!</span>")
|
||||
return
|
||||
if(length(A.name) + length(label) > 64)
|
||||
to_chat(user, "<span class='warning'>Label too big!</span>")
|
||||
return
|
||||
if(ismob(A))
|
||||
to_chat(user, "<span class='warning'>You can't label creatures!</span>") // use a collar
|
||||
return
|
||||
|
||||
if(mode == LABEL_MODE_GOAL)
|
||||
if(istype(A, /obj/item))
|
||||
to_chat(user, "<span class='warning'>Put it in a personal crate instead!</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] labels [A] as part of a secondary goal for [label].</span>", \
|
||||
"<span class='notice'>You label [A] as part of a secondary goal for [label].</span>")
|
||||
A.AddComponent(/datum/component/label/goal, label)
|
||||
return
|
||||
|
||||
if(length(A.name) + length(label) > 64)
|
||||
to_chat(user, "<span class='warning'>Label too big!</span>")
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>[user] labels [A] as [label].</span>", \
|
||||
"<span class='notice'>You label [A] as [label].</span>")
|
||||
investigate_log("[key_name(user)] ([ADMIN_FLW(user,"FLW")]) labelled \"[A]\" ([ADMIN_VV(A, "VV")]) with \"[label]\" at [COORD(A.loc)] [ADMIN_JMP(A)].", INVESTIGATE_RENAME) // Investigate goes BEFORE rename so the original name is preserved in the log
|
||||
@@ -35,6 +49,8 @@
|
||||
labels_left--
|
||||
|
||||
/obj/item/hand_labeler/attack_self(mob/user as mob)
|
||||
// off -> normal
|
||||
// normal or goal -> off
|
||||
mode = !mode
|
||||
icon_state = "labeler[mode]"
|
||||
if(mode)
|
||||
@@ -55,8 +71,16 @@
|
||||
user.drop_item()
|
||||
qdel(I)
|
||||
labels_left = initial(labels_left) //Yes, it's capped at its initial value
|
||||
else
|
||||
return ..()
|
||||
else if(istype(I, /obj/item/card/id))
|
||||
var/obj/item/card/id/id = I
|
||||
if(istype(id, /obj/item/card/id/guest) || !id.registered_name)
|
||||
to_chat(user, "<span class='warning'>Invalid ID card.</span>")
|
||||
return
|
||||
label = id.registered_name
|
||||
mode = LABEL_MODE_GOAL
|
||||
to_chat(user, "<span class='notice'>You configure the hand labeler with [I].</span>")
|
||||
icon_state = "labeler1"
|
||||
|
||||
|
||||
/obj/item/hand_labeler_refill
|
||||
name = "hand labeler paper roll"
|
||||
@@ -65,3 +89,7 @@
|
||||
icon_state = "labeler_refill"
|
||||
item_state = "electropack"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
#undef LABEL_MODE_OFF
|
||||
#undef LABEL_MODE_NORMAL
|
||||
#undef LABEL_MODE_GOAL
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
var/dizzy_adj = 6 SECONDS
|
||||
var/alcohol_perc = 1 //percentage of ethanol in a beverage 0.0 - 1.0
|
||||
taste_description = "liquid fire"
|
||||
goal_department = "Bar"
|
||||
|
||||
/datum/reagent/consumable/ethanol/on_mob_life(mob/living/M)
|
||||
M.AdjustDrunk(alcohol_perc STATUS_EFFECT_CONSTANT)
|
||||
@@ -125,6 +126,7 @@
|
||||
drink_name = "Hooch"
|
||||
drink_desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
|
||||
taste_description = "pure resignation"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/hooch/on_mob_life(mob/living/carbon/M)
|
||||
if(M.mind && M.mind.assigned_role == "Assistant")
|
||||
@@ -161,6 +163,7 @@
|
||||
drink_name = "Glass of Mojito"
|
||||
drink_desc = "Fresh from Spesscuba."
|
||||
taste_description = "mojito"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/vodka
|
||||
name = "Vodka"
|
||||
@@ -242,6 +245,7 @@
|
||||
drink_name = "Suicider"
|
||||
drink_desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
|
||||
taste_description = "approaching death"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/ale
|
||||
name = "Ale"
|
||||
@@ -291,6 +295,7 @@
|
||||
drink_name = "Glass of bilk"
|
||||
drink_desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis."
|
||||
taste_description = "bilk"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/atomicbomb
|
||||
name = "Atomic Bomb"
|
||||
@@ -303,6 +308,7 @@
|
||||
drink_name = "Atomic Bomb"
|
||||
drink_desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing."
|
||||
taste_description = "a long, fiery burn"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/threemileisland
|
||||
name = "Three Mile Island Iced Tea"
|
||||
@@ -315,6 +321,7 @@
|
||||
drink_name = "Three Mile Island Ice Tea"
|
||||
drink_desc = "A glass of this is sure to prevent a meltdown."
|
||||
taste_description = "a creeping heat"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/goldschlager
|
||||
name = "Goldschlager"
|
||||
@@ -351,6 +358,7 @@
|
||||
drink_name = "Gin and Tonic"
|
||||
drink_desc = "A mild but still great cocktail. Drink up, like a true Englishman."
|
||||
taste_description = "bitter medicine"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/cuba_libre
|
||||
name = "Cuba Libre"
|
||||
@@ -363,6 +371,7 @@
|
||||
drink_name = "Cuba Libre"
|
||||
drink_desc = "A classic mix of rum and cola."
|
||||
taste_description = "liberation"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/whiskey_cola
|
||||
name = "Whiskey Cola"
|
||||
@@ -375,6 +384,7 @@
|
||||
drink_name = "Whiskey Cola"
|
||||
drink_desc = "An innocent-looking mixture of cola and Whiskey. Delicious."
|
||||
taste_description = "whiskey and coke"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/daiquiri
|
||||
name = "Daiquiri"
|
||||
@@ -387,6 +397,7 @@
|
||||
drink_name = "Daiquiri"
|
||||
drink_desc = "When Botany gives you limes, make daiquiris."
|
||||
taste_description = "sweetened lime juice and rum"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/martini
|
||||
name = "Classic Martini"
|
||||
@@ -399,6 +410,7 @@
|
||||
drink_name = "Classic Martini"
|
||||
drink_desc = "Damn, the bartender even stirred it, not shook it."
|
||||
taste_description = "class"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/vodkamartini
|
||||
name = "Vodka Martini"
|
||||
@@ -411,6 +423,7 @@
|
||||
drink_name = "Vodka martini"
|
||||
drink_desc ="A bastardisation of the classic martini. Still great."
|
||||
taste_description = "class and potatoes"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/white_russian
|
||||
name = "White Russian"
|
||||
@@ -423,6 +436,7 @@
|
||||
drink_name = "White Russian"
|
||||
drink_desc = "A very nice looking drink. But that's just, like, your opinion, man."
|
||||
taste_description = "very creamy alcohol"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/screwdrivercocktail
|
||||
name = "Screwdriver"
|
||||
@@ -435,6 +449,7 @@
|
||||
drink_name = "Screwdriver"
|
||||
drink_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer."
|
||||
taste_description = "a naughty secret"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/booger
|
||||
name = "Booger"
|
||||
@@ -447,6 +462,7 @@
|
||||
drink_name = "Booger"
|
||||
drink_desc = "Eww..."
|
||||
taste_description = "a fruity mess"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/bloody_mary
|
||||
name = "Bloody Mary"
|
||||
@@ -459,6 +475,7 @@
|
||||
drink_name = "Bloody Mary"
|
||||
drink_desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder."
|
||||
taste_description = "tomatoes with booze"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/gargle_blaster
|
||||
name = "Pan-Galactic Gargle Blaster"
|
||||
@@ -471,6 +488,7 @@
|
||||
drink_name = "Pan-Galactic Gargle Blaster"
|
||||
drink_desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy."
|
||||
taste_description = "the number fourty two"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/flaming_homer
|
||||
name = "Flaming Moe"
|
||||
@@ -483,6 +501,7 @@
|
||||
drink_name = "Flaming Moe"
|
||||
drink_desc = "Happiness is just a Flaming Moe away!"
|
||||
taste_description = "caramelised booze and sweet, salty medicine"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/brave_bull
|
||||
name = "Brave Bull"
|
||||
@@ -507,6 +526,7 @@
|
||||
drink_name = "Tequila Sunrise"
|
||||
drink_desc = "Oh great, now you feel nostalgic about sunrises back on Terra..."
|
||||
taste_description = "fruity alcohol"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/toxins_special
|
||||
name = "Toxins Special"
|
||||
@@ -519,6 +539,7 @@
|
||||
drink_name = "Toxins Special"
|
||||
drink_desc = "Whoah, this thing is on FIRE"
|
||||
taste_description = "FIRE"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 330)
|
||||
@@ -536,6 +557,7 @@
|
||||
drink_name = "Beepsky Smash"
|
||||
drink_desc = "Heavy, hot and strong. Just like the Iron fist of the LAW."
|
||||
taste_description = "THE LAW"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/irish_cream
|
||||
name = "Irish Cream"
|
||||
@@ -560,6 +582,7 @@
|
||||
drink_name = "The Manly Dorf"
|
||||
drink_desc = "A manly concotion made from Ale and Beer. Intended for true men only."
|
||||
taste_description = "manliness"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/longislandicedtea
|
||||
name = "Long Island Iced Tea"
|
||||
@@ -572,6 +595,7 @@
|
||||
drink_name = "Long Island Iced Tea"
|
||||
drink_desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only."
|
||||
taste_description = "fruity alcohol"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/moonshine
|
||||
name = "Moonshine"
|
||||
@@ -584,6 +608,7 @@
|
||||
drink_name = "Moonshine"
|
||||
drink_desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
|
||||
taste_description = "prohibition"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/b52
|
||||
name = "B-52"
|
||||
@@ -596,6 +621,7 @@
|
||||
drink_name = "B-52"
|
||||
drink_desc = "Kahlua, Irish Cream, and congac. You will get bombed."
|
||||
taste_description = "destruction"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/irishcoffee
|
||||
name = "Irish Coffee"
|
||||
@@ -608,6 +634,7 @@
|
||||
drink_name = "Irish Coffee"
|
||||
drink_desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning."
|
||||
taste_description = "coffee and booze"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/margarita
|
||||
name = "Margarita"
|
||||
@@ -620,6 +647,7 @@
|
||||
drink_name = "Margarita"
|
||||
drink_desc = "On the rocks with salt on the rim. Arriba~!"
|
||||
taste_description = "daisies"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/black_russian
|
||||
name = "Black Russian"
|
||||
@@ -632,6 +660,7 @@
|
||||
drink_name = "Black Russian"
|
||||
drink_desc = "For the lactose-intolerant. Still as classy as a White Russian."
|
||||
taste_description = "sweet alcohol"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/manhattan
|
||||
name = "Manhattan"
|
||||
@@ -656,6 +685,7 @@
|
||||
drink_name = "Manhattan Project"
|
||||
drink_desc = "A scientist's drink of choice, for thinking how to blow up the station."
|
||||
taste_description = "the apocalypse"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/whiskeysoda
|
||||
name = "Whiskey Soda"
|
||||
@@ -668,6 +698,7 @@
|
||||
drink_name = "Whiskey Soda"
|
||||
drink_desc = "Ultimate refreshment."
|
||||
taste_description = "mediocrity"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/antifreeze
|
||||
name = "Anti-freeze"
|
||||
@@ -680,6 +711,7 @@
|
||||
drink_name = "Anti-freeze"
|
||||
drink_desc = "The ultimate refreshment."
|
||||
taste_description = "poor life choices"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 330)
|
||||
@@ -698,6 +730,7 @@
|
||||
drink_name = "Admin Freeze"
|
||||
drink_desc = "The ultimate punishment."
|
||||
taste_description = "a series of bad decisions"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/adminfreeze/reaction_mob(mob/living/M, method = REAGENT_INGEST, volume)
|
||||
..()
|
||||
@@ -716,6 +749,7 @@
|
||||
drink_name = "Barefoot"
|
||||
drink_desc = "Barefoot and pregnant"
|
||||
taste_description = "pregnancy"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/snowwhite
|
||||
name = "Snow White"
|
||||
@@ -728,6 +762,7 @@
|
||||
drink_name = "Snow White"
|
||||
drink_desc = "A cold refreshment."
|
||||
taste_description = "a poisoned apple"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/demonsblood
|
||||
name = "Demons Blood"
|
||||
@@ -741,6 +776,7 @@
|
||||
drink_name = "Demons Blood"
|
||||
drink_desc = "Just looking at this thing makes the hair at the back of your neck stand up."
|
||||
taste_description = "<span class='warning'>evil</span>"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/vodkatonic
|
||||
name = "Vodka and Tonic"
|
||||
@@ -754,6 +790,7 @@
|
||||
drink_name = "Vodka and Tonic"
|
||||
drink_desc = "For when a gin and tonic isn't russian enough."
|
||||
taste_description = "bitter medicine"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/ginfizz
|
||||
name = "Gin Fizz"
|
||||
@@ -767,6 +804,7 @@
|
||||
drink_name = "Gin Fizz"
|
||||
drink_desc = "Refreshingly lemony, deliciously dry."
|
||||
taste_description = "fizzy alcohol"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/bahama_mama
|
||||
name = "Bahama mama"
|
||||
@@ -779,6 +817,7 @@
|
||||
drink_name = "Bahama Mama"
|
||||
drink_desc = "Tropic cocktail"
|
||||
taste_description = "HONK"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/singulo
|
||||
name = "Singulo"
|
||||
@@ -792,6 +831,7 @@
|
||||
drink_name = "Singulo"
|
||||
drink_desc = "A bluespace beverage."
|
||||
taste_description = "infinity"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/sbiten
|
||||
name = "Sbiten"
|
||||
@@ -804,6 +844,7 @@
|
||||
drink_name = "Sbiten"
|
||||
drink_desc = "A spicy mix of Vodka and Spice. Very hot."
|
||||
taste_description = "comforting warmth"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 360)
|
||||
@@ -821,6 +862,7 @@
|
||||
drink_name = "Devils Kiss"
|
||||
drink_desc = "Creepy time!"
|
||||
taste_description = "naughtiness"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/red_mead
|
||||
name = "Red Mead"
|
||||
@@ -833,6 +875,7 @@
|
||||
drink_name = "Red Mead"
|
||||
drink_desc = "A True Vikings Beverage, though its color is strange."
|
||||
taste_description = "blood"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/mead
|
||||
name = "Mead"
|
||||
@@ -875,6 +918,7 @@
|
||||
drink_name = "Grog"
|
||||
drink_desc = "A fine and cepa drink for Space."
|
||||
taste_description = "strongly diluted rum"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/aloe
|
||||
name = "Aloe"
|
||||
@@ -887,6 +931,7 @@
|
||||
drink_name = "Aloe"
|
||||
drink_desc = "Very, very, very good."
|
||||
taste_description = "healthy skin"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/andalusia
|
||||
name = "Andalusia"
|
||||
@@ -899,6 +944,7 @@
|
||||
drink_name = "Andalusia"
|
||||
drink_desc = "A nice, strange named drink."
|
||||
taste_description = "sweet alcohol"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/alliescocktail
|
||||
name = "Allies Cocktail"
|
||||
@@ -911,6 +957,7 @@
|
||||
drink_name = "Allies cocktail"
|
||||
drink_desc = "A drink made from your allies."
|
||||
taste_description = "victory"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/acid_spit
|
||||
name = "Acid Spit"
|
||||
@@ -923,6 +970,7 @@
|
||||
drink_name = "Acid Spit"
|
||||
drink_desc = "A drink from Nanotrasen. Made from live aliens."
|
||||
taste_description = "PAIN"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/amasec
|
||||
name = "Amasec"
|
||||
@@ -935,6 +983,7 @@
|
||||
drink_name = "Amasec"
|
||||
drink_desc = "Always handy before COMBAT!!!"
|
||||
taste_description = "a stunbaton"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/neurotoxin
|
||||
name = "Neuro-toxin"
|
||||
@@ -949,6 +998,7 @@
|
||||
drink_name = "Neurotoxin"
|
||||
drink_desc = "A drink that is guaranteed to knock you silly."
|
||||
taste_description = "brain damageeeEEeee"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/neurotoxin/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -971,6 +1021,7 @@
|
||||
drink_name = "Hippie's Delight"
|
||||
drink_desc = "A drink enjoyed by people during the 1960's."
|
||||
taste_description = "colors"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -1009,6 +1060,7 @@
|
||||
drink_name = "Changeling Sting"
|
||||
drink_desc = "A stingy drink."
|
||||
taste_description = "a tiny prick"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/dublindrop
|
||||
name = "Dublin Drop"
|
||||
@@ -1022,6 +1074,7 @@
|
||||
drink_name = "Dublin Drop"
|
||||
drink_desc = "A Dublin drop. Pub legends say one of the ingredients can bring back the dead."
|
||||
taste_description = "a belt in the gob"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/syndicatebomb
|
||||
name = "Syndicate Bomb"
|
||||
@@ -1034,6 +1087,7 @@
|
||||
drink_name = "Syndicate Bomb"
|
||||
drink_desc = "A syndicate bomb."
|
||||
taste_description = "a job offer"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/erikasurprise
|
||||
name = "Erika Surprise"
|
||||
@@ -1046,6 +1100,7 @@
|
||||
drink_name = "Erika Surprise"
|
||||
drink_desc = "The surprise is, it's green!"
|
||||
taste_description = "disappointment"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/driestmartini
|
||||
name = "Driest Martini"
|
||||
@@ -1059,6 +1114,7 @@
|
||||
drink_name = "Driest Martini"
|
||||
drink_desc = "Only for the experienced. You think you see sand floating in the glass."
|
||||
taste_description = "dust and ashes"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/driestmartini/on_mob_life(mob/living/M)
|
||||
if(current_cycle >= 55 && current_cycle < 115)
|
||||
@@ -1093,6 +1149,7 @@
|
||||
drink_name = "Gin and Sonic"
|
||||
drink_desc = "An extremely high amperage drink. Absolutely not for the true Englishman."
|
||||
taste_description = "SPEED"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/ginsonic/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -1121,6 +1178,7 @@
|
||||
drink_name = "Glass of applejack"
|
||||
drink_desc = "When cider isn't strong enough, you gotta jack it."
|
||||
taste_description = "strong cider"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/jackrose
|
||||
name = "Jack Rose"
|
||||
@@ -1132,6 +1190,7 @@
|
||||
drink_name = "Jack Rose"
|
||||
drink_desc = "Drinking this makes you feel like you belong in a luxury hotel bar during the 1920s."
|
||||
taste_description = "style"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/drunkenblumpkin
|
||||
name = "Drunken Blumpkin"
|
||||
@@ -1143,6 +1202,7 @@
|
||||
drink_name = "Drunken Blumpkin"
|
||||
drink_desc = "A drink for the drunks"
|
||||
taste_description = "weirdness"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/eggnog
|
||||
name = "Eggnog"
|
||||
@@ -1155,6 +1215,7 @@
|
||||
drink_name = "Eggnog"
|
||||
drink_desc = "For enjoying the most wonderful time of the year."
|
||||
taste_description = "christmas spirit"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/// inaccessible to players, but here for admin shennanigans
|
||||
/datum/reagent/consumable/ethanol/dragons_breath
|
||||
@@ -1256,6 +1317,7 @@
|
||||
drink_name = "Glass of Trinary"
|
||||
drink_desc = "Colorful drink made for synthetic crewmembers. It doesn't seem like it would taste well."
|
||||
taste_description = "modem static"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/synthanol/servo
|
||||
name = "Servo"
|
||||
@@ -1268,6 +1330,7 @@
|
||||
drink_name = "Glass of Servo"
|
||||
drink_desc = "Chocolate - based drink made for IPCs. Not sure if anyone's actually tried out the recipe."
|
||||
taste_description = "motor oil and cocoa"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/synthanol/uplink
|
||||
name = "Uplink"
|
||||
@@ -1280,6 +1343,7 @@
|
||||
drink_name = "Glass of Uplink"
|
||||
drink_desc = "An exquisite mix of the finest liquoirs and synthanol. Meant only for synthetics."
|
||||
taste_description = "a GUI in visual basic"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/synthanol/synthnsoda
|
||||
name = "Synth 'n Soda"
|
||||
@@ -1292,6 +1356,7 @@
|
||||
drink_name = "Glass of Synth 'n Soda"
|
||||
drink_desc = "Classic drink altered to fit the tastes of a robot. Bad idea to drink if you're made of carbon."
|
||||
taste_description = "fizzy motor oil"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/synthanol/synthignon
|
||||
name = "Synthignon"
|
||||
@@ -1464,6 +1529,7 @@
|
||||
drink_desc = "A sawed-off cola bottle filled with Fernet Cola. You can hear cuarteto music coming from the inside."
|
||||
taste_description = "low class heaven"
|
||||
remove_nutrition = 1
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/gimlet
|
||||
name = "Gimlet"
|
||||
@@ -1475,6 +1541,7 @@
|
||||
drink_name = "Gimlet"
|
||||
drink_desc = "There are debates on whether this drink should be half gin and half lime, or three parts gin and one part lime. All you know is, it's alcohol."
|
||||
taste_description = "sharpness"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/sidecar
|
||||
name = "Sidecar"
|
||||
@@ -1486,6 +1553,7 @@
|
||||
drink_name = "Sidecar"
|
||||
drink_desc = "You can smell the citrus from here!"
|
||||
taste_description = "smooth cognac and tart citrus"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/whiskey_sour
|
||||
name = "Whiskey Sour"
|
||||
@@ -1497,6 +1565,7 @@
|
||||
drink_name = "Whiskey Sour"
|
||||
drink_desc = "Lemon and whiskey, with a cute foamy head!"
|
||||
taste_description = "warm whiskey and sweetness"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/mint_julep
|
||||
name = "Mint Julep"
|
||||
@@ -1508,6 +1577,7 @@
|
||||
drink_name = "Mint Julep"
|
||||
drink_desc = "A dainty glass of whiskey and mint on the rocks. Perfect for summer!"
|
||||
taste_description = "sweet and cooling mint"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/pina_colada
|
||||
name = "Pina Colada"
|
||||
@@ -1519,6 +1589,7 @@
|
||||
drink_name = "Pina Colada"
|
||||
drink_desc = "After taking a sip, you feel contractually obligated to start singing a certain song of the same name."
|
||||
taste_description = "tart and tropical pineapple"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/bilkshake
|
||||
name = "Bilkshake"
|
||||
@@ -1531,6 +1602,7 @@
|
||||
drink_name = "Bilkshake"
|
||||
drink_desc = "Your mind bubbles and oozes as it tries to comprehend what it's seeing. What the HELL is this?"
|
||||
taste_description = "bilk, cream, and cold tears"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/sontse
|
||||
name = "Sontse"
|
||||
@@ -1543,6 +1615,7 @@
|
||||
drink_desc = "The Sun, The Sun, The Sun, The Sun, The Sun, THE SUN!"
|
||||
taste_description = "warmth and brightness"
|
||||
var/light_activated = FALSE
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/sontse/on_mob_life(mob/living/M)
|
||||
if(current_cycle != 5 || !ismoth(M))
|
||||
@@ -1571,6 +1644,7 @@
|
||||
drink_desc = "Blizzard in a glass. Tajaran signature drink!"
|
||||
taste_description = "ice"
|
||||
var/min_achievable_temp = 250
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/ahdomai_eclipse/on_mob_life(mob/living/M)
|
||||
. = ..()
|
||||
@@ -1587,6 +1661,7 @@
|
||||
drink_name = "Feast by the Beach"
|
||||
drink_desc = "A classic Unathi drink. You can spot sand sediment at the bottom of the glass. The drink is hot as hell and more."
|
||||
taste_description = "sand"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/beach_feast/on_mob_life(mob/living/M)
|
||||
if(!isunathi(M))
|
||||
@@ -1605,6 +1680,7 @@
|
||||
drink_name = "Jungle Vox"
|
||||
drink_desc = "Classy drink in a glass vox head with a bit of liquid nitrogen added on."
|
||||
taste_description = "bubbles"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/jungle_vox/on_mob_life(mob/living/M)
|
||||
if(current_cycle <= 5 || !isvox(M))
|
||||
@@ -1624,6 +1700,7 @@
|
||||
drink_name = "Slime Mold"
|
||||
drink_desc = "You can swear that this jelly looks alive."
|
||||
taste_description = "jelly"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/slime_mold/on_mob_life(mob/living/M)
|
||||
if(!isslimeperson(M))
|
||||
@@ -1644,6 +1721,7 @@
|
||||
drink_name = "Die Seife"
|
||||
drink_desc = "There is a piece of soap at the bottom of the glass and it is slowly melting."
|
||||
taste_description = "soap"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/die_seife/on_mob_life(mob/living/M)
|
||||
if(current_cycle % 10 != 0 || !isdrask(M))
|
||||
@@ -1664,6 +1742,7 @@
|
||||
drink_name = "Acid Dreams"
|
||||
drink_desc = "This one looks just weird and reeks of acid."
|
||||
taste_description = "acid"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/acid_dreams/on_mob_life(mob/living/M)
|
||||
if(current_cycle % 10 != 0 || !isgrey(M))
|
||||
@@ -1689,6 +1768,7 @@
|
||||
drink_name = "Islay Whiskey"
|
||||
drink_desc = "Named in honor of one of the most gritty and earth smelling types of Whiskey of Earth, this drink is a treat for any Diona."
|
||||
taste_description = "soil"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/islay_whiskey/on_mob_life(mob/living/M)
|
||||
if(current_cycle <=5 || !isdiona(M))
|
||||
@@ -1715,6 +1795,7 @@
|
||||
drink_desc = "In the triangle of fire, this is apex of fuel."
|
||||
taste_description = "fire"
|
||||
var/on_fire = FALSE
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/ethanol/ultramatter/on_mob_life(mob/living/M)
|
||||
// species agnostic as it is DRINKS on_fire, so only plasmaman can get it
|
||||
@@ -1747,6 +1828,7 @@
|
||||
drink_name = "Howler"
|
||||
drink_desc = "Old classic human drink that was adopted by Vulpkanin."
|
||||
taste_description = "citrus"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/consumable/ethanol/howler/on_mob_life(mob/living/M)
|
||||
if(!isvulpkanin(M))
|
||||
@@ -1769,6 +1851,7 @@
|
||||
drink_desc = "Fake Diona is floating carelessly in the middle of this drink."
|
||||
taste_description = "the crunch"
|
||||
var/mutated = FALSE
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ethanol/diona_smash/on_mob_life(mob/living/M)
|
||||
if(mutated || !iskidan(M))
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#0000D8"
|
||||
taste_description = "a magical journey"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/lsd/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -46,6 +48,8 @@
|
||||
addiction_threshold = 10
|
||||
heart_rate_decrease = 1
|
||||
taste_description = "a synthetic high"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/space_drugs/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -171,6 +175,8 @@
|
||||
addiction_threshold = 5
|
||||
addiction_decay_rate = 0.2 // half the metabolism rate
|
||||
taste_description = "bitterness"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/crank/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -249,6 +255,8 @@
|
||||
overdose_threshold = 20
|
||||
addiction_chance = 10
|
||||
addiction_threshold = 5
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/pump_up/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -290,6 +298,8 @@
|
||||
addiction_threshold = 10
|
||||
taste_description = "very poor life choices"
|
||||
allowed_overdose_process = TRUE
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
|
||||
/datum/reagent/krokodil/on_mob_life(mob/living/M)
|
||||
@@ -370,6 +380,8 @@
|
||||
allowed_overdose_process = TRUE //Requested by balance.
|
||||
/// modifier to the stun time of the mob taking the drug
|
||||
var/tenacity = 1.5
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/methamphetamine/on_mob_add(mob/living/L)
|
||||
ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id)
|
||||
@@ -440,6 +452,8 @@
|
||||
addiction_decay_rate = 0.2
|
||||
taste_description = "WAAAAGH"
|
||||
var/bonus_damage = 2
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/bath_salts/on_mob_add(mob/living/L)
|
||||
if(ishuman(L))
|
||||
@@ -541,6 +555,8 @@
|
||||
addiction_chance = 5
|
||||
addiction_threshold = 5
|
||||
taste_description = "the inside of a toilet... or worse"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/jenkem/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -563,6 +579,8 @@
|
||||
addiction_decay_rate = 0.2
|
||||
/// how much do we edit the stun and stamina mods? lower is more resistance
|
||||
var/tenacity = 0.5
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/aranesp/on_mob_add(mob/living/L)
|
||||
if(ishuman(L))
|
||||
@@ -610,6 +628,8 @@
|
||||
addiction_chance_additional = 20
|
||||
addiction_threshold = 20
|
||||
minor_addiction = TRUE
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/happiness/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -718,6 +738,8 @@
|
||||
addiction_chance_additional = 20
|
||||
addiction_threshold = 10
|
||||
taste_description = "flips"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/fliptonium/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -784,6 +806,8 @@
|
||||
color = "#AC88CA" //RGB: 172, 136, 202
|
||||
metabolization_rate = 0.6 * REAGENTS_METABOLISM
|
||||
taste_description = "spinning"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/rotatium/on_mob_life(mob/living/carbon/M)
|
||||
if(M.hud_used)
|
||||
@@ -834,6 +858,8 @@
|
||||
var/constant_dose_time = 0
|
||||
/// Keeps track of how many chemicals we are delaying the changeling by.
|
||||
var/changeling_chemical_tracker = 0
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
|
||||
/datum/reagent/mephedrone/on_mob_add(mob/living/carbon/L)
|
||||
@@ -1121,6 +1147,8 @@
|
||||
addiction_decay_rate = 0.1 //very low to force them to take time off of meth
|
||||
taste_description = "wiper fluid"
|
||||
var/tenacity = 1.5 // higher is worse
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/lube/ultra/on_mob_add(mob/living/L)
|
||||
ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id)
|
||||
@@ -1184,6 +1212,8 @@
|
||||
addiction_threshold = 5
|
||||
addiction_decay_rate = 0.2
|
||||
taste_description = "silicon"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
|
||||
/datum/reagent/surge/on_mob_life(mob/living/M)
|
||||
|
||||
@@ -133,6 +133,8 @@
|
||||
nutriment_factor = 2 * REAGENTS_METABOLISM
|
||||
color = "#792300" // rgb: 121, 35, 0
|
||||
taste_description = "soy"
|
||||
goal_department = "Kitchen"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/ketchup
|
||||
name = "Ketchup"
|
||||
@@ -150,6 +152,8 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#DFDFDF" // rgb: 223, 223, 223
|
||||
taste_description = "mayonnaise"
|
||||
goal_department = "Kitchen"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/peanutbutter
|
||||
name = "Peanut Butter"
|
||||
@@ -169,6 +173,8 @@
|
||||
color = "#78280A" // rbg: 120, 40, 10
|
||||
taste_mult = 2.5
|
||||
taste_description = "smokey sweetness"
|
||||
goal_department = "Kitchen"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/capsaicin
|
||||
name = "Capsaicin Oil"
|
||||
@@ -372,6 +378,8 @@
|
||||
nutriment_factor = 10 * REAGENTS_METABOLISM
|
||||
color = "#DBCF5C" //rgb: 219, 207, 92
|
||||
taste_description = "olive oil"
|
||||
goal_department = "Kitchen"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/cornoil/reaction_turf(turf/simulated/T, volume)
|
||||
if(!istype(T))
|
||||
@@ -393,6 +401,8 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#282314" // rgb: 54, 94, 48
|
||||
taste_description = "sweetness"
|
||||
goal_department = "Kitchen"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/consumable/dry_ramen
|
||||
name = "Dry Ramen"
|
||||
@@ -778,6 +788,8 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#B4641B"
|
||||
taste_description = "gravy"
|
||||
goal_department = "Kitchen"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/consumable/wasabi
|
||||
name = "Wasabi"
|
||||
@@ -1014,3 +1026,5 @@
|
||||
description = "Useful for pickling, or putting on chips."
|
||||
taste_description = "vinegar"
|
||||
color = "#ffffff"
|
||||
goal_department = "Kitchen"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
id = "medicine"
|
||||
taste_description = "bitterness"
|
||||
harmless = TRUE
|
||||
goal_department = "Medbay"
|
||||
|
||||
/datum/reagent/medicine/on_mob_life(mob/living/M)
|
||||
current_cycle++
|
||||
@@ -22,6 +23,7 @@
|
||||
metabolization_rate = 0.3 // Lasts 1.5 minutes for 15 units
|
||||
shock_reduction = 200
|
||||
taste_description = "numbness"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/hydrocodone/on_mob_life(mob/living/M) //Needed so the hud updates when injested / removed from system
|
||||
var/update_flags = STATUS_UPDATE_HEALTH
|
||||
@@ -34,6 +36,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
taste_description = "antiseptic"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
//makes you squeaky clean
|
||||
/datum/reagent/medicine/sterilizine/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
|
||||
@@ -97,6 +100,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
taste_description = "nurturing"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/mitocholide/on_mob_life(mob/living/M)
|
||||
if(ishuman(M))
|
||||
@@ -124,6 +128,7 @@
|
||||
color = "#0000C8" // rgb: 200, 165, 220
|
||||
heart_rate_decrease = 1
|
||||
taste_description = "a safe refuge"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/cryoxadone/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume, show_message = TRUE)
|
||||
if(iscarbon(M))
|
||||
@@ -161,6 +166,7 @@
|
||||
overdose_threshold = 30
|
||||
harmless = FALSE
|
||||
taste_description = "reformation"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/rezadone/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -190,6 +196,7 @@
|
||||
color = "#0AB478"
|
||||
metabolization_rate = 0.2
|
||||
taste_description = "antibiotics"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/spaceacillin/on_mob_life(mob/living/M)
|
||||
var/list/organs_list = list()
|
||||
@@ -223,6 +230,7 @@
|
||||
penetrates_skin = TRUE
|
||||
metabolization_rate = 0.15
|
||||
taste_description = "salt"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -286,6 +294,7 @@
|
||||
color = "#FFEBEB"
|
||||
penetrates_skin = TRUE
|
||||
taste_description = "blood"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/heal_on_apply/synthflesh/reaction_mob(mob/living/M, method = REAGENT_TOUCH, volume, show_message = 1)
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -320,6 +329,7 @@
|
||||
metabolization_rate = 3
|
||||
harmless = FALSE
|
||||
taste_description = "wound cream"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/heal_on_apply/styptic_powder/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -353,6 +363,7 @@
|
||||
metabolization_rate = 3
|
||||
harmless = FALSE //toxic if ingested, and I am NOT going to account for the difference
|
||||
taste_description = "burn cream"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/heal_on_apply/silver_sulfadiazine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -383,6 +394,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#000000"
|
||||
taste_description = "dust"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/charcoal/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -464,6 +476,7 @@
|
||||
metabolization_rate = 0.8
|
||||
harmless = FALSE
|
||||
taste_description = "a painful cleansing"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/calomel/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -483,6 +496,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#B4DCBE"
|
||||
taste_description = "cleansing"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/M)
|
||||
M.radiation = max(0, M.radiation - 25)
|
||||
@@ -496,6 +510,7 @@
|
||||
color = "#C8A5DC"
|
||||
harmless = FALSE
|
||||
taste_description = "a purge"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/medicine/pen_acid/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -521,6 +536,7 @@
|
||||
overdose_threshold = 25
|
||||
harmless = FALSE
|
||||
taste_description = "relief"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -555,6 +571,7 @@
|
||||
color = "#00FFFF"
|
||||
metabolization_rate = 0.2
|
||||
taste_description = "safety"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/salbutamol/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -576,6 +593,7 @@
|
||||
addiction_threshold = 10
|
||||
harmless = FALSE
|
||||
taste_description = "oxygenation"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/perfluorodecalin/on_mob_life(mob/living/carbon/human/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -601,6 +619,7 @@
|
||||
overdose_threshold = 35
|
||||
harmless = FALSE
|
||||
taste_description = "stimulation"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
//super weak antistun chem, barely any downside
|
||||
/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M)
|
||||
@@ -656,6 +675,7 @@
|
||||
overdose_threshold = 35
|
||||
harmless = FALSE
|
||||
taste_description = "antihistamine"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/medicine/diphenhydramine/on_mob_life(mob/living/M)
|
||||
M.AdjustJitter(-40 SECONDS)
|
||||
@@ -743,6 +763,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC"
|
||||
taste_description = "clarity"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/medicine/oculine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -775,6 +796,7 @@
|
||||
overdose_threshold = 25
|
||||
harmless = FALSE
|
||||
taste_description = "a moment of respite"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/medicine/atropine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -804,6 +826,7 @@
|
||||
overdose_threshold = 20
|
||||
harmless = FALSE
|
||||
taste_description = "borrowed time"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/medicine/epinephrine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -856,6 +879,7 @@
|
||||
taste_description = "life"
|
||||
harmless = FALSE
|
||||
var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/medicine/lazarus_reagent/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -926,6 +950,7 @@
|
||||
taste_description = "coppery fuel"
|
||||
harmless = FALSE
|
||||
overdose_threshold = 15
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/medicine/sanguine_reagent/on_mob_life(mob/living/M)
|
||||
if(!ishuman(M))
|
||||
@@ -981,6 +1006,7 @@
|
||||
taste_description = "chunky marrow"
|
||||
harmless = FALSE
|
||||
overdose_threshold = 30 //so a single shotgun dart can't cause the tumor effect
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/medicine/osseous_reagent/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -1004,6 +1030,7 @@
|
||||
description = "Mannitol is a sugar alcohol that can help alleviate cranial swelling."
|
||||
color = "#D1D1F1"
|
||||
taste_description = "sweetness"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/mannitol/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -1016,6 +1043,7 @@
|
||||
description = "Mutadone is an experimental bromide that can cure genetic abnomalities."
|
||||
color = "#5096C8"
|
||||
taste_description = "cleanliness"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/mutadone/on_mob_life(mob/living/carbon/human/M)
|
||||
if(M.mind && M.mind.assigned_role == "Cluwne") // HUNKE
|
||||
@@ -1045,6 +1073,7 @@
|
||||
description = "A medicine which quickly eliminates alcohol in the body."
|
||||
color = "#009CA8"
|
||||
taste_description = "sobriety"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/antihol/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -1160,6 +1189,7 @@
|
||||
color = "#eee6da"
|
||||
overdose_threshold = 20
|
||||
taste_description = "bitterness"
|
||||
goal_difficulty = REAGENT_GOAL_HARD
|
||||
|
||||
/datum/reagent/heparin/on_mob_life(mob/living/M)
|
||||
M.reagents.remove_reagent("cholesterol", 2)
|
||||
@@ -1200,6 +1230,7 @@
|
||||
addiction_threshold = 10
|
||||
overdose_threshold = 50
|
||||
taste_description = "warmth and stability"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/teporone/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature > 310)
|
||||
@@ -1217,6 +1248,7 @@
|
||||
taste_description = "stability"
|
||||
harmless = FALSE
|
||||
var/list/drug_list = list("crank", "methamphetamine", "space_drugs", "synaptizine", "psilocybin", "ephedrine", "epinephrine", "stimulants", "stimulative_agent", "bath_salts", "lsd", "thc", "mephedrone")
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/haloperidol/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -1246,6 +1278,7 @@
|
||||
metabolization_rate = 0.1
|
||||
harmless = FALSE
|
||||
taste_description = "sleepiness"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/ether/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -1326,6 +1359,7 @@
|
||||
color = "#CC7A00"
|
||||
process_flags = SYNTHETIC
|
||||
taste_description = "overclocking"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/medicine/degreaser/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -1354,6 +1388,7 @@
|
||||
color = "#D7B395"
|
||||
process_flags = SYNTHETIC
|
||||
taste_description = "heavy metals"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/medicine/liquid_solder/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
|
||||
@@ -182,6 +182,8 @@
|
||||
metabolization_rate = 0.3
|
||||
taste_mult = 0.9
|
||||
taste_description = "slime"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/mutagen/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
|
||||
if(!M || !M.dna || HAS_TRAIT(M, TRAIT_BADDNA) || HAS_TRAIT(M, TRAIT_GENELESS))
|
||||
@@ -279,6 +281,8 @@
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
taste_description = "<span class='userdanger'>ACID</span>"
|
||||
var/acidpwr = 10 //the amount of protection removed from the armour
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/acid/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -336,6 +340,8 @@
|
||||
description = "Fluorosulfuric acid is a an extremely corrosive super-acid."
|
||||
color = "#5050FF"
|
||||
acidpwr = 42
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/acid/facid/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -389,6 +395,8 @@
|
||||
color = "#0080ff"
|
||||
reagent_state = LIQUID
|
||||
taste_description = "vinegar"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/acetic_acid/reaction_mob(mob/living/carbon/human/H, method = REAGENT_TOUCH, volume)
|
||||
if(method != REAGENT_TOUCH)
|
||||
@@ -588,6 +596,8 @@
|
||||
color = "#B44B00"
|
||||
penetrates_skin = TRUE
|
||||
taste_description = "bitterness"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/formaldehyde/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -604,6 +614,8 @@
|
||||
color = "#B44B00"
|
||||
penetrates_skin = TRUE
|
||||
taste_description = "apples"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/acetaldehyde/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -645,6 +657,8 @@
|
||||
color = "#60A584"
|
||||
metabolization_rate = 1
|
||||
taste_mult = 0
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
/datum/reagent/neurotoxin2/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -685,6 +699,8 @@
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = TRUE
|
||||
taste_description = "almonds"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/cyanide/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -710,6 +726,8 @@
|
||||
metabolization_rate = 0.3
|
||||
penetrates_skin = TRUE
|
||||
taste_description = "prickliness"
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_NORMAL
|
||||
|
||||
/datum/reagent/itching_powder/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_STAT
|
||||
@@ -1083,6 +1101,8 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#773E73" //RGB: 47 24 45
|
||||
lethality = 2 //Atrazine, however, is definitely toxic
|
||||
goal_department = "Science"
|
||||
goal_difficulty = REAGENT_GOAL_EASY
|
||||
|
||||
|
||||
/// To-Do; make this more realistic.
|
||||
|
||||
@@ -38,6 +38,13 @@
|
||||
/// how quickly the addiction threshold var decays
|
||||
var/addiction_decay_rate = 0.01
|
||||
|
||||
// Which department's (if any) reagent goals this is eligible for.
|
||||
// Must match the values used by request consoles.
|
||||
var/goal_department = "Unknown"
|
||||
// How difficult is this chemical for the department to make?
|
||||
// Affects the quantity of the reagent that is requested by CC.
|
||||
var/goal_difficulty = REAGENT_GOAL_SKIP
|
||||
|
||||
/datum/reagent/Destroy()
|
||||
. = ..()
|
||||
holder = null
|
||||
|
||||
@@ -82,23 +82,20 @@ GLOBAL_LIST_EMPTY(message_servers)
|
||||
/obj/machinery/message_server/proc/send_pda_message(recipient = "", sender = "", message = "")
|
||||
pda_msgs += new/datum/data_pda_msg(recipient,sender,message)
|
||||
|
||||
/obj/machinery/message_server/proc/send_rc_message(recipient = "", sender = "", message = "", stamp = "", id_auth = "", priority = 1)
|
||||
/obj/machinery/message_server/proc/send_rc_message(recipient = "", sender = "", message = list(), stamp = "Not stamped", id_auth = "Not verified", priority = 1)
|
||||
if(!islist(message))
|
||||
message = list(message)
|
||||
rc_msgs += new/datum/data_rc_msg(recipient,sender,message,stamp,id_auth)
|
||||
var/authmsg = "[message]"
|
||||
if(id_auth)
|
||||
authmsg += " - [id_auth]"
|
||||
if(stamp)
|
||||
authmsg += " - [stamp]"
|
||||
for(var/C in GLOB.allRequestConsoles)
|
||||
var/obj/machinery/requests_console/RC = C
|
||||
if(ckey(RC.department) == ckey(recipient))
|
||||
var/title
|
||||
switch(priority)
|
||||
if(2)
|
||||
title = "PRIORITY Alert in [sender]"
|
||||
title = "PRIORITY Alert from [sender]"
|
||||
else
|
||||
title = "Message from [sender]"
|
||||
RC.createMessage(sender, title, authmsg, priority)
|
||||
RC.createMessage(sender, title, message, priority, verified = id_auth, stamped = stamp)
|
||||
|
||||
/obj/machinery/message_server/attack_hand(user as mob)
|
||||
to_chat(user, "You toggle PDA message passing from [active ? "On" : "Off"] to [active ? "Off" : "On"]")
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
|
||||
//this is a hook for custom behaviour. Maybe at some point we could add checks to see if engines are intact
|
||||
/obj/docking_port/mobile/proc/canMove()
|
||||
return 0 //0 means we can move
|
||||
return TRUE // TRUE means we can move. Why would it ever be otherwise?
|
||||
|
||||
//this is to check if this shuttle can physically dock at dock S
|
||||
/obj/docking_port/mobile/proc/canDock(obj/docking_port/stationary/S)
|
||||
@@ -450,7 +450,7 @@
|
||||
if(!check_dock(S1))
|
||||
return -1
|
||||
|
||||
if(canMove())
|
||||
if(!canMove())
|
||||
return -1
|
||||
|
||||
var/obj/docking_port/stationary/S0 = get_docked()
|
||||
|
||||
+721
-177
@@ -1,5 +1,12 @@
|
||||
#define MAX_CRATE_DELIVERY 40
|
||||
|
||||
#define CARGO_OK 0
|
||||
#define CARGO_PREVENT_SHUTTLE 1
|
||||
#define CARGO_SKIP_ATOM 2
|
||||
#define CARGO_REQUIRE_PRIORITY 3
|
||||
#define CARGO_HAS_PRIORITY 4
|
||||
|
||||
|
||||
/obj/docking_port/mobile/supply
|
||||
name = "supply shuttle"
|
||||
id = "supply"
|
||||
@@ -10,45 +17,57 @@
|
||||
dwidth = 5
|
||||
height = 7
|
||||
|
||||
// The list of things that can't be sent to CC.
|
||||
var/list/blacklist = list(
|
||||
"living creatures" = list(
|
||||
/mob/living,
|
||||
/obj/structure/blob,
|
||||
/obj/structure/spider/spiderling,
|
||||
/obj/machinery/clonepod,
|
||||
/obj/item/paicard),
|
||||
"classified nuclear weaponry" = list(
|
||||
/obj/item/disk/nuclear,
|
||||
/obj/machinery/nuclearbomb),
|
||||
"homing beacons" = list(
|
||||
/obj/item/radio/beacon,
|
||||
/obj/machinery/quantumpad,
|
||||
/obj/machinery/teleport/station,
|
||||
/obj/machinery/teleport/hub,
|
||||
/obj/machinery/telepad,
|
||||
/obj/machinery/telepad_cargo,
|
||||
/obj/structure/extraction_point),
|
||||
"high-energy objects" = list(
|
||||
/obj/singularity,
|
||||
/obj/machinery/the_singularitygen,
|
||||
/obj/effect/hierophant,
|
||||
/obj/item/warp_cube),
|
||||
"undelivered mail" = list(/obj/item/envelope))
|
||||
|
||||
// The current manifest of what's on the shuttle.
|
||||
var/datum/economy/cargo_shuttle_manifest/manifest = new
|
||||
|
||||
// The auto-registered simple_seller instances.
|
||||
var/list/simple_sellers = list()
|
||||
|
||||
// The item preventing this shuttle from going to CC.
|
||||
var/blocking_item = "ERR_UNKNOWN"
|
||||
|
||||
/obj/docking_port/mobile/supply/Initialize()
|
||||
..()
|
||||
for(var/T in subtypesof(/datum/economy/simple_seller))
|
||||
var/datum/economy/simple_seller/seller = new T
|
||||
simple_sellers += seller
|
||||
seller.register(src)
|
||||
|
||||
/obj/docking_port/mobile/supply/register()
|
||||
if(!..())
|
||||
return FALSE
|
||||
SSshuttle.supply = src
|
||||
return TRUE
|
||||
|
||||
/obj/docking_port/mobile/supply/proc/forbidden_atoms_check(atom/A)
|
||||
var/list/blacklist = list(
|
||||
/mob/living,
|
||||
/obj/structure/blob,
|
||||
/obj/structure/spider/spiderling,
|
||||
/obj/item/disk/nuclear,
|
||||
/obj/machinery/nuclearbomb,
|
||||
/obj/item/radio/beacon,
|
||||
/obj/machinery/the_singularitygen,
|
||||
/obj/singularity,
|
||||
/obj/machinery/teleport/station,
|
||||
/obj/machinery/teleport/hub,
|
||||
/obj/machinery/telepad,
|
||||
/obj/machinery/telepad_cargo,
|
||||
/obj/machinery/clonepod,
|
||||
/obj/effect/hierophant,
|
||||
/obj/item/warp_cube,
|
||||
/obj/machinery/quantumpad,
|
||||
/obj/structure/extraction_point,
|
||||
/obj/item/envelope,
|
||||
/obj/item/paicard)
|
||||
if(A)
|
||||
if(is_type_in_list(A, blacklist))
|
||||
return TRUE
|
||||
for(var/thing in A)
|
||||
if(.(thing))
|
||||
return TRUE
|
||||
|
||||
return FALSE
|
||||
|
||||
/obj/docking_port/mobile/supply/canMove()
|
||||
if(is_station_level(z))
|
||||
return forbidden_atoms_check(areaInstance)
|
||||
return scan_cargo()
|
||||
return ..()
|
||||
|
||||
/obj/docking_port/mobile/supply/request(obj/docking_port/stationary/S)
|
||||
@@ -56,27 +75,30 @@
|
||||
return 2
|
||||
return ..()
|
||||
|
||||
/obj/docking_port/mobile/supply/dock()
|
||||
/obj/docking_port/mobile/supply/dock(port)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
buy()
|
||||
sell()
|
||||
if(istype(port, /obj/docking_port/stationary/transit))
|
||||
// Ignore transit ports.
|
||||
return
|
||||
|
||||
if(is_station_level(z))
|
||||
// Buy when arriving at the station.
|
||||
buy()
|
||||
|
||||
if(z == level_name_to_num(CENTCOMM))
|
||||
// Sell when arriving at CentComm.
|
||||
sell()
|
||||
|
||||
/obj/docking_port/mobile/supply/proc/buy()
|
||||
if(!is_station_level(z)) //we only buy when we are -at- the station
|
||||
return 1
|
||||
|
||||
for(var/datum/supply_order/order as anything in SSeconomy.shopping_list)
|
||||
if(length(SSeconomy.delivery_list) >= MAX_CRATE_DELIVERY)
|
||||
break
|
||||
SSeconomy.delivery_list += order
|
||||
SSeconomy.shopping_list -= order
|
||||
|
||||
if(!length(SSeconomy.delivery_list))
|
||||
return 2
|
||||
|
||||
var/list/emptyTurfs = list()
|
||||
for(var/turf/simulated/T in areaInstance)
|
||||
if(T.density)
|
||||
@@ -108,151 +130,673 @@
|
||||
|
||||
SSeconomy.delivery_list.Cut()
|
||||
|
||||
/obj/docking_port/mobile/supply/proc/sell()
|
||||
if(z != level_name_to_num(CENTCOMM)) //we only sell when we are -at- centcomm
|
||||
return 1
|
||||
for(var/datum/station_goal/secondary/SG in SSticker.mode.secondary_goals)
|
||||
if(!SG.should_send_crate)
|
||||
continue
|
||||
|
||||
var/plasma_count = 0
|
||||
var/intel_count = 0
|
||||
var/crate_count = 0
|
||||
var/total_crate_value = 0
|
||||
var/turf/T = pick_n_take(emptyTurfs) //turf we will place it in
|
||||
if(!T)
|
||||
break
|
||||
|
||||
var/obj/structure/closet/crate/secure/personal/PC = new(T)
|
||||
if(SG.requester_name)
|
||||
PC.name = "goal crate ([SG.requester_name] in [SG.department])"
|
||||
PC.desc = "This personal crate has been configured by CC for [SG.requester_name]'s use in completing the secondary goal [SG.name]."
|
||||
PC.registered_name = SG.requester_name
|
||||
else
|
||||
PC.name = "goal crate (Unknown in [SG.department])"
|
||||
PC.locked = FALSE
|
||||
PC.update_icon()
|
||||
|
||||
SG.should_send_crate = FALSE
|
||||
|
||||
/obj/docking_port/mobile/supply/proc/scan_cargo()
|
||||
manifest = new
|
||||
SEND_SIGNAL(src, COMSIG_CARGO_BEGIN_SCAN)
|
||||
for(var/atom/movable/AM in areaInstance)
|
||||
if(deep_scan(AM, TRUE) == CARGO_PREVENT_SHUTTLE)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/docking_port/mobile/supply/proc/deep_scan(atom/movable/AM, top_level = FALSE)
|
||||
var/handling = prefilter_atom(AM)
|
||||
if(handling == CARGO_PREVENT_SHUTTLE)
|
||||
return CARGO_PREVENT_SHUTTLE
|
||||
|
||||
var/found_priority = FALSE
|
||||
for(var/atom/movable/child in AM)
|
||||
var/child_handling = deep_scan(child)
|
||||
if(child_handling == CARGO_PREVENT_SHUTTLE)
|
||||
return CARGO_PREVENT_SHUTTLE
|
||||
if(child_handling == CARGO_HAS_PRIORITY)
|
||||
found_priority = TRUE
|
||||
|
||||
if(handling != CARGO_SKIP_ATOM)
|
||||
if(handling == CARGO_REQUIRE_PRIORITY && !found_priority)
|
||||
blocking_item = "locked containers that don't contain goal items ([AM])"
|
||||
return CARGO_PREVENT_SHUTTLE
|
||||
var/sellable = SEND_SIGNAL(src, COMSIG_CARGO_CHECK_SELL, AM)
|
||||
manifest.items_to_sell[AM] = sellable
|
||||
if(top_level && !(sellable & COMSIG_CARGO_IS_SECURED))
|
||||
manifest.loose_cargo = TRUE
|
||||
if(sellable & COMSIG_CARGO_SELL_PRIORITY)
|
||||
if(top_level)
|
||||
return CARGO_OK
|
||||
return CARGO_HAS_PRIORITY
|
||||
|
||||
return CARGO_OK
|
||||
|
||||
/obj/docking_port/mobile/supply/proc/prefilter_atom(atom/movable/AM)
|
||||
for(var/reason in blacklist)
|
||||
if(is_type_in_list(AM, blacklist[reason]))
|
||||
blocking_item = "[reason] ([AM])"
|
||||
return CARGO_PREVENT_SHUTTLE
|
||||
|
||||
if(istype(AM, /obj/structure/largecrate))
|
||||
blocking_item = "unopened large crates ([AM])"
|
||||
return CARGO_PREVENT_SHUTTLE
|
||||
|
||||
if(istype(AM, /obj/structure/closet/crate))
|
||||
var/obj/structure/closet/crate/C = AM
|
||||
if(C.manifest)
|
||||
blocking_item = "crates with their manifest still attached ([AM])"
|
||||
return CARGO_PREVENT_SHUTTLE
|
||||
|
||||
if(istype(AM, /obj/structure/closet/crate/secure))
|
||||
var/obj/structure/closet/crate/secure/SC = AM
|
||||
if(SC.locked)
|
||||
return CARGO_REQUIRE_PRIORITY
|
||||
else if(istype(SC, /obj/structure/closet/crate/secure/personal))
|
||||
blocking_item = "unlocked personal crates ([AM])"
|
||||
return CARGO_PREVENT_SHUTTLE
|
||||
|
||||
if(istype(AM, /obj/item/storage/lockbox))
|
||||
var/obj/item/storage/lockbox/LB = AM
|
||||
if(LB.locked)
|
||||
return CARGO_REQUIRE_PRIORITY
|
||||
|
||||
if(istype(AM, /obj/effect))
|
||||
var/obj/effect/E = AM
|
||||
if(E.is_cleanable())
|
||||
return CARGO_OK
|
||||
|
||||
if(AM.anchored && !istype(AM, /obj/mecha/working))
|
||||
return CARGO_SKIP_ATOM
|
||||
|
||||
return CARGO_OK
|
||||
|
||||
|
||||
/obj/docking_port/mobile/supply/proc/sell()
|
||||
SEND_SIGNAL(src, COMSIG_CARGO_BEGIN_SELL)
|
||||
SSeconomy.sold_atoms = list()
|
||||
var/list/qdel_atoms = list()
|
||||
var/list/rescue_atoms = list()
|
||||
for(var/atom/movable/AM in manifest.items_to_sell)
|
||||
var/sellable = manifest.items_to_sell[AM]
|
||||
if(sellable & COMSIG_CARGO_SELL_PRIORITY)
|
||||
SEND_SIGNAL(src, COMSIG_CARGO_DO_PRIORITY_SELL, AM, manifest)
|
||||
SSeconomy.sold_atoms += "[AM.name](priority)"
|
||||
qdel_atoms += AM
|
||||
continue
|
||||
else if(sellable & COMSIG_CARGO_SELL_NORMAL)
|
||||
SEND_SIGNAL(src, COMSIG_CARGO_DO_SELL, AM, manifest)
|
||||
SSeconomy.sold_atoms += "[AM.name](normal)"
|
||||
qdel_atoms += AM
|
||||
continue
|
||||
else if(sellable & COMSIG_CARGO_SELL_WRONG)
|
||||
SEND_SIGNAL(src, COMSIG_CARGO_SEND_ERROR, AM, manifest)
|
||||
SSeconomy.sold_atoms += "[AM.name](error)"
|
||||
qdel_atoms += AM
|
||||
continue
|
||||
else if(sellable & COMSIG_CARGO_MESS)
|
||||
manifest.messy_shuttle = TRUE
|
||||
SSeconomy.sold_atoms += "[AM.name](mess)"
|
||||
qdel_atoms += AM
|
||||
continue
|
||||
else if(!(sellable & COMSIG_CARGO_SELL_SKIP))
|
||||
manifest.sent_trash = TRUE
|
||||
|
||||
rescue_atoms += AM
|
||||
|
||||
for(var/atom/movable/AM in rescue_atoms)
|
||||
if(AM.loc in qdel_atoms)
|
||||
AM.forceMove(get_turf(AM))
|
||||
|
||||
for(var/AM in qdel_atoms)
|
||||
qdel(AM)
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_CARGO_END_SELL, manifest)
|
||||
|
||||
SSblackbox.record_feedback("amount", "cargo shipments", 1)
|
||||
|
||||
if(manifest.loose_cargo)
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = SSeconomy.cargo_account
|
||||
item.credits = SSeconomy.fine_for_loose_cargo
|
||||
item.reason = "Please remember to secure all items in crates."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("nested tally", "cargo fines", 1, list("loose cargo", "amount"))
|
||||
SSblackbox.record_feedback("nested tally", "cargo fines", SSeconomy.fine_for_loose_cargo, list("loose cargo", "credits"))
|
||||
if(manifest.messy_shuttle)
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = SSeconomy.cargo_account
|
||||
item.credits = SSeconomy.fine_for_messy_shuttle
|
||||
item.reason = "Shuttle cleaning fee."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("nested tally", "cargo fines", 1, list("messy shuttle", "amount"))
|
||||
SSblackbox.record_feedback("nested tally", "cargo fines", SSeconomy.fine_for_messy_shuttle, list("messy shuttle", "credits"))
|
||||
if(manifest.sent_trash)
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = SSeconomy.cargo_account
|
||||
item.credits = SSeconomy.fine_for_selling_trash
|
||||
item.reason = "Don't send us random junk."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("nested tally", "cargo fines", 1, list("sent trash", "amount"))
|
||||
SSblackbox.record_feedback("nested tally", "cargo fines", SSeconomy.fine_for_selling_trash, list("sent trash", "credits"))
|
||||
|
||||
var/msg = "<center>---[station_time_timestamp()]---</center><br>"
|
||||
var/credits_to_deposit = 0
|
||||
var/research_credits = 0
|
||||
var/service_credits = 0
|
||||
var/medical_credits = 0
|
||||
|
||||
for(var/atom/movable/MA in areaInstance)
|
||||
if(MA.anchored)
|
||||
continue
|
||||
if(istype(MA, /mob/dead))
|
||||
continue
|
||||
if(istype(MA, /obj/structure/closet/crate/mail))
|
||||
continue
|
||||
SSeconomy.sold_atoms += " [MA.name]"
|
||||
var/list/credit_changes = list()
|
||||
for(var/datum/economy/line_item/item in manifest.line_items)
|
||||
if(!credit_changes[item.account])
|
||||
credit_changes[item.account] = 0
|
||||
credit_changes[item.account] += item.credits
|
||||
|
||||
// Must be in a crate (or a critter crate)!
|
||||
if(istype(MA, /obj/structure/closet/crate) || istype(MA, /obj/structure/closet/critter))
|
||||
SSeconomy.sold_atoms += ":"
|
||||
if(!length(MA.contents))
|
||||
SSeconomy.sold_atoms += " (empty)"
|
||||
if(istype(MA, /obj/structure/closet/crate))
|
||||
var/obj/structure/closet/crate/exported_crate = MA
|
||||
total_crate_value += exported_crate.crate_value
|
||||
else
|
||||
total_crate_value += DEFAULT_CRATE_VALUE
|
||||
crate_count++
|
||||
if(item.credits > 0)
|
||||
msg += "<span class='good'>[item.account.account_name] +[item.credits]</span>: [item.reason]<br>"
|
||||
else if(item.credits == 0)
|
||||
msg += "<span class='[item.zero_is_good ? "good" : "bad"]'>[item.account.account_name] Notice</span>: [item.reason]<br>"
|
||||
else
|
||||
msg += "<span class='bad'>[item.account.account_name] [item.credits]</span>: [item.reason]<br>"
|
||||
|
||||
var/find_slip = TRUE
|
||||
for(var/thing in MA)
|
||||
// Sell manifests
|
||||
SSeconomy.sold_atoms += " [thing:name]"
|
||||
if(find_slip && istype(thing,/obj/item/paper/manifest))
|
||||
var/obj/item/paper/manifest/slip = thing
|
||||
credits_to_deposit += SSeconomy.credits_per_manifest
|
||||
msg += "<span class='good'>+[SSeconomy.credits_per_manifest]</span>: Package [slip.ordernumber] accorded.<br>"
|
||||
for(var/datum/money_account/account in credit_changes)
|
||||
if(account.account_type == ACCOUNT_TYPE_DEPARTMENT)
|
||||
SSblackbox.record_feedback("tally", "cargo profits", credit_changes[account], "[account.account_name]")
|
||||
else
|
||||
SSblackbox.record_feedback("tally", "cargo profits", credit_changes[account], "All personal accounts")
|
||||
|
||||
// Sell plasma
|
||||
if(istype(thing, /obj/item/stack/sheet/mineral/plasma))
|
||||
var/obj/item/stack/sheet/mineral/plasma/P = thing
|
||||
plasma_count += P.amount
|
||||
|
||||
// Sell syndicate intel
|
||||
if(istype(thing, /obj/item/documents/syndicate))
|
||||
++intel_count
|
||||
|
||||
// Sell tech levels
|
||||
if(istype(thing, /obj/item/disk/tech_disk))
|
||||
var/obj/item/disk/tech_disk/disk = thing
|
||||
if(!disk.stored)
|
||||
continue
|
||||
var/datum/tech/tech = disk.stored
|
||||
|
||||
var/cost = tech.getCost(SSeconomy.tech_levels[tech.id])
|
||||
if(cost)
|
||||
SSeconomy.tech_levels[tech.id] = tech.level
|
||||
research_credits += cost / 2
|
||||
credits_to_deposit += cost / 2
|
||||
msg += "<span class='good'>+[cost]</span>: [tech.name] - new data.<br>"
|
||||
|
||||
// Sell designs
|
||||
if(istype(thing, /obj/item/disk/design_disk))
|
||||
var/obj/item/disk/design_disk/disk = thing
|
||||
if(!disk.blueprint)
|
||||
continue
|
||||
var/datum/design/design = disk.blueprint
|
||||
if(design.id in SSeconomy.research_designs)
|
||||
continue
|
||||
credits_to_deposit += SSeconomy.credits_per_design
|
||||
SSeconomy.research_designs += design.id
|
||||
msg += "<span class='good'>+[SSeconomy.credits_per_design]</span>: [design.name] design.<br>"
|
||||
|
||||
// Sell viral sample virology goals, those in vial lockboxes included
|
||||
if(istype(thing, /obj/item/reagent_containers) || istype(thing, /obj/item/storage/lockbox/vials))
|
||||
var/list/sold_containers = list()
|
||||
if(istype(thing, /obj/item/reagent_containers))
|
||||
sold_containers += thing
|
||||
if(istype(thing, /obj/item/storage/lockbox/vials))
|
||||
for(var/obj/item/reagent_containers/C in thing)
|
||||
sold_containers += C
|
||||
for(var/obj/item/reagent_containers/C in sold_containers)
|
||||
if(C.reagents?.reagent_list)
|
||||
for(var/datum/virology_goal/G in GLOB.virology_goals)
|
||||
if(G.completed)
|
||||
continue
|
||||
if(G.check_completion(C.reagents.reagent_list))
|
||||
medical_credits += SSeconomy.credits_per_virology_goal
|
||||
msg += "<span class='good'>+[SSeconomy.credits_per_virology_goal]</span>: [G.name] completion.<br>"
|
||||
|
||||
// Sell exotic plants
|
||||
if(istype(thing, /obj/item/seeds))
|
||||
var/obj/item/seeds/S = thing
|
||||
if(S.rarity == 0) // Mundane species
|
||||
msg += "<span class='bad'>+0</span>: We don't need samples of mundane species \"[capitalize(S.species)]\".<br>"
|
||||
else if(SSeconomy.discovered_plants[S.type]) // This species has already been sent to CentComm
|
||||
var/potDiff = S.potency - SSeconomy.discovered_plants[S.type] // Compare it to the previous best
|
||||
if(potDiff > 0) // This sample is better
|
||||
SSeconomy.discovered_plants[S.type] = S.potency
|
||||
msg += "<span class='good'>+[potDiff]</span>: New sample of \"[capitalize(S.species)]\" is superior. Good work.<br>"
|
||||
service_credits += potDiff / 2
|
||||
credits_to_deposit += potDiff / 2
|
||||
else // This sample is worthless
|
||||
msg += "<span class='bad'>+0</span>: New sample of \"[capitalize(S.species)]\" is not more potent than existing sample ([SSeconomy.discovered_plants[S.type]] potency).<br>"
|
||||
else // This is a new discovery!
|
||||
SSeconomy.discovered_plants[S.type] = S.potency
|
||||
msg += "<span class='good'>[S.rarity]</span>: New species discovered: \"[capitalize(S.species)]\". Excellent work.<br>"
|
||||
service_credits += S.rarity / 2 // That's right, no bonus for potency. Send a crappy sample first to "show improvement" later
|
||||
credits_to_deposit += S.rarity / 2
|
||||
|
||||
if(istype(thing, /obj/item/organ/internal/alien))
|
||||
var/obj/item/organ/internal/alien/organ = thing
|
||||
credits_to_deposit += organ.cargo_profit
|
||||
qdel(MA)
|
||||
SSeconomy.sold_atoms += "."
|
||||
|
||||
if(plasma_count > 0)
|
||||
var/credits_from_plasma = plasma_count * SSeconomy.credits_per_plasma
|
||||
msg += "<span class='good'>+[credits_from_plasma]</span>: Received [plasma_count] unit(s) of exotic material.<br>"
|
||||
credits_to_deposit += credits_from_plasma
|
||||
|
||||
if(intel_count > 0)
|
||||
var/credits_from_intel = intel_count * SSeconomy.credits_per_intel
|
||||
msg += "<span class='good'>+[credits_from_intel]</span>: Received [intel_count] article(s) of enemy intelligence.<br>"
|
||||
credits_to_deposit += credits_from_intel
|
||||
|
||||
if(crate_count > 0)
|
||||
msg += "<span class='good'>+[total_crate_value]</span>: Received [crate_count] crate(s).<br>"
|
||||
credits_to_deposit += total_crate_value
|
||||
if(credit_changes[account] > 0)
|
||||
GLOB.station_money_database.credit_account(account, credit_changes[account], "Supply Shuttle Exports Payment", "Central Command Supply Master", supress_log = FALSE)
|
||||
else
|
||||
GLOB.station_money_database.charge_account(account, -credit_changes[account], "Supply Shuttle Fine", "Central Command Supply Master", allow_overdraft = TRUE, supress_log = FALSE)
|
||||
|
||||
SSeconomy.centcom_message += "[msg]<hr>"
|
||||
if(credits_to_deposit > 0)
|
||||
GLOB.station_money_database.credit_account(SSeconomy.cargo_account, credits_to_deposit, "Supply Shuttle Exports Payment", "Central Command Supply Master", supress_log = FALSE)
|
||||
if(research_credits)
|
||||
GLOB.station_money_database.credit_account(GLOB.station_money_database.get_account_by_department(DEPARTMENT_SCIENCE), research_credits, "Supply Shuttle Exports Payment", "Central Command Supply Master", supress_log = FALSE)
|
||||
if(service_credits)
|
||||
GLOB.station_money_database.credit_account(GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE), service_credits, "Supply Shuttle Exports Payment", "Central Command Supply Master", supress_log = FALSE)
|
||||
if(medical_credits)
|
||||
GLOB.station_money_database.credit_account(GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL), medical_credits, "Supply Shuttle Exports Payment", "Central Command Supply Master", supress_log = FALSE)
|
||||
manifest = new
|
||||
|
||||
|
||||
// Convenience object that registers itself with the supply shuttle and provides
|
||||
// methods for you to override.
|
||||
/datum/economy/simple_seller
|
||||
|
||||
/datum/economy/simple_seller/proc/register(obj/docking_port/mobile/supply/S)
|
||||
RegisterSignal(S, COMSIG_CARGO_BEGIN_SCAN, PROC_REF(begin_scan))
|
||||
RegisterSignal(S, COMSIG_CARGO_CHECK_SELL, PROC_REF(check_sell))
|
||||
RegisterSignal(S, COMSIG_CARGO_BEGIN_SELL, PROC_REF(begin_sell))
|
||||
RegisterSignal(S, COMSIG_CARGO_DO_PRIORITY_SELL, PROC_REF(sell_priority))
|
||||
RegisterSignal(S, COMSIG_CARGO_DO_SELL, PROC_REF(sell_normal))
|
||||
RegisterSignal(S, COMSIG_CARGO_SEND_ERROR, PROC_REF(sell_wrong))
|
||||
RegisterSignal(S, COMSIG_CARGO_END_SELL, PROC_REF(end_sell))
|
||||
|
||||
/datum/economy/simple_seller/proc/begin_scan(obj/docking_port/mobile/supply/S)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_BEGIN_SCAN
|
||||
return
|
||||
|
||||
/datum/economy/simple_seller/proc/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_CHECK_SELL
|
||||
return NONE
|
||||
|
||||
/datum/economy/simple_seller/proc/begin_sell(obj/docking_port/mobile/supply/S)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_BEGIN_SELL
|
||||
return
|
||||
|
||||
/datum/economy/simple_seller/proc/sell_priority(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_DO_PRIORITY_SELL
|
||||
return check_sell(S, AM) & COMSIG_CARGO_SELL_PRIORITY
|
||||
|
||||
/datum/economy/simple_seller/proc/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_DO_SELL
|
||||
return check_sell(S, AM) & COMSIG_CARGO_SELL_NORMAL
|
||||
|
||||
/datum/economy/simple_seller/proc/sell_wrong(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_SEND_ERROR
|
||||
return check_sell(S, AM) & COMSIG_CARGO_SELL_WRONG
|
||||
|
||||
/datum/economy/simple_seller/proc/end_sell(obj/docking_port/mobile/supply/S, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_END_SELL
|
||||
return
|
||||
|
||||
|
||||
/datum/economy/simple_seller/crates
|
||||
var/crates = 0
|
||||
var/credits = 0
|
||||
|
||||
/datum/economy/simple_seller/crates/begin_sell(obj/docking_port/mobile/supply/S)
|
||||
crates = 0
|
||||
credits = 0
|
||||
|
||||
/datum/economy/simple_seller/crates/check_sell(obj/docking_port/mobile/supply/S, AM)
|
||||
if(istype(AM, /obj/structure/closet/crate) || istype(AM, /obj/structure/closet/critter) || istype(AM, /obj/structure/closet/crate/mail))
|
||||
return COMSIG_CARGO_SELL_NORMAL | COMSIG_CARGO_IS_SECURED
|
||||
|
||||
/datum/economy/simple_seller/crates/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
crates += 1
|
||||
if(istype(AM, /obj/structure/closet/crate))
|
||||
var/obj/structure/closet/crate/exported_crate = AM
|
||||
credits += exported_crate.crate_value
|
||||
else
|
||||
credits += DEFAULT_CRATE_VALUE
|
||||
|
||||
/datum/economy/simple_seller/crates/end_sell(obj/docking_port/mobile/supply/S, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!credits)
|
||||
return
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = SSeconomy.cargo_account
|
||||
item.credits = credits
|
||||
item.reason = "Returned [crates] crate(s)."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo crates sold", crates, "amount")
|
||||
SSblackbox.record_feedback("tally", "cargo crates sold", item.credits, "credits")
|
||||
|
||||
|
||||
/datum/economy/simple_seller/plasma
|
||||
var/plasma = 0
|
||||
|
||||
/datum/economy/simple_seller/plasma/begin_sell(obj/docking_port/mobile/supply/S)
|
||||
plasma = 0
|
||||
|
||||
/datum/economy/simple_seller/plasma/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM, /obj/item/stack/sheet/mineral/plasma))
|
||||
return COMSIG_CARGO_SELL_NORMAL
|
||||
|
||||
/datum/economy/simple_seller/plasma/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
var/obj/item/stack/sheet/mineral/plasma/P = AM
|
||||
plasma += P.amount
|
||||
|
||||
/datum/economy/simple_seller/plasma/end_sell(obj/docking_port/mobile/supply/S, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!plasma)
|
||||
return
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = SSeconomy.cargo_account
|
||||
item.credits = plasma * SSeconomy.credits_per_plasma
|
||||
item.reason = "Received [plasma] unit(s) of exotic material."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo plasma sold", plasma, "amount")
|
||||
SSblackbox.record_feedback("tally", "cargo plasma sold", item.credits, "credits")
|
||||
|
||||
|
||||
/datum/economy/simple_seller/intel
|
||||
var/intel = 0
|
||||
|
||||
/datum/economy/simple_seller/intel/begin_sell(obj/docking_port/mobile/supply/S)
|
||||
intel = 0
|
||||
|
||||
/datum/economy/simple_seller/intel/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM, /obj/item/documents/syndicate))
|
||||
return COMSIG_CARGO_SELL_NORMAL
|
||||
|
||||
/datum/economy/simple_seller/intel/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
intel++
|
||||
|
||||
/datum/economy/simple_seller/intel/end_sell(obj/docking_port/mobile/supply/S, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!intel)
|
||||
return
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = SSeconomy.cargo_account
|
||||
item.credits = intel * SSeconomy.credits_per_intel
|
||||
item.reason = "Received [intel] article(s) of enemy intelligence."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo intel sold", intel, "amount")
|
||||
SSblackbox.record_feedback("tally", "cargo intel sold", item.credits, "credits")
|
||||
|
||||
|
||||
/datum/economy/simple_seller/alien_organs
|
||||
|
||||
/datum/economy/simple_seller/alien_organs/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM, /obj/item/organ/internal/alien))
|
||||
return COMSIG_CARGO_SELL_NORMAL
|
||||
|
||||
/datum/economy/simple_seller/alien_organs/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
var/obj/item/organ/internal/alien/organ = AM
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = SSeconomy.cargo_account
|
||||
item.credits = organ.cargo_profit
|
||||
item.reason = "Received a sample of exotic biological tissue."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo alien organs sold", 1, "amount")
|
||||
SSblackbox.record_feedback("tally", "cargo alien organs sold", item.credits, "credits")
|
||||
|
||||
|
||||
/datum/economy/simple_seller/shipping_manifests
|
||||
|
||||
/datum/economy/simple_seller/shipping_manifests/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM,/obj/item/paper/manifest))
|
||||
return COMSIG_CARGO_SELL_NORMAL
|
||||
|
||||
/datum/economy/simple_seller/shipping_manifests/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
var/obj/item/paper/manifest/slip = AM
|
||||
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = SSeconomy.cargo_account
|
||||
item.credits = SSeconomy.credits_per_manifest
|
||||
item.reason = "Package [slip.ordernumber] accorded."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo manifests sold", 1, "amount")
|
||||
SSblackbox.record_feedback("tally", "cargo manifests sold", item.credits, "credits")
|
||||
|
||||
|
||||
/datum/economy/simple_seller/tech_levels
|
||||
var/list/temp_tech_levels
|
||||
|
||||
/datum/economy/simple_seller/tech_levels/begin_scan(obj/docking_port/mobile/supply/S)
|
||||
temp_tech_levels = SSeconomy.tech_levels.Copy()
|
||||
|
||||
/datum/economy/simple_seller/tech_levels/begin_sell(obj/docking_port/mobile/supply/S)
|
||||
temp_tech_levels = SSeconomy.tech_levels.Copy()
|
||||
|
||||
/datum/economy/simple_seller/tech_levels/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM, /obj/item/disk/tech_disk))
|
||||
var/obj/item/disk/tech_disk/disk = AM
|
||||
if(!disk.stored)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
var/datum/tech/tech = disk.stored
|
||||
|
||||
var/cost = tech.getCost(temp_tech_levels[tech.id])
|
||||
if(cost)
|
||||
temp_tech_levels[tech.id] = tech.level
|
||||
return COMSIG_CARGO_SELL_NORMAL
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
|
||||
/datum/economy/simple_seller/tech_levels/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
var/obj/item/disk/tech_disk/disk = AM
|
||||
if(!disk.stored)
|
||||
return
|
||||
var/datum/tech/tech = disk.stored
|
||||
|
||||
var/cost = tech.getCost(SSeconomy.tech_levels[tech.id])
|
||||
if(!cost)
|
||||
return
|
||||
|
||||
SSeconomy.tech_levels[tech.id] = tech.level
|
||||
SSblackbox.record_feedback("tally", "cargo tech disks sold", 1, "amount")
|
||||
SSblackbox.record_feedback("tally", "cargo tech disks sold", cost, "credits")
|
||||
|
||||
var/datum/economy/line_item/cargo_item = new
|
||||
cargo_item.account = SSeconomy.cargo_account
|
||||
cargo_item.credits = cost / 2
|
||||
cargo_item.reason = "[tech.name] - new data."
|
||||
manifest.line_items += cargo_item
|
||||
|
||||
var/datum/economy/line_item/science_item = new
|
||||
science_item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SCIENCE)
|
||||
science_item.credits = cost / 2
|
||||
science_item.reason = "[tech.name] - new data."
|
||||
manifest.line_items += science_item
|
||||
|
||||
/datum/economy/simple_seller/tech_levels/sell_wrong(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SCIENCE)
|
||||
item.credits = 0
|
||||
|
||||
var/obj/item/disk/tech_disk/disk = AM
|
||||
if(!disk.stored)
|
||||
item.reason = "Blank tech disk."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo tech disks sold", 1, "blank")
|
||||
return
|
||||
|
||||
var/datum/tech/tech = disk.stored
|
||||
var/cost = tech.getCost(SSeconomy.tech_levels[tech.id])
|
||||
if(!cost)
|
||||
item.reason = "[tech.name] - no new data."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo tech disks sold", 1, "repeat")
|
||||
|
||||
|
||||
/datum/economy/simple_seller/designs
|
||||
var/list/temp_designs
|
||||
|
||||
/datum/economy/simple_seller/designs/begin_scan(obj/docking_port/mobile/supply/S)
|
||||
temp_designs = SSeconomy.research_designs.Copy()
|
||||
|
||||
/datum/economy/simple_seller/designs/begin_sell(obj/docking_port/mobile/supply/S)
|
||||
temp_designs = SSeconomy.research_designs.Copy()
|
||||
|
||||
/datum/economy/simple_seller/designs/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM, /obj/item/disk/design_disk))
|
||||
var/obj/item/disk/design_disk/disk = AM
|
||||
if(!disk.blueprint)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
var/datum/design/design = disk.blueprint
|
||||
if(design.id in temp_designs)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
temp_designs += design.id
|
||||
return COMSIG_CARGO_SELL_NORMAL
|
||||
|
||||
/datum/economy/simple_seller/designs/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
var/obj/item/disk/design_disk/disk = AM
|
||||
if(!disk.blueprint)
|
||||
return
|
||||
var/datum/design/design = disk.blueprint
|
||||
if(design.id in SSeconomy.research_designs)
|
||||
return
|
||||
SSeconomy.research_designs += design.id
|
||||
SSblackbox.record_feedback("tally", "cargo design disks sold", 1, "amount")
|
||||
SSblackbox.record_feedback("tally", "cargo design disks sold", SSeconomy.credits_per_design, "credits")
|
||||
|
||||
var/datum/economy/line_item/cargo_item = new
|
||||
cargo_item.account = SSeconomy.cargo_account
|
||||
cargo_item.credits = SSeconomy.credits_per_design / 2
|
||||
cargo_item.reason = "[design.name] design."
|
||||
manifest.line_items += cargo_item
|
||||
|
||||
var/datum/economy/line_item/science_item = new
|
||||
science_item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SCIENCE)
|
||||
science_item.credits = SSeconomy.credits_per_design / 2
|
||||
science_item.reason = "[design.name] design."
|
||||
manifest.line_items += science_item
|
||||
|
||||
/datum/economy/simple_seller/designs/sell_wrong(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SCIENCE)
|
||||
item.credits = 0
|
||||
|
||||
var/obj/item/disk/design_disk/disk = AM
|
||||
if(!disk.blueprint)
|
||||
item.reason = "Blank design disk."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo design disks sold", 1, "blank")
|
||||
return
|
||||
var/datum/design/design = disk.blueprint
|
||||
if(design.id in SSeconomy.research_designs)
|
||||
item.reason = "Duplicate design for [design.name]."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo design disks sold", 1, "repeat")
|
||||
return
|
||||
|
||||
|
||||
/datum/economy/simple_seller/seeds
|
||||
var/list/temp_discovered
|
||||
|
||||
/datum/economy/simple_seller/seeds/begin_scan(obj/docking_port/mobile/supply/S)
|
||||
temp_discovered = SSeconomy.discovered_plants.Copy()
|
||||
|
||||
/datum/economy/simple_seller/seeds/begin_sell(obj/docking_port/mobile/supply/S)
|
||||
temp_discovered = SSeconomy.discovered_plants.Copy()
|
||||
|
||||
/datum/economy/simple_seller/seeds/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM, /obj/item/seeds))
|
||||
var/obj/item/seeds/seed = AM
|
||||
if(seed.rarity == 0) // Mundane species
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
if(!temp_discovered[seed.type] || temp_discovered[seed.type] < seed.potency)
|
||||
temp_discovered[seed.type] = seed.potency
|
||||
return COMSIG_CARGO_SELL_NORMAL
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
|
||||
/datum/economy/simple_seller/seeds/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
var/msg = ""
|
||||
var/credits = 0
|
||||
var/obj/item/seeds/seed = AM
|
||||
if(seed.rarity == 0) // Mundane species
|
||||
return
|
||||
else if(SSeconomy.discovered_plants[seed.type])
|
||||
// This species has already been sent to CentComm
|
||||
// Compare it to the previous best
|
||||
var/potDiff = seed.potency - SSeconomy.discovered_plants[seed.type]
|
||||
if(potDiff > 0)
|
||||
SSeconomy.discovered_plants[seed.type] = seed.potency
|
||||
credits = potDiff
|
||||
msg = "New sample of \"[capitalize(seed.species)]\" is superior. Good work."
|
||||
SSblackbox.record_feedback("tally", "cargo seeds sold", 1, "improved")
|
||||
else
|
||||
// This is a new discovery!
|
||||
SSeconomy.discovered_plants[seed.type] = seed.potency
|
||||
credits = seed.rarity + seed.potency
|
||||
msg = "New species discovered: \"[capitalize(seed.species)]\". Excellent work."
|
||||
SSblackbox.record_feedback("tally", "cargo seeds sold", 1, "new")
|
||||
|
||||
if(credits == 0)
|
||||
return
|
||||
|
||||
SSblackbox.record_feedback("tally", "cargo seeds sold", 1, "amount")
|
||||
SSblackbox.record_feedback("tally", "cargo seeds sold", credits, "credits")
|
||||
|
||||
var/datum/economy/line_item/cargo_item = new
|
||||
cargo_item.account = SSeconomy.cargo_account
|
||||
cargo_item.credits = credits / 2
|
||||
cargo_item.reason = msg
|
||||
manifest.line_items += cargo_item
|
||||
|
||||
var/datum/economy/line_item/service_item = new
|
||||
service_item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE)
|
||||
service_item.credits = credits / 2
|
||||
service_item.reason = msg
|
||||
manifest.line_items += service_item
|
||||
|
||||
/datum/economy/simple_seller/seeds/sell_wrong(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE)
|
||||
item.credits = 0
|
||||
|
||||
var/obj/item/seeds/seed = AM
|
||||
if(seed.rarity == 0)
|
||||
item.reason = "We don't need samples of mundane species \"[capitalize(seed.species)]\"."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo seeds sold", 1, "boring")
|
||||
else if(SSeconomy.discovered_plants[seed.type] && SSeconomy.discovered_plants[seed.type] < seed.potency)
|
||||
item.reason = "New sample of \"[capitalize(seed.species)]\" is not more potent than existing sample ([SSeconomy.discovered_plants[seed.type]] potency)."
|
||||
manifest.line_items += item
|
||||
SSblackbox.record_feedback("tally", "cargo seeds sold", 1, "repeat")
|
||||
// If neither succeeds, this seed was declared wrong by a different
|
||||
// seller, so we should be quiet.
|
||||
|
||||
|
||||
/datum/economy/simple_seller/messes
|
||||
|
||||
/datum/economy/simple_seller/messes/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM, /obj/effect))
|
||||
var/obj/effect/E = AM
|
||||
if(E.is_cleanable())
|
||||
return COMSIG_CARGO_MESS | COMSIG_CARGO_IS_SECURED
|
||||
|
||||
|
||||
/datum/economy/simple_seller/containers
|
||||
|
||||
/datum/economy/simple_seller/containers/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM, /obj/item/storage))
|
||||
return COMSIG_CARGO_SELL_NORMAL
|
||||
|
||||
/datum/economy/simple_seller/containers/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
SSblackbox.record_feedback("amount", "cargo containers sold", 1)
|
||||
|
||||
|
||||
/datum/economy/simple_seller/mechs
|
||||
|
||||
/datum/economy/simple_seller/mechs/sell_normal(obj/docking_port/mobile/supply/S, atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(!..())
|
||||
return
|
||||
SSblackbox.record_feedback("tally", "cargo basic mechs sold", 1, "amount")
|
||||
SSblackbox.record_feedback("tally", "cargo basic mechs sold", SSeconomy.credits_per_mech, "credits")
|
||||
|
||||
var/datum/economy/line_item/cargo_item = new
|
||||
cargo_item.account = SSeconomy.cargo_account
|
||||
cargo_item.credits = SSeconomy.credits_per_mech / 2
|
||||
cargo_item.reason = "Received a working [AM.name], great job!"
|
||||
manifest.line_items += cargo_item
|
||||
|
||||
var/datum/economy/line_item/science_item = new
|
||||
science_item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SCIENCE)
|
||||
science_item.credits = SSeconomy.credits_per_mech / 2
|
||||
science_item.reason = "Received a working [AM.name], great job!"
|
||||
manifest.line_items += science_item
|
||||
|
||||
|
||||
/datum/economy/simple_seller/mechs/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM, /obj/mecha/working))
|
||||
return COMSIG_CARGO_SELL_NORMAL | COMSIG_CARGO_IS_SECURED
|
||||
|
||||
|
||||
// Skip mech parts to avoid complaining about them.
|
||||
/datum/economy/simple_seller/mech_parts
|
||||
|
||||
/datum/economy/simple_seller/mech_parts/check_sell(obj/docking_port/mobile/supply/S, atom/movable/AM)
|
||||
if(istype(AM.loc, /obj/mecha/working))
|
||||
return COMSIG_CARGO_SELL_SKIP
|
||||
|
||||
|
||||
/datum/economy/cargo_shuttle_manifest
|
||||
var/list/items_to_sell = list()
|
||||
var/list/line_items = list()
|
||||
var/loose_cargo = FALSE
|
||||
var/messy_shuttle = FALSE
|
||||
var/sent_trash = FALSE
|
||||
|
||||
|
||||
/datum/economy/line_item
|
||||
var/datum/money_account/account
|
||||
var/credits
|
||||
var/reason
|
||||
var/zero_is_good = FALSE
|
||||
|
||||
#undef MAX_CRATE_DELIVERY
|
||||
|
||||
#undef CARGO_OK
|
||||
#undef CARGO_PREVENT_SHUTTLE
|
||||
#undef CARGO_SKIP_ATOM
|
||||
#undef CARGO_REQUIRE_PRIORITY
|
||||
#undef CARGO_HAS_PRIORITY
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/datum/station_goal/secondary/random_bulk_reagent/bar
|
||||
name = "Random Bulk Drink"
|
||||
department = "Bar"
|
||||
abstract = FALSE
|
||||
|
||||
/datum/station_goal/secondary/random_bulk_reagent/bar/randomize_params()
|
||||
..()
|
||||
department_account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE)
|
||||
report_message = "A visiting dignitary loves [initial(reagent_type.name)]. Please send us at least [amount] units of it."
|
||||
@@ -0,0 +1,11 @@
|
||||
/datum/station_goal/secondary/variety_reagent/bar
|
||||
name = "Variety of Drinks"
|
||||
progress_type = /datum/secondary_goal_progress/variety_reagent
|
||||
department = "Bar"
|
||||
generic_name_plural = "alcoholic drinks"
|
||||
abstract = FALSE
|
||||
|
||||
/datum/station_goal/secondary/variety_reagent/bar/randomize_params()
|
||||
..()
|
||||
department_account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE)
|
||||
report_message = "We're hosting a party, and need a variety of alcoholic drinks. Send us at least [amount_per] units each of [different_types] different ones. Keep them separate, and don't include anything too simple; we have our own booze dispenser."
|
||||
@@ -0,0 +1,105 @@
|
||||
/datum/station_goal/secondary/random_kudzu
|
||||
name = "Random Kudzu"
|
||||
department = "Hydroponics"
|
||||
progress_type = /datum/secondary_goal_progress/random_kudzu
|
||||
abstract = FALSE
|
||||
var/list/traits = list()
|
||||
var/amount = 5
|
||||
|
||||
/datum/station_goal/secondary/random_kudzu/randomize_params()
|
||||
var/list/valid_traits = subtypesof(/datum/spacevine_mutation)
|
||||
|
||||
traits += pick(valid_traits)
|
||||
|
||||
var/list/trait_names = list()
|
||||
for(var/dumb_trait in traits)
|
||||
var/datum/spacevine_mutation/trait = dumb_trait
|
||||
trait_names += initial(trait.name)
|
||||
|
||||
report_message = "The NSV Watney is studying kudzu, and needs some samples with [english_list(trait_names)], but no other mutations. [amount] packs of seeds should do."
|
||||
admin_desc = "Kudzu with [trait_names.Join(",")]"
|
||||
|
||||
/datum/secondary_goal_progress/random_kudzu
|
||||
var/list/traits
|
||||
var/needed
|
||||
var/sent = 0
|
||||
var/sent_this_shipment = 0
|
||||
|
||||
/datum/secondary_goal_progress/random_kudzu/configure(datum/station_goal/secondary/random_kudzu/goal)
|
||||
..()
|
||||
traits = goal.traits
|
||||
needed = goal.amount
|
||||
|
||||
/datum/secondary_goal_progress/random_kudzu/Copy()
|
||||
var/datum/secondary_goal_progress/random_kudzu/copy = ..()
|
||||
copy.traits = traits
|
||||
copy.needed = needed
|
||||
copy.sent = sent
|
||||
return copy
|
||||
|
||||
/datum/secondary_goal_progress/random_kudzu/start_shipment()
|
||||
sent_this_shipment = 0
|
||||
|
||||
/datum/secondary_goal_progress/random_kudzu/proc/check_mutations(obj/item/seeds/kudzu/seed)
|
||||
if(length(seed.mutations) != length(traits))
|
||||
// Wrong number of traits.
|
||||
return FALSE
|
||||
if(length(seed.mutations - traits))
|
||||
// Different traits.
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/secondary_goal_progress/random_kudzu/update(atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest = null)
|
||||
// Not in a matching personal crate? Ignore.
|
||||
if(!check_personal_crate(AM))
|
||||
return
|
||||
|
||||
if(!istype(AM, /obj/item/seeds/kudzu))
|
||||
return
|
||||
|
||||
if(!check_mutations(AM))
|
||||
if(!manifest)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE)
|
||||
item.credits = 0
|
||||
item.reason = "[AM] does not have the right traits."
|
||||
manifest.line_items += item
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
|
||||
sent++
|
||||
sent_this_shipment++
|
||||
return COMSIG_CARGO_SELL_PRIORITY
|
||||
|
||||
/datum/secondary_goal_progress/random_kudzu/check_complete(datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(sent_this_shipment > 0)
|
||||
var/datum/economy/line_item/update_item = new
|
||||
update_item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE)
|
||||
update_item.credits = 0
|
||||
update_item.zero_is_good = TRUE
|
||||
update_item.reason = "Received [sent_this_shipment] useful samples of kudzu seeds."
|
||||
manifest.line_items += update_item
|
||||
|
||||
if(sent < needed)
|
||||
return
|
||||
|
||||
var/datum/economy/line_item/supply_item = new
|
||||
supply_item.account = SSeconomy.cargo_account
|
||||
supply_item.credits = SSeconomy.credits_per_kudzu_goal / 3
|
||||
supply_item.reason = "Secondary goal complete: [needed] samples of kudzu seeds."
|
||||
manifest.line_items += supply_item
|
||||
|
||||
var/datum/economy/line_item/department_item = new
|
||||
department_item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE)
|
||||
department_item.credits = SSeconomy.credits_per_kudzu_goal / 3
|
||||
department_item.reason = "Secondary goal complete: [needed] samples of kudzu seeds."
|
||||
manifest.line_items += department_item
|
||||
|
||||
var/datum/economy/line_item/personal_item = new
|
||||
personal_item.account = personal_account || department_item.account
|
||||
personal_item.credits = SSeconomy.credits_per_kudzu_goal / 3
|
||||
personal_item.reason = "Secondary goal complete: [needed] samples of kudzu seeds."
|
||||
manifest.line_items += personal_item
|
||||
|
||||
return TRUE
|
||||
@@ -0,0 +1,9 @@
|
||||
/datum/station_goal/secondary/random_bulk_reagent/kitchen
|
||||
name = "Random Bulk Condiment"
|
||||
department = "Kitchen"
|
||||
abstract = FALSE
|
||||
|
||||
/datum/station_goal/secondary/random_bulk_reagent/kitchen/randomize_params()
|
||||
..()
|
||||
department_account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE)
|
||||
report_message = "Steve drank all of our [initial(reagent_type.name)]. Please send us another [amount] units of it."
|
||||
@@ -0,0 +1,92 @@
|
||||
/datum/station_goal/secondary/random_bulk_food
|
||||
name = "Random Bulk Food"
|
||||
department = "Kitchen"
|
||||
progress_type = /datum/secondary_goal_progress/random_bulk_food
|
||||
abstract = FALSE
|
||||
var/obj/item/food/snacks/food_type
|
||||
var/amount
|
||||
var/reward
|
||||
|
||||
/datum/station_goal/secondary/random_bulk_food/randomize_params()
|
||||
var/list/valid_food = list()
|
||||
for(var/S in subtypesof(/obj/item/food/snacks))
|
||||
var/obj/item/food/snacks/candidate = S
|
||||
if(initial(candidate.goal_difficulty) == FOOD_GOAL_SKIP)
|
||||
continue
|
||||
valid_food += candidate
|
||||
|
||||
if(!valid_food)
|
||||
food_type = /obj/item/food/snacks/cheesewedge
|
||||
amount = 50
|
||||
return
|
||||
|
||||
food_type = pick(valid_food)
|
||||
switch(initial(food_type.goal_difficulty))
|
||||
if(FOOD_GOAL_EASY)
|
||||
amount = 35
|
||||
reward = SSeconomy.credits_per_easy_food_goal
|
||||
if(FOOD_GOAL_NORMAL)
|
||||
amount = 15
|
||||
reward = SSeconomy.credits_per_normal_food_goal
|
||||
else // FOOD_GOAL_HARD
|
||||
amount = 5
|
||||
reward = SSeconomy.credits_per_hard_food_goal
|
||||
|
||||
report_message = "Someone spiked the water cooler at CC with Space Drugs again, and we all have a craving for [initial(food_type.name)]. Please send us [amount] servings of it."
|
||||
admin_desc = "[amount] servings of [initial(food_type.name)]"
|
||||
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_food
|
||||
var/obj/item/food/snacks/food_type
|
||||
var/needed
|
||||
var/sent = 0
|
||||
var/sent_this_shipment = 0
|
||||
var/reward
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_food/configure(datum/station_goal/secondary/random_bulk_food/goal)
|
||||
..()
|
||||
food_type = goal.food_type
|
||||
needed = goal.amount
|
||||
reward = goal.reward
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_food/Copy()
|
||||
var/datum/secondary_goal_progress/random_bulk_food/copy = ..()
|
||||
copy.food_type = food_type
|
||||
copy.needed = needed
|
||||
copy.sent = sent
|
||||
// These ones aren't really needed in the intended use case, they're
|
||||
// just here in case someone uses this method somewhere else.
|
||||
copy.reward = reward
|
||||
return copy
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_food/start_shipment()
|
||||
sent_this_shipment = 0
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_food/update(atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest = null)
|
||||
// Not in a matching personal crate? Ignore.
|
||||
if(!check_personal_crate(AM))
|
||||
return
|
||||
|
||||
if(!istype(AM, food_type))
|
||||
return
|
||||
|
||||
sent++
|
||||
sent_this_shipment++
|
||||
return COMSIG_CARGO_SELL_PRIORITY
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_food/check_complete(datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(sent_this_shipment > 0)
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "food shipments", initial(food_type.name)))
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", sent_this_shipment, list(goal_name, "food servings", initial(food_type.name)))
|
||||
var/datum/economy/line_item/update_item = new
|
||||
update_item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE)
|
||||
update_item.credits = 0
|
||||
update_item.zero_is_good = TRUE
|
||||
update_item.reason = "Received [sent_this_shipment] servings of [initial(food_type.name)]."
|
||||
manifest.line_items += update_item
|
||||
|
||||
if(sent < needed)
|
||||
return
|
||||
|
||||
three_way_reward(manifest, "Kitchen", GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE), reward, "Secondary goal complete: [needed] units of [initial(food_type.name)].")
|
||||
return TRUE
|
||||
@@ -0,0 +1,9 @@
|
||||
/datum/station_goal/secondary/random_bulk_reagent/medchem
|
||||
name = "Random Bulk Medicine"
|
||||
department = "Medbay"
|
||||
abstract = FALSE
|
||||
|
||||
/datum/station_goal/secondary/random_bulk_reagent/medchem/randomize_params()
|
||||
..()
|
||||
department_account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL)
|
||||
report_message = "Doctor, I've got a fever, and the only prescription, is more [initial(reagent_type.name)]. No, really, send us [amount] units of it, please."
|
||||
@@ -0,0 +1,11 @@
|
||||
/datum/station_goal/secondary/variety_reagent/medchem
|
||||
name = "Variety of Medicine"
|
||||
progress_type = /datum/secondary_goal_progress/variety_reagent
|
||||
department = "Medbay"
|
||||
generic_name_plural = "medicines"
|
||||
abstract = FALSE
|
||||
|
||||
/datum/station_goal/secondary/variety_reagent/medchem/randomize_params()
|
||||
..()
|
||||
department_account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL)
|
||||
report_message = "A refrigiration failure on a smaller station has left them critically low on supplies. Please send us at least [amount_per] units each of [different_types] different medicines. Pills, patches, bottles, however you can send them, just keep the medicines from mixing."
|
||||
@@ -0,0 +1,102 @@
|
||||
/datum/station_goal/secondary/random_bulk_reagent
|
||||
name = "Random Bulk Reagent"
|
||||
progress_type = /datum/secondary_goal_progress/random_bulk_reagent
|
||||
var/datum/reagent/reagent_type
|
||||
var/amount
|
||||
var/department_account
|
||||
var/reward
|
||||
|
||||
/datum/station_goal/secondary/random_bulk_reagent/Initialize(requester_account)
|
||||
..()
|
||||
admin_desc = "[amount] units of [initial(reagent_type.name)]"
|
||||
|
||||
/datum/station_goal/secondary/random_bulk_reagent/randomize_params()
|
||||
var/list/valid_reagents = list()
|
||||
for(var/R in subtypesof(/datum/reagent))
|
||||
var/datum/reagent/candidate = R
|
||||
if(initial(candidate.goal_department) != department)
|
||||
continue
|
||||
if(initial(candidate.goal_difficulty) == REAGENT_GOAL_SKIP)
|
||||
continue
|
||||
valid_reagents += candidate
|
||||
|
||||
if(!valid_reagents)
|
||||
reagent_type = /datum/reagent/water
|
||||
amount = 100
|
||||
return
|
||||
|
||||
reagent_type = pick(valid_reagents)
|
||||
switch(initial(reagent_type.goal_difficulty))
|
||||
if(REAGENT_GOAL_EASY)
|
||||
amount = 600
|
||||
reward = SSeconomy.credits_per_easy_reagent_goal
|
||||
if(REAGENT_GOAL_NORMAL)
|
||||
amount = 300
|
||||
reward = SSeconomy.credits_per_normal_reagent_goal
|
||||
else // REAGENT_GOAL_HARD
|
||||
amount = 50
|
||||
reward = SSeconomy.credits_per_hard_reagent_goal
|
||||
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_reagent
|
||||
var/datum/reagent/reagent_type
|
||||
var/needed
|
||||
var/sent = 0
|
||||
var/department
|
||||
var/department_account
|
||||
var/reward
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_reagent/configure(datum/station_goal/secondary/random_bulk_reagent/goal)
|
||||
..(goal)
|
||||
reagent_type = goal.reagent_type
|
||||
needed = goal.amount
|
||||
department = goal.department
|
||||
department_account = goal.department_account
|
||||
reward = goal.reward
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_reagent/Copy()
|
||||
var/datum/secondary_goal_progress/random_bulk_reagent/copy = ..()
|
||||
copy.reagent_type = reagent_type
|
||||
copy.needed = needed
|
||||
copy.sent = sent
|
||||
// These ones aren't really needed in the intended use case, they're
|
||||
// just here in case someone uses this method somewhere else.
|
||||
copy.department = department
|
||||
copy.department_account = department_account
|
||||
copy.reward = reward
|
||||
return copy
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_reagent/update(atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest = null)
|
||||
// Not a reagent container? Ignore.
|
||||
if(!istype(AM, /obj/item/reagent_containers))
|
||||
return
|
||||
|
||||
// Not in a matching personal crate? Ignore.
|
||||
if(!check_personal_crate(AM))
|
||||
return
|
||||
|
||||
var/obj/item/reagent_containers/container = AM
|
||||
var/amount = container.reagents?.get_reagent_amount(initial(reagent_type.id))
|
||||
if(!amount)
|
||||
return
|
||||
sent += amount
|
||||
if(!manifest)
|
||||
return COMSIG_CARGO_SELL_PRIORITY
|
||||
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "reagents", initial(reagent_type.id), "containers"))
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", amount, list(goal_name, "reagents", initial(reagent_type.id), "units"))
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = department_account
|
||||
item.credits = 0
|
||||
item.reason = "Received [amount] units of [initial(reagent_type.name)]."
|
||||
item.zero_is_good = TRUE
|
||||
manifest.line_items += item
|
||||
|
||||
return COMSIG_CARGO_SELL_PRIORITY
|
||||
|
||||
/datum/secondary_goal_progress/random_bulk_reagent/check_complete(datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(sent < needed - REAGENT_GOAL_FORGIVENESS)
|
||||
return
|
||||
|
||||
three_way_reward(manifest, department, department_account, reward, "Secondary goal complete: [needed] units of [initial(reagent_type.name)].")
|
||||
return TRUE
|
||||
@@ -0,0 +1,9 @@
|
||||
/datum/station_goal/secondary/random_bulk_reagent/scichem
|
||||
name = "Random Bulk Chemical"
|
||||
department = "Science"
|
||||
abstract = FALSE
|
||||
|
||||
/datum/station_goal/secondary/random_bulk_reagent/scichem/randomize_params()
|
||||
..()
|
||||
department_account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SCIENCE)
|
||||
report_message = "We're running an experiment with [initial(reagent_type.name)] and need more. Please send us [amount] units of it."
|
||||
@@ -0,0 +1,105 @@
|
||||
/datum/station_goal/secondary/random_ripley
|
||||
name = "Random Ripley"
|
||||
department = "Robotics"
|
||||
progress_type = /datum/secondary_goal_progress/random_ripley
|
||||
should_send_crate = FALSE
|
||||
abstract = FALSE
|
||||
var/list/modules = list()
|
||||
var/static/list/general_modules = list(
|
||||
/obj/item/mecha_parts/mecha_equipment/repair_droid,
|
||||
/obj/item/mecha_parts/mecha_equipment/generator/nuclear,
|
||||
/obj/item/mecha_parts/mecha_equipment/generator,
|
||||
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,
|
||||
/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,
|
||||
/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,
|
||||
/obj/item/mecha_parts/mecha_equipment/thrusters,
|
||||
/obj/item/mecha_parts/mecha_equipment/gravcatapult
|
||||
)
|
||||
var/static/list/engineering_modules = list(
|
||||
/obj/item/mecha_parts/mecha_equipment/cable_layer,
|
||||
/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma,
|
||||
/obj/item/mecha_parts/mecha_equipment/drill,
|
||||
/obj/item/mecha_parts/mecha_equipment/drill/diamonddrill,
|
||||
/obj/item/mecha_parts/mecha_equipment/rcd,
|
||||
/obj/item/mecha_parts/mecha_equipment/mining_scanner,
|
||||
/obj/item/mecha_parts/mecha_equipment/extinguisher
|
||||
)
|
||||
|
||||
/datum/station_goal/secondary/random_ripley/randomize_params()
|
||||
var/obj/item/mecha_parts/general_module = pick(general_modules)
|
||||
modules += general_module
|
||||
var/obj/item/mecha_parts/engineering_module = pick(engineering_modules)
|
||||
modules += engineering_module
|
||||
|
||||
report_message = list("One of our rapid-response teams lost a mech, and needs a replacement Ripley with \a [initial(general_module.name)] and \a [initial(engineering_module.name)].",
|
||||
"You must label the mech properly. Use your ID card on a hand labeller to configure it.")
|
||||
admin_desc = "Ripley with [initial(general_module.name)] and [initial(engineering_module.name)]"
|
||||
|
||||
|
||||
/datum/secondary_goal_progress/random_ripley
|
||||
var/obj/item/food/snacks/food_type
|
||||
var/list/modules
|
||||
var/sent = FALSE
|
||||
|
||||
/datum/secondary_goal_progress/random_ripley/configure(datum/station_goal/secondary/random_ripley/goal)
|
||||
..()
|
||||
modules = goal.modules
|
||||
|
||||
/datum/secondary_goal_progress/random_ripley/Copy()
|
||||
var/datum/secondary_goal_progress/random_ripley/copy = ..()
|
||||
copy.modules = modules
|
||||
copy.sent = sent
|
||||
// These ones aren't really needed in the intended use case, they're
|
||||
// just here in case someone uses this method somewhere else.
|
||||
copy.personal_account = personal_account
|
||||
return copy
|
||||
|
||||
/datum/secondary_goal_progress/random_ripley/update(atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest = null)
|
||||
var/datum/component/label/goal/label = AM.GetComponent(/datum/component/label/goal)
|
||||
// Not labelled for this goal? Ignore.
|
||||
if(!istype(label) || label.label_name != goal_requester)
|
||||
return
|
||||
if(!istype(AM, /obj/mecha/working/ripley))
|
||||
return
|
||||
if(!manifest)
|
||||
return COMSIG_CARGO_SELL_PRIORITY | COMSIG_CARGO_IS_SECURED
|
||||
if(sent)
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "extra mech"))
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", SSeconomy.credits_per_mech, list(goal_name, "extra mech credits"))
|
||||
var/datum/economy/line_item/extra_item = new
|
||||
extra_item.account = SSeconomy.cargo_account
|
||||
extra_item.credits = SSeconomy.credits_per_mech
|
||||
extra_item.reason = "We already got the mech we needed, but we'll take this one at the usual price."
|
||||
manifest.line_items += extra_item
|
||||
send_requests_console_message(extra_item.reason, "Central Command", "Robotics", "Stamped with the Central Command rubber stamp.", null, RQ_NORMALPRIORITY)
|
||||
return COMSIG_CARGO_SELL_PRIORITY | COMSIG_CARGO_IS_SECURED
|
||||
|
||||
var/remaining_needs = modules.Copy()
|
||||
for(var/component in AM)
|
||||
for(var/need in remaining_needs)
|
||||
if(istype(component, need))
|
||||
remaining_needs -= need
|
||||
break
|
||||
// We sell or skip all of these, so we can delete it.
|
||||
qdel(component)
|
||||
if(length(remaining_needs))
|
||||
if(manifest)
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "incorrect mech"))
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", SSeconomy.credits_per_mech, list(goal_name, "incorrect mech credits"))
|
||||
var/datum/economy/line_item/wrong_item = new
|
||||
wrong_item.account = SSeconomy.cargo_account
|
||||
wrong_item.credits = SSeconomy.credits_per_mech
|
||||
wrong_item.reason = "That's not the equipment we needed, but it's still a mech"
|
||||
manifest.line_items += wrong_item
|
||||
send_requests_console_message(wrong_item.reason + ", so we sent the usual amount to your supply account.", "Central Command", "Robotics", "Stamped with the Central Command rubber stamp.", null, RQ_NORMALPRIORITY)
|
||||
return COMSIG_CARGO_SELL_PRIORITY | COMSIG_CARGO_IS_SECURED
|
||||
|
||||
sent = TRUE
|
||||
return COMSIG_CARGO_SELL_PRIORITY | COMSIG_CARGO_IS_SECURED
|
||||
|
||||
/datum/secondary_goal_progress/random_ripley/check_complete(datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(sent)
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "correct mech"))
|
||||
three_way_reward(manifest, "Robotics", GLOB.station_money_database.get_account_by_department(DEPARTMENT_SCIENCE), SSeconomy.credits_per_ripley_goal, "Secondary goal complete: Customized Ripley.")
|
||||
return sent
|
||||
@@ -0,0 +1,12 @@
|
||||
/datum/station_goal/secondary/variety_reagent/scichem
|
||||
name = "Variety of Chemicals"
|
||||
progress_type = /datum/secondary_goal_progress/variety_reagent
|
||||
different_types = 5
|
||||
department = "Science"
|
||||
generic_name_plural = "chemicals"
|
||||
abstract = FALSE
|
||||
|
||||
/datum/station_goal/secondary/variety_reagent/scichem/randomize_params()
|
||||
..()
|
||||
department_account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SCIENCE)
|
||||
report_message = "We're training a drug moose, and need some samples of drugs. Send us at least [amount_per] units each of [different_types] different ones. --Not Steve"
|
||||
@@ -0,0 +1,104 @@
|
||||
/datum/station_goal/secondary
|
||||
name = "Generic Secondary Goal"
|
||||
required_crew = 1
|
||||
/// Admin-only shor description of the goal.
|
||||
var/admin_desc = "No description"
|
||||
/// Assigned department. Should match the values used for requests consoles.
|
||||
var/department = "Unknown"
|
||||
/// The person who requested the goal.
|
||||
var/requester_name
|
||||
/// The money account of the person who requested the goal.
|
||||
var/personal_account
|
||||
/// Should we (still) send a personal crate on the next shipment?
|
||||
var/should_send_crate = TRUE
|
||||
/// Type path of the progress tracker used.
|
||||
var/progress_type = /datum/secondary_goal_progress
|
||||
/// Progress type of this goal.
|
||||
var/datum/secondary_goal_progress/progress
|
||||
/// Tracker that manages the goal progress, permanent and temporary.
|
||||
var/datum/secondary_goal_tracker/tracker
|
||||
/// Abstract goals can't be used directly.
|
||||
var/abstract = TRUE
|
||||
|
||||
/datum/station_goal/secondary/proc/Initialize(requester_name_in, requester_account)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
requester_name = requester_name_in
|
||||
personal_account = requester_account
|
||||
randomize_params()
|
||||
progress = new progress_type
|
||||
progress.configure(src)
|
||||
tracker = new(src, progress)
|
||||
tracker.register(SSshuttle.supply)
|
||||
|
||||
// Override this to randomly configure the goal before generating a progress
|
||||
// tracker.
|
||||
/datum/station_goal/secondary/proc/randomize_params()
|
||||
return
|
||||
|
||||
/datum/station_goal/secondary/send_report(requester, intro_override = FALSE)
|
||||
var/list/message_parts = list()
|
||||
if(intro_override)
|
||||
message_parts += intro_override
|
||||
else
|
||||
message_parts += "Received secondary goal request from [requester] for [department]."
|
||||
message_parts += "Querying master task list...."
|
||||
message_parts += "Suitable task found. Task details:"
|
||||
message_parts += ""
|
||||
message_parts += report_message
|
||||
if(should_send_crate)
|
||||
message_parts += "You must submit this in a locked personal crate. One will be sent to your Cargo department. More can be ordered if needed."
|
||||
send_requests_console_message(message_parts, "Central Command", department, "Stamped with the Central Command rubber stamp.", "Verified by A.L.I.C.E (CentCom AI)", RQ_HIGHPRIORITY)
|
||||
if(department != "Captain's Desk")
|
||||
send_requests_console_message(message_parts, "Central Command", "Captain's Desk", "Stamped with the Central Command rubber stamp.", "Verified by A.L.I.C.E (CentCom AI)", RQ_NORMALPRIORITY)
|
||||
if(department != "Bridge")
|
||||
send_requests_console_message(message_parts, "Central Command", "Bridge", "Stamped with the Central Command rubber stamp.", "Verified by A.L.I.C.E (CentCom AI)", RQ_NORMALPRIORITY)
|
||||
|
||||
/proc/generate_secondary_goal(department, requester = null, mob/user = null)
|
||||
var/list/possible = list()
|
||||
var/list/departments = list()
|
||||
for(var/T in subtypesof(/datum/station_goal/secondary))
|
||||
var/datum/station_goal/secondary/G = T
|
||||
if(!initial(G.abstract) && !departments[initial(G.department)])
|
||||
departments[initial(G.department)] = TRUE
|
||||
if(initial(G.department) != department || initial(G.abstract))
|
||||
continue
|
||||
possible += G
|
||||
|
||||
if(!length(possible))
|
||||
if(user)
|
||||
to_chat(user, "<span class='info'>No goals available for [department]. Goals are currently available for [english_list(departments)].</span>")
|
||||
return
|
||||
|
||||
var/datum/station_goal/secondary/picked = pick(possible)
|
||||
var/datum/station_goal/secondary/built = new picked
|
||||
|
||||
var/requester_name = null
|
||||
var/requester_account = null
|
||||
var/obj/item/card/id/ID = requester
|
||||
if(ID)
|
||||
requester_name = ID.registered_name
|
||||
requester_account = GLOB.station_money_database.find_user_account(ID.associated_account_number)
|
||||
built.Initialize(requester_name, requester_account)
|
||||
if(!ID)
|
||||
built.send_report("CentCom")
|
||||
else
|
||||
built.send_report(ID.assignment ? "[ID.assignment] [ID.registered_name]" : ID.registered_name)
|
||||
SSticker.mode.secondary_goals += built
|
||||
|
||||
/datum/station_goal/secondary/Topic(href, href_list)
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
|
||||
if(href_list["announce"])
|
||||
send_report("CentCom", "A task for [department] has been issued by Central Command:")
|
||||
else if(href_list["remove"])
|
||||
SSticker.mode.secondary_goals -= src
|
||||
qdel(src)
|
||||
usr.client.modify_goals()
|
||||
else if(href_list["mark_complete"])
|
||||
completed = 1
|
||||
usr.client.modify_goals()
|
||||
else if(href_list["reset_progress"])
|
||||
completed = 0
|
||||
tracker.reset()
|
||||
usr.client.modify_goals()
|
||||
@@ -0,0 +1,125 @@
|
||||
/datum/secondary_goal_tracker
|
||||
var/datum/secondary_goal_progress/real_progress
|
||||
var/datum/secondary_goal_progress/temporary_progress
|
||||
var/datum/station_goal/secondary/goal
|
||||
|
||||
/datum/secondary_goal_tracker/New(datum/station_goal/secondary/goal_in, datum/secondary_goal_progress/progress)
|
||||
goal = goal_in
|
||||
real_progress = progress
|
||||
temporary_progress = progress.Copy()
|
||||
|
||||
/datum/secondary_goal_tracker/proc/reset()
|
||||
real_progress = new real_progress.type(goal)
|
||||
temporary_progress = real_progress.Copy()
|
||||
|
||||
/datum/secondary_goal_tracker/proc/register(shuttle)
|
||||
RegisterSignal(shuttle, COMSIG_CARGO_BEGIN_SCAN, PROC_REF(reset_tempporary_progress))
|
||||
RegisterSignal(shuttle, COMSIG_CARGO_BEGIN_SELL, PROC_REF(reset_tempporary_progress))
|
||||
RegisterSignal(shuttle, COMSIG_CARGO_CHECK_SELL, PROC_REF(check_for_progress))
|
||||
RegisterSignal(shuttle, COMSIG_CARGO_DO_PRIORITY_SELL, PROC_REF(update_progress))
|
||||
RegisterSignal(shuttle, COMSIG_CARGO_SEND_ERROR, PROC_REF(update_progress))
|
||||
RegisterSignal(shuttle, COMSIG_CARGO_END_SELL, PROC_REF(check_for_completion))
|
||||
|
||||
/datum/secondary_goal_tracker/proc/unregister(shuttle)
|
||||
UnregisterSignal(shuttle, COMSIG_CARGO_BEGIN_SCAN)
|
||||
UnregisterSignal(shuttle, COMSIG_CARGO_BEGIN_SELL)
|
||||
UnregisterSignal(shuttle, COMSIG_CARGO_CHECK_SELL)
|
||||
UnregisterSignal(shuttle, COMSIG_CARGO_DO_PRIORITY_SELL)
|
||||
UnregisterSignal(shuttle, COMSIG_CARGO_SEND_ERROR)
|
||||
UnregisterSignal(shuttle, COMSIG_CARGO_END_SELL)
|
||||
|
||||
// Resets the temporary porgress to match the real progress.
|
||||
/datum/secondary_goal_tracker/proc/reset_tempporary_progress(obj/docking_port/mobile/supply/shuttle)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_BEGIN_SCAN, COMSIG_CARGO_BEGIN_SELL
|
||||
temporary_progress = real_progress.Copy()
|
||||
real_progress.start_shipment()
|
||||
|
||||
// Checks for temporary goal progress when selling a cargo item.
|
||||
/datum/secondary_goal_tracker/proc/check_for_progress(obj/docking_port/mobile/supply/shuttle, atom/movable/thing)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_CHECK_SELL
|
||||
return temporary_progress.update(thing)
|
||||
|
||||
// Update real goal progress when selling a cargo item.
|
||||
/datum/secondary_goal_tracker/proc/update_progress(obj/docking_port/mobile/supply/shuttle, atom/movable/thing, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_DO_PRIORITY_SELL, COMSIG_CARGO_DO_SELL, COMSIG_CARGO_SEND_ERROR
|
||||
. = real_progress.update(thing, manifest)
|
||||
if(. & COMSIG_CARGO_SELL_PRIORITY)
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal.name, "items sold"))
|
||||
|
||||
/datum/secondary_goal_tracker/proc/check_for_completion(obj/docking_port/mobile/supply/shuttle, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_END_SELL
|
||||
if(real_progress.check_complete(manifest))
|
||||
goal.completed = TRUE
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal.name, "times completed"))
|
||||
unregister(SSshuttle.supply)
|
||||
|
||||
|
||||
/datum/secondary_goal_progress
|
||||
var/personal_account
|
||||
var/goal_requester
|
||||
var/goal_name
|
||||
|
||||
/datum/secondary_goal_progress/proc/configure(datum/station_goal/secondary/goal)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
goal_requester = goal.requester_name
|
||||
personal_account = goal.personal_account
|
||||
goal_name = goal.name
|
||||
|
||||
/datum/secondary_goal_progress/proc/Copy()
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
var/datum/secondary_goal_progress/copy = new type
|
||||
copy.personal_account = personal_account
|
||||
copy.goal_requester = goal_requester
|
||||
copy.goal_name = goal_name
|
||||
return copy
|
||||
|
||||
// Override for custom shipment start behavior
|
||||
// (e.g. ampount-per-shipment tracking)
|
||||
// Only called on the real progress tracker.
|
||||
/datum/secondary_goal_progress/proc/start_shipment()
|
||||
return
|
||||
|
||||
// Check the item to see if it belongs to this goal.
|
||||
// Update the manifest accodingly, if provided.
|
||||
// Return values from code/__DEFINES/supply_defines.dm.
|
||||
// Use COMSIG_CARGO_SELL_PRIORITY, not COMSIG_CARGO_SELL_NORMAL.
|
||||
/datum/secondary_goal_progress/proc/update(atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest = null)
|
||||
return
|
||||
|
||||
// Check to see if this goal has been completed.
|
||||
// Update the manifest accordingly.
|
||||
// Returns whether the goal was completed.
|
||||
/datum/secondary_goal_progress/proc/check_complete(datum/economy/cargo_shuttle_manifest/manifest)
|
||||
return FALSE
|
||||
|
||||
/datum/secondary_goal_progress/proc/check_personal_crate(atom/movable/AM)
|
||||
var/obj/structure/closet/crate/secure/personal/PC = get_atom_on_turf(AM, /obj/structure/closet/crate/secure/personal)
|
||||
if(!istype(PC))
|
||||
return FALSE
|
||||
if(goal_requester && PC.registered_name != goal_requester)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/secondary_goal_progress/proc/three_way_reward(datum/economy/cargo_shuttle_manifest/manifest, department, department_account, reward, message)
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "payments made"))
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", reward, list(goal_name, "credits"))
|
||||
|
||||
var/datum/economy/line_item/supply_item = new
|
||||
supply_item.account = SSeconomy.cargo_account
|
||||
supply_item.credits = reward / 3
|
||||
supply_item.reason = message
|
||||
manifest.line_items += supply_item
|
||||
|
||||
var/datum/economy/line_item/department_item = new
|
||||
department_item.account = department_account
|
||||
department_item.credits = reward / 3
|
||||
department_item.reason = message
|
||||
manifest.line_items += department_item
|
||||
|
||||
var/datum/economy/line_item/personal_item = new
|
||||
personal_item.account = personal_account || department_account
|
||||
personal_item.credits = reward / 3
|
||||
personal_item.reason = message
|
||||
manifest.line_items += personal_item
|
||||
|
||||
send_requests_console_message(message, "Central Command", department, "Stamped with the Central Command rubber stamp.", null, RQ_NORMALPRIORITY)
|
||||
@@ -0,0 +1,138 @@
|
||||
/datum/station_goal/secondary/variety_reagent
|
||||
name = "Variety of Reagent"
|
||||
progress_type = /datum/secondary_goal_progress/variety_reagent
|
||||
var/different_types = 10
|
||||
var/amount_per = 50
|
||||
var/department_account
|
||||
var/generic_name_plural = "reagents"
|
||||
var/reward
|
||||
|
||||
/datum/station_goal/secondary/variety_reagent/Initialize(requester_account)
|
||||
reward = SSeconomy.credits_per_variety_reagent_goal
|
||||
..()
|
||||
admin_desc = "[amount_per] units of [different_types] [generic_name_plural]"
|
||||
|
||||
|
||||
/datum/secondary_goal_progress/variety_reagent
|
||||
var/list/reagents_sent = list()
|
||||
var/department
|
||||
var/needed
|
||||
var/amount_per
|
||||
var/department_account
|
||||
var/reward
|
||||
var/generic_name_plural
|
||||
|
||||
/datum/secondary_goal_progress/variety_reagent/configure(datum/station_goal/secondary/variety_reagent/goal)
|
||||
..()
|
||||
department = goal.department
|
||||
needed = goal.different_types
|
||||
amount_per = goal.amount_per
|
||||
department_account = goal.department_account
|
||||
reward = goal.reward
|
||||
generic_name_plural = goal.generic_name_plural
|
||||
|
||||
/datum/secondary_goal_progress/variety_reagent/Copy()
|
||||
var/datum/secondary_goal_progress/variety_reagent/copy = ..()
|
||||
copy.reagents_sent = reagents_sent.Copy()
|
||||
copy.department = department
|
||||
copy.needed = needed
|
||||
copy.amount_per = amount_per
|
||||
// These ones aren't really needed in the intended use case, they're
|
||||
// just here in case someone uses this method somewhere else.
|
||||
copy.department_account = department_account
|
||||
copy.reward = reward
|
||||
copy.generic_name_plural = generic_name_plural
|
||||
return copy
|
||||
|
||||
/datum/secondary_goal_progress/variety_reagent/update(atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest = null)
|
||||
// Not a reagent container? Ignore.
|
||||
if(!istype(AM, /obj/item/reagent_containers))
|
||||
return
|
||||
|
||||
// Not in a matching personal crate? Ignore.
|
||||
if(!check_personal_crate(AM))
|
||||
return
|
||||
|
||||
var/obj/item/reagent_containers/container = AM
|
||||
// No reagents? Ignore.
|
||||
if(!container.reagents.reagent_list)
|
||||
return
|
||||
|
||||
var/datum/reagent/reagent = container.reagents?.get_master_reagent()
|
||||
|
||||
// Make sure it's for our department.
|
||||
if(!reagent || reagent.goal_department != department)
|
||||
return
|
||||
|
||||
// Isolated reagents only, please.
|
||||
if(length(container.reagents.reagent_list) != 1)
|
||||
if(!manifest)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "mixed reagents"))
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = department_account
|
||||
item.credits = 0
|
||||
item.reason = "That [reagent.name] seems to be mixed with something else. Send it by itself, please."
|
||||
manifest.line_items += item
|
||||
send_requests_console_message(item.reason, "Central Command", department, "Stamped with the Central Command rubber stamp.", null, RQ_NORMALPRIORITY)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
|
||||
// No easy reagents allowed.
|
||||
if(reagent.goal_difficulty == REAGENT_GOAL_SKIP)
|
||||
if(!manifest)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "boring reagents"))
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = department_account
|
||||
item.credits = 0
|
||||
item.reason = "We don't need [reagent.name]. Send something better."
|
||||
manifest.line_items += item
|
||||
send_requests_console_message(item.reason, "Central Command", department, "Stamped with the Central Command rubber stamp.", null, RQ_NORMALPRIORITY)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
|
||||
// Make sure there's enough.
|
||||
if(reagent.volume < amount_per - REAGENT_GOAL_FORGIVENESS)
|
||||
if(!manifest)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "insufficient quantity of reagents"))
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = department_account
|
||||
item.credits = 0
|
||||
item.reason = "That batch of [reagent.name] was too small; send at least [amount_per] units."
|
||||
manifest.line_items += item
|
||||
send_requests_console_message(item.reason, "Central Command", department, "Stamped with the Central Command rubber stamp.", null, RQ_NORMALPRIORITY)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
|
||||
if(reagents_sent[reagent.id])
|
||||
if(!manifest)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "repeat reagents"))
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = department_account
|
||||
item.credits = 0
|
||||
item.reason = "You already sent us [reagent.name]."
|
||||
manifest.line_items += item
|
||||
send_requests_console_message(item.reason, "Central Command", department, "Stamped with the Central Command rubber stamp.", null, RQ_NORMALPRIORITY)
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
|
||||
reagents_sent[reagent.id] = TRUE
|
||||
|
||||
if(!manifest)
|
||||
return COMSIG_CARGO_SELL_PRIORITY
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "valid reagents"))
|
||||
SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "reagents", reagent.id))
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = department_account
|
||||
item.credits = 0
|
||||
item.reason = "Received [initial(reagent.name)]."
|
||||
item.zero_is_good = TRUE
|
||||
manifest.line_items += item
|
||||
send_requests_console_message(item.reason, "Central Command", department, "Stamped with the Central Command rubber stamp.", null, RQ_NORMALPRIORITY)
|
||||
return COMSIG_CARGO_SELL_PRIORITY
|
||||
|
||||
/datum/secondary_goal_progress/variety_reagent/check_complete(datum/economy/cargo_shuttle_manifest/manifest)
|
||||
if(length(reagents_sent) < needed)
|
||||
return
|
||||
|
||||
three_way_reward(manifest, department, department_account, reward, "Secondary goal complete: [needed] different [generic_name_plural].")
|
||||
return TRUE
|
||||
@@ -46,4 +46,6 @@
|
||||
on_report()
|
||||
send_report()
|
||||
else if(href_list["remove"])
|
||||
SSticker.mode.station_goals -= src
|
||||
qdel(src)
|
||||
usr.client.modify_goals()
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/datum/station_goal/clear_task_backlog
|
||||
name = "Clear Task Backlog"
|
||||
var/goal = 10
|
||||
|
||||
/datum/station_goal/clear_task_backlog/get_report()
|
||||
return {"<b>Clear Task Backlog</b><br>
|
||||
The last few weeks have been extremely profitable for Nanotrasen, but
|
||||
we've got so many things to do that we're getting a bit overwhelmed.<br>
|
||||
<br>
|
||||
We need you to pick up the slack. Use the Request Consoles on your
|
||||
station to get Secondary Goals, and complete at least [goal] of them.
|
||||
<br>
|
||||
<br>
|
||||
-Nanotrasen Accounting"}
|
||||
|
||||
/datum/station_goal/clear_task_backlog/check_completion()
|
||||
if(..())
|
||||
return TRUE
|
||||
var/count = 0
|
||||
for(var/datum/station_goal/secondary/S in SSticker.mode.secondary_goals)
|
||||
if(S.completed)
|
||||
count++
|
||||
return count >= goal
|
||||
@@ -441,8 +441,8 @@
|
||||
/obj/machinery/computer/supplycomp/proc/move_shuttle(mob/user)
|
||||
if(is_public) // Public consoles cant move the shuttle. Dont allow exploiters.
|
||||
return
|
||||
if(SSshuttle.supply.canMove())
|
||||
to_chat(user, "<span class='warning'>For safety reasons the automated supply shuttle cannot transport live organisms, undelivered mail, classified nuclear weaponry or homing beacons.</span>")
|
||||
if(!SSshuttle.supply.canMove())
|
||||
to_chat(user, "<span class='warning'>For safety reasons, the automated supply shuttle cannot transport [SSshuttle.supply.blocking_item].</span>")
|
||||
else if(SSshuttle.supply.getDockedId() == "supply_home")
|
||||
SSshuttle.toggleShuttle("supply", "supply_home", "supply_away", 1)
|
||||
investigate_log("| [key_name(user)] has sent the supply shuttle away. Shuttle contents: [SSeconomy.sold_atoms]", "cargo")
|
||||
|
||||
@@ -82,6 +82,18 @@
|
||||
contains = list(/obj/item/stack/tile/carpet/twenty)
|
||||
containername = "carpet crate"
|
||||
|
||||
/datum/supply_packs/misc/personal_crates
|
||||
name = "Personal Crates Pack"
|
||||
cost = 100
|
||||
containertype = /obj/structure/largecrate
|
||||
contains = list(/obj/structure/closet/crate/secure/personal,
|
||||
/obj/structure/closet/crate/secure/personal,
|
||||
/obj/structure/closet/crate/secure/personal,
|
||||
/obj/structure/closet/crate/secure/personal,
|
||||
/obj/structure/closet/crate/secure/personal,
|
||||
/obj/structure/closet/crate/secure/personal)
|
||||
containername = "personal crates pack"
|
||||
|
||||
|
||||
///////////// Paper Work
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
GLOBAL_LIST_INIT(virology_goals, list(new /datum/virology_goal/property_symptom, new /datum/virology_goal/virus, new /datum/virology_goal/virus/stealth))
|
||||
GLOBAL_LIST_EMPTY(virology_goals)
|
||||
GLOBAL_LIST_EMPTY(archived_virology_goals)
|
||||
#define MAX_LOOPS 30
|
||||
|
||||
@@ -10,10 +10,62 @@ GLOBAL_LIST_EMPTY(archived_virology_goals)
|
||||
var/delivery_goal = 15
|
||||
var/completed = FALSE
|
||||
|
||||
/datum/virology_goal/proc/register()
|
||||
RegisterSignal(SSshuttle.supply, COMSIG_CARGO_CHECK_SELL, PROC_REF(check_for_virus))
|
||||
RegisterSignal(SSshuttle.supply, COMSIG_CARGO_DO_PRIORITY_SELL, PROC_REF(sell_virus))
|
||||
RegisterSignal(SSshuttle.supply, COMSIG_CARGO_SEND_ERROR, PROC_REF(complain_about_virus))
|
||||
|
||||
/datum/virology_goal/proc/unregister()
|
||||
UnregisterSignal(SSshuttle.supply, COMSIG_CARGO_CHECK_SELL)
|
||||
UnregisterSignal(SSshuttle.supply, COMSIG_CARGO_DO_PRIORITY_SELL)
|
||||
UnregisterSignal(SSshuttle.supply, COMSIG_CARGO_SEND_ERROR)
|
||||
|
||||
/datum/virology_goal/proc/check_for_virus(shuttle, atom/movable/thing)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_CHECK_SELL
|
||||
if(istype(thing, /obj/item/reagent_containers))
|
||||
var/obj/item/reagent_containers/C = thing
|
||||
if(check_viruses(C.reagents.reagent_list))
|
||||
return COMSIG_CARGO_SELL_PRIORITY
|
||||
return COMSIG_CARGO_SELL_WRONG
|
||||
|
||||
/datum/virology_goal/proc/sell_virus(shuttle, atom/movable/thing, datum/economy/cargo_shuttle_manifest/manifest, complain = FALSE)
|
||||
SIGNAL_HANDLER // COMSIG_CARGO_DO_PRIORITY_SELL
|
||||
// Ignore everything after we're done.
|
||||
if(completed)
|
||||
return
|
||||
|
||||
// Look for reagent containers, those in vial lockboxes included
|
||||
if(!istype(thing, /obj/item/reagent_containers))
|
||||
return
|
||||
|
||||
var/obj/item/reagent_containers/C = thing
|
||||
if(!length(C.reagents?.reagent_list))
|
||||
// Nothing to look at.
|
||||
return
|
||||
|
||||
check_viruses(C.reagents.reagent_list, manifest, complain, complain)
|
||||
|
||||
if(!completed)
|
||||
// Didn't finish yet.
|
||||
return
|
||||
|
||||
// Report and give credits for the goal.
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL)
|
||||
item.credits = SSeconomy.credits_per_virology_goal
|
||||
item.reason = "[name] completed."
|
||||
manifest.line_items += item
|
||||
|
||||
// Stop listening.
|
||||
unregister()
|
||||
|
||||
/datum/virology_goal/proc/complain_about_virus(shuttle, atom/movable/thing, datum/economy/cargo_shuttle_manifest/manifest)
|
||||
sell_virus(shuttle, thing, manifest, TRUE)
|
||||
|
||||
/datum/virology_goal/proc/get_report()
|
||||
return "Complete this goal."
|
||||
|
||||
/datum/virology_goal/proc/check_completion(list/reagent_list)
|
||||
/datum/virology_goal/proc/check_viruses(list/reagent_list)
|
||||
check_total_virology_goals_completion()
|
||||
return TRUE
|
||||
|
||||
@@ -45,12 +97,13 @@ GLOBAL_LIST_EMPTY(archived_virology_goals)
|
||||
|
||||
/datum/virology_goal/property_symptom
|
||||
name = "Symptom With Properties Viral Sample Request"
|
||||
var/goal_symptom //Type path of the symptom
|
||||
var/datum/symptom/goal_symptom //Type path of the symptom
|
||||
var/goal_symptom_name
|
||||
var/goal_property
|
||||
var/goal_property_value
|
||||
|
||||
/datum/virology_goal/property_symptom/New()
|
||||
register()
|
||||
var/times_looped = 0 //The chance for this to make a infinite loop that lags the server is astronomically small but its still a chance
|
||||
do
|
||||
var/type = pick(subtypesof(/datum/symptom))
|
||||
@@ -87,7 +140,7 @@ GLOBAL_LIST_EMPTY(archived_virology_goals)
|
||||
return_text += "Viral samples with a specific symptom and properties are required to study the effects of this symptom in various conditions. We need you to deliver [delivery_goal]u of viral samples containing the [goal_symptom_name] symptom and with the [goal_property] property at level [goal_property_value] along with 3 other symptoms to us through the cargo shuttle."
|
||||
return return_text
|
||||
|
||||
/datum/virology_goal/property_symptom/check_completion(list/datum/reagent/reagent_list)
|
||||
/datum/virology_goal/property_symptom/check_viruses(list/datum/reagent/reagent_list, datum/economy/cargo_shuttle_manifest/manifest, simulate = TRUE, complain = FALSE)
|
||||
. = FALSE
|
||||
var/datum/reagent/blood/BL = locate() in reagent_list
|
||||
if(!BL)
|
||||
@@ -95,27 +148,54 @@ GLOBAL_LIST_EMPTY(archived_virology_goals)
|
||||
if(!BL.data || !BL.data["viruses"])
|
||||
return
|
||||
for(var/datum/disease/advance/D in BL.data["viruses"])
|
||||
if(length(D.symptoms) < 4) //We want 3 other symptoms alongside the requested one
|
||||
//We want 3 other symptoms alongside the requested one
|
||||
var/required_symptoms = 4
|
||||
if(length(D.symptoms) < required_symptoms)
|
||||
if(simulate || !manifest || !complain)
|
||||
continue
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL)
|
||||
item.credits = 0
|
||||
item.reason = "Virus [D.name] has too few symptoms for [name] ([length(D.symptoms)] is less than [required_symptoms])."
|
||||
manifest.line_items += item
|
||||
continue
|
||||
var/properties = D.GenerateProperties()
|
||||
var/property = properties[goal_property]
|
||||
if(property != goal_property_value)
|
||||
if(simulate || !manifest || !complain)
|
||||
continue
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL)
|
||||
item.credits = 0
|
||||
item.reason = "Virus [D.name] has the wrong [goal_property] for [name] ([property] is not [goal_property_value])."
|
||||
manifest.line_items += item
|
||||
continue
|
||||
var/found_goal_symptom = FALSE
|
||||
for(var/datum/symptom/S in D.symptoms)
|
||||
if(!goal_symptom)
|
||||
return
|
||||
if(S.type != goal_symptom)
|
||||
continue
|
||||
found_goal_symptom = TRUE
|
||||
break
|
||||
if(!found_goal_symptom)
|
||||
return
|
||||
delivered_amount += BL.volume
|
||||
if(delivered_amount >= delivery_goal)
|
||||
completed = TRUE
|
||||
check_total_virology_goals_completion()
|
||||
return TRUE
|
||||
if(simulate)
|
||||
return TRUE
|
||||
if(manifest)
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL)
|
||||
item.credits = 0
|
||||
item.zero_is_good = TRUE
|
||||
item.reason = "Received [BL.volume] units of usable virus [D.name] for [name]."
|
||||
manifest.line_items += item
|
||||
delivered_amount += BL.volume
|
||||
if(delivered_amount >= delivery_goal)
|
||||
completed = TRUE
|
||||
check_total_virology_goals_completion()
|
||||
return TRUE
|
||||
if(simulate || !manifest || !complain)
|
||||
continue
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL)
|
||||
item.credits = 0
|
||||
item.reason = "Virus [D.name] is missing the required symptom [initial(goal_symptom.name)] for [name]."
|
||||
manifest.line_items += item
|
||||
|
||||
/datum/virology_goal/virus
|
||||
name = "Specific Viral Sample Request (Non-Stealth)"
|
||||
@@ -123,6 +203,7 @@ GLOBAL_LIST_EMPTY(archived_virology_goals)
|
||||
var/symptoms_amount = 5
|
||||
|
||||
/datum/virology_goal/virus/New()
|
||||
register()
|
||||
var/times_looped = 0 //The chance for this to make a infinite loop that lags the server is astronomically small but its still a chance
|
||||
do
|
||||
goal_symptoms = list()
|
||||
@@ -165,7 +246,7 @@ GLOBAL_LIST_EMPTY(archived_virology_goals)
|
||||
msg += initial(S.name)
|
||||
return english_list(msg, ", ")
|
||||
|
||||
/datum/virology_goal/virus/check_completion(list/datum/reagent/reagent_list)
|
||||
/datum/virology_goal/virus/check_viruses(list/datum/reagent/reagent_list, datum/economy/cargo_shuttle_manifest/manifest, simulate = TRUE, complain = FALSE)
|
||||
. = FALSE
|
||||
var/datum/reagent/blood/BL = locate() in reagent_list
|
||||
if(!BL)
|
||||
@@ -173,12 +254,35 @@ GLOBAL_LIST_EMPTY(archived_virology_goals)
|
||||
if(!BL.data || !BL.data["viruses"])
|
||||
return
|
||||
for(var/datum/disease/advance/D in BL.data["viruses"])
|
||||
if(length(D.symptoms) != length(goal_symptoms)) //This is here so viruses with extra symptoms dont get approved
|
||||
return
|
||||
if(length(D.symptoms) != length(goal_symptoms))
|
||||
if(simulate || !manifest || !complain)
|
||||
continue
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL)
|
||||
item.credits = 0
|
||||
item.reason = "Virus [D.name] has the wrong number of symptoms for [name] ([length(D.symptoms)] is not [length(goal_symptoms)])."
|
||||
manifest.line_items += item
|
||||
continue
|
||||
for(var/S in goal_symptoms)
|
||||
var/datum/symptom/SY = locate(S) in D.symptoms
|
||||
if(!SY)
|
||||
if(simulate || !manifest || !complain)
|
||||
continue
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL)
|
||||
item.credits = 0
|
||||
item.reason = "Virus [D.name] is missing symptom [initial(SY.name)] for [name]."
|
||||
manifest.line_items += item
|
||||
return
|
||||
if(simulate)
|
||||
return TRUE
|
||||
if(manifest)
|
||||
var/datum/economy/line_item/item = new
|
||||
item.account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_MEDICAL)
|
||||
item.credits = 0
|
||||
item.zero_is_good = TRUE
|
||||
item.reason = "Received [BL.volume] units of usable virus [D.name] for [name]."
|
||||
manifest.line_items += item
|
||||
delivered_amount += BL.volume
|
||||
if(delivered_amount >= delivery_goal)
|
||||
completed = TRUE
|
||||
|
||||
Reference in New Issue
Block a user