Merge branch 'master' into upstream-merge-11579

This commit is contained in:
Nadyr
2021-10-22 20:03:36 -04:00
committed by GitHub
45 changed files with 713 additions and 517 deletions

View File

@@ -49,6 +49,10 @@
#define MAT_BOROSILICATE "borosilicate glass" #define MAT_BOROSILICATE "borosilicate glass"
#define MAT_SANDSTONE "sandstone" #define MAT_SANDSTONE "sandstone"
#define MAT_FLINT "flint" #define MAT_FLINT "flint"
#define MAT_PLATINUM "platinum"
#define MAT_TRITIUM "tritium"
#define MAT_DEUTERIUM "deuterium"
#define DEFAULT_TABLE_MATERIAL MAT_PLASTIC #define DEFAULT_TABLE_MATERIAL MAT_PLASTIC
#define DEFAULT_WALL_MATERIAL MAT_STEEL #define DEFAULT_WALL_MATERIAL MAT_STEEL

View File

@@ -62,55 +62,7 @@
del_reqs - takes recipe and a user, loops over the recipes reqs var and tries to find everything in the list make by get_environment and delete it/add to parts list, then returns the said list del_reqs - takes recipe and a user, loops over the recipes reqs var and tries to find everything in the list make by get_environment and delete it/add to parts list, then returns the said list
*/ */
/** // Returns a list of objects available
* Check that the contents of the recipe meet the requirements.
*
* user: The /mob that initated the crafting.
* R: The /datum/crafting_recipe being attempted.
* contents: List of items to search for R's reqs.
*/
/datum/component/personal_crafting/proc/check_contents(atom/a, datum/crafting_recipe/R, list/contents)
var/list/item_instances = contents["instances"]
var/list/machines = contents["machinery"]
contents = contents["other"]
var/list/requirements_list = list()
// Process all requirements
for(var/requirement_path in R.reqs)
// Check we have the appropriate amount available in the contents list
var/needed_amount = R.reqs[requirement_path]
for(var/content_item_path in contents)
// Right path and not blacklisted
if(!ispath(content_item_path, requirement_path) || R.blacklist.Find(content_item_path))
continue
needed_amount -= contents[content_item_path]
if(needed_amount <= 0)
break
if(needed_amount > 0)
return FALSE
// Store the instances of what we will use for R.check_requirements() for requirement_path
var/list/instances_list = list()
for(var/instance_path in item_instances)
if(ispath(instance_path, requirement_path))
instances_list += item_instances[instance_path]
requirements_list[requirement_path] = instances_list
for(var/requirement_path in R.chem_catalysts)
if(contents[requirement_path] < R.chem_catalysts[requirement_path])
return FALSE
for(var/machinery_path in R.machinery)
if(!machines[machinery_path])//We don't care for volume with machines, just if one is there or not
return FALSE
return R.check_requirements(a, requirements_list)
/datum/component/personal_crafting/proc/get_environment(atom/a, list/blacklist = null, radius_range = 1) /datum/component/personal_crafting/proc/get_environment(atom/a, list/blacklist = null, radius_range = 1)
. = list() . = list()
@@ -122,13 +74,13 @@
continue continue
. += AM . += AM
// Returns an associative list containing the types of tools available, and the paths of objects available
/datum/component/personal_crafting/proc/get_surroundings(atom/a, list/blacklist=null) /datum/component/personal_crafting/proc/get_surroundings(atom/a, list/blacklist=null)
. = list() . = list()
.["tool_qualities"] = list() .["tool_qualities"] = list() // List of tool types available
.["other"] = list() .["other"] = list() // List of reagents/material stacks available
.["instances"] = list() .["instances"] = list() // List of /obj/items available, maybe?
.["machinery"] = list() .["machinery"] = list() // List of /obj/machinery available
for(var/obj/object in get_environment(a, blacklist)) for(var/obj/object in get_environment(a, blacklist))
if(isitem(object)) if(isitem(object))
var/obj/item/item = object var/obj/item/item = object
@@ -150,11 +102,55 @@
else if (istype(object, /obj/machinery)) else if (istype(object, /obj/machinery))
LAZYADDASSOCLIST(.["machinery"], object.type, object) LAZYADDASSOCLIST(.["machinery"], object.type, object)
/**
* Check that the contents of the recipe meet the requirements.
*
* user: The /mob that initated the crafting.
* R: The /datum/crafting_recipe being attempted.
* contents: List of items to search for R's reqs.
*/
/datum/component/personal_crafting/proc/check_contents(atom/a, datum/crafting_recipe/R, list/contents)
var/list/item_instances = contents["instances"]
contents = contents["other"]
var/list/requirements_list = list()
// Process all requirements
for(var/list/requirement in R.reqs)
var/satisfied = FALSE
for(var/requirement_path in requirement)
// Check we have the appropriate amount available in the contents list
var/needed_amount = requirement[requirement_path]
for(var/content_item_path in contents)
// Right path and not blacklisted
if(!ispath(content_item_path, requirement_path) || R.blacklist.Find(content_item_path))
continue
needed_amount -= contents[content_item_path]
if(needed_amount <= 0)
break
if(needed_amount > 0)
continue
// Store the instances of what we will use for R.check_requirements() for requirement_path
var/list/instances_list = list()
for(var/instance_path in item_instances)
if(ispath(instance_path, requirement_path))
instances_list += item_instances[instance_path]
requirements_list[requirement_path] = instances_list
satisfied = TRUE
break
if(!satisfied)
return FALSE
return R.check_requirements(a, requirements_list)
/// Returns a boolean on whether the tool requirements of the input recipe are satisfied by the input source and surroundings. /// Returns a boolean on whether the tool requirements of the input recipe are satisfied by the input source and surroundings.
/datum/component/personal_crafting/proc/check_tools(atom/source, datum/crafting_recipe/recipe, list/surroundings) /datum/component/personal_crafting/proc/check_tools(atom/source, datum/crafting_recipe/R, list/surroundings)
if(!length(recipe.tool_behaviors) && !length(recipe.tool_paths)) if(!length(R.tool_behaviors) && !length(R.tool_paths))
return TRUE return TRUE
var/list/available_tools = list() var/list/available_tools = list()
var/list/present_qualities = list() var/list/present_qualities = list()
@@ -176,50 +172,70 @@
for(var/path in surroundings["other"]) for(var/path in surroundings["other"])
available_tools[path] = TRUE available_tools[path] = TRUE
for(var/required_quality in recipe.tool_behaviors) for(var/required_quality in R.tool_behaviors)
if(present_qualities[required_quality]) if(present_qualities[required_quality])
continue continue
return FALSE return FALSE
for(var/required_path in recipe.tool_paths) for(var/required_path in R.tool_paths)
var/found_this_tool = FALSE if(is_path_in_list(required_path, available_tools))
for(var/tool_path in available_tools)
if(!ispath(required_path, tool_path))
continue
found_this_tool = TRUE
break
if(found_this_tool)
continue continue
return FALSE return FALSE
return TRUE return TRUE
/datum/component/personal_crafting/proc/check_reagents(atom/source, datum/crafting_recipe/R, list/surroundings)
var/list/reagents = surroundings["other"]
for(var/requirement_path in R.chem_catalysts)
if(reagents[requirement_path] < R.chem_catalysts[requirement_path])
return FALSE
return TRUE
/datum/component/personal_crafting/proc/check_machinery(atom/source, datum/crafting_recipe/R, list/surroundings)
var/list/machines = surroundings["machinery"]
for(var/machinery_path in R.machinery)
if(!machines[machinery_path])//We don't care for volume with machines, just if one is there or not
return FALSE
return TRUE
/datum/component/personal_crafting/proc/check_requirements(atom/source, datum/crafting_recipe/R, list/surroundings)
if(!check_contents(source, R, surroundings))
return ", missing component."
if(!check_tools(source, R, surroundings))
return ", missing tool."
if(!check_reagents(source, R, surroundings))
return ", missing reagents."
if(!check_machinery(source, R, surroundings))
return ", missing machinery."
return
/datum/component/personal_crafting/proc/construct_item(atom/a, datum/crafting_recipe/R) /datum/component/personal_crafting/proc/construct_item(atom/a, datum/crafting_recipe/R)
var/list/contents = get_surroundings(a,R.blacklist) var/list/surroundings = get_surroundings(a,R.blacklist)
// var/send_feedback = 1 // var/send_feedback = 1
if(check_contents(a, R, contents)) . = check_requirements(a, R, surroundings)
if(check_tools(a, R, contents)) if(.)
return
if(R.one_per_turf) if(R.one_per_turf)
for(var/content in get_turf(a)) for(var/content in get_turf(a))
if(istype(content, R.result)) if(istype(content, R.result))
return ", object already present." return ", object already present."
//If we're a mob we'll try a do_after; non mobs will instead instantly construct the item //If we're a mob we'll try a do_after; non mobs will instead instantly construct the item
if(ismob(a) && !do_after(a, R.time, target = a)) if(ismob(a) && !do_after(a, R.time, target = a))
return "." return "."
contents = get_surroundings(a,R.blacklist)
if(!check_contents(a, R, contents)) surroundings = get_surroundings(a, R.blacklist)
return ", missing component." . = check_requirements(a, R, surroundings)
if(!check_tools(a, R, contents)) if(.)
return ", missing tool." return
var/list/parts = del_reqs(R, a) var/list/parts = del_reqs(R, a)
var/atom/movable/I = new R.result (get_turf(a.loc)) var/atom/movable/I = new R.result (get_turf(a.loc))
I.CheckParts(parts, R) I.CheckParts(parts, R)
// if(send_feedback) // if(send_feedback)
// SSblackbox.record_feedback("tally", "object_crafted", 1, I.type) // SSblackbox.record_feedback("tally", "object_crafted", 1, I.type)
return I //Send the item back to whatever called this proc so it can handle whatever it wants to do with the new item return I //Send the item back to whatever called this proc so it can handle whatever it wants to do with the new item
return ", missing tool."
return ", missing component."
/*Del reqs works like this: /*Del reqs works like this:
@@ -246,119 +262,108 @@
*/ */
/datum/component/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, atom/a) /datum/component/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, atom/a)
var/list/surroundings var/list/surroundings = get_environment(a)
var/list/Deletion = list() var/list/parts = list("items" = list())
. = list() if(R.get_parts_reagents_volume())
var/data parts["reagents"] = new /datum/reagents(R.get_parts_reagents_volume()) // Datums don't have create_reagents()
var/amt
var/list/requirements = list() var/list/requirements = list()
if(R.reqs) if(R.reqs)
requirements += R.reqs for(var/list/L in R.reqs)
requirements += L
if(R.machinery) if(R.machinery)
requirements += R.machinery requirements += R.machinery
main_loop:
// Try to find everything that was actually used to craft
for(var/path_key in requirements) for(var/path_key in requirements)
amt = R.reqs[path_key] || R.machinery[path_key] var/amt = requirements[path_key]
if(!amt)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it! if(amt <= 0)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it!
continue main_loop continue
surroundings = get_environment(a, R.blacklist)
surroundings -= Deletion // If the path is in R.parts, we want to grab those to stuff into the product
var/amt_to_transfer = 0
if(is_path_in_list(path_key, R.parts))
amt_to_transfer = R.parts[path_key]
// Reagent: gotta go sniffing in all the beakers
if(ispath(path_key, /datum/reagent)) if(ispath(path_key, /datum/reagent))
var/datum/reagent/RG = new path_key var/datum/reagent/reagent = path_key
var/datum/reagent/RGNT var/id = initial(reagent.id)
while(amt > 0)
var/obj/item/weapon/reagent_containers/RC = locate() in surroundings for(var/obj/item/weapon/reagent_containers/RC in surroundings)
RG = RC.reagents.get_reagent(path_key) // Found everything we need
if(RG) if(amt <= 0 && amt_to_transfer <= 0)
if(!locate(RG.type) in Deletion) break
Deletion += new RG.type()
if(RG.volume > amt) // If we need to keep any to put in the new object, pull it out
RG.volume -= amt if(amt_to_transfer > 0)
data = RG.data var/A = RC.reagents.trans_id_to(parts["reagents"], id, amt_to_transfer)
RC.reagents.conditional_update(RC) amt_to_transfer -= A
RG = locate(RG.type) in Deletion amt -= A
RG.volume = amt
RG.data += data // If we need to consume some amount of it
continue main_loop if(amt > 0)
else var/datum/reagent/RG = RC.reagents.get_reagent(id)
surroundings -= RC var/A = min(RG.volume, amt)
amt -= RG.volume RC.reagents.remove_reagent(id, A)
RC.reagents.reagent_list -= RG amt -= A
RC.reagents.conditional_update(RC) SEND_SIGNAL(RC.reagents, COMSIG_REAGENTS_CRAFTING_PING)
RGNT = locate(RG.type) in Deletion
RGNT.volume += RG.volume // Material stacks may have to accumulate across multiple stacks
RGNT.data += RG.data
qdel(RG)
SEND_SIGNAL(RC.reagents, COMSIG_REAGENTS_CRAFTING_PING) // - [] TODO: Make this entire thing less spaghetti
else
surroundings -= RC
else if(ispath(path_key, /obj/item/stack)) else if(ispath(path_key, /obj/item/stack))
var/obj/item/stack/S for(var/obj/item/stack/S in surroundings)
var/obj/item/stack/SD if(amt <= 0 && amt_to_transfer <= 0)
while(amt > 0) break
S = locate(path_key) in surroundings
if(S.get_amount() >= amt) // This could put 50 stacks in an object but frankly so long as the amount's right we don't care
if(!locate(S.type) in Deletion) if(amt_to_transfer > 0)
SD = new S.type() var/obj/item/stack/split = S.split(amt_to_transfer)
Deletion += SD if(istype(split))
S.use(amt) parts["items"] += split
SD = locate(S.type) in Deletion amt_to_transfer -= split.get_amount()
SD.add(amt) amt -= split.get_amount()
continue main_loop
else if(amt > 0)
amt -= S.get_amount() var/A = min(amt, S.get_amount())
if(!locate(S.type) in Deletion) if(S.use(A))
Deletion += S amt -= A
else
data = S.get_amount()
S = locate(S.type) in Deletion else // Just a regular item. Find them all and delete them
S.add(data) for(var/atom/movable/I in surroundings)
surroundings -= S if(amt <= 0 && amt_to_transfer <= 0)
else break
var/atom/movable/I
while(amt > 0) if(!istype(I, path_key))
I = locate(path_key) in surroundings continue
Deletion += I
surroundings -= I // Special case: the reagents may be needed for other recipes
if(istype(I, /obj/item/weapon/reagent_containers))
var/obj/item/weapon/reagent_containers/RC = I
if(RC.reagents.total_volume > 0)
continue
// We're using it for something
amt-- amt--
var/list/partlist = list(R.parts.len)
for(var/M in R.parts) // Prepare to stuff inside product, don't delete it
partlist[M] = R.parts[M] if(is_path_in_list(path_key, parts))
for(var/part in R.parts) parts["items"] += I
if(istype(part, /datum/reagent)) amt_to_transfer--
var/datum/reagent/RG = locate(part) in Deletion
if(RG.volume > partlist[part])
RG.volume = partlist[part]
. += RG
Deletion -= RG
continue continue
else if(istype(part, /obj/item/stack))
var/obj/item/stack/ST = locate(part) in Deletion
if(ST.get_amount() > partlist[part])
ST.set_amount(partlist[part])
. += ST
Deletion -= ST
continue
else
while(partlist[part] > 0)
var/atom/movable/AM = locate(part) in Deletion
. += AM
Deletion -= AM
partlist[part] -= 1
while(Deletion.len)
var/DL = Deletion[Deletion.len]
Deletion.Cut(Deletion.len)
// Snowflake handling of reagent containers and storage atoms. // Snowflake handling of reagent containers and storage atoms.
// If we consumed them in our crafting, we should dump their contents out before qdeling them. // If we consumed them in our crafting, we should dump their contents out before qdeling them.
if(istype(DL, /obj/item/weapon/reagent_containers)) if(istype(I, /obj/item/weapon/reagent_containers))
var/obj/item/weapon/reagent_containers/container = DL var/obj/item/weapon/reagent_containers/container = I
container.reagents.clear_reagents() container.reagents.clear_reagents()
// container.reagents.expose(container.loc, TOUCH) // container.reagents.expose(container.loc, TOUCH)
else if(istype(DL, /obj/item/weapon/storage)) else if(istype(I, /obj/item/weapon/storage))
var/obj/item/weapon/storage/container = DL var/obj/item/weapon/storage/container = I
container.spill() container.spill()
container.close_all() container.close_all()
qdel(DL) qdel(I)
return parts
/datum/component/personal_crafting/proc/component_ui_interact(source, location, control, params, user) /datum/component/personal_crafting/proc/component_ui_interact(source, location, control, params, user)
// SIGNAL_HANDLER // SIGNAL_HANDLER
@@ -487,10 +492,14 @@
var/list/tool_list = list() var/list/tool_list = list()
var/list/catalyst_text = list() var/list/catalyst_text = list()
for(var/atom/req_atom as anything in R.reqs) for(var/list/req in R.reqs)
var/list/L = list()
for(var/atom/req_atom as anything in req)
//We just need the name, so cheat-typecast to /atom for speed (even tho Reagents are /datum they DO have a "name" var) //We just need the name, so cheat-typecast to /atom for speed (even tho Reagents are /datum they DO have a "name" var)
//Also these are typepaths so sadly we can't just do "[a]" //Also these are typepaths so sadly we can't just do "[a]"
req_text += "[R.reqs[req_atom]] [initial(req_atom.name)]" L += "[req[req_atom]] [initial(req_atom.name)]"
req_text += L.Join(" OR ")
for(var/obj/machinery/content as anything in R.machinery) for(var/obj/machinery/content as anything in R.machinery)
req_text += "[R.reqs[content]] [initial(content.name)]" req_text += "[R.reqs[content]] [initial(content.name)]"
if(R.additional_req_text) if(R.additional_req_text)

