diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm index 80968128120..154e80e9651 100644 --- a/_maps/map_files/MetaStation/z2.dmm +++ b/_maps/map_files/MetaStation/z2.dmm @@ -1164,7 +1164,7 @@ "wt" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/vox/station) "wu" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) "wv" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/medic,/obj/item/clothing/head/helmet/space/vox/medic,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) -"ww" = (/obj/structure/rack,/obj/item/weapon/gun/launcher/pneumatic,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/tank/nitrogen,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) +"ww" = (/obj/structure/rack,/obj/item/weapon/pneumatic_cannon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/tank/nitrogen,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "wx" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/vox/station) "wy" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/turf/space,/area/shuttle/vox/station) "wz" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/pressure,/obj/item/clothing/head/helmet/space/vox/pressure,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 622c52f04f4..9b5cbad7e20 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -2438,7 +2438,7 @@ "aUT" = (/turf/simulated/wall,/area/crew_quarters/kitchen) "aUU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aUV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) -"aUW" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/clothing/head/chefhat,/obj/item/clothing/under/rank/chef,/obj/item/weapon/storage/box/mousetraps{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/mousetraps,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/obj/item/clothing/under/sundress,/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) +"aUW" = (/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/obj/structure/closet/chefcloset,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aUX" = (/obj/machinery/camera{c_tag = "Kitchen Freezer"; network = list("SS13")},/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aUY" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Kitchen Delivery"; req_access_txt = "28"},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aUZ" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Hydroponics"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/fsmaint2) diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index f594cbce969..971c88c49bb 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -663,7 +663,7 @@ "mM" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/vox/station) "mN" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/shuttle/vox/station) "mO" = (/obj/structure/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/suit/space/vox/medic,/obj/item/clothing/head/helmet/space/vox/medic,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) -"mP" = (/obj/structure/rack,/obj/item/weapon/gun/launcher/pneumatic,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/tank/nitrogen,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) +"mP" = (/obj/structure/rack,/obj/item/weapon/pneumatic_cannon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/tank/nitrogen,/obj/machinery/light/spot{tag = "icon-tube1 (EAST)"; icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "mQ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/vox/station) "mR" = (/turf/space/transit/north/shuttlespace_ns7,/area/vox_station/transit) "mS" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 803404db065..5ac0570de43 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -773,12 +773,12 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /datum/supply_packs/organic/food name = "Food Crate" - contains = list(/obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, + contains = list(/obj/item/weapon/reagent_containers/food/condiment/flour, + /obj/item/weapon/reagent_containers/food/condiment/rice, /obj/item/weapon/reagent_containers/food/drinks/milk, /obj/item/weapon/reagent_containers/food/drinks/soymilk, + /obj/item/weapon/reagent_containers/food/condiment/saltshaker, + /obj/item/weapon/reagent_containers/food/condiment/peppermill, /obj/item/weapon/storage/fancy/egg_box, /obj/item/weapon/reagent_containers/food/condiment/enzyme, /obj/item/weapon/reagent_containers/food/condiment/sugar, diff --git a/code/game/machinery/kitchen/processor.dm b/code/game/machinery/kitchen/processor.dm index b90affbcd6c..87426a7daaa 100644 --- a/code/game/machinery/kitchen/processor.dm +++ b/code/game/machinery/kitchen/processor.dm @@ -61,12 +61,8 @@ input = "soybeans" output = /obj/item/weapon/reagent_containers/food/snacks/soydope -/datum/food_processor_process/wheat - input = "wheat" - output = /obj/item/weapon/reagent_containers/food/snacks/flour - /datum/food_processor_process/spaghetti - input = /obj/item/weapon/reagent_containers/food/snacks/flour + input = /obj/item/weapon/reagent_containers/food/snacks/doughslice output = /obj/item/weapon/reagent_containers/food/snacks/spagetti ///////////////////////// ///END OBJECT RECIPIES/// diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index afd9b292aed..d4ee72861bc 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1061,8 +1061,8 @@ product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..." icon_state = "dinnerware" products = list(/obj/item/weapon/storage/bag/tray = 8,/obj/item/weapon/kitchen/utensil/fork = 6, - /obj/item/weapon/kitchenknife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8, - /obj/item/clothing/suit/chef/classic = 2, + /obj/item/weapon/kitchenknife = 3,/obj/item/weapon/kitchen/rollingpin = 2, + /obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8, /obj/item/clothing/suit/chef/classic = 2, /obj/item/weapon/reagent_containers/food/condiment/pack/ketchup = 5, /obj/item/weapon/reagent_containers/food/condiment/pack/hotsauce = 5, /obj/item/weapon/kitchen/mould/bear = 1, /obj/item/weapon/kitchen/mould/worm = 1, diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 46c3e1ff3d2..473710ffed7 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -39,8 +39,6 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ null, \ new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1), \ null, \ - new/datum/stack_recipe("cannon frame", /obj/item/weapon/cannonframe, 10, time = 15, one_per_turf = 0, on_floor = 0), \ - null, \ new/datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 20), \ new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60), \ null, \ diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm new file mode 100644 index 00000000000..e5889b923d2 --- /dev/null +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -0,0 +1,169 @@ +/obj/item/weapon/pneumatic_cannon + name = "pneumatic cannon" + desc = "A gas-powered cannon that can fire any object loaded into it." + w_class = 4 + force = 8 //Very heavy + attack_verb = list("bludgeoned", "smashed", "beaten") + icon = 'icons/obj/pneumaticCannon.dmi' + icon_state = "pneumaticCannon" + item_state = "bulldog" + lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi' + righthand_file = 'icons/mob/inhands/guns_righthand.dmi' + var/maxWeightClass = 20 //The max weight of items that can fit into the cannon + var/loadedWeightClass = 0 //The weight of items currently in the cannon + var/obj/item/weapon/tank/tank = null //The gas tank that is drawn from to fire things + var/gasPerThrow = 3 //How much gas is drawn from a tank's pressure to fire + var/list/loadedItems = list() //The items loaded into the cannon that will be fired out + var/pressureSetting = 1 //How powerful the cannon is - higher pressure = more gas but more powerful throws + + +/obj/item/weapon/pneumatic_cannon/examine(mob/user) + ..() + if(!in_range(user, src)) + user << "You'll need to get closer to see any more." + return + for(var/obj/item/I in loadedItems) + spawn(0) + user << "\icon [I] It has \the [I] loaded." + if(tank) + user << "\icon [tank] It has \the [tank] mounted onto it." + + +/obj/item/weapon/pneumatic_cannon/attackby(obj/item/weapon/W, mob/user, params) + ..() + if(istype(W, /obj/item/weapon/tank/) && !tank) + if(istype(W, /obj/item/weapon/tank/emergency_oxygen)) + user << "\The [W] is too small for \the [src]." + return + updateTank(W, 0, user) + return + if(W.type == type) + user << "You're fairly certain that putting a pneumatic cannon inside another pneumatic cannon would cause a spacetime disruption." + return + if(istype(W, /obj/item/weapon/wrench)) + switch(pressureSetting) + if(1) + pressureSetting = 2 + if(2) + pressureSetting = 3 + if(3) + pressureSetting = 1 + user << "You tweak \the [src]'s pressure output to [pressureSetting]." + return + if(istype(W, /obj/item/weapon/screwdriver) && tank) + updateTank(tank, 1, user) + return + if(loadedWeightClass >= maxWeightClass) + user << "\The [src] can't hold any more items!" + return + if(istype(W, /obj/item)) + var/obj/item/IW = W + if((loadedWeightClass + IW.w_class) > maxWeightClass) + user << "\The [IW] won't fit into \the [src]!" + return + if(IW.w_class > src.w_class) + user << "\The [IW] is too large to fit into \the [src]!" + return + if(!user.unEquip(W)) + return + user << "You load \the [IW] into \the [src]." + loadedItems.Add(IW) + loadedWeightClass += IW.w_class + IW.loc = src + return + + +/obj/item/weapon/pneumatic_cannon/afterattack(atom/target, mob/living/carbon/human/user, flag, params) + if(istype(target, /obj/item/weapon/storage)) //So you can store it in backpacks + return ..() + if(istype(target, /obj/structure/closet)) //So you can store it in closets + return ..() + if(istype(target, /obj/structure/rack)) //So you can store it on racks + return ..() + if(!istype(user)) + return ..() + Fire(user, target) + + +/obj/item/weapon/pneumatic_cannon/proc/Fire(var/mob/living/carbon/human/user, var/atom/target) + if(!istype(user) && !target) + return + var/discharge = 0 + if(!loadedItems || !loadedWeightClass) + user << "\The [src] has nothing loaded." + return + if(!tank) + user << "\The [src] can't fire without a source of gas." + return + if(tank && !tank.air_contents.remove(gasPerThrow * pressureSetting)) + user << "\The [src] lets out a weak hiss and doesn't react!" + return + if(user && (CLUMSY in user.mutations) && prob(75)) + user.visible_message("[user] loses their grip on [src], causing it to go off!", "[src] slips out of your hands and goes off!") + user.drop_item() + if(prob(10)) + target = get_turf(user) + else + var/list/possible_targets = range(3,src) + target = pick(possible_targets) + discharge = 1 + if(!discharge) + user.visible_message("[user] fires \the [src]!", \ + "You fire \the [src]!") + add_logs(target, user, "fired at", src) + playsound(src.loc, 'sound/weapons/sonic_jackhammer.ogg', 50, 1) + for(var/obj/item/ITD in loadedItems) //Item To Discharge + spawn(0) + loadedItems.Remove(ITD) + loadedWeightClass -= ITD.w_class + ITD.throw_speed = pressureSetting * 2 + ITD.loc = get_turf(src) + ITD.throw_at(target, pressureSetting * 5, pressureSetting * 2,user) + if(pressureSetting >= 3 && user) + user.visible_message("[user] is thrown down by the force of the cannon!", "[src] slams into your shoulder, knocking you down!") + user.Weaken(3) + + +/obj/item/weapon/pneumatic_cannon/ghetto //Obtainable by improvised methods; more gas per use, less capacity, but smaller + name = "improvised pneumatic cannon" + desc = "A gas-powered, object-firing cannon made out of common parts." + force = 5 + w_class = 3 + maxWeightClass = 7 + gasPerThrow = 5 + +/datum/table_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but + name = "Pneumatic Cannon" + result = /obj/item/weapon/pneumatic_cannon/ghetto + tools = list(/obj/item/weapon/weldingtool, + /obj/item/weapon/wrench) + reqs = list(/obj/item/stack/sheet/metal = 4, + /obj/item/stack/packageWrap = 8, + /obj/item/pipe = 2) + time = 300 + +/obj/item/weapon/pneumatic_cannon/proc/updateTank(obj/item/weapon/tank/thetank, removing = 0, mob/living/carbon/human/user) + if(removing) + if(!src.tank) + return + user << "You detach \the [thetank] from \the [src]." + src.tank.loc = get_turf(user) + user.put_in_hands(tank) + src.tank = null + if(!removing) + if(src.tank) + user << "\The [src] already has a tank." + return + if(!user.unEquip(thetank)) + return + user << "You hook \the [thetank] up to \the [src]." + src.tank = thetank + thetank.loc = src + src.update_icons() + +/obj/item/weapon/pneumatic_cannon/proc/update_icons() + src.overlays.Cut() + if(!tank) + return + src.overlays += image('icons/obj/pneumaticCannon.dmi', "[tank.icon_state]") + src.update_icon() diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index f824fa3a5fa..05f0b653e13 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -50,14 +50,18 @@ new /obj/item/clothing/under/waiter(src) new /obj/item/device/radio/headset/headset_service(src) new /obj/item/device/radio/headset/headset_service(src) - new /obj/item/clothing/suit/wcoat(src) - new /obj/item/clothing/suit/wcoat(src) - new /obj/item/clothing/head/soft/black(src) - new /obj/item/clothing/head/soft/black(src) + new /obj/item/clothing/accessory/waistcoat(src) + new /obj/item/clothing/accessory/waistcoat(src) + new /obj/item/clothing/suit/chef/classic(src) + new /obj/item/clothing/suit/chef/classic(src) + new /obj/item/clothing/suit/chef/classic(src) + new /obj/item/clothing/head/soft/mime(src) + new /obj/item/clothing/head/soft/mime(src) new /obj/item/weapon/storage/box/mousetraps(src) new /obj/item/weapon/storage/box/mousetraps(src) new /obj/item/clothing/under/rank/chef(src) new /obj/item/clothing/head/chefhat(src) + new /obj/item/weapon/reagent_containers/glass/rag(src) /* * Janitor diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index c05b60bea2a..ef44ad76adc 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -30,12 +30,11 @@ New() ..() sleep(2) - for(var/i = 0, i < 6, i++) - new /obj/item/weapon/reagent_containers/food/snacks/flour(src) - new /obj/item/weapon/reagent_containers/food/condiment/sugar(src) for(var/i = 0, i < 3, i++) - new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src) - return + new /obj/item/weapon/reagent_containers/food/condiment/flour(src) + new /obj/item/weapon/reagent_containers/food/condiment/rice(src) + new /obj/item/weapon/reagent_containers/food/condiment/sugar(src) + /obj/structure/closet/secure_closet/freezer/kitchen/mining @@ -77,7 +76,7 @@ sleep(2) for(var/i = 0, i < 5, i++) new /obj/item/weapon/reagent_containers/food/drinks/milk(src) - for(var/i = 0, i < 3, i++) + for(var/i = 0, i < 5, i++) new /obj/item/weapon/reagent_containers/food/drinks/soymilk(src) for(var/i = 0, i < 2, i++) new /obj/item/weapon/storage/fancy/egg_box(src) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index f2b3dad9843..5ca60bea7f0 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -213,6 +213,17 @@ "Vox" = 'icons/mob/species/vox/eyes.dmi' ) +/obj/item/clothing/glasses/sunglasses/lasers + desc = "A peculiar set of sunglasses; they have various chips and other panels attached to the sides of the frames." + name = "high-tech sunglasses" + flags = GLASSESCOVERSEYES | NODROP + +/obj/item/clothing/glasses/sunglasses/lasers/equipped(mob/user, slot) //grant them laser eyes upon equipping it. + if(slot == slot_glasses) + user.mutations.Add(LASER) + user.regenerate_icons() + ..(user, slot) + /obj/item/clothing/glasses/welding name = "welding goggles" desc = "Protects the eyes from welders, approved by the mad scientist association." diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index e9d5005a5b1..9ee07435000 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -512,3 +512,59 @@ icon_state = "noble_coat" item_state = "noble_coat" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + + +///Advanced Protective Suit, AKA, God Mode in wearable form. + +/obj/item/clothing/suit/advanced_protective_suit + name = "Advanced Protective Suit" + desc = "An incredibly advanced and complex suit; it has so many buttons and dials as to be incomprehensible." + icon_state = "bomb" + item_state = "bomb" + action_button_name = "Toggle Advanced Protective Suit" + gas_transfer_coefficient = 0.01 + permeability_coefficient = 0.01 + flags = STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS|HEAD + armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100) + cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS | HEAD + min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT + heat_protection = UPPER_TORSO | LOWER_TORSO|LEGS|FEET|ARMS|HANDS | HEAD + max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT + slowdown = -10 + siemens_coefficient = 0 + var/on = 0 + +/obj/item/clothing/suit/advanced_protective_suit/Destroy() + if(on) + on = 0 + processing_objects.Remove(src) + return ..() + +/obj/item/clothing/suit/advanced_protective_suit/ui_action_click() + if(on) + on = 0 + usr << "You turn the suit's special processes off." + else + on = 1 + usr << "You turn the suit's special processes on." + processing_objects.Add(src) + + +/obj/item/clothing/suit/advanced_protective_suit/IsReflect() + return (on) + +/obj/item/clothing/suit/advanced_protective_suit/process() + if(on) + var/mob/living/carbon/human/user = src.loc + if(user && ishuman(user) && (user.wear_suit == src)) + if(user.reagents.get_reagent_amount("stimulants") < 15) + user.reagents.add_reagent("stimulants", 15) + if(user.reagents.get_reagent_amount("adminordrazine") < 15) + user.reagents.add_reagent("adminordrazine", 15) + if(user.reagents.get_reagent_amount("nanites") < 15) + user.reagents.add_reagent("nanites", 15) + if(user.reagents.get_reagent_amount("syndicate_nanites") < 15) + user.reagents.add_reagent("syndicate_nanites", 15) + else + processing_objects.Remove(src) \ No newline at end of file diff --git a/code/modules/food/recipes_candy.dm b/code/modules/food/recipes_candy.dm index c7400ee0c62..881ee57a1a1 100644 --- a/code/modules/food/recipes_candy.dm +++ b/code/modules/food/recipes_candy.dm @@ -36,8 +36,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/candy/caramel /datum/recipe/candy/toffee - reagents = list("sugar" = 5) - items = list(/obj/item/weapon/reagent_containers/food/snacks/flour) + reagents = list("sugar" = 5, "flour" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/candy/toffee /datum/recipe/candy/taffy diff --git a/code/modules/food/recipes_grill.dm b/code/modules/food/recipes_grill.dm index a962ca5de5b..0c3c81078df 100644 --- a/code/modules/food/recipes_grill.dm +++ b/code/modules/food/recipes_grill.dm @@ -76,9 +76,8 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sausage /datum/recipe/grill/fishfingers + reagents = list("flour" = 10) items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, /obj/item/weapon/reagent_containers/food/snacks/egg, /obj/item/weapon/reagent_containers/food/snacks/carpmeat, ) diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 340d43188e5..eec69c7b0ef 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -45,27 +45,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal -/* what is this -/datum/recipe/microwave/human - //invalid recipe - make_food(var/obj/container as obj) - var/human_name - var/human_job - for (var/obj/item/weapon/reagent_containers/food/snacks/meat/human/HM in container) - if (!HM.subjectname) - continue - human_name = HM.subjectname - human_job = HM.subjectjob - break - var/lastname_index = findtext(human_name, " ") - if (lastname_index) - human_name = copytext(human_name,lastname_index+1) - - var/obj/item/weapon/reagent_containers/food/snacks/human/HB = ..(container) - HB.name = human_name+HB.name - HB.job = human_job - return HB -*/ /datum/recipe/microwave/human/burger items = list( @@ -74,15 +53,6 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/human/burger -/* Duplicated by plainburger -/datum/recipe/microwave/monkeyburger - items = list( - /obj/item/weapon/reagent_containers/food/snacks/bun, - /obj/item/weapon/reagent_containers/food/snacks/meat/monkey - ) - result = /obj/item/weapon/reagent_containers/food/snacks/monkeyburger -*/ - /datum/recipe/microwave/plainburger items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, @@ -143,7 +113,6 @@ items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, /obj/item/clothing/mask/gas/clown_hat, - /* /obj/item/weapon/reagent_containers/food/snacks/grown/banana, */ ) result = /obj/item/weapon/reagent_containers/food/snacks/clownburger @@ -184,18 +153,12 @@ /datum/recipe/microwave/soylenviridians fruit = list("soybeans" = 1) - items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - ) + reagents = list("flour" = 10) result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians /datum/recipe/microwave/soylentgreen + reagents = list("flour" = 10) items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, /obj/item/weapon/reagent_containers/food/snacks/meat/human, /obj/item/weapon/reagent_containers/food/snacks/meat/human, ) @@ -312,11 +275,10 @@ result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas /datum/recipe/microwave/monkeysdelight - reagents = list("sodiumchloride" = 1, "blackpepper" = 1) fruit = list("banana" = 1) + reagents = list("sodiumchloride" = 1, "blackpepper" = 1, "flour" = 10) items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/monkeycube, + /obj/item/weapon/reagent_containers/food/snacks/monkeycube ) result = /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight diff --git a/code/modules/food/recipes_oven.dm b/code/modules/food/recipes_oven.dm index c9b1703dc54..2efdf4242cd 100644 --- a/code/modules/food/recipes_oven.dm +++ b/code/modules/food/recipes_oven.dm @@ -256,9 +256,8 @@ /datum/recipe/oven/creamcheesebread items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, + /obj/item/weapon/reagent_containers/food/snacks/dough, + /obj/item/weapon/reagent_containers/food/snacks/dough, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, /obj/item/weapon/reagent_containers/food/snacks/cheesewedge, ) @@ -366,13 +365,10 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie /datum/recipe/oven/appletart - reagents = list("sugar" = 5, "milk" = 5) fruit = list("goldapple" = 1) + reagents = list("sugar" = 5, "milk" = 5, "flour" = 10) items = list( - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/flour, - /obj/item/weapon/reagent_containers/food/snacks/egg, + /obj/item/weapon/reagent_containers/food/snacks/egg ) result = /obj/item/weapon/reagent_containers/food/snacks/appletart diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm deleted file mode 100644 index 2822d375096..00000000000 --- a/code/modules/projectiles/guns/projectile/pneumatic.dm +++ /dev/null @@ -1,210 +0,0 @@ -/obj/item/weapon/gun/launcher/pneumatic - name = "pneumatic cannon" - desc = "A large gas-powered cannon." - icon = 'icons/obj/gun.dmi' - icon_state = "pneumatic" - item_state = "pneumatic" - w_class = 5.0 - flags = CONDUCT - fire_sound_text = "a loud whoosh of moving air" - fire_delay = 50 - fire_sound = 'sound/weapons/tablehit1.ogg' - - var/fire_pressure // Used in fire checks/pressure checks. - var/max_w_class = 3 // Hopper intake size. - var/max_combined_w_class = 20 // Total internal storage size. - var/obj/item/weapon/tank/tank = null // Tank of gas for use in firing the cannon. - var/obj/item/weapon/storage/tank_container = new() // Something to hold the tank item so we don't accidentally fire it. - var/pressure_setting = 10 // Percentage of the gas in the tank used to fire the projectile. - var/possible_pressure_amounts = list(5,10,20,25,50) // Possible pressure settings. - var/minimum_tank_pressure = 10 // Minimum pressure to fire the gun. - var/force_divisor = 400 // Force equates to speed. Speed/5 equates to a damage multiplier for whoever you hit. - // For reference, a fully pressurized oxy tank at 50% gas release firing a health - // analyzer with a force_divisor of 10 hit with a damage multiplier of 3000+. -/obj/item/weapon/gun/launcher/pneumatic/New() - ..() - tank_container.tag = "gas_tank_holder" - -/obj/item/weapon/gun/launcher/pneumatic/verb/set_pressure() //set amount of tank pressure. - - set name = "Set Valve Pressure" - set category = "Object" - set src in range(0) - var/N = input("Percentage of tank used per shot:","[src]") as null|anything in possible_pressure_amounts - if (N) - pressure_setting = N - usr << "You dial the pressure valve to [pressure_setting]%." - -/obj/item/weapon/gun/launcher/pneumatic/verb/eject_tank() //Remove the tank. - - set name = "Eject Tank" - set category = "Object" - set src in range(0) - - if(tank) - usr << "You twist the valve and pop the tank out of [src]." - tank.loc = usr.loc - tank = null - icon_state = "pneumatic" - item_state = "pneumatic" - usr.update_icons() - else - usr << "There's no tank in [src]." - -/obj/item/weapon/gun/launcher/pneumatic/attackby(obj/item/W as obj, mob/user as mob, params) - if(!tank && istype(W,/obj/item/weapon/tank)) - user.drop_item() - tank = W - tank.loc = src.tank_container - user.visible_message("[user] jams [W] into [src]'s valve and twists it closed.","You jam [W] into [src]'s valve and twist it closed.") - icon_state = "pneumatic-tank" - item_state = "pneumatic-tank" - user.update_icons() - else if(W.w_class <= max_w_class) - - var/total_stored = 0 - for(var/obj/item/O in src.contents) - total_stored += O.w_class - if(total_stored + W.w_class <= max_combined_w_class) - user.drop_item(W) - W.loc = src - user << "You shove [W] into the hopper." - else - user << "That won't fit into the hopper - it's full." - return - else - user << "That won't fit into the hopper." - -/obj/item/weapon/gun/launcher/pneumatic/attack_self(mob/user as mob) - - if(contents.len > 0) - var/obj/item/removing = contents[contents.len] - if(removing == in_chamber) - in_chamber = null - - removing.loc = get_turf(src) - user.put_in_hands(removing) - user << "You remove [removing] from the hopper." - else - user << "There is nothing to remove in \the [src]." - return - -/obj/item/weapon/gun/launcher/pneumatic/chamber_round() - if(!contents.len) - return 0 - - in_chamber = contents[1] - return !isnull(in_chamber) - -/obj/item/weapon/gun/launcher/pneumatic/examine(mob/user) - if(..(user, 2)) - user << "The valve is dialed to [pressure_setting]%." - if(tank) - user << "The tank dial reads [tank.air_contents.return_pressure()] kPa." - else - user << "Nothing is attached to the tank valve!" - -/obj/item/weapon/gun/launcher/pneumatic/special_check(user) - - if (!tank) - user << "There is no gas tank in [src]!" - return 0 - - fire_pressure = (tank.air_contents.return_pressure()/100)*pressure_setting - if (fire_pressure < minimum_tank_pressure) - user << "There isn't enough gas in the tank to fire [src]." - return 0 - - return 1 - -/obj/item/weapon/gun/launcher/pneumatic/update_release_force() - if(!in_chamber) return - release_force = ((fire_pressure*tank.volume)/in_chamber.w_class)/force_divisor //projectile speed. - if(release_force >80) release_force = 80 //damage cap. - -/obj/item/weapon/gun/launcher/pneumatic/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - - if(!tank || !..()) return //Only do this on a successful shot. - - var/lost_gas_amount = tank.air_contents.total_moles()*(pressure_setting/100) - var/datum/gas_mixture/removed = tank.air_contents.remove(lost_gas_amount) - user.loc.assume_air(removed) - -//Constructable pneumatic cannon. - -/obj/item/weapon/cannonframe - name = "pneumatic cannon frame" - desc = "A half-finished pneumatic cannon." - icon_state = "pneumatic0" - item_state = "pneumatic" - - var/buildstate = 0 - -/obj/item/weapon/cannonframe/update_icon() - icon_state = "pneumatic[buildstate]" - -/obj/item/weapon/cannonframe/examine(mob/user) - ..(user) - switch(buildstate) - if(1) user << "It has a pipe segment installed." - if(2) user << "It has a pipe segment welded in place." - if(3) user << "It has an outer chassis installed." - if(4) user << "It has an outer chassis welded in place." - if(5) user << "It has a transfer valve installed." - -/obj/item/weapon/cannonframe/attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/pipe)) - if(buildstate == 0) - user.drop_item() - qdel(W) - user << "\blue You secure the piping inside the frame." - buildstate++ - update_icon() - return - else if(istype(W,/obj/item/stack/sheet/metal)) - if(buildstate == 2) - var/obj/item/stack/sheet/metal/M = W - if(M.amount >= 5) - M.use(5) - user << "\blue You assemble a chassis around the cannon frame." - buildstate++ - update_icon() - else - user << "\blue You need at least five metal sheets to complete this task." - return - else if(istype(W,/obj/item/device/transfer_valve)) - if(buildstate == 4) - user.drop_item() - qdel(W) - user << "\blue You install the transfer valve and connect it to the piping." - buildstate++ - update_icon() - return - else if(istype(W,/obj/item/weapon/weldingtool)) - if(buildstate == 1) - var/obj/item/weapon/weldingtool/T = W - if(T.remove_fuel(0,user)) - if(!src || !T.isOn()) return - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "\blue You weld the pipe into place." - buildstate++ - update_icon() - if(buildstate == 3) - var/obj/item/weapon/weldingtool/T = W - if(T.remove_fuel(0,user)) - if(!src || !T.isOn()) return - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "\blue You weld the metal chassis together." - buildstate++ - update_icon() - if(buildstate == 5) - var/obj/item/weapon/weldingtool/T = W - if(T.remove_fuel(0,user)) - if(!src || !T.isOn()) return - playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) - user << "\blue You weld the valve into place." - new /obj/item/weapon/gun/launcher/pneumatic(get_turf(src)) - qdel(src) - return - else - ..() diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 7707a257634..55ba20e3880 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -779,7 +779,7 @@ "deathnettle" = list("facid" = 0), "soybeans" = list("soymilk" = 0), "tomato" = list("ketchup" = 0), - ///obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5), + "wheat" = list("flour" = -5), "rice" = list("rice" = -5), "cherries" = list("cherryjelly" = 0), ) diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm index 146dc1da95c..ac37f82fe31 100644 --- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_food.dm @@ -105,4 +105,17 @@ result_amount = 1 max_temp = 273 mix_message = "Ice forms as the water freezes." - mix_sound = null \ No newline at end of file + mix_sound = null + + dough + name = "Dough" + id = "dough" + result = null + required_reagents = list("water" = 10, "flour" = 15) + result_amount = 1 + mix_message = "The ingredients form a dough." + + on_reaction(datum/reagents/holder, created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/dough(location) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index e3d9d5d4081..910860e1b2d 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -6,7 +6,7 @@ //Food items that aren't eaten normally and leave an empty container behind. /obj/item/weapon/reagent_containers/food/condiment - name = "Condiment Container" + name = "condiment container" desc = "Just your average condiment container." icon = 'icons/obj/food/food.dmi' icon_state = "emptycondiment" @@ -14,7 +14,18 @@ possible_transfer_amounts = list(1,5,10) volume = 50 //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change() to change names, descs and sprites. - var/list/possible_states = list("ketchup" = list("ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "enzyme" = list("enzyme", "Universal Enzyme", "Used in cooking various dishes"), "soysauce" = list("soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("coldsauce", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("saltshaker", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("pepermillsmall", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("oliveoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("emptycondiment", "Sugar", "Tasty spacey sugar!")) + var/list/possible_states = list( + "ketchup" = list("ketchup", "ketchup bottle", "You feel more American already."), + "capsaicin" = list("hotsauce", "hotsauce bottle", "You can almost TASTE the stomach ulcers now!"), + "enzyme" = list("enzyme", "universal enzyme bottle", "Used in cooking various dishes"), + "soysauce" = list("soysauce", "soy sauce bottle", "A salty soy-based flavoring"), + "frostoil" = list("coldsauce", "coldsauce bottle", "Leaves the tongue numb in it's passage"), + "sodiumchloride" = list("saltshakersmall", "salt shaker", "Salt. From space oceans, presumably"), + "blackpepper" = list("pepermillsmall", "pepper mill", "Often used to flavor food or make people sneeze"), + "cornoil" = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"), + "sugar" = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!"), + "flour" =list("flour", "flour sack", "A big bag of flour. Good for baking!"), + "rice" =list("rice", "rice sack", "A big bag of rice. Good for cooking!")) /obj/item/weapon/reagent_containers/food/condiment/attackby(obj/item/weapon/W as obj, mob/user as mob, params) @@ -96,7 +107,7 @@ user << "\blue You transfer [trans] units of the condiment to [target]." /obj/item/weapon/reagent_containers/food/condiment/on_reagent_change() - if(icon_state == "saltshakersmall" || icon_state == "peppermillsmall") + if(!possible_states.len) return if(reagents.reagent_list.len > 0) var/main_reagent = reagents.get_master_reagent_id() @@ -107,21 +118,22 @@ desc = temp_list[3] else - name = "Misc Condiment Bottle" + name = "condiment bottle" + main_reagent = reagents.get_master_reagent_name() if (reagents.reagent_list.len==1) - desc = "Looks like it is [main_reagent], but you are not sure." + desc = "Looks like it is [lowertext(main_reagent)], but you are not sure." else - desc = "A mixture of various condiments. [main_reagent] is one of them." + desc = "A mixture of various condiments. [lowertext(main_reagent)] is one of them." icon_state = "mixedcondiments" else icon_state = "emptycondiment" - name = "Condiment Bottle" + name = "condiment bottle" desc = "An empty condiment bottle." return /obj/item/weapon/reagent_containers/food/condiment/enzyme - name = "Universal Enzyme" + name = "universal enzyme" desc = "Used in cooking various dishes." icon_state = "enzyme" New() @@ -129,10 +141,35 @@ reagents.add_reagent("enzyme", 50) /obj/item/weapon/reagent_containers/food/condiment/sugar + name = "sugar bottle" + desc = "Tasty spacey sugar!" + New() ..() reagents.add_reagent("sugar", 50) +/obj/item/weapon/reagent_containers/food/condiment/flour + name = "flour sack" + desc = "A big bag of flour. Good for baking!" + icon_state = "flour" + item_state = "flour" + possible_states = list() + + New() + ..() + reagents.add_reagent("flour", 30) + +/obj/item/weapon/reagent_containers/food/condiment/rice + name = "rice sack" + desc = "A big bag of rice. Good for cooking!" + icon_state = "rice" + item_state = "flour" + possible_states = list() + + New() + ..() + reagents.add_reagent("rice", 30) + /obj/item/weapon/reagent_containers/food/condiment/saltshaker //Seperate from above since it's a small shaker rather then name = "Salt Shaker" // a large one. desc = "Salt. From space oceans, presumably." @@ -140,6 +177,8 @@ possible_transfer_amounts = list(1,20) //for clown turning the lid off amount_per_transfer_from_this = 1 volume = 20 + possible_states = list() + New() ..() reagents.add_reagent("sodiumchloride", 20) @@ -151,6 +190,8 @@ possible_transfer_amounts = list(1,20) //for clown turning the lid off amount_per_transfer_from_this = 1 volume = 20 + possible_states = list() + New() ..() reagents.add_reagent("blackpepper", 20) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 75f7a16eef0..097dc03e6e1 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -629,14 +629,6 @@ reagents.add_reagent("nutriment", 2) reagents.add_reagent("egg", 5) -/obj/item/weapon/reagent_containers/food/snacks/flour - name = "flour" - desc = "A small bag filled with some flour." - icon_state = "flour" - New() - ..() - reagents.add_reagent("flour", 5) - /obj/item/weapon/reagent_containers/food/snacks/organ name = "organ" @@ -3176,22 +3168,6 @@ ..() reagents.add_reagent("nutriment", 3) -// Flour + egg = dough -/obj/item/weapon/reagent_containers/food/snacks/flour/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/egg)) - new /obj/item/weapon/reagent_containers/food/snacks/dough(src) - user << "You make some dough." - qdel(W) - qdel(src) - -// Egg + flour = dough -/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/flour)) - new /obj/item/weapon/reagent_containers/food/snacks/dough(src) - user << "You make some dough." - qdel(W) - qdel(src) - /obj/item/weapon/reagent_containers/food/snacks/dough name = "dough" desc = "A piece of dough." diff --git a/icons/effects/genetics.dmi b/icons/effects/genetics.dmi index 64e58e5a7b2..819532badfc 100644 Binary files a/icons/effects/genetics.dmi and b/icons/effects/genetics.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index ef5f3bf49f6..ea921601b51 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/pneumaticCannon.dmi b/icons/obj/pneumaticCannon.dmi new file mode 100644 index 00000000000..41de7677b56 Binary files /dev/null and b/icons/obj/pneumaticCannon.dmi differ diff --git a/paradise.dme b/paradise.dme index d1ccd59eae7..5609a53594b 100644 --- a/paradise.dme +++ b/paradise.dme @@ -720,6 +720,7 @@ #include "code\game\objects\items\weapons\mop.dm" #include "code\game\objects\items\weapons\paint.dm" #include "code\game\objects\items\weapons\paiwire.dm" +#include "code\game\objects\items\weapons\pneumaticCannon.dm" #include "code\game\objects\items\weapons\power_cells.dm" #include "code\game\objects\items\weapons\RCD.dm" #include "code\game\objects\items\weapons\RSF.dm" @@ -1627,7 +1628,6 @@ #include "code\modules\projectiles\guns\projectile\grenade launcher.dm" #include "code\modules\projectiles\guns\projectile\launchers.dm" #include "code\modules\projectiles\guns\projectile\pistol.dm" -#include "code\modules\projectiles\guns\projectile\pneumatic.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" #include "code\modules\projectiles\guns\projectile\rocket.dm" #include "code\modules\projectiles\guns\projectile\shotgun.dm"