diff --git a/citadel.dme b/citadel.dme index 359d7b6eeed..813290cc018 100644 --- a/citadel.dme +++ b/citadel.dme @@ -946,6 +946,7 @@ #include "code\datums\recipe\crafting_recipes\recipes_misc.dm" #include "code\datums\recipe\crafting_recipes\recipes_primal.dm" #include "code\datums\recipe\crafting_recipes\recipes_robot.dm" +#include "code\datums\recipe\crafting_recipes\recipes_special.dm" #include "code\datums\recipe\crafting_recipes\recipes_weapon_and_ammo.dm" #include "code\datums\recipe\material_recipes\furniture.dm" #include "code\datums\recipe\material_recipes\structures.dm" @@ -3020,6 +3021,7 @@ #include "code\modules\ghostroles\spawnpoint.dm" #include "code\modules\ghostroles\roles\ashlander.dm" #include "code\modules\ghostroles\roles\hermit.dm" +#include "code\modules\ghostroles\roles\lythios_colonist.dm" #include "code\modules\ghostroles\roles\pirate.dm" #include "code\modules\ghostroles\roles\sapient_mob.dm" #include "code\modules\ghosttrap\trap.dm" diff --git a/code/__DEFINES/recipes.dm b/code/__DEFINES/recipes.dm index 5c22668e487..cc10541145c 100644 --- a/code/__DEFINES/recipes.dm +++ b/code/__DEFINES/recipes.dm @@ -30,6 +30,7 @@ #define CAT_SEAFOOD "Seafood" #define CAT_SOUP "Soups" #define CAT_SPAGHETTI "Spaghettis" +#define CAT_SPECIAL "Special Recipes" #define CAT_TOOL "Tools & Storage" #define CAT_WEAPON "Ranged Weapons" #define CAT_WEAPONRY "Weaponry" diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index a2d26e2c8e6..4ba0dfbaa20 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -33,6 +33,7 @@ CAT_FURNITURE, ), CAT_PRIMAL = CAT_NONE, + CAT_SPECIAL = CAT_NONE, CAT_FOOD = list( CAT_BREAD, CAT_BURGER, diff --git a/code/datums/outfits/ghostrole.dm b/code/datums/outfits/ghostrole.dm index fd612625339..0a20c6d4c95 100644 --- a/code/datums/outfits/ghostrole.dm +++ b/code/datums/outfits/ghostrole.dm @@ -87,3 +87,15 @@ belt = /obj/item/gun/projectile/energy/zip r_pocket = /obj/item/melee/transforming/energy/sword/cutlass r_hand = /obj/item/shield/makeshift + +//Lythios Colonist +/datum/outfit/lythios_colonist + name = "Lythios Colonist" + uniform = /obj/item/clothing/under/tajaran + shoes = /obj/item/clothing/shoes/tajara/footwraps + back = /obj/item/storage/backpack/dufflebag + id_slot = SLOT_ID_WORN_ID + id_type = /obj/item/card/id/external/id_nka + l_hand = /obj/item/gearbox/lythios_colonist + r_pocket = /obj/item/reagent_containers/food/drinks/flask/tajflask/v_gin + l_pocket = /obj/item/flame/lighter/zippo/taj diff --git a/code/datums/recipe/crafting_recipes/recipes_misc.dm b/code/datums/recipe/crafting_recipes/recipes_misc.dm index 0c15003d63a..52c20166d68 100644 --- a/code/datums/recipe/crafting_recipes/recipes_misc.dm +++ b/code/datums/recipe/crafting_recipes/recipes_misc.dm @@ -371,8 +371,9 @@ /obj/item/stack/rods = 1, /obj/item/weldingtool/mini = 1) time = 40 - category = CAT_TOOL - subcategory = CAT_MISCELLANEOUS + subcategory = CAT_TOOL + category = CAT_MISCELLANEOUS + /* Not gonna code this right now. This is bound to be nuts. /datum/crafting_recipe/rcl @@ -430,6 +431,18 @@ always_available = FALSE */ +//This Recipe is so you can soak hide without a sink. + +/datum/crafting_recipe/soak_hide + name = "Soak Hairless Hide" + result = /obj/item/stack/wetleather + time = 10 + reqs = list(/obj/item/stack/hairlesshide = 1, + /datum/reagent/water = 5) + subcategory = CAT_TOOL + category = CAT_MISCELLANEOUS + + //////////// //Vehicles// //////////// diff --git a/code/datums/recipe/crafting_recipes/recipes_special.dm b/code/datums/recipe/crafting_recipes/recipes_special.dm new file mode 100644 index 00000000000..59adf5543cc --- /dev/null +++ b/code/datums/recipe/crafting_recipes/recipes_special.dm @@ -0,0 +1,164 @@ +/* This is for recipes that you get from either your role or from books/other means (Maybe species/background/assignment in the future). +They represent special know how outside of the skills a Nanotrasen station staff but do not fall under the 'Primal' Category. +Example can include special cooking recipes native to a particular culture, Traditional Medicines, weird science know how, +or simply ideas that are simply outside of the traditional expertise of Nanotrasen crews. */ + + +//Lythios Colonist Recipes + +/datum/crafting_recipe/evapmilk + name = "Evaporate Milk" + result = /obj/item/reagent_containers/food/drinks/cans/evapmilk + + tools = list(/obj/item/flame/lighter/zippo/taj) + reqs = list(/obj/item/reagent_containers/food/drinks/cans/empty = 1, + /datum/reagent/drink/milk = 40) + time = 90 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/kompot + name = "Brew Ashomarr'darr" + result = /obj/item/reagent_containers/food/drinks/cans/kompot_taj + + tools = list(/obj/item/flame/lighter/zippo/taj) + reqs = list(/obj/item/reagent_containers/food/drinks/cans/empty = 1, + /obj/item/stack/material/snow = 4, + /obj/item/reagent_containers/food/snacks/ashomarr = 4) + time = 90 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/watercan + name = "Melt Snow" + result = /obj/item/reagent_containers/food/drinks/cans/watercan + + tools = list(/obj/item/flame/lighter/zippo/taj) + reqs = list(/obj/item/reagent_containers/food/drinks/cans/empty = 1, + /obj/item/stack/material/snow = 4) + time = 90 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/guskacake + name = "Make Guskacake" + result = /obj/item/reagent_containers/food/snacks/guskacake + + tools = list(/obj/item/flame/lighter/zippo/taj) + reqs = list(/obj/item/reagent_containers/food/snacks/guska = 2, + /obj/item/reagent_containers/food/snacks/ashomarr = 2 ) + time = 60 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/taj_pemmican + name = "Make Pemmican" + result = /obj/item/reagent_containers/food/snacks/taj_pemmican + + tools = list(/obj/item/flame/lighter/zippo/taj) + reqs = list(/obj/item/reagent_containers/food/snacks/rawbacon = 3, + /obj/item/reagent_containers/food/snacks/ashomarr = 2 ) + time = 60 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/stimm_hypo + name = "Make Energizing Spiderbite" + result = /obj/item/reagent_containers/hypospray/autoinjector/venominjector/stimm + + tools = list(/obj/item/flame/lighter/zippo/taj) + reqs = list(/obj/item/reagent_containers/glass/venomgland/spider/stimm = 1, + /datum/reagent/toxin/stimm = 15, + /obj/item/stack/material/bone = 1) + time = 40 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/chloral_hypo + name = "Make Sophoric Spiderbite" + result = /obj/item/reagent_containers/hypospray/autoinjector/venominjector/chloral + + tools = list(/obj/item/flame/lighter/zippo/taj) + reqs = list(/obj/item/reagent_containers/glass/venomgland/spider/chloral = 1, + /datum/reagent/chloralhydrate= 15, + /obj/item/stack/material/bone = 1) + time = 40 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/trippy_hypo + name = "Make Trippy Spiderbite" + result = /obj/item/reagent_containers/hypospray/autoinjector/venominjector/psilocybin + + tools = list(/obj/item/flame/lighter/zippo/taj) + reqs = list(/obj/item/reagent_containers/glass/venomgland/spider/psilocybin = 1, + /datum/reagent/psilocybin= 15, + /obj/item/stack/material/bone = 1) + time = 40 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/spider_spray + name = "Make Spider Spray" + result = /obj/item/reagent_containers/spray/spider/pepper + + reqs = list(/obj/item/reagent_containers/glass/venomgland/spider/capsaicin_v = 1, + /datum/reagent/condensedcapsaicin/venom = 15, + /obj/item/stack/material/bone = 3, + /obj/item/stack/sinew = 1) + time = 40 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/empty_can + name = "Make Sealable Can" + result = /obj/item/reagent_containers/food/drinks/cans/empty + + tools = list(TOOL_WELDER, TOOL_SCREWDRIVER) + reqs = list(/obj/item/stack/material/steel) + time = 20 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/hunter_coat + name = "Craft Hunting Coat" + result = /obj/item/clothing/suit/storage/tajaran/coat + + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/stack/material/cloth = 6, + /obj/item/stack/material/leather = 6) + time = 60 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/taj_dress + name = "Weave White Dress" + result = /obj/item/clothing/under/dress/tajaran + + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/stack/material/cloth = 8) + time = 60 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/taj_rdress + name = "Weave Red Dress" + result = /obj/item/clothing/under/dress/tajaran/red + + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/stack/material/cloth = 8, + /obj/item/reagent_containers/food/snacks/ashomarr = 4) + time = 60 + category = CAT_SPECIAL + always_available = FALSE + +/datum/crafting_recipe/taj_bdress + name = "Weave Blue Dress" + result = /obj/item/clothing/under/dress/tajaran/blue + + tools = list(TOOL_WIRECUTTER) + reqs = list(/obj/item/stack/material/cloth = 8, + /datum/reagent/frostoil = 8) + time = 60 + category = CAT_SPECIAL + always_available = FALSE diff --git a/code/game/objects/items/id_cards/station_ids.dm b/code/game/objects/items/id_cards/station_ids.dm index 20a473b093d..a5b900e27c4 100644 --- a/code/game/objects/items/id_cards/station_ids.dm +++ b/code/game/objects/items/id_cards/station_ids.dm @@ -795,3 +795,9 @@ icon_state = "guest" job_access_type = null access = list(170) + +/obj/item/card/id/external/id_nka + name = "New Kingdom of Adhomai Commoner's ID" + desc = "An ID issued to the non-noble commoners of the New Kingdom of Adhomai. In some regions, adults must legally carry it on their person at all times." + icon_state = "nka" + job_access_type = null diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 61d6a5f4077..df0cf3ff2e3 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -1,6 +1,6 @@ /obj/item/stack/animalhide name = "animal hide" - desc = "Intact skin stripped off from a creature's body." + desc = "Intact skin stripped off from a creature's body. You should probably clean off the hair with a blade." singular_name = "hide piece" icon_state = "sheet-hide" no_variants = FALSE @@ -100,7 +100,7 @@ /obj/item/stack/hairlesshide name = "hairless hide" - desc = "This smooth hide needs tanning before it can become leather." + desc = "This smooth hide needs tanning before it can become leather. You should start with soaking it in water." singular_name = "hairless hide piece" icon_state = "sheet-hairlesshide" no_variants = FALSE @@ -168,7 +168,7 @@ /obj/item/stack/wetleather name = "wet leather" - desc = "This leather has been cleaned but still needs to be dried." + desc = "This leather has been cleaned but still needs to be dried. You can probably dry it on a wooden rack." singular_name = "wet leather piece" icon_state = "sheet-wetleather" var/wetness = 30 //Reduced when exposed to high temperautres diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index 9d9965cb1e3..04f2e305426 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -111,6 +111,14 @@ base_icon = "bronze_axe" material_color = FALSE +/obj/item/material/twohanded/fireaxe/iron + name = "Woodcutter's Axe" + desc = "A simple iron axe for cutting down trees. Though not made of the sturdiest metal it will get the job done." + material_parts = /datum/prototype/material/iron + icon_state = "fireaxe_mask0" + base_icon = "fireaxe_mask" + material_color = TRUE + /obj/item/material/twohanded/fireaxe/plasteel material_parts = /datum/prototype/material/plasteel diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index 5930b1830a5..95774fc76ff 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -314,6 +314,11 @@ var/defend_chance = 40 var/projectile_parry_chance = 0 + item_icons = list( + SLOT_ID_LEFT_HAND = 'icons/mob/items/lefthand_melee.dmi', + SLOT_ID_RIGHT_HAND = 'icons/mob/items/righthand_melee.dmi', + ) + /obj/item/bo_staff/proc/jedi_spin(mob/living/user) for(var/i in list(NORTH,SOUTH,EAST,WEST,EAST,SOUTH,NORTH,SOUTH,EAST,WEST,EAST,SOUTH)) user.setDir(i) diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm index 12ea456f4b5..034abc252ad 100644 --- a/code/game/objects/random/mapping.dm +++ b/code/game/objects/random/mapping.dm @@ -986,6 +986,8 @@ prob(80);/obj/structure/flora/grass/both, prob(60);/obj/structure/flora/bush, prob(40);/obj/structure/flora/tree/dead, + prob(20);/obj/structure/flora/snow_berry, + prob(20);/obj/structure/flora/taj_tuber, prob(1);/obj/structure/snowman, prob(1);/obj/structure/snowman/borg, prob(1);/obj/structure/snowman/spider, diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 9b166f6170d..1d292f78d6e 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -83,6 +83,36 @@ . = ..() icon_state = "snowbush[rand(1, 6)]" +/obj/structure/flora/snow_berry + name = "Ashomarr Tree" + desc = "Ashomarr or 'Adhomai Holly' is a berry bush know to thrive in extreme cold. Unlike earth holly, the berries are non-toxic." + icon = 'icons/obj/flora/snowflora.dmi' + icon_state = "holly" + +/obj/structure/flora/snow_berry/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args) + var/harvest_amount = rand(1, 5) + visible_message("[user] begins to pick berries from the Bush.", "You begin picking the berries from the bush.") + if(do_after(user, 5 SECONDS)) + for(var/i in 1 to harvest_amount) + new /obj/item/reagent_containers/food/snacks/ashomarr(src.loc) + visible_message("[user] harvests the berries from the Ashomarr Tree.", "You finish harvesting the berries from the tree.") + qdel(src) + +/obj/structure/flora/taj_tuber + name = "Guskaroot" + desc = "A tuber native to Adhomai known for its unnatural resillence to cold and its ability to grow in the wild." + icon = 'icons/obj/flora/snowflora.dmi' + icon_state = "tajtuber" + +/obj/structure/flora/taj_tuber/attack_hand(mob/user, datum/event_args/actor/clickchain/e_args) + var/harvest_amount = rand(1, 3) + visible_message("[user] begins to pull the tubers from the earth.", "You begin pulling up the tubers.") + if(do_after(user, 5 SECONDS)) + for(var/i in 1 to harvest_amount) + new /obj/item/reagent_containers/food/snacks/guska(src.loc) + visible_message("[user] pull the tubers clean from the frozen earth", "You finish harvesting the tubers.") + qdel(src) + /obj/structure/flora/pottedplant name = "potted plant" desc = "Really ties the room together." diff --git a/code/modules/clothing/suits/aliens/tajara.dm b/code/modules/clothing/suits/aliens/tajara.dm index 15d4bd58ae0..c8378b9d77f 100644 --- a/code/modules/clothing/suits/aliens/tajara.dm +++ b/code/modules/clothing/suits/aliens/tajara.dm @@ -148,6 +148,7 @@ icon_override = 'icons/mob/clothing/species/tajaran/coats.dmi' icon_state = "hunter_coat" item_state = "hunter_coat" + armor_type = /datum/armor/station/padded body_cover_flags = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS /obj/item/clothing/suit/storage/tajaran/jacket/archeologist diff --git a/code/modules/clothing/under/accessories/permits.dm b/code/modules/clothing/under/accessories/permits.dm index ca155ab7cf4..6149c5abfc4 100755 --- a/code/modules/clothing/under/accessories/permits.dm +++ b/code/modules/clothing/under/accessories/permits.dm @@ -35,6 +35,12 @@ desc = "A card indicating that the owner is allowed to carry a weapon." icon_state = "permit-security" +/obj/item/clothing/accessory/permit/gun/nka + name = "New Kingdom Hunter's Permit" + desc = "A card issued by the New Kingdom of Adhomai indicating that the owner is allowed to carry a \ + firearm for the purpose of hunting. This license could be revoked if the hunter is caught doing illegal activities." + icon_state = "permit-nka" + /obj/item/clothing/accessory/permit/gun/bar name = "bar shotgun permit" desc = "A card indicating that the owner is allowed to carry a shotgun in the bar." diff --git a/code/modules/food/drinks/can.dm b/code/modules/food/drinks/can.dm index 02ddf062df7..326d4b5250b 100644 --- a/code/modules/food/drinks/can.dm +++ b/code/modules/food/drinks/can.dm @@ -1,4 +1,7 @@ /obj/item/reagent_containers/food/drinks/cans + name = "empty can" + desc = "You feel like there should be something to drink in here." + icon_state = "empty" volume = 40 //just over one and a half cups amount_per_transfer_from_this = 5 atom_flags = NONE //starts closed @@ -15,6 +18,10 @@ new modified_type(T) qdel(src) +/obj/item/reagent_containers/food/drinks/cans/empty + name = "sealable can" + desc = "A special can that can be filled then sealed. For when you want to make your own canned drinks." + //DRINKS /obj/item/reagent_containers/food/drinks/cans/cola @@ -346,3 +353,32 @@ . = ..() reagents.add_reagent("diethylamine", 20) reagents.add_reagent("water", 10) + +//Tajara Drinks +/obj/item/reagent_containers/food/drinks/cans/evapmilk + name = "Evaporated Milk" + desc = "Milk that has been boiled to make it more shelf stable. A common practice among poorer and less advanced regions of space." + icon_state = "evapmilk" + +/obj/item/reagent_containers/food/drinks/cans/evapmilk/Initialize(mapload) + . = ..() + reagents.add_reagent("evapmilk", 30) + +/obj/item/reagent_containers/food/drinks/cans/kompot_taj + name = "Ashomarr'darr" + desc = "A traditional Tajara beverage similar to Kompot. It is made by boiling Ashomarr berries in water." + icon_state = "kompot_taj" + +/obj/item/reagent_containers/food/drinks/cans/kompot_taj/Initialize(mapload) + . = ..() + reagents.add_reagent("kompot_taj", 30) + +/obj/item/reagent_containers/food/drinks/cans/watercan + name = "Can of Water" + desc = "Probably contains less microplastics then bottled water." + icon_state = "watercan" + +/obj/item/reagent_containers/food/drinks/cans/watercan/Initialize(mapload) + . = ..() + reagents.add_reagent("water", 40) //Important for Crafting Recipes Also means Colonists don't need station/hotsprings for water. + diff --git a/code/modules/food/drinks/flask.dm b/code/modules/food/drinks/flask.dm index 4bb6ecd2e5e..be376c05de6 100644 --- a/code/modules/food/drinks/flask.dm +++ b/code/modules/food/drinks/flask.dm @@ -31,3 +31,17 @@ desc = "Keeping your drinks at the perfect temperature since 1892." icon_state = "vacuumflask" center_of_mass = list("x"=15, "y"=4) + +/obj/item/reagent_containers/food/drinks/flask/tajflask + name = "Adhomai flask" + desc = "A flask wrapped in warm fabric designed to keep the drink warm in Adhomai's frigid climate." + icon_state = "tajflask" + +/obj/item/reagent_containers/food/drinks/flask/tajflask/v_gin + name = "Victory Gin Flask" + desc = "Victory Gin is the choice drink of the lower classes of Adhomai. This oily grain alcohol is said to keep you warm on cold winters night." + +/obj/item/reagent_containers/food/drinks/flask/tajflask/v_gin/Initialize(mapload) + . = ..() + reagents.add_reagent("victory_gin", 60) + diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 58b5f777cf1..c6025b142fc 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -7058,3 +7058,38 @@ END CITADEL CHANGE */ /obj/item/reagent_containers/food/snacks/macaron/green desc = "A small sugary treat. This one is green!" icon_state = "macaron_green" + +///Because Scale Creep is a Thing + +/obj/item/reagent_containers/food/snacks/ashomarr + name = "Ashomarr Berries" + desc = "Native to Adhomai, this sweet berry that thrives in the cold. It has many uses in traditional Tajaran cuisine, medicine, and crafts as a dye." + icon_state = "holly" + nutriment_amt = 2 + nutriment_desc = list("sweetness" = 1, "bitterness" = 1) + +/obj/item/reagent_containers/food/snacks/guska + name = "Guskaroot" + desc = "A cold resilent and infamously unappetizing tuber native to Adhomai. Its ability to thrive in cold has made it a staple crop for Adhomai's poorest peasants." + icon_state = "tajtuber" + nutriment_amt = 3 + nutriment_desc = list("nutritious dirt" = 1) + +/obj/item/reagent_containers/food/snacks/guskacake + name = "Guskacake" + desc = "A traditional Adhomai peasant's dish, guskaroot mashed and garnished with Ashomarr Jam to mask the Guskaroot's earthy flavor." + icon_state = "tajtubercake" + nutriment_amt = 10 + nutriment_desc = list("flavored dirt" = 1) + +/obj/item/reagent_containers/food/snacks/taj_pemmican + name = "Adhomai Pemmican" + desc = "Dried meat and beries mixed together for travel and shelf life. This particular mix is from Adhomai." + icon_state = "tajt_pemmican" + nutriment_amt = 4 + nutriment_desc = list("dry meat" = 1, "berry" = 1) + +/obj/item/reagent_containers/food/snacks/taj_pemmican/Initialize(mapload) + . = ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("triglyceride", 1) diff --git a/code/modules/ghostroles/roles/lythios_colonist.dm b/code/modules/ghostroles/roles/lythios_colonist.dm new file mode 100644 index 00000000000..8f265ab0994 --- /dev/null +++ b/code/modules/ghostroles/roles/lythios_colonist.dm @@ -0,0 +1,110 @@ +/datum/role/ghostrole/lythios_colonist + name = "Na'sahira Colonist" + assigned_role = "Colonist" + desc = "You are a Tajara colonist from the New Kingdom of Adhomai, struggling to eek out a living on a distant planet." + spawntext = "You were selected by lottery, to settle a new colony on land leased from Nanotrasen, Na'sahira. In order to make this journey you had to swear \ + fealty to the Baronness Anjarra Azorman, a small price to escape the proverty you faced on Adhomai. This planet is harsh and even here it is a struggle to survive. \ + Thankfully there is a Nanotrasen base nearby the ground around which are said to be rich in resources. Through the Baronness agreement with Nanotrasen you may \ + harvest these resources and trade with the crew. Hopefully that makes the long walk here from Na'sahira worth it. Maybe this crew can even afford to pay in things \ + beyond their useless Thalers." + + important_info = "The colonists of Na'sahira are all Tajara from the New Kingdom of Adhomai. They come mostly from destitute backgrounds and won a lottery to be \ + resettled here. The planet is harsh and you are extremely poor. Thalers are not an accepted currency in Na'sahira and as such they are only useful to you as kindling. \ + Na'Sahira's colonists are not meant to leave the planet without the permission of their Baronness. This is not an antag role though minor acts of mischief such as petty \ + theft or vandalism are permitted especially in the name of survival. Serious criminal acts however may see your character punished by the Na'sahira Constabulary whose \ + form of justice is harsher then Nanotrasen's. Na'sahira colonists are permadeath characters, be very careful." + + instantiator = /datum/ghostrole_instantiator/human/player_static/lythios_colonist + +/datum/role/ghostrole/lythios_colonist/Instantiate(client/C, atom/loc, list/params) + return ..() + +/datum/role/ghostrole/lythios_colonist/Greet(mob/created, datum/component/ghostrole_spawnpoint/spawnpoint, list/params) + . = ..() + to_chat(created, " The metal clanks beneath you as you step through the final old door entering the grounds of NSB Atlas. You travelled \ + around five kilometers through the snow to get here. Compared to that the few hundred meter tunnel wasn't bad at all, even if the climb through \ + the hatch was a tight fit. The area around NSB is allegedly rich in resources for harvesting and equally as rich with oppourtunities to barter \ + with the Nanotrasen crew. You reach for your tightly bundled travel pack. S'rendarr perserve you, its time to get to work!") + +/datum/ghostrole_instantiator/human/player_static/lythios_colonist + equip_loadout = FALSE //You are too poor to have a loadout. + species_required = /datum/species/tajaran + var/list/lythios_colonist_crafting = list(/datum/crafting_recipe/evapmilk, /datum/crafting_recipe/kompot, /datum/crafting_recipe/watercan, + /datum/crafting_recipe/guskacake, /datum/crafting_recipe/taj_pemmican, /datum/crafting_recipe/stimm_hypo, /datum/crafting_recipe/chloral_hypo, + /datum/crafting_recipe/trippy_hypo, /datum/crafting_recipe/empty_can, /datum/crafting_recipe/spider_spray, /datum/crafting_recipe/hunter_coat, + /datum/crafting_recipe/taj_dress, /datum/crafting_recipe/taj_rdress, /datum/crafting_recipe/taj_bdress + ) + +/datum/ghostrole_instantiator/human/player_static/lythios_colonist/GetOutfit(client/C, mob/M, list/params) + return new /datum/outfit/lythios_colonist + +/datum/ghostrole_instantiator/human/player_static/lythios_colonist/AfterSpawn(mob/created, list/params) + . = ..() + created.mind.teach_crafting_recipe(lythios_colonist_crafting) + +/obj/structure/ghost_role_spawner/lythios_colonist + name = "maintnance hatch" + desc = "A old ladder connecting to the old People's Republic of Adhomai maintnance tunnels. A good way to get around Lythios." + icon = 'icons/obj/structures.dmi' + icon_state = "hatchdown" + anchored = TRUE + role_type = /datum/role/ghostrole/lythios_colonist + role_spawns = 4 + +/obj/item/gearbox/lythios_colonist + name = "tightly bundled pack" + desc = "A tajaran colonist's tightly bundled pack of equipment. All there is left to do is open it up." + icon = 'icons/obj/storage.dmi' + icon_state = "giftbag2" + +/obj/item/gearbox/lythios_colonist/attack_self(mob/user, datum/event_args/actor/actor) + var/list/options = list() + options["Herder"] = list(/obj/item/tool/wirecutters/clippers/trimmers, /obj/item/reagent_containers/glass/bucket/wood, /obj/item/bo_staff, + /obj/item/material/butterfly/butterfly_wooden, /obj/item/reagent_containers/food/drinks/cans/empty, /obj/item/reagent_containers/food/drinks/cans/empty, + /obj/item/reagent_containers/food/drinks/cans/empty, /obj/item/reagent_containers/food/drinks/cans/empty, /obj/item/reagent_containers/food/drinks/cans/empty, + /obj/item/reagent_containers/food/drinks/cans/empty, /obj/item/clothing/suit/storage/hooded/tajaran/cloak/gruff) + options["Hunter"] = list(/obj/item/gun/projectile/ballistic/musket/taj, /obj/item/storage/box/munition_box, /obj/item/storage/box/munition_box, + /obj/item/reagent_containers/glass/powder_horn/filled, /obj/item/material/knife/hook, /obj/item/beartrap, /obj/item/clothing/suit/storage/tajaran/coat, + /obj/item/clothing/head/tajaran/fur, /obj/item/clothing/accessory/permit/gun/nka) + options["Lumberjack"] = list(/obj/item/material/knife/machete/hatchet, /obj/item/material/twohanded/fireaxe/iron, /obj/item/clothing/shoes/tajara/workboots, + /obj/item/clothing/head/tajaran/fur, /obj/item/clothing/suit/storage/hooded/tajaran/cloak/gruff) + options["Prospector"] = list(/obj/item/pickaxe/icepick, /obj/item/storage/bag/ore, /obj/item/flashlight/lantern, /obj/item/clothing/head/hardhat/orange, + /obj/item/clothing/suit/storage/hooded/tajaran/cloak/gruff, /obj/item/clothing/shoes/tajara/workboots) + options["Scavenger"] = list(/obj/item/storage/belt/utility/full, /obj/item/clothing/head/hardhat, /obj/item/clothing/suit/storage/hooded/tajaran/cloak/gruff, + /obj/item/clothing/shoes/tajara/workboots/dark, /obj/item/clothing/under/tajaran/mechanic, /obj/item/clothing/gloves/black/tajara/smithgloves, + /obj/item/reagent_containers/pill/hyronalin, /obj/item/reagent_containers/pill/hyronalin) + var/choice = input(user,"What is your profession?") as null|anything in options + if(src && choice) + var/list/things_to_spawn = options[choice] + for(var/new_type in things_to_spawn) // Spawn all the things, + new new_type(get_turf(src)) + if(choice == "Herder") + to_chat(user, "You are a Herder, back home you tended livestock on a smaller poor homestead. Now you do much the same lightyears away. \ + You have the tools to harvest from the local animals here. You also have cans which can be used to brew some traditional Adhomai drinks. \ + Perhaps the station will barter good things for some homemade Ashomarr'Darr. If not the beasts here should at least provide enough wool \ + and milk to take home. Maybe the station would be interested too as long they aren't buying in worthless Thalers. You should try \ + collecting milk in your bucket before evaporating and canning it. It will save a lot of space. ") + if(choice == "Hunter") + to_chat(user, "You are a hunter sanctioned by the Baronness to to hunt game in the local region. On Adhomai overhunting and population \ + growth drove much of the game from your home leaving you destitute. Here the game is far more plentiful though life is still harsh. \ + Hunting the creatures here may prove challenging as many are dangerous however as long as you keep your whits about you this journey may \ + prove very profitable indeed. The venom glands of giant spiders maybe of special use to you and the station, or sold to the station for their venom. \ + Hopefully they are willing to pay for them in things that aren't Thalers.") + if(choice == "Lumberjack") + to_chat(user, "You are lumberjack from the hinterlands of Adhomai. The forests of your home are heavily depleted and though this \ + place is far from prime forest land it still provides an oppourtunity that home lacked. With your axe and trees all about \ + you are likely to collect a lot of lumber which is hard to transport back to Na'sahira. Trading it to the crew or crafting \ + it into items is probably a better use of your labor.") + if(choice == "Prospector") + to_chat(user, "You are a prospector from the hills of Adhomai. As industrialized mining replaced good old fashioned miners and \ + old viens of ore are stripped dry, many miners such as you were left unemployed. However, this planet is mostly untouched and the demand for \ + ore both from Na'sahira and the Nanotrasen station means that there may be good things awaiting those willing to dig it up. It is time to strike the \ + frozen earth and just maybe you can make a good wage when you take the ore back home. The station may be willing to buy ore \ + too as long as they aren't paying in worthless Thalers.") + if(choice == "Scavenger") + to_chat(user, "You are rare among the Na'sahira settlers. Hailing from the urban poor you learned to scavenge to survive taking apart \ + all the broken left behind trash of your home city and selling the goods bits for what few pennies people would take it for. On this new \ + planet there is far less to scavenge however, the People's Republic of Adhomai left behind many things in their old facility. \ + As long as you avoid Radiation hotspots you maybe able to bring quite the haul back home if only enough to survive to next week. \ + Perhaps even the station will be interested in some of your finds, as long as they aren't paying in Thalers.") + qdel(src) diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm index f4568026aba..9436f4be9f0 100644 --- a/code/modules/mob/living/simple_mob/simple_mob.dm +++ b/code/modules/mob/living/simple_mob/simple_mob.dm @@ -403,10 +403,10 @@ //TODO: This needs to be phased out for a newer butchering system. Though I am too scared to undo all our custom stuff. -Zandario // Harvest an animal's delicious byproducts /mob/living/simple_mob/harvest(mob/user) - var/actual_meat_amount = pick(0, meat_amount) - var/actual_bone_amount = pick(0, bone_amount) - var/actual_hide_amount = pick(0, hide_amount) - var/actual_exotic_amount = pick(0, exotic_amount) + var/actual_meat_amount = rand(0, meat_amount) + var/actual_bone_amount = rand(0, bone_amount) + var/actual_hide_amount = rand(0, hide_amount) + var/actual_exotic_amount = rand(0, exotic_amount) if(stat != DEAD) return if(meat_type) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/lythios.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/lythios.dm index 9bd45ee4dae..c0ffd2ba23b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/lythios.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/lythios.dm @@ -4,11 +4,11 @@ /datum/category_item/catalogue/fauna/livestock/icegoat name = "Experimental Livestock - Glacicorn" desc = "A genetically engineered lifeform distantly related to the domesticated goat.\ - It is currently being developed by NT as part of an independent initiative to slowly\ - ween itself off reliance on Centauri Provisions for its food. It is capable of surviving\ - in the harshest colds, and survives off of chemical processes only possible in extreme cold.\ - As a result it dies rather quickly in what most races would consider 'comfortable' heat.\ - Theirs ice spikes though dangerous are seen as a necessary defense for theoretical predators.\ + It is currently being developed by NT as part of an independent initiative to slowly \ + ween itself off reliance on Centauri Provisions for its food. It is capable of surviving \ + in the harshest colds, and survives off of chemical processes only possible in extreme cold. \ + As a result it dies rather quickly in what most races would consider 'comfortable' heat. \ + Theirs ice spikes though dangerous are seen as a necessary defense for theoretical predators. \ Its milk is notably chilled by frost oil created as a by product of surviving on icy planets." value = CATALOGUER_REWARD_TRIVIAL @@ -100,11 +100,11 @@ /datum/category_item/catalogue/fauna/livestock/woolie name = "Experimental Livestock - Woolie" - desc = "A large ball of dense wool hiding an unusual octopedal creature.\ - It has been genetically engineered almost from scratch to create an animal\ - capable of producing a natural clothing fiber on even the coldest worlds.\ - Cloth can be sheared from the outer most layers of its woolen coat which\ - regrows quickly. Lower layers of the coat tend to be too dense to shear.\ + desc = "A large ball of dense wool hiding an unusual octopedal creature. \ + It has been genetically engineered almost from scratch to create an animal \ + capable of producing a natural clothing fiber on even the coldest worlds. \ + Cloth can be sheared from the outer most layers of its woolen coat which \ + regrows quickly. Lower layers of the coat tend to be too dense to shear. \ These peaceful animals have temperment similar to sheep and are very peaceful." value = CATALOGUER_REWARD_TRIVIAL @@ -172,9 +172,9 @@ /datum/category_item/catalogue/fauna/livestock/furnacegrub name = "Experimental Livestock - Furnace Grub" - desc = "After years of study by NT xenobiologists, the genes that allowed solar moths\ - to produce heat were extracted and engineered into a docile and mostly safe living furnace.\ - The 'Furnace Grub' as it has been dubbed could provide passive heating even without power systems,\ + desc = "After years of study by NT xenobiologists, the genes that allowed solar moths \ + to produce heat were extracted and engineered into a docile and mostly safe living furnace. \ + The 'Furnace Grub' as it has been dubbed could provide passive heating even without power systems, \ which NT hopes can be sold to prospective colonists seeking to colonize the most icy planets." value = CATALOGUER_REWARD_TRIVIAL diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm index a59f1056122..33d703f768a 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm @@ -101,16 +101,18 @@ meat_amount = 3 meat_type = /obj/item/reagent_containers/food/snacks/xenomeat/spidermeat + hide_amount = 1 + hide_type = /obj/item/stack/material/chitin //This used to be loot now its just the hide. + + exotic_amount = 1 //Spiders now drop their venom glands for reagent harvesting. + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/s_toxin + say_list_type = /datum/say_list/spider var/poison_type = "spidertoxin" // The reagent that gets injected when it attacks. var/poison_chance = 10 // Chance for injection to occur. var/poison_per_bite = 5 // Amount added per injection. - butchery_loot = list(\ - /obj/item/stack/material/chitin = 1\ - ) - /mob/living/simple_mob/animal/giant_spider/apply_melee_effects(var/atom/A) if(isliving(A)) var/mob/living/L = A @@ -138,3 +140,23 @@ if(poison_per_bite) poison_per_bite *= 1.3 + +//New Spider Exotic Drop: Poison Glands, for more reagents + +/obj/item/reagent_containers/glass/venomgland/spider + name = "Spider Venom Gland" + desc = "A sac full of venom cut from a spider. This one seems depleted." + icon_state = "venomgland" + w_class = WEIGHT_CLASS_SMALL //These are not space effecient, as such they are meatn primarily to act as containers for spawning reagents. + slot_flags = SLOT_BELT + amount_per_transfer_from_this = 5 + possible_transfer_amounts = list(5) + volume = 15 + +/obj/item/reagent_containers/glass/venomgland/spider/s_toxin + name = "Spider Venom Gland" + desc = "A sac full of venom cut from a spider. This one looks rather average." + +/obj/item/reagent_containers/glass/venomgland/spider/s_toxin/Initialize(mapload) + . = ..() + reagents.add_reagent("spidertoxin", 15) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/carrier.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/carrier.dm index f59fa86255d..33427ee0944 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/carrier.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/carrier.dm @@ -31,6 +31,8 @@ movement_cooldown = 5 + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/chloral + player_msg = "Upon dying, you will release a swarm of spiderlings or young hunter spiders.
\ If a spider emerges, you will be placed in control of it." @@ -74,6 +76,14 @@ transfer_client_to(new_body) return ..() +/obj/item/reagent_containers/glass/venomgland/spider/chloral + name = "Sleepy Venom Gland" + desc = "A sac full of venom. The smell makes you feel lightheaded." + +/obj/item/reagent_containers/glass/venomgland/spider/chloral/Initialize(mapload) + . = ..() + reagents.add_reagent("chloralhydrate", 15) + // Note that this isn't required for the 'scan all spiders' entry since its essentially a meme. /datum/category_item/catalogue/fauna/giant_spider/recursive_carrier_spider name = "Giant Spider - Recursive Carrier" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm index 1bf5f79ab63..1c22243cdab 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/electric.dm @@ -43,6 +43,8 @@ shock_resist = 0.75 + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/stimm + player_msg = "You can fire a taser-like ranged attack by clicking on an enemy or tile at a distance." ai_holder_type = /datum/ai_holder/polaris/simple_mob/ranged/electric_spider @@ -60,3 +62,11 @@ if(L.incapacitated(INCAPACITATION_DISABLED) || L.stat == UNCONSCIOUS) // If our target is stunned, go in for the kill. return 1 return ..() // Do ranged if possible otherwise. + +/obj/item/reagent_containers/glass/venomgland/spider/stimm + name = "Energizing Venom Gland" + desc = "A sac full of venom. It makes your fingers twitch holding it." + +/obj/item/reagent_containers/glass/venomgland/spider/stimm/Initialize(mapload) + . = ..() + reagents.add_reagent("stimm", 15) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/frost.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/frost.dm index 2128b98ef4a..6304eebb351 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/frost.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/frost.dm @@ -31,7 +31,17 @@ heat_resist = -0.50 cold_resist = 0.75 + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/cryotoxin + // Sif variant with a somewhat different desc. /mob/living/simple_mob/animal/giant_spider/frost/sif desc = "Icy and blue, it makes you shudder to look at it. This one has brilliant blue eyes. \ It isn't native to Sif." + +/obj/item/reagent_containers/glass/venomgland/spider/cryotoxin + name = "Chilly Venom Gland" + desc = "A sac full of venom. It's cold to the touch." + +/obj/item/reagent_containers/glass/venomgland/spider/cryotoxin/Initialize(mapload) + . = ..() + reagents.add_reagent("cryotoxin", 15) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/hunter.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/hunter.dm index 08f505eaf67..ff0b3b76464 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/hunter.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/hunter.dm @@ -102,6 +102,11 @@ set_AI_busy(FALSE) + + + + + // var/obj/item/grab/G = new(src, victim) // put_in_active_hand(G) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/ion.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/ion.dm index 4f1514e5e79..6f3eb421cf3 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/ion.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/ion.dm @@ -19,4 +19,14 @@ poison_per_bite = 2 poison_type = "psilocybin" + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/psilocybin + ai_holder_type = /datum/ai_holder/polaris/simple_mob/ranged/electric_spider + +/obj/item/reagent_containers/glass/venomgland/spider/psilocybin + name = "Trippy Venom Gland" + desc = "A sac full of venom. It makes you feel funny when you sniff it." + +/obj/item/reagent_containers/glass/venomgland/spider/psilocybin/Initialize(mapload) + . = ..() + reagents.add_reagent("psilocybin", 15) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm index 00cdeb79680..464a45ef2d6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/lurker.dm @@ -41,6 +41,8 @@ poison_type = "cryptobiolin" poison_per_bite = 1 + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/confusing + player_msg = "You have an imperfect, but automatic stealth. If you attack something while 'hidden', then \ you will do bonus damage, stun the target, and unstealth for a period of time.
\ Getting attacked will also break your stealth." @@ -123,3 +125,12 @@ /mob/living/simple_mob/animal/giant_spider/lurker/hit_with_weapon(obj/item/O, mob/living/user, effective_force, hit_zone) . = ..() break_cloak() + + +/obj/item/reagent_containers/glass/venomgland/spider/confusing + name = "Confusing Venom Gland" + desc = "A sac full of venom. You feel a bit dizzy holding it." + +/obj/item/reagent_containers/glass/venomgland/spider/confusing/Initialize(mapload) + . = ..() + reagents.add_reagent("cryptobiolin", 15) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm index 73cf4d0e7dd..40e2d4b7268 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/nurse.dm @@ -40,6 +40,8 @@ poison_per_bite = 5 poison_type = "stoxin" + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/s_toxin + player_msg = "You can spin webs on an adjacent tile, or cocoon an object by clicking on it.
\ You can also cocoon a dying or dead entity by clicking on them, and you will gain charges for egg-laying.
\ To lay eggs, click a nearby tile. Laying eggs will deplete a charge." @@ -211,6 +213,13 @@ laying_eggs = FALSE return TRUE +/obj/item/reagent_containers/glass/venomgland/spider/sophoric + name = "Drowsy Venom Gland" + desc = "A sac full of venom. It makes you feel drowsy." + +/obj/item/reagent_containers/glass/venomgland/spider/sophoric/Initialize(mapload) + . = ..() + reagents.add_reagent("stoxin", 15) // Variant that 'blocks' light (by being a negative light source). // This is done to make webbed rooms scary and allow for spiders on the other side of webs to see prey. diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/pepper.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/pepper.dm index 4952c8ae822..d18054ec13c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/pepper.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/pepper.dm @@ -29,6 +29,17 @@ poison_per_bite = 5 poison_type = "condensedcapsaicin_v" + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/capsaicin_v + /mob/living/simple_mob/animal/giant_spider/pepper/Initialize(mapload) adjust_scale(1.1) return ..() + +/obj/item/reagent_containers/glass/venomgland/spider/capsaicin_v + name = "Irritating Venom Gland" + desc = "A sac full of venom. The mere touch stings." + +/obj/item/reagent_containers/glass/venomgland/spider/capsaicin_v/Initialize(mapload) + . = ..() + reagents.add_reagent("condensedcapsaicin_v", 15) + diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm index 1ec52a77a40..e91e4c0cedd 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/phorogenic.dm @@ -45,6 +45,8 @@ poison_per_bite = 0.5 poison_type = "phoron" + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/phoron + var/exploded = FALSE var/explosion_dev_range = 1 var/explosion_heavy_range = 2 @@ -78,6 +80,14 @@ explosion(src.loc, explosion_dev_range, explosion_heavy_range, explosion_light_range, explosion_flash_range) return ..() +/obj/item/reagent_containers/glass/venomgland/spider/phoron + name = "Phoronic Venom Gland" + desc = "A venom sac full of phoron. Maybe NT should have taken up spider ranching." + +/obj/item/reagent_containers/glass/venomgland/spider/phoron/Initialize(mapload) + . = ..() + reagents.add_reagent("phoron", 15) + // Weakened version of Phoron spiders /mob/living/simple_mob/animal/giant_spider/phorogenic/weak maxHealth = 100 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/thermic.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/thermic.dm index 7306389a925..317ccb6c54c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/thermic.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/thermic.dm @@ -35,3 +35,14 @@ poison_chance = 30 poison_per_bite = 1 poison_type = "thermite_v" + + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/thermite + +/obj/item/reagent_containers/glass/venomgland/spider/thermite + name = "Thermic Venom Gland" + desc = "A sac of venom. It feels hot to the touch." + +/obj/item/reagent_containers/glass/venomgland/spider/thermite/Initialize(mapload) + . = ..() + reagents.add_reagent("thermite_v", 15) + diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/tunneler.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/tunneler.dm index 3e5bde73db1..9db4f24bbfd 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/tunneler.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/tunneler.dm @@ -42,6 +42,8 @@ poison_per_bite = 3 poison_type = "serotrotium_v" + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/serotrotium + // ai_holder_type = /datum/ai_holder/polaris/simple_mob/melee/tunneler player_msg = "You can perform a tunneling attack by clicking on someone from a distance.
\ @@ -190,6 +192,15 @@ /mob/living/simple_mob/animal/giant_spider/tunneler/proc/dig_under_floor(turf/T) new /obj/item/stack/ore/glass(T) // This will be rather weird when on station but the alternative is too much work. +/obj/item/reagent_containers/glass/venomgland/spider/serotrotium + name = "Dulling Venom Gland" + desc = "A sac of venom. Your thoughts drift a bit holding it." + +/obj/item/reagent_containers/glass/venomgland/spider/thermite/Initialize(mapload) + . = ..() + reagents.add_reagent("serotrotium_v", 15) + + /obj/effect/temporary_effect/tunneler_hole name = "hole" desc = "A collapsing tunnel hole." diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm index b6fab7da45b..85265fd0eaf 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/webslinger.dm @@ -31,6 +31,9 @@ legacy_melee_damage_upper = 15 poison_per_bite = 2 poison_type = "psilocybin" + + exotic_type = /obj/item/reagent_containers/glass/venomgland/spider/psilocybin + player_msg = "You can fire a ranged attack by clicking on an enemy or tile at a distance." ai_holder_type = /datum/ai_holder/polaris/simple_mob/ranged diff --git a/code/modules/projectiles/guns/gun/projectile/ballistic/musket.dm b/code/modules/projectiles/guns/gun/projectile/ballistic/musket.dm index 6c530fdf4b1..7e4b0bd877f 100644 --- a/code/modules/projectiles/guns/gun/projectile/ballistic/musket.dm +++ b/code/modules/projectiles/guns/gun/projectile/ballistic/musket.dm @@ -70,7 +70,7 @@ slot_flags = SLOT_BELT amount_per_transfer_from_this = 5 possible_transfer_amounts = list(5) - volume = 30 + volume = 60 /obj/item/reagent_containers/glass/powder_horn/filled name = "powder horn" @@ -78,7 +78,7 @@ /obj/item/reagent_containers/glass/powder_horn/filled/Initialize(mapload) . = ..() - reagents.add_reagent("gunpowder", 30) + reagents.add_reagent("gunpowder", 60) /obj/item/reagent_containers/glass/powder_horn/tribal name = "tribal powder horn" @@ -91,7 +91,7 @@ /obj/item/reagent_containers/glass/powder_horn/tribal/filled/Initialize(mapload) . = ..() - reagents.add_reagent("gunpowder", 30) + reagents.add_reagent("gunpowder", 60) /obj/item/gun/projectile/ballistic/musket/tribal name = "tribal musket" diff --git a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm index fad0fa4c77f..ccad6d980c3 100644 --- a/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/chemistry/reagents/Chemistry-Reagents-Food-Drinks.dm @@ -849,6 +849,18 @@ glass_name = "glass of earthen-root juice" glass_desc = "Juice extracted from earthen-root, a plant native to Adhomai." +/datum/reagent/drink/juice/kompot_taj + name = "Adhomai Kompot" + id = "kompot_taj" + description = "Also known as Ashomar'darr Adhomai, this traditional beverage made from boiling Adhomai Holly in water." + color = "#a51919" + taste_description = "a bitter sweet fruitiness" + + glass_icon_state = "berryjuice" + glass_name = "glass of Adhomai Kompot" + glass_desc = "A beverage made by boiling berries native to Adhomai in water." + + // Everything else /datum/reagent/drink/milk @@ -867,6 +879,21 @@ cup_name = "Cup of Milk" cup_desc = "White and nutritious goodness!" +/datum/reagent/drink/milk/evaporated + name = "Evaporated Milk" + id = "evapmilk" + description = "Milk with much of its water boiled away. Has far beter shelf life then regular milk." + taste_description = "milk" + color = "#f7f8d2" + nutrition=5 + + glass_name = "Evaporate Milk" + glass_desc = "Thick, Creamy, White, and nutritious goodness!" + + cup_icon_state = "cup_cream" + cup_name = "Cup of Evaporated Milk" + cup_desc = "Thick, Creamy, White, and nutritious goodness!" + /datum/reagent/drink/milk/chocolate name = "Chocolate Milk" id = "chocolate_milk" diff --git a/code/modules/reagents/items/spray.dm b/code/modules/reagents/items/spray.dm index a3cd14b1fa3..34910ef5f93 100644 --- a/code/modules/reagents/items/spray.dm +++ b/code/modules/reagents/items/spray.dm @@ -234,3 +234,18 @@ /obj/item/reagent_containers/spray/windowsealant/Initialize(mapload) . = ..() reagents.add_reagent("silicate", 80) + + +/obj/item/reagent_containers/spray/spider/pepper + name = "venom spray" + desc = "A spider's venom gland rigged with bones and sinew to discharge its contents in a spray." + icon = 'icons/obj/weapons.dmi' + icon_state = "spiderspray" + item_state = "pepperspray" + possible_transfer_amounts = null + volume = 15 + +/obj/item/reagent_containers/spray/pestbgone/Initialize(mapload) + . = ..() + reagents.add_reagent("condensedcapsaicin_v", volume) + diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 4e1a1e9573c..2f3ddb105c7 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -190,6 +190,31 @@ icon_state = "green" filled_reagents = list("anti_toxin" = 5) +/obj/item/reagent_containers/hypospray/autoinjector/venominjector + name = "spiderbite injector" + desc = "A venom gland with a bone needle allowing it to inject its contents into be injected into the bloodstream directly." + icon_state = "spiderinjector" + filled_reagents = list("spidertoxin" = 5) + +/obj/item/reagent_containers/hypospray/autoinjector/venominjector/stimm + name = "energizing spiderbite" + desc = "A venom gland with a bone needle allowing it to inject its contents into be injected into the bloodstream directly. \ + This one is filled with a stimulant toxic in large amounts. For when you need to give yourself a little boost." + filled_reagents = list("stimm" = 5) + +/obj/item/reagent_containers/hypospray/autoinjector/venominjector/chloral + name = "sophoric spiderbite" + desc = "A venom gland with a bone needle allowing it to inject its contents into be injected into the bloodstream directly. \ + This one is filled with a power sleeping toxin. Excellent for putting unsuspecting to a quick sleep." + filled_reagents = list("chloralhydrate" = 5) + + +/obj/item/reagent_containers/hypospray/autoinjector/venominjector/psilocybin + name = "trippy spiderbite" + desc = "A venom gland with a bone needle allowing it to inject its contents into be injected into the bloodstream directly. \ + This one is filled with hallucinogens for recreational use." + filled_reagents = list("psilocybin" = 5) + // These have a 15u capacity, somewhat higher tech level, and generally more useful chems, but are otherwise the same as the regular autoinjectors. /obj/item/reagent_containers/hypospray/autoinjector/biginjector name = "empty hypo" diff --git a/icons/obj/card_cit.dmi b/icons/obj/card_cit.dmi index 44bc331abc2..a54a2e84f71 100644 Binary files a/icons/obj/card_cit.dmi and b/icons/obj/card_cit.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index b7d88fd8c09..8f29552c51c 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/flora/snowflora.dmi b/icons/obj/flora/snowflora.dmi index 873763ddd91..6ce85e1f00b 100644 Binary files a/icons/obj/flora/snowflora.dmi and b/icons/obj/flora/snowflora.dmi differ diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index e83e6206e92..5f6547f2d9f 100644 Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ diff --git a/icons/obj/medical/chemical.dmi b/icons/obj/medical/chemical.dmi index 2e2df688731..6fff4b0bd21 100644 Binary files a/icons/obj/medical/chemical.dmi and b/icons/obj/medical/chemical.dmi differ diff --git a/icons/obj/medical/syringe.dmi b/icons/obj/medical/syringe.dmi index 53858ebf549..700185d3521 100644 Binary files a/icons/obj/medical/syringe.dmi and b/icons/obj/medical/syringe.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index cda3aaf191c..fc7344a2a8d 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/maps/rift/levels/rift-03-underground1.dmm b/maps/rift/levels/rift-03-underground1.dmm index 1f715a2f100..d9113458a88 100644 --- a/maps/rift/levels/rift-03-underground1.dmm +++ b/maps/rift/levels/rift-03-underground1.dmm @@ -1824,6 +1824,10 @@ /obj/effect/paint/pipecyan, /turf/simulated/floor/plating, /area/engineering/atmos) +"dZ" = ( +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "ea" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -2279,6 +2283,10 @@ }, /turf/simulated/floor/plating, /area/maintenance/engineering/pumpstation) +"fA" = ( +/obj/structure/sign/warning, +/turf/simulated/wall/prepainted, +/area/rift/surfacebase/underground/under1) "fB" = ( /obj/random/trash_pile, /obj/effect/floor_decal/rust, @@ -3261,6 +3269,14 @@ }, /turf/simulated/floor/concrete/indoors, /area/security/prison/lower) +"iN" = ( +/obj/structure/table/rack/shelf/steel, +/obj/effect/floor_decal/rust, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/obj/random/maintenance/engineering, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "iO" = ( /obj/machinery/atmospherics/component/unary/outlet_injector{ dir = 4; @@ -4254,6 +4270,13 @@ "lZ" = ( /turf/simulated/floor/outdoors/rocks/caves/geothermal, /area/rift/surfacebase/underground/under1) +"ma" = ( +/obj/machinery/light/small/emergency/flicker{ + dir = 4 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "mc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -5030,6 +5053,10 @@ }, /turf/simulated/floor/tiled/techmaint, /area/rift/station/fighter_bay/transport_tunnel) +"oI" = ( +/obj/machinery/light/small/emergency/flicker, +/turf/simulated/floor/outdoors/gravsnow/lythios43c, +/area/rift/surfacebase/underground/under1) "oJ" = ( /obj/structure/table/rack/steel, /obj/item/computer_hardware/battery_module, @@ -5203,6 +5230,14 @@ }, /turf/simulated/floor/tiled, /area/engineering/atmos) +"pe" = ( +/obj/structure/stairs/bottom{ + dir = 1 + }, +/obj/effect/floor_decal/rust, +/obj/structure/boulder, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "pf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/blue{ dir = 8 @@ -6026,6 +6061,13 @@ /obj/structure/mirror/long/right, /turf/simulated/wall/r_wall/prepainted/security, /area/security/prison/lower) +"rR" = ( +/obj/effect/floor_decal/rust, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "rS" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/concrete/rng/indoors, @@ -6564,6 +6606,11 @@ }, /turf/simulated/floor/tiled/techmaint, /area/rift/station/fighter_bay/transport_tunnel) +"tS" = ( +/obj/effect/floor_decal/rust, +/obj/structure/ghost_role_spawner/lythios_colonist, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "tT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/blue{ dir = 8 @@ -6767,6 +6814,14 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/engineering/upper) +"uK" = ( +/obj/effect/floor_decal/rust, +/obj/random/trash_pile, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "uM" = ( /obj/machinery/atmospherics/pipe/simple/visible/blue{ dir = 9 @@ -7965,6 +8020,11 @@ }, /turf/simulated/floor/wood, /area/rift/station/fighter_bay) +"yj" = ( +/obj/effect/floor_decal/rust, +/obj/random/junk, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "yk" = ( /mob/living/simple_mob/animal/passive/woolie, /turf/simulated/floor/outdoors/snow/lythios43c, @@ -9801,6 +9861,14 @@ "EH" = ( /turf/simulated/floor/tiled/monowhite, /area/security/prison/lower) +"EI" = ( +/obj/structure/table/rack/shelf/steel, +/obj/effect/floor_decal/rust, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/obj/random/maintenance/cargo, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "EJ" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 4 @@ -9858,6 +9926,11 @@ /obj/machinery/pipedispenser/disposal, /turf/simulated/floor/tiled, /area/engineering/atmos) +"EV" = ( +/obj/effect/floor_decal/rust, +/obj/item/barrier_tape_segment/engineering, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "EW" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/simple/hidden/blue{ @@ -11447,6 +11520,14 @@ }, /turf/simulated/floor/tiled, /area/rnd/secure_storage/upper) +"JP" = ( +/obj/structure/stairs/middle{ + dir = 1 + }, +/obj/effect/floor_decal/rust, +/obj/random/junk, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "JQ" = ( /obj/machinery/light, /turf/simulated/floor/bluegrid{ @@ -12004,6 +12085,17 @@ }, /turf/simulated/floor/plating, /area/maintenance/elevator) +"Lt" = ( +/obj/machinery/light/small/emergency/flicker{ + dir = 8 + }, +/obj/structure/table/rack/shelf/steel, +/obj/effect/floor_decal/rust, +/obj/random/maintenance, +/obj/random/maintenance, +/obj/random/maintenance, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "Lu" = ( /obj/item/digestion_remains/skull/tajaran, /obj/item/stack/tile/floor, @@ -12336,6 +12428,17 @@ /obj/item/coin/bananium, /turf/simulated/floor/plating, /area/storage/tech) +"MD" = ( +/obj/effect/floor_decal/rust, +/obj/structure/closet/crate/trashcart, +/obj/random/junk, +/obj/random/junk, +/obj/random/junk, +/obj/random/junk, +/obj/random/junk, +/obj/random/junk, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "MF" = ( /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plating, @@ -13441,6 +13544,10 @@ /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /turf/simulated/floor/tiled, /area/engineering/atmos) +"PT" = ( +/obj/machinery/door/airlock/multi_tile/metal/mait, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "PU" = ( /obj/effect/overlay/snow/floor/pointy, /obj/effect/overlay/snow/floor/pointy{ @@ -13485,6 +13592,11 @@ }, /turf/simulated/floor/plating, /area/maintenance/engineering) +"Qf" = ( +/obj/effect/floor_decal/rust, +/obj/random/trash_pile, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "Qh" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 @@ -14063,6 +14175,14 @@ /obj/machinery/disposal, /turf/simulated/floor/tiled, /area/engineering/atmos) +"Sp" = ( +/obj/structure/stairs/bottom{ + dir = 1 + }, +/obj/structure/boulder, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "Sq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -16315,6 +16435,14 @@ }, /turf/simulated/floor, /area/security/prison/lower) +"ZI" = ( +/obj/structure/stairs/middle{ + dir = 1 + }, +/obj/effect/floor_decal/rust, +/obj/structure/boulder, +/turf/simulated/floor/tiled/steel_grid/lythios43c, +/area/rift/surfacebase/underground/under1) "ZJ" = ( /obj/structure/bed/chair/sofa/green/left, /turf/simulated/floor/concrete/indoors, @@ -18771,7 +18899,7 @@ aa aa aa aa -aa +db IJ rV aa @@ -19162,12 +19290,12 @@ Zt yb rV rV -aa -aa -aa -aa -aa -aa +db +db +db +db +db +db aa aa aa @@ -19356,15 +19484,15 @@ Xi WR WR rV -aa -aa -aa -aa -aa -aa -aa -aa -aa +fA +iN +Lt +EI +iN +db +db +db +db ms "} (16,1,1) = {" @@ -19550,15 +19678,15 @@ Lh Lh WR WR -aa -aa -aa -aa -aa -aa -aa -aa -aa +PT +dZ +dZ +yj +dZ +EV +JP +Sp +db ms "} (17,1,1) = {" @@ -19744,15 +19872,15 @@ Lh Lh rV WR -aa -aa -aa -aa -aa -aa -aa -aa -aa +Lh +dZ +dZ +dZ +dZ +EV +ZI +pe +db ms "} (18,1,1) = {" @@ -19937,16 +20065,16 @@ db WR Lh rV -rV -aa -aa -aa -aa -aa -aa -aa -aa -aa +oI +db +MD +dZ +rR +uK +db +db +db +db ms "} (19,1,1) = {" @@ -20132,12 +20260,12 @@ WR rV rV rV -aa -aa -aa -aa -aa -aa +db +Qf +ma +dZ +tS +db aa aa aa @@ -20326,12 +20454,12 @@ aa WR rV rV -aa -aa -aa -aa -aa -aa +db +db +db +db +db +db aa aa aa