View File

@@ -12,21 +12,30 @@
*/ */
/atom/proc/CheckParts(list/parts_list, datum/crafting_recipe/R) /atom/proc/CheckParts(list/parts_list, datum/crafting_recipe/R)
SEND_SIGNAL(src, COMSIG_ATOM_CHECKPARTS, parts_list, R) SEND_SIGNAL(src, COMSIG_ATOM_CHECKPARTS, parts_list, R)
if(parts_list) if(LAZYLEN(parts_list))
for(var/A in parts_list) if(istype(parts_list["reagents"], /datum/reagents))
if(istype(A, /datum/reagent)) var/datum/reagents/RG = parts_list["reagents"]
if(!reagents) if(istype(reagents))
reagents = new() RG.trans_to_holder(reagents, RG.total_volume)
reagents.reagent_list.Add(A) else
reagents = RG
RG.my_atom = src
reagents.conditional_update() reagents.conditional_update()
else if(ismovable(A))
var/atom/movable/M = A for(var/atom/movable/M as anything in parts_list["items"])
if(isliving(M.loc)) if(isliving(M.loc))
var/mob/living/L = M.loc var/mob/living/L = M.loc
L.unEquip(M, target = src) L.unEquip(M, target = src)
else else
M.forceMove(src) M.forceMove(src)
SEND_SIGNAL(M, COMSIG_ATOM_USED_IN_CRAFT, src) SEND_SIGNAL(M, COMSIG_ATOM_USED_IN_CRAFT, src)
var/list/L = parts_list["reagents"]
if(LAZYLEN(L))
L.Cut()
L = parts_list["items"]
if(LAZYLEN(L))
L.Cut()
parts_list.Cut() parts_list.Cut()
/obj/machinery/CheckParts(list/parts_list) /obj/machinery/CheckParts(list/parts_list)

View File

@@ -47,3 +47,28 @@
/datum/crafting_recipe/proc/on_craft_completion(mob/user, atom/result) /datum/crafting_recipe/proc/on_craft_completion(mob/user, atom/result)
return return
// Computes the total reagents volume
/datum/crafting_recipe/proc/get_parts_reagents_volume()
. = 0
for(var/list/L in parts)
for(var/path in L)
if(ispath(path, /datum/reagent))
. += L[path]
// Locate one of the things that set the material type, and update it from the default (glass)
/datum/crafting_recipe/spear/on_craft_completion(mob/user, atom/result)
var/obj/item/weapon/material/M
for(var/path in parts)
var/obj/item/weapon/material/N = locate(path) in result
if(istype(N, path))
if(!istype(M))
M = N
else
N.forceMove(get_turf(result))
if(!istype(M))
return
var/obj/item/weapon/material/twohanded/spear/S = result
S.set_material(M.material.name)
qdel(M)

View File

@@ -1,14 +1,14 @@
/datum/crafting_recipe/cloth /datum/crafting_recipe/cloth
name = "Cloth bolt" name = "Cloth bolt"
result = /obj/item/stack/material/cloth result = /obj/item/stack/material/cloth
reqs = list(/obj/item/stack/material/fiber = 3) reqs = list(list(/obj/item/stack/material/fiber = 3))
time = 40 time = 40
category = CAT_PRIMAL category = CAT_PRIMAL
/datum/crafting_recipe/crude_bandage /datum/crafting_recipe/crude_bandage
name = "Crude bandages (x10)" name = "Crude bandages (x10)"
result = /obj/item/stack/medical/crude_pack result = /obj/item/stack/medical/crude_pack
reqs = list(/obj/item/stack/material/cloth = 2) reqs = list(list(/obj/item/stack/material/cloth = 2))
time = 40 time = 40
category = CAT_PRIMAL category = CAT_PRIMAL
@@ -20,8 +20,8 @@
name = "primitive clothes" name = "primitive clothes"
result = /obj/item/clothing/under/primitive result = /obj/item/clothing/under/primitive
reqs = list( reqs = list(
/obj/item/stack/material/fiber = 4, list(/obj/item/stack/material/fiber = 4),
/obj/item/stack/material/cloth = 6 list(/obj/item/stack/material/cloth = 6)
) )
time = 90 time = 90
category = CAT_CLOTHING category = CAT_CLOTHING
@@ -30,8 +30,8 @@
name = "primitive shoes" name = "primitive shoes"
result = /obj/item/clothing/shoes/primitive result = /obj/item/clothing/shoes/primitive
reqs = list( reqs = list(
/obj/item/stack/material/fiber = 2, list(/obj/item/stack/material/fiber = 2),
/obj/item/stack/material/cloth = 3 list(/obj/item/stack/material/cloth = 3)
) )
time = 60 time = 60
category = CAT_CLOTHING category = CAT_CLOTHING

View File

