From 2c1f721749d2692a189745178921dc1ecdafa84d Mon Sep 17 00:00:00 2001 From: LightningIron Date: Thu, 9 Jan 2014 11:37:48 -0600 Subject: [PATCH 01/20] Fixes #4221. --- code/game/machinery/autolathe.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index d3fb30d3710..565edc8e174 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -16,7 +16,8 @@ var/global/list/autolathe_recipes = list( \ new /obj/item/weapon/stock_parts/console_screen(), \ new /obj/item/weapon/airlock_electronics(), \ new /obj/item/weapon/airalarm_electronics(), \ - new /obj/item/weapon/firealarm_electronics(), \ + new /obj/item/weapon/firealarm_electronics(), \ + new /obj/item/weapon/module/power_control(), \ new /obj/item/stack/sheet/metal(), \ new /obj/item/stack/sheet/glass(), \ new /obj/item/stack/sheet/rglass(), \ From 16a28b7338141f39e9a674cfae3d702b2a3eaf7a Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 11 Jan 2014 02:35:10 +1030 Subject: [PATCH 02/20] Added filling_color var to food items for use in sandwiches. --- .../reagents/reagent_containers/food.dm | 1 + .../reagent_containers/food/sandwich.dm | 83 +++++ .../reagent_containers/food/snacks.dm | 285 ++++++++++++++++++ .../reagent_containers/food/snacks/grown.dm | 52 +++- .../reagent_containers/food/snacks/meat.dm | 1 + 5 files changed, 421 insertions(+), 1 deletion(-) create mode 100644 code/modules/reagents/reagent_containers/food/sandwich.dm diff --git a/code/modules/reagents/reagent_containers/food.dm b/code/modules/reagents/reagent_containers/food.dm index 4f14338886f..53bdeca5f84 100644 --- a/code/modules/reagents/reagent_containers/food.dm +++ b/code/modules/reagents/reagent_containers/food.dm @@ -4,6 +4,7 @@ /obj/item/weapon/reagent_containers/food possible_transfer_amounts = null volume = 50 //Sets the default container amount for all food items. + var/filling_color = "#FFFFFF" //Used by sandwiches. /obj/item/weapon/reagent_containers/food/New() ..() diff --git a/code/modules/reagents/reagent_containers/food/sandwich.dm b/code/modules/reagents/reagent_containers/food/sandwich.dm new file mode 100644 index 00000000000..12cc0c253f9 --- /dev/null +++ b/code/modules/reagents/reagent_containers/food/sandwich.dm @@ -0,0 +1,83 @@ +/obj/item/weapon/reagent_containers/food/snacks/breadslice/attackby(obj/item/W as obj, mob/user as mob) + + if(istype(W,/obj/item/weapon/shard) || istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/csandwich/S = new(get_turf(src)) + S.attackby(W,user) + del(src) + ..() + +/obj/item/weapon/reagent_containers/food/snacks/csandwich + name = "sandwich" + desc = "The best thing since sliced bread." + icon_state = "breadslice" + trash = /obj/item/trash/plate + bitesize = 2 + + var/list/ingredients = list() + +/obj/item/weapon/reagent_containers/food/snacks/csandwich/attackby(obj/item/W as obj, mob/user as mob) + + var/sandwich_limit = 4 + for(var/obj/item/O in ingredients) + if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/breadslice)) + sandwich_limit += 4 + + if(src.contents.len > sandwich_limit) + user << "\red If you put anything else on \the [src] it's going to collapse." + return + else if(istype(W,/obj/item/weapon/shard)) + user << "\blue You hide [W] in \the [src]." + user.drop_item() + W.loc = src + update() + return + else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + user << "\blue You layer [W] over \the [src]." + var/obj/item/weapon/reagent_containers/F = W + F.reagents.trans_to(src, F.reagents.total_volume) + user.drop_item() + W.loc = src + ingredients += W + update() + return + ..() + +/obj/item/weapon/reagent_containers/food/snacks/csandwich/proc/update() + var/fullname = "" //We need to build this from the contents of the var. + var/i = 0 + + overlays.Cut() + + for(var/obj/item/weapon/reagent_containers/food/snacks/O in ingredients) + + i++ + if(i == 1) + fullname += "[O.name]" + else if(i == ingredients.len) + fullname += " and [O.name]" + else + fullname += ", [O.name]" + + var/image/I = new(src.icon, "sandwich_filling") + I.color = O.filling_color + I.pixel_x = pick(list(-1,0,1)) + I.pixel_y = (i*2)+1 + overlays += I + + var/image/T = new(src.icon, "sandwich_top") + T.pixel_x = pick(list(-1,0,1)) + T.pixel_y = (ingredients.len * 2)+3 + overlays += T + + name = lowertext("[fullname] sandwich") + if(length(name) > 80) name = "[pick(list("absurd","colossal","enormous","ridiculous"))] sandwich" + w_class = n_ceil(Clamp((ingredients.len/2),1,3)) + +/obj/item/weapon/reagent_containers/food/snacks/csandwich/Del() + for(var/obj/item/O in ingredients) + del(O) + ..() + +/obj/item/weapon/reagent_containers/food/snacks/csandwich/examine() + ..() + usr << "\blue You think you can see [pick(ingredients)] in there." \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index ef45f7a6640..a712b236c7d 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -249,6 +249,8 @@ desc = "Probably too incredible for mortal men to fully enjoy." icon_state = "aesirsalad" trash = /obj/item/trash/snack_bowl + filling_color = "#468C00" + New() ..() reagents.add_reagent("nutriment", 8) @@ -261,6 +263,8 @@ desc = "Nougat love it or hate it." icon_state = "candy" trash = /obj/item/trash/candy + filling_color = "#7D5F46" + New() ..() reagents.add_reagent("nutriment", 1) @@ -281,6 +285,8 @@ name = "candy corn" desc = "It's a handful of candy corn. Can be stored in a detective's hat." icon_state = "candy_corn" + filling_color = "#FFFCB0" + New() ..() reagents.add_reagent("nutriment", 4) @@ -292,6 +298,8 @@ desc = "Commander Riker's What-The-Crisps" icon_state = "chips" trash = /obj/item/trash/chips + filling_color = "#E8C31E" + New() ..() reagents.add_reagent("nutriment", 3) @@ -301,6 +309,8 @@ name = "cookie" desc = "COOKIE!!!" icon_state = "COOKIE!!!" + filling_color = "#DBC94F" + New() ..() reagents.add_reagent("nutriment", 5) @@ -310,6 +320,8 @@ name = "Chocolate Bar" desc = "Such, sweet, fattening food." icon_state = "chocolatebar" + filling_color = "#7D5F46" + New() ..() reagents.add_reagent("nutriment", 2) @@ -321,6 +333,8 @@ name = "Chocolate Egg" desc = "Such, sweet, fattening food." icon_state = "chocolateegg" + filling_color = "#7D5F46" + New() ..() reagents.add_reagent("nutriment", 3) @@ -332,6 +346,7 @@ name = "donut" desc = "Goes great with Robust Coffee." icon_state = "donut1" + filling_color = "#D9C386" /obj/item/weapon/reagent_containers/food/snacks/donut/normal name = "donut" @@ -351,6 +366,8 @@ name = "Chaos Donut" desc = "Like life, it never quite tastes the same." icon_state = "donut1" + filling_color = "#ED11E6" + New() ..() reagents.add_reagent("nutriment", 2) @@ -388,6 +405,8 @@ name = "Jelly Donut" desc = "You jelly?" icon_state = "jdonut1" + filling_color = "#ED1169" + New() ..() reagents.add_reagent("nutriment", 3) @@ -403,6 +422,8 @@ name = "Jelly Donut" desc = "You jelly?" icon_state = "jdonut1" + filling_color = "#ED1169" + New() ..() reagents.add_reagent("nutriment", 3) @@ -418,6 +439,8 @@ name = "Jelly Donut" desc = "You jelly?" icon_state = "jdonut1" + filling_color = "#ED1169" + New() ..() reagents.add_reagent("nutriment", 3) @@ -433,6 +456,8 @@ name = "egg" desc = "An egg!" icon_state = "egg" + filling_color = "#FDFFD1" + New() ..() reagents.add_reagent("nutriment", 1) @@ -495,6 +520,8 @@ name = "Fried egg" desc = "A fried egg, with a touch of salt and pepper." icon_state = "friedegg" + filling_color = "#FFDF78" + New() ..() reagents.add_reagent("nutriment", 2) @@ -506,6 +533,8 @@ name = "Boiled egg" desc = "A hard boiled egg." icon_state = "egg" + filling_color = "#FFFFFF" + New() ..() reagents.add_reagent("nutriment", 2) @@ -523,6 +552,8 @@ desc = "An appendix which looks perfectly healthy." icon = 'icons/obj/surgery.dmi' icon_state = "appendix" + filling_color = "#E00D34" + New() ..() reagents.add_reagent("nutriment", 3) @@ -532,11 +563,14 @@ name = "inflamed appendix" desc = "An appendix which appears to be inflamed." icon_state = "appendixinflamed" + filling_color = "#E00D7A" /obj/item/weapon/reagent_containers/food/snacks/tofu name = "Tofu" icon_state = "tofu" desc = "We all love tofu." + filling_color = "#FFFEE0" + New() ..() reagents.add_reagent("nutriment", 3) @@ -546,6 +580,8 @@ name = "Tofurkey" desc = "A fake turkey made from tofu." icon_state = "tofurkey" + filling_color = "#FFFEE0" + New() ..() reagents.add_reagent("nutriment", 12) @@ -556,6 +592,8 @@ name = "Stuffing" desc = "Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in!" icon_state = "stuffing" + filling_color = "#C9AC83" + New() ..() reagents.add_reagent("nutriment", 3) @@ -565,6 +603,8 @@ name = "carp fillet" desc = "A fillet of spess carp meat" icon_state = "fishfillet" + filling_color = "#FFDEFE" + New() ..() reagents.add_reagent("nutriment", 3) @@ -575,6 +615,8 @@ name = "Fish Fingers" desc = "A finger of fish." icon_state = "fishfingers" + filling_color = "#FFDEFE" + New() ..() reagents.add_reagent("nutriment", 4) @@ -585,6 +627,8 @@ name = "huge mushroom slice" desc = "A slice from a huge mushroom." icon_state = "hugemushroomslice" + filling_color = "#E0D7C5" + New() ..() reagents.add_reagent("nutriment", 3) @@ -595,6 +639,8 @@ name = "tomato slice" desc = "A slice from a huge tomato" icon_state = "tomatomeat" + filling_color = "#DB0000" + New() ..() reagents.add_reagent("nutriment", 3) @@ -604,6 +650,8 @@ name = "bear meat" desc = "A very manly slab of meat." icon_state = "bearmeat" + filling_color = "#DB0000" + New() ..() reagents.add_reagent("nutriment", 12) @@ -614,6 +662,8 @@ name = "meat" desc = "A slab of meat" icon_state = "xenomeat" + filling_color = "#43DE18" + New() ..() reagents.add_reagent("nutriment", 3) @@ -623,6 +673,8 @@ name = "Faggot" desc = "A great meal all round. Not a cord of wood." icon_state = "faggot" + filling_color = "#DB0000" + New() ..() reagents.add_reagent("nutriment", 3) @@ -632,6 +684,8 @@ name = "Sausage" desc = "A piece of mixed, long meat." icon_state = "sausage" + filling_color = "#DB0000" + New() ..() reagents.add_reagent("nutriment", 6) @@ -641,6 +695,8 @@ name = "Donk-pocket" desc = "The food of choice for the seasoned traitor." icon_state = "donkpocket" + filling_color = "#DEDEAB" + New() ..() reagents.add_reagent("nutriment", 4) @@ -658,6 +714,8 @@ name = "brainburger" desc = "A strange looking burger. It looks almost sentient." icon_state = "brainburger" + filling_color = "#F2B6EA" + New() ..() reagents.add_reagent("nutriment", 6) @@ -668,6 +726,8 @@ name = "Ghost Burger" desc = "Spooky! It doesn't look very filling." icon_state = "ghostburger" + filling_color = "#FFF2FF" + New() ..() reagents.add_reagent("nutriment", 2) @@ -677,6 +737,7 @@ /obj/item/weapon/reagent_containers/food/snacks/human var/hname = "" var/job = null + filling_color = "#D63C3C" /obj/item/weapon/reagent_containers/food/snacks/human/burger name = "-burger" @@ -691,6 +752,8 @@ name = "burger" desc = "The cornerstone of every nutritious breakfast." icon_state = "hburger" + filling_color = "#D63C3C" + New() ..() reagents.add_reagent("nutriment", 6) @@ -700,6 +763,8 @@ name = "Fillet -o- Carp Sandwich" desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp." icon_state = "fishburger" + filling_color = "#FFDEFE" + New() ..() reagents.add_reagent("nutriment", 6) @@ -710,6 +775,8 @@ name = "Tofu Burger" desc = "What.. is that meat?" icon_state = "tofuburger" + filling_color = "#FFFEE0" + New() ..() reagents.add_reagent("nutriment", 6) @@ -719,6 +786,8 @@ name = "roburger" desc = "The lettuce is the only organic component. Beep." icon_state = "roburger" + filling_color = "#CCCCCC" + New() ..() reagents.add_reagent("nanites", 2) @@ -728,7 +797,9 @@ name = "roburger" desc = "This massive patty looks like poison. Beep." icon_state = "roburger" + filling_color = "#CCCCCC" volume = 100 + New() ..() reagents.add_reagent("nanites", 100) @@ -738,6 +809,8 @@ name = "xenoburger" desc = "Smells caustic. Tastes like heresy." icon_state = "xburger" + filling_color = "#43DE18" + New() ..() reagents.add_reagent("nutriment", 8) @@ -747,6 +820,8 @@ name = "Clown Burger" desc = "This tastes funny..." icon_state = "clownburger" + filling_color = "#FF00FF" + New() ..() /* @@ -761,6 +836,8 @@ name = "Mime Burger" desc = "Its taste defies language." icon_state = "mimeburger" + filling_color = "#FFFFFF" + New() ..() reagents.add_reagent("nutriment", 6) @@ -771,6 +848,8 @@ desc = "That's all you can say!" icon_state = "omelette" trash = /obj/item/trash/plate + filling_color = "#FFF9A8" + //var/herp = 0 New() ..() @@ -808,6 +887,8 @@ name = "Muffin" desc = "A delicious and spongy little cake" icon_state = "muffin" + filling_color = "#E0CF9B" + New() ..() reagents.add_reagent("nutriment", 6) @@ -818,6 +899,7 @@ desc = "Just like back home, on clown planet! HONK!" icon_state = "pie" trash = /obj/item/trash/plate + filling_color = "#FBFFB8" /obj/item/weapon/reagent_containers/food/snacks/pie/New() ..() @@ -847,6 +929,8 @@ desc = "Mmm, waffles" icon_state = "waffles" trash = /obj/item/trash/waffles + filling_color = "#E6DEB5" + New() ..() reagents.add_reagent("nutriment", 8) @@ -857,6 +941,8 @@ desc = "The only good recipe for eggplant." icon_state = "eggplantparm" trash = /obj/item/trash/plate + filling_color = "#4D2F5E" + New() ..() reagents.add_reagent("nutriment", 6) @@ -867,6 +953,8 @@ desc = "Not made of people. Honest." //Totally people. icon_state = "soylent_green" trash = /obj/item/trash/waffles + filling_color = "#B8E6B5" + New() ..() reagents.add_reagent("nutriment", 10) @@ -877,6 +965,8 @@ desc = "Not made of people. Honest." //Actually honest for once. icon_state = "soylent_yellow" trash = /obj/item/trash/waffles + filling_color = "#E6FA61" + New() ..() reagents.add_reagent("nutriment", 10) @@ -888,6 +978,8 @@ icon_state = "meatpie" desc = "An old barber recipe, very delicious!" trash = /obj/item/trash/plate + filling_color = "#948051" + New() ..() reagents.add_reagent("nutriment", 10) @@ -898,6 +990,8 @@ icon_state = "meatpie" desc = "A delicious tofu pie." trash = /obj/item/trash/plate + filling_color = "#FFFEE0" + New() ..() reagents.add_reagent("nutriment", 10) @@ -907,6 +1001,8 @@ name = "amanita pie" desc = "Sweet and tasty poison pie." icon_state = "amanita_pie" + filling_color = "#FFCCCC" + New() ..() reagents.add_reagent("nutriment", 5) @@ -918,6 +1014,8 @@ name = "plump pie" desc = "I bet you love stuff made out of plump helmets!" icon_state = "plump_pie" + filling_color = "#B8279B" + New() ..() if(prob(10)) @@ -935,6 +1033,8 @@ icon_state = "xenomeatpie" desc = "A delicious meatpie. Probably heretical." trash = /obj/item/trash/plate + filling_color = "#43DE18" + New() ..() reagents.add_reagent("nutriment", 10) @@ -945,6 +1045,8 @@ desc = "A savory dish of alien wing wang in soy." icon_state = "wingfangchu" trash = /obj/item/trash/snack_bowl + filling_color = "#43DE18" + New() ..() reagents.add_reagent("nutriment", 6) @@ -956,6 +1058,8 @@ icon_state = "kabob" desc = "A human meat, on a stick." trash = /obj/item/stack/rods + filling_color = "#A85340" + New() ..() reagents.add_reagent("nutriment", 8) @@ -966,6 +1070,8 @@ icon_state = "kabob" desc = "Delicious meat, on a stick." trash = /obj/item/stack/rods + filling_color = "#A85340" + New() ..() reagents.add_reagent("nutriment", 8) @@ -976,6 +1082,8 @@ icon_state = "kabob" desc = "Vegan meat, on a stick." trash = /obj/item/stack/rods + filling_color = "#FFFEE0" + New() ..() reagents.add_reagent("nutriment", 8) @@ -986,6 +1094,8 @@ desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!" icon_state = "cubancarp" trash = /obj/item/trash/plate + filling_color = "#E9ADFF" + New() ..() reagents.add_reagent("nutriment", 6) @@ -999,6 +1109,8 @@ icon_state = "popcorn" trash = /obj/item/trash/popcorn var/unpopped = 0 + filling_color = "#FFFAD4" + New() ..() unpopped = rand(1,10) @@ -1016,6 +1128,8 @@ icon_state = "sosjerky" desc = "Beef jerky made from the finest space cows." trash = /obj/item/trash/sosjerky + filling_color = "#631212" + New() ..() reagents.add_reagent("nutriment", 4) @@ -1026,6 +1140,8 @@ icon_state = "4no_raisins" desc = "Best raisins in the universe. Not sure why." trash = /obj/item/trash/raisins + filling_color = "#343834" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1034,6 +1150,8 @@ name = "Space Twinkie" icon_state = "space_twinkie" desc = "Guaranteed to survive longer then you will." + filling_color = "#FFE591" + New() ..() reagents.add_reagent("sugar", 4) @@ -1044,6 +1162,8 @@ icon_state = "cheesie_honkers" desc = "Bite sized cheesie snacks that will honk all over your mouth" trash = /obj/item/trash/cheesie + filling_color = "#FFA305" + New() ..() reagents.add_reagent("nutriment", 4) @@ -1053,6 +1173,8 @@ name = "Syndi-Cakes" icon_state = "syndi_cakes" desc = "An extremely moist snack cake that tastes just as good after being nuked." + filling_color = "#FF5D05" + trash = /obj/item/trash/syndi_cakes New() ..() @@ -1064,6 +1186,8 @@ name = "Loaded Baked Potato" desc = "Totally baked." icon_state = "loadedbakedpotato" + filling_color = "#9C7A68" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1074,6 +1198,8 @@ desc = "AKA: French Fries, Freedom Fries, etc" icon_state = "fries" trash = /obj/item/trash/plate + filling_color = "#EDDD00" + New() ..() reagents.add_reagent("nutriment", 4) @@ -1084,6 +1210,8 @@ desc = "Dope from a soy." icon_state = "soydope" trash = /obj/item/trash/plate + filling_color = "#C4BF76" + New() ..() reagents.add_reagent("nutriment", 2) @@ -1093,6 +1221,8 @@ name = "Spagetti" desc = "Now thats a nice pasta!" icon_state = "spagetti" + filling_color = "#EDDD00" + New() ..() reagents.add_reagent("nutriment", 1) @@ -1103,6 +1233,8 @@ desc = "Fries. Covered in cheese. Duh." icon_state = "cheesyfries" trash = /obj/item/trash/plate + filling_color = "#EDDD00" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1112,6 +1244,8 @@ name = "Fortune cookie" desc = "A true prophecy in each cookie!" icon_state = "fortune_cookie" + filling_color = "#E8E79E" + New() ..() reagents.add_reagent("nutriment", 3) @@ -1121,6 +1255,8 @@ name = "Burned mess" desc = "Someone should be demoted from chef for this." icon_state = "badrecipe" + filling_color = "#211F02" + New() ..() reagents.add_reagent("toxin", 1) @@ -1132,6 +1268,8 @@ desc = "A piece of hot spicy meat." icon_state = "meatstake" trash = /obj/item/trash/plate + filling_color = "#7A3D11" + New() ..() reagents.add_reagent("nutriment", 4) @@ -1144,6 +1282,8 @@ desc = "Jello gelatin, from Alfred Hubbard's cookbook" icon_state = "spacylibertyduff" trash = /obj/item/trash/snack_bowl + filling_color = "#42B873" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1155,6 +1295,8 @@ desc = "Looks curiously toxic" icon_state = "amanitajelly" trash = /obj/item/trash/snack_bowl + filling_color = "#ED0758" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1167,6 +1309,8 @@ desc = "It's all twisted up!" icon_state = "poppypretzel" bitesize = 2 + filling_color = "#916E36" + New() ..() reagents.add_reagent("nutriment", 5) @@ -1178,6 +1322,8 @@ desc = "You've got balls kid, BALLS!" icon_state = "meatballsoup" trash = /obj/item/trash/snack_bowl + filling_color = "#785210" + New() ..() reagents.add_reagent("nutriment", 8) @@ -1188,6 +1334,8 @@ name = "slime soup" desc = "If no water is available, you may substitute tears." icon_state = "slimesoup" + filling_color = "#C4DBA0" + New() ..() reagents.add_reagent("slimejelly", 5) @@ -1198,6 +1346,8 @@ name = "Tomato soup" desc = "Smells like copper" icon_state = "tomatosoup" + filling_color = "#FF0000" + New() ..() reagents.add_reagent("nutriment", 2) @@ -1209,6 +1359,8 @@ name = "Clown's Tears" desc = "Not very funny." icon_state = "clownstears" + filling_color = "#C4FBFF" + New() ..() reagents.add_reagent("nutriment", 4) @@ -1221,6 +1373,8 @@ desc = "A true vegan meal" //TODO icon_state = "vegetablesoup" trash = /obj/item/trash/snack_bowl + filling_color = "#AFC4B5" + New() ..() reagents.add_reagent("nutriment", 8) @@ -1232,6 +1386,8 @@ desc = "To think, the botanist would've beat you to death with one of these." icon_state = "nettlesoup" trash = /obj/item/trash/snack_bowl + filling_color = "#AFC4B5" + New() ..() reagents.add_reagent("nutriment", 8) @@ -1244,6 +1400,8 @@ desc = "The mystery is, why aren't you eating it?" icon_state = "mysterysoup" trash = /obj/item/trash/snack_bowl + filling_color = "#F082FF" + New() ..() var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10) @@ -1289,6 +1447,8 @@ desc = "I wish this was soup." icon_state = "wishsoup" trash = /obj/item/trash/snack_bowl + filling_color = "#D1F4FF" + New() ..() reagents.add_reagent("water", 10) @@ -1302,6 +1462,8 @@ desc = "A five alarm Texan Chili!" icon_state = "hotchili" trash = /obj/item/trash/snack_bowl + filling_color = "#FF3C00" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1314,6 +1476,8 @@ name = "Cold Chili" desc = "This slush is barely a liquid!" icon_state = "coldchili" + filling_color = "#2B00FF" + trash = /obj/item/trash/snack_bowl New() ..() @@ -1344,6 +1508,8 @@ desc = "Just add water!" icon_state = "monkeycube" bitesize = 12 + filling_color = "#ADAC7F" + var/wrapped = 0 var/monkey_type = null @@ -1419,6 +1585,8 @@ name = "Spell Burger" desc = "This is absolutely Ei Nath." icon_state = "spellburger" + filling_color = "#D505FF" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1428,6 +1596,8 @@ name = "Big Bite Burger" desc = "Forget the Big Mac. THIS is the future!" icon_state = "bigbiteburger" + filling_color = "#E3D681" + New() ..() reagents.add_reagent("nutriment", 14) @@ -1438,6 +1608,8 @@ desc = "Viva La Mexico!" icon_state = "enchiladas" trash = /obj/item/trash/tray + filling_color = "#A36A1F" + New() ..() reagents.add_reagent("nutriment",8) @@ -1449,6 +1621,8 @@ desc = "Eeee Eee!" icon_state = "monkeysdelight" trash = /obj/item/trash/tray + filling_color = "#5C3C11" + New() ..() reagents.add_reagent("nutriment", 10) @@ -1461,6 +1635,8 @@ name = "Baguette" desc = "Bon appetit!" icon_state = "baguette" + filling_color = "#E3D796" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1472,6 +1648,8 @@ name = "Fish and Chips" desc = "I do say so myself chap." icon_state = "fishandchips" + filling_color = "#E3D796" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1483,6 +1661,8 @@ desc = "A grand creation of meat, cheese, bread, and several leaves of lettuce! Arthur Dent would be proud." icon_state = "sandwich" trash = /obj/item/trash/plate + filling_color = "#D9BE29" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1493,6 +1673,8 @@ desc = "Now if you only had a pepper bar." icon_state = "toastedsandwich" trash = /obj/item/trash/plate + filling_color = "#D9BE29" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1504,6 +1686,8 @@ desc = "Goes great with Tomato soup!" icon_state = "toastedsandwich" trash = /obj/item/trash/plate + filling_color = "#D9BE29" + New() ..() reagents.add_reagent("nutriment", 7) @@ -1514,6 +1698,8 @@ desc = "Drinking this feels like being a vampire! A tomato vampire..." icon_state = "tomatosoup" trash = /obj/item/trash/snack_bowl + filling_color = "#D92929" + New() ..() reagents.add_reagent("nutriment", 5) @@ -1525,6 +1711,8 @@ desc = "Waffles from Roffle. Co." icon_state = "rofflewaffles" trash = /obj/item/trash/waffles + filling_color = "#FF00F7" + New() ..() reagents.add_reagent("nutriment", 8) @@ -1535,6 +1723,8 @@ name = "Stew" desc = "A nice and warm stew. Healthy and strong." icon_state = "stew" + filling_color = "#9E673A" + New() ..() reagents.add_reagent("nutriment", 10) @@ -1548,6 +1738,8 @@ desc = "A slice of bread covered with delicious jam." icon_state = "jellytoast" trash = /obj/item/trash/plate + filling_color = "#B572AB" + New() ..() reagents.add_reagent("nutriment", 1) @@ -1567,6 +1759,8 @@ name = "Jelly Burger" desc = "Culinary delight..?" icon_state = "jellyburger" + filling_color = "#B572AB" + New() ..() reagents.add_reagent("nutriment", 5) @@ -1608,6 +1802,8 @@ desc = "A plain dish of noodles, this sucks." icon_state = "spagettiboiled" trash = /obj/item/trash/plate + filling_color = "#FCEE81" + New() ..() reagents.add_reagent("nutriment", 2) @@ -1618,6 +1814,8 @@ desc = "A boring dish of boring rice." icon_state = "boiledrice" trash = /obj/item/trash/snack_bowl + filling_color = "#FFFBDB" + New() ..() reagents.add_reagent("nutriment", 2) @@ -1628,6 +1826,8 @@ desc = "Where's the Jam!" icon_state = "rpudding" trash = /obj/item/trash/snack_bowl + filling_color = "#FFFBDB" + New() ..() reagents.add_reagent("nutriment", 4) @@ -1638,6 +1838,8 @@ desc = "Spaghetti and crushed tomatoes. Just like your abusive father used to make!" icon_state = "pastatomato" trash = /obj/item/trash/plate + filling_color = "#DE4545" + New() ..() reagents.add_reagent("nutriment", 6) @@ -1649,6 +1851,8 @@ desc = "Now thats a nic'e meatball!" icon_state = "meatballspagetti" trash = /obj/item/trash/plate + filling_color = "#DE4545" + New() ..() reagents.add_reagent("nutriment", 8) @@ -1658,6 +1862,8 @@ name = "Spesslaw" desc = "A lawyers favourite" icon_state = "spesslaw" + filling_color = "#DE4545" + New() ..() reagents.add_reagent("nutriment", 8) @@ -1667,6 +1873,8 @@ name = "Poppy Pretzel" desc = "A large soft pretzel full of POP!" icon_state = "poppypretzel" + filling_color = "#AB7D2E" + New() ..() reagents.add_reagent("nutriment", 5) @@ -1677,6 +1885,8 @@ desc = "Tasty fries from fresh Carrots." icon_state = "carrotfries" trash = /obj/item/trash/plate + filling_color = "#FAA005" + New() ..() reagents.add_reagent("nutriment", 3) @@ -1687,6 +1897,8 @@ name = "Super Bite Burger" desc = "This is a mountain of a burger. FOOD!" icon_state = "superbiteburger" + filling_color = "#CCA26A" + New() ..() reagents.add_reagent("nutriment", 40) @@ -1696,6 +1908,8 @@ name = "Candied Apple" desc = "An apple coated in sugary sweetness." icon_state = "candiedapple" + filling_color = "#F21873" + New() ..() reagents.add_reagent("nutriment", 3) @@ -1705,6 +1919,8 @@ name = "Apple Pie" desc = "A pie containing sweet sweet love...or apple." icon_state = "applepie" + filling_color = "#E0EDC5" + New() ..() reagents.add_reagent("nutriment", 4) @@ -1715,6 +1931,8 @@ name = "Cherry Pie" desc = "Taste so good, make a grown man cry." icon_state = "cherrypie" + filling_color = "#FF525A" + New() ..() reagents.add_reagent("nutriment", 4) @@ -1724,6 +1942,8 @@ name = "Two Bread" desc = "It is very bitter and winy." icon_state = "twobread" + filling_color = "#DBCC9A" + New() ..() reagents.add_reagent("nutriment", 2) @@ -1734,6 +1954,8 @@ desc = "You wish you had some peanut butter to go with this..." icon_state = "jellysandwich" trash = /obj/item/trash/plate + filling_color = "#9E3A78" + New() ..() reagents.add_reagent("nutriment", 2) @@ -1762,6 +1984,8 @@ name = "mint" desc = "it is only wafer thin." icon_state = "mint" + filling_color = "#F2F2F2" + New() ..() reagents.add_reagent("minttoxin", 1) @@ -1772,6 +1996,8 @@ desc = "A delicious and hearty mushroom soup." icon_state = "mushroomsoup" trash = /obj/item/trash/snack_bowl + filling_color = "#E386BF" + New() ..() reagents.add_reagent("nutriment", 8) @@ -1781,6 +2007,8 @@ name = "plump helmet biscuit" desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour." icon_state = "phelmbiscuit" + filling_color = "#CFB4C4" + New() ..() if(prob(10)) @@ -1798,6 +2026,8 @@ desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat." icon_state = "chawanmushi" trash = /obj/item/trash/snack_bowl + filling_color = "#F0F2E4" + New() ..() reagents.add_reagent("nutriment", 5) @@ -1808,6 +2038,8 @@ desc = "Wait, how do you spell it again..?" icon_state = "beetsoup" trash = /obj/item/trash/snack_bowl + filling_color = "#FAC9FF" + New() ..() switch(rand(1,6)) @@ -1831,6 +2063,8 @@ desc = "A proper salad, basic and simple, with little bits of carrot, tomato and apple intermingled. Vegan!" icon_state = "herbsalad" trash = /obj/item/trash/snack_bowl + filling_color = "#76B87F" + New() ..() reagents.add_reagent("nutriment", 8) @@ -1841,6 +2075,8 @@ desc = "It's just a salad of questionable 'herbs' with meatballs and fried potato slices. Nothing suspicious about it." icon_state = "validsalad" trash = /obj/item/trash/snack_bowl + filling_color = "#76B87F" + New() ..() reagents.add_reagent("nutriment", 8) @@ -1851,6 +2087,8 @@ desc = "A tasty dessert that won't make it through a metal detector." icon_state = "gappletart" trash = /obj/item/trash/plate + filling_color = "#FFFF00" + New() ..() reagents.add_reagent("nutriment", 8) @@ -1868,6 +2106,7 @@ icon_state = "meatbread" slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice slices_num = 5 + filling_color = "#FF7575" New() ..() reagents.add_reagent("nutriment", 30) @@ -1878,6 +2117,7 @@ desc = "A slice of delicious meatbread." icon_state = "meatbreadslice" trash = /obj/item/trash/plate + filling_color = "#FF7575" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread @@ -1886,6 +2126,7 @@ icon_state = "xenomeatbread" slice_path = /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice slices_num = 5 + filling_color = "#8AFF75" New() ..() reagents.add_reagent("nutriment", 30) @@ -1896,6 +2137,7 @@ desc = "A slice of delicious meatbread. Extra Heretical." icon_state = "xenobreadslice" trash = /obj/item/trash/plate + filling_color = "#8AFF75" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread @@ -1904,6 +2146,7 @@ icon_state = "bananabread" slice_path = /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice slices_num = 5 + filling_color = "#EDE5AD" New() ..() reagents.add_reagent("banana", 20) @@ -1915,6 +2158,7 @@ desc = "A slice of delicious banana bread." icon_state = "bananabreadslice" trash = /obj/item/trash/plate + filling_color = "#EDE5AD" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread @@ -1923,6 +2167,7 @@ icon_state = "tofubread" slice_path = /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice slices_num = 5 + filling_color = "#F7FFE0" New() ..() reagents.add_reagent("nutriment", 30) @@ -1933,6 +2178,7 @@ desc = "A slice of delicious tofubread." icon_state = "tofubreadslice" trash = /obj/item/trash/plate + filling_color = "#F7FFE0" bitesize = 2 @@ -1942,6 +2188,7 @@ icon_state = "carrotcake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice slices_num = 5 + filling_color = "#FFD675" New() ..() reagents.add_reagent("nutriment", 25) @@ -1953,6 +2200,7 @@ desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie." icon_state = "carrotcake_slice" trash = /obj/item/trash/plate + filling_color = "#FFD675" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake @@ -1961,6 +2209,7 @@ icon_state = "braincake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/braincakeslice slices_num = 5 + filling_color = "#E6AEDB" New() ..() reagents.add_reagent("nutriment", 25) @@ -1972,6 +2221,7 @@ desc = "Lemme tell you something about prions. THEY'RE DELICIOUS." icon_state = "braincakeslice" trash = /obj/item/trash/plate + filling_color = "#E6AEDB" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake @@ -1980,6 +2230,7 @@ icon_state = "cheesecake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice slices_num = 5 + filling_color = "#FAF7AF" New() ..() reagents.add_reagent("nutriment", 25) @@ -1990,6 +2241,7 @@ desc = "Slice of pure cheestisfaction" icon_state = "cheesecake_slice" trash = /obj/item/trash/plate + filling_color = "#FAF7AF" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake @@ -1998,6 +2250,7 @@ icon_state = "plaincake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice slices_num = 5 + filling_color = "#F7EDD5" New() ..() reagents.add_reagent("nutriment", 20) @@ -2007,6 +2260,7 @@ desc = "Just a slice of cake, it is enough for everyone." icon_state = "plaincake_slice" trash = /obj/item/trash/plate + filling_color = "#F7EDD5" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake @@ -2015,6 +2269,7 @@ icon_state = "orangecake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/orangecakeslice slices_num = 5 + filling_color = "#FADA8E" New() ..() reagents.add_reagent("nutriment", 20) @@ -2024,6 +2279,7 @@ desc = "Just a slice of cake, it is enough for everyone." icon_state = "orangecake_slice" trash = /obj/item/trash/plate + filling_color = "#FADA8E" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake @@ -2032,6 +2288,7 @@ icon_state = "limecake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/limecakeslice slices_num = 5 + filling_color = "#CBFA8E" New() ..() reagents.add_reagent("nutriment", 20) @@ -2041,6 +2298,7 @@ desc = "Just a slice of cake, it is enough for everyone." icon_state = "limecake_slice" trash = /obj/item/trash/plate + filling_color = "#CBFA8E" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake @@ -2049,6 +2307,7 @@ icon_state = "lemoncake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice slices_num = 5 + filling_color = "#FAFA8E" New() ..() reagents.add_reagent("nutriment", 20) @@ -2058,6 +2317,7 @@ desc = "Just a slice of cake, it is enough for everyone." icon_state = "lemoncake_slice" trash = /obj/item/trash/plate + filling_color = "#FAFA8E" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake @@ -2066,6 +2326,7 @@ icon_state = "chocolatecake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice slices_num = 5 + filling_color = "#805930" New() ..() reagents.add_reagent("nutriment", 20) @@ -2075,6 +2336,7 @@ desc = "Just a slice of cake, it is enough for everyone." icon_state = "chocolatecake_slice" trash = /obj/item/trash/plate + filling_color = "#805930" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel @@ -2083,6 +2345,7 @@ icon_state = "cheesewheel" slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge slices_num = 5 + filling_color = "#FFF700" New() ..() reagents.add_reagent("nutriment", 20) @@ -2092,6 +2355,7 @@ name = "Cheese wedge" desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far." icon_state = "cheesewedge" + filling_color = "#FFF700" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake @@ -2100,6 +2364,7 @@ icon_state = "birthdaycake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice slices_num = 5 + filling_color = "#FFD6D6" New() ..() reagents.add_reagent("nutriment", 20) @@ -2111,6 +2376,7 @@ desc = "A slice of your birthday" icon_state = "birthdaycakeslice" trash = /obj/item/trash/plate + filling_color = "#FFD6D6" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread @@ -2119,6 +2385,8 @@ icon_state = "bread" slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice slices_num = 5 + filling_color = "#FFE396" + New() ..() reagents.add_reagent("nutriment", 6) @@ -2129,6 +2397,7 @@ desc = "A slice of home." icon_state = "breadslice" trash = /obj/item/trash/plate + filling_color = "#FFE396" bitesize = 2 @@ -2138,6 +2407,7 @@ icon_state = "creamcheesebread" slice_path = /obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice slices_num = 5 + filling_color = "#FFF896" New() ..() reagents.add_reagent("nutriment", 20) @@ -2148,6 +2418,7 @@ desc = "A slice of yum!" icon_state = "creamcheesebreadslice" trash = /obj/item/trash/plate + filling_color = "#FFF896" bitesize = 2 @@ -2155,6 +2426,7 @@ name = "Watermelon Slice" desc = "A slice of watery goodness." icon_state = "watermelonslice" + filling_color = "#FF3867" bitesize = 2 @@ -2164,6 +2436,7 @@ icon_state = "applecake" slice_path = /obj/item/weapon/reagent_containers/food/snacks/applecakeslice slices_num = 5 + filling_color = "#EBF5B8" New() ..() reagents.add_reagent("nutriment", 15) @@ -2173,6 +2446,7 @@ desc = "A slice of heavenly cake." icon_state = "applecakeslice" trash = /obj/item/trash/plate + filling_color = "#EBF5B8" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie @@ -2181,6 +2455,8 @@ icon_state = "pumpkinpie" slice_path = /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice slices_num = 5 + filling_color = "#F5B951" + New() ..() reagents.add_reagent("nutriment", 15) @@ -2190,12 +2466,14 @@ desc = "A slice of pumpkin pie, with whipped cream on top. Perfection." icon_state = "pumpkinpieslice" trash = /obj/item/trash/plate + filling_color = "#F5B951" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/cracker name = "Cracker" desc = "It's a salted cracker." icon_state = "cracker" + filling_color = "#F5DEB8" New() ..() @@ -2207,6 +2485,7 @@ /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza slices_num = 6 + filling_color = "#BAA14C" /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita name = "Margherita" @@ -2224,6 +2503,7 @@ name = "Margherita slice" desc = "A slice of the most cheezy pizza in galaxy" icon_state = "pizzamargheritaslice" + filling_color = "#BAA14C" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza @@ -2242,6 +2522,7 @@ name = "Meatpizza slice" desc = "A slice of " //TODO: icon_state = "meatpizzaslice" + filling_color = "#BAA14C" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza @@ -2259,6 +2540,7 @@ name = "Mushroompizza slice" desc = "Maybe it is the last slice of pizza in your life." icon_state = "mushroompizzaslice" + filling_color = "#BAA14C" bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza @@ -2278,6 +2560,7 @@ name = "Vegetable pizza slice" desc = "A slice of the most green pizza of all pizzas not containing green ingredients " icon_state = "vegetablepizzaslice" + filling_color = "#BAA14C" bitesize = 2 /obj/item/pizzabox @@ -2461,6 +2744,8 @@ desc = "It's like an enormous, leathery carrot. With an eye." icon_state = "dionaroast" trash = /obj/item/trash/plate + filling_color = "#75754B" + New() ..() reagents.add_reagent("nutriment", 6) diff --git a/code/modules/reagents/reagent_containers/food/snacks/grown.dm b/code/modules/reagents/reagent_containers/food/snacks/grown.dm index 2c59a75ae86..b28ec8dbbf9 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/grown.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/grown.dm @@ -113,6 +113,7 @@ desc = "Needs some butter!" icon_state = "corn" potency = 40 + filling_color = "#FFEE00" trash = /obj/item/weapon/corncob New() @@ -126,6 +127,7 @@ name = "cherries" desc = "Great for toppings!" icon_state = "cherry" + filling_color = "#FF0000" gender = PLURAL New() ..() @@ -140,6 +142,7 @@ desc = "Long-used as a symbol of rest, peace, and death." icon_state = "poppy" potency = 30 + filling_color = "#CC6464" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -153,6 +156,7 @@ desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten’d not thy breath.\"" icon_state = "harebell" potency = 1 + filling_color = "#D4B2C9" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -165,6 +169,7 @@ desc = "Boil 'em! Mash 'em! Stick 'em in a stew!" icon_state = "potato" potency = 25 + filling_color = "#E6E8DA" New() ..() reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) @@ -189,6 +194,7 @@ name = "bunch of grapes" desc = "Nutritious!" icon_state = "grapes" + filling_color = "#A332AD" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -202,6 +208,7 @@ desc = "Nutritious!" icon_state = "greengrapes" potency = 25 + filling_color = "#A6FFA3" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -215,6 +222,7 @@ desc = "Ewwwwwwwwww. Cabbage." icon_state = "cabbage" potency = 25 + filling_color = "#A2B5A1" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -226,6 +234,7 @@ name = "bunch of berries" desc = "Nutritious!" icon_state = "berrypile" + filling_color = "#C2C9FF" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -237,6 +246,7 @@ name = "clump of plastellium" desc = "Hmm, needs some processing" icon_state = "plastellium" + filling_color = "#C4C4C4" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -247,8 +257,9 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/shand seed = "/obj/item/seeds/shandseed" name = "S'rendarr's Hand leaf" - desc = "A leaf sample from a lowland thicket shrub, often hid in by prey and predator to staunch their wounds and conceal their scent, allowing the plant to spread far on it's native Ahdomai. Smells strongly like wax." + desc = "A leaf sample from a lowland thicket shrub, often hid in by prey and predator to staunch their wounds and conceal their scent, allowing the plant to spread far on its native Ahdomai. Smells strongly like wax." icon_state = "shand" + filling_color = "#70C470" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -260,6 +271,7 @@ name = "sprig of Messa's Tear" desc = "A mountain climate herb with a soft, cold blue flower, known to contain an abundance of chemicals in it's flower useful to treating burns- Bad for the allergic to pollen." icon_state = "mtear" + filling_color = "#70C470" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -293,6 +305,7 @@ desc = "Nutritious!" var/light_on = 1 var/brightness_on = 2 //luminosity when on + filling_color = "#D3FF9E" icon_state = "glowberrypile" New() ..() @@ -320,6 +333,7 @@ desc = "Fattening... Mmmmm... chucklate." icon_state = "cocoapod" potency = 50 + filling_color = "#9C8E54" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -333,6 +347,7 @@ desc = "Sickly sweet." icon_state = "sugarcane" potency = 50 + filling_color = "#C0C9AD" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -345,6 +360,7 @@ icon_state = "poisonberrypile" gender = PLURAL potency = 15 + filling_color = "#B422C7" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -359,6 +375,7 @@ icon_state = "deathberrypile" gender = PLURAL potency = 50 + filling_color = "#4E0957" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -373,6 +390,7 @@ desc = "This is a plant containing various healing chemicals." icon_state = "ambrosiavulgaris" potency = 10 + filling_color = "#125709" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -389,6 +407,7 @@ desc = "Eating this makes you feel immortal!" icon_state = "ambrosiadeus" potency = 10 + filling_color = "#229E11" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -405,6 +424,7 @@ desc = "It's a little piece of Eden." icon_state = "apple" potency = 15 + filling_color = "#DFE88B" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -418,6 +438,7 @@ desc = "It's a little piece of Eden." icon_state = "apple" potency = 15 + filling_color = "#B3BD5E" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -431,6 +452,7 @@ desc = "Emblazoned upon the apple is the word 'Kallisti'." icon_state = "goldapple" potency = 15 + filling_color = "#F5CB42" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -450,6 +472,7 @@ desc = "It's full of watery goodness." icon_state = "watermelon" potency = 10 + filling_color = "#FA2863" slice_path = /obj/item/weapon/reagent_containers/food/snacks/watermelonslice slices_num = 5 New() @@ -464,6 +487,7 @@ desc = "It's large and scary." icon_state = "pumpkin" potency = 10 + filling_color = "#FAB728" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -485,6 +509,7 @@ desc = "It's so sour, your face will twist." icon_state = "lime" potency = 20 + filling_color = "#28FA59" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -497,6 +522,7 @@ desc = "When life gives you lemons, be grateful they aren't limes." icon_state = "lemon" potency = 20 + filling_color = "#FAF328" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -509,6 +535,7 @@ desc = "It's an tangy fruit." icon_state = "orange" potency = 20 + filling_color = "#FAAD28" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -521,6 +548,7 @@ desc = "You can't beat white-beet." icon_state = "whitebeet" potency = 15 + filling_color = "#FFFCCC" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -535,6 +563,7 @@ icon = 'icons/obj/items.dmi' icon_state = "banana" item_state = "banana" + filling_color = "#FCF695" trash = /obj/item/weapon/bananapeel New() @@ -550,6 +579,7 @@ name = "chili" desc = "It's spicy! Wait... IT'S BURNING ME!!" icon_state = "chilipepper" + filling_color = "#FF0000" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -567,6 +597,7 @@ name = "eggplant" desc = "Maybe there's a chicken inside?" icon_state = "eggplant" + filling_color = "#550F5C" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -578,6 +609,7 @@ name = "soybeans" desc = "It's pretty bland, but oh the possibilities..." gender = PLURAL + filling_color = "#E6E8B7" icon_state = "soybeans" New() ..() @@ -590,6 +622,7 @@ name = "tomato" desc = "I say to-mah-to, you say tom-mae-to." icon_state = "tomato" + filling_color = "#FF0000" potency = 10 New() ..() @@ -610,6 +643,7 @@ desc = "I say to-mah-to, you say tom-mae-to... OH GOD IT'S EATING MY LEGS!!" icon_state = "killertomato" potency = 10 + filling_color = "#FF0000" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -639,6 +673,7 @@ desc = "So bloody...so...very...bloody....AHHHH!!!!" icon_state = "bloodtomato" potency = 10 + filling_color = "#FF0000" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -662,6 +697,7 @@ desc = "I say blue-mah-to, you say blue-mae-to." icon_state = "bluetomato" potency = 10 + filling_color = "#586CFC" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -697,6 +733,7 @@ desc = "Sigh... wheat... a-grain?" gender = PLURAL icon_state = "wheat" + filling_color = "#F7E186" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -709,6 +746,7 @@ desc = "Rice to see you." gender = PLURAL icon_state = "rice" + filling_color = "#FFF8DB" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -720,6 +758,7 @@ name = "kudzu pod" desc = "Pueraria Virallis: An invasive species with vines that rapidly creep and wrap around whatever they contact." icon_state = "kudzupod" + filling_color = "#59691B" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -733,6 +772,7 @@ desc = "It's a mutant strain of chili" icon_state = "icepepper" potency = 20 + filling_color = "#66CEED" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -751,6 +791,7 @@ desc = "It's good for the eyes!" icon_state = "carrot" potency = 10 + filling_color = "#FFC400" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -764,6 +805,7 @@ desc = "Ganoderma lucidum: A special fungus believed to help relieve stress." icon_state = "reishi" potency = 10 + filling_color = "#FF4800" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -784,6 +826,7 @@ desc = "Amanita Muscaria: Learn poisonous mushrooms by heart. Only pick mushrooms you know." icon_state = "amanita" potency = 10 + filling_color = "#FF0000" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -804,6 +847,7 @@ desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amatoxins." icon_state = "angel" potency = 35 + filling_color = "#FFDEDE" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -824,6 +868,7 @@ desc = "Psilocybe Semilanceata: Liberate yourself!" icon_state = "libertycap" potency = 15 + filling_color = "#F714BE" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -841,6 +886,7 @@ name = "plump-helmet" desc = "Plumus Hellmus: Plump, soft and s-so inviting~" icon_state = "plumphelmet" + filling_color = "#F714BE" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -852,6 +898,7 @@ name = "walking mushroom" desc = "Plumus Locomotus: The beginning of the great walk." icon_state = "walkingmushroom" + filling_color = "#FFBFEF" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -880,6 +927,7 @@ name = "chanterelle cluster" desc = "Cantharellus Cibarius: These jolly yellow little shrooms sure look tasty!" icon_state = "chanterelle" + filling_color = "#FFE991" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -891,6 +939,7 @@ name = "glowshroom cluster" desc = "Mycena Bregprox: This species of mushroom glows in the dark. Or does it?" icon_state = "glowshroom" + filling_color = "#DAFF91" New() ..() spawn(5) //So potency can be set in the proc that creates these crops @@ -988,6 +1037,7 @@ icon_state = "bluespacetomato" potency = 20 origin_tech = "bluespace=3" + filling_color = "#91F8FF" New() ..() spawn(5) //So potency can be set in the proc that creates these crops diff --git a/code/modules/reagents/reagent_containers/food/snacks/meat.dm b/code/modules/reagents/reagent_containers/food/snacks/meat.dm index cc9af086000..5a4dacbf05c 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/meat.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/meat.dm @@ -3,6 +3,7 @@ desc = "A slab of meat" icon_state = "meat" health = 180 + filling_color = "#FF1C1C" New() ..() reagents.add_reagent("nutriment", 3) From 7653678556aefe75a73c0b224a6e891a54cfcac0 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 11 Jan 2014 02:35:22 +1030 Subject: [PATCH 03/20] Added sandwich topping and filler mask. --- icons/obj/food.dmi | Bin 89903 -> 89957 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index a0bfb172ea459ba8e413728a82dabc4d0a9df973..d2abe08214a8e58b12a01bd41420be695c01d140 100644 GIT binary patch delta 54001 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 ?Ph;xM}OCnK4!PPi{#Y#k;MeGlpG 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 C3xJl+;NG->UlKR52Yyt)?}bXDqINK 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 z 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 T0g_uZ00000NkvXXu0mjf-G(Nq delta 53962 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

