diff --git a/code/__defines/research/techweb_nodes.dm b/code/__defines/research/techweb_nodes.dm index d2b9135a1c..bc33afd4ac 100644 --- a/code/__defines/research/techweb_nodes.dm +++ b/code/__defines/research/techweb_nodes.dm @@ -88,6 +88,8 @@ #define TECHWEB_NODE_MEDIGUN_CONSTANT "medbay_medigun_constant" #define TECHWEB_NODE_MINING "mining" #define TECHWEB_NODE_MINING_ADV "mining_adv" +#define TECHWEB_NODE_MINELIGHTS "mine_lighting" +#define TECHWEB_NODE_DEBRISREMOVAL "debris_removal" #define TECHWEB_NODE_MOD_ANOMALY "mod_anomaly" #define TECHWEB_NODE_MOD_SUPPLY "mod_supply" #define TECHWEB_NODE_MOD_ENGI "mod_engi" diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm index 55f2d815c7..acd8381ebe 100644 --- a/code/game/objects/random/mapping.dm +++ b/code/game/objects/random/mapping.dm @@ -1999,3 +1999,15 @@ /obj/structure/closet/crate/secure/phoron //HQ FUEL TANKS ), ) + +/obj/random/multiple/legtrap + name = "random legtraps" + desc = "Random legtraps (beartraps and mousetraps)." + icon = 'icons/misc/mark.dmi' + icon_state = "x3" + +/obj/random/multiple/legtrap/item_to_spawn() + return pick( + prob(67);list(/obj/item/assembly/mousetrap/armed), + prob(33);list(/obj/item/beartrap/start_active), + ) diff --git a/code/modules/clothing/suits/explorer.dm b/code/modules/clothing/suits/explorer.dm new file mode 100644 index 0000000000..a65d108821 --- /dev/null +++ b/code/modules/clothing/suits/explorer.dm @@ -0,0 +1,53 @@ +/obj/item/clothing/suit/storage/explorer + name = "service jacket" + desc = "A uniform service jacket, plain and undecorated." + icon_state = "blackservice" + item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black") + body_parts_covered = UPPER_TORSO|ARMS + flags_inv = HIDEHOLSTER + allowed = list(POCKET_GENERIC, POCKET_EMERGENCY, POCKET_DETECTIVE, /obj/item/clothing/head/beret) + +/obj/item/clothing/suit/storage/explorer/crew + name = "\improper Explorer jacket" + desc = "A exploration jacket belonging to the the Explorer's association. It has silver buttons." + icon_state = "blackservice" + +/obj/item/clothing/suit/storage/explorer/medical + name = "\improper Explorer medical jacket" + desc = "A exploration jacket belonging to the Explorer's association. It has silver buttons and blue trim." + icon_state = "blackservice_med" + +/obj/item/clothing/suit/storage/explorer/medical/command + name = "\improper Explorer medical command jacket" + desc = "A exploration jacket belonging to the Explorer's association. It has gold buttons and blue trim." + icon_state = "blackservice_medcom" + +/obj/item/clothing/suit/storage/explorer/engineering + name = "\improper Explorer engineering jacket" + desc = "A exploration jacket belonging to the Explorer's association. It has silver buttons and orange trim." + icon_state = "blackservice_eng" + +/obj/item/clothing/suit/storage/explorer/engineering/command + name = "\improper Explorer engineering command jacket" + desc = "A exploration jacket belonging to the Explorer's association. It has gold buttons and orange trim." + icon_state = "blackservice_engcom" + +/obj/item/clothing/suit/storage/explorer/supply + name = "\improper Explorer supply jacket" + desc = "A exploration jacket belonging to the Explorer's association. It has silver buttons and brown trim." + icon_state = "blackservice_sup" + +/obj/item/clothing/suit/storage/explorer/security + name = "\improper Explorer security jacket" + desc = "A exploration jacket belonging to the Explorer's association. It has silver buttons and red trim." + icon_state = "blackservice_sec" + +/obj/item/clothing/suit/storage/explorer/security/command + name = "\improper Explorer security command jacket" + desc = "A exploration jacket belonging to the Explorer's association. It has gold buttons and red trim." + icon_state = "blackservice_seccom" + +/obj/item/clothing/suit/storage/explorer/command + name = "\improper Explorer command jacket" + desc = "A exploration jacket belonging to the Explorer's association. It has gold buttons and gold trim." + icon_state = "blackservice_com" diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm index b7eb8888a0..2571b52105 100644 --- a/code/modules/clothing/suits/storage.dm +++ b/code/modules/clothing/suits/storage.dm @@ -117,3 +117,17 @@ to_chat(usr, "\The [src] does not have a badge.") return update_clothing_icon() + +/obj/item/clothing/suit/storage/tailcoat + name = "victorian tailcoat" + desc = "A fancy victorian tailcoat." + icon_state = "tailcoat" + +/obj/item/clothing/suit/storage/victcoat + name = "ladies black victorian coat" + desc = "A fancy victorian coat." + icon_state = "ladiesvictoriancoat" + +/obj/item/clothing/suit/storage/victcoat/red + name = "ladies red victorian coat" + icon_state = "ladiesredvictoriancoat" diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index d598ff429d..b5605143b1 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -199,7 +199,19 @@ sharp = 0 edge = 1 -// Flags. +/*****************************Icepick********************************/ + +//Ice pick, mountain axe, or ice axe.YW Creation. +/obj/item/ice_pick + name = "ice axe" + desc = "A sharp tool for climbers and hikers to break up ice and keep themselves from slipping on a steep slope." + icon_state = "icepick" + item_state = "icepick" + matter = list(MAT_STEEL = 12000) //Same as a knife + force = 15 //increasing force for icepick/axe, cause it's a freaking iceaxe. + throwforce = 0 + +/*****************************Flags********************************/ /obj/item/stack/flag name = "flags" @@ -276,3 +288,112 @@ newflag.icon_state = "[newflag.base_state]_open" newflag.visible_message(span_infoplain(span_bold("[user]") + " plants [newflag] firmly in the ground.")) src.use(1) + +/*****************************Trailblazer item********************************/ + +/obj/item/stack/lightpole + name = "Trailblazers" + desc = "Some colourful trail lights." + singular_name = "trailblazer" + amount = 10 + max_amount = 10 + icon = 'icons/obj/mining.dmi' + custom_handling = TRUE + var/blazer_type = /obj/structure/trailblazer + +/obj/item/stack/lightpole/red + name = "red flags" + singular_name = "red trail blazer" + icon_state = "redtrail_light" + blazer_type = /obj/structure/trailblazer/red + +/obj/item/stack/lightpole/blue + name = "blue trail blazers" + singular_name = "blue trail blazer" + icon_state = "bluetrail_light" + blazer_type = /obj/structure/trailblazer/blue + +/obj/item/stack/lightpole/yellow + name = "red flags" + singular_name = "red trail blazer" + icon_state = "yellowtrail_light" + blazer_type = /obj/structure/trailblazer/yellow + +/obj/item/stack/lightpole/attack_self(mob/user) + . = ..(user) + if(.) + return TRUE + + var/turf/T = get_turf(user) + if(!T || (!istype(T,/turf/simulated/mineral) && !istype(T,/turf/simulated/floor/outdoors) && !istype(T,/turf/simulated/floor/snow) && !istype(T,/turf/snow))) + to_chat(user, span_warning("The light won't stand up in this terrain.")) + return TRUE + var/obj/structure/trailblazer/F = locate() in get_turf(src) + if(F) + to_chat(user, span_warning("There is already a light here.")) + return TRUE + if(!do_after(user, 8 SECONDS, target = src)) + return TRUE + + var/obj/structure/trailblazer/newlightpole = new blazer_type(T) + newlightpole.visible_message("\The [user] plants \the [newlightpole] firmly in the ground.") + use(1) + +/*****************************Trailblazer structure********************************/ + +/datum/category_item/catalogue/material/trail_blazer + name = "Ice Colony Equipment - Trailblazer" + desc = "This is a glowing stick embedded in the ground with a light on top, commonly used in snowy installations and in tundra conditions." + value = CATALOGUER_REWARD_EASY + +/obj/structure/trailblazer + name = "trail blazer" + desc = "A glowing stick- light." + icon = 'icons/obj/mining.dmi' + icon_state = "redtrail_light_on" + density = TRUE + anchored = TRUE + var/stack_type = /obj/item/stack/lightpole/red + catalogue_data = list(/datum/category_item/catalogue/material/trail_blazer) + +/obj/structure/trailblazer/Initialize(mapload) + . = ..() + set_color() + AddElement(/datum/element/climbable) + +/obj/structure/trailblazer/proc/set_color() + icon_state = "redtrail_light_on" + set_light(2, 2, "#FF0000") + +/obj/structure/trailblazer/attack_hand(mob/user) + if(do_after(user, 8 SECONDS, target = src)) + visible_message("\The [user] knocks down \the [src].") + new stack_type(get_turf(src), 1) + qdel(src) + return + +/obj/structure/trailblazer/red + name = "trail blazer" + desc = "A glowing stick- light.This one is glowing red." + icon_state = "redtrail_light_on" + stack_type = /obj/item/stack/lightpole/red + +/obj/structure/trailblazer/blue + name = "trail blazer" + desc = "A glowing stick- light. This one is glowing blue." + icon_state = "bluetrail_light_on" + stack_type = /obj/item/stack/lightpole/blue + +/obj/structure/trailblazer/blue/set_color() + icon_state = "bluetrail_light_on" + set_light(2, 2, "#C4FFFF") + +/obj/structure/trailblazer/yellow + name = "trail blazer" + desc = "A glowing stick- light. This one is glowing yellow." + icon_state = "yellowtrail_light_on" + stack_type = /obj/item/stack/lightpole/yellow + +/obj/structure/trailblazer/yellow/set_color() + icon_state = "yellowtrail_light_on" + set_light(2, 2, "#ffea00") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/commander_clucky.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/commander_clucky.dm new file mode 100644 index 0000000000..04563a307c --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/commander_clucky.dm @@ -0,0 +1,4 @@ +/mob/living/simple_mob/animal/passive/chicken/clucky + name = "Commander Clucky" + real_name = "Commander Clucky" + desc = "It's Commander Clucky!" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lorenzo.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lorenzo.dm new file mode 100644 index 0000000000..1c8a109f09 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lorenzo.dm @@ -0,0 +1,9 @@ +/mob/living/simple_mob/animal/giant_spider/lorenzo + name = "Lorenzo" + desc = "Furry and brown, it makes you shudder to look at it. This one has deep red eyes." + icon_state = "guardpet" + icon_living = "guardpet" + icon_dead = "guardpet_dead" + has_eye_glow = TRUE + faction = "neutral" + movement_sound = null diff --git a/code/modules/research/tg/designs/tool_designs.dm b/code/modules/research/tg/designs/tool_designs.dm index 9805c345e9..ae53a2bb0d 100644 --- a/code/modules/research/tg/designs/tool_designs.dm +++ b/code/modules/research/tg/designs/tool_designs.dm @@ -945,3 +945,73 @@ RND_CATEGORY_TOOLS ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL + +/datum/design_techweb/marker_beacon + name = "Marker Beacons" + desc = "Prismatic path illumination devices. Used by explorers and miners to mark paths and warn of danger." + id = "marker_beacon" + build_type = PROTOLATHE | AUTOLATHE + materials = list(MAT_STEEL = 500, MAT_GLASS = 2000) + build_path = /obj/item/stack/marker_beacon/ten + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/trailblazer_red + name = "Trailblazer Red" + desc = "A glowing stick embedded in the ground with a light on top, commonly used in snowy installations and in tundra conditions. This one is red." + id = "trailblazer_red" + build_type = PROTOLATHE | AUTOLATHE + materials = list(MAT_STEEL = 5000, MAT_GLASS = 3000) + build_path = /obj/item/stack/lightpole/red + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/trailblazer_blue + name = "Trailblazer Blue" + desc = "A glowing stick embedded in the ground with a light on top, commonly used in snowy installations and in tundra conditions. This one is blue." + id = "trailblazer_blue" + build_type = PROTOLATHE | AUTOLATHE + materials = list(MAT_STEEL = 5000, MAT_GLASS = 3000) + build_path = /obj/item/stack/lightpole/blue + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/trailblazer_yellow + name = "Trailblazer Yellow" + desc = "A glowing stick embedded in the ground with a light on top, commonly used in snowy installations and in tundra conditions. This one is yellow." + id = "trailblazer_yellow" + build_type = PROTOLATHE | AUTOLATHE + materials = list(MAT_STEEL = 5000, MAT_GLASS = 3000) + build_path = /obj/item/stack/lightpole/yellow + category = list( + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/shovel + name = "Shovel" + id = "shovel" + materials = list(MAT_STEEL = 50) + build_path = /obj/item/shovel + build_type = PROTOLATHE | AUTOLATHE + category = list( + RND_CATEGORY_TOOLS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO + +/datum/design_techweb/iceaxe + name = "Ice Axe" + id = "iceaxe" + materials = list(MAT_STEEL = 12000) + build_path = /obj/item/ice_pick + build_type = PROTOLATHE | AUTOLATHE + category = list( + RND_CATEGORY_TOOLS + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO diff --git a/code/modules/research/tg/techwebs/nodes/mining_nodes.dm b/code/modules/research/tg/techwebs/nodes/mining_nodes.dm index 68319e7339..eb23b895d6 100644 --- a/code/modules/research/tg/techwebs/nodes/mining_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/mining_nodes.dm @@ -107,3 +107,29 @@ ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) announce_channels = list(CHANNEL_SUPPLY) + +/datum/techweb_node/mining_lights + id = TECHWEB_NODE_MINELIGHTS + display_name = "Mine Lighting" + description = "Development of lights and other tools for illuminating the underground." + prereq_ids = list(TECHWEB_NODE_MATERIAL_PROC) + design_ids = list( + "marker_beacon", + "trailblazer_red", + "trailblazer_yellow", + "trailblazer_blue", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) + announce_channels = list(CHANNEL_SUPPLY) + +/datum/techweb_node/snow_clearing + id = TECHWEB_NODE_DEBRISREMOVAL + display_name = "Debris Removal" + description = "Development of tools for removing rocks, snow, ice, and many other forms of loose debris." + prereq_ids = list(TECHWEB_NODE_MATERIAL_PROC) + design_ids = list( + "shovel", + "iceaxe", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS) + announce_channels = list(CHANNEL_SUPPLY) diff --git a/icons/inventory/suit/item.dmi b/icons/inventory/suit/item.dmi index 5580aa3502..48df8ecf52 100644 Binary files a/icons/inventory/suit/item.dmi and b/icons/inventory/suit/item.dmi differ diff --git a/icons/inventory/suit/mob.dmi b/icons/inventory/suit/mob.dmi index 826dd561f1..1b6a246d07 100644 Binary files a/icons/inventory/suit/mob.dmi and b/icons/inventory/suit/mob.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 759f4489ce..5c7ee3aad6 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 1563329044..1c13932677 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 0de9032e73..50e3ca6089 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/vorestation.dme b/vorestation.dme index 2eae431f67..cb8e99e22b 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2656,6 +2656,7 @@ #include "code\modules\clothing\suits\armor_vr.dm" #include "code\modules\clothing\suits\bio.dm" #include "code\modules\clothing\suits\bio_vr.dm" +#include "code\modules\clothing\suits\explorer.dm" #include "code\modules\clothing\suits\hooded.dm" #include "code\modules\clothing\suits\hooded_vr.dm" #include "code\modules\clothing\suits\jobs.dm" @@ -3686,6 +3687,7 @@ #include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_powers.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_query.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\chicken.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\commander_clucky.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\cow.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\goat.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\_giant_spider.dm" @@ -3697,6 +3699,7 @@ #include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\frost.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\giant_spider_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\hunter.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\lorenzo.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\lurker.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\nurse.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\pepper.dm"