@@ -2,10 +2,10 @@
name = "Wooden Shovel" name = "Wooden Shovel"
result = /obj/item/weapon/shovel/wood result = /obj/item/weapon/shovel/wood
reqs = list( reqs = list(
/obj/item/stack/material/stick = 5, list(/obj/item/stack/material/stick = 5),
/obj/item/stack/material/wood = 1, list(/obj/item/stack/material/wood = 1),
/obj/item/stack/material/fiber = 3, list(/obj/item/stack/material/fiber = 3),
/obj/item/stack/material/flint = 1 list(/obj/item/stack/material/flint = 1)
) )
time = 120 time = 120
category = CAT_WEAPONRY category = CAT_WEAPONRY
@@ -15,7 +15,7 @@
name = "stone blade" name = "stone blade"
result = /obj/item/weapon/material/knife/stone result = /obj/item/weapon/material/knife/stone
reqs = list( reqs = list(
/obj/item/stack/material/flint = 2 list(/obj/item/stack/material/flint = 2)
) )
time = 60 time = 60
category = CAT_WEAPONRY category = CAT_WEAPONRY
@@ -25,10 +25,10 @@
name = "stone knife" name = "stone knife"
result = /obj/item/weapon/material/knife/stone/wood result = /obj/item/weapon/material/knife/stone/wood
reqs = list( reqs = list(
/obj/item/weapon/material/knife/stone = 1, list(/obj/item/weapon/material/knife/stone = 1),
/obj/item/stack/material/flint = 1, list(/obj/item/stack/material/flint = 1),
/obj/item/stack/material/wood = 1, list(/obj/item/stack/material/wood = 1),
/obj/item/stack/material/fiber = 3 list(/obj/item/stack/material/fiber = 3)
) )
time = 120 time = 120
category = CAT_WEAPONRY category = CAT_WEAPONRY
@@ -38,10 +38,10 @@
name = "stone knife" name = "stone knife"
result = /obj/item/weapon/material/knife/stone/bone result = /obj/item/weapon/material/knife/stone/bone
reqs = list( reqs = list(
/obj/item/weapon/material/knife/stone = 1, list(/obj/item/weapon/material/knife/stone = 1),
/obj/item/stack/material/flint = 1, list(/obj/item/stack/material/flint = 1),
/obj/item/weapon/bone = 1, list(/obj/item/weapon/bone = 1),
/obj/item/stack/material/fiber = 3 list(/obj/item/stack/material/fiber = 3)
) )
time = 120 time = 120
category = CAT_WEAPONRY category = CAT_WEAPONRY
@@ -51,9 +51,9 @@
name = "wooden bucket" name = "wooden bucket"
result = /obj/item/weapon/reagent_containers/glass/bucket/wood result = /obj/item/weapon/reagent_containers/glass/bucket/wood
reqs = list( reqs = list(
/obj/item/stack/material/wood = 1, list(/obj/item/stack/material/wood = 1),
/obj/item/stack/material/stick = 1, list(/obj/item/stack/material/stick = 1),
/obj/item/stack/material/fiber = 2 list(/obj/item/stack/material/fiber = 2)
) )
time = 60 time = 60
category = CAT_TOOL category = CAT_TOOL
@@ -61,7 +61,7 @@
/datum/crafting_recipe/sticks /datum/crafting_recipe/sticks
name = "sticks" name = "sticks"
result = /obj/item/stack/material/stick/fivestack result = /obj/item/stack/material/stick/fivestack
reqs = list(/obj/item/stack/material/wood = 1) reqs = list(list(/obj/item/stack/material/wood = 1))
tool_paths = list(/obj/item/weapon/material/knife) tool_paths = list(/obj/item/weapon/material/knife)
time = 200 time = 200
category = CAT_MISC category = CAT_MISC
@@ -70,10 +70,10 @@
name = "stone axe" name = "stone axe"
result = /obj/item/weapon/material/knife/machete/hatchet/stone result = /obj/item/weapon/material/knife/machete/hatchet/stone
reqs = list( reqs = list(
/obj/item/weapon/material/knife/stone = 1, list(/obj/item/weapon/material/knife/stone = 1),
/obj/item/stack/material/flint = 1, list(/obj/item/stack/material/flint = 1),
/obj/item/stack/material/stick = 10, list(/obj/item/stack/material/stick = 1),
/obj/item/stack/material/fiber = 3 list(/obj/item/stack/material/fiber = 3)
) )
time = 120 time = 120
category = CAT_WEAPONRY category = CAT_WEAPONRY
@@ -83,10 +83,10 @@
name = "stone axe" name = "stone axe"
result = /obj/item/weapon/material/knife/machete/hatchet/stone/bone result = /obj/item/weapon/material/knife/machete/hatchet/stone/bone
reqs = list( reqs = list(
/obj/item/weapon/material/knife/stone = 1, list(/obj/item/weapon/material/knife/stone = 1),
/obj/item/stack/material/flint = 1, list(/obj/item/stack/material/flint = 1),
/obj/item/weapon/bone = 1, list(/obj/item/weapon/bone = 1),
/obj/item/stack/material/fiber = 3 list(/obj/item/stack/material/fiber = 3)
) )
time = 120 time = 120
category = CAT_WEAPONRY category = CAT_WEAPONRY
@@ -96,10 +96,10 @@
name = "stone spear" name = "stone spear"
result = /obj/item/weapon/material/twohanded/spear/flint result = /obj/item/weapon/material/twohanded/spear/flint
reqs = list( reqs = list(
/obj/item/weapon/material/knife/stone = 1, list(/obj/item/weapon/material/knife/stone = 1),
/obj/item/stack/material/flint = 1, list(/obj/item/stack/material/flint = 1),
/obj/item/stack/material/wood = 2, list(/obj/item/stack/material/wood = 2),
/obj/item/stack/material/fiber = 3 list(/obj/item/stack/material/fiber = 3)
) )
time = 120 time = 120
category = CAT_WEAPONRY category = CAT_WEAPONRY
@@ -109,10 +109,10 @@
name = "stone spear" name = "stone spear"
result = /obj/item/weapon/material/twohanded/spear/flint result = /obj/item/weapon/material/twohanded/spear/flint
reqs = list( reqs = list(
/obj/item/weapon/material/knife/stone = 1, list(/obj/item/weapon/material/knife/stone = 1),
/obj/item/stack/material/flint = 1, list(/obj/item/stack/material/flint = 1),
/obj/item/weapon/bone = 2, list(/obj/item/weapon/bone = 2),
/obj/item/stack/material/fiber = 3 list(/obj/item/stack/material/fiber = 3)
) )
time = 120 time = 120
category = CAT_WEAPONRY category = CAT_WEAPONRY
@@ -121,6 +121,6 @@
/datum/crafting_recipe/ropebindings /datum/crafting_recipe/ropebindings
name = "rope bindings" name = "rope bindings"
result = /obj/item/weapon/handcuffs/cable/plantfiber result = /obj/item/weapon/handcuffs/cable/plantfiber
reqs = list(/obj/item/stack/material/fiber = 3) reqs = list(list(/obj/item/stack/material/fiber = 3))
time = 60 time = 60
category = CAT_MISC category = CAT_MISC

View File

@@ -1,9 +1,23 @@
/datum/crafting_recipe/stunprod /datum/crafting_recipe/stunprod
name = "Stunprod" name = "Stunprod"
result = /obj/item/weapon/melee/baton/cattleprod result = /obj/item/weapon/melee/baton/cattleprod
reqs = list(/obj/item/weapon/handcuffs/cable = 1, reqs = list(list(/obj/item/weapon/handcuffs/cable = 1),
/obj/item/stack/rods = 1, list(/obj/item/stack/rods = 1),
/obj/item/weapon/tool/wirecutters = 1) list(/obj/item/weapon/tool/wirecutters = 1))
time = 40
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/spear
name = "Spear"
result = /obj/item/weapon/material/twohanded/spear
reqs = list(list(/obj/item/weapon/handcuffs/cable = 1),
list(/obj/item/stack/rods = 1),
list(/obj/item/weapon/material/shard = 1,
/obj/item/weapon/material/butterflyblade = 1)
)
parts = list(/obj/item/weapon/material/shard = 1,
/obj/item/weapon/material/butterflyblade = 1)
time = 40 time = 40
category = CAT_WEAPONRY category = CAT_WEAPONRY
subcategory = CAT_WEAPON subcategory = CAT_WEAPON
@@ -11,10 +25,8 @@
/datum/crafting_recipe/shortbow /datum/crafting_recipe/shortbow
name = "Shortbow" name = "Shortbow"
result = /obj/item/weapon/gun/launcher/crossbow/bow result = /obj/item/weapon/gun/launcher/crossbow/bow
reqs = list( reqs = list(list(/obj/item/stack/material/wood = 10),
/obj/item/stack/material/wood = 10, list(/obj/item/stack/material/cloth = 5))
/obj/item/stack/material/cloth = 5
)
time = 120 time = 120
category = CAT_WEAPONRY category = CAT_WEAPONRY
subcategory = CAT_WEAPON subcategory = CAT_WEAPON
@@ -22,10 +34,8 @@
/datum/crafting_recipe/arrow_sandstone /datum/crafting_recipe/arrow_sandstone
name = "Wood arrow (sandstone tip)" name = "Wood arrow (sandstone tip)"
result = /obj/item/weapon/arrow/standard result = /obj/item/weapon/arrow/standard
reqs = list( reqs = list(list(/obj/item/stack/material/wood = 2),
/obj/item/stack/material/wood = 2, list(/obj/item/stack/material/sandstone = 2))
/obj/item/stack/material/sandstone = 2
)
time = 40 time = 40
category = CAT_WEAPONRY category = CAT_WEAPONRY
subcategory = CAT_AMMO subcategory = CAT_AMMO
@@ -33,10 +43,8 @@
/datum/crafting_recipe/arrow_marble /datum/crafting_recipe/arrow_marble
name = "Wood arrow (marble tip)" name = "Wood arrow (marble tip)"
result = /obj/item/weapon/arrow/standard result = /obj/item/weapon/arrow/standard
reqs = list( reqs = list(list(/obj/item/stack/material/wood = 2),
/obj/item/stack/material/wood = 2, list(/obj/item/stack/material/marble = 2))
/obj/item/stack/material/marble = 2
)
time = 40 time = 40
category = CAT_WEAPONRY category = CAT_WEAPONRY
subcategory = CAT_AMMO subcategory = CAT_AMMO

View File

@@ -477,7 +477,11 @@
src.germ_level = 0 src.germ_level = 0
if(istype(blood_DNA, /list)) if(istype(blood_DNA, /list))
blood_DNA = null blood_DNA = null
return 1 return TRUE
/atom/proc/on_rag_wipe(var/obj/item/weapon/reagent_containers/glass/rag/R)
clean_blood()
R.reagents.splash(src, 1)
/atom/proc/get_global_map_pos() /atom/proc/get_global_map_pos()
if(!islist(global_map) || isemptylist(global_map)) return if(!islist(global_map) || isemptylist(global_map)) return

View File

@@ -234,6 +234,8 @@
return ..() return ..()
/obj/item/mecha_parts/mecha_equipment/proc/detach(atom/moveto=null) /obj/item/mecha_parts/mecha_equipment/proc/detach(atom/moveto=null)
if(!chassis)
return
moveto = moveto || get_turf(chassis) moveto = moveto || get_turf(chassis)
forceMove(moveto) forceMove(moveto)
chassis.equipment -= src chassis.equipment -= src

View File

@@ -38,7 +38,7 @@
for(var/d in cardinal) for(var/d in cardinal)
var/turf/simulated/target = get_step(src,d) var/turf/simulated/target = get_step(src,d)
var/turf/simulated/origin = get_turf(src) var/turf/simulated/origin = get_turf(src)
if(origin.CanPass(null, target, 0, 0) && target.CanPass(null, origin, 0, 0)) if(origin.CanPass(src, target, 0, 0) && target.CanPass(src, origin, 0, 0))
var/obj/effect/decal/cleanable/liquid_fuel/other_fuel = locate() in target var/obj/effect/decal/cleanable/liquid_fuel/other_fuel = locate() in target
if(other_fuel) if(other_fuel)
other_fuel.amount += amount*0.25 other_fuel.amount += amount*0.25

View File

@@ -84,6 +84,13 @@
to_chat(user, SPAN_WARNING("You don't have anything on \the [src].")) //if we have help intent and no food scooped up DON'T STAB OURSELVES WITH THE FORK to_chat(user, SPAN_WARNING("You don't have anything on \the [src].")) //if we have help intent and no food scooped up DON'T STAB OURSELVES WITH THE FORK
return return
/obj/item/weapon/material/kitchen/utensil/on_rag_wipe()
. = ..()
if(reagents.total_volume > 0)
reagents.clear_reagents()
cut_overlays()
return
/obj/item/weapon/material/kitchen/utensil/fork /obj/item/weapon/material/kitchen/utensil/fork
name = "fork" name = "fork"
desc = "It's a fork. Sure is pointy." desc = "It's a fork. Sure is pointy."

View File

@@ -679,6 +679,10 @@
if(!Adjacent(usr)) if(!Adjacent(usr))
return return
//VOREStation Add: No turf dumping if user is in a belly
if(isbelly(usr.loc))
return
drop_contents() drop_contents()
/obj/item/weapon/storage/proc/drop_contents() // why is this a proc? literally just for RPEDs /obj/item/weapon/storage/proc/drop_contents() // why is this a proc? literally just for RPEDs

View File

@@ -1,8 +1,8 @@
/obj/random /obj/random
name = "random object" name = "random object"
desc = "This item type is used to spawn random objects at round-start" desc = "This item type is used to spawn random objects at round-start"
icon = 'icons/misc/mark.dmi' icon = 'icons/misc/random_spawners.dmi'
icon_state = "rup" icon_state = "generic"
var/spawn_nothing_percentage = 0 // this variable determines the likelyhood that this random object will not spawn anything var/spawn_nothing_percentage = 0 // this variable determines the likelyhood that this random object will not spawn anything
var/drop_get_turf = TRUE var/drop_get_turf = TRUE
@@ -80,7 +80,7 @@ var/list/random_useful_
/obj/random/single /obj/random/single
name = "randomly spawned object" name = "randomly spawned object"
desc = "This item type is used to randomly spawn a given object at round-start" desc = "This item type is used to randomly spawn a given object at round-start"
icon_state = "x3" icon_state = "generic"
var/spawn_object = null var/spawn_object = null
/obj/random/single/item_to_spawn() /obj/random/single/item_to_spawn()
@@ -104,8 +104,8 @@ var/list/multi_point_spawns
/obj/random_multi /obj/random_multi
name = "random object spawn point" name = "random object spawn point"
desc = "This item type is used to spawn random objects at round-start. Only one spawn point for a given group id is selected." desc = "This item type is used to spawn random objects at round-start. Only one spawn point for a given group id is selected."
icon = 'icons/misc/mark.dmi' icon = 'icons/misc/random_spawners.dmi'
icon_state = "x3" icon_state = "generic_3"
invisibility = INVISIBILITY_MAXIMUM invisibility = INVISIBILITY_MAXIMUM
var/id // Group id var/id // Group id
var/weight // Probability weight for this spawn point var/weight // Probability weight for this spawn point

View File