Cr@NEHV$Uk*^lxEv@+Y;%8vlF!ra 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 From 68410f98f529d5737ae20a2a5e50d6bcf087cfeb Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 11 Jan 2014 02:35:51 +1030 Subject: [PATCH 04/20] Ticked sandwich file that I accidentally included in prior commit. Sandwiches are now a thing that can be made from bread slices. --- baystation12.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/baystation12.dme b/baystation12.dme index 3844b4a46d7..227cf0d3122 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1144,6 +1144,7 @@ #include "code\modules\reagents\reagent_containers\food\cans.dm" #include "code\modules\reagents\reagent_containers\food\condiment.dm" #include "code\modules\reagents\reagent_containers\food\drinks.dm" +#include "code\modules\reagents\reagent_containers\food\sandwich.dm" #include "code\modules\reagents\reagent_containers\food\snacks.dm" #include "code\modules\reagents\reagent_containers\food\drinks\bottle.dm" #include "code\modules\reagents\reagent_containers\food\drinks\drinkingglass.dm" From 212eed7e1c6db48f29f4d8257592d21c52acab08 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 11 Jan 2014 02:47:12 +1030 Subject: [PATCH 05/20] Icon fixes, shards hidden in food will now lacerate random body parts because damage code is weird. Stop eating chocolate cake sandwich with your left food. --- .../reagent_containers/food/sandwich.dm | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/sandwich.dm b/code/modules/reagents/reagent_containers/food/sandwich.dm index 12cc0c253f9..48decfb6968 100644 --- a/code/modules/reagents/reagent_containers/food/sandwich.dm +++ b/code/modules/reagents/reagent_containers/food/sandwich.dm @@ -66,7 +66,7 @@ var/image/T = new(src.icon, "sandwich_top") T.pixel_x = pick(list(-1,0,1)) - T.pixel_y = (ingredients.len * 2)+3 + T.pixel_y = (ingredients.len * 2)+1 overlays += T name = lowertext("[fullname] sandwich") @@ -80,4 +80,22 @@ /obj/item/weapon/reagent_containers/food/snacks/csandwich/examine() ..() - usr << "\blue You think you can see [pick(ingredients)] in there." \ No newline at end of file + var/obj/item/O = pick(contents) + usr << "\blue You think you can see [O.name] in there." + +/obj/item/weapon/reagent_containers/food/snacks/csandwich/attack(mob/M as mob, mob/user as mob, def_zone) + + var/obj/item/shard + for(var/obj/item/O in contents) + if(istype(O,/obj/item/weapon/shard)) + shard = O + break + + var/mob/living/H + if(istype(M,/mob/living)) + H = M + + if(H && shard && M == user) //This needs a check for feeding the food to other people, but that could be abusable. + H << "\red You lacerate your mouth on a [shard.name] in the sandwich!" + H.adjustBruteLoss(5) //TODO: Target head if human. + ..() \ No newline at end of file From 5cddea72f083996c8fb3699aa7eaef28a6d408ae Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 11 Jan 2014 02:50:49 +1030 Subject: [PATCH 06/20] Colour fix for bread slices. --- code/modules/reagents/reagent_containers/food/snacks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index a712b236c7d..4476eb6d4f1 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -2397,7 +2397,7 @@ desc = "A slice of home." icon_state = "breadslice" trash = /obj/item/trash/plate - filling_color = "#FFE396" + filling_color = "#D27332" bitesize = 2 From bc6561b9e4e392deaa69facc5057217864d22388 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Fri, 10 Jan 2014 15:59:40 -0600 Subject: [PATCH 07/20] Runtime fix for people that jump back in their body before hitting respawn or just stay in their body for 30 minutes. Who does that? People that cause runtimes, that's who! (Jerks) --- code/modules/mob/mob.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5cd8c2b68e2..750f6209567 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -348,10 +348,11 @@ var/list/slot_equipment_priority = list( \ return else var/deathtime = world.time - src.timeofdeath - var/mob/dead/observer/G = src - if(G.has_enabled_antagHUD == 1 && config.antag_hud_restricted) - usr << "\blue Upon using the antagHUD you forfeighted the ability to join the round." - return + if(istype(src,/mob/dead/observer)) + var/mob/dead/observer/G = src + if(G.has_enabled_antagHUD == 1 && config.antag_hud_restricted) + usr << "\blue Upon using the antagHUD you forfeighted the ability to join the round." + return var/deathtimeminutes = round(deathtime / 600) var/pluralcheck = "minute" if(deathtimeminutes == 0) From 511988253644afa6a917459c954f9df3063070f4 Mon Sep 17 00:00:00 2001 From: LightningIron Date: Fri, 10 Jan 2014 20:36:20 -0600 Subject: [PATCH 08/20] Fixes #4286. --- code/modules/research/designs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index e73434a2f39..81a3633a5a8 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1451,7 +1451,7 @@ datum/design/chemsprayer build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000) reliability_base = 100 - build_path = "/obj/item/weapon/chemsprayer" + build_path = "/obj/item/weapon/reagent_containers/chemsprayer" datum/design/rapidsyringe name = "Rapid Syringe Gun" From cbd3f280af6e39c7b36cd10159ffb32ea5ede733 Mon Sep 17 00:00:00 2001 From: LightningIron Date: Fri, 10 Jan 2014 20:43:27 -0600 Subject: [PATCH 09/20] Forgot to include the /spray/ part of the chemsprayer path. --- code/modules/research/designs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 81a3633a5a8..db72f590c78 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1451,7 +1451,7 @@ datum/design/chemsprayer build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000) reliability_base = 100 - build_path = "/obj/item/weapon/reagent_containers/chemsprayer" + build_path = "/obj/item/weapon/reagent_containers/spray/chemsprayer" datum/design/rapidsyringe name = "Rapid Syringe Gun" From b3bfc9684ddc1d6cb8f84e7c1975c2374fb632c5 Mon Sep 17 00:00:00 2001 From: LightningIron Date: Fri, 10 Jan 2014 20:58:20 -0600 Subject: [PATCH 10/20] Made APC modules cost 50m/50g from autolathe, on par with other engineering modules. --- code/defines/obj/weapon.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index b84388f5838..8842350f041 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -393,7 +393,9 @@ /obj/item/weapon/module/power_control name = "power control module" icon_state = "power_mod" - desc = "Heavy-duty switching circuits for power control." + desc = "Heavy-duty switching circuits for power control." + m_amt = 50 + g_amt = 50 /obj/item/weapon/module/id_auth name = "\improper ID authentication module" From 909928f3f9925222c7dd1a09d3a6bcfb25d9f71c Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Sat, 11 Jan 2014 18:14:51 +1300 Subject: [PATCH 11/20] Plasma glass stacking fix --- code/game/objects/items/stacks/sheets/glass.dm | 2 +- code/modules/mining/machine_stacking.dm | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 5d5c9415d43..0e79b891898 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -305,7 +305,7 @@ /obj/item/stack/sheet/glass/plasmaglass name = "plasma glass" desc = "A very strong and very resistant sheet of a plasma-glass alloy." - singular_name = "glass sheet" + singular_name = "plasma glass sheet" icon_state = "sheet-plasmaglass" g_amt = 7500 origin_tech = "materials=3;plasma=2" diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index ccdcc56e642..86f844f6237 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -273,14 +273,6 @@ ore_uranium+= O:amount del(O) continue - if (istype(O,/obj/item/stack/sheet/glass)) - ore_glass+= O:amount - del(O) - continue - if (istype(O,/obj/item/stack/sheet/rglass)) - ore_rglass+= O:amount - del(O) - continue if (istype(O,/obj/item/stack/sheet/glass/plasmaglass)) ore_plasmaglass+= O:amount del(O) @@ -289,6 +281,14 @@ ore_plasmarglass+= O:amount del(O) continue + if (istype(O,/obj/item/stack/sheet/glass)) + ore_glass+= O:amount + del(O) + continue + if (istype(O,/obj/item/stack/sheet/rglass)) + ore_rglass+= O:amount + del(O) + continue if (istype(O,/obj/item/stack/sheet/plasteel)) ore_plasteel+= O:amount del(O) From 350c1500cfefc59087dc084264e1d6791e275be4 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 11 Jan 2014 11:32:44 -0700 Subject: [PATCH 12/20] Patches some logic holes in ZAS, specifically rebuilding and deletion. Fixes #4273 --- code/ZAS/ZAS_Zones.dm | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/code/ZAS/ZAS_Zones.dm b/code/ZAS/ZAS_Zones.dm index eb7b05079c7..e2b45ac5590 100644 --- a/code/ZAS/ZAS_Zones.dm +++ b/code/ZAS/ZAS_Zones.dm @@ -28,6 +28,11 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs var/progress = "nothing" +/datum/gas_mixture/zone + Del() + CRASH("Something tried to delete a zone's air!") + . = ..() + //CREATION AND DELETION /zone/New(turf/start) . = ..() @@ -47,7 +52,8 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs //Generate the gas_mixture for use in txhis zone by using the average of the gases //defined at startup. - air = new + //Changed to try and find the source of the error. + air = new /datum/gas_mixture/zone() air.group_multiplier = contents.len for(var/turf/simulated/T in contents) if(!T.air) @@ -102,6 +108,10 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs C.A.zone = null if(C.B.zone == src) C.B.zone = null + if(C.zone_A == src) + C.zone_A = null + if(C.zone_B == src) + C.zone_B = null direct_connections = null //Ensuring the zone list doesn't get clogged with null values. @@ -182,6 +192,10 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs if(!unsim_air_needs_update && air_unsim) //if air_unsim doesn't exist, we need to create it even if we don't need an update. return + //Tempfix. + if(!air) + return + unsim_air_needs_update = 0 if(!air_unsim) @@ -768,6 +782,9 @@ zone/proc/Rebuild() final_arrangement[current_identifier] = list(current) else + //Sanity check. + if(!islist(final_arrangement[current_identifier])) + final_arrangement[current_identifier] = list() final_arrangement[current_identifier] += current //lazy but fast From 1f50cae6c22ec2bb20bdcba7e553df1cf7864dda Mon Sep 17 00:00:00 2001 From: "Mark Aherne (Faerdan)" Date: Sun, 12 Jan 2014 01:28:03 +0000 Subject: [PATCH 13/20] SMES NanoUI * Converted SMES to NanoUI. --- code/modules/client/client procs.dm | 1 + code/modules/power/smes.dm | 175 ++++++++++------------------ nano/templates/smes.tmpl | 79 +++++++++++++ 3 files changed, 144 insertions(+), 111 deletions(-) create mode 100644 nano/templates/smes.tmpl diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index eabee2ba46d..cd63e415a44 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -255,6 +255,7 @@ 'nano/templates/dna_modifier.tmpl', 'nano/templates/telescience_console.tmpl', 'nano/templates/pda.tmpl', + 'nano/templates/smes.tmpl', 'nano/templates/uplink.tmpl', 'nano/images/uiBackground.png', 'nano/images/uiIcons16.png', diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index efe77a439eb..9ceeb4e21e4 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -21,7 +21,7 @@ var/chargecount = 0 var/chargelevel = 50000 var/online = 1 - var/n_tag = null + var/name_tag = null var/obj/machinery/power/terminal/terminal = null //Holders for powerout event. var/last_output = 0 @@ -122,7 +122,6 @@ if(last_disp != chargedisplay() || last_chrg != charging || last_onln != online) updateicon() - updateDialog() return // called after all power processes are finished @@ -164,48 +163,45 @@ /obj/machinery/power/smes/attack_ai(mob/user) add_fingerprint(user) - if(stat & BROKEN) return - interact(user) + ui_interact(user) /obj/machinery/power/smes/attack_hand(mob/user) add_fingerprint(user) - if(stat & BROKEN) return - interact(user) + ui_interact(user) + + +/obj/machinery/power/smes/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) - -/obj/machinery/power/smes/interact(mob/user) - if(get_dist(src, user) > 1 && !istype(user, /mob/living/silicon)) - user.unset_machine() - user << browse(null, "window=smes") + if(stat & BROKEN) return - user.set_machine(src) - - var/t = "SMES Power Storage Unit [n_tag? "([n_tag])" : null]


