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