@@ -1,8 +1,7 @@
/obj/random/gun/random /obj/random/gun/random
name = "Random Weapon" name = "Random Weapon"
desc = "This is a random energy or ballistic weapon." desc = "This is a random energy or ballistic weapon."
icon = 'icons/obj/gun.dmi' icon_state = "gun"
icon_state = "energystun100"
/obj/random/gun/random/item_to_spawn() /obj/random/gun/random/item_to_spawn()
return pick(prob(5);/obj/random/energy, return pick(prob(5);/obj/random/energy,
@@ -10,9 +9,8 @@
/obj/random/energy /obj/random/energy
name = "Random Energy Weapon" name = "Random Energy Weapon"
desc = "This is a random weapon." desc = "This is a random energy weapon."
icon = 'icons/obj/gun.dmi' icon_state = "gun_energy"
icon_state = "energykill100"
/obj/random/energy/item_to_spawn() /obj/random/energy/item_to_spawn()
return pick(prob(3);/obj/item/weapon/gun/energy/laser, return pick(prob(3);/obj/item/weapon/gun/energy/laser,
@@ -28,17 +26,34 @@
prob(2);/obj/item/weapon/gun/energy/ionrifle, prob(2);/obj/item/weapon/gun/energy/ionrifle,
prob(2);/obj/item/weapon/gun/energy/ionrifle/pistol, prob(2);/obj/item/weapon/gun/energy/ionrifle/pistol,
prob(3);/obj/item/weapon/gun/energy/toxgun, prob(3);/obj/item/weapon/gun/energy/toxgun,
prob(4);/obj/item/weapon/gun/energy/taser, prob(3);/obj/item/weapon/gun/energy/taser,
prob(2);/obj/item/weapon/gun/energy/crossbow/largecrossbow, prob(2);/obj/item/weapon/gun/energy/crossbow/largecrossbow,
prob(4);/obj/item/weapon/gun/energy/stunrevolver, prob(3);/obj/item/weapon/gun/energy/stunrevolver,
prob(2);/obj/item/weapon/gun/energy/stunrevolver/vintage, prob(2);/obj/item/weapon/gun/energy/stunrevolver/vintage,
prob(3);/obj/item/weapon/gun/energy/gun/compact) prob(3);/obj/item/weapon/gun/energy/gun/compact)
/obj/random/energy/highend
name = "Random Energy Weapon"
desc = "This is a random, actually good energy weapon."
icon_state = "gun_energy_2"
/obj/random/energy/item_to_spawn()
return pick(prob(3);/obj/item/weapon/gun/energy/laser,
prob(3);/obj/item/weapon/gun/energy/laser/sleek,
prob(4);/obj/item/weapon/gun/energy/gun,
prob(3);/obj/item/weapon/gun/energy/gun/burst,
prob(1);/obj/item/weapon/gun/energy/gun/nuclear,
prob(2);/obj/item/weapon/gun/energy/retro,
prob(2);/obj/item/weapon/gun/energy/lasercannon,
prob(3);/obj/item/weapon/gun/energy/xray,
prob(1);/obj/item/weapon/gun/energy/sniperrifle,
prob(2);/obj/item/weapon/gun/energy/crossbow/largecrossbow,
prob(3);/obj/item/weapon/gun/energy/gun/compact)
/obj/random/energy/sec /obj/random/energy/sec
name = "Random Security Energy Weapon" name = "Random Security Energy Weapon"
desc = "This is a random security weapon." desc = "This is a random security weapon."
icon = 'icons/obj/gun.dmi' icon_state = "gun_energy"
icon_state = "energykill100"
/obj/random/energy/sec/item_to_spawn() /obj/random/energy/sec/item_to_spawn()
return pick(prob(2);/obj/item/weapon/gun/energy/laser, return pick(prob(2);/obj/item/weapon/gun/energy/laser,
@@ -47,8 +62,7 @@
/obj/random/projectile /obj/random/projectile
name = "Random Projectile Weapon" name = "Random Projectile Weapon"
desc = "This is a random projectile weapon." desc = "This is a random projectile weapon."
icon = 'icons/obj/gun.dmi' icon_state = "gun"
icon_state = "revolver"
/obj/random/projectile/item_to_spawn() /obj/random/projectile/item_to_spawn()
return pick(prob(3);/obj/item/weapon/gun/projectile/automatic/wt550, return pick(prob(3);/obj/item/weapon/gun/projectile/automatic/wt550,
@@ -89,8 +103,7 @@
/obj/random/projectile/sec /obj/random/projectile/sec
name = "Random Security Projectile Weapon" name = "Random Security Projectile Weapon"
desc = "This is a random security weapon." desc = "This is a random security weapon."
icon = 'icons/obj/gun.dmi' icon_state = "gun_shotgun"
icon_state = "revolver"
/obj/random/projectile/sec/item_to_spawn() /obj/random/projectile/sec/item_to_spawn()
return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump, return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,
@@ -98,10 +111,9 @@
prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat) prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat)
/obj/random/projectile/shotgun /obj/random/projectile/shotgun
name = "Random Projectile Weapon" name = "Random Shotgun"
desc = "This is a random projectile weapon." desc = "This is a random shotgun-type weapon."
icon = 'icons/obj/gun.dmi' icon_state = "gun_shotgun"
icon_state = "shotgun"
/obj/random/projectile/item_to_spawn() /obj/random/projectile/item_to_spawn()
return pick(prob(4);/obj/item/weapon/gun/projectile/shotgun/doublebarrel, return pick(prob(4);/obj/item/weapon/gun/projectile/shotgun/doublebarrel,
@@ -113,7 +125,7 @@
name = "Random Handgun" name = "Random Handgun"
desc = "This is a random sidearm." desc = "This is a random sidearm."
icon = 'icons/obj/gun.dmi' icon = 'icons/obj/gun.dmi'
icon_state = "secgundark" icon_state = "gun"
/obj/random/handgun/item_to_spawn() /obj/random/handgun/item_to_spawn()
return pick(prob(4);/obj/item/weapon/gun/projectile/sec, return pick(prob(4);/obj/item/weapon/gun/projectile/sec,
@@ -130,8 +142,7 @@
/obj/random/handgun/sec /obj/random/handgun/sec
name = "Random Security Handgun" name = "Random Security Handgun"
desc = "This is a random security sidearm." desc = "This is a random security sidearm."
icon = 'icons/obj/gun.dmi' icon_state = "gun"
icon_state = "secgundark"
/obj/random/handgun/sec/item_to_spawn() /obj/random/handgun/sec/item_to_spawn()
return pick(prob(3);/obj/item/weapon/gun/projectile/sec, return pick(prob(3);/obj/item/weapon/gun/projectile/sec,
@@ -140,8 +151,7 @@
/obj/random/ammo /obj/random/ammo
name = "Random Ammunition" name = "Random Ammunition"
desc = "This is random security ammunition." desc = "This is random security ammunition."
icon = 'icons/obj/ammo.dmi' icon_state = "ammo"
icon_state = "45-10"
/obj/random/ammo/item_to_spawn() /obj/random/ammo/item_to_spawn()
return pick(prob(6);/obj/item/weapon/storage/box/beanbags, return pick(prob(6);/obj/item/weapon/storage/box/beanbags,
@@ -157,8 +167,7 @@
/obj/random/grenade /obj/random/grenade
name = "Random Grenade" name = "Random Grenade"
desc = "This is random thrown grenades (no C4/etc.)." desc = "This is random thrown grenades (no C4/etc.)."
icon = 'icons/obj/grenade.dmi' icon_state = "grenade_2"
icon_state = "clusterbang_segment"
/obj/random/grenade/item_to_spawn() /obj/random/grenade/item_to_spawn()
return pick( prob(15);/obj/item/weapon/grenade/concussion, return pick( prob(15);/obj/item/weapon/grenade/concussion,
@@ -179,11 +188,24 @@
prob(15);/obj/item/weapon/grenade/smokebomb prob(15);/obj/item/weapon/grenade/smokebomb
) )
/obj/random/grenade/lethal
name = "Random Grenade"
desc = "This is random thrown grenade that hurts a lot."
icon_state = "grenade_3"
/obj/random/grenade/lethal/item_to_spawn()
return pick( prob(15);/obj/item/weapon/grenade/concussion,
prob(5);/obj/item/weapon/grenade/empgrenade,
prob(2);/obj/item/weapon/grenade/chem_grenade/incendiary,
prob(5);/obj/item/weapon/grenade/explosive,
prob(10);/obj/item/weapon/grenade/explosive/mini,
prob(2);/obj/item/weapon/grenade/explosive/frag
)
/obj/random/grenade/less_lethal /obj/random/grenade/less_lethal
name = "Random Security Grenade" name = "Random Security Grenade"
desc = "This is a random thrown grenade that shouldn't kill anyone." desc = "This is a random thrown grenade that shouldn't kill anyone."
icon = 'icons/obj/grenade.dmi' icon_state = "grenade"
icon_state = "clusterbang_segment"
/obj/random/grenade/less_lethal/item_to_spawn() /obj/random/grenade/less_lethal/item_to_spawn()
return pick( prob(20);/obj/item/weapon/grenade/concussion, return pick( prob(20);/obj/item/weapon/grenade/concussion,
@@ -199,8 +221,7 @@
/obj/random/grenade/box /obj/random/grenade/box
name = "Random Grenade Box" name = "Random Grenade Box"
desc = "This is a random box of grenades. Not to be mistaken for a box of random grenades. Or a grenade of random boxes - but that would just be silly." desc = "This is a random box of grenades. Not to be mistaken for a box of random grenades. Or a grenade of random boxes - but that would just be silly."
icon = 'icons/obj/grenade.dmi' icon_state = "grenade_box"
icon_state = "clusterbang_segment"
/obj/random/grenade/box/item_to_spawn() /obj/random/grenade/box/item_to_spawn()
return pick( prob(20);/obj/item/weapon/storage/box/flashbangs, return pick( prob(20);/obj/item/weapon/storage/box/flashbangs,
@@ -215,9 +236,9 @@
/obj/random/projectile/random /obj/random/projectile/random
name = "Random Projectile Weapon" name = "Random Projectile Weapon"
desc = "This is a random weapon." desc = "This is a random projectile weapon."
icon = 'icons/obj/gun.dmi' icon = 'icons/obj/gun.dmi'
icon_state = "revolver" icon_state = "gun_2"
/obj/random/projectile/random/item_to_spawn() /obj/random/projectile/random/item_to_spawn()
return pick(prob(3);/obj/random/multiple/gun/projectile/handgun, return pick(prob(3);/obj/random/multiple/gun/projectile/handgun,
@@ -228,8 +249,7 @@
/obj/random/multiple/gun/projectile/smg /obj/random/multiple/gun/projectile/smg
name = "random smg projectile gun" name = "random smg projectile gun"
desc = "Loot for PoIs." desc = "Loot for PoIs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_auto"
icon_state = "saber"
/obj/random/multiple/gun/projectile/smg/item_to_spawn() /obj/random/multiple/gun/projectile/smg/item_to_spawn()
return pick( return pick(
@@ -267,8 +287,7 @@
/obj/random/multiple/gun/projectile/rifle /obj/random/multiple/gun/projectile/rifle
name = "random rifle projectile gun" name = "random rifle projectile gun"
desc = "Loot for PoIs." desc = "Loot for PoIs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_rifle"
icon_state = "carbine"
//Concerns about the bullpup, but currently seems to be only a slightly stronger z8. But we shall see. //Concerns about the bullpup, but currently seems to be only a slightly stronger z8. But we shall see.
@@ -319,8 +338,7 @@
/obj/random/multiple/gun/projectile/handgun /obj/random/multiple/gun/projectile/handgun
name = "random handgun projectile gun" name = "random handgun projectile gun"
desc = "Loot for PoIs." desc = "Loot for PoIs."
icon = 'icons/obj/gun.dmi' icon_state = "gun"
icon_state = "revolver"
/obj/random/multiple/gun/projectile/handgun/item_to_spawn() /obj/random/multiple/gun/projectile/handgun/item_to_spawn()
return pick( return pick(
@@ -451,8 +469,7 @@
/obj/random/multiple/gun/projectile/shotgun /obj/random/multiple/gun/projectile/shotgun
name = "random shotgun projectile gun" name = "random shotgun projectile gun"
desc = "Loot for PoIs." desc = "Loot for PoIs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_shotgun"
icon_state = "shotgun"
/obj/random/multiple/gun/projectile/shotgun/item_to_spawn() /obj/random/multiple/gun/projectile/shotgun/item_to_spawn()
return pick( return pick(
@@ -485,7 +502,7 @@
name = "broken gun spawner" name = "broken gun spawner"
desc = "Spawns a random broken gun, or rarely a fully functional one." desc = "Spawns a random broken gun, or rarely a fully functional one."
icon = 'icons/obj/gun.dmi' icon = 'icons/obj/gun.dmi'
icon_state = "revolver" icon_state = "gun_scrap"
/obj/random/projectile/scrapped_gun/item_to_spawn() /obj/random/projectile/scrapped_gun/item_to_spawn()
return pickweight(list( return pickweight(list(
@@ -503,8 +520,7 @@
/obj/random/projectile/scrapped_shotgun /obj/random/projectile/scrapped_shotgun
name = "broken shotgun spawner" name = "broken shotgun spawner"
desc = "Loot for PoIs, or their mobs." desc = "Loot for PoIs, or their mobs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_scrap"
icon_state = "shotgun"
/obj/random/projectile/scrapped_shotgun/item_to_spawn() /obj/random/projectile/scrapped_shotgun/item_to_spawn()
return pickweight(list( return pickweight(list(
@@ -517,8 +533,7 @@
/obj/random/projectile/scrapped_smg /obj/random/projectile/scrapped_smg
name = "broken smg spawner" name = "broken smg spawner"
desc = "Loot for PoIs, or their mobs." desc = "Loot for PoIs, or their mobs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_scrap"
icon_state = "revolver"
/obj/random/projectile/scrapped_smg/item_to_spawn() /obj/random/projectile/scrapped_smg/item_to_spawn()
return pickweight(list( return pickweight(list(
@@ -529,8 +544,7 @@
/obj/random/projectile/scrapped_pistol /obj/random/projectile/scrapped_pistol
name = "broken pistol spawner" name = "broken pistol spawner"
desc = "Loot for PoIs, or their mobs." desc = "Loot for PoIs, or their mobs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_scrap"
icon_state = "revolver"
/obj/random/projectile/scrapped_pistol/item_to_spawn() /obj/random/projectile/scrapped_pistol/item_to_spawn()
return pickweight(list( return pickweight(list(
@@ -541,8 +555,7 @@
/obj/random/projectile/scrapped_laser /obj/random/projectile/scrapped_laser
name = "broken laser spawner" name = "broken laser spawner"
desc = "Loot for PoIs, or their mobs." desc = "Loot for PoIs, or their mobs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_scrap"
icon_state = "revolver"
/obj/random/projectile/scrapped_laser/item_to_spawn() /obj/random/projectile/scrapped_laser/item_to_spawn()
return pickweight(list( return pickweight(list(
@@ -555,8 +568,7 @@
/obj/random/projectile/scrapped_ionrifle /obj/random/projectile/scrapped_ionrifle
name = "broken ionrifle spawner" name = "broken ionrifle spawner"
desc = "Loot for PoIs, or their mobs." desc = "Loot for PoIs, or their mobs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_scrap"
icon_state = "revolver"
/obj/random/projectile/scrapped_ionrifle/item_to_spawn() /obj/random/projectile/scrapped_ionrifle/item_to_spawn()
return pickweight(list( return pickweight(list(
@@ -567,8 +579,7 @@
/obj/random/projectile/scrapped_bulldog /obj/random/projectile/scrapped_bulldog
name = "broken z8 spawner" name = "broken z8 spawner"
desc = "Loot for PoIs, or their mobs." desc = "Loot for PoIs, or their mobs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_scrap"
icon_state = "revolver"
/obj/random/projectile/scrapped_bulldog/item_to_spawn() /obj/random/projectile/scrapped_bulldog/item_to_spawn()
return pickweight(list( return pickweight(list(
@@ -579,8 +590,7 @@
/obj/random/projectile/scrapped_flechette /obj/random/projectile/scrapped_flechette
name = "broken flechette spawner" name = "broken flechette spawner"
desc = "Loot for PoIs, or their mobs." desc = "Loot for PoIs, or their mobs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_scrap"
icon_state = "revolver"
/obj/random/projectile/scrapped_flechette/item_to_spawn() /obj/random/projectile/scrapped_flechette/item_to_spawn()
return pickweight(list( return pickweight(list(
@@ -591,8 +601,7 @@
/obj/random/projectile/scrapped_grenadelauncher /obj/random/projectile/scrapped_grenadelauncher
name = "broken grenadelauncher spawner" name = "broken grenadelauncher spawner"
desc = "Loot for PoIs, or their mobs." desc = "Loot for PoIs, or their mobs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_scrap"
icon_state = "revolver"
/obj/random/projectile/scrapped_grenadelauncher/item_to_spawn() /obj/random/projectile/scrapped_grenadelauncher/item_to_spawn()
return pickweight(list( return pickweight(list(
@@ -603,8 +612,7 @@
/obj/random/projectile/scrapped_dartgun /obj/random/projectile/scrapped_dartgun
name = "broken dartgun spawner" name = "broken dartgun spawner"
desc = "Loot for PoIs, or their mobs." desc = "Loot for PoIs, or their mobs."
icon = 'icons/obj/gun.dmi' icon_state = "gun_scrap"
icon_state = "revolver"
/obj/random/projectile/scrapped_dartgun/item_to_spawn() /obj/random/projectile/scrapped_dartgun/item_to_spawn()
return pickweight(list( return pickweight(list(

View File

@@ -1,8 +1,6 @@
/obj/random/maintenance //Clutter and loot for maintenance and away missions /obj/random/maintenance //Clutter and loot for maintenance and away missions
name = "random maintenance item" name = "random maintenance item"
desc = "This is a random maintenance item." desc = "This is a random maintenance item."
icon = 'icons/obj/items.dmi'
icon_state = "gift1"
/obj/random/maintenance/item_to_spawn() /obj/random/maintenance/item_to_spawn()
return pick(prob(300);/obj/random/tech_supply, return pick(prob(300);/obj/random/tech_supply,
@@ -25,8 +23,6 @@ Individual items to add to the maintenance list should go here, if you add
something, make sure it's not in one of the other lists.*/ something, make sure it's not in one of the other lists.*/
name = "random clean maintenance item" name = "random clean maintenance item"
desc = "This is a random clean maintenance item." desc = "This is a random clean maintenance item."
icon = 'icons/obj/items.dmi'
icon_state = "gift1"
/obj/random/maintenance/clean/item_to_spawn() /obj/random/maintenance/clean/item_to_spawn()
return pick(prob(10);/obj/random/contraband, return pick(prob(10);/obj/random/contraband,
@@ -123,8 +119,7 @@ something, make sure it's not in one of the other lists.*/
/*Maintenance loot list. This one is for around security areas*/ /*Maintenance loot list. This one is for around security areas*/
name = "random security maintenance item" name = "random security maintenance item"
desc = "This is a random security maintenance item." desc = "This is a random security maintenance item."
icon = 'icons/obj/items.dmi' icon_state = "security"
icon_state = "gift1"
/obj/random/maintenance/security/item_to_spawn() /obj/random/maintenance/security/item_to_spawn()
return pick(prob(320);/obj/random/maintenance/clean, return pick(prob(320);/obj/random/maintenance/clean,
@@ -180,8 +175,7 @@ something, make sure it's not in one of the other lists.*/
/*Maintenance loot list. This one is for around medical areas*/ /*Maintenance loot list. This one is for around medical areas*/
name = "random medical maintenance item" name = "random medical maintenance item"
desc = "This is a random medical maintenance item." desc = "This is a random medical maintenance item."
icon = 'icons/obj/items.dmi' icon_state = "medical"
icon_state = "gift1"
/obj/random/maintenance/medical/item_to_spawn() /obj/random/maintenance/medical/item_to_spawn()
return pick(prob(320);/obj/random/maintenance/clean, return pick(prob(320);/obj/random/maintenance/clean,
@@ -220,8 +214,7 @@ something, make sure it's not in one of the other lists.*/
/*Maintenance loot list. This one is for around medical areas*/ /*Maintenance loot list. This one is for around medical areas*/
name = "random engineering maintenance item" name = "random engineering maintenance item"
desc = "This is a random engineering maintenance item." desc = "This is a random engineering maintenance item."
icon = 'icons/obj/items.dmi' icon_state = "tool"
icon_state = "gift1"
/obj/random/maintenance/engineering/item_to_spawn() /obj/random/maintenance/engineering/item_to_spawn()
return pick(prob(320);/obj/random/maintenance/clean, return pick(prob(320);/obj/random/maintenance/clean,
@@ -258,8 +251,7 @@ something, make sure it's not in one of the other lists.*/
/*Maintenance loot list. This one is for around medical areas*/ /*Maintenance loot list. This one is for around medical areas*/
name = "random research maintenance item" name = "random research maintenance item"
desc = "This is a random research maintenance item." desc = "This is a random research maintenance item."
icon = 'icons/obj/items.dmi' icon_state = "science"
icon_state = "gift1"
/obj/random/maintenance/research/item_to_spawn() /obj/random/maintenance/research/item_to_spawn()
return pick(prob(320);/obj/random/maintenance/clean, return pick(prob(320);/obj/random/maintenance/clean,
@@ -290,8 +282,6 @@ something, make sure it's not in one of the other lists.*/
/*Maintenance loot list. This one is for around cargo areas*/ /*Maintenance loot list. This one is for around cargo areas*/
name = "random cargo maintenance item" name = "random cargo maintenance item"
desc = "This is a random cargo maintenance item." desc = "This is a random cargo maintenance item."
icon = 'icons/obj/items.dmi'
icon_state = "gift1"
/obj/random/maintenance/cargo/item_to_spawn() /obj/random/maintenance/cargo/item_to_spawn()
return pick(prob(320);/obj/random/maintenance/clean, return pick(prob(320);/obj/random/maintenance/clean,

View File

@@ -1,8 +1,7 @@
/obj/random/mech /obj/random/mech
name = "random mech" name = "random mech"
desc = "This is a random single mech." desc = "This is a random single mech."
icon = 'icons/mecha/mecha.dmi' icon_state = "mecha"
icon_state = "old_durand"
drop_get_turf = FALSE drop_get_turf = FALSE
//This list includes the phazon, gorilla and mauler. You might want to use something else if balance is a concern. //This list includes the phazon, gorilla and mauler. You might want to use something else if balance is a concern.
@@ -25,8 +24,6 @@
/obj/random/mech/weaker /obj/random/mech/weaker
name = "random mech" name = "random mech"
desc = "This is a random single mech. Those are less potent and more common." desc = "This is a random single mech. Those are less potent and more common."
icon = 'icons/mecha/mecha.dmi'
icon_state = "old_durand"
drop_get_turf = FALSE drop_get_turf = FALSE
/obj/random/mech/weaker/item_to_spawn() /obj/random/mech/weaker/item_to_spawn()
@@ -42,8 +39,6 @@
/obj/random/mech/old /obj/random/mech/old
name = "random mech" name = "random mech"
desc = "This is a random single old mech." desc = "This is a random single old mech."
icon = 'icons/mecha/mecha.dmi'
icon_state = "old_durand"
drop_get_turf = FALSE drop_get_turf = FALSE
//Note that all of those are worn out and have slightly less maximal health than the standard. //Note that all of those are worn out and have slightly less maximal health than the standard.

View File

@@ -6,8 +6,7 @@
/obj/random/tool /obj/random/tool
name = "random tool" name = "random tool"
desc = "This is a random tool" desc = "This is a random tool"
icon = 'icons/obj/tools.dmi' icon_state = "tool"
icon_state = "welder"
/obj/random/tool/item_to_spawn() /obj/random/tool/item_to_spawn()
return pick(/obj/item/weapon/tool/screwdriver, return pick(/obj/item/weapon/tool/screwdriver,
@@ -22,7 +21,7 @@
/obj/random/tool/powermaint /obj/random/tool/powermaint
name = "random powertool" name = "random powertool"
desc = "This is a random rare powertool for maintenance" desc = "This is a random rare powertool for maintenance"
icon_state = "jaws_pry" icon_state = "tool_2"
/obj/random/tool/powermaint/item_to_spawn() /obj/random/tool/powermaint/item_to_spawn()
return pick(prob(320);/obj/random/tool, return pick(prob(320);/obj/random/tool,
@@ -34,7 +33,7 @@
/obj/random/tool/power /obj/random/tool/power
name = "random powertool" name = "random powertool"
desc = "This is a random powertool" desc = "This is a random powertool"
icon_state = "jaws_pry" icon_state = "tool_2"
/obj/random/tool/power/item_to_spawn() /obj/random/tool/power/item_to_spawn()
return pick(/obj/item/weapon/tool/screwdriver/power, return pick(/obj/item/weapon/tool/screwdriver/power,
@@ -45,8 +44,7 @@
/obj/random/tool/alien /obj/random/tool/alien
name = "random alien tool" name = "random alien tool"
desc = "This is a random tool" desc = "This is a random tool"
icon = 'icons/obj/abductor.dmi' icon_state = "tool_3"
icon_state = "welder"
/obj/random/tool/alien/item_to_spawn() /obj/random/tool/alien/item_to_spawn()
return pick(/obj/item/weapon/tool/screwdriver/alien, return pick(/obj/item/weapon/tool/screwdriver/alien,
@@ -60,8 +58,7 @@
/obj/random/technology_scanner /obj/random/technology_scanner
name = "random scanner" name = "random scanner"
desc = "This is a random technology scanner." desc = "This is a random technology scanner."
icon = 'icons/obj/device.dmi' icon_state = "tech"
icon_state = "atmos"
/obj/random/technology_scanner/item_to_spawn() /obj/random/technology_scanner/item_to_spawn()
return pick(prob(5);/obj/item/device/t_scanner, return pick(prob(5);/obj/item/device/t_scanner,
@@ -85,8 +82,7 @@
/obj/random/bomb_supply /obj/random/bomb_supply
name = "bomb supply" name = "bomb supply"
desc = "This is a random bomb supply." desc = "This is a random bomb supply."
icon = 'icons/obj/assemblies/new_assemblies.dmi' icon_state = "tech"
icon_state = "signaller"
/obj/random/bomb_supply/item_to_spawn() /obj/random/bomb_supply/item_to_spawn()
return pick(/obj/item/device/assembly/igniter, return pick(/obj/item/device/assembly/igniter,
@@ -99,8 +95,7 @@
/obj/random/toolbox /obj/random/toolbox
name = "random toolbox" name = "random toolbox"
desc = "This is a random toolbox." desc = "This is a random toolbox."
icon = 'icons/obj/storage.dmi' icon_state = "toolbox"
icon_state = "red"
/obj/random/toolbox/item_to_spawn() /obj/random/toolbox/item_to_spawn()
return pick(prob(6);/obj/item/weapon/storage/toolbox/mechanical, return pick(prob(6);/obj/item/weapon/storage/toolbox/mechanical,
@@ -111,8 +106,7 @@
/obj/random/smes_coil /obj/random/smes_coil
name = "random smes coil" name = "random smes coil"
desc = "This is a random smes coil." desc = "This is a random smes coil."
icon = 'icons/obj/power.dmi' icon_state = "cell_2"
icon_state = "smes"
/obj/random/smes_coil/item_to_spawn() /obj/random/smes_coil/item_to_spawn()
return pick(prob(4);/obj/item/weapon/smes_coil, return pick(prob(4);/obj/item/weapon/smes_coil,
@@ -122,8 +116,7 @@
/obj/random/pacman /obj/random/pacman
name = "random portable generator" name = "random portable generator"
desc = "This is a random portable generator." desc = "This is a random portable generator."
icon = 'icons/obj/power.dmi' icon_state = "cell_3"
icon_state = "portgen0"
/obj/random/pacman/item_to_spawn() /obj/random/pacman/item_to_spawn()
return pick(prob(6);/obj/machinery/power/port_gen/pacman, return pick(prob(6);/obj/machinery/power/port_gen/pacman,
@@ -161,8 +154,7 @@
/obj/random/tech_supply/component /obj/random/tech_supply/component
name = "random tech component" name = "random tech component"
desc = "This is a random machine component." desc = "This is a random machine component."
icon = 'icons/obj/items.dmi' icon_state = "tech"
icon_state = "portable_analyzer"
/obj/random/tech_supply/component/item_to_spawn() /obj/random/tech_supply/component/item_to_spawn()
return pick(prob(3);/obj/item/weapon/stock_parts/gear, return pick(prob(3);/obj/item/weapon/stock_parts/gear,
@@ -188,8 +180,7 @@
/obj/random/medical /obj/random/medical
name = "Random Medicine" name = "Random Medicine"
desc = "This is a random medical item." desc = "This is a random medical item."
icon = 'icons/obj/stacks.dmi' icon_state = "medical"
icon_state = "traumakit"
/obj/random/medical/item_to_spawn() /obj/random/medical/item_to_spawn()
return pick(prob(21);/obj/random/medical/lite, return pick(prob(21);/obj/random/medical/lite,
@@ -208,8 +199,7 @@
/obj/random/medical/pillbottle /obj/random/medical/pillbottle
name = "Random Pill Bottle" name = "Random Pill Bottle"
desc = "This is a random pill bottle." desc = "This is a random pill bottle."
icon = 'icons/obj/chemical.dmi' icon_state = "pillbottle"
icon_state = "pill_canister"
/obj/random/medical/pillbottle/item_to_spawn() /obj/random/medical/pillbottle/item_to_spawn()
return pick(prob(1);/obj/item/weapon/storage/pill_bottle/spaceacillin, return pick(prob(1);/obj/item/weapon/storage/pill_bottle/spaceacillin,
@@ -221,8 +211,7 @@
/obj/random/medical/lite /obj/random/medical/lite
name = "Random Medicine" name = "Random Medicine"
desc = "This is a random simple medical item." desc = "This is a random simple medical item."
icon = 'icons/obj/items.dmi' icon_state = "medical"
icon_state = "brutepack"
spawn_nothing_percentage = 25 spawn_nothing_percentage = 25
/obj/random/medical/lite/item_to_spawn() /obj/random/medical/lite/item_to_spawn()
@@ -240,8 +229,7 @@
/obj/random/firstaid /obj/random/firstaid
name = "Random First Aid Kit" name = "Random First Aid Kit"
desc = "This is a random first aid kit." desc = "This is a random first aid kit."
icon = 'icons/obj/storage.dmi' icon_state = "medicalkit"
icon_state = "firstaid"
/obj/random/firstaid/item_to_spawn() /obj/random/firstaid/item_to_spawn()
return pick(prob(10);/obj/item/weapon/storage/firstaid/regular, return pick(prob(10);/obj/item/weapon/storage/firstaid/regular,
@@ -255,8 +243,7 @@
/obj/random/contraband /obj/random/contraband
name = "Random Illegal Item" name = "Random Illegal Item"
desc = "Hot Stuff." desc = "Hot Stuff."
icon = 'icons/obj/items.dmi' icon_state = "sus"
icon_state = "purplecomb"
spawn_nothing_percentage = 50 spawn_nothing_percentage = 50
/obj/random/contraband/item_to_spawn() /obj/random/contraband/item_to_spawn()
return pick(prob(6);/obj/item/weapon/storage/pill_bottle/paracetamol, //VOREStation Edit, return pick(prob(6);/obj/item/weapon/storage/pill_bottle/paracetamol, //VOREStation Edit,
@@ -505,8 +492,7 @@
/obj/random/material //Random materials for building stuff /obj/random/material //Random materials for building stuff
name = "random material" name = "random material"
desc = "This is a random material." desc = "This is a random material."
icon = 'icons/obj/stacks.dmi' icon_state = "material"
icon_state = "sheet-metal_2"
/obj/random/material/item_to_spawn() /obj/random/material/item_to_spawn()
return pick(/obj/item/stack/material/steel{amount = 10}, return pick(/obj/item/stack/material/steel{amount = 10},
@@ -524,8 +510,7 @@
/obj/random/material/refined //Random materials for building stuff /obj/random/material/refined //Random materials for building stuff
name = "random refined material" name = "random refined material"
desc = "This is a random refined metal." desc = "This is a random refined metal."
icon = 'icons/obj/stacks.dmi' icon_state = "material_2"
icon_state = "sheet-adamantine_3"
/obj/random/material/refined/item_to_spawn() /obj/random/material/refined/item_to_spawn()
return pick(/obj/item/stack/material/steel{amount = 10}, return pick(/obj/item/stack/material/steel{amount = 10},
@@ -555,8 +540,7 @@
/obj/random/material/precious //Precious metals, go figure /obj/random/material/precious //Precious metals, go figure
name = "random precious metal" name = "random precious metal"
desc = "This is a small stack of a random precious metal." desc = "This is a small stack of a random precious metal."
icon = 'icons/obj/stacks.dmi' icon_state = "material_3"
icon_state = "sheet-gold_2"
/obj/random/material/precious/item_to_spawn() /obj/random/material/precious/item_to_spawn()
return pick(/obj/item/stack/material/gold{amount = 5}, return pick(/obj/item/stack/material/gold{amount = 5},
@@ -790,8 +774,7 @@
/obj/random/janusmodule /obj/random/janusmodule
name = "random janus circuit" name = "random janus circuit"
desc = "A random (possibly broken) Janus module." desc = "A random (possibly broken) Janus module."
icon = 'icons/obj/abductor.dmi' icon_state = "tech_2"
icon_state = "circuit_damaged"
/obj/random/janusmodule/item_to_spawn() /obj/random/janusmodule/item_to_spawn()
return pick(subtypesof(/obj/item/weapon/circuitboard/mecha/imperion)) return pick(subtypesof(/obj/item/weapon/circuitboard/mecha/imperion))

View File

@@ -5,8 +5,7 @@
/obj/random/mob /obj/random/mob
name = "Random Animal" name = "Random Animal"
desc = "This is a random animal." desc = "This is a random animal."
icon = 'icons/mob/animal.dmi' icon_state = "animal"
icon_state = "chicken_white"
var/overwrite_hostility = 0 var/overwrite_hostility = 0
@@ -68,7 +67,7 @@
/obj/random/mob/sif /obj/random/mob/sif
name = "Random Sif Animal" name = "Random Sif Animal"
desc = "This is a random cold weather animal." desc = "This is a random cold weather animal."
icon_state = "penguin" icon_state = "animal"
mob_returns_home = 1 mob_returns_home = 1
mob_wander_distance = 10 mob_wander_distance = 10
@@ -89,7 +88,7 @@
/obj/random/mob/sif/peaceful /obj/random/mob/sif/peaceful
name = "Random Peaceful Sif Animal" name = "Random Peaceful Sif Animal"
desc = "This is a random peaceful cold weather animal." desc = "This is a random peaceful cold weather animal."
icon_state = "penguin" icon_state = "animal_passive"
mob_returns_home = 1 mob_returns_home = 1
mob_wander_distance = 12 mob_wander_distance = 12
@@ -106,7 +105,7 @@
/obj/random/mob/sif/hostile /obj/random/mob/sif/hostile
name = "Random Hostile Sif Animal" name = "Random Hostile Sif Animal"
desc = "This is a random hostile cold weather animal." desc = "This is a random hostile cold weather animal."
icon_state = "frost" icon_state = "animal_hostile"
/obj/random/mob/sif/hostile/item_to_spawn() /obj/random/mob/sif/hostile/item_to_spawn()
return pick(prob(22);/mob/living/simple_mob/animal/sif/savik, return pick(prob(22);/mob/living/simple_mob/animal/sif/savik,
@@ -169,7 +168,7 @@
/obj/random/mob/robotic /obj/random/mob/robotic
name = "Random Robot Mob" name = "Random Robot Mob"
desc = "This is a random robot." desc = "This is a random robot."
icon_state = "drone_dead" icon_state = "robot"
overwrite_hostility = 1 overwrite_hostility = 1
@@ -217,7 +216,7 @@
/obj/random/mob/robotic/hivebot /obj/random/mob/robotic/hivebot
name = "Random Hivebot" name = "Random Hivebot"
desc = "This is a random hivebot." desc = "This is a random hivebot."
icon_state = "drone3" icon_state = "robot"
mob_faction = "hivebot" mob_faction = "hivebot"
@@ -237,18 +236,58 @@
name = "Random Mouse" name = "Random Mouse"
desc = "This is a random boring maus." desc = "This is a random boring maus."
icon_state = "mouse_gray" icon_state = "mouse_gray"
spawn_nothing_percentage = 15
/obj/random/mob/mouse/item_to_spawn() /obj/random/mob/mouse/item_to_spawn()
return pick(prob(15);/mob/living/simple_mob/animal/passive/mouse/white, return pick(prob(15);/mob/living/simple_mob/animal/passive/mouse/white,
prob(30);/mob/living/simple_mob/animal/passive/mouse/brown, prob(30);/mob/living/simple_mob/animal/passive/mouse/brown,
prob(30);/mob/living/simple_mob/animal/passive/mouse/gray, prob(30);/mob/living/simple_mob/animal/passive/mouse/gray,
prob(25);/obj/random/mouseremains) //because figuring out how to come up with it picking nothing is beyond my coding ability. prob(30);/mob/living/simple_mob/animal/passive/mouse/rat)
/obj/random/mob/fish
name = "Random Fish"
desc = "This is a random fish found on Sif."
icon_state = "fish"
mob_faction = "fish"
overwrite_hostility = 1
mob_hostile = 0
mob_retaliate = 0
/obj/random/mob/fish/item_to_spawn()
return pick(prob(10);/mob/living/simple_mob/animal/passive/fish/bass,
prob(20);/mob/living/simple_mob/animal/passive/fish/icebass,
prob(20);/mob/living/simple_mob/animal/passive/fish/trout,
prob(20);/mob/living/simple_mob/animal/passive/fish/salmon,
prob(10);/mob/living/simple_mob/animal/passive/fish/pike,
prob(10);/mob/living/simple_mob/animal/passive/fish/perch,
prob(20);/mob/living/simple_mob/animal/passive/fish/murkin,
prob(15);/mob/living/simple_mob/animal/passive/fish/javelin,
prob(20);/mob/living/simple_mob/animal/passive/fish/rockfish,
prob(5);/mob/living/simple_mob/animal/passive/fish/solarfish,
prob(10);/mob/living/simple_mob/animal/passive/crab,
prob(1);/mob/living/simple_mob/animal/sif/hooligan_crab)
/obj/random/mob/bird
name = "Random Bird"
desc = "This is a random wild/feral bird."
icon_state = "bird"
mob_faction = "bird"
/obj/random/mob/bird/item_to_spawn()
return pick(prob(10);/mob/living/simple_mob/animal/passive/bird/black_bird,
prob(10);/mob/living/simple_mob/animal/passive/bird/azure_tit,
prob(20);/mob/living/simple_mob/animal/passive/bird/european_robin,
prob(10);/mob/living/simple_mob/animal/passive/bird/goldcrest,
prob(20);/mob/living/simple_mob/animal/passive/bird/ringneck_dove,
prob(10);/mob/living/simple_mob/animal/space/goose,
prob(5);/mob/living/simple_mob/animal/passive/chicken,
prob(1);/mob/living/simple_mob/animal/passive/penguin)
// Mercs // Mercs
/obj/random/mob/merc /obj/random/mob/merc
name = "Random Mercenary" name = "Random Mercenary"
desc = "This is a random PoI mercenary." desc = "This is a random PoI mercenary."
icon_state = "syndicate" icon_state = "humanoid"
mob_faction = "syndicate" mob_faction = "syndicate"
mob_returns_home = 1 mob_returns_home = 1
@@ -270,7 +309,7 @@
/obj/random/mob/merc/armored /obj/random/mob/merc/armored
name = "Random Armored Infantry Merc" name = "Random Armored Infantry Merc"
desc = "This is a random PoI exo or robot for mercs." desc = "This is a random PoI exo or robot for mercs."
icon_state = "drone3" icon_state = "mecha"
/obj/random/mob/merc/armored/item_to_spawn() /obj/random/mob/merc/armored/item_to_spawn()
return pick(prob(30);/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark, return pick(prob(30);/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark,
@@ -327,6 +366,7 @@
/obj/random/mob/multiple/sifmobs /obj/random/mob/multiple/sifmobs
name = "Random Sifmob Pack" name = "Random Sifmob Pack"
desc = "A pack of random neutral sif mobs." desc = "A pack of random neutral sif mobs."
icon_state = "animal_group"
/obj/random/mob/multiple/sifmobs/item_to_spawn() /obj/random/mob/multiple/sifmobs/item_to_spawn()
return pick( return pick(

View File

@@ -104,6 +104,12 @@
return TRUE return TRUE
return FALSE return FALSE
/obj/structure/barricade/planks
name = "crude barricade"
icon_state = "barricade_planks"
health = 50
maxhealth = 50
/obj/structure/barricade/sandbag /obj/structure/barricade/sandbag
name = "sandbags" name = "sandbags"
desc = "Bags. Bags of sand. It's rough and coarse and somehow stays in the bag." desc = "Bags. Bags of sand. It's rough and coarse and somehow stays in the bag."

View File

@@ -3,6 +3,35 @@
desc = "It's a storage unit for athletic wear." desc = "It's a storage unit for athletic wear."
closet_appearance = /decl/closet_appearance/wardrobe/mixed closet_appearance = /decl/closet_appearance/wardrobe/mixed
starts_with = list(
/obj/item/clothing/under/shorts/grey,
/obj/item/clothing/under/shorts/black,
/obj/item/clothing/under/shorts/red,
/obj/item/clothing/under/shorts/blue,
/obj/item/clothing/under/shorts/green,
/obj/item/clothing/under/shorts/white,
/obj/item/clothing/suit/storage/toggle/track,
/obj/item/clothing/suit/storage/toggle/track/blue,
/obj/item/clothing/suit/storage/toggle/track/green,
/obj/item/clothing/suit/storage/toggle/track/red,
/obj/item/clothing/suit/storage/toggle/track/white,
/obj/item/clothing/under/pants/track,
/obj/item/clothing/under/pants/track/blue,
/obj/item/clothing/under/pants/track/green,
/obj/item/clothing/under/pants/track/white,
/obj/item/clothing/under/pants/track/red,
/obj/item/clothing/shoes/athletic = 2,
/obj/item/clothing/shoes/hitops,
/obj/item/clothing/shoes/hitops/red,
/obj/item/clothing/shoes/hitops/black,
/obj/item/clothing/shoes/hitops/blue
)
/obj/structure/closet/athletic_swimwear
name = "athletic wardrobe"
desc = "It's a storage unit for swimwear."
closet_appearance = /decl/closet_appearance/wardrobe/mixed
starts_with = list( starts_with = list(
/obj/item/clothing/under/shorts/grey, /obj/item/clothing/under/shorts/grey,
/obj/item/clothing/under/shorts/black, /obj/item/clothing/under/shorts/black,
@@ -17,6 +46,9 @@
/obj/item/clothing/under/swimsuit/striped, /obj/item/clothing/under/swimsuit/striped,
/obj/item/clothing/under/swimsuit/white, /obj/item/clothing/under/swimsuit/white,
/obj/item/clothing/under/swimsuit/earth, /obj/item/clothing/under/swimsuit/earth,
/obj/item/clothing/under/wetsuit,
/obj/item/clothing/under/wetsuit_rec,
/obj/item/clothing/under/wetsuit_skimpy,
/obj/item/clothing/mask/snorkel = 2, /obj/item/clothing/mask/snorkel = 2,
/obj/item/clothing/shoes/swimmingfins = 2) /obj/item/clothing/shoes/swimmingfins = 2)

View File

@@ -1,4 +1,5 @@
/obj/structure/girder /obj/structure/girder
name = "girder"
icon_state = "girder" icon_state = "girder"
anchored = TRUE anchored = TRUE
density = TRUE density = TRUE
@@ -418,4 +419,3 @@
/obj/structure/girder/eris /obj/structure/girder/eris
wall_type = /turf/simulated/wall/eris wall_type = /turf/simulated/wall/eris

View File

@@ -132,6 +132,8 @@
corpseshoes = /obj/item/clothing/shoes/black corpseshoes = /obj/item/clothing/shoes/black
random_species = TRUE random_species = TRUE
/obj/effect/landmark/corpse/chef /obj/effect/landmark/corpse/chef
name = "Chef" name = "Chef"
corpseuniform = /obj/item/clothing/under/rank/chef corpseuniform = /obj/item/clothing/under/rank/chef
@@ -337,3 +339,41 @@
corpseid = 1 corpseid = 1
corpseidjob = "Commander" corpseidjob = "Commander"
corpseidaccess = "Captain" corpseidaccess = "Captain"
/////////////////Lore Factions//////////////////////
/obj/effect/landmark/corpse/sifguard
name = "Patrolman"
corpseuniform = /obj/item/clothing/under/solgov/utility/sifguard
corpsesuit = /obj/item/clothing/suit/storage/hooded/wintercoat/solgov
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsemask = /obj/item/clothing/mask/balaclava
corpsehelmet = /obj/item/clothing/head/beret/solgov/sifguard
corpsegloves = /obj/item/clothing/gloves/duty
corpseshoes = /obj/item/clothing/shoes/boots/tactical
corpsepocket1 = /obj/item/clothing/accessory/armor/tag/sifguard
corpseid = 1
corpseidjob = "Sif Defense Force Patrolman"
/obj/effect/landmark/corpse/hedberg
name = "Hedberg-Hammarstrom Mercenary"
corpseuniform = /obj/item/clothing/under/solgov/utility/sifguard
corpsesuit = /obj/item/clothing/suit/storage/vest/solgov/hedberg
corpsebelt = /obj/item/weapon/storage/belt/security
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsehelmet = /obj/item/clothing/head/beret/corp/hedberg
corpseshoes = /obj/item/clothing/shoes/boots/jackboots
corpseid = 1
corpseidjob = "Hedberg-Hammarstrom Officer"
/obj/effect/landmark/corpse/hedberg/merc
name = "Hedberg-Hammarstrom Mercenary"
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
corpsehelmet = /obj/item/clothing/head/helmet/flexitac
corpsegloves = /obj/item/clothing/gloves/combat
corpseshoes = /obj/item/clothing/shoes/boots/tactical
corpseid = 1
corpseidjob = "Hedberg-Hammarstrom Enforcer"

View File

@@ -92,14 +92,17 @@
ringtype["engagement ring"] = /obj/item/clothing/gloves/ring/engagement ringtype["engagement ring"] = /obj/item/clothing/gloves/ring/engagement
ringtype["signet ring"] = /obj/item/clothing/gloves/ring/seal/signet ringtype["signet ring"] = /obj/item/clothing/gloves/ring/seal/signet
ringtype["masonic ring"] = /obj/item/clothing/gloves/ring/seal/mason ringtype["masonic ring"] = /obj/item/clothing/gloves/ring/seal/mason
ringtype["ring, steel"] = /obj/item/clothing/gloves/ring/material/steel
ringtype["ring, iron"] = /obj/item/clothing/gloves/ring/material/iron
ringtype["ring, silver"] = /obj/item/clothing/gloves/ring/material/silver
ringtype["ring, gold"] = /obj/item/clothing/gloves/ring/material/gold
ringtype["ring, platinum"] = /obj/item/clothing/gloves/ring/material/platinum
ringtype["ring, glass"] = /obj/item/clothing/gloves/ring/material/glass ringtype["ring, glass"] = /obj/item/clothing/gloves/ring/material/glass
ringtype["ring, wood"] = /obj/item/clothing/gloves/ring/material/wood ringtype["ring, wood"] = /obj/item/clothing/gloves/ring/material/wood
ringtype["ring, plastic"] = /obj/item/clothing/gloves/ring/material/plastic ringtype["ring, plastic"] = /obj/item/clothing/gloves/ring/material/plastic
ringtype["ring, iron"] = /obj/item/clothing/gloves/ring/material/iron
ringtype["ring, bronze"] = /obj/item/clothing/gloves/ring/material/bronze
ringtype["ring, steel"] = /obj/item/clothing/gloves/ring/material/steel
ringtype["ring, copper"] = /obj/item/clothing/gloves/ring/material/copper
ringtype["ring, silver"] = /obj/item/clothing/gloves/ring/material/silver
ringtype["ring, gold"] = /obj/item/clothing/gloves/ring/material/gold
ringtype["ring, platinum"] = /obj/item/clothing/gloves/ring/material/platinum
gear_tweaks += new/datum/gear_tweak/path(ringtype) gear_tweaks += new/datum/gear_tweak/path(ringtype)
/datum/gear/gloves/circuitry /datum/gear/gloves/circuitry

View File

@@ -20,28 +20,52 @@
return material return material
/obj/item/clothing/gloves/ring/material/wood/New(var/newloc) /obj/item/clothing/gloves/ring/material/wood/New(var/newloc)
..(newloc, "wood") ..(newloc, MAT_WOOD)
/obj/item/clothing/gloves/ring/material/plastic/New(var/newloc) /obj/item/clothing/gloves/ring/material/plastic/New(var/newloc)
..(newloc, "plastic") ..(newloc, MAT_PLASTIC)
/obj/item/clothing/gloves/ring/material/iron/New(var/newloc) /obj/item/clothing/gloves/ring/material/iron/New(var/newloc)
..(newloc, "iron") ..(newloc, MAT_IRON)
/obj/item/clothing/gloves/ring/material/steel/New(var/newloc)
..(newloc, "steel")
/obj/item/clothing/gloves/ring/material/silver/New(var/newloc)
..(newloc, "silver")
/obj/item/clothing/gloves/ring/material/gold/New(var/newloc)
..(newloc, "gold")
/obj/item/clothing/gloves/ring/material/platinum/New(var/newloc)
..(newloc, "platinum")
/obj/item/clothing/gloves/ring/material/phoron/New(var/newloc)
..(newloc, "phoron")
/obj/item/clothing/gloves/ring/material/glass/New(var/newloc) /obj/item/clothing/gloves/ring/material/glass/New(var/newloc)
..(newloc, "glass") ..(newloc, MAT_GLASS)
/obj/item/clothing/gloves/ring/material/steel/New(var/newloc)
..(newloc, MAT_STEEL)
/obj/item/clothing/gloves/ring/material/silver/New(var/newloc)
..(newloc, MAT_SILVER)
/obj/item/clothing/gloves/ring/material/gold/New(var/newloc)
..(newloc, MAT_GOLD)
/obj/item/clothing/gloves/ring/material/platinum/New(var/newloc)
..(newloc, MAT_PLATINUM)
/obj/item/clothing/gloves/ring/material/phoron/New(var/newloc)
..(newloc, MAT_PHORON)
/obj/item/clothing/gloves/ring/material/titanium/New(var/newloc)
..(newloc, MAT_TITANIUM)
/obj/item/clothing/gloves/ring/material/copper/New(var/newloc)
..(newloc, MAT_COPPER)
/obj/item/clothing/gloves/ring/material/bronze/New(var/newloc)
..(newloc, MAT_BRONZE)
/obj/item/clothing/gloves/ring/material/uranium/New(var/newloc)
..(newloc, MAT_URANIUM)
/obj/item/clothing/gloves/ring/material/osmium/New(var/newloc)
..(newloc, MAT_OSMIUM)
/obj/item/clothing/gloves/ring/material/lead/New(var/newloc)
..(newloc, MAT_LEAD)
/obj/item/clothing/gloves/ring/material/diamond/New(var/newloc)
..(newloc, MAT_DIAMOND)
/obj/item/clothing/gloves/ring/material/tin/New(var/newloc)
..(newloc, MAT_TIN)

View File

@@ -166,7 +166,7 @@
/obj/item/clothing/shoes/athletic /obj/item/clothing/shoes/athletic
name = "athletic shoes" name = "athletic shoes"
desc = "A pair of sleek atheletic shoes. Made by and for the sporty types." desc = "A pair of sleek athletic shoes. Made by and for the sporty types."
icon_state = "sportshoe" icon_state = "sportshoe"
addblends = "sportshoe_a" addblends = "sportshoe_a"
item_state_slots = list(slot_r_hand_str = "sportheld", slot_l_hand_str = "sportheld") item_state_slots = list(slot_r_hand_str = "sportheld", slot_l_hand_str = "sportheld")

View File

@@ -1020,6 +1020,25 @@
desc = "A rather skimpy cow patterned swimsuit." desc = "A rather skimpy cow patterned swimsuit."
icon_state = "swim_cow" icon_state = "swim_cow"
/obj/item/clothing/under/wetsuit
name = "wetsuit"
desc = "For when you need to scuba dive your way into an enemy base."
icon_state = "wetsuit"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
/obj/item/clothing/under/wetsuit_skimpy
name = "tactical wetsuit"
desc = "For when you need to scuba dive your way into an enemy base but still want to show off a little skin."
icon_state = "wetsuit_skimpy"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
/obj/item/clothing/under/wetsuit_rec
name = "recreational wetsuit"
desc = "For when you need to kayak your way into an enemy base."
icon_state = "wetsuit_rec"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
cold_protection = UPPER_TORSO|LOWER_TORSO
/* /*
* Pyjamas * Pyjamas

View File

@@ -98,16 +98,11 @@
if(!reagents.total_volume) if(!reagents.total_volume)
to_chat(user, "<span class='warning'>The [initial(name)] is dry!</span>") to_chat(user, "<span class='warning'>The [initial(name)] is dry!</span>")
else else
user.visible_message("\The [user] starts to wipe down [A] with [src]!") user.visible_message("[user] starts to wipe [A] with [src].")
//reagents.splash(A, 1) //get a small amount of liquid on the thing we're wiping.
update_name() update_name()
if(do_after(user,30)) if(do_after(user,30))
user.visible_message("\The [user] finishes wiping off the [A]!") user.visible_message("[user] finishes wiping [A]!")
A.clean_blood() A.on_rag_wipe(src)
if(istype(A, /turf) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay) || istype(A, /obj/effect/rune)) //VOREStation Edit - "Allows rags to clean dirt from turfs"
var/turf/T = get_turf(A)
if(T)
T.clean(src, user) //VOREStation Edit End
/obj/item/weapon/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag) /obj/item/weapon/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag)
if(isliving(target)) //Leaving this as isliving. if(isliving(target)) //Leaving this as isliving.

View File

@@ -216,6 +216,9 @@
/datum/reagent/ethanol/cuba_libre /datum/reagent/ethanol/cuba_libre
price_tag = 4 price_tag = 4
/datum/reagent/ethanol/rum_and_cola
price_tag = 4
/datum/reagent/ethanol/demonsblood /datum/reagent/ethanol/demonsblood
price_tag = 4 price_tag = 4

View File

@@ -373,6 +373,10 @@ Drinks Data
glass_icon_state = "martiniglass" glass_icon_state = "martiniglass"
glass_center_of_mass = list("x"=17, "y"=8) glass_center_of_mass = list("x"=17, "y"=8)
/datum/reagent/ethanol/rum_and_cola
glass_icon_state = "rumcolaglass"
glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/cuba_libre /datum/reagent/ethanol/cuba_libre
glass_icon_state = "cubalibreglass" glass_icon_state = "cubalibreglass"
glass_center_of_mass = list("x"=16, "y"=8) glass_center_of_mass = list("x"=16, "y"=8)

View File

@@ -38,6 +38,9 @@
qdel(src) qdel(src)
return return
/obj/item/weapon/reagent_containers/food/drinks/on_rag_wipe(var/obj/item/weapon/reagent_containers/glass/rag/R)
clean_blood()
/obj/item/weapon/reagent_containers/food/drinks/attack_self(mob/user as mob) /obj/item/weapon/reagent_containers/food/drinks/attack_self(mob/user as mob)
if(!is_open_container()) if(!is_open_container())
open(user) open(user)

View File

@@ -630,7 +630,6 @@
plastic.add_charge(total_material) plastic.add_charge(total_material)
if(material == "wood") if(material == "wood")
wood.add_charge(total_material) wood.add_charge(total_material)
else
drain(-50 * digested) drain(-50 * digested)
else if(istype(target,/obj/effect/decal/remains)) else if(istype(target,/obj/effect/decal/remains))
qdel(target) qdel(target)

View File

@@ -26,8 +26,8 @@
//Hoooo boy. //Hoooo boy.
/datum/riding/taur/get_offsets(pass_index) // list(dir = x, y, layer) /datum/riding/taur/get_offsets(pass_index) // list(dir = x, y, layer)
var/mob/living/L = ridden var/mob/living/L = ridden
var/scale_x = L.icon_scale_x var/scale_x = L.icon_scale_x * L.size_multiplier //VOREStation Edit
var/scale_y = L.icon_scale_y var/scale_y = L.icon_scale_y * L.size_multiplier //VOREStation Edit
var/list/values = list( var/list/values = list(
"[NORTH]" = list(0, 8*scale_y, ABOVE_MOB_LAYER), "[NORTH]" = list(0, 8*scale_y, ABOVE_MOB_LAYER),

View File

@@ -5,15 +5,16 @@
known = FALSE known = FALSE
in_space = TRUE in_space = TRUE
/obj/effect/overmap/visitable/sector/temporary/Initialize(var/nx, var/ny) /obj/effect/overmap/visitable/sector/temporary/Initialize()
if(!istype(loc, /turf/unsimulated/map))
CRASH("Attempt to create deepspace which is not on overmap: [log_info_line(loc)]")
// Tell sector initializer where are is where we want to be.
start_x = loc.x
start_y = loc.y
// But pick an empty z level to use
map_z += global.using_map.get_empty_zlevel()
. = ..() . = ..()
loc = locate(nx, ny, global.using_map.overmap_z) testing("Temporary sector at [x],[y],[z] was created, corresponding zlevel is [english_list(map_z)].")
x = nx
y = ny
var/emptyz = global.using_map.get_empty_zlevel()
map_z += emptyz
map_sectors["[emptyz]"] = src
testing("Temporary sector at [x],[y] was created, corresponding zlevel is [emptyz].")
/obj/effect/overmap/visitable/sector/temporary/Destroy() /obj/effect/overmap/visitable/sector/temporary/Destroy()
for(var/zlevel in map_z) for(var/zlevel in map_z)
@@ -43,7 +44,7 @@
var/obj/effect/overmap/visitable/sector/temporary/res = locate() in overmap_turf var/obj/effect/overmap/visitable/sector/temporary/res = locate() in overmap_turf
if(istype(res)) if(istype(res))
return res return res
return new /obj/effect/overmap/visitable/sector/temporary(x, y) return new /obj/effect/overmap/visitable/sector/temporary(overmap_turf)
/atom/movable/proc/lost_in_space() /atom/movable/proc/lost_in_space()
for(var/atom/movable/AM in contents) for(var/atom/movable/AM in contents)
@@ -133,6 +134,8 @@
TM = get_deepspace(M.x,M.y) TM = get_deepspace(M.x,M.y)
nz = pick(TM.get_space_zlevels()) nz = pick(TM.get_space_zlevels())
testing("spacetravel chose [nz],[ny],[nz] in sector [TM] @ ([TM.x],[TM.y],[TM.z])")
var/turf/dest = locate(nx,ny,nz) var/turf/dest = locate(nx,ny,nz)
if(istype(dest)) if(istype(dest))
A.forceMove(dest) A.forceMove(dest)

View File

@@ -185,11 +185,18 @@
required_reagents = list("gin" = 2, "tonic" = 1) required_reagents = list("gin" = 2, "tonic" = 1)
result_amount = 3 result_amount = 3
/decl/chemical_reaction/instant/drinks/rum_and_cola
name = "Rum and Cola"
id = "rumandcola"
result = "rumandcola"
required_reagents = list("rum" = 2, "cola" = 1)
result_amount = 3
/decl/chemical_reaction/instant/drinks/cuba_libre /decl/chemical_reaction/instant/drinks/cuba_libre
name = "Cuba Libre" name = "Cuba Libre"
id = "cubalibre" id = "cubalibre"
result = "cubalibre" result = "cubalibre"
required_reagents = list("rum" = 2, "cola" = 1) required_reagents = list("rumcola" = 3, "limejuice" = 1)
result_amount = 3 result_amount = 3
/decl/chemical_reaction/instant/drinks/martini /decl/chemical_reaction/instant/drinks/martini
@@ -329,14 +336,14 @@
name = "Long Island Iced Tea" name = "Long Island Iced Tea"
id = "longislandicedtea" id = "longislandicedtea"
result = "longislandicedtea" result = "longislandicedtea"
required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3) required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "rumcoke" = 3)
result_amount = 6 result_amount = 6
/decl/chemical_reaction/instant/drinks/icedtea /decl/chemical_reaction/instant/drinks/icedtea
name = "Long Island Iced Tea" name = "Long Island Iced Tea"
id = "longislandicedtea" id = "longislandicedtea"
result = "longislandicedtea" result = "longislandicedtea"
required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 3) required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "rumcoke" = 3)
result_amount = 6 result_amount = 6
/decl/chemical_reaction/instant/drinks/threemileisland /decl/chemical_reaction/instant/drinks/threemileisland

View File

@@ -3189,55 +3189,25 @@
/datum/reagent/ethanol/cuba_libre /datum/reagent/ethanol/cuba_libre
name = "Cuba Libre" name = "Cuba Libre"
id = "cubalibre" id = "cubalibre"
<<<<<<< HEAD
description = "Rum, mixed with cola. Viva la revolucion."
||||||| parent of 147dddcf38... Merge pull request #11579 from VOREStation/upstream-merge-8283
description = "Rum, mixed with cola and a splash of lime. Viva la revolucion." description = "Rum, mixed with cola and a splash of lime. Viva la revolucion."
taste_description = "cola with lime" taste_description = "cola with lime"
color = "#3E1B00"
strength = 30
glass_name = "Cuba Libre"
glass_desc = "A classic mix of rum, cola, and lime."
/datum/reagent/ethanol/rum_and_cola
name = "Rum and Cola"
id = "rumandcola"
description = "A classic mix of sugar with more sugar."
=======
description = "Rum, mixed with cola and a splash of lime. Viva la revolucion."
taste_description = "cola with lime"
color = "#3E1B00"
strength = 30
glass_name = "Cuba Libre"
glass_desc = "A classic mix of rum, cola, and lime."
allergen_type = ALLERGEN_STIMULANT //Cola
/datum/reagent/ethanol/rum_and_cola
name = "Rum and Cola"
id = "rumandcola"
description = "A classic mix of sugar with more sugar."
taste_description = "cola"
color = "#3E1B00"
strength = 30
glass_name = "Cuba Libre"
glass_desc = "A classic mix of rum, cola, and lime."
/datum/reagent/ethanol/rum_and_cola
name = "Rum and Cola"
id = "rumandcola"
description = "A classic mix of sugar with more sugar."
>>>>>>> 147dddcf38... Merge pull request #11579 from VOREStation/upstream-merge-8283
taste_description = "cola"
nutriment_factor = 1.5 //CHOMPStation addition nutriment_factor = 1.5 //CHOMPStation addition
color = "#3E1B00" color = "#3E1B00"
strength = 30 strength = 30
glass_name = "Cuba Libre" glass_name = "Cuba Libre"
glass_desc = "A classic mix of rum, cola, and lime."
/datum/reagent/ethanol/rum_and_cola
name = "Rum and Cola"
id = "rumandcola"
description = "A classic mix of sugar with more sugar."
taste_description = "cola"
color = "#3E1B00"
strength = 30
glass_name = "rum and cola"
glass_desc = "A classic mix of rum and cola." glass_desc = "A classic mix of rum and cola."
allergen_type = ALLERGEN_STIMULANT // Cola
/datum/reagent/ethanol/demonsblood /datum/reagent/ethanol/demonsblood
name = "Demons Blood" name = "Demons Blood"

View File

@@ -224,8 +224,8 @@ GLOBAL_LIST_INIT(digest_modes, list())
B.ownegg.calibrate_size() B.ownegg.calibrate_size()
B.ownegg.orient2hud() B.ownegg.orient2hud()
B.ownegg.w_class = clamp(B.ownegg.w_class * 0.25, 1, 8) //A total w_class of 16 will result in a backpack sized egg. B.ownegg.w_class = clamp(B.ownegg.w_class * 0.25, 1, 8) //A total w_class of 16 will result in a backpack sized egg.
B.ownegg.icon_scale_x = 0.25 * B.ownegg.w_class B.ownegg.icon_scale_x = clamp(0.25 * B.ownegg.w_class, 0.25, 1)
B.ownegg.icon_scale_y = 0.25 * B.ownegg.w_class B.ownegg.icon_scale_y = clamp(0.25 * B.ownegg.w_class, 0.25, 1)
B.ownegg.update_transform() B.ownegg.update_transform()
if(B.ownegg.w_class > 4) if(B.ownegg.w_class > 4)
B.ownegg.slowdown = B.ownegg.w_class - 4 B.ownegg.slowdown = B.ownegg.w_class - 4

View File

@@ -139,7 +139,7 @@
if((. = ..())) if((. = ..()))
if(isbelly(item_storage)) if(isbelly(item_storage))
var/obj/belly/B = item_storage var/obj/belly/B = item_storage
. += 2 * (B.digest_brute + B.digest_burn + (B.digest_oxy)/2) . *= 3
else else
. += 30 //Organs give a little more . += 30 //Organs give a little more

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 111 KiB