"
-
-	t += "Stored capacity : [round(100.0*charge/capacity, 0.1)]%

" - - t += "Input: [charging ? "Charging" : "Not Charging"] [chargemode ? "Auto
Off" : "Auto Off "]
" - - - t += "Input level: M - - - [add_lspace(chargelevel,5)] + + + M
" - - t += "

" - - t += "Output: [online ? "Online Offline" : "Online Offline "]
" - - t += "Output level: M - - - [add_lspace(output,5)] + + + M
" - - t += "Output load: [round(loaddemand)] W
" - - t += "

Close" - - t += "" - user << browse(t, "window=smes;size=460x300") - onclose(user, "smes") - return + // this is the data which will be sent to the ui + var/data[0] + data["nameTag"] = name_tag + data["storedCapacity"] = round(100.0*charge/capacity, 0.1) + data["charging"] = charging + data["chargeMode"] = chargemode + data["chargeLevel"] = chargelevel + data["chargeMax"] = SMESMAXCHARGELEVEL + data["outputOnline"] = online + data["outputLevel"] = output + data["outputMax"] = SMESMAXOUTPUT + data["outputLoad"] = round(loaddemand) + // update the ui if it exists, returns null if no ui is passed/found + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + if (!ui) + // the ui does not exist, so we'll create a new() one + // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm + ui = new(user, src, ui_key, "smes.tmpl", "SMES Power Storage Unit", 540, 380) + // when the ui is first opened this is the data it will use + ui.set_initial_data(data) + // open the new ui window + ui.open() + // auto update every Master Controller tick + ui.set_auto_update(1) + /obj/machinery/power/smes/Topic(href, href_list) ..() @@ -219,85 +215,42 @@ //world << "[href] ; [href_list[href]]" - if (( usr.machine==src && ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai))) + if (!istype(src.loc, /turf) || istype(usr, /mob/living/silicon/ai)) + return 0 // Do not update ui + if( href_list["cmode"] ) + chargemode = !chargemode + if(!chargemode) + charging = 0 + updateicon() - if( href_list["close"] ) - usr << browse(null, "window=smes") - usr.unset_machine() - return + else if( href_list["online"] ) + online = !online + updateicon() + else if( href_list["input"] ) + switch( href_list["input"] ) + if("min") + chargelevel = 0 + if("max") + chargelevel = SMESMAXCHARGELEVEL //30000 + if("set") + chargelevel = input(usr, "Enter new input level (0-[SMESMAXCHARGELEVEL])", "SMES Input Power Control", chargelevel) as num + chargelevel = max(0, min(SMESMAXCHARGELEVEL, chargelevel)) // clamp to range - else if( href_list["cmode"] ) - chargemode = !chargemode - if(!chargemode) - charging = 0 - updateicon() - - else if( href_list["online"] ) - online = !online - updateicon() - else if( href_list["input"] ) - - var/i = text2num(href_list["input"]) - - var/d = 0 - switch(i) - if(-4) - chargelevel = 0 - if(4) - chargelevel = SMESMAXCHARGELEVEL //30000 - - if(1) - d = 100 - if(-1) - d = -100 - if(2) - d = 1000 - if(-2) - d = -1000 - if(3) - d = 10000 - if(-3) - d = -10000 - - chargelevel += d - chargelevel = max(0, min(SMESMAXCHARGELEVEL, chargelevel)) // clamp to range - - else if( href_list["output"] ) - - var/i = text2num(href_list["output"]) - - var/d = 0 - switch(i) - if(-4) - output = 0 - if(4) - output = SMESMAXOUTPUT //30000 - - if(1) - d = 100 - if(-1) - d = -100 - if(2) - d = 1000 - if(-2) - d = -1000 - if(3) - d = 10000 - if(-3) - d = -10000 - - output += d - output = max(0, min(SMESMAXOUTPUT, output)) // clamp to range - - investigate_log("input/output; [chargelevel>output?"":""][chargelevel]/[output] | Output-mode: [online?"on":"off"] | Input-mode: [chargemode?"auto":"off"] by [usr.key]","singulo") - src.updateUsrDialog() - - else - usr << browse(null, "window=smes") - usr.unset_machine() - return + else if( href_list["output"] ) + switch( href_list["output"] ) + if("min") + output = 0 + if("max") + output = SMESMAXOUTPUT //30000 + if("set") + output = input(usr, "Enter new output level (0-[SMESMAXOUTPUT])", "SMES Output Power Control", output) as num + output = max(0, min(SMESMAXOUTPUT, output)) // clamp to range + investigate_log("input/output; [chargelevel>output?"":""][chargelevel]/[output] | Output-mode: [online?"on":"off"] | Input-mode: [chargemode?"auto":"off"] by [usr.key]","singulo") + + return 1 + /obj/machinery/power/smes/proc/ion_act() if(src.z == 1) diff --git a/nano/templates/smes.tmpl b/nano/templates/smes.tmpl new file mode 100644 index 00000000000..c4431cd805c --- /dev/null +++ b/nano/templates/smes.tmpl @@ -0,0 +1,79 @@ +
+
+ Stored Capacity: +
+
+ {{:~displayBar(storedCapacity, 0, 100, charging ? 'good' : 'average')}} +
+ {{:~round(storedCapacity)}}% +
+
+
+ +

Input Management

+
+
+ Charge Mode: +
+
+ {{:~link('Auto', 'refresh', {'cmode' : 1}, chargeMode ? 'selected' : null)}}{{:~link('Off', 'close', {'cmode' : 1}, chargeMode ? null : 'selected')}} +   + {{if charging}} + [Charging] + {{else}} + [Not Charging] + {{/if}} +
+
+ +
+
+ Input Level: +
+
+ {{:~displayBar(chargeLevel, 0, chargeMax)}} +
+ {{:~link('MIN', null, {'input' : 'min'}, (chargeLevel > 0) ? null : 'disabled')}} + {{:~link('MAX', null, {'input' : 'max'}, (chargeLevel < chargeMax) ? null : 'disabled')}} + {{:~link('SET', null, {'input' : 'set'}, null)}} +
 {{:chargeLevel}} W 
+
+
+
+ +

Output Management

+
+
+ Output Status: +
+
+ {{:~link('Online', 'power', {'online' : 1}, outputOnline ? 'selected' : null)}}{{:~link('Offline', 'close', {'online' : 1}, outputOnline ? null : 'selected')}} +
+
+ +
+
+ Output Level: +
+
+ {{:~displayBar(outputLevel, 0, outputMax)}} +
+ {{:~link('MIN', null, {'output' : 'min'}, (outputLevel > 0) ? null : 'disabled')}} + {{:~link('MAX', null, {'output' : 'max'}, (outputLevel < outputMax) ? null : 'disabled')}} + {{:~link('SET', null, {'output' : 'set'}, null)}} +
 {{:outputLevel}} W 
+
+
+
+ +
+
+ Output Load: +
+
+ {{:~displayBar(outputLoad, 0, outputMax, (outputLoad < outputLevel) ? 'good' : 'average')}} +
+ {{:outputLoad}} W +
+
+
\ No newline at end of file From 167671d5839b930e6c49b02ea1a0fd3535cb46b4 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Sat, 11 Jan 2014 20:09:11 -0600 Subject: [PATCH 14/20] NanoUI PDA optimizations no more sortAtom every tick on every PDA. Should be noticably better on large population servers. --- code/game/objects/items/devices/PDA/PDA.dm | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 2696dd9658e..09300be1210 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -379,21 +379,21 @@ var/global/list/obj/item/device/pda/PDAs = list() data["stationTime"] = worldtime2text() data["newMessage"] = newmessage + if(mode==2) + var/convopdas[0] + var/pdas[0] + var/count = 0 + for (var/obj/item/device/pda/P in sortAtom(PDAs)) + if (!P.owner||P.toff||P == src||P.hidden) continue + if(conversations.Find("\ref[P]")) + convopdas.Add(list(list("Name" = "[P]", "Reference" = "\ref[P]", "Detonate" = "[P.detonate]", "inconvo" = "1"))) + else + pdas.Add(list(list("Name" = "[P]", "Reference" = "\ref[P]", "Detonate" = "[P.detonate]", "inconvo" = "0"))) + count++ - var/convopdas[0] - var/pdas[0] - var/count = 0 - for (var/obj/item/device/pda/P in sortAtom(PDAs)) - if (!P.owner||P.toff||P == src||P.hidden) continue - if(conversations.Find("\ref[P]")) - convopdas.Add(list(list("Name" = "[P]", "Reference" = "\ref[P]", "Detonate" = "[P.detonate]", "inconvo" = "1"))) - else - pdas.Add(list(list("Name" = "[P]", "Reference" = "\ref[P]", "Detonate" = "[P.detonate]", "inconvo" = "0"))) - count++ - - data["convopdas"] = convopdas - data["pdas"] = pdas - data["pda_count"] = count + data["convopdas"] = convopdas + data["pdas"] = pdas + data["pda_count"] = count if(mode==21) data["messagescount"] = tnote.len From 2944fed3a14bd71c762dadc1380cc02343e785e7 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Sun, 12 Jan 2014 20:35:37 +1300 Subject: [PATCH 15/20] Supermatter draw layer - fixes #4255 Supermatter draw layer was set to 70. Changed it to 4 so it's still on top of other objects but not UI layers. --- maps/tgstation2.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index a9870ceb45c..c6fb8919c03 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -6399,7 +6399,7 @@ "ctc" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/engine{name = "Engine Room"}) "ctd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor/shutters{id = "EngineShutter"; name = "Engine Shutters"},/turf/simulated/floor/plating,/area/engine{name = "Engine Room"}) "cte" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engine{name = "Engine Room"}) -"ctf" = (/obj/machinery/power/supermatter{layer = 70},/obj/machinery/mass_driver{id = "enginecore"},/turf/simulated/floor/greengrid,/area/engine{name = "Engine Room"}) +"ctf" = (/obj/machinery/power/supermatter{layer = 4},/obj/machinery/mass_driver{id = "enginecore"},/turf/simulated/floor/greengrid,/area/engine{name = "Engine Room"}) "ctg" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine{name = "Engine Room"}) "cth" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor/shutters{dir = 8; id = "EngineShutter"; name = "Engine Shutters"},/turf/simulated/floor/plating,/area/engine{name = "Engine Room"}) "cti" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engine{name = "Engine Room"}) From 214fbeee992203d5f74a5e72e05b46d52e87e219 Mon Sep 17 00:00:00 2001 From: "Mark Aherne (Faerdan)" Date: Sun, 12 Jan 2014 15:30:25 +0000 Subject: [PATCH 16/20] NanoUI assets are now sent to the client automatically. * NanoUI now finds and sends it's assets to the client (css, images, javascript and templates). Part of my effort to make creating NanoUIs as simple as possible. This removes the need to add new NanoUI assets (such as templates) to the client send_resources proc. --- code/modules/client/client procs.dm | 27 ++++----------------------- code/modules/nano/nanomanager.dm | 29 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index cd63e415a44..1d955a9e74b 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -242,30 +242,11 @@ //send resources to the client. It's here in its own proc so we can move it around easiliy if need be /client/proc/send_resources() // preload_vox() //Causes long delays with initial start window and subsequent windows when first logged in. + + // Send NanoUI resources to this client + nanomanager.send_resources(src) + getFiles( - 'nano/js/libraries.min.js', - 'nano/js/nano_update.js', - 'nano/js/nano_config.js', - 'nano/js/nano_base_helpers.js', - 'nano/css/shared.css', - 'nano/css/icons.css', - 'nano/templates/chem_dispenser.tmpl', - 'nano/templates/cryo.tmpl', - 'nano/templates/geoscanner.tmpl', - 'nano/templates/dna_modifier.tmpl', - 'nano/templates/telescience_console.tmpl', - 'nano/templates/pda.tmpl', - 'nano/templates/smes.tmpl', - 'nano/templates/uplink.tmpl', - 'nano/images/uiBackground.png', - 'nano/images/uiIcons16.png', - 'nano/images/uiIcons24.png', - 'nano/images/uiBackground-Syndicate.png', - 'nano/images/uiLinkPendingIcon.gif', - 'nano/images/uiMaskBackground.png', - 'nano/images/uiNoticeBackground.jpg', - 'nano/images/uiTitleFluff.png', - 'nano/images/uiTitleFluff-Syndicate.png', 'html/search.js', 'html/panels.css', 'icons/pda_icons/pda_atmos.png', diff --git a/code/modules/nano/nanomanager.dm b/code/modules/nano/nanomanager.dm index b7b45060bb7..782bfa23085 100644 --- a/code/modules/nano/nanomanager.dm +++ b/code/modules/nano/nanomanager.dm @@ -197,4 +197,33 @@ oldMob.open_uis.Cut() return 1 // success + + /** + * Sends all nano assets to the client + * This is called on user login + * + * @param client /client The user's client + * + * @return nothing + */ + +#define NANO_CSS_PATH "nano/css/" +#define NANO_IMAGES_PATH "nano/images/" +#define NANO_JS_PATH "nano/js/" +#define NANO_TEMPLATES_PATH "nano/templates/" + +/datum/nanomanager/proc/send_resources(client) + var/list/css = flist(NANO_CSS_PATH) + var/list/images = flist(NANO_IMAGES_PATH) + var/list/js = flist(NANO_JS_PATH) + var/list/templates = flist(NANO_TEMPLATES_PATH) + + for(var/file in css) + client << browse_rsc(file(NANO_CSS_PATH + file)) + for(var/file in images) + client << browse_rsc(file(NANO_IMAGES_PATH + file)) + for(var/file in js) + client << browse_rsc(file(NANO_JS_PATH + file)) + for(var/file in templates) + client << browse_rsc(file(NANO_TEMPLATES_PATH + file)) From 9ae2e42268e1ae9e69b1956bb84739966eb057c0 Mon Sep 17 00:00:00 2001 From: Mloc Date: Sun, 12 Jan 2014 19:20:28 +0000 Subject: [PATCH 17/20] Added a .travis.yml file for Travis. Signed-off-by: Mloc --- .travis.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000000..a3287d2074d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,19 @@ +language: dm + +env: + BYOND_MAJOR="503" + BYOND_MINOR="1224" + +before_install: + - sudo apt-get update -qq + - sudo apt-get install libc6:i386 libgcc1:i386 libstdc++6:i386 -qq + +install: + - curl "http://www.byond.com/download/build/${BYOND_MAJOR}/${BYOND_MAJOR}.${BYOND_MINOR}_byond_linux.zip" -o byond.zip + - unzip byond.zip + - cd byond + - sudo make install + - cd .. + +script: + - DreamMaker baystation12.dme From c9191faa1454a6345ad96b17e76f1af5e43a22b0 Mon Sep 17 00:00:00 2001 From: "Mark Aherne (Faerdan)" Date: Sun, 12 Jan 2014 20:07:48 +0000 Subject: [PATCH 18/20] NanoUI Caching and SMES tweaks * Made NanoUI caching code neater, added check for directories (which are ignored). * Moved SET to between MIN and MAX on SMES UI. --- code/modules/nano/nanomanager.dm | 29 ++++++++++++----------------- nano/templates/smes.tmpl | 4 ++-- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/code/modules/nano/nanomanager.dm b/code/modules/nano/nanomanager.dm index 782bfa23085..ae938a9a8a4 100644 --- a/code/modules/nano/nanomanager.dm +++ b/code/modules/nano/nanomanager.dm @@ -207,23 +207,18 @@ * @return nothing */ -#define NANO_CSS_PATH "nano/css/" -#define NANO_IMAGES_PATH "nano/images/" -#define NANO_JS_PATH "nano/js/" -#define NANO_TEMPLATES_PATH "nano/templates/" - /datum/nanomanager/proc/send_resources(client) - var/list/css = flist(NANO_CSS_PATH) - var/list/images = flist(NANO_IMAGES_PATH) - var/list/js = flist(NANO_JS_PATH) - var/list/templates = flist(NANO_TEMPLATES_PATH) + var/list/nano_asset_dirs = list(\ + "nano/css/",\ + "nano/images/",\ + "nano/js/",\ + "nano/templates/"\ + ) - for(var/file in css) - client << browse_rsc(file(NANO_CSS_PATH + file)) - for(var/file in images) - client << browse_rsc(file(NANO_IMAGES_PATH + file)) - for(var/file in js) - client << browse_rsc(file(NANO_JS_PATH + file)) - for(var/file in templates) - client << browse_rsc(file(NANO_TEMPLATES_PATH + file)) + var/list/files = null + for (var/path in nano_asset_dirs) + files = flist(path) + for(var/file in files) + if(copytext(file, length(file)) != "/") // files which end in "/" are actually directories, which we want to ignore + client << browse_rsc(file(path + file)) // send the file to the client diff --git a/nano/templates/smes.tmpl b/nano/templates/smes.tmpl index c4431cd805c..760228e4cd5 100644 --- a/nano/templates/smes.tmpl +++ b/nano/templates/smes.tmpl @@ -34,8 +34,8 @@ {{:~displayBar(chargeLevel, 0, chargeMax)}}
{{:~link('MIN', null, {'input' : 'min'}, (chargeLevel > 0) ? null : 'disabled')}} - {{:~link('MAX', null, {'input' : 'max'}, (chargeLevel < chargeMax) ? null : 'disabled')}} {{:~link('SET', null, {'input' : 'set'}, null)}} + {{:~link('MAX', null, {'input' : 'max'}, (chargeLevel < chargeMax) ? null : 'disabled')}}
 {{:chargeLevel}} W 
@@ -59,8 +59,8 @@ {{:~displayBar(outputLevel, 0, outputMax)}}
{{:~link('MIN', null, {'output' : 'min'}, (outputLevel > 0) ? null : 'disabled')}} - {{:~link('MAX', null, {'output' : 'max'}, (outputLevel < outputMax) ? null : 'disabled')}} {{:~link('SET', null, {'output' : 'set'}, null)}} + {{:~link('MAX', null, {'output' : 'max'}, (outputLevel < outputMax) ? null : 'disabled')}}
 {{:outputLevel}} W 
From 3125911242d910ac5be036013f0029d6b18b69ed Mon Sep 17 00:00:00 2001 From: Mloc Date: Sun, 12 Jan 2014 20:22:33 +0000 Subject: [PATCH 19/20] Fix for Ruby noise in Travis. Signed-off-by: Mloc --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a3287d2074d..87eeb862d56 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,5 @@ -language: dm +#pretending we're C because otherwise ruby will initialize, even with "language: dm". +language: c env: BYOND_MAJOR="503" From 87c246ff0661af9d422cc33370ac45377feda080 Mon Sep 17 00:00:00 2001 From: "Mark Aherne (Faerdan)" Date: Sun, 12 Jan 2014 23:11:49 +0000 Subject: [PATCH 20/20] APC NanoUI * Created new APC UI * Tweaked Chem Master UI width. --- code/modules/power/apc.dm | 223 ++++++++----------- code/modules/reagents/Chemistry-Machinery.dm | 2 +- nano/templates/apc.tmpl | 174 +++++++++++++++ 3 files changed, 265 insertions(+), 134 deletions(-) create mode 100644 nano/templates/apc.tmpl diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 560590cbad0..e46ff88e2ae 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -520,129 +520,87 @@ user << browse(t1, "window=apcwires") onclose(user, "apcwires") - user.set_machine(src) - var/t = "[area.name] APCArea Power Controller ([area.name])
" - - //This goes after the wire stuff. They should be able to fix a physical problem when a wire is cut - if ( (get_dist(src, user) > 1 )) - if (!istype(user, /mob/living/silicon)) - user.unset_machine() - user << browse(null, "window=apc") - return - else if (istype(user, /mob/living/silicon) && src.aidisabled && !src.malfhack) - user << "AI control for this APC interface has been disabled." - user.unset_machine() - user << browse(null, "window=apc") - return - else if (src.malfai) - if ((src.malfai != user && src.malfai != user:parent) && !islinked(user, malfai)) - user << "AI control for this APC interface has been disabled." - user.unset_machine() - user << browse(null, "window=apc") - return - - - if(locked && (!istype(user, /mob/living/silicon))) - t += "(Swipe ID card to unlock inteface.)
" - t += "Main breaker : [operating ? "On" : "Off"]
" - t += "External power : [ main_status ? (main_status ==2 ? "Good" : "Low") : "None"]
" - t += "Power cell: [cell ? "[round(cell.percent())]%" : "Not connected."]" - if(cell) - t += " ([charging ? ( charging == 1 ? "Charging" : "Fully charged" ) : "Not charging"])" - t += " ([chargemode ? "Auto" : "Off"])" - - t += "

Power channels
"
-
-		var/list/L = list ("Off","Off (Auto)", "On", "On (Auto)")
-
-		t += "Equipment:    [add_lspace(lastused_equip, 6)] W : [L[equipment+1]]
" - t += "Lighting: [add_lspace(lastused_light, 6)] W : [L[lighting+1]]
" - t += "Environmental:[add_lspace(lastused_environ, 6)] W : [L[environ+1]]
" - - t += "
Total load: [lastused_light + lastused_equip + lastused_environ] W
" - t += "
Cover lock: [coverlocked ? "Engaged" : "Disengaged"]" - - else - if (!istype(user, /mob/living/silicon)) - t += "(Swipe ID card to lock interface.)
" - t += "Main breaker: [operating ? "On Off" : "On Off" ]
" - t += "External power : [ main_status ? (main_status ==2 ? "Good" : "Low") : "None"]
" - if(cell) - t += "Power cell: [round(cell.percent())]%" - t += " ([charging ? ( charging == 1 ? "Charging" : "Fully charged" ) : "Not charging"])" - t += " ([chargemode ? "Off Auto" : "Off Auto"])" - - else - t += "Power cell: Not connected." - - t += "

Power channels
"
-
-
-		t += "Equipment:    [add_lspace(lastused_equip, 6)] W : "
-		switch(equipment)
-			if(0)
-				t += "Off On Auto"
-			if(1)
-				t += "Off On Auto (Off)"
-			if(2)
-				t += "Off On Auto"
-			if(3)
-				t += "Off On Auto (On)"
-		t +="
" - - t += "Lighting: [add_lspace(lastused_light, 6)] W : " - - switch(lighting) - if(0) - t += "Off On Auto" - if(1) - t += "Off On Auto (Off)" - if(2) - t += "Off On Auto" - if(3) - t += "Off On Auto (On)" - t +="
" - - - t += "Environmental:[add_lspace(lastused_environ, 6)] W : " - switch(environ) - if(0) - t += "Off On Auto" - if(1) - t += "Off On Auto (Off)" - if(2) - t += "Off On Auto" - if(3) - t += "Off On Auto (On)" - - - - t += "
Total load: [lastused_light + lastused_equip + lastused_environ] W
" - t += "
Cover lock: [coverlocked ? "Engaged" : "Disengaged"]" - - - if (istype(user, /mob/living/silicon)) - t += "

Overload lighting circuit
" - if (ticker && ticker.mode) -// world << "there's a ticker" - if(user.mind in ticker.mode.malf_ai) -// world << "ticker says its malf" - if (!src.malfai) - t += "

Override Programming
" - else - t += "

APC Hacked
" - /*if(!src.occupant) - t += "Shunt Core Processes
" - else - t += "Core Processes Uploaded
"*/ - - t += "

Close" - - t += "
" - user << browse(t, "window=apc") - onclose(user, "apc") + // Open the APC NanoUI + ui_interact(user) return +/obj/machinery/power/apc/proc/get_malf_status(mob/user) + if (ticker && ticker.mode && (user.mind in ticker.mode.malf_ai) && istype(user, /mob/living/silicon/ai)) + if (src.malfai == (user:parent ? user:parent : user)) + if (src.occupant == user) + return 3 // 3 = User is shunted in this APC + else if (istype(user.loc, /obj/machinery/power/apc)) + return 4 // 4 = User is shunted in another APC + else + return 2 // 2 = APC hacked by user, and user is in its core. + else + return 1 // 1 = APC not hacked. + else + return 0 // 0 = User is not a Malf AI + +/obj/machinery/power/apc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) + if(!user) + return + + var/list/data = list( + "locked" = locked, + "isOperating" = operating, + "externalPower" = main_status, + "powerCellStatus" = cell ? cell.percent() : null, + "chargeMode" = chargemode, + "chargingStatus" = charging, + "totalLoad" = lastused_equip + lastused_light + lastused_environ, + "coverLocked" = coverlocked, + "siliconUser" = istype(user, /mob/living/silicon), + "malfStatus" = get_malf_status(user), + + "powerChannels" = list( + list( + "title" = "Equipment", + "powerLoad" = lastused_equip, + "status" = equipment, + "topicParams" = list( + "auto" = list("eqp" = 3), + "on" = list("eqp" = 2), + "off" = list("eqp" = 1) + ) + ), + list( + "title" = "Lighting", + "powerLoad" = lastused_light, + "status" = lighting, + "topicParams" = list( + "auto" = list("lgt" = 3), + "on" = list("lgt" = 2), + "off" = list("lgt" = 1) + ) + ), + list( + "title" = "Environment", + "powerLoad" = lastused_environ, + "status" = environ, + "topicParams" = list( + "auto" = list("env" = 3), + "on" = list("env" = 2), + "off" = list("env" = 1) + ) + ) + ) + ) + + // update the ui if it exists, returns null if no ui is passed/found + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) + if (!ui) + // the ui does not exist, so we'll create a new() one + // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm + ui = new(user, src, ui_key, "apc.tmpl", "[area.name] - APC", 520, data["siliconUser"] ? 465 : 440) + // when the ui is first opened this is the data it will use + ui.set_initial_data(data) + // open the new ui window + ui.open() + // auto update every Master Controller tick + ui.set_auto_update(1) + /obj/machinery/power/apc/proc/report() return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])" @@ -754,8 +712,8 @@ istype(user, /mob/living/silicon) || \ istype(user, /mob/living/carbon/monkey) /*&& ticker && ticker.mode.name == "monkey"*/) ) user << "\red You don't have the dexterity to use this [src]!" - user << browse(null, "window=apc") - user.unset_machine() + nanomanager.close_user_uis(user, src) + return 0 if(user.restrained()) user << "\red You must have free hands to use this [src]" @@ -776,13 +734,13 @@ ) if(!loud) user << "\red \The [src] have AI control disabled!" - user << browse(null, "window=apc") - user.unset_machine() + nanomanager.close_user_uis(user, src) + return 0 else if ((!in_range(src, user) || !istype(src.loc, /turf))) - user << browse(null, "window=apc") - user.unset_machine() + nanomanager.close_user_uis(user, src) + return 0 var/mob/living/carbon/human/H = user @@ -800,9 +758,8 @@ if(!(isrobot(usr) && (href_list["apcwires"] || href_list["pulse"]))) if(!can_use(usr, 1)) return - src.add_fingerprint(usr) - if(usingUI) // If we set their machine and they're not using the UI, it'll cause the UI to pop up. - usr.set_machine(src) + src.add_fingerprint(usr) + if (href_list["apcwires"]) var/t1 = text2num(href_list["apcwires"]) if (!( istype(usr.get_active_hand(), /obj/item/weapon/wirecutters) )) @@ -864,12 +821,12 @@ update_icon() update() else if( href_list["close"] ) - usr << browse(null, "window=apc") - usr.unset_machine() + nanomanager.close_user_uis(usr, src) + return else if (href_list["close2"]) usr << browse(null, "window=apcwires") - usr.unset_machine() + return else if (href_list["overload"]) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 776e07e42c1..100882055d2 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -146,7 +146,7 @@ if (!ui) // the ui does not exist, so we'll create a new() one // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "chem_dispenser.tmpl", ui_title, 370, 605) + ui = new(user, src, ui_key, "chem_dispenser.tmpl", ui_title, 380, 650) // when the ui is first opened this is the data it will use ui.set_initial_data(data) // open the new ui window diff --git a/nano/templates/apc.tmpl b/nano/templates/apc.tmpl new file mode 100644 index 00000000000..56c6a1f1eeb --- /dev/null +++ b/nano/templates/apc.tmpl @@ -0,0 +1,174 @@ +
+ {{if siliconUser}} +
+ Interface Lock: +
+
+ {{:~link('Engaged', 'locked', {'toggleaccess' : 1}, locked ? 'selected' : null)}}{{:~link('Disengaged', 'unlocked', {'toggleaccess' : 1}, malfStatus >= 2 ? 'linkOff' : (locked ? null : 'selected'))}} +
+
+ {{else}} + {{if locked}} + Swipe an ID card to unlock this interface. + {{else}} + Swipe an ID card to lock this interface. + {{/if}} + {{/if}} +
+ +
+ +

Power Status

+ +
+
+ Main Breaker: +
+
+ {{if locked && !siliconUser}} + {{if isOperating}} + On + {{else}} + Off + {{/if}} + {{else}} + {{:~link('On', 'power', {'breaker' : 1}, isOperating ? 'selected' : null)}}{{:~link('Off', 'close', {'breaker' : 1}, isOperating ? null : 'selected')}} + {{/if}} +
+
+ +
+
+ External Power: +
+
+ {{if externalPower == 2}} + Good + {{else externalPower == 1}} + Low + {{else}} + None + {{/if}} +
+
+ +
+
+ Power Cell: +
+ {{if powerCellStatus == null}} +
+ Power cell removed. +
+ {{else}} +
+ {{:~round(powerCellStatus*10)/10}}% +
+ {{:~displayBar(powerCellStatus, 0, 100, powerCellStatus >= 50 ? 'good' : powerCellStatus >= 25 ? 'average' : 'bad')}} + {{/if}} +
+ + {{if powerCellStatus != null}} +
+
+ Charge Mode: +
+
+ {{if locked && !siliconUser}} + {{if chargeMode}} + Auto + {{else}} + Off + {{/if}} + {{else}} + {{:~link('Auto', 'refresh', {'cmode' : 1}, chargeMode ? 'selected' : null)}}{{:~link('Off', 'close', {'cmode' : 1}, chargeMode ? null : 'selected')}} + {{/if}} +   + {{if chargingStatus > 1}} + [Fully Charged] + {{else chargingStatus == 1}} + [Charging] + {{else}} + [Not Charging] + {{/if}} +
+
+ {{/if}} + + +

Power Channels

+ + {{for powerChannels}} +
+
+ {{:title}}: +
+
+ {{:powerLoad}} W +
+
+    + {{if status <= 1}} + Off + {{else status >= 2}} + On + {{/if}} + {{if status == 1 || status == 3}} + [Auto] + {{else}} + [Manual] + {{/if}} +
+ {{if !~root.locked || ~root.siliconUser}} +
+ {{:~link('Auto', 'refresh', topicParams.auto, (status == 1 || status == 3) ? 'selected' : null)}} + {{:~link('On', 'power', topicParams.on, (status == 2) ? 'selected' : null)}} + {{:~link('Off', 'close', topicParams.off, (status == 0) ? 'selected' : null)}} +
+ {{/if}} +
+ {{/for}} + +
+
+ Total Load: +
+
+ {{:totalLoad}} W +
+
+ +
 
+ +
+
+ Cover Lock: +
+
+ {{if locked && !siliconUser}} + {{if coverLocked}} + Engaged + {{else}} + Disengaged + {{/if}} + {{else}} + {{:~link('Engaged', 'locked', {'lock' : 1}, coverLocked ? 'selected' : null)}}{{:~link('Disengaged', 'unlocked', {'lock' : 1}, coverLocked ? null : 'selected')}} + {{/if}} +
+
+ + {{if siliconUser}} +

System Overrides

+ +
+ {{:~link('Overload Lighting Circuit', 'lightbulb', {'overload' : 1})}} + {{if malfStatus == 1}} + {{:~link('Override Programming', 'script', {'malfhack' : 1})}} + {{else malfStatus > 1}} +
APC Hacked
+ {{/if}} +
+ {{/if}} + +
+ \ No newline at end of file