mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 21:48:21 +01:00
Merge pull request #12198 from Fox-McCloud/personal-crafting-update
Updates/Refactors Personal Crafting
This commit is contained in:
@@ -1,11 +1,28 @@
|
||||
//tablecrafting defines
|
||||
#define CAT_NONE ""
|
||||
#define CAT_WEAPON "Weaponry"
|
||||
#define CAT_WEAPONRY "Weaponry"
|
||||
#define CAT_WEAPON "Weapons"
|
||||
#define CAT_AMMO "Ammunition"
|
||||
#define CAT_ROBOT "Robots"
|
||||
#define CAT_FOOD "Food"
|
||||
#define CAT_MISC "Misc"
|
||||
#define CAT_PRIMAL "Tribal"
|
||||
#define CAT_CLOTHING "Clothing"
|
||||
#define CAT_FOOD "Foods"
|
||||
#define CAT_BREAD "Breads"
|
||||
#define CAT_BURGER "Burgers"
|
||||
#define CAT_CAKE "Cakes"
|
||||
#define CAT_EGG "Egg-Based Food"
|
||||
#define CAT_MEAT "Meats"
|
||||
#define CAT_SUSHI "Sushi"
|
||||
#define CAT_MISCFOOD "Misc. Food"
|
||||
#define CAT_PASTRY "Pastries"
|
||||
#define CAT_PIE "Pies"
|
||||
#define CAT_PIZZA "Pizzas"
|
||||
#define CAT_SALAD "Salads"
|
||||
#define CAT_SANDWICH "Sandwiches"
|
||||
#define CAT_SOUP "Soups"
|
||||
#define CAT_SPAGHETTI "Spaghettis"
|
||||
#define CAT_ICE "Frozen"
|
||||
|
||||
#define RECIPE_MICROWAVE "Microwave"
|
||||
#define RECIPE_OVEN "Oven"
|
||||
|
||||
@@ -46,11 +46,7 @@
|
||||
if(IS_WHITELISTED in S.species_traits)
|
||||
GLOB.whitelisted_species += S.name
|
||||
|
||||
for(var/D in subtypesof(/datum/crafting_recipe))
|
||||
var/datum/crafting_recipe/R = D
|
||||
if(!initial(R.roundstart_enabled))
|
||||
continue
|
||||
GLOB.crafting_recipes += new R
|
||||
init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes)
|
||||
|
||||
//Pipe list building
|
||||
init_subtypes(/datum/pipes, GLOB.construction_pipe_list)
|
||||
|
||||
@@ -80,6 +80,8 @@
|
||||
//zealot_master is a reference to the mob that converted them into a zealot (for ease of investigation and such)
|
||||
var/mob/living/carbon/human/zealot_master = null
|
||||
|
||||
var/list/learned_recipes //List of learned recipe TYPES.
|
||||
|
||||
/datum/mind/New(new_key)
|
||||
key = new_key
|
||||
soulOwner = src
|
||||
|
||||
@@ -145,7 +145,8 @@
|
||||
/obj/item/stack/packageWrap = 8,
|
||||
/obj/item/pipe = 2)
|
||||
time = 300
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/obj/item/pneumatic_cannon/proc/updateTank(obj/item/tank/thetank, removing = 0, mob/living/carbon/human/user)
|
||||
if(removing)
|
||||
|
||||
+100
-26
@@ -1,7 +1,26 @@
|
||||
/datum/personal_crafting
|
||||
var/busy
|
||||
var/viewing_category = 1 //typical powergamer starting on the Weapons tab
|
||||
var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_CLOTHING,CAT_MISC,CAT_PRIMAL)
|
||||
var/viewing_subcategory = 1
|
||||
var/list/categories = list(
|
||||
CAT_WEAPONRY,
|
||||
CAT_ROBOT,
|
||||
CAT_MISC,
|
||||
CAT_PRIMAL,
|
||||
CAT_FOOD,
|
||||
CAT_CLOTHING)
|
||||
var/list/subcategories = list(
|
||||
list( //Weapon subcategories
|
||||
CAT_WEAPON,
|
||||
CAT_AMMO),
|
||||
CAT_NONE, //Robot subcategories
|
||||
CAT_NONE, //Misc subcategories
|
||||
CAT_NONE, //Tribal subcategories
|
||||
list( //Food subcategories
|
||||
CAT_CAKE,
|
||||
CAT_SUSHI,
|
||||
CAT_SANDWICH),
|
||||
CAT_CLOTHING) //Clothing subcategories
|
||||
var/display_craftable_only = FALSE
|
||||
var/display_compact = TRUE
|
||||
|
||||
@@ -22,11 +41,14 @@
|
||||
|
||||
|
||||
/datum/personal_crafting/proc/check_contents(datum/crafting_recipe/R, list/contents)
|
||||
contents = contents["other"]
|
||||
main_loop:
|
||||
for(var/A in R.reqs)
|
||||
var/needed_amount = R.reqs[A]
|
||||
for(var/B in contents)
|
||||
if(ispath(B, A))
|
||||
if (R.blacklist.Find(B))
|
||||
continue
|
||||
if(contents[B] >= R.reqs[A])
|
||||
continue main_loop
|
||||
else
|
||||
@@ -56,45 +78,47 @@
|
||||
if(AM.flags_2 & HOLOGRAM_2)
|
||||
continue
|
||||
. += AM
|
||||
for(var/slot in list(slot_r_store, slot_l_store))
|
||||
. += user.get_item_by_slot(slot)
|
||||
|
||||
|
||||
/datum/personal_crafting/proc/get_surroundings(mob/user)
|
||||
. = list()
|
||||
.["other"] = list()
|
||||
for(var/obj/item/I in get_environment(user))
|
||||
if(I.flags_2 & HOLOGRAM_2)
|
||||
continue
|
||||
if(istype(I, /obj/item/stack))
|
||||
var/obj/item/stack/S = I
|
||||
.[I.type] += S.amount
|
||||
.["other"][I.type] += S.amount
|
||||
else
|
||||
if(istype(I, /obj/item/reagent_containers))
|
||||
var/obj/item/reagent_containers/RC = I
|
||||
if(RC.container_type & OPENCONTAINER)
|
||||
if(RC.is_drainable())
|
||||
for(var/datum/reagent/A in RC.reagents.reagent_list)
|
||||
.[A.type] += A.volume
|
||||
.[I.type] += 1
|
||||
.["other"][A.type] += A.volume
|
||||
.["other"][I.type] += 1
|
||||
|
||||
/datum/personal_crafting/proc/check_tools(mob/user, datum/crafting_recipe/R, list/contents)
|
||||
if(!R.tools.len)
|
||||
return 1
|
||||
return TRUE
|
||||
var/list/possible_tools = list()
|
||||
for(var/obj/item/I in user.contents)
|
||||
if(istype(I, /obj/item/storage))
|
||||
for(var/obj/item/SI in I.contents)
|
||||
possible_tools += SI.type
|
||||
possible_tools += I.type
|
||||
possible_tools += contents
|
||||
possible_tools |= contents["other"]
|
||||
|
||||
main_loop:
|
||||
for(var/A in R.tools)
|
||||
for(var/I in possible_tools)
|
||||
if(ispath(I,A))
|
||||
continue main_loop
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/personal_crafting/proc/construct_item(mob/user, datum/crafting_recipe/R)
|
||||
for(var/A in R.parts)
|
||||
var/list/contents = get_surroundings(user)
|
||||
var/send_feedback = 1
|
||||
if(check_contents(R, contents))
|
||||
@@ -108,6 +132,8 @@
|
||||
var/list/parts = del_reqs(R, user)
|
||||
var/atom/movable/I = new R.result (get_turf(user.loc))
|
||||
I.CheckParts(parts, R)
|
||||
if(isitem(I))
|
||||
user.put_in_hands(I)
|
||||
if(send_feedback)
|
||||
feedback_add_details("object_crafted","[I.type]")
|
||||
return 0
|
||||
@@ -173,6 +199,7 @@
|
||||
RGNT.volume += RG.volume
|
||||
RGNT.data += RG.data
|
||||
qdel(RG)
|
||||
RC.on_reagent_change()
|
||||
else
|
||||
surroundings -= RC
|
||||
else if(ispath(A, /obj/item/stack))
|
||||
@@ -195,7 +222,7 @@
|
||||
else
|
||||
data = S.amount
|
||||
S = locate(S.type) in Deletion
|
||||
S.amount += data
|
||||
S.add(data)
|
||||
surroundings -= S
|
||||
else
|
||||
var/atom/movable/I
|
||||
@@ -241,11 +268,19 @@
|
||||
|
||||
/datum/personal_crafting/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
var/list/subs = list()
|
||||
var/cur_subcategory = CAT_NONE
|
||||
var/cur_category = categories[viewing_category]
|
||||
if(islist(subcategories[viewing_category]))
|
||||
subs = subcategories[viewing_category]
|
||||
cur_subcategory = subs[viewing_subcategory]
|
||||
data["busy"] = busy
|
||||
data["prev_cat"] = categories[prev_cat()]
|
||||
data["prev_subcat"] = subs[prev_subcat()]
|
||||
data["category"] = cur_category
|
||||
data["subcategory"] = cur_subcategory
|
||||
data["next_cat"] = categories[next_cat()]
|
||||
data["next_subcat"] = subs[next_subcat()]
|
||||
data["display_craftable_only"] = display_craftable_only
|
||||
data["display_compact"] = display_compact
|
||||
|
||||
@@ -254,7 +289,11 @@
|
||||
var/list/cant_craft = list()
|
||||
for(var/rec in GLOB.crafting_recipes)
|
||||
var/datum/crafting_recipe/R = rec
|
||||
if(R.category != cur_category)
|
||||
|
||||
if(!R.always_availible && !(R.type in user?.mind?.learned_recipes)) //User doesn't actually know how to make this.
|
||||
continue
|
||||
|
||||
if((R.category != cur_category) || (R.subcategory != cur_subcategory))
|
||||
continue
|
||||
if(check_contents(R, surroundings))
|
||||
can_craft += list(build_recipe_data(R))
|
||||
@@ -269,41 +308,54 @@
|
||||
return
|
||||
|
||||
if(href_list["make"])
|
||||
var/datum/crafting_recipe/TR = locate(href_list["make"])
|
||||
busy = 1
|
||||
var/datum/crafting_recipe/TR = locate(href_list["make"]) in GLOB.crafting_recipes
|
||||
busy = TRUE
|
||||
SSnanoui.update_uis(src)
|
||||
var/fail_msg = construct_item(usr, TR)
|
||||
if(!fail_msg)
|
||||
to_chat(usr, "<span class='notice'>[TR.name] constructed.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class ='warning'>Construction failed[fail_msg]</span>")
|
||||
busy = 0
|
||||
busy = FALSE
|
||||
SSnanoui.update_uis(src)
|
||||
if(href_list["forwardCat"])
|
||||
viewing_category = next_cat()
|
||||
to_chat(usr, "<span class='notice'>Category is now [categories[viewing_category]].</span>")
|
||||
viewing_category = next_cat(FALSE)
|
||||
. = TRUE
|
||||
if(href_list["backwardCat"])
|
||||
viewing_category = prev_cat()
|
||||
to_chat(usr, "<span class='notice'>Category is now [categories[viewing_category]].</span>")
|
||||
viewing_category = prev_cat(FALSE)
|
||||
. = TRUE
|
||||
if(href_list["forwardSubCat"])
|
||||
viewing_subcategory = next_subcat()
|
||||
. = TRUE
|
||||
if(href_list["backwardSubCat"])
|
||||
viewing_subcategory = prev_subcat()
|
||||
. = TRUE
|
||||
if(href_list["toggle_recipes"])
|
||||
display_craftable_only = !display_craftable_only
|
||||
to_chat(usr, "<span class='notice'>You will now [display_craftable_only ? "only see recipes you can craft":"see all recipes"].</span>")
|
||||
. = TRUE
|
||||
if(href_list["toggle_compact"])
|
||||
display_compact = !display_compact
|
||||
to_chat(usr, "<span class='notice'>Crafting menu is now [display_compact? "compact" : "full size"].</span>")
|
||||
. = TRUE
|
||||
|
||||
SSnanoui.update_uis(src)
|
||||
|
||||
//Next works nicely with modular arithmetic
|
||||
/datum/personal_crafting/proc/next_cat()
|
||||
//Next works nicely with modular arithmetic
|
||||
/datum/personal_crafting/proc/next_cat(readonly = TRUE)
|
||||
if (!readonly)
|
||||
viewing_subcategory = 1
|
||||
. = viewing_category % categories.len + 1
|
||||
|
||||
/datum/personal_crafting/proc/next_subcat()
|
||||
if(islist(subcategories[viewing_category]))
|
||||
var/list/subs = subcategories[viewing_category]
|
||||
. = viewing_subcategory % subs.len + 1
|
||||
|
||||
|
||||
//Previous can go fuck itself
|
||||
/datum/personal_crafting/proc/prev_cat()
|
||||
/datum/personal_crafting/proc/prev_cat(readonly = TRUE)
|
||||
if (!readonly)
|
||||
viewing_subcategory = 1
|
||||
if(viewing_category == categories.len)
|
||||
. = viewing_category-1
|
||||
else
|
||||
@@ -311,6 +363,18 @@
|
||||
if(. <= 0)
|
||||
. = categories.len
|
||||
|
||||
/datum/personal_crafting/proc/prev_subcat()
|
||||
if(islist(subcategories[viewing_category]))
|
||||
var/list/subs = subcategories[viewing_category]
|
||||
if(viewing_subcategory == subs.len)
|
||||
. = viewing_subcategory-1
|
||||
else
|
||||
. = viewing_subcategory % subs.len - 1
|
||||
if(. <= 0)
|
||||
. = subs.len
|
||||
else
|
||||
. = null
|
||||
|
||||
/datum/personal_crafting/proc/build_recipe_data(datum/crafting_recipe/R)
|
||||
var/list/data = list()
|
||||
data["name"] = R.name
|
||||
@@ -334,9 +398,19 @@
|
||||
data["catalyst_text"] = catalyst_text
|
||||
|
||||
for(var/a in R.tools)
|
||||
var/atom/A = a //cheat-typecast
|
||||
tool_text += " [R.tools[A]] [initial(A.name)],"
|
||||
if(ispath(a, /obj/item))
|
||||
var/obj/item/b = a
|
||||
tool_text += " [initial(b.name)],"
|
||||
else
|
||||
tool_text += " [a],"
|
||||
tool_text = replacetext(tool_text, ",", "", -1)
|
||||
data["tool_text"] = tool_text
|
||||
|
||||
return data
|
||||
return data
|
||||
|
||||
//Mind helpers
|
||||
|
||||
/datum/mind/proc/teach_crafting_recipe(R)
|
||||
if(!learned_recipes)
|
||||
learned_recipes = list()
|
||||
learned_recipes |= R
|
||||
@@ -1,19 +1,15 @@
|
||||
/datum/crafting_recipe
|
||||
var/name = "" //in-game display name
|
||||
var/reqs[] = list() //type paths of items consumed associated with how many are needed
|
||||
var/blacklist[] = list() //type paths of items explicitly not allowed as an ingredient
|
||||
var/result //type path of item resulting from this craft
|
||||
var/tools[] = list() //type paths of items needed but not consumed
|
||||
var/time = 30 //time in deciseconds
|
||||
var/parts[] = list() //type paths of items that will be placed in the result
|
||||
var/chem_catalysts[] = list() //like tools but for reagents
|
||||
var/category = CAT_NONE // Recipe category
|
||||
var/roundstart_enabled = TRUE //Set to FALSE if you don't want a particular crafting recipe to be available all the time
|
||||
|
||||
/datum/crafting_recipe/proc/AdjustChems(var/obj/resultobj as obj)
|
||||
//This proc is to replace the make_food proc of recipes from microwaves and such that are being converted to table crafting recipes.
|
||||
//Use it to handle the removal of reagents after the food has been created (like removing toxins from a salad made with ambrosia)
|
||||
//If a recipe does not require it's chems adjusted, don't bother declaring this for the recipe, as it will call this placeholder
|
||||
return
|
||||
var/category = CAT_NONE //where it shows up in the crafting UI
|
||||
var/subcategory = CAT_NONE
|
||||
var/always_availible = TRUE //Set to FALSE if it needs to be learned first.
|
||||
|
||||
/datum/crafting_recipe/IED
|
||||
name = "IED"
|
||||
@@ -24,7 +20,8 @@
|
||||
/obj/item/reagent_containers/food/drinks/cans = 1)
|
||||
parts = list(/obj/item/reagent_containers/food/drinks/cans = 1)
|
||||
time = 15
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/molotov
|
||||
name = "Molotov"
|
||||
@@ -33,7 +30,8 @@
|
||||
/obj/item/reagent_containers/food/drinks/bottle = 1)
|
||||
parts = list(/obj/item/reagent_containers/food/drinks/bottle = 1)
|
||||
time = 40
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/stunprod
|
||||
name = "Stunprod"
|
||||
@@ -42,7 +40,8 @@
|
||||
/obj/item/stack/rods = 1,
|
||||
/obj/item/assembly/igniter = 1)
|
||||
time = 40
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/bola
|
||||
name = "Bola"
|
||||
@@ -50,7 +49,8 @@
|
||||
reqs = list(/obj/item/restraints/handcuffs/cable = 1,
|
||||
/obj/item/stack/sheet/metal = 6)
|
||||
time = 20//15 faster than crafting them by hand!
|
||||
category= CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/ed209
|
||||
name = "ED209"
|
||||
@@ -144,7 +144,8 @@
|
||||
/obj/item/weldingtool = 1)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 10
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/meteorshot
|
||||
name = "Meteorshot Shell"
|
||||
@@ -154,7 +155,8 @@
|
||||
/obj/item/stock_parts/manipulator = 2)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/pulseslug
|
||||
name = "Pulse Slug Shell"
|
||||
@@ -164,7 +166,8 @@
|
||||
/obj/item/stock_parts/micro_laser/ultra = 1)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/dragonsbreath
|
||||
name = "Dragonsbreath Shell"
|
||||
@@ -173,7 +176,8 @@
|
||||
/datum/reagent/phosphorus = 5,)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/frag12
|
||||
name = "FRAG-12 Shell"
|
||||
@@ -184,7 +188,8 @@
|
||||
/datum/reagent/facid = 5,)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/ionslug
|
||||
name = "Ion Scatter Shell"
|
||||
@@ -194,7 +199,8 @@
|
||||
/obj/item/stock_parts/subspace/crystal = 1)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/improvisedslug
|
||||
name = "Improvised Shotgun Shell"
|
||||
@@ -205,7 +211,8 @@
|
||||
/datum/reagent/fuel = 10)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/improvisedslugoverload
|
||||
name = "Overload Improvised Shell"
|
||||
@@ -215,7 +222,8 @@
|
||||
/datum/reagent/plasma_dust = 20)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/laserslug
|
||||
name = "Laser Slug Shell"
|
||||
@@ -225,7 +233,8 @@
|
||||
/obj/item/stock_parts/micro_laser/high = 1)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 5
|
||||
category = CAT_AMMO
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/ishotgun
|
||||
name = "Improvised Shotgun"
|
||||
@@ -236,7 +245,8 @@
|
||||
/obj/item/stack/packageWrap = 5,)
|
||||
tools = list(/obj/item/screwdriver)
|
||||
time = 100
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/chainsaw
|
||||
name = "Chainsaw"
|
||||
@@ -246,7 +256,8 @@
|
||||
/obj/item/stack/sheet/plasteel = 1)
|
||||
tools = list(/obj/item/weldingtool)
|
||||
time = 50
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/spear
|
||||
name = "Spear"
|
||||
@@ -255,7 +266,8 @@
|
||||
/obj/item/shard = 1,
|
||||
/obj/item/stack/rods = 1)
|
||||
time = 40
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/spooky_camera
|
||||
name = "Camera Obscura"
|
||||
@@ -296,7 +308,8 @@
|
||||
reqs = list(/obj/item/stack/sheet/wood = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
tools = list(/obj/item/kitchen/knife) // Gotta carve the wood into handles
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/makeshift_bolt
|
||||
name = "Makeshift Bolt"
|
||||
@@ -304,7 +317,8 @@
|
||||
time = 5
|
||||
reqs = list(/obj/item/stack/rods = 1)
|
||||
tools = list(/obj/item/weldingtool)
|
||||
category = CAT_AMMO
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_AMMO
|
||||
|
||||
/datum/crafting_recipe/crossbow
|
||||
name = "Powered Crossbow"
|
||||
@@ -316,7 +330,8 @@
|
||||
/obj/item/stack/sheet/wood = 5)
|
||||
tools = list(/obj/item/weldingtool,
|
||||
/obj/item/screwdriver)
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/glove_balloon
|
||||
name = "Latex Glove Balloon"
|
||||
@@ -361,7 +376,8 @@
|
||||
)
|
||||
parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2)
|
||||
time = 30
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/chemical_payload2
|
||||
name = "Chemical Payload (gibtonite)"
|
||||
@@ -373,7 +389,8 @@
|
||||
)
|
||||
parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2)
|
||||
time = 50
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/toxins_payload
|
||||
name = "Toxins Payload Casing"
|
||||
@@ -383,7 +400,8 @@
|
||||
/obj/item/assembly/signaler = 1,
|
||||
/obj/item/stack/sheet/metal = 2
|
||||
)
|
||||
category = CAT_WEAPON
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/bonearmor
|
||||
name = "Bone Armor"
|
||||
@@ -552,4 +570,4 @@
|
||||
/obj/item/grown/log = 2)
|
||||
time = 50
|
||||
category = CAT_MISC
|
||||
roundstart_enabled = FALSE
|
||||
always_availible = FALSE
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sandwich
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SANDWICH
|
||||
|
||||
/datum/crafting_recipe/slimesandwich
|
||||
name = "Slime Jelly Sandwich"
|
||||
@@ -26,6 +27,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/jellysandwich/slime
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SANDWICH
|
||||
|
||||
/datum/crafting_recipe/cherrysandwich
|
||||
name = "Cherry Jelly Sandwich"
|
||||
@@ -35,6 +37,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/jellysandwich/cherry
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SANDWICH
|
||||
|
||||
/datum/crafting_recipe/slimeburger
|
||||
name = "Slime Jelly Burger"
|
||||
@@ -44,6 +47,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/jellyburger/slime
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SANDWICH
|
||||
|
||||
/datum/crafting_recipe/jellyburger
|
||||
name = "Cherry Jelly Burger"
|
||||
@@ -53,6 +57,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/jellyburger/cherry
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SANDWICH
|
||||
|
||||
/datum/crafting_recipe/baseballburger
|
||||
name = "Home run baseball burger"
|
||||
@@ -62,6 +67,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/baseballburger
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SANDWICH
|
||||
|
||||
/datum/crafting_recipe/notasandwich
|
||||
name = "not-a-sandwich"
|
||||
@@ -71,7 +77,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/notasandwich
|
||||
category = CAT_FOOD
|
||||
|
||||
subcategory = CAT_SANDWICH
|
||||
|
||||
/datum/crafting_recipe/sushi_Ebi
|
||||
name = "Ebi Sushi"
|
||||
@@ -81,6 +87,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushi_Ebi
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/Ebi_maki
|
||||
name = "Ebi Makiroll"
|
||||
@@ -91,6 +98,7 @@
|
||||
tools = list(/obj/item/kitchen/sushimat)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/Ebi_maki
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/sushi_Ikura
|
||||
name = "Ikura Sushi"
|
||||
@@ -100,6 +108,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushi_Ikura
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/Ikura_maki
|
||||
name = "Ikura Makiroll"
|
||||
@@ -110,6 +119,7 @@
|
||||
tools = list(/obj/item/kitchen/sushimat)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/Ikura_maki
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/sushi_Inari
|
||||
name = "Inari Sushi"
|
||||
@@ -119,6 +129,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushi_Inari
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/Inari_maki
|
||||
name = "Inari Makiroll"
|
||||
@@ -129,6 +140,7 @@
|
||||
tools = list(/obj/item/kitchen/sushimat)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/Inari_maki
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/sushi_Sake
|
||||
name = "Sake Sushi"
|
||||
@@ -138,6 +150,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushi_Sake
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/Sake_maki
|
||||
name = "Sake Makiroll"
|
||||
@@ -148,6 +161,7 @@
|
||||
tools = list(/obj/item/kitchen/sushimat)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/Sake_maki
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/sushi_SmokedSalmon
|
||||
name = "Smoked Salmon Sushi"
|
||||
@@ -157,6 +171,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushi_SmokedSalmon
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/SmokedSalmon_maki
|
||||
name = "Smoked Salmon Makiroll"
|
||||
@@ -167,6 +182,7 @@
|
||||
tools = list(/obj/item/kitchen/sushimat)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/SmokedSalmon_maki
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/sushi_Masago
|
||||
name = "Masago Sushi"
|
||||
@@ -176,6 +192,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushi_Masago
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/Masago_maki
|
||||
name = "Masago Makiroll"
|
||||
@@ -186,6 +203,7 @@
|
||||
tools = list(/obj/item/kitchen/sushimat)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/Masago_maki
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/sushi_Tobiko
|
||||
name = "Tobiko Sushi"
|
||||
@@ -195,6 +213,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushi_Tobiko
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/Tobiko_maki
|
||||
name = "Tobiko Makiroll"
|
||||
@@ -205,6 +224,7 @@
|
||||
tools = list(/obj/item/kitchen/sushimat)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/Tobiko_maki
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/sushi_TobikoEgg
|
||||
name = "Tobiko and Egg Sushi"
|
||||
@@ -214,6 +234,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushi_TobikoEgg
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/TobikoEgg_maki
|
||||
name = "Tobiko Makiroll"
|
||||
@@ -224,6 +245,7 @@
|
||||
tools = list(/obj/item/kitchen/sushimat)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/TobikoEgg_maki
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/Sake_maki
|
||||
name = "Sake Makiroll"
|
||||
@@ -234,6 +256,7 @@
|
||||
tools = list(/obj/item/kitchen/sushimat)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/TobikoEgg_maki
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/sushi_Tai
|
||||
name = "Tai Sushi"
|
||||
@@ -243,6 +266,7 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sushi_Tai
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/Tai_maki
|
||||
name = "Tai Makiroll"
|
||||
@@ -253,6 +277,7 @@
|
||||
tools = list(/obj/item/kitchen/sushimat)
|
||||
result = /obj/item/reagent_containers/food/snacks/sliceable/Tai_maki
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_SUSHI
|
||||
|
||||
/datum/crafting_recipe/food
|
||||
|
||||
@@ -271,4 +296,5 @@
|
||||
/datum/reagent/teslium = 1,
|
||||
)
|
||||
result = /mob/living/simple_animal/pet/cat/cak
|
||||
category = CAT_FOOD
|
||||
category = CAT_FOOD
|
||||
subcategory = CAT_CAKE //Cat! Haha, get it? CAT? GET IT? We get it - Love Felines -Foxes are better
|
||||
@@ -6,8 +6,10 @@
|
||||
new /obj/item/a_gift(T)
|
||||
for(var/mob/living/simple_animal/pet/corgi/Ian/Ian in GLOB.mob_list)
|
||||
Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian))
|
||||
GLOB.crafting_recipes += new /datum/crafting_recipe/snowman
|
||||
//The following spawn is necessary as both the timer and the shuttle systems initialise after the events system does, so we can't add stuff to the shuttle system as it doesn't exist yet and we can't use a timer
|
||||
for(var/datum/crafting_recipe/snowman/S in GLOB.crafting_recipes)
|
||||
S.always_availible = TRUE
|
||||
break
|
||||
//The following spawn is necessary as both the timer and the shuttle systems initialise after the events system does, so we can't add stuff to the shuttle system as it doesn't exist yet and we can't use a timer
|
||||
spawn(60 SECONDS)
|
||||
var/datum/supply_packs/xmas = SSshuttle.supply_packs["[/datum/supply_packs/misc/snow_machine]"]
|
||||
xmas.special_enabled = TRUE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
|
||||
<div class='display'>
|
||||
<header><h3>{{:data.category}}</h3></header>
|
||||
<header><h3>{{:data.category}}{{if data.subcategory}} : {{:data.subcategory}}{{/if}}</h3></header>
|
||||
<article>
|
||||
<div class='item'>
|
||||
{{:helper.link(data.prev_cat, 'arrow-left', {'backwardCat': 1})}}
|
||||
@@ -16,6 +16,12 @@
|
||||
{{/if}}
|
||||
{{:helper.link('Compact', data.display_compact ? 'check-square-o' : 'square-o', {'toggle_compact': 1})}}
|
||||
</div>
|
||||
{{if data.subcategory}}
|
||||
<div class='item'>
|
||||
{{:helper.link(data.prev_subcat, 'arrow-left', {'backwardSubCat': 1})}}
|
||||
{{:helper.link(data.next_subcat, 'arrow-right', {'forwardSubCat': 1})}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if data.display_compact}}
|
||||
<div class='display'>
|
||||
<article>
|
||||
|
||||
Reference in New Issue
Block a user