diff --git a/code/defines/obj/computer.dm b/code/defines/obj/computer.dm index ff78213008d..af0477f9f77 100644 --- a/code/defines/obj/computer.dm +++ b/code/defines/obj/computer.dm @@ -203,6 +203,44 @@ name = "Magix System IV" desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition" +/*/obj/machinery/computer/scan_consolenew //Coming Soon + name = "DNA Modifier Access Console" + desc = "Scand DNA." + icon = 'computer.dmi' + icon_state = "scanner" + density = 1 + var/uniblock = 1.0 + var/strucblock = 1.0 + var/subblock = 1.0 + var/status = null + var/radduration = 2.0 + var/radstrength = 1.0 + var/radacc = 1.0 + var/buffer1 = null + var/buffer2 = null + var/buffer3 = null + var/buffer1owner = null + var/buffer2owner = null + var/buffer3owner = null + var/buffer1label = null + var/buffer2label = null + var/buffer3label = null + var/buffer1type = null + var/buffer2type = null + var/buffer3type = null + var/buffer1iue = 0 + var/buffer2iue = 0 + var/buffer3iue = 0 + var/delete = 0 + var/injectorready = 1 + var/temphtml = null + var/obj/machinery/dna_scanner/connected = null + var/obj/item/weapon/disk/data/diskette = null + anchored = 1.0 + use_power = 1 + idle_power_usage = 10 + active_power_usage = 400 */ + /obj/machinery/computer/secure_data name = "Security Records" desc = "Beepsky. ARREST!!!" @@ -270,4 +308,12 @@ desc = "Use this to set your destination...hopefully..." icon_state = "teleport" locked = null - id = null \ No newline at end of file + id = null + +/obj/machinery/computer/crew + name = "Crew monitoring computer" + icon_state = "crew" + use_power = 1 + idle_power_usage = 250 + active_power_usage = 500 + var/list/tracked = list( ) \ No newline at end of file diff --git a/code/defines/obj/decal.dm b/code/defines/obj/decal.dm index af901083906..cb64dd65a38 100644 --- a/code/defines/obj/decal.dm +++ b/code/defines/obj/decal.dm @@ -253,4 +253,23 @@ Del() for(var/datum/disease/D in viruses) D.cure(0) - ..() \ No newline at end of file + ..() + +/obj/decal/cleanable/tomato_smudge + name = "Tomato smooth" + desc = "It's red" + density = 0 + anchored = 1 + layer = 2 + icon = 'tomatodecal.dmi' + random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3") + +/obj/decal/cleanable/egg_smudge + name = "Smashed egg" + desc = "" + density = 0 + anchored = 1 + layer = 2 + icon = 'tomatodecal.dmi' + random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3") + diff --git a/code/defines/obj/hydro.dm b/code/defines/obj/hydro.dm index e5ca58a9734..b0755ee6e2d 100644 --- a/code/defines/obj/hydro.dm +++ b/code/defines/obj/hydro.dm @@ -1289,6 +1289,13 @@ ..() reagents.add_reagent("nutriment", 2) + throw_impact(atom/hit_atom) + ..() + new/obj/decal/cleanable/tomato_smudge(src.loc) + src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.") + del(src) + return + /obj/item/weapon/reagent_containers/food/snacks/grown/killertomato seed = "/obj/item/seeds/killertomatoseed" name = "Killer Tomato" @@ -1844,4 +1851,4 @@ yieldmod = 2 New() src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) \ No newline at end of file + src.pixel_y = rand(-5.0, 5) diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm new file mode 100644 index 00000000000..f5c8dbe808f --- /dev/null +++ b/code/game/machinery/biogenerator.dm @@ -0,0 +1,177 @@ +/obj/machinery/biogenerator + name = "Biogenerator" + desc = "" + icon = 'biogenerator.dmi' + icon_state = "biogen-stand" + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 40 + var/processing = 0 + var/obj/item/weapon/reagent_containers/glass/beaker = null + var/points = 0 + var/menustat = "menu" + + New() + ..() + var/datum/reagents/R = new/datum/reagents(1000) + reagents = R + R.my_atom = src + beaker = new /obj/item/weapon/reagent_containers/glass/large(src) + + on_reagent_change() //When the reagents change, change the icon as well. + update_icon() + + update_icon() + if(!src.beaker) + icon_state = "biogen-empty" + else if(!src.processing) + icon_state = "biogen-stand" + else + icon_state = "biogen-work" + return + +/obj/machinery/biogenerator/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/weapon/reagent_containers/glass)) + if(beaker) + user << "\red Biogenerator already occuped." + else + user.before_take_item(O) + O.loc = src + beaker = O + updateUsrDialog() + else if(!istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown)) + user << "\red You cannot put this in [src.name]" + else if(processing) + user << "\red Biogenerator is processing." + else + var/i = 0 + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in contents) + i++ + if(i >= 10) + user << "\red Biogenerator is fulled! Activate it." + else + user.before_take_item(O) + O.loc = src + user << "\blue You put [O.name] in [src.name]" + update_icon() + return + +/obj/machinery/biogenerator/proc/interact(mob/user as mob) + if(stat & BROKEN) + return + user.machine = src + var/dat = "BiogeneratorBiogenerator:
" + if (processing) + dat += "Biogenerator is processing! Please wait..." + else + dat += "Biomass: [points] points.
" + switch(menustat) + if("menu") + if (beaker) + dat += "Activate Biogenerator!
" + dat += "Detach Container

