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(.)
|
||||||
|
return
|
||||||
|
|
||||||
if(R.one_per_turf)
|
if(R.one_per_turf)
|
||||||
for(var/content in get_turf(a))
|
for(var/content in get_turf(a))
|
||||||
if(istype(content, R.result))
|
if(istype(content, R.result))
|
||||||
return ", object already present."
|
return ", object already present."
|
||||||
|
|
||||||
//If we're a mob we'll try a do_after; non mobs will instead instantly construct the item
|
//If we're a mob we'll try a do_after; non mobs will instead instantly construct the item
|
||||||
if(ismob(a) && !do_after(a, R.time, target = a))
|
if(ismob(a) && !do_after(a, R.time, target = a))
|
||||||
return "."
|
return "."
|
||||||
contents = get_surroundings(a,R.blacklist)
|
|
||||||
if(!check_contents(a, R, contents))
|
surroundings = get_surroundings(a, R.blacklist)
|
||||||
return ", missing component."
|
. = check_requirements(a, R, surroundings)
|
||||||
if(!check_tools(a, R, contents))
|
if(.)
|
||||||
return ", missing tool."
|
return
|
||||||
|
|
||||||
var/list/parts = del_reqs(R, a)
|
var/list/parts = del_reqs(R, a)
|
||||||
var/atom/movable/I = new R.result (get_turf(a.loc))
|
var/atom/movable/I = new R.result (get_turf(a.loc))
|
||||||
I.CheckParts(parts, R)
|
I.CheckParts(parts, R)
|
||||||
// if(send_feedback)
|
// if(send_feedback)
|
||||||
// SSblackbox.record_feedback("tally", "object_crafted", 1, I.type)
|
// SSblackbox.record_feedback("tally", "object_crafted", 1, I.type)
|
||||||
return I //Send the item back to whatever called this proc so it can handle whatever it wants to do with the new item
|
return I //Send the item back to whatever called this proc so it can handle whatever it wants to do with the new item
|
||||||
return ", missing tool."
|
|
||||||
return ", missing component."
|
|
||||||
|
|
||||||
/*Del reqs works like this:
|
/*Del reqs works like this:
|
||||||
|
|
||||||
@@ -246,119 +262,108 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/datum/component/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, atom/a)
|
/datum/component/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, atom/a)
|
||||||
var/list/surroundings
|
var/list/surroundings = get_environment(a)
|
||||||
var/list/Deletion = list()
|
var/list/parts = list("items" = list())
|
||||||
. = list()
|
if(R.get_parts_reagents_volume())
|
||||||
var/data
|
parts["reagents"] = new /datum/reagents(R.get_parts_reagents_volume()) // Datums don't have create_reagents()
|
||||||
var/amt
|
|
||||||
var/list/requirements = list()
|
var/list/requirements = list()
|
||||||
if(R.reqs)
|
if(R.reqs)
|
||||||
requirements += R.reqs
|
for(var/list/L in R.reqs)
|
||||||
|
requirements += L
|
||||||
if(R.machinery)
|
if(R.machinery)
|
||||||
requirements += R.machinery
|
requirements += R.machinery
|
||||||
main_loop:
|
|
||||||
|
// Try to find everything that was actually used to craft
|
||||||
for(var/path_key in requirements)
|
for(var/path_key in requirements)
|
||||||
amt = R.reqs[path_key] || R.machinery[path_key]
|
var/amt = requirements[path_key]
|
||||||
if(!amt)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it!
|
if(amt <= 0)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it!
|
||||||
continue main_loop
|
continue
|
||||||
surroundings = get_environment(a, R.blacklist)
|
|
||||||
surroundings -= Deletion
|
// If the path is in R.parts, we want to grab those to stuff into the product
|
||||||
|
var/amt_to_transfer = 0
|
||||||
|
if(is_path_in_list(path_key, R.parts))
|
||||||
|
amt_to_transfer = R.parts[path_key]
|
||||||
|
|
||||||
|
|
||||||
|
// Reagent: gotta go sniffing in all the beakers
|
||||||
if(ispath(path_key, /datum/reagent))
|
if(ispath(path_key, /datum/reagent))
|
||||||
var/datum/reagent/RG = new path_key
|
var/datum/reagent/reagent = path_key
|
||||||
var/datum/reagent/RGNT
|
var/id = initial(reagent.id)
|
||||||
while(amt > 0)
|
|
||||||
var/obj/item/weapon/reagent_containers/RC = locate() in surroundings
|
for(var/obj/item/weapon/reagent_containers/RC in surroundings)
|
||||||
RG = RC.reagents.get_reagent(path_key)
|
// Found everything we need
|
||||||
if(RG)
|
if(amt <= 0 && amt_to_transfer <= 0)
|
||||||
if(!locate(RG.type) in Deletion)
|
break
|
||||||
Deletion += new RG.type()
|
|
||||||
if(RG.volume > amt)
|
// If we need to keep any to put in the new object, pull it out
|
||||||
RG.volume -= amt
|
if(amt_to_transfer > 0)
|
||||||
data = RG.data
|
var/A = RC.reagents.trans_id_to(parts["reagents"], id, amt_to_transfer)
|
||||||
RC.reagents.conditional_update(RC)
|
amt_to_transfer -= A
|
||||||
RG = locate(RG.type) in Deletion
|
amt -= A
|
||||||
RG.volume = amt
|
|
||||||
RG.data += data
|
// If we need to consume some amount of it
|
||||||
continue main_loop
|
if(amt > 0)
|
||||||
else
|
var/datum/reagent/RG = RC.reagents.get_reagent(id)
|
||||||
surroundings -= RC
|
var/A = min(RG.volume, amt)
|
||||||
amt -= RG.volume
|
RC.reagents.remove_reagent(id, A)
|
||||||
RC.reagents.reagent_list -= RG
|
amt -= A
|
||||||
RC.reagents.conditional_update(RC)
|
SEND_SIGNAL(RC.reagents, COMSIG_REAGENTS_CRAFTING_PING)
|
||||||
RGNT = locate(RG.type) in Deletion
|
|
||||||
RGNT.volume += RG.volume
|
// Material stacks may have to accumulate across multiple stacks
|
||||||
RGNT.data += RG.data
|
|
||||||
qdel(RG)
|
|
||||||
SEND_SIGNAL(RC.reagents, COMSIG_REAGENTS_CRAFTING_PING) // - [] TODO: Make this entire thing less spaghetti
|
|
||||||
else
|
|
||||||
surroundings -= RC
|
|
||||||
else if(ispath(path_key, /obj/item/stack))
|
else if(ispath(path_key, /obj/item/stack))
|
||||||
var/obj/item/stack/S
|
for(var/obj/item/stack/S in surroundings)
|
||||||
var/obj/item/stack/SD
|
if(amt <= 0 && amt_to_transfer <= 0)
|
||||||
while(amt > 0)
|
break
|
||||||
S = locate(path_key) in surroundings
|
|
||||||
if(S.get_amount() >= amt)
|
// This could put 50 stacks in an object but frankly so long as the amount's right we don't care
|
||||||
if(!locate(S.type) in Deletion)
|
if(amt_to_transfer > 0)
|
||||||
SD = new S.type()
|
var/obj/item/stack/split = S.split(amt_to_transfer)
|
||||||
Deletion += SD
|
if(istype(split))
|
||||||
S.use(amt)
|
parts["items"] += split
|
||||||
SD = locate(S.type) in Deletion
|
amt_to_transfer -= split.get_amount()
|
||||||
SD.add(amt)
|
amt -= split.get_amount()
|
||||||
continue main_loop
|
|
||||||
else
|
if(amt > 0)
|
||||||
amt -= S.get_amount()
|
var/A = min(amt, S.get_amount())
|
||||||
if(!locate(S.type) in Deletion)
|
if(S.use(A))
|
||||||
Deletion += S
|
amt -= A
|
||||||
else
|
|
||||||
data = S.get_amount()
|
|
||||||
S = locate(S.type) in Deletion
|
else // Just a regular item. Find them all and delete them
|
||||||
S.add(data)
|
for(var/atom/movable/I in surroundings)
|
||||||
surroundings -= S
|
if(amt <= 0 && amt_to_transfer <= 0)
|
||||||
else
|
break
|
||||||
var/atom/movable/I
|
|
||||||
while(amt > 0)
|
if(!istype(I, path_key))
|
||||||
I = locate(path_key) in surroundings
|
continue
|
||||||
Deletion += I
|
|
||||||
surroundings -= I
|
// Special case: the reagents may be needed for other recipes
|
||||||
|
if(istype(I, /obj/item/weapon/reagent_containers))
|
||||||
|
var/obj/item/weapon/reagent_containers/RC = I
|
||||||
|
if(RC.reagents.total_volume > 0)
|
||||||
|
continue
|
||||||
|
|
||||||
|
// We're using it for something
|
||||||
amt--
|
amt--
|
||||||
var/list/partlist = list(R.parts.len)
|
|
||||||
for(var/M in R.parts)
|
// Prepare to stuff inside product, don't delete it
|
||||||
partlist[M] = R.parts[M]
|
if(is_path_in_list(path_key, parts))
|
||||||
for(var/part in R.parts)
|
parts["items"] += I
|
||||||
if(istype(part, /datum/reagent))
|
amt_to_transfer--
|
||||||
var/datum/reagent/RG = locate(part) in Deletion
|
|
||||||
if(RG.volume > partlist[part])
|
|
||||||
RG.volume = partlist[part]
|
|
||||||
. += RG
|
|
||||||
Deletion -= RG
|
|
||||||
continue
|
continue
|
||||||
else if(istype(part, /obj/item/stack))
|
|
||||||
var/obj/item/stack/ST = locate(part) in Deletion
|
|
||||||
if(ST.get_amount() > partlist[part])
|
|
||||||
ST.set_amount(partlist[part])
|
|
||||||
. += ST
|
|
||||||
Deletion -= ST
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
while(partlist[part] > 0)
|
|
||||||
var/atom/movable/AM = locate(part) in Deletion
|
|
||||||
. += AM
|
|
||||||
Deletion -= AM
|
|
||||||
partlist[part] -= 1
|
|
||||||
while(Deletion.len)
|
|
||||||
var/DL = Deletion[Deletion.len]
|
|
||||||
Deletion.Cut(Deletion.len)
|
|
||||||
// Snowflake handling of reagent containers and storage atoms.
|
// Snowflake handling of reagent containers and storage atoms.
|
||||||
// If we consumed them in our crafting, we should dump their contents out before qdeling them.
|
// If we consumed them in our crafting, we should dump their contents out before qdeling them.
|
||||||
if(istype(DL, /obj/item/weapon/reagent_containers))
|
if(istype(I, /obj/item/weapon/reagent_containers))
|
||||||
var/obj/item/weapon/reagent_containers/container = DL
|
var/obj/item/weapon/reagent_containers/container = I
|
||||||
container.reagents.clear_reagents()
|
container.reagents.clear_reagents()
|
||||||
// container.reagents.expose(container.loc, TOUCH)
|
// container.reagents.expose(container.loc, TOUCH)
|
||||||
else if(istype(DL, /obj/item/weapon/storage))
|
else if(istype(I, /obj/item/weapon/storage))
|
||||||
var/obj/item/weapon/storage/container = DL
|
var/obj/item/weapon/storage/container = I
|
||||||
container.spill()
|
container.spill()
|
||||||
container.close_all()
|
container.close_all()
|
||||||
qdel(DL)
|
qdel(I)
|
||||||
|
return parts
|
||||||
|
|
||||||
/datum/component/personal_crafting/proc/component_ui_interact(source, location, control, params, user)
|
/datum/component/personal_crafting/proc/component_ui_interact(source, location, control, params, user)
|
||||||
// SIGNAL_HANDLER
|
// SIGNAL_HANDLER
|
||||||
@@ -487,10 +492,14 @@
|
|||||||
var/list/tool_list = list()
|
var/list/tool_list = list()
|
||||||
var/list/catalyst_text = list()
|
var/list/catalyst_text = list()
|
||||||
|
|
||||||
for(var/atom/req_atom as anything in R.reqs)
|
for(var/list/req in R.reqs)
|
||||||
|
var/list/L = list()
|
||||||
|
for(var/atom/req_atom as anything in req)
|
||||||
//We just need the name, so cheat-typecast to /atom for speed (even tho Reagents are /datum they DO have a "name" var)
|
//We just need the name, so cheat-typecast to /atom for speed (even tho Reagents are /datum they DO have a "name" var)
|
||||||
//Also these are typepaths so sadly we can't just do "[a]"
|
//Also these are typepaths so sadly we can't just do "[a]"
|
||||||
req_text += "[R.reqs[req_atom]] [initial(req_atom.name)]"
|
L += "[req[req_atom]] [initial(req_atom.name)]"
|
||||||
|
req_text += L.Join(" OR ")
|
||||||
|
|
||||||
for(var/obj/machinery/content as anything in R.machinery)
|
for(var/obj/machinery/content as anything in R.machinery)
|
||||||
req_text += "[R.reqs[content]] [initial(content.name)]"
|
req_text += "[R.reqs[content]] [initial(content.name)]"
|
||||||
if(R.additional_req_text)
|
if(R.additional_req_text)
|
||||||
|
|||||||
@@ -12,21 +12,30 @@
|
|||||||
*/
|
*/
|
||||||
/atom/proc/CheckParts(list/parts_list, datum/crafting_recipe/R)
|
/atom/proc/CheckParts(list/parts_list, datum/crafting_recipe/R)
|
||||||
SEND_SIGNAL(src, COMSIG_ATOM_CHECKPARTS, parts_list, R)
|
SEND_SIGNAL(src, COMSIG_ATOM_CHECKPARTS, parts_list, R)
|
||||||
if(parts_list)
|
if(LAZYLEN(parts_list))
|
||||||
for(var/A in parts_list)
|
if(istype(parts_list["reagents"], /datum/reagents))
|
||||||
if(istype(A, /datum/reagent))
|
var/datum/reagents/RG = parts_list["reagents"]
|
||||||
if(!reagents)
|
if(istype(reagents))
|
||||||
reagents = new()
|
RG.trans_to_holder(reagents, RG.total_volume)
|
||||||
reagents.reagent_list.Add(A)
|
else
|
||||||
|
reagents = RG
|
||||||
|
RG.my_atom = src
|
||||||
reagents.conditional_update()
|
reagents.conditional_update()
|
||||||
else if(ismovable(A))
|
|
||||||
var/atom/movable/M = A
|
for(var/atom/movable/M as anything in parts_list["items"])
|
||||||
if(isliving(M.loc))
|
if(isliving(M.loc))
|
||||||
var/mob/living/L = M.loc
|
var/mob/living/L = M.loc
|
||||||
L.unEquip(M, target = src)
|
L.unEquip(M, target = src)
|
||||||
else
|
else
|
||||||
M.forceMove(src)
|
M.forceMove(src)
|
||||||
SEND_SIGNAL(M, COMSIG_ATOM_USED_IN_CRAFT, src)
|
SEND_SIGNAL(M, COMSIG_ATOM_USED_IN_CRAFT, src)
|
||||||
|
|
||||||
|
var/list/L = parts_list["reagents"]
|
||||||
|
if(LAZYLEN(L))
|
||||||
|
L.Cut()
|
||||||
|
L = parts_list["items"]
|
||||||
|
if(LAZYLEN(L))
|
||||||
|
L.Cut()
|
||||||
parts_list.Cut()
|
parts_list.Cut()
|
||||||
|
|
||||||
/obj/machinery/CheckParts(list/parts_list)
|
/obj/machinery/CheckParts(list/parts_list)
|
||||||
|
|||||||
@@ -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."
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
@@ -132,6 +132,8 @@
|
|||||||
corpseshoes = /obj/item/clothing/shoes/black
|
corpseshoes = /obj/item/clothing/shoes/black
|
||||||
random_species = TRUE
|
random_species = TRUE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/effect/landmark/corpse/chef
|
/obj/effect/landmark/corpse/chef
|
||||||
name = "Chef"
|
name = "Chef"
|
||||||
corpseuniform = /obj/item/clothing/under/rank/chef
|
corpseuniform = /obj/item/clothing/under/rank/chef
|
||||||
@@ -337,3 +339,41 @@
|
|||||||
corpseid = 1
|
corpseid = 1
|
||||||
corpseidjob = "Commander"
|
corpseidjob = "Commander"
|
||||||
corpseidaccess = "Captain"
|
corpseidaccess = "Captain"
|
||||||
|
|
||||||
|
/////////////////Lore Factions//////////////////////
|
||||||
|
|
||||||
|
/obj/effect/landmark/corpse/sifguard
|
||||||
|
name = "Patrolman"
|
||||||
|
corpseuniform = /obj/item/clothing/under/solgov/utility/sifguard
|
||||||
|
corpsesuit = /obj/item/clothing/suit/storage/hooded/wintercoat/solgov
|
||||||
|
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
|
||||||
|
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
|
||||||
|
corpsemask = /obj/item/clothing/mask/balaclava
|
||||||
|
corpsehelmet = /obj/item/clothing/head/beret/solgov/sifguard
|
||||||
|
corpsegloves = /obj/item/clothing/gloves/duty
|
||||||
|
corpseshoes = /obj/item/clothing/shoes/boots/tactical
|
||||||
|
corpsepocket1 = /obj/item/clothing/accessory/armor/tag/sifguard
|
||||||
|
corpseid = 1
|
||||||
|
corpseidjob = "Sif Defense Force Patrolman"
|
||||||
|
|
||||||
|
/obj/effect/landmark/corpse/hedberg
|
||||||
|
name = "Hedberg-Hammarstrom Mercenary"
|
||||||
|
corpseuniform = /obj/item/clothing/under/solgov/utility/sifguard
|
||||||
|
corpsesuit = /obj/item/clothing/suit/storage/vest/solgov/hedberg
|
||||||
|
corpsebelt = /obj/item/weapon/storage/belt/security
|
||||||
|
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
|
||||||
|
corpsehelmet = /obj/item/clothing/head/beret/corp/hedberg
|
||||||
|
corpseshoes = /obj/item/clothing/shoes/boots/jackboots
|
||||||
|
corpseid = 1
|
||||||
|
corpseidjob = "Hedberg-Hammarstrom Officer"
|
||||||
|
|
||||||
|
/obj/effect/landmark/corpse/hedberg/merc
|
||||||
|
name = "Hedberg-Hammarstrom Mercenary"
|
||||||
|
corpsebelt = /obj/item/weapon/storage/belt/security/tactical
|
||||||
|
corpseglasses = /obj/item/clothing/glasses/sunglasses/sechud
|
||||||
|
corpsehelmet = /obj/item/clothing/head/helmet/flexitac
|
||||||
|
corpsegloves = /obj/item/clothing/gloves/combat
|
||||||
|
corpseshoes = /obj/item/clothing/shoes/boots/tactical
|
||||||
|
corpseid = 1
|
||||||
|
corpseidjob = "Hedberg-Hammarstrom Enforcer"
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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,7 +630,6 @@
|
|||||||
plastic.add_charge(total_material)
|
plastic.add_charge(total_material)
|
||||||
if(material == "wood")
|
if(material == "wood")
|
||||||
wood.add_charge(total_material)
|
wood.add_charge(total_material)
|
||||||
else
|
|
||||||
drain(-50 * digested)
|
drain(-50 * digested)
|
||||||
else if(istype(target,/obj/effect/decal/remains))
|
else if(istype(target,/obj/effect/decal/remains))
|
||||||
qdel(target)
|
qdel(target)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -3189,55 +3189,25 @@
|
|||||||
/datum/reagent/ethanol/cuba_libre
|
/datum/reagent/ethanol/cuba_libre
|
||||||
name = "Cuba Libre"
|
name = "Cuba Libre"
|
||||||
id = "cubalibre"
|
id = "cubalibre"
|
||||||
<<<<<<< HEAD
|
|
||||||
description = "Rum, mixed with cola. Viva la revolucion."
|
|
||||||
||||||| parent of 147dddcf38... Merge pull request #11579 from VOREStation/upstream-merge-8283
|
|
||||||
description = "Rum, mixed with cola and a splash of lime. Viva la revolucion."
|
description = "Rum, mixed with cola and a splash of lime. Viva la revolucion."
|
||||||
taste_description = "cola with lime"
|
taste_description = "cola with lime"
|
||||||
color = "#3E1B00"
|
|
||||||
strength = 30
|
|
||||||
|
|
||||||
glass_name = "Cuba Libre"
|
|
||||||
glass_desc = "A classic mix of rum, cola, and lime."
|
|
||||||
|
|
||||||
/datum/reagent/ethanol/rum_and_cola
|
|
||||||
name = "Rum and Cola"
|
|
||||||
id = "rumandcola"
|
|
||||||
description = "A classic mix of sugar with more sugar."
|
|
||||||
=======
|
|
||||||
description = "Rum, mixed with cola and a splash of lime. Viva la revolucion."
|
|
||||||
taste_description = "cola with lime"
|
|
||||||
color = "#3E1B00"
|
|
||||||
strength = 30
|
|
||||||
|
|
||||||
glass_name = "Cuba Libre"
|
|
||||||
glass_desc = "A classic mix of rum, cola, and lime."
|
|
||||||
allergen_type = ALLERGEN_STIMULANT //Cola
|
|
||||||
|
|
||||||
/datum/reagent/ethanol/rum_and_cola
|
|
||||||
name = "Rum and Cola"
|
|
||||||
id = "rumandcola"
|
|
||||||
description = "A classic mix of sugar with more sugar."
|
|
||||||
taste_description = "cola"
|
|
||||||
color = "#3E1B00"
|
|
||||||
strength = 30
|
|
||||||
|
|
||||||
glass_name = "Cuba Libre"
|
|
||||||
glass_desc = "A classic mix of rum, cola, and lime."
|
|
||||||
|
|
||||||
/datum/reagent/ethanol/rum_and_cola
|
|
||||||
name = "Rum and Cola"
|
|
||||||
id = "rumandcola"
|
|
||||||
description = "A classic mix of sugar with more sugar."
|
|
||||||
>>>>>>> 147dddcf38... Merge pull request #11579 from VOREStation/upstream-merge-8283
|
|
||||||
taste_description = "cola"
|
|
||||||
nutriment_factor = 1.5 //CHOMPStation addition
|
nutriment_factor = 1.5 //CHOMPStation addition
|
||||||
color = "#3E1B00"
|
color = "#3E1B00"
|
||||||
strength = 30
|
strength = 30
|
||||||
|
|
||||||
glass_name = "Cuba Libre"
|
glass_name = "Cuba Libre"
|
||||||
|
glass_desc = "A classic mix of rum, cola, and lime."
|
||||||
|
|
||||||
|
/datum/reagent/ethanol/rum_and_cola
|
||||||
|
name = "Rum and Cola"
|
||||||
|
id = "rumandcola"
|
||||||
|
description = "A classic mix of sugar with more sugar."
|
||||||
|
taste_description = "cola"
|
||||||
|
color = "#3E1B00"
|
||||||
|
strength = 30
|
||||||
|
|
||||||
|
glass_name = "rum and cola"
|
||||||
glass_desc = "A classic mix of rum and cola."
|
glass_desc = "A classic mix of rum and cola."
|
||||||
allergen_type = ALLERGEN_STIMULANT // Cola
|
|
||||||
|
|
||||||
/datum/reagent/ethanol/demonsblood
|
/datum/reagent/ethanol/demonsblood
|
||||||
name = "Demons Blood"
|
name = "Demons Blood"
|
||||||
|
|||||||
@@ -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 |