Merge branch 'master' into upstream-merge-11579
@@ -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
|
||||||
|
|||||||
@@ -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(.)
|
||||||
if(R.one_per_turf)
|
return
|
||||||
for(var/content in get_turf(a))
|
|
||||||
if(istype(content, R.result))
|
if(R.one_per_turf)
|
||||||
return ", object already present."
|
for(var/content in get_turf(a))
|
||||||
//If we're a mob we'll try a do_after; non mobs will instead instantly construct the item
|
if(istype(content, R.result))
|
||||||
if(ismob(a) && !do_after(a, R.time, target = a))
|
return ", object already present."
|
||||||
return "."
|
|
||||||
contents = get_surroundings(a,R.blacklist)
|
//If we're a mob we'll try a do_after; non mobs will instead instantly construct the item
|
||||||
if(!check_contents(a, R, contents))
|
if(ismob(a) && !do_after(a, R.time, target = a))
|
||||||
return ", missing component."
|
return "."
|
||||||
if(!check_tools(a, R, contents))
|
|
||||||
return ", missing tool."
|
surroundings = get_surroundings(a, R.blacklist)
|
||||||
var/list/parts = del_reqs(R, a)
|
. = check_requirements(a, R, surroundings)
|
||||||
var/atom/movable/I = new R.result (get_turf(a.loc))
|
if(.)
|
||||||
I.CheckParts(parts, R)
|
return
|
||||||
// if(send_feedback)
|
|
||||||
// SSblackbox.record_feedback("tally", "object_crafted", 1, I.type)
|
var/list/parts = del_reqs(R, a)
|
||||||
return I //Send the item back to whatever called this proc so it can handle whatever it wants to do with the new item
|
var/atom/movable/I = new R.result (get_turf(a.loc))
|
||||||
return ", missing tool."
|
I.CheckParts(parts, R)
|
||||||
return ", missing component."
|
// if(send_feedback)
|
||||||
|
// 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
|
||||||
|
|
||||||
/*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:
|
|
||||||
for(var/path_key in requirements)
|
// Try to find everything that was actually used to craft
|
||||||
amt = R.reqs[path_key] || R.machinery[path_key]
|
for(var/path_key in requirements)
|
||||||
if(!amt)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it!
|
var/amt = requirements[path_key]
|
||||||
continue main_loop
|
if(amt <= 0)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it!
|
||||||
surroundings = get_environment(a, R.blacklist)
|
|
||||||
surroundings -= Deletion
|
|
||||||
if(ispath(path_key, /datum/reagent))
|
|
||||||
var/datum/reagent/RG = new path_key
|
|
||||||
var/datum/reagent/RGNT
|
|
||||||
while(amt > 0)
|
|
||||||
var/obj/item/weapon/reagent_containers/RC = locate() in surroundings
|
|
||||||
RG = RC.reagents.get_reagent(path_key)
|
|
||||||
if(RG)
|
|
||||||
if(!locate(RG.type) in Deletion)
|
|
||||||
Deletion += new RG.type()
|
|
||||||
if(RG.volume > amt)
|
|
||||||
RG.volume -= amt
|
|
||||||
data = RG.data
|
|
||||||
RC.reagents.conditional_update(RC)
|
|
||||||
RG = locate(RG.type) in Deletion
|
|
||||||
RG.volume = amt
|
|
||||||
RG.data += data
|
|
||||||
continue main_loop
|
|
||||||
else
|
|
||||||
surroundings -= RC
|
|
||||||
amt -= RG.volume
|
|
||||||
RC.reagents.reagent_list -= RG
|
|
||||||
RC.reagents.conditional_update(RC)
|
|
||||||
RGNT = locate(RG.type) in Deletion
|
|
||||||
RGNT.volume += RG.volume
|
|
||||||
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))
|
|
||||||
var/obj/item/stack/S
|
|
||||||
var/obj/item/stack/SD
|
|
||||||
while(amt > 0)
|
|
||||||
S = locate(path_key) in surroundings
|
|
||||||
if(S.get_amount() >= amt)
|
|
||||||
if(!locate(S.type) in Deletion)
|
|
||||||
SD = new S.type()
|
|
||||||
Deletion += SD
|
|
||||||
S.use(amt)
|
|
||||||
SD = locate(S.type) in Deletion
|
|
||||||
SD.add(amt)
|
|
||||||
continue main_loop
|
|
||||||
else
|
|
||||||
amt -= S.get_amount()
|
|
||||||
if(!locate(S.type) in Deletion)
|
|
||||||
Deletion += S
|
|
||||||
else
|
|
||||||
data = S.get_amount()
|
|
||||||
S = locate(S.type) in Deletion
|
|
||||||
S.add(data)
|
|
||||||
surroundings -= S
|
|
||||||
else
|
|
||||||
var/atom/movable/I
|
|
||||||
while(amt > 0)
|
|
||||||
I = locate(path_key) in surroundings
|
|
||||||
Deletion += I
|
|
||||||
surroundings -= I
|
|
||||||
amt--
|
|
||||||
var/list/partlist = list(R.parts.len)
|
|
||||||
for(var/M in R.parts)
|
|
||||||
partlist[M] = R.parts[M]
|
|
||||||
for(var/part in R.parts)
|
|
||||||
if(istype(part, /datum/reagent))
|
|
||||||
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 the path is in R.parts, we want to grab those to stuff into the product
|
||||||
if(ST.get_amount() > partlist[part])
|
var/amt_to_transfer = 0
|
||||||
ST.set_amount(partlist[part])
|
if(is_path_in_list(path_key, R.parts))
|
||||||
. += ST
|
amt_to_transfer = R.parts[path_key]
|
||||||
Deletion -= ST
|
|
||||||
continue
|
|
||||||
else
|
// Reagent: gotta go sniffing in all the beakers
|
||||||
while(partlist[part] > 0)
|
if(ispath(path_key, /datum/reagent))
|
||||||
var/atom/movable/AM = locate(part) in Deletion
|
var/datum/reagent/reagent = path_key
|
||||||
. += AM
|
var/id = initial(reagent.id)
|
||||||
Deletion -= AM
|
|
||||||
partlist[part] -= 1
|
for(var/obj/item/weapon/reagent_containers/RC in surroundings)
|
||||||
while(Deletion.len)
|
// Found everything we need
|
||||||
var/DL = Deletion[Deletion.len]
|
if(amt <= 0 && amt_to_transfer <= 0)
|
||||||
Deletion.Cut(Deletion.len)
|
break
|
||||||
// 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 need to keep any to put in the new object, pull it out
|
||||||
if(istype(DL, /obj/item/weapon/reagent_containers))
|
if(amt_to_transfer > 0)
|
||||||
var/obj/item/weapon/reagent_containers/container = DL
|
var/A = RC.reagents.trans_id_to(parts["reagents"], id, amt_to_transfer)
|
||||||
container.reagents.clear_reagents()
|
amt_to_transfer -= A
|
||||||
// container.reagents.expose(container.loc, TOUCH)
|
amt -= A
|
||||||
else if(istype(DL, /obj/item/weapon/storage))
|
|
||||||
var/obj/item/weapon/storage/container = DL
|
// If we need to consume some amount of it
|
||||||
container.spill()
|
if(amt > 0)
|
||||||
container.close_all()
|
var/datum/reagent/RG = RC.reagents.get_reagent(id)
|
||||||
qdel(DL)
|
var/A = min(RG.volume, amt)
|
||||||
|
RC.reagents.remove_reagent(id, A)
|
||||||
|
amt -= A
|
||||||
|
SEND_SIGNAL(RC.reagents, COMSIG_REAGENTS_CRAFTING_PING)
|
||||||
|
|
||||||
|
// Material stacks may have to accumulate across multiple stacks
|
||||||
|
else if(ispath(path_key, /obj/item/stack))
|
||||||
|
for(var/obj/item/stack/S in surroundings)
|
||||||
|
if(amt <= 0 && amt_to_transfer <= 0)
|
||||||
|
break
|
||||||
|
|
||||||
|
// This could put 50 stacks in an object but frankly so long as the amount's right we don't care
|
||||||
|
if(amt_to_transfer > 0)
|
||||||
|
var/obj/item/stack/split = S.split(amt_to_transfer)
|
||||||
|
if(istype(split))
|
||||||
|
parts["items"] += split
|
||||||
|
amt_to_transfer -= split.get_amount()
|
||||||
|
amt -= split.get_amount()
|
||||||
|
|
||||||
|
if(amt > 0)
|
||||||
|
var/A = min(amt, S.get_amount())
|
||||||
|
if(S.use(A))
|
||||||
|
amt -= A
|
||||||
|
|
||||||
|
|
||||||
|
else // Just a regular item. Find them all and delete them
|
||||||
|
for(var/atom/movable/I in surroundings)
|
||||||
|
if(amt <= 0 && amt_to_transfer <= 0)
|
||||||
|
break
|
||||||
|
|
||||||
|
if(!istype(I, path_key))
|
||||||
|
continue
|
||||||
|
|
||||||
|
// 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--
|
||||||
|
|
||||||
|
// Prepare to stuff inside product, don't delete it
|
||||||
|
if(is_path_in_list(path_key, parts))
|
||||||
|
parts["items"] += I
|
||||||
|
amt_to_transfer--
|
||||||
|
continue
|
||||||
|
|
||||||
|
// 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(istype(I, /obj/item/weapon/reagent_containers))
|
||||||
|
var/obj/item/weapon/reagent_containers/container = I
|
||||||
|
container.reagents.clear_reagents()
|
||||||
|
// container.reagents.expose(container.loc, TOUCH)
|
||||||
|
else if(istype(I, /obj/item/weapon/storage))
|
||||||
|
var/obj/item/weapon/storage/container = I
|
||||||
|
container.spill()
|
||||||
|
container.close_all()
|
||||||
|
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)
|
||||||
//We just need the name, so cheat-typecast to /atom for speed (even tho Reagents are /datum they DO have a "name" var)
|
var/list/L = list()
|
||||||
//Also these are typepaths so sadly we can't just do "[a]"
|
for(var/atom/req_atom as anything in req)
|
||||||
req_text += "[R.reqs[req_atom]] [initial(req_atom.name)]"
|
//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]"
|
||||||
|
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)
|
||||||
|
|||||||
@@ -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.conditional_update()
|
reagents = RG
|
||||||
else if(ismovable(A))
|
RG.my_atom = src
|
||||||
var/atom/movable/M = A
|
reagents.conditional_update()
|
||||||
if(isliving(M.loc))
|
|
||||||
var/mob/living/L = M.loc
|
for(var/atom/movable/M as anything in parts_list["items"])
|
||||||
L.unEquip(M, target = src)
|
if(isliving(M.loc))
|
||||||
else
|
var/mob/living/L = M.loc
|
||||||
M.forceMove(src)
|
L.unEquip(M, target = src)
|
||||||
SEND_SIGNAL(M, COMSIG_ATOM_USED_IN_CRAFT, src)
|
else
|
||||||
|
M.forceMove(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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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."
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
var/max_w_class = ITEMSIZE_SMALL //Max size of objects that this object can store (in effect only if can_hold isn't set)
|
var/max_w_class = ITEMSIZE_SMALL //Max size of objects that this object can store (in effect only if can_hold isn't set)
|
||||||
var/max_storage_space = ITEMSIZE_COST_SMALL * 4 //The sum of the storage costs of all the items in this storage item.
|
var/max_storage_space = ITEMSIZE_COST_SMALL * 4 //The sum of the storage costs of all the items in this storage item.
|
||||||
var/storage_slots = null //The number of storage slots in this container. If null, it uses the volume-based storage instead.
|
var/storage_slots = null //The number of storage slots in this container. If null, it uses the volume-based storage instead.
|
||||||
|
|
||||||
/// Boxes screen object for fixed-size storage (belts, etc)
|
/// Boxes screen object for fixed-size storage (belts, etc)
|
||||||
var/obj/screen/storage/boxes = null
|
var/obj/screen/storage/boxes = null
|
||||||
/// List of 'click catchers' for boxes for fixed-size storage
|
/// List of 'click catchers' for boxes for fixed-size storage
|
||||||
@@ -37,8 +37,8 @@
|
|||||||
var/obj/screen/storage/storage_continue = null
|
var/obj/screen/storage/storage_continue = null
|
||||||
/// For dynamic storage, the rightmost pixel column for the whole storage display. Decorative.
|
/// For dynamic storage, the rightmost pixel column for the whole storage display. Decorative.
|
||||||
var/obj/screen/storage/storage_end = null
|
var/obj/screen/storage/storage_end = null
|
||||||
|
|
||||||
/// The "X" button at the far right of the storage
|
/// The "X" button at the far right of the storage
|
||||||
var/obj/screen/close/closer = null
|
var/obj/screen/close/closer = null
|
||||||
|
|
||||||
var/use_to_pickup //Set this to make it possible to use this item in an inverse way, so you can have the item in your hand and click items on the floor to pick them up.
|
var/use_to_pickup //Set this to make it possible to use this item in an inverse way, so you can have the item in your hand and click items on the floor to pick them up.
|
||||||
@@ -189,12 +189,12 @@
|
|||||||
return
|
return
|
||||||
if(user.s_active)
|
if(user.s_active)
|
||||||
user.s_active.hide_from(user)
|
user.s_active.hide_from(user)
|
||||||
|
|
||||||
var/client/C = user.client
|
var/client/C = user.client
|
||||||
if(!C)
|
if(!C)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(storage_slots)
|
if(storage_slots)
|
||||||
C.screen += src.boxes
|
C.screen += src.boxes
|
||||||
create_slot_catchers()
|
create_slot_catchers()
|
||||||
C.screen += src.box_catchers
|
C.screen += src.box_catchers
|
||||||
@@ -202,7 +202,7 @@
|
|||||||
C.screen += src.storage_start
|
C.screen += src.storage_start
|
||||||
C.screen += src.storage_continue
|
C.screen += src.storage_continue
|
||||||
C.screen += src.storage_end
|
C.screen += src.storage_end
|
||||||
|
|
||||||
C.screen += src.closer
|
C.screen += src.closer
|
||||||
C.screen += src.contents
|
C.screen += src.contents
|
||||||
|
|
||||||
@@ -212,12 +212,12 @@
|
|||||||
/obj/item/weapon/storage/proc/hide_from(mob/user as mob)
|
/obj/item/weapon/storage/proc/hide_from(mob/user as mob)
|
||||||
var/client/C = user.client
|
var/client/C = user.client
|
||||||
LAZYREMOVE(is_seeing,user)
|
LAZYREMOVE(is_seeing,user)
|
||||||
|
|
||||||
if(!C)
|
if(!C)
|
||||||
if(!LAZYLEN(is_seeing))
|
if(!LAZYLEN(is_seeing))
|
||||||
clear_slot_catchers()
|
clear_slot_catchers()
|
||||||
return
|
return
|
||||||
|
|
||||||
if(storage_slots)
|
if(storage_slots)
|
||||||
C.screen -= src.boxes
|
C.screen -= src.boxes
|
||||||
C.screen -= src.box_catchers
|
C.screen -= src.box_catchers
|
||||||
@@ -225,13 +225,13 @@
|
|||||||
C.screen -= src.storage_start
|
C.screen -= src.storage_start
|
||||||
C.screen -= src.storage_continue
|
C.screen -= src.storage_continue
|
||||||
C.screen -= src.storage_end
|
C.screen -= src.storage_end
|
||||||
|
|
||||||
C.screen -= src.closer
|
C.screen -= src.closer
|
||||||
C.screen -= src.contents
|
C.screen -= src.contents
|
||||||
|
|
||||||
if(user.s_active == src)
|
if(user.s_active == src)
|
||||||
user.s_active = null
|
user.s_active = null
|
||||||
|
|
||||||
if(!LAZYLEN(is_seeing))
|
if(!LAZYLEN(is_seeing))
|
||||||
clear_slot_catchers()
|
clear_slot_catchers()
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@
|
|||||||
|
|
||||||
/obj/item/weapon/storage/proc/space_orient_objs(var/list/obj/item/display_contents)
|
/obj/item/weapon/storage/proc/space_orient_objs(var/list/obj/item/display_contents)
|
||||||
SHOULD_NOT_SLEEP(TRUE)
|
SHOULD_NOT_SLEEP(TRUE)
|
||||||
|
|
||||||
/// A prototype for drawing the leftmost border behind each item in storage
|
/// A prototype for drawing the leftmost border behind each item in storage
|
||||||
var/static/mutable_appearance/stored_start
|
var/static/mutable_appearance/stored_start
|
||||||
/// A prototype for drawing the wide backing space behind each item in storage
|
/// A prototype for drawing the wide backing space behind each item in storage
|
||||||
@@ -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
|
||||||
@@ -852,7 +856,7 @@
|
|||||||
ASSERT(held_item)
|
ASSERT(held_item)
|
||||||
name += held_item.name
|
name += held_item.name
|
||||||
src.held_item = weakref(held_item)
|
src.held_item = weakref(held_item)
|
||||||
|
|
||||||
/atom/movable/storage_slot/Destroy()
|
/atom/movable/storage_slot/Destroy()
|
||||||
held_item = null
|
held_item = null
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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."
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
@@ -301,7 +301,7 @@
|
|||||||
|
|
||||||
/obj/structure/bed/roller/Moved(atom/old_loc, direction, forced = FALSE)
|
/obj/structure/bed/roller/Moved(atom/old_loc, direction, forced = FALSE)
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
playsound(src, 'sound/effects/roll.ogg', 100, 1)
|
playsound(src, 'sound/effects/roll.ogg', 100, 1)
|
||||||
|
|
||||||
/obj/structure/bed/roller/post_buckle_mob(mob/living/M as mob)
|
/obj/structure/bed/roller/post_buckle_mob(mob/living/M as mob)
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -198,7 +200,7 @@
|
|||||||
corpseid = 1
|
corpseid = 1
|
||||||
corpseidjob = "Scientist"
|
corpseidjob = "Scientist"
|
||||||
corpseidaccess = "Scientist"
|
corpseidaccess = "Scientist"
|
||||||
|
|
||||||
/obj/effect/landmark/corpse/security
|
/obj/effect/landmark/corpse/security
|
||||||
name = "Security Officer"
|
name = "Security Officer"
|
||||||
corpseradio = /obj/item/device/radio/headset/headset_sec
|
corpseradio = /obj/item/device/radio/headset/headset_sec
|
||||||
@@ -212,18 +214,18 @@
|
|||||||
corpseid = 1
|
corpseid = 1
|
||||||
corpseidjob = "Security Officer"
|
corpseidjob = "Security Officer"
|
||||||
corpseidaccess = "Security Officer"
|
corpseidaccess = "Security Officer"
|
||||||
|
|
||||||
/obj/effect/landmark/corpse/security/rig
|
/obj/effect/landmark/corpse/security/rig
|
||||||
corpsesuit = /obj/item/clothing/suit/space/void/security
|
corpsesuit = /obj/item/clothing/suit/space/void/security
|
||||||
corpsemask = /obj/item/clothing/mask/breath
|
corpsemask = /obj/item/clothing/mask/breath
|
||||||
corpsehelmet = /obj/item/clothing/head/helmet/space/void/security
|
corpsehelmet = /obj/item/clothing/head/helmet/space/void/security
|
||||||
corpseback = /obj/item/weapon/tank/jetpack/oxygen
|
corpseback = /obj/item/weapon/tank/jetpack/oxygen
|
||||||
|
|
||||||
/obj/effect/landmark/corpse/security/rig/eva
|
/obj/effect/landmark/corpse/security/rig/eva
|
||||||
corpsesuit = /obj/item/clothing/suit/space/void/security/alt
|
corpsesuit = /obj/item/clothing/suit/space/void/security/alt
|
||||||
corpsehelmet = /obj/item/clothing/head/helmet/space/void/security/alt
|
corpsehelmet = /obj/item/clothing/head/helmet/space/void/security/alt
|
||||||
corpseidjob = "Starship Security Officer"
|
corpseidjob = "Starship Security Officer"
|
||||||
|
|
||||||
/obj/effect/landmark/corpse/prisoner
|
/obj/effect/landmark/corpse/prisoner
|
||||||
name = "Unknown Prisoner"
|
name = "Unknown Prisoner"
|
||||||
corpseuniform = /obj/item/clothing/under/color/prison
|
corpseuniform = /obj/item/clothing/under/color/prison
|
||||||
@@ -247,7 +249,7 @@
|
|||||||
corpsemask = /obj/item/clothing/mask/breath
|
corpsemask = /obj/item/clothing/mask/breath
|
||||||
corpsehelmet = /obj/item/clothing/head/helmet/space/void/mining
|
corpsehelmet = /obj/item/clothing/head/helmet/space/void/mining
|
||||||
corpseback = /obj/item/weapon/tank/oxygen
|
corpseback = /obj/item/weapon/tank/oxygen
|
||||||
|
|
||||||
/////////////////Vintage//////////////////////
|
/////////////////Vintage//////////////////////
|
||||||
|
|
||||||
//define the basic props at this level and only change specifics for variants, e.z.
|
//define the basic props at this level and only change specifics for variants, e.z.
|
||||||
@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -121,7 +116,7 @@
|
|||||||
var/mob/living/carbon/human/H = target
|
var/mob/living/carbon/human/H = target
|
||||||
if(H.head && (H.head.body_parts_covered & FACE)) //Check human head coverage.
|
if(H.head && (H.head.body_parts_covered & FACE)) //Check human head coverage.
|
||||||
to_chat(user, "<span class='warning'>Remove their [H.head] first.</span>")
|
to_chat(user, "<span class='warning'>Remove their [H.head] first.</span>")
|
||||||
return
|
return
|
||||||
else if(reagents.total_volume) //Final check. If the rag is not on fire and their face is uncovered, smother target.
|
else if(reagents.total_volume) //Final check. If the rag is not on fire and their face is uncovered, smother target.
|
||||||
user.do_attack_animation(src)
|
user.do_attack_animation(src)
|
||||||
user.visible_message(
|
user.visible_message(
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -630,8 +630,7 @@
|
|||||||
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)
|
||||||
drain(-100)
|
drain(-100)
|
||||||
@@ -712,7 +711,7 @@
|
|||||||
icon_state = "sleeperc"
|
icon_state = "sleeperc"
|
||||||
injection_chems = list("glucose","inaprovaline","tricordrazine")
|
injection_chems = list("glucose","inaprovaline","tricordrazine")
|
||||||
max_item_count = 1
|
max_item_count = 1
|
||||||
|
|
||||||
/obj/item/device/dogborg/sleeper/command //Command borg belly //CHOMP addition
|
/obj/item/device/dogborg/sleeper/command //Command borg belly //CHOMP addition
|
||||||
name = "Bluespace Filing Belly"
|
name = "Bluespace Filing Belly"
|
||||||
desc = "A mounted bluespace storage unit for carrying paperwork"
|
desc = "A mounted bluespace storage unit for carrying paperwork"
|
||||||
@@ -729,7 +728,7 @@
|
|||||||
desc = "A mounted drunk tank unit with fuel processor."
|
desc = "A mounted drunk tank unit with fuel processor."
|
||||||
icon_state = "brewer"
|
icon_state = "brewer"
|
||||||
injection_chems = null
|
injection_chems = null
|
||||||
|
|
||||||
/obj/item/device/dogborg/sleeper/compactor/brewer/inject_chem(mob/user, chem) //CHOMP Addition Start
|
/obj/item/device/dogborg/sleeper/compactor/brewer/inject_chem(mob/user, chem) //CHOMP Addition Start
|
||||||
if(patient && patient.reagents)
|
if(patient && patient.reagents)
|
||||||
if(chem in injection_chems + "inaprovaline")
|
if(chem in injection_chems + "inaprovaline")
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -3185,59 +3185,29 @@
|
|||||||
glass_desc = "Damn, the bartender even stirred it, not shook it."
|
glass_desc = "Damn, the bartender even stirred it, not shook it."
|
||||||
|
|
||||||
allergen_type = ALLERGEN_FRUIT //Made from gin(fruit) and vermouth(fruit)
|
allergen_type = ALLERGEN_FRUIT //Made from gin(fruit) and vermouth(fruit)
|
||||||
|
|
||||||
/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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
BIN
icons/misc/random_spawners.dmi
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 111 KiB |