" + dat += "Food
" + dat += "10 milk (20)
" + dat += "Slab of meat (50)
" + dat += "Nutrient
" + dat += "E-Z-Nutrient (10)
" + dat += "Left 4 Zed (20)
" + dat += "Robust Harvest (25)
" + //dat += "Other
" + //dat += "Monkey (500)
" + else + dat += "
No beaker inside. Please insert a beaker.
" + if("nopoints") + dat += "You do not have biomass to create products.
Please, put growns into reactor and activate it.
" + dat += "Return to menu" + if("complete") + dat += "Operation complete.
" + dat += "Return to menu" + if("void") + dat += "Error: No growns inside.
Please, put growns into reactor.
" + dat += "Return to menu" + user << browse(dat, "window=biogenerator") + onclose(user, "biogenerator") + return + +/obj/machinery/biogenerator/attack_hand(mob/user as mob) + interact(user) + +/obj/machinery/biogenerator/proc/activate() + if (usr.stat != 0) + return + if (src.stat != 0) //NOPOWER etc + return + if(src.processing) + usr << "\red The biogenerator is in the process of working." + return + var/S = 0 + for(var/obj/item/weapon/reagent_containers/food/snacks/grown/I in contents) + //I.reagents.trans_to(src) + S += 5 + if(I.potency == -1) + points += 10 + else points += I.potency + del(I) + if(S) + processing = 1 + update_icon() + updateUsrDialog() + playsound(src.loc, 'blender.ogg', 50, 1) + use_power(S*30) + sleep(S+15) + //points += src.reagents.get_reagent_amount("nutriment") + //src.reagents.del_reagent("nutriment") + processing = 0 + update_icon() + else + menustat = "void" + return + +/obj/machinery/biogenerator/proc/create_product(var/item,var/cost) + if(cost > points) + menustat = "nopoints" + return 0 + processing = 1 + update_icon() + updateUsrDialog() + points -= cost + sleep(30) + switch(item) + if("milk") + beaker.reagents.add_reagent("milk",10) + if("meat") + new/obj/item/weapon/reagent_containers/food/snacks/meat(src.loc) + if("ez") + new/obj/item/nutrient/ez(src.loc) + if("l4z") + new/obj/item/nutrient/l4z(src.loc) + if("rh") + new/obj/item/nutrient/rh(src.loc) + if("monkey") + new/mob/living/carbon/monkey(src.loc) + processing = 0 + menustat = "complete" + update_icon() + return 1 + +/obj/machinery/biogenerator/Topic(href, href_list) + if(stat & BROKEN) return + if(usr.stat || usr.restrained()) return + if(!in_range(src, usr)) return + + usr.machine = src + + switch(href_list["action"]) + if("activate") + activate() + if("detach") + beaker.loc = src.loc + beaker = null + update_icon() + if("create") + create_product(href_list["item"],text2num(href_list["cost"])) + if("menu") + menustat = "menu" + updateUsrDialog() \ No newline at end of file diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index f174124c2d0..2a777d31bec 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -108,6 +108,7 @@ /obj/item/weapon/circuitboard/solar_control name = "Circuit board (Solar Control)" //name fixed 250810 build_path = "/obj/machinery/power/solar_control" + origin_tech = "programming=2;powerstorage=2" /obj/item/weapon/circuitboard/powermonitor name = "Circuit board (Power Monitor)" //name fixed 250810 build_path = "/obj/machinery/power/monitor" @@ -132,7 +133,14 @@ /obj/item/weapon/circuitboard/rdservercontrol name = "Circuit Board (R&D Server Control)" build_path = "/obj/machinery/computer/rdservercontrol" - +/obj/item/weapon/circuitboard/crew + name = "Circuit board (Crew monitoring computer)" + build_path = "/obj/machinery/computer/crew" + origin_tech = "programming=3;biotech=2;magnets=2" +/obj/item/weapon/circuitboard/mech_bay_power_console + name = "Circuit board (Mech Bay Power Control Console)" + build_path = "/obj/machinery/computer/mech_bay_power_console" + origin_tech = "programming=2;powerstorage=3" /obj/computerframe/attackby(obj/item/P as obj, mob/user as mob) diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 09efa8a8abb..c4ba1bd5de2 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -1,13 +1,35 @@ +/obj/machinery/computer/crew/attackby(I as obj, user as mob) + if(istype(I, /obj/item/weapon/screwdriver)) + playsound(src.loc, 'Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + if (src.stat & BROKEN) + user << "\blue The broken glass falls out." + var/obj/computerframe/A = new /obj/computerframe( src.loc ) + new /obj/item/weapon/shard( src.loc ) + var/obj/item/weapon/circuitboard/crew/M = new /obj/item/weapon/circuitboard/crew( A ) + for (var/obj/C in src) + C.loc = src.loc + A.circuit = M + A.state = 3 + A.icon_state = "3" + A.anchored = 1 + del(src) + else + user << "\blue You disconnect the monitor." + var/obj/computerframe/A = new /obj/computerframe( src.loc ) + var/obj/item/weapon/circuitboard/crew/M = new /obj/item/weapon/circuitboard/crew( A ) + for (var/obj/C in src) + C.loc = src.loc + A.circuit = M + A.state = 4 + A.icon_state = "4" + A.anchored = 1 + del(src) + else + src.attack_hand(user) + return + /obj/machinery/computer/crew - name = "crew monitoring computer" - icon_state = "crew" - use_power = 1 - idle_power_usage = 250 - active_power_usage = 500 - - var - list/tracked - New() tracked = list() ..() diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 7fb0c5e0462..6947f8f34aa 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -171,6 +171,36 @@ if(recharge_port) recharge_port.stop_charge() + attackby(I as obj, user as mob) + if(istype(I, /obj/item/weapon/screwdriver)) + playsound(src.loc, 'Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + if (src.stat & BROKEN) + user << "\blue The broken glass falls out." + var/obj/computerframe/A = new /obj/computerframe( src.loc ) + new /obj/item/weapon/shard( src.loc ) + var/obj/item/weapon/circuitboard/mech_bay_power_console/M = new /obj/item/weapon/circuitboard/mech_bay_power_console( A ) + for (var/obj/C in src) + C.loc = src.loc + A.circuit = M + A.state = 3 + A.icon_state = "3" + A.anchored = 1 + del(src) + else + user << "\blue You disconnect the monitor." + var/obj/computerframe/A = new /obj/computerframe( src.loc ) + var/obj/item/weapon/circuitboard/mech_bay_power_console/M = new /obj/item/weapon/circuitboard/mech_bay_power_console( A ) + for (var/obj/C in src) + C.loc = src.loc + A.circuit = M + A.state = 4 + A.icon_state = "4" + A.anchored = 1 + del(src) + else + src.attack_hand(user) + return attack_hand(mob/user as mob) if(..()) return diff --git a/code/game/objects/stool.dm b/code/game/objects/stool.dm index 6f896307f17..34c7d452c22 100644 --- a/code/game/objects/stool.dm +++ b/code/game/objects/stool.dm @@ -258,3 +258,67 @@ if (manual_unbuckle_all(user)) src.add_fingerprint(user) return + +//roller bed + +/obj/stool/bed/roller + name = "roller bed" + icon = 'rollerbed.dmi' + icon_state = "down" + anchored = 0 + + Move() + ..() + for(var/mob/M in src:buckled_mobs) + if (M.buckled == src) + M.loc = src.loc + + buckle_mob(mob/M as mob, mob/user as mob) + if (!ticker) + user << "You can't buckle anyone in before the game starts." + return 0 + if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat || M.buckled)) + return 0 + if (M == usr) + M.visible_message(\ + "\blue [M.name] buckles in!",\ + "You buckle yourself to [src].",\ + "You hear metal clanking") + else + M.visible_message(\ + "\blue [M.name] is buckled in to [src] by [user.name]!",\ + "You buckled in to [src] by [user.name].",\ + "You hear metal clanking") + M.anchored = 1 + M.buckled = src + M.loc = src.loc + M.pixel_y = 6 + M.update_clothing() + src:buckled_mobs += M + src.add_fingerprint(user) + density = 1 + icon_state = "up" + return 1 + + manual_unbuckle_all(mob/user as mob) + var/N = 0; + for(var/mob/M in src:buckled_mobs) + if (M.buckled == src) + if (M != user) + M.visible_message(\ + "\blue [M.name] was unbuckled by [user.name]!",\ + "You unbuckled from [src] by [user.name].",\ + "You hear metal clanking") + else + M.visible_message(\ + "\blue [M.name] was unbuckled himself!",\ + "You unbuckle yourself from [src].",\ + "You hear metal clanking") + M.pixel_y = 0 + M.anchored = 0 + M.buckled = null + N++ + if(N) + density = 0 + icon_state = "down" + return N diff --git a/code/game/research/designs.dm b/code/game/research/designs.dm index 1584faff732..9dd11ed81c7 100644 --- a/code/game/research/designs.dm +++ b/code/game/research/designs.dm @@ -147,6 +147,15 @@ datum materials = list("$glass" = 2000, "acid" = 20) build_path = "/obj/item/weapon/circuitboard/card" + crewconsole + name = "Circuit Design (Crew monitoring computer)" + desc = "Allows for the construction of circuit boards used to build an Crew monitoring computer." + id = "crewconsole" + req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/crew" + teleconsole name = "Circuit Design (Teleporter Console)" desc = "Allows for the construction of circuit boards used to build a teleporter control console." @@ -228,6 +237,15 @@ datum materials = list("$glass" = 2000, "acid" = 20) build_path = "/obj/item/weapon/circuitboard/powermonitor" + solarcontrol + name = "Circuit Design (Solar Control)" + desc = "Allows for the construction of circuit boards used to build a solar control console" + id = "solarcontrol" + req_tech = list("programming" = 2, "powerstorage" = 2) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/solar_control" + prisonmanage name = "Circuit Design (Prisoner Management Console)" desc = "Allows for the construction of circuit boards used to build a prisoner management console." @@ -246,6 +264,24 @@ datum materials = list("$glass" = 2000, "acid" = 20) build_path = "/obj/item/weapon/circuitboard/mecha_control" + mechapower + name = "Circuit Design (Mech Bay Power Control Console)" + desc = "Allows for the construction of circuit boards used to build an mech bay power control console." + id = "mechapower" + req_tech = list("programming" = 2, "powerstorage" = 3) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/mech_bay_power_console" + + rdconsole + name = "Circuit Design (R&D Console)" + desc = "Allows for the construction of circuit boards used to build an new R&D console." + id = "rdconsole" + req_tech = list("programming" = 6) + build_type = IMPRINTER + materials = list("$glass" = 2000, "acid" = 20) + build_path = "/obj/item/weapon/circuitboard/rdconsole" + /////////////////////////////////// //////////AI Module Disks////////// /////////////////////////////////// @@ -561,7 +597,6 @@ datum req_tech = list("magnets" = 3, "programming" = 3, "engineering" = 3) build_path = "/obj/item/mecha_parts/mecha_equipment/repair_droid" - //////////////////////////////////////// //////////Disk Construction Disks/////// //////////////////////////////////////// diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm index 5c9980221ea..f5f294cda31 100644 --- a/code/modules/food/food.dm +++ b/code/modules/food/food.dm @@ -30,6 +30,7 @@ name = "candy" desc = "Nougat love it or hate it." icon_state = "candy" + trash = "candy" New() ..() reagents.add_reagent("nutriment", 1) @@ -50,6 +51,7 @@ name = "chips" desc = "Commander Riker's What-The-Crisps" icon_state = "chips" + trash = "chips" New() ..() reagents.add_reagent("nutriment", 3) @@ -88,6 +90,12 @@ ..() reagents.add_reagent("nutriment", 1) + throw_impact(atom/hit_atom) + ..() + new/obj/decal/cleanable/egg_smudge(src.loc) + src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.") + del(src) + /obj/item/weapon/reagent_containers/food/snacks/flour name = "flour" desc = "Some flour" @@ -381,6 +389,7 @@ name = "Berry Clafoutis" desc = "No black birds, this is a good sign." icon_state = "berryclafoutis" + trash = "plate" New() ..() reagents.add_reagent("nutriment", 4) @@ -391,6 +400,7 @@ name = "waffles" desc = "Mmm, waffles" icon_state = "waffles" + trash = "waffles" New() ..() reagents.add_reagent("nutriment", 8) @@ -400,6 +410,7 @@ name = "Eggplant Parmigiana" desc = "The only good recipe for eggplant." icon_state = "eggplantparm" + trash = "plate" New() ..() reagents.add_reagent("nutriment", 6) @@ -446,6 +457,7 @@ // var/job = null icon_state = "meatpie" desc = "The best meatpies on station." + trash = "plate" New() ..() reagents.add_reagent("nutriment", 10) @@ -455,6 +467,7 @@ name = "Meat-pie" icon_state = "meatpie" desc = "A delicious meatpie." + trash = "plate" New() ..() reagents.add_reagent("nutriment", 10) @@ -464,6 +477,7 @@ name = "Tofu-pie" icon_state = "meatpie" desc = "A delicious tofu pie." + trash = "plate" New() ..() reagents.add_reagent("nutriment", 10) @@ -499,6 +513,7 @@ name = "Xeno-pie" icon_state = "xenomeatpie" desc = "A delicious meatpie. Probably heretical." + trash = "plate" New() ..() reagents.add_reagent("nutriment", 2) @@ -509,6 +524,7 @@ name = "Wing Fang Chu" desc = "A savory dish of alien wing wang in soy." icon_state = "wingfangchu" + trash = "snack_bowl" New() ..() reagents.add_reagent("nutriment", 1) @@ -578,6 +594,7 @@ name = "Cuban Carp" desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!" icon_state = "cubancarp" + trash = "plate" New() ..() reagents.add_reagent("nutriment", 6) @@ -589,6 +606,7 @@ name = "Popcorm" //not a typo desc = "Now let's find some cinema." icon_state = "popcorn" + trash = "popcorn" var/unpopped = 0 New() ..() @@ -599,12 +617,14 @@ if(prob(unpopped)) usr << "\red You bite down on an un-popped kernel!" unpopped = max(0, unpopped-1) + ..() /obj/item/weapon/reagent_containers/food/snacks/sosjerky name = "Scaredy's Private Reserve Beef Jerky" icon_state = "sosjerky" desc = "Beef jerky made from the finest space cows." + trash = "sosjerky" New() ..() reagents.add_reagent("nutriment", 4) @@ -614,6 +634,7 @@ name = "4no Raisins" icon_state = "4no_raisins" desc = "Best raisins in the universe. Not sure why." + trash = "raisins" New() ..() reagents.add_reagent("nutriment", 6) @@ -631,6 +652,7 @@ name = "Cheesie Honkers" icon_state = "cheesie_honkers" desc = "Bite sized cheesie snacks that will honk all over your mouth" + trash = "cheesie" New() ..() reagents.add_reagent("nutriment", 4) @@ -640,6 +662,7 @@ name = "Syndi-Cakes" icon_state = "syndi_cakes" desc = "An extremely moist snack cake that tastes just as good after being nuked." + trash = "syndi_cakes" New() ..() reagents.add_reagent("nutriment", 4) @@ -650,6 +673,7 @@ name = "Loaded Baked Potato" desc = "Totally baked." icon_state = "loadedbakedpotato" + trash = "loadedbakedpotato" New() ..() reagents.add_reagent("nutriment", 6) @@ -688,6 +712,7 @@ name = "Cheesy Fries" desc = "Fries. Covered in cheese. Duh." icon_state = "cheesyfries" + trash = "plate" New() ..() reagents.add_reagent("nutriment", 6) @@ -726,6 +751,7 @@ name = "Meat steak" desc = "A piece of hot spicy meat." icon_state = "meatstake" + trash = "plate" New() ..() reagents.add_reagent("nutriment", 4) @@ -737,6 +763,7 @@ name = "Spacy Liberty Duff" desc = "Jello gelatin, if Alfred Hubbard were a confectionist" //TODO icon_state = "spacylibertyduff" + trash = "snack_bowl" New() ..() reagents.add_reagent("nutriment", 6) @@ -747,6 +774,7 @@ name = "Amanita Jelly" desc = "Looks curiously toxic" icon_state = "amanitajelly" + trash = "snack_bowl" New() ..() reagents.add_reagent("nutriment", 6) @@ -769,6 +797,7 @@ name = "Meatball soup" desc = "" //TODO icon_state = "meatballsoup" + trash = "snack_bowl" New() ..() reagents.add_reagent("nutriment", 10) @@ -811,6 +840,7 @@ name = "Vegetable soup" desc = "" //TODO icon_state = "vegetablesoup" + trash = "snack_bowl" New() ..() reagents.add_reagent("nutriment", 10) @@ -821,6 +851,7 @@ name = "Nettle soup" desc = "" //TODO icon_state = "nettlesoup" + trash = "snack_bowl" New() ..() reagents.add_reagent("nutriment", 10) @@ -842,6 +873,7 @@ name = "Hot Chili" desc = "" //TODO icon_state = "hotchili" + trash = "snack_bowl" New() ..() reagents.add_reagent("nutriment", 6) @@ -854,6 +886,7 @@ name = "Cold Chili" desc = "" //TODO icon_state = "coldchili" + trash = "snack_bowl" New() ..() reagents.add_reagent("nutriment", 6) @@ -1231,6 +1264,7 @@ name = "meatbread slice" desc = "A slice of delicious meatbread." icon_state = "meatbreadslice" + trash = "plate" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread @@ -1249,6 +1283,7 @@ name = "xenomeatbread slice" desc = "A slice of delicious meatbread. Extra Heretical." icon_state = "xenobreadslice" + trash = "plate" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread @@ -1267,6 +1302,7 @@ name = "Banana-nut bread slice" desc = "A slice of delicious banana bread." icon_state = "bananabreadslice" + trash = "plate" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread @@ -1284,6 +1320,7 @@ name = "Tofubread slice" desc = "A slice of delicious tofubread." icon_state = "tofubreadslice" + trash = "plate" bitesize = 2 @@ -1303,6 +1340,7 @@ name = "Carrot Cake slice" desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie." icon_state = "carrotcake_slice" + trash = "plate" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake @@ -1320,6 +1358,7 @@ name = "Cheese Cake slice" desc = "Slice of pure cheestisfaction" icon_state = "cheesecake_slice" + trash = "plate" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake @@ -1336,6 +1375,7 @@ name = "Vanilla Cake slice" desc = "Just a slice of cake, it is enough for everyone." icon_state = "plaincake_slice" + trash = "plate" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index cc4336ffec0..0a121e65281 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -158,6 +158,37 @@ interact(user) +/obj/machinery/power/solar_control/attackby(I as obj, user as mob) + if(istype(I, /obj/item/weapon/screwdriver)) + playsound(src.loc, 'Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + if (src.stat & BROKEN) + user << "\blue The broken glass falls out." + var/obj/computerframe/A = new /obj/computerframe( src.loc ) + new /obj/item/weapon/shard( src.loc ) + var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A ) + for (var/obj/C in src) + C.loc = src.loc + A.circuit = M + A.state = 3 + A.icon_state = "3" + A.anchored = 1 + del(src) + else + user << "\blue You disconnect the monitor." + var/obj/computerframe/A = new /obj/computerframe( src.loc ) + var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A ) + for (var/obj/C in src) + C.loc = src.loc + A.circuit = M + A.state = 4 + A.icon_state = "4" + A.anchored = 1 + del(src) + else + src.attack_hand(user) + return + /obj/machinery/power/solar_control/process() lastgen = gen gen = 0 diff --git a/icons/obj/biogenerator.dmi b/icons/obj/biogenerator.dmi new file mode 100644 index 00000000000..c65a9571b09 Binary files /dev/null and b/icons/obj/biogenerator.dmi differ diff --git a/icons/obj/rollerbed.dmi b/icons/obj/rollerbed.dmi new file mode 100644 index 00000000000..67a843283fa Binary files /dev/null and b/icons/obj/rollerbed.dmi differ diff --git a/icons/obj/tomatodecal.dmi b/icons/obj/tomatodecal.dmi new file mode 100644 index 00000000000..f37bfc7f792 Binary files /dev/null and b/icons/obj/tomatodecal.dmi differ diff --git a/tgstation.dme b/tgstation.dme index e5e41a9c437..7dcfa7f43e4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -41,6 +41,7 @@ #define FILE_DIR "code/game/gamemodes/revolution" #define FILE_DIR "code/game/gamemodes/sandbox" #define FILE_DIR "code/game/gamemodes/traitor" +#define FILE_DIR "code/game/gamemodes/traitor_pair" #define FILE_DIR "code/game/gamemodes/wizard" #define FILE_DIR "code/game/jobs" #define FILE_DIR "code/game/machinery" @@ -361,6 +362,7 @@ #include "code\game\machinery\alarm.dm" #include "code\game\machinery\atmo_control.dm" #include "code\game\machinery\autolathe.dm" +#include "code\game\machinery\biogenerator.dm" #include "code\game\machinery\camera.dm" #include "code\game\machinery\cell_charger.dm" #include "code\game\machinery\constructable_frame.dm"