diff --git a/_maps/map_files/Pahrump-AB/Pahrump-AB.dmm b/_maps/map_files/Pahrump-AB/Pahrump-AB.dmm index d9d7931b7f2..0cbf5922242 100644 --- a/_maps/map_files/Pahrump-AB/Pahrump-AB.dmm +++ b/_maps/map_files/Pahrump-AB/Pahrump-AB.dmm @@ -32080,6 +32080,13 @@ icon_state = "horizontaltopborderbottom2" }, /area/f13/wasteland) +"hdz" = ( +/obj/structure/fermenting_barrel/broc/xander, +/turf/open/indestructible/ground/outside/desert/sonora{ + dir = 4; + icon_state = "desertsmooth5" + }, +/area/f13/wasteland) "hdP" = ( /obj/structure/flora/grass/wasteland{ icon_state = "tall_grass_4" @@ -36443,6 +36450,13 @@ icon_state = "shadowleft" }, /area/f13/wasteland) +"iTp" = ( +/obj/structure/fermenting_barrel/broc/cactus, +/turf/open/indestructible/ground/outside/desert/sonora{ + dir = 4; + icon_state = "desertsmooth4" + }, +/area/f13/wasteland) "iTu" = ( /obj/structure/flora/brushwoodalt, /turf/open/indestructible/ground/outside/desert, @@ -59754,6 +59768,13 @@ }, /turf/open/indestructible/ground/outside/dirt, /area/f13/wasteland) +"sBh" = ( +/obj/structure/fermenting_barrel/broc, +/turf/open/indestructible/ground/outside/desert/sonora{ + dir = 4; + icon_state = "desertsmooth3" + }, +/area/f13/wasteland) "sBr" = ( /obj/effect/decal/cleanable/dirt{ color = "000000" @@ -127675,7 +127696,7 @@ fcR xaY sQy vDY -sVE +sBh oXX skv xwz @@ -127932,7 +127953,7 @@ xBX xWo qqE vDY -xJd +hdz eov skv xwz @@ -128189,7 +128210,7 @@ xaY aii qqE vDY -dJF +iTp uVZ skv xwz diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index ff84bf5d41c..c462274ae27 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -806,7 +806,7 @@ GLOBAL_LIST_INIT(storage_tray_can_hold, typecacheof(list( * * * */ /// How many items total fit in a bag thing -#define STORAGE_BAG_MAX_ITEMS STORAGE_BELT_SPECIALIZED_MAX_ITEMS * 2 //14 +#define STORAGE_BAG_MAX_ITEMS 20 /// How big a thing can fit in a bag thing #define STORAGE_BAG_MAX_SIZE WEIGHT_CLASS_SMALL /// How much volume fits in a bag thing @@ -861,6 +861,13 @@ GLOBAL_LIST_INIT(storage_tray_can_hold, typecacheof(list( /// How much volume fits in a casing quiver #define STORAGE_QUIVER_HEAVY_TOTAL_SPACE STORAGE_QUIVER_HEAVY_MAX_ITEMS * WEIGHT_CLASS_TINY +/// How many items total fit in a produce bag +#define STORAGE_PRODUCE_BAG_MAX_ITEMS 100 +/// How big a thing can fit in a produce bag +#define STORAGE_PRODUCE_BAG_MAX_SIZE WEIGHT_CLASS_NORMAL +/// How much volume fits in a produce bag +#define STORAGE_PRODUCE_BAG_MAX_TOTAL_SPACE STORAGE_PRODUCE_BAG_MAX_ITEMS * STORAGE_PRODUCE_BAG_MAX_SIZE + /* * * * * Boxes * * * */ diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index eace9775c9b..01a4b0314d3 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -305,7 +305,7 @@ time = 5 category = CAT_WEAPONRY subcategory = CAT_AMMO -/* + /datum/crafting_recipe/shotgunammo3p name = "12g 3p trainshot box" result = /obj/item/ammo_box/shotgun/trainshot @@ -345,7 +345,7 @@ time = 5 category = CAT_WEAPONRY subcategory = CAT_AMMO - +/* /datum/crafting_recipe/c38boxincin name = ".38 incendiary-tipped ammo box" result = /obj/item/ammo_box/c38box/incendiary @@ -358,7 +358,7 @@ time = 5 category = CAT_WEAPONRY subcategory = CAT_AMMO - +*/ /datum/crafting_recipe/c10mmincin name = "10mm incendiary-tipped ammo box" result = /obj/item/ammo_box/c10mm/fire @@ -494,7 +494,7 @@ category = CAT_WEAPONRY subcategory = CAT_AMMO */ - +/* /datum/crafting_recipe/a762boxshrap name = "7.62mm micro-shrapnel ammo box" result = /obj/item/ammo_box/a762box/microshrapnel @@ -508,7 +508,6 @@ category = CAT_WEAPONRY subcategory = CAT_AMMO */ - /* /datum/crafting_recipe/a50MGboxuranium name = "12.7mm U-235 ammo box" @@ -524,7 +523,7 @@ category = CAT_WEAPONRY subcategory = CAT_AMMO */ -/* + /datum/crafting_recipe/a50MGboxcontaminated name = "12.7mm contaminated ammo box" result = /obj/item/ammo_box/a50MGbox/contam @@ -553,7 +552,7 @@ time = 5 category = CAT_WEAPONRY subcategory = CAT_AMMO -*/ + /datum/crafting_recipe/m2mmblender name = "2mm \"Blender\" magazine" result = /obj/item/ammo_box/magazine/m2mm/blender diff --git a/code/datums/components/storage/concrete/bags.dm b/code/datums/components/storage/concrete/bags.dm index 29fab386a95..69c2be3319f 100644 --- a/code/datums/components/storage/concrete/bags.dm +++ b/code/datums/components/storage/concrete/bags.dm @@ -27,10 +27,10 @@ /// Produce bag /datum/component/storage/concrete/bag/produce - max_items = STORAGE_TRASH_BAG_MAX_ITEMS + max_items = STORAGE_PRODUCE_BAG_MAX_ITEMS max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = STORAGE_TRASH_BAG_MAX_TOTAL_SPACE - max_volume = STORAGE_TRASH_BAG_MAX_TOTAL_SPACE + max_combined_w_class = STORAGE_PRODUCE_BAG_MAX_TOTAL_SPACE + max_volume = STORAGE_PRODUCE_BAG_MAX_TOTAL_SPACE display_numerical_stacking = TRUE limited_random_access = FALSE diff --git a/code/game/objects/items/stealthboy.dm b/code/game/objects/items/stealthboy.dm index 5768f02e568..07396a580da 100644 --- a/code/game/objects/items/stealthboy.dm +++ b/code/game/objects/items/stealthboy.dm @@ -1,8 +1,8 @@ /obj/item/stealthboy - name = "Stealth Boy" + name = "Stealth Boy MK1" desc = "The RobCo Stealth Boy 3001 is a personal stealth device, this one is designed to be worn on your belt and the battery can be taken out if you can find an ALTERNATIVE way to CLICK the back open and take the battery out. (alt click to take the battery out and recharge it)" - icon = 'icons/obj/pda.dmi' //Placeholder till ones sprited - icon_state = "pda" //Placeholder till ones sprited + icon = 'icons/fallout/objects/stealthboy.dmi' + icon_state = "stealth_boy" item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT throwforce = 5 @@ -14,6 +14,18 @@ var/on = FALSE actions_types = list(/datum/action/item_action/stealthboy_cloak) + +// Below are Variants of stealth boys that should be increased power usage and less below that one. However I dont know how to make that happen, so they are all the same. +/obj/item/stealthboy/makeshift + name = "Makeshift Stealth Boy" + icon_state = "makeshift_stealth" + use_per_tick = 800 + +/obj/item/stealthboy/mk2 + name = "Stealth Boy MK2" + icon_state = "stealth_boy_mk" + use_per_tick = 200 + /obj/item/stealthboy/Initialize() . = ..() if(ispath(cell)) diff --git a/code/modules/farming/farming_structures.dm b/code/modules/farming/farming_structures.dm index 6b805a135b2..542c88be8aa 100644 --- a/code/modules/farming/farming_structures.dm +++ b/code/modules/farming/farming_structures.dm @@ -23,9 +23,40 @@ var/open = FALSE var/speed_multiplier = 4 //How fast it distills. Defaults to 100% (1.0). Lower is better. + var/broc = FALSE // Overlay var + var/xander = FALSE // Overlay var + var/cactus = FALSE // Overlay var + /obj/structure/fermenting_barrel/Initialize() - create_reagents(300, DRAINABLE | AMOUNT_VISIBLE) //Bluespace beakers, but without the portability or efficiency in circuits. + create_reagents(500, DRAINABLE | AMOUNT_VISIBLE) //Bluespace beakers, but without the portability or efficiency in circuits. + update_icon() + . = ..() + +/obj/structure/fermenting_barrel/update_overlays() . = ..() + if(broc) + . += "broc" + if(xander) + . += "xander" + if(cactus) + . += "cactus" + + if(reagents.total_volume && open) + var/mutable_appearance/filling = mutable_appearance('icons/fallout/farming/farming_structures.dmi', "[icon_state]10", color = mix_color_from_reagents(reagents.reagent_list)) + switch (reagents.total_volume) + if (0 to 40) + filling.icon_state = "[icon_state]-10" + if (40 to 70) + filling.icon_state = "[icon_state]10" + if (70 to 140) + filling.icon_state = "[icon_state]25" + if (140 to 250) + filling.icon_state = "[icon_state]50" + if (251 to 400) + filling.icon_state = "[icon_state]75" + if (409 to 501) + filling.icon_state = "[icon_state]100" + . += filling /obj/structure/fermenting_barrel/examine(mob/user) . = ..() @@ -47,6 +78,7 @@ data["tastes"] = list(fruit.tastes[1] = 1) reagents.add_reagent(/datum/reagent/consumable/ethanol/fruit_wine, amount, data) qdel(fruit) + update_icon() // new playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE) /obj/structure/fermenting_barrel/attackby(obj/item/I, mob/user, params) @@ -99,6 +131,22 @@ else icon_state = "barrel" +/obj/structure/fermenting_barrel/broc // for bitter production without having to label + name = "broc fermenting barrel" + desc = "A large wooden barrel with a painted broc flower on it. You can ferment fruits and such inside it, or just use it to hold liquid." + icon = 'icons/fallout/farming/farming_structures.dmi' + broc = TRUE + +/obj/structure/fermenting_barrel/broc/xander // for bitter production without having to label + name = "xander fermenting barrel" + desc = "A large wooden barrel with a painted xander root on it. You can ferment fruits and such inside it, or just use it to hold liquid." + xander = TRUE + +/obj/structure/fermenting_barrel/broc/cactus // for bitter production without having to label + name = "cactus fermenting barrel" + desc = "A large wooden barrel with a painted barrel cactus on it. You can ferment fruits and such inside it, or just use it to hold liquid." + cactus = TRUE + ////////// // LOOM // diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index c54c59bbdb6..72c171c0454 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -691,9 +691,9 @@ var/static/list/alchemyrack_typecache = typecacheof(list( /obj/item/reagent_containers/pill/patch, /obj/item/reagent_containers/glass/bottle/primitive, - /obj/item/stack/medical/poultice, + /obj/item/stack/medical, /obj/item/smelling_salts, - /obj/item/reagent_containers/pill/healingpowder + /obj/item/reagent_containers/pill )) if(is_type_in_typecache(O, alchemyrack_typecache)) return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/f13/Securitron.dm b/code/modules/mob/living/simple_animal/hostile/f13/Securitron.dm index 7d16e087c48..d084b3c3a0a 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/Securitron.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/Securitron.dm @@ -131,6 +131,7 @@ mob_armor = ARMOR_VALUE_ROBOT_SECURITY maxHealth = 150 health = 150 + stat_attack = UNCONSCIOUS del_on_death = FALSE melee_damage_lower = 24 melee_damage_upper = 55 diff --git a/code/modules/mob/living/simple_animal/hostile/f13/centaur.dm b/code/modules/mob/living/simple_animal/hostile/f13/centaur.dm index 626d10d0a70..2e296230117 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/centaur.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/centaur.dm @@ -71,6 +71,7 @@ /mob/living/simple_animal/hostile/centaur/strong // Mostly for FEV mutation maxHealth = 400 health = 400 + stat_attack = UNCONSCIOUS melee_damage_lower = 35 melee_damage_upper = 35 armour_penetration = 0.1 @@ -108,6 +109,7 @@ maxHealth = 1000 health = 1000 + stat_attack = UNCONSCIOUS speed = -0.5 harm_intent_damage = 8 melee_damage_lower = 30 @@ -176,6 +178,7 @@ speed = -0.5 maxHealth = 700 health = 700 + stat_attack = UNCONSCIOUS harm_intent_damage = 8 melee_damage_lower = 30 melee_damage_upper = 40 diff --git a/code/modules/mob/living/simple_animal/hostile/f13/deathclaw.dm b/code/modules/mob/living/simple_animal/hostile/f13/deathclaw.dm index 7f334ff42bc..cad64f9e157 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/deathclaw.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/deathclaw.dm @@ -15,6 +15,7 @@ sentience_type = SENTIENCE_BOSS maxHealth = 600 health = 600 + stat_attack = UNCONSCIOUS reach = 2 speed = 1 obj_damage = 200 diff --git a/code/modules/mob/living/simple_animal/hostile/f13/fallout_NPC.dm b/code/modules/mob/living/simple_animal/hostile/f13/fallout_NPC.dm index 3344ff34c46..0c6851f7956 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/fallout_NPC.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/fallout_NPC.dm @@ -214,6 +214,7 @@ icon_living = "enclave_armored" maxHealth = 560 health = 650 + stat_attack = UNCONSCIOUS melee_damage_lower = 20 melee_damage_upper = 47 extra_projectiles = 2 @@ -344,6 +345,7 @@ loot = list(/obj/effect/mob_spawn/human/corpse/bs/paladin) maxHealth = 480 health = 480 + stat_attack = UNCONSCIOUS healable = 1 ranged = 1 projectiletype = /obj/item/projectile/beam/laser/lasgun/hitscan diff --git a/code/modules/mob/living/simple_animal/hostile/f13/ghoul.dm b/code/modules/mob/living/simple_animal/hostile/f13/ghoul.dm index 7802581b4fc..1b547fcf353 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/ghoul.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/ghoul.dm @@ -248,6 +248,7 @@ can_ghost_into = FALSE maxHealth = 200 health = 200 + stat_attack = UNCONSCIOUS speed = 2.5 harm_intent_damage = 8 melee_damage_lower = 20 diff --git a/code/modules/mob/living/simple_animal/hostile/f13/insects.dm b/code/modules/mob/living/simple_animal/hostile/f13/insects.dm index 33abe48665e..da78c49ba2e 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/insects.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/insects.dm @@ -151,6 +151,7 @@ speed = 5 maxHealth = 560 health = 560 + stat_attack = UNCONSCIOUS ranged = 1 harm_intent_damage = 8 obj_damage = 20 diff --git a/code/modules/mob/living/simple_animal/hostile/f13/mirelurks.dm b/code/modules/mob/living/simple_animal/hostile/f13/mirelurks.dm index 2f4a01f56ca..5add294a382 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/mirelurks.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/mirelurks.dm @@ -69,6 +69,7 @@ guaranteed_butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/mirelurk = 4, /obj/item/stack/sheet/sinew = 2) maxHealth = 160 health = 160 + stat_attack = UNCONSCIOUS melee_damage_lower = 15 melee_damage_upper = 28 gold_core_spawnable = HOSTILE_SPAWN diff --git a/code/modules/mob/living/simple_animal/hostile/f13/raider.dm b/code/modules/mob/living/simple_animal/hostile/f13/raider.dm index 0b7eacf2d75..1319f9286b7 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/raider.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/raider.dm @@ -148,6 +148,7 @@ mob_armor = ARMOR_VALUE_RAIDER_LEATHER_JACKET maxHealth = 300 health = 300 + stat_attack = UNCONSCIOUS speed = 1.2 obj_damage = 300 rapid_melee = 1 @@ -165,6 +166,7 @@ mob_armor = ARMOR_VALUE_RAIDER_LEATHER_JACKET maxHealth = 240 health = 240 + stat_attack = UNCONSCIOUS retreat_distance = 1 minimum_distance = 2 rapid_melee = 1 @@ -200,6 +202,7 @@ mob_armor = ARMOR_VALUE_RAIDER_COMBAT_ARMOR_BOSS maxHealth = 150 health = 150 + stat_attack = UNCONSCIOUS extra_projectiles = 2 rapid_melee = 1 waddle_amount = 4 @@ -590,6 +593,7 @@ mob_armor = ARMOR_VALUE_RAIDER_COMBAT_ARMOR_BOSS maxHealth = 165 health = 165 + stat_attack = UNCONSCIOUS ranged = TRUE rapid_melee = 1 retreat_distance = 4 diff --git a/code/modules/mob/living/simple_animal/hostile/f13/rattler.dm b/code/modules/mob/living/simple_animal/hostile/f13/rattler.dm index 399c9ef76a3..4cbc3440100 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/rattler.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/rattler.dm @@ -16,6 +16,7 @@ using ant armor b/c it just kinda works here and i don't want it to be super bee mob_armor = ARMOR_VALUE_ANTS maxHealth = 150 health = 150 + stat_attack = UNCONSCIOUS reach = 2 speed = -1 move_to_delay = 2.1 diff --git a/code/modules/mob/living/simple_animal/hostile/f13/supermutant.dm b/code/modules/mob/living/simple_animal/hostile/f13/supermutant.dm index fce2af23457..7062359c144 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/supermutant.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/supermutant.dm @@ -13,6 +13,7 @@ sentience_type = SENTIENCE_BOSS maxHealth = 130 health = 130 + stat_attack = UNCONSCIOUS speak_chance = 10 speak = list( "GRRRRRR!", diff --git a/code/modules/mob/living/simple_animal/hostile/f13/wastebots.dm b/code/modules/mob/living/simple_animal/hostile/f13/wastebots.dm index 01f7c9d38c0..5be905c9e52 100644 --- a/code/modules/mob/living/simple_animal/hostile/f13/wastebots.dm +++ b/code/modules/mob/living/simple_animal/hostile/f13/wastebots.dm @@ -115,6 +115,7 @@ mob_armor = ARMOR_VALUE_ROBOT_MILITARY maxHealth = 100 health = 100 + stat_attack = UNCONSCIOUS melee_damage_lower = 18 melee_damage_upper = 64 attack_sound = 'sound/items/welder.ogg' @@ -254,6 +255,7 @@ mob_armor = ARMOR_VALUE_ROBOT_SECURITY maxHealth = 110 health = 110 + stat_attack = UNCONSCIOUS can_ghost_into = FALSE melee_damage_lower = 15 melee_damage_upper = 37 @@ -310,6 +312,7 @@ mob_armor = ARMOR_VALUE_ROBOT_CIVILIAN maxHealth = 100 health = 100 + stat_attack = UNCONSCIOUS speed = 4 can_ghost_into = TRUE melee_damage_lower = 5 //severely reduced melee damage here because its silly to have a ranged mob also be a cqc master @@ -488,6 +491,7 @@ mob_armor = ARMOR_VALUE_ROBOT_MILITARY maxHealth = 100 health = 100 + stat_attack = UNCONSCIOUS can_ghost_into = FALSE mob_biotypes = MOB_ROBOTIC|MOB_INORGANIC speed = 1 diff --git a/fallout/turf/ground.dm b/fallout/turf/ground.dm index 9936a2567e4..cd2c877ee45 100644 --- a/fallout/turf/ground.dm +++ b/fallout/turf/ground.dm @@ -321,11 +321,14 @@ GLOBAL_LIST_INIT(desolate_plant_spawn_list, list( // step_sounds = list("human" = "erikafootsteps") /turf/open/indestructible/ground/outside/road/attackby(obj/item/C, mob/user, params) - if(..()) - return - if(istype(C, /obj/item/stack/tile)) + if(istype(C, /obj/item/stack/tile/road)) if(icon_state == "innermiddle") to_chat(user, span_warning("The road already looks fixed!")) + return + C.use(1) + icon_state = "innermiddle" + return + else . = ..() /turf/open/floor/road diff --git a/icons/fallout/farming/farming_structures.dmi b/icons/fallout/farming/farming_structures.dmi index 260beecb043..1f15ddc5e4c 100644 Binary files a/icons/fallout/farming/farming_structures.dmi and b/icons/fallout/farming/farming_structures.dmi differ diff --git a/icons/fallout/objects/stealthboy.dmi b/icons/fallout/objects/stealthboy.dmi new file mode 100644 index 00000000000..d763b938540 Binary files /dev/null and b/icons/fallout/objects/stealthboy.dmi differ