From fe4cf6e30122afc5f55fb0ed7e6495d300bec675 Mon Sep 17 00:00:00 2001 From: "tronaldnwn@hotmail.com" Date: Wed, 8 Jun 2011 21:18:21 +0000 Subject: [PATCH] Disease update: Trying to add new diseases (still working on them, need to make disease code give the "requires an immunity to another disease to cure this disease" variable) -Ice 9 Rhinovirus - Spanish Inquisition Flu Flu affects monkeys now Fake GBS affects monkeys now Access update: Research director no longer has hydro access, there is no "real" research going on there. HoP doesn't start with surgery or virology access now, desk jockies should stay at the desk. Chemistry update: Reagent Grinder! Grinds reagents out of corn, plasma crystals, uranium, gold, and silver! Will add more later, as needed. The mined reagents will have many chemistry uses soon, but for now they aren't very useful in a ground state right now. Map update: Added Reagent Grinder to chemistry. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1671 316c924e-a436-60f5-8080-3fe189b3f50e --- code/WorkInProgress/Chemistry-Machinery.dm | 172 ++++++++++++++++++++- code/datums/diseases/cold9.dm | 39 +++++ code/datums/diseases/fake_gbs.dm | 2 +- code/datums/diseases/flu.dm | 2 +- code/datums/diseases/fluspanish.dm | 38 +++++ code/game/jobs/access.dm | 6 +- maps/tgstation.2.0.7.dmm | 2 +- tgstation.dme | 3 +- 8 files changed, 254 insertions(+), 10 deletions(-) create mode 100644 code/datums/diseases/cold9.dm create mode 100644 code/datums/diseases/fluspanish.dm diff --git a/code/WorkInProgress/Chemistry-Machinery.dm b/code/WorkInProgress/Chemistry-Machinery.dm index fb61bdf3cc6..6a0ec9f0a80 100644 --- a/code/WorkInProgress/Chemistry-Machinery.dm +++ b/code/WorkInProgress/Chemistry-Machinery.dm @@ -10,8 +10,7 @@ icon_state = "dispenser" var/energy = 25 var/max_energy = 25 - var/list/dispensable_reagents = list("water","oxygen","nitrogen","hydrogen","potassium","sodium","mercury","copper","sulfur","carbon","chlorine","fluorine","phosphorus","lithium","acid","radium","iron","aluminum","silicon","plasma","sugar","ethanol") - + var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine","sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron","copper","mercury","radium","water","ethanol","sugar","acid",) proc recharge() if(stat & BROKEN) return @@ -485,4 +484,171 @@ else ..() - return \ No newline at end of file + return +//////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////// +/obj/machinery/reagentgrinder + name = "Reagent Grinder" + icon = 'kitchen.dmi' + icon_state = "juicer1" + layer = 2.9 + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 5 + active_power_usage = 100 + var/obj/item/weapon/reagent_containers/beaker = null + var/global/list/allowed_items = list ( + /obj/item/stack/sheet/plasma = "plasma", + /obj/item/stack/sheet/plasma = "uranium", + /obj/item/stack/sheet/clown = "banana", + /obj/item/stack/sheet/silver = "silver", + /obj/item/stack/sheet/gold = "gold", + /obj/item/weapon/reagent_containers/food/snacks/grown/corn = "cornoil", + ) + +/obj/machinery/reagentgrinder/New() + beaker = new /obj/item/weapon/reagent_containers/glass/large(src) + +/obj/machinery/reagentgrinder/update_icon() + icon_state = "juicer"+num2text(!isnull(beaker)) + return + + +/obj/machinery/reagentgrinder/attackby(var/obj/item/O as obj, var/mob/user as mob) + if (istype(O,/obj/item/weapon/reagent_containers/glass) || \ + istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass)) + if (beaker) + return 1 + else + user.before_take_item(O) + O.loc = src + beaker = O + src.verbs += /obj/machinery/reagentgrinder/verb/detach + update_icon() + src.updateUsrDialog() + return 0 + if (!is_type_in_list(O, allowed_items)) + user << "Cannot refine into a reagent." + return 1 + user.before_take_item(O) + O.loc = src + src.updateUsrDialog() + return 0 + +/obj/machinery/reagentgrinder/attack_paw(mob/user as mob) + return src.attack_hand(user) + +/obj/machinery/reagentgrinder/attack_ai(mob/user as mob) + return 0 + +/obj/machinery/reagentgrinder/attack_hand(mob/user as mob) + user.machine = src + interact(user) + +/obj/machinery/reagentgrinder/proc/interact(mob/user as mob) // The microwave Menu + var/is_chamber_empty = 0 + var/is_beaker_ready = 0 + var/processing_chamber = "" + var/beaker_contents = "" + + for (var/i in allowed_items) + for (var/obj/item/O in src.contents) + if (!istype(O,i)) + continue + processing_chamber+= "some [O]
" + break + if (!processing_chamber) + is_chamber_empty = 1 + processing_chamber = "Nothing." + if (!beaker) + beaker_contents = "\The [src] has no beaker attached." + else if (!beaker.reagents.total_volume) + beaker_contents = "\The [src] has attached an empty beaker." + is_beaker_ready = 1 + else if (beaker.reagents.total_volume < beaker.reagents.maximum_volume) + beaker_contents = "\The [src] has attached a beaker with something." + is_beaker_ready = 1 + else + beaker_contents = "\The [src] has attached a beaker and beaker is full!" + + var/dat = {" +Processing chamber contains:
+[processing_chamber]
+[beaker_contents]
+"} + if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN))) + dat += "Turn on!
" + if (beaker) + dat += "
Detach a beacker!
" + user << browse("Reagent Grinder[dat]", "window=reagentgrinder") + onclose(user, "reagentgrinder") + return + + +/obj/machinery/reagentgrinder/Topic(href, href_list) + if(..()) + return + usr.machine = src + switch(href_list["action"]) + if ("grind") + grind() + + if ("detach") + detach() + src.updateUsrDialog() + return + +/obj/machinery/reagentgrinder/verb/detach() + set category = "Object" + set name = "Detach Beaker from the grinder" + set src in oview(1) + if (usr.stat != 0) + return + if (!beaker) + return + src.verbs -= /obj/machinery/reagentgrinder/verb/detach + beaker.loc = src.loc + beaker = null + update_icon() + +/obj/machinery/reagentgrinder/proc/get_juice_id(var/obj/item/weapon/reagent_containers/food/snacks/grown/O) + for (var/i in allowed_items) + if (istype(O, i)) + return allowed_items[i] + +/obj/machinery/reagentgrinder/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O) + if (!istype(O)) + return 5 + else if (O.potency == -1) + return 5 + else + return round(5*sqrt(O.potency)) + +/obj/machinery/reagentgrinder/proc/get_grind_id(var/obj/item/stack/sheet/O) + for (var/i in allowed_items) + if (istype(O, i)) + return allowed_items[i] + +/obj/machinery/reagentgrinder/proc/get_grind_amount(var/obj/item/stack/sheet/O) + return 20 + +/obj/machinery/reagentgrinder/proc/grind() + power_change() //it is a portable machine + if(stat & (NOPOWER|BROKEN)) + return + if (!beaker || beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + return + playsound(src.loc, 'juicer.ogg', 50, 1) + for (var/obj/item/weapon/reagent_containers/food/snacks/O in src.contents) + var/r_id = get_juice_id(O) + beaker.reagents.add_reagent(r_id,get_juice_amount(O)) + del(O) + if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break + for (var/obj/item/stack/sheet/O in src.contents) + var/g_id = get_grind_id(O) + beaker.reagents.add_reagent(g_id,get_grind_amount(O)) + del(O) + if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break \ No newline at end of file diff --git a/code/datums/diseases/cold9.dm b/code/datums/diseases/cold9.dm new file mode 100644 index 00000000000..f8af3aab217 --- /dev/null +++ b/code/datums/diseases/cold9.dm @@ -0,0 +1,39 @@ +/datum/disease/cold9 + name = "The Cold" + max_stages = 3 + spread = "On contact" + spread_type = CONTACT_GENERAL + cure = "Common Cold Anti-bodies & Spaceacillin" + cure_id = "spaceacillin" + agent = "ICE9-rhinovirus" + affected_species = list("Human") + desc = "If left untreated the subject will slow, as if partly frozen." + severity = "Moderate" + +/datum/disease/cold/stage_act() + ..() + switch(stage) + if(2) + affected_mob.bodytemperature -= 5 + if(prob(1) && prob(10)) + affected_mob << "\blue You feel better." + affected_mob.virus.cure() + return + if(prob(1)) + affected_mob.emote("sneeze") + if(prob(1)) + affected_mob.emote("cough") + if(prob(1)) + affected_mob << "\red Your throat feels sore." + if(prob(1)) + affected_mob << "\red You feel stiff." + if(3) + affected_mob.bodytemperature -= 10 + if(prob(1)) + affected_mob.emote("sneeze") + if(prob(1)) + affected_mob.emote("cough") + if(prob(1)) + affected_mob << "\red Your throat feels sore." + if(prob(1)) + affected_mob << "\red You feel stiff." \ No newline at end of file diff --git a/code/datums/diseases/fake_gbs.dm b/code/datums/diseases/fake_gbs.dm index 3a264f5ca04..2ef958bc04a 100644 --- a/code/datums/diseases/fake_gbs.dm +++ b/code/datums/diseases/fake_gbs.dm @@ -6,7 +6,7 @@ cure = "Synaptizine & Sulfur" cure_id = list("synaptizine","sulfur") agent = "Gravitokinetic Bipotential SADS-" - affected_species = list("Human") + affected_species = list("Human", "Monkey") desc = "If left untreated death will occur." severity = "Major" diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm index 094ed4aea52..ee8a5d8d387 100644 --- a/code/datums/diseases/flu.dm +++ b/code/datums/diseases/flu.dm @@ -6,7 +6,7 @@ cure_id = "spaceacillin" cure_chance = 10 agent = "H13N1 flu virion" - affected_species = list("Human") + affected_species = list("Human", "Monkey") permeability_mod = 0.75 desc = "If left untreated the subject will feel quite unwell." severity = "Medium" diff --git a/code/datums/diseases/fluspanish.dm b/code/datums/diseases/fluspanish.dm new file mode 100644 index 00000000000..4bbd8a15a1d --- /dev/null +++ b/code/datums/diseases/fluspanish.dm @@ -0,0 +1,38 @@ +/datum/disease/fluspanish + name = "Spanish inquisition Flu" + max_stages = 3 + spread = "Airborne" + cure = "Spaceacillin & Anti-bodies to the common flu" + cure_id = "spaceacillin" + cure_chance = 10 + agent = "1nqu1s1t10n flu virion" + affected_species = list("Human") + permeability_mod = 0.75 + desc = "If left untreated the subject will burn to death for being a heretic." + severity = "Serious" + +/datum/disease/flu/stage_act() + ..() + switch(stage) + if(2) + affected_mob.bodytemperature += 5 + if(prob(1)) + affected_mob.emote("sneeze") + if(prob(1)) + affected_mob.emote("cough") + if(prob(1)) + affected_mob << "\red You're burning in your own skin!" + if(prob(20)) + affected_mob.take_organ_damage(0,3) + + if(3) + affected_mob.bodytemperature += 10 + if(prob(1)) + affected_mob.emote("sneeze") + if(prob(1)) + affected_mob.emote("cough") + if(prob(1)) + affected_mob << "\red You're soul feels on fire!" + if(prob(20)) + affected_mob.take_organ_damage(0,5) + return diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 9eb3d7a91bc..1c17533d21b 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -151,7 +151,7 @@ access_tox, access_tox_storage, access_chemistry, access_medical, access_medlab, access_engine, access_emergency_storage, access_change_ids, access_ai_upload, access_eva, access_heads, access_all_personal_lockers, access_tech_storage, access_maint_tunnels, access_bar, access_janitor, - access_crematorium, access_kitchen, access_robotics, access_cargo, access_cargo_bot, access_hydroponics, access_lawyer, access_virology, access_surgery, + access_crematorium, access_kitchen, access_robotics, access_cargo, access_cargo_bot, access_hydroponics, access_lawyer, access_theatre, access_research, access_mining_office, access_mining, access_heads_vault, access_mining_station, access_hop) if("Atmospheric Technician") return list(access_atmospherics, access_maint_tunnels, access_emergency_storage) @@ -180,10 +180,10 @@ access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva, access_heads, access_ai_upload, access_construction, access_robotics, access_mint, access_ce) - if("Research Director") // added hydroponics access -- Skie + if("Research Director") // removed hydroponics access, they are a supply field, not science return list(access_medical, access_morgue, access_medlab, access_rd, access_tech_storage, access_maint_tunnels, access_heads, access_tox, - access_tox_storage, access_chemistry, access_teleporter, access_hydroponics, access_virology, access_research, access_robotics, access_xenobiology) + access_tox_storage, access_chemistry, access_teleporter, access_virology, access_research, access_robotics, access_xenobiology) if("Virologist") return list(access_medical, access_morgue, access_virology, access_research) if("Chief Medical Officer") diff --git a/maps/tgstation.2.0.7.dmm b/maps/tgstation.2.0.7.dmm index 943002a302e..bae0d93a4b1 100644 --- a/maps/tgstation.2.0.7.dmm +++ b/maps/tgstation.2.0.7.dmm @@ -2885,7 +2885,7 @@ "bdy" = (/obj/stool/chair{dir = 1},/obj/item/device/radio/intercom{pixel_x = -25},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bdz" = (/obj/machinery/chem_dispenser,/obj/cable{icon_state = "0-2"; d2 = 2},/obj/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bdA" = (/obj/machinery/chem_master,/obj/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"bdB" = (/obj/secure_closet/chemical,/obj/machinery/camera{c_tag = "Chemistry"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) +"bdB" = (/obj/machinery/camera{c_tag = "Chemistry"},/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bdC" = (/obj/table{dir = 10; icon_state = "tabledir"},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bdD" = (/obj/table{dir = 2; icon_state = "tabledir"},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bdE" = (/obj/table{dir = 2; icon_state = "tabledir"},/obj/machinery/alarm{frequency = 1437; pixel_y = 23},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) diff --git a/tgstation.dme b/tgstation.dme index b9ea4572d53..92c43a4fc58 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -191,9 +191,11 @@ #include "code\datums\diseases\beesease.dm" #include "code\datums\diseases\brainrot.dm" #include "code\datums\diseases\cold.dm" +#include "code\datums\diseases\cold9.dm" #include "code\datums\diseases\dna_spread.dm" #include "code\datums\diseases\fake_gbs.dm" #include "code\datums\diseases\flu.dm" +#include "code\datums\diseases\fluspanish.dm" #include "code\datums\diseases\gbs.dm" #include "code\datums\diseases\jungle_fever.dm" #include "code\datums\diseases\magnitis.dm" @@ -489,7 +491,6 @@ #include "code\game\objects\toys.dm" #include "code\game\objects\traps.dm" #include "code\game\objects\weapons.dm" -#include "code\game\objects\window.dm" #include "code\game\objects\alien\acid.dm" #include "code\game\objects\alien\defines.dm" #include "code\game\objects\alien\egg.dm"