diff --git a/code/WorkInProgress/Chemistry-Reagents.dm b/code/WorkInProgress/Chemistry-Reagents.dm index f3fe4ce8842..3332d67b598 100644 --- a/code/WorkInProgress/Chemistry-Reagents.dm +++ b/code/WorkInProgress/Chemistry-Reagents.dm @@ -14,6 +14,7 @@ datum var/reagent_state = SOLID var/data = null var/volume = 0 + var/nutriment_factor = 0 proc reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //By default we have a chance to transfer some @@ -42,7 +43,7 @@ datum return on_mob_life(var/mob/M) - holder.remove_reagent(src.id, 0.4) //By default it slowly disappears. + holder.remove_reagent(src.id, REAGENTS_METABOLISM) //By default it slowly disappears. return on_move(var/mob/M) @@ -1154,10 +1155,24 @@ datum id = "nutriment" description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." reagent_state = SOLID + nutriment_factor = 25 * REAGENTS_METABOLISM on_mob_life(var/mob/M) if(!M) M = holder.my_atom if(prob(50)) M:bruteloss-- - M:nutrition += 10 // For hunger and fatness + M:nutrition += nutriment_factor // For hunger and fatness +/* + // If overeaten - vomit and fall down + // Makes you feel bad but removes reagents and some effects + // from your body + if (M.nutrition > 650) + M.nutrition = rand (250, 400) + M.weakened += rand(2, 10) + M.jitteriness += rand(0, 5) + M.dizziness = max (0, (M.dizziness - rand(0, 15))) + M.druggy = max (0, (M.druggy - rand(0, 15))) + M.toxloss = max (0, (M.toxloss - rand(5, 15))) + M.updatehealth() +*/ ..() return @@ -1166,18 +1181,21 @@ datum id = "soysauce" description = "A salty sauce made from the soy plant." reagent_state = LIQUID + nutriment_factor = 2 * REAGENTS_METABOLISM ketchup name = "Ketchup" id = "ketchup" description = "Ketchup, catsup, whatever. It's tomato paste." reagent_state = LIQUID + nutriment_factor = 5 * REAGENTS_METABOLISM capsaicin name = "Capsaicin Oil" id = "capsaicin" description = "This is what makes chilis hot." reagent_state = LIQUID + nutriment_factor = 5 * REAGENTS_METABOLISM on_mob_life(var/mob/M) if(!M) M = holder.my_atom M:bodytemperature += 5 @@ -1190,6 +1208,7 @@ datum id = "frostoil" description = "A special oil that noticably chills the body. Extraced from Icepeppers." reagent_state = LIQUID + nutriment_factor = 5 * REAGENTS_METABOLISM on_mob_life(var/mob/M) if(!M) M = holder.my_atom M:bodytemperature -= 5 @@ -1202,12 +1221,14 @@ datum id = "sodiumchloride" description = "A salt made of sodium chloride. Commonly used to season food." reagent_state = SOLID + nutriment_factor = 1 * REAGENTS_METABOLISM blackpepper name = "Black Pepper" id = "blackpepper" description = "A power ground from peppercorns. *AAAACHOOO*" reagent_state = SOLID + nutriment_factor = 1 * REAGENTS_METABOLISM amatoxin name = "Amatoxin" @@ -1236,22 +1257,26 @@ datum name = "Sprinkles" id = "sprinkles" description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." + nutriment_factor = 1 * REAGENTS_METABOLISM on_mob_life(var/mob/M) + M:nutrition += nutriment_factor if(istype(M, /mob/living/carbon/human) && M.job in list("Security Officer", "Head of Security", "Detective")) if(!M) M = holder.my_atom M:bruteloss-- M:fireloss-- - M:nutrition++ + M:nutrition += nutriment_factor ..() return + ..() oliveoil name = "Olive Oil" id = "oliveoil" description = "An oil derived from various types of olives. A famous export of Space Italy." reagent_state = LIQUID + nutriment_factor = 20 * REAGENTS_METABOLISM on_mob_life(var/mob/M) - M:nutrition += 20 + M:nutrition += nutriment_factor ..() return reaction_turf(var/turf/T, var/volume) @@ -1290,9 +1315,10 @@ datum id = "berryjuice" description = "A delicious blend of several different kinds of berries." reagent_state = LIQUID + nutriment_factor = 1 * REAGENTS_METABOLISM on_mob_life(var/mob/M) if(!M) M = holder.my_atom - M:nutrition++ + M:nutrition += nutriment_factor ..() return diff --git a/code/WorkInProgress/Chemistry-Tools.dm b/code/WorkInProgress/Chemistry-Tools.dm index 305641a71d3..c5bc4a52fee 100644 --- a/code/WorkInProgress/Chemistry-Tools.dm +++ b/code/WorkInProgress/Chemistry-Tools.dm @@ -729,7 +729,6 @@ playsound(M.loc,'drink.ogg', rand(10,50), 1) return 1 - return 0 attackby(obj/item/I as obj, mob/user as mob) @@ -754,7 +753,6 @@ if(!reagents.total_volume) user << "\red [src] is empty." return - if(target.reagents.total_volume >= target.reagents.maximum_volume) user << "\red you can't add anymore to [target]." return @@ -782,23 +780,26 @@ return 0 if(istype(M, /mob/living/carbon/human)) if(M == user) //If you're eating it yourself. - if (M.nutrition <= 50) + var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25) + if (fullness <= 50) M << "\red You hungrily chew out a piece of [src] and gobble it!" - if (M.nutrition > 50 && M.nutrition <= 150) + if (fullness > 50 && fullness <= 150) M << "\blue You hungrily begin to eat [src]." - if (M.nutrition > 150 && M.nutrition <= 350) + if (fullness > 150 && fullness <= 350) M << "\blue You take a bite of [src]." - if (M.nutrition > 350 && M.nutrition <= 550) + if (fullness > 350 && fullness <= 550) M << "\blue You unwillingly chew a bit of [src]." - if (M.nutrition > (550 * (1 + M.overeatduration / 1000))) // The more he eats - the more he can eat + if (fullness > (550 * (1 + M.overeatduration / 1000))) // The more he eats - the more he can eat M << "\red You cannot force any more of [src] to go down your throat." return 0 else //If you're feeding it to someone else. - for(var/mob/O in viewers(world.view, user)) - if (M.nutrition <= (550 * (1 + M.overeatduration / 1000))) + var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 10) + if (fullness <= (550 * (1 + M.overeatduration / 1000))) + for(var/mob/O in viewers(world.view, user)) O.show_message("\red [user] attempts to feed [M] [src].", 1) - else - O.show_message("\red [user] cannot force anymore of [src] down [M] throat.", 1) + else + for(var/mob/O in viewers(world.view, user)) + O.show_message("\red [user] cannot force anymore of [src] down [M]'s throat.", 1) return 0 if(!do_mob(user, M)) return @@ -1024,7 +1025,7 @@ amount_per_transfer_from_this = 20 flags = FPRINT | OPENCONTAINER New() - var/datum/reagents/R = new/datum/reagents(90) + var/datum/reagents/R = new/datum/reagents(70) reagents = R R.my_atom = src @@ -1051,7 +1052,6 @@ amount_per_transfer_from_this = 10 flags = FPRINT | TABLEPASS | OPENCONTAINER - /obj/item/weapon/reagent_containers/glass/dispenser/surfactant name = "reagent glass (surfactant)" icon_state = "liquid" @@ -1362,7 +1362,7 @@ icon_state = "donut1" New() ..() - reagents.add_reagent("nutriment", 2) + reagents.add_reagent("nutriment", 3) reagents.add_reagent("sprinkles", 1) if(prob(30)) src.icon_state = "donut2" diff --git a/code/defines/obj/clothing.dm b/code/defines/obj/clothing.dm index a63d35a694f..52ccfba8d7f 100644 --- a/code/defines/obj/clothing.dm +++ b/code/defines/obj/clothing.dm @@ -259,6 +259,9 @@ name = "rig helmet" icon_state = "rig" item_state = "rig_helm" + flags = FPRINT | TABLEPASS | HEADSPACE | HEADCOVERSEYES | HEADCOVERSMOUTH + see_face = 0.0 + permeability_coefficient = 0.01 /obj/item/clothing/head/helmet/space/syndicate name = "red space helmet" @@ -695,6 +698,13 @@ desc = "A special suit that protects against hazardous, low pressure environments." icon_state = "rig" item_state = "rig_suit" + gas_transfer_coefficient = 0.01 + w_class = 4//bulky item + flags = FPRINT | TABLEPASS | SUITSPACE + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS + permeability_coefficient = 0.02 + protective_temperature = 1000 + heat_transfer_coefficient = 0.02 /obj/item/clothing/suit/space/syndicate name = "red space suit" diff --git a/code/game/machinery/microwave.dm b/code/game/machinery/microwave.dm index 76381f03ee5..942aadc14cf 100644 --- a/code/game/machinery/microwave.dm +++ b/code/game/machinery/microwave.dm @@ -600,5 +600,4 @@ Please clean it before use!
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc) new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc) del(src) - return - + return \ No newline at end of file diff --git a/code/game/objects/cleaner.dm b/code/game/objects/cleaner.dm index 86fc543231d..c3d76f54d40 100644 --- a/code/game/objects/cleaner.dm +++ b/code/game/objects/cleaner.dm @@ -1,5 +1,5 @@ /obj/mopbucket/New() - var/datum/reagents/R = new/datum/reagents(50) + var/datum/reagents/R = new/datum/reagents(100) reagents = R R.my_atom = src diff --git a/code/game/objects/closets/firecloset.dm b/code/game/objects/closets/firecloset.dm index 465518d4339..cad3dca4210 100644 --- a/code/game/objects/closets/firecloset.dm +++ b/code/game/objects/closets/firecloset.dm @@ -5,7 +5,7 @@ del(src) return - switch (pickweight(list("extinguisher" = 50, "toolbox" = 30, "nothing" = 20))) + switch (pickweight(list("extinguisher" = 40, "toolbox" = 40, "nothing" = 20))) if ("extinguisher") new /obj/item/weapon/extinguisher(src) if ("toolbox") diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 2d0a612f78f..81ce4a34ea6 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -32,6 +32,7 @@ src.verbs += /client/proc/admin_cancel_shuttle // -- Skie src.verbs += /client/proc/air_report src.verbs += /client/proc/air_status + src.verbs += /client/proc/radio_report src.verbs += /client/proc/callproc src.verbs += /client/proc/Cell src.verbs += /client/proc/cmd_admin_alienize @@ -131,6 +132,7 @@ src.verbs += /client/proc/admin_cancel_shuttle // -- Skie src.verbs += /client/proc/air_report src.verbs += /client/proc/air_status + src.verbs += /client/proc/radio_report src.verbs += /client/proc/callproc src.verbs += /client/proc/Cell src.verbs += /client/proc/cmd_admin_alienize @@ -287,6 +289,7 @@ src.verbs += /client/proc/general_report src.verbs += /client/proc/air_report src.verbs += /client/proc/air_status + src.verbs += /client/proc/radio_report src.verbs += /client/proc/fix_next_move src.verbs += /client/proc/toggle_view_range @@ -581,6 +584,7 @@ src.verbs -= /client/proc/general_report src.verbs -= /client/proc/air_report src.verbs -= /client/proc/air_status + src.verbs -= /client/proc/radio_report src.verbs -= /client/proc/toggle_view_range src.verbs -= /obj/admins/proc/toggle_aliens @@ -764,7 +768,7 @@ message_admins("\blue [src.ckey] warned [M.ckey], resulting in a 10 minute autoban.") del(M.client) - del(M) + //del(M) /client/proc/drop_bomb() // Some admin dickery that can probably be done better -- TLE set category = "Special Verbs" @@ -965,6 +969,7 @@ src.verbs += /client/proc/general_report src.verbs += /client/proc/air_report src.verbs += /client/proc/air_status + src.verbs += /client/proc/radio_report src.verbs += /client/proc/fix_next_move src.verbs += /client/proc/toggle_view_range @@ -1047,6 +1052,7 @@ src.verbs += /client/proc/general_report src.verbs += /client/proc/air_report src.verbs += /client/proc/air_status + src.verbs += /client/proc/radio_report src.verbs += /client/proc/fix_next_move src.verbs += /obj/admins/proc/spawn_atom @@ -1115,6 +1121,7 @@ src.verbs += /client/proc/general_report src.verbs += /client/proc/air_report src.verbs += /client/proc/air_status + src.verbs += /client/proc/radio_report src.verbs += /client/proc/fix_next_move src.verbs += /client/proc/toggle_view_range @@ -1382,6 +1389,7 @@ src.verbs -= /client/proc/general_report src.verbs -= /client/proc/air_report src.verbs -= /client/proc/air_status + src.verbs -= /client/proc/radio_report src.verbs += /client/proc/fix_next_move src.verbs += /client/proc/toggle_view_range @@ -1464,6 +1472,7 @@ src.verbs -= /client/proc/general_report src.verbs -= /client/proc/air_report src.verbs -= /client/proc/air_status + src.verbs -= /client/proc/radio_report src.verbs += /client/proc/fix_next_move src.verbs += /obj/admins/proc/spawn_atom @@ -1532,6 +1541,7 @@ src.verbs -= /client/proc/general_report src.verbs -= /client/proc/air_report src.verbs -= /client/proc/air_status + src.verbs -= /client/proc/radio_report src.verbs -= /client/proc/fix_next_move src.verbs += /client/proc/toggle_view_range diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index 20883ea631d..ed9ec32f675 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -109,4 +109,24 @@ message_admins("[key_name_admin(largest_move_mob)] had the largest move delay with [largest_move_time] frames / [largest_move_time/10] seconds!", 1) message_admins("[key_name_admin(largest_click_mob)] had the largest click delay with [largest_click_time] frames / [largest_click_time/10] seconds!", 1) message_admins("world.time = [world.time]", 1) - return \ No newline at end of file + return + + radio_report() + set category = "Debug" + set name = "Radio report" + + var/output = "Radio Report
"/* + for (var/fq in radio_controller.frequencies) + output += "Freq: [fq]
" + var/list/datum/radio_frequency/fqs = radio_controller.frequencies[fq] + output += "  Voice: [fqs.voice.len]
" + output += "  Broadcast: [fqs.broadcast.len]
" + output += "  Tags:
" + for (var/tag in fqs.tags) + var/list/ctag = fqs.tags[tag] + output += "    [tag]: [ctag.len]
" + output += "  Groups:
" + for (var/group in fqs.groups) + var/list/cgroup = fqs.groups[group] + output += "    [group]: [cgroup.len]
"*/ + usr << browse(output,"window=radioreport") diff --git a/code/modules/mob/living/carbon/alien/humanoid/life_new.dm b/code/modules/mob/living/carbon/alien/humanoid/life_new.dm index a1638c8870f..dc8688149b7 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life_new.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life_new.dm @@ -341,7 +341,7 @@ if(reagents) reagents.metabolize(src) - if(src.nutrition > 400 && !(src.mutations & 32)) + if(src.nutrition > 500 && !(src.mutations & 32)) if(prob(5 + round((src.nutrition - 200) / 2))) src << "\red You suddenly feel blubbery!" src.mutations |= 32 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index a411065281f..5a82fb5b693 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -857,9 +857,12 @@ // Commented out so hunger system won't be such shock // Damage and effects from not eating if(src.nutrition <= 50) - src.bruteloss++ + if (prob (0.1)) + src << "\red Your stomach rumbles." if (prob (10)) - src << "You feel very weak" + src.bruteloss++ + if (prob (5)) + src << "You feel very weak." src.weakened += rand(2, 3) */ /* diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 00f54ec995f..3f2666b9137 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -8,7 +8,6 @@ datum/preferences var/midis = 1 var/ooccolor = "#b82e00" var/be_random_name = 0 - var/be_random_look = 0 var/underwear = 1 var/occupation1 = "No Preference" @@ -46,8 +45,28 @@ datum/preferences else real_name = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names))) + proc/randomize_skin_tone() + var/tone + + var/tmp = pickweight ( list ("caucasian" = 55, "afroamerican" = 15, "african" = 10, "latino" = 10, "albino" = 5, "weird" = 5)) + switch (tmp) + if ("caucasian") + tone = -45 + 35 + if ("afroamerican") + tone = -150 + 35 + if ("african") + tone = -200 + 35 + if ("latino") + tone = -90 + 35 + if ("albino") + tone = -1 + 35 + if ("weird") + tone = -(rand (1, 220)) + 35 + + src.s_tone = min(max(tone + rand (-25, 25), -185), 34) + proc/randomize_hair_color(var/target = "hair") - if (prob (50) && target == "facial") // Chance to inherit head color + if (prob (75) && target == "facial") // Chance to inherit hair color r_facial = r_hair g_facial = g_hair b_facial = b_hair @@ -60,29 +79,29 @@ datum/preferences var/col = pick ("blonde", "black", "chestnut", "copper", "brown", "wheat", "old", "punk") switch (col) if ("blonde") - red = 226 - green = 209 - blue = 140 + red = 255 + green = 255 + blue = 0 if ("black") red = 0 green = 0 blue = 0 if ("chestnut") - red = 98 - green = 77 - blue = 60 + red = 153 + green = 102 + blue = 51 if ("copper") - red = 152 - green = 81 - blue = 63 + red = 255 + green = 153 + blue = 0 if ("brown") - red = 73 - green = 52 - blue = 39 + red = 102 + green = 51 + blue = 0 if ("wheat") - red = 210 - green = 191 - blue = 158 + red = 255 + green = 255 + blue = 153 if ("old") red = rand (100, 255) green = red @@ -92,9 +111,9 @@ datum/preferences green = rand (0, 255) blue = rand (0, 255) - red = max(min(red + rand (-10, 10), 255), 0) - green = max(min(green + rand (-10, 10), 255), 0) - blue = max(min(blue + rand (-10, 10), 255), 0) + red = max(min(red + rand (-25, 25), 255), 0) + green = max(min(green + rand (-25, 25), 255), 0) + blue = max(min(blue + rand (-25, 25), 255), 0) switch (target) if ("hair") @@ -122,37 +141,37 @@ datum/preferences green = red blue = red if ("brown") - red = 60 - green = 30 - blue = 19 - if ("chestnut") - red = 127 - green = 79 - blue = 31 - if ("blue") - red = 53 + red = 102 green = 51 - blue = 64 + blue = 0 + if ("chestnut") + red = 153 + green = 102 + blue = 0 + if ("blue") + red = 51 + green = 102 + blue = 204 if ("lightblue") - red = 94 - green = 101 - blue = 115 + red = 102 + green = 204 + blue = 255 if ("green") - red = 115 - green = 114 - blue = 84 + red = 0 + green = 102 + blue = 0 if ("albino") - red = rand (100, 255) - green = rand (0, 70) - blue = rand (0, 70) + red = rand (200, 255) + green = rand (0, 150) + blue = rand (0, 150) if ("weird") red = rand (0, 255) green = rand (0, 255) blue = rand (0, 255) - red = max(min(red + rand (-10, 10), 255), 0) - green = max(min(green + rand (-10, 10), 255), 0) - blue = max(min(blue + rand (-10, 10), 255), 0) + red = max(min(red + rand (-25, 25), 255), 0) + green = max(min(green + rand (-25, 25), 255), 0) + blue = max(min(blue + rand (-25, 25), 255), 0) r_eyes = red g_eyes = green @@ -303,8 +322,9 @@ datum/preferences else dat += "\tNo Preference
" - dat += "
Body" - dat += " (®)
" // Random look + dat += "
Body " + dat += "(®)" // Random look + dat += "
" dat += "Blood Type: [src.b_type]
" dat += "Skin Tone: [-src.s_tone + 35]/220
" @@ -517,7 +537,7 @@ datum/preferences if (new_b_type) src.b_type = new_b_type if ("random") - src.b_type = pick ("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-") + src.b_type = pickweight ( list ("A+" = 31, "A-" = 7, "B+" = 8, "B-" = 2, "AB+" = 2, "AB-" = 1, "O+" = 40, "O-" = 9)) if (link_tags["hair"]) @@ -614,7 +634,7 @@ datum/preferences if (link_tags["s_tone"]) switch(link_tags["s_tone"]) if ("random") - src.s_tone = (-(rand (1, 220))) -35 + randomize_skin_tone() if("input") var/new_tone = input(user, "Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text if (new_tone) @@ -639,10 +659,10 @@ datum/preferences if (link_tags["f_style"]) switch(link_tags["f_style"]) if ("random") - if (src.gender == FEMALE && !prob (1)) - src.f_style = "Shaved" + if (src.gender == FEMALE) + src.f_style = pickweight ( list("Watson" = 1, "Chaplin" = 1, "Selleck" = 1, "Full Beard" = 1, "Long Beard" = 1, "Neckbeard" = 1, "Van Dyke" = 1, "Elvis" = 1, "Abe" = 1, "Chinstrap" = 1, "Hipster" = 1, "Goatee" = 1, "Hogan" = 1, "Shaved" = 100)) else - src.f_style = pick ("Watson", "Chaplin", "Selleck", "Full Beard", "Long Beard", "Neckbeard", "Van Dyke", "Elvis", "Abe", "Chinstrap", "Hipster", "Goatee", "Hogan") + src.f_style = pickweight ( list("Watson" = 1, "Chaplin" = 1, "Selleck" = 1, "Full Beard" = 1, "Long Beard" = 1, "Neckbeard" = 1, "Van Dyke" = 1, "Elvis" = 1, "Abe" = 1, "Chinstrap" = 1, "Hipster" = 1, "Goatee" = 1, "Hogan" = 1, "Shaved" = 10)) if("input") var/new_style = input(user, "Please select facial style", "Character Generation") as null|anything in list("Watson", "Chaplin", "Selleck", "Full Beard", "Long Beard", "Neckbeard", "Van Dyke", "Elvis", "Abe", "Chinstrap", "Hipster", "Goatee", "Hogan", "Shaved") if (new_style) @@ -670,7 +690,7 @@ datum/preferences if(!IsGuestKey(user.key)) switch(link_tags["underwear"]) if ("random") - if (prob (65)) + if (prob (75)) src.underwear = 1 else src.underwear = 0 diff --git a/code/setup.dm b/code/setup.dm index 4ffb1c76433..4200cda27b7 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -19,8 +19,8 @@ //Amount of air needed before pass out/suffocation commences // Factor of how fast mob nutrition decreases -#define HUNGER_FACTOR 0.07 - +#define HUNGER_FACTOR 0.1 +#define REAGENTS_METABOLISM 0.4 #define MINIMUM_AIR_RATIO_TO_SUSPEND 0.05 //Minimum ratio of air that must move to/from a tile to suspend group processing