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
This commit is contained in:
tronaldnwn@hotmail.com
2011-06-08 21:18:21 +00:00
parent bbd3be907a
commit fe4cf6e301
8 changed files with 254 additions and 10 deletions

View File

@@ -10,8 +10,7 @@
icon_state = "dispenser" icon_state = "dispenser"
var/energy = 25 var/energy = 25
var/max_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 proc
recharge() recharge()
if(stat & BROKEN) return if(stat & BROKEN) return
@@ -485,4 +484,171 @@
else else
..() ..()
return 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 <B>[O]</B><BR>"
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 = {"
<b>Processing chamber contains:</b><br>
[processing_chamber]<br>
[beaker_contents]<hr>
"}
if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN)))
dat += "<A href='?src=\ref[src];action=grind'>Turn on!<BR>"
if (beaker)
dat += "<A href='?src=\ref[src];action=detach'>Detach a beacker!<BR>"
user << browse("<HEAD><TITLE>Reagent Grinder</TITLE></HEAD><TT>[dat]</TT>", "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

View File

@@ -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."

View File

@@ -6,7 +6,7 @@
cure = "Synaptizine & Sulfur" cure = "Synaptizine & Sulfur"
cure_id = list("synaptizine","sulfur") cure_id = list("synaptizine","sulfur")
agent = "Gravitokinetic Bipotential SADS-" agent = "Gravitokinetic Bipotential SADS-"
affected_species = list("Human") affected_species = list("Human", "Monkey")
desc = "If left untreated death will occur." desc = "If left untreated death will occur."
severity = "Major" severity = "Major"

View File

@@ -6,7 +6,7 @@
cure_id = "spaceacillin" cure_id = "spaceacillin"
cure_chance = 10 cure_chance = 10
agent = "H13N1 flu virion" agent = "H13N1 flu virion"
affected_species = list("Human") affected_species = list("Human", "Monkey")
permeability_mod = 0.75 permeability_mod = 0.75
desc = "If left untreated the subject will feel quite unwell." desc = "If left untreated the subject will feel quite unwell."
severity = "Medium" severity = "Medium"

View File

@@ -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

View File

@@ -151,7 +151,7 @@
access_tox, access_tox_storage, access_chemistry, access_medical, access_medlab, access_engine, 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_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_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) access_theatre, access_research, access_mining_office, access_mining, access_heads_vault, access_mining_station, access_hop)
if("Atmospheric Technician") if("Atmospheric Technician")
return list(access_atmospherics, access_maint_tunnels, access_emergency_storage) 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_external_airlocks, access_atmospherics, access_emergency_storage, access_eva,
access_heads, access_ai_upload, access_construction, access_robotics, access_heads, access_ai_upload, access_construction, access_robotics,
access_mint, access_ce) 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, return list(access_medical, access_morgue, access_medlab, access_rd,
access_tech_storage, access_maint_tunnels, access_heads, access_tox, 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") if("Virologist")
return list(access_medical, access_morgue, access_virology, access_research) return list(access_medical, access_morgue, access_virology, access_research)
if("Chief Medical Officer") if("Chief Medical Officer")

View File

@@ -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) "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) "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) "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) "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) "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) "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)

View File

@@ -191,9 +191,11 @@
#include "code\datums\diseases\beesease.dm" #include "code\datums\diseases\beesease.dm"
#include "code\datums\diseases\brainrot.dm" #include "code\datums\diseases\brainrot.dm"
#include "code\datums\diseases\cold.dm" #include "code\datums\diseases\cold.dm"
#include "code\datums\diseases\cold9.dm"
#include "code\datums\diseases\dna_spread.dm" #include "code\datums\diseases\dna_spread.dm"
#include "code\datums\diseases\fake_gbs.dm" #include "code\datums\diseases\fake_gbs.dm"
#include "code\datums\diseases\flu.dm" #include "code\datums\diseases\flu.dm"
#include "code\datums\diseases\fluspanish.dm"
#include "code\datums\diseases\gbs.dm" #include "code\datums\diseases\gbs.dm"
#include "code\datums\diseases\jungle_fever.dm" #include "code\datums\diseases\jungle_fever.dm"
#include "code\datums\diseases\magnitis.dm" #include "code\datums\diseases\magnitis.dm"
@@ -489,7 +491,6 @@
#include "code\game\objects\toys.dm" #include "code\game\objects\toys.dm"
#include "code\game\objects\traps.dm" #include "code\game\objects\traps.dm"
#include "code\game\objects\weapons.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\acid.dm"
#include "code\game\objects\alien\defines.dm" #include "code\game\objects\alien\defines.dm"
#include "code\game\objects\alien\egg.dm" #include "code\game\objects\alien\egg.dm"