mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Merge pull request #403 from Tastyfish/master
can eat normally with fork, med console upgrade
This commit is contained in:
@@ -125,6 +125,8 @@
|
||||
var/a_id = null
|
||||
var/temp = null
|
||||
var/printing = null
|
||||
var/list/Perp
|
||||
var/tempname = null
|
||||
|
||||
|
||||
/obj/machinery/computer/med_data/laptop
|
||||
|
||||
@@ -1257,6 +1257,7 @@
|
||||
name = "fork"
|
||||
desc = "Pointy."
|
||||
icon_state = "fork"
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/bite
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/knife
|
||||
name = "knife"
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
if(..())
|
||||
return
|
||||
var/dat
|
||||
|
||||
if (src.temp)
|
||||
dat = text("<TT>[src.temp]</TT><BR><BR><A href='?src=\ref[src];temp=1'>Clear Screen</A>")
|
||||
else
|
||||
@@ -28,23 +29,94 @@
|
||||
if (src.authenticated)
|
||||
switch(src.screen)
|
||||
if(1.0)
|
||||
dat += "<p style='text-align:center;'>"
|
||||
dat += text("<A href='?src=\ref[];search=1'>Search Records</A><BR>", src)
|
||||
dat += {"
|
||||
<A href='?src=\ref[src];search=1'>Search Records</A>
|
||||
<BR><A href='?src=\ref[src];screen=2'>List Records</A>
|
||||
<BR><A href='?src=\ref[src];search_dna=1'>Search DNA</A>
|
||||
<BR>
|
||||
<BR><A href='?src=\ref[src];screen=5'>Virus Database</A>
|
||||
<BR><A href='?src=\ref[src];screen=6'>Medbot Tracking</A>
|
||||
<BR>
|
||||
<BR><A href='?src=\ref[src];screen=3'>Record Maintenance</A>
|
||||
<BR><A href='?src=\ref[src];logout=1'>{Log Out}</A><BR>
|
||||
"}
|
||||
if(2.0)
|
||||
dat += "<B>Record List</B>:<HR>"
|
||||
</p>
|
||||
<table style="text-align:center;" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<th>Records:</th>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="text-align:center;" border="1" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>ID</th>
|
||||
<th>Rank</th>
|
||||
<th>Fingerprints</th>
|
||||
<th>Physical Status</th>
|
||||
<th>Mental Status</th>
|
||||
</tr>"}
|
||||
for(var/datum/data/record/R in data_core.general)
|
||||
dat += text("<A href='?src=\ref[];d_rec=\ref[]'>[]: []<BR>", src, R, R.fields["id"], R.fields["name"])
|
||||
//Foreach goto(132)
|
||||
dat += text("<HR><A href='?src=\ref[];screen=1'>Back</A>", src)
|
||||
var/physstat = R.fields["p_stat"]
|
||||
var/background
|
||||
switch(physstat)
|
||||
if("*Deceased*")
|
||||
background = "'background-color:#CD853F;'"
|
||||
if("*Unconscious*")
|
||||
background = "'background-color:#DC143C;'"
|
||||
if("Physically Unfit")
|
||||
background = "'background-color:#3BB9FF;'"
|
||||
if("Active")
|
||||
background = "'background-color:#00FF7F;'"
|
||||
if("")
|
||||
background = "'background-color:#FFFFFF;'"
|
||||
physstat = "No Record."
|
||||
dat += text("<tr style=[]><td><A href='?src=\ref[];d_rec=\ref[]'>[]</a></td>", background, src, R, R.fields["name"])
|
||||
dat += text("<td>[]</td>", R.fields["id"])
|
||||
dat += text("<td>[]</td>", R.fields["rank"])
|
||||
dat += text("<td>[]</td>", R.fields["fingerprint"])
|
||||
dat += text("<td>[]</td>", physstat)
|
||||
dat += text("<td>[]</td></tr>", R.fields["m_stat"])
|
||||
dat += "</table><hr width='75%' />"
|
||||
dat += "<A href='?src=\ref[src];screen=5'>Virus Database</A><BR>"
|
||||
dat += "<A href='?src=\ref[src];screen=6'>Medbot Tracking</A><BR>"
|
||||
dat += "<A href='?src=\ref[src];screen=3'>Record Maintenance</A><BR><BR>"
|
||||
dat += "<A href='?src=\ref[src];logout=1'>{Log Out}</A>"
|
||||
if(2.0)
|
||||
if(!Perp.len)
|
||||
dat += text("ERROR. String could not be located.<br><br><A href='?src=\ref[];screen=1'>Back</A>", src)
|
||||
else
|
||||
dat += {"
|
||||
<table style="text-align:center;" cellspacing="0" width="100%">
|
||||
<tr> "}
|
||||
dat += text("<th>Search Results for '[]':</th>", tempname)
|
||||
dat += {"
|
||||
</tr>
|
||||
</table>
|
||||
<table style="text-align:center;" border="1" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>ID</th>
|
||||
<th>Rank</th>
|
||||
<th>Fingerprints</th>
|
||||
<th>Physical Status</th>
|
||||
<th>Mental Status</th>
|
||||
</tr> "}
|
||||
for(var/i=1, i<=Perp.len, i += 2)
|
||||
var/datum/data/record/R = Perp[i]
|
||||
var/physstat = R.fields["p_stat"]
|
||||
var/background
|
||||
switch(physstat)
|
||||
if("*Deceased*")
|
||||
background = "'background-color:#CD853F;'"
|
||||
if("*Unconscious*")
|
||||
background = "'background-color:#DC143C;'"
|
||||
if("Physically Unfit")
|
||||
background = "'background-color:#3BB9FF;'"
|
||||
if("Active")
|
||||
background = "'background-color:#00FF7F;'"
|
||||
if("")
|
||||
background = "'background-color:#FFFFFF;'"
|
||||
physstat = "No Record."
|
||||
dat += text("<tr style=[]><td><A href='?src=\ref[];choice=Browse Record;d_rec=\ref[]'>[]</a></td>", background, src, R, R.fields["name"])
|
||||
dat += text("<td>[]</td>", R.fields["id"])
|
||||
dat += text("<td>[]</td>", R.fields["rank"])
|
||||
dat += text("<td>[]</td>", R.fields["fingerprint"])
|
||||
dat += text("<td>[]</td>", physstat)
|
||||
dat += text("<td>[]</td></tr>", R.fields["m_stat"])
|
||||
dat += "</table><hr width='75%' />"
|
||||
dat += text("<br><A href='?src=\ref[];screen=1'>Return to index.</A>", src)
|
||||
if(3.0)
|
||||
dat += "<B>Records Maintenance</B><HR>"
|
||||
if(disk)
|
||||
@@ -81,19 +153,18 @@
|
||||
else
|
||||
dat += "<B>Medical Record Lost!</B><BR>"
|
||||
dat += text("<A href='?src=\ref[src];new=1'>New Record</A><BR><BR>")
|
||||
dat += text("\n<A href='?src=\ref[];print_p=1'>Print Record</A><BR>\n<A href='?src=\ref[];screen=2'>Back</A><BR>", src, src)
|
||||
dat += text("\n<A href='?src=\ref[];print_p=1'>Print Record</A><BR>\n<A href='?src=\ref[];screen=1'>Back</A><BR>", src, src)
|
||||
if(5.0)
|
||||
dat += "<CENTER><B>Virus Database</B></CENTER>"
|
||||
dat += "<B>Virus Database</B><HR>"
|
||||
for(var/Dt in typesof(/datum/disease/))
|
||||
var/datum/disease/Dis = new Dt(0)
|
||||
if(!Dis.desc)
|
||||
continue
|
||||
dat += "<br><a href='?src=\ref[src];vir=[Dt]'>[Dis.name]</a>"
|
||||
dat += "<a href='?src=\ref[src];vir=[Dt]'>[Dis.name]</a><br>"
|
||||
dat += "<br><a href='?src=\ref[src];screen=1'>Back</a>"
|
||||
if(6.0)
|
||||
dat += "<center><b>Medical Robot Monitor</b></center>"
|
||||
dat += "<a href='?src=\ref[src];screen=1'>Back</a>"
|
||||
dat += "<br><b>Medical Robots:</b>"
|
||||
dat += "<b>Medical Robot Monitor</b><hr>"
|
||||
dat += "<b>Medical Robots:</b><br>"
|
||||
var/bdat = null
|
||||
for(var/obj/machinery/bot/medbot/M in world)
|
||||
var/turf/bl = get_turf(M)
|
||||
@@ -104,14 +175,16 @@
|
||||
bdat += "Using Internal Synthesizer.<br>"
|
||||
|
||||
if(!bdat)
|
||||
dat += "<br><center>None detected</center>"
|
||||
dat += "None detected<br><br>"
|
||||
else
|
||||
dat += "<br>[bdat]"
|
||||
dat += "[bdat]<br>"
|
||||
|
||||
dat += "<a href='?src=\ref[src];screen=1'>Back</a>"
|
||||
|
||||
else
|
||||
else
|
||||
dat += text("<A href='?src=\ref[];login=1'>{Log In}</A>", src)
|
||||
user << browse(text("<HEAD><TITLE>Medical Records</TITLE></HEAD><TT>[]</TT>", dat), "window=med_rec")
|
||||
user << browse(text("<HEAD><TITLE>Medical Records</TITLE></HEAD><TT>[]</TT>", dat), "window=med_rec;size=600x400")
|
||||
onclose(user, "med_rec")
|
||||
return
|
||||
|
||||
@@ -309,7 +382,7 @@
|
||||
if("watch")
|
||||
src.active1.fields["m_stat"] = "*Watch*"
|
||||
if("stable")
|
||||
src.active2.fields["m_stat"] = "Stable"
|
||||
src.active1.fields["m_stat"] = "Stable"
|
||||
|
||||
|
||||
if (href_list["b_type"])
|
||||
@@ -395,26 +468,33 @@
|
||||
src.active2.fields[text("com_[]", href_list["del_c"])] = "<B>Deleted</B>"
|
||||
|
||||
if (href_list["search"])
|
||||
var/t1 = input("Search String: (Name or ID)", "Med. records", null, null) as text
|
||||
var/t1 = input("Search String: (Partial Name or ID or Fingerprints or DNA or Rank)", "Med. records", null, null) as text
|
||||
if ((!( t1 ) || usr.stat || !( src.authenticated ) || usr.restrained() || ((!in_range(src, usr)) && (!istype(usr, /mob/living/silicon)))))
|
||||
return
|
||||
src.active1 = null
|
||||
src.active2 = null
|
||||
Perp = new/list()
|
||||
t1 = lowertext(t1)
|
||||
var/list/components = dd_text2list(t1, " ")
|
||||
if(components.len > 5)
|
||||
return //Lets not let them search too greedily.
|
||||
for(var/datum/data/record/R in data_core.general)
|
||||
if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"])))
|
||||
src.active1 = R
|
||||
else
|
||||
//Foreach continue //goto(3229)
|
||||
if (!( src.active1 ))
|
||||
src.temp = text("Could not locate record [].", t1)
|
||||
else
|
||||
var/temptext = R.fields["name"] + " " + R.fields["id"] + " " + R.fields["fingerprint"] + " " + R.fields["rank"]
|
||||
|
||||
for(var/datum/data/record/E in data_core.medical)
|
||||
if ((E.fields["name"] == src.active1.fields["name"] || E.fields["id"] == src.active1.fields["id"]))
|
||||
src.active2 = E
|
||||
else
|
||||
//Foreach continue //goto(3334)
|
||||
src.screen = 4
|
||||
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
|
||||
temptext += " " + E.fields["b_dna"]
|
||||
|
||||
for(var/i = 1, i<=components.len, i++)
|
||||
if(findtext(temptext,components[i]))
|
||||
var/prelist = new/list(2)
|
||||
prelist[1] = R
|
||||
Perp += prelist
|
||||
for(var/i = 1, i<=Perp.len, i+=2)
|
||||
for(var/datum/data/record/E in data_core.medical)
|
||||
var/datum/data/record/R = Perp[i]
|
||||
if ((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"]))
|
||||
Perp[i+1] = E
|
||||
tempname = t1
|
||||
src.screen = 2
|
||||
|
||||
if (href_list["print_p"])
|
||||
if (!( src.printing ))
|
||||
@@ -437,24 +517,6 @@
|
||||
P.info += "</TT>"
|
||||
P.name = "paper - 'Medical Record'"
|
||||
src.printing = null
|
||||
|
||||
if (href_list["search_dna"])
|
||||
var/t1 = input("Search String: (DNA)", "Medical records", null, null) as text
|
||||
if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || (!in_range(src, usr)) && (!istype(usr, /mob/living/silicon))))
|
||||
return
|
||||
active1 = null
|
||||
active2 = null
|
||||
t1 = lowertext(t1)
|
||||
for(var/datum/data/record/R in data_core.medical)
|
||||
if (lowertext(R.fields["b_dna"]) == t1)
|
||||
active2 = R
|
||||
if (!( active2 ))
|
||||
temp = text("Could not locate record [].", t1)
|
||||
else
|
||||
for(var/datum/data/record/E in data_core.general)
|
||||
if ((E.fields["name"] == active2.fields["name"] || E.fields["id"] == active2.fields["id"]))
|
||||
active1 = E
|
||||
screen = 4
|
||||
if (href_list["eject_disk"])
|
||||
if (!disk)
|
||||
return
|
||||
|
||||
@@ -18,28 +18,71 @@ KNIFE
|
||||
|
||||
// FORK
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/fork/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M))
|
||||
return ..()
|
||||
|
||||
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
|
||||
return ..()
|
||||
|
||||
if (src.icon_state == "forkloaded") //This is a poor way of handling it, but a proper rewrite of the fork to allow for a more varied foodening can happen when I'm in the mood. --NEO
|
||||
if(M == user)
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\blue [] eats a delicious forkful of omelette!", user), 1)
|
||||
M.reagents.add_reagent("nutriment", 1)
|
||||
/obj/item/weapon/kitchen/utensil/fork/attack(mob/living/M as mob, mob/living/carbon/user as mob)
|
||||
if(istype(M,/mob/living/carbon) || istype(M,/mob/living/simple_animal/livestock))
|
||||
if (bite)
|
||||
if(M == user)
|
||||
user.visible_message( \
|
||||
"\blue [user] eats a delicious forkful of [bite]!", \
|
||||
"\blue You eat a delicious forkful of [bite]!")
|
||||
else
|
||||
user.visible_message( \
|
||||
"\blue [user] feeds [M] a delicious forkful of [bite]!", \
|
||||
"\blue You feed [M] a delicious forkful of [bite]!")
|
||||
spawn(0)
|
||||
bite.reagents.reaction(M, INGEST)
|
||||
bite.reagents.trans_to(M)
|
||||
del(bite)
|
||||
src.icon_state = "fork"
|
||||
else if(user.zone_sel.selecting == "eyes")
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
M = user
|
||||
return eyestab(M, user)
|
||||
else
|
||||
for(var/mob/O in viewers(M, null))
|
||||
O.show_message(text("\blue [] feeds [] a delicious forkful of omelette!", user, M), 1)
|
||||
M.reagents.add_reagent("nutriment", 1)
|
||||
src.icon_state = "fork"
|
||||
return
|
||||
user << "\red Your fork does not have any food on it."
|
||||
else
|
||||
if((user.mutations & CLUMSY) && prob(50))
|
||||
M = user
|
||||
return eyestab(M,user)
|
||||
user << "\red You can't seem to feed [M]."
|
||||
|
||||
/obj/item/weapon/kitchen/utensil/fork/afterattack(obj/item/weapon/reagent_containers/food/snacks/snack as obj, mob/living/carbon/user as mob)
|
||||
if(istype(snack))
|
||||
if(bite)
|
||||
user << "\red You already have [bite] on your fork."
|
||||
else
|
||||
bite = new snack.type(src)
|
||||
icon_state = "forkloaded"
|
||||
user.visible_message( \
|
||||
"[user] takes a piece of [bite] with their fork!", \
|
||||
"\blue You take a piece of [bite] with your fork!" \
|
||||
)
|
||||
if(bite.reagents && snack.reagents) //transfer bit's worth of reagents to
|
||||
bite.reagents.clear_reagents()
|
||||
if(snack.reagents.total_volume)
|
||||
snack.reagents.reaction(src, TOUCH) // react "food" with fork
|
||||
spawn(0)
|
||||
if(snack.reagents.total_volume > snack.bitesize)
|
||||
snack.reagents.trans_to(bite, snack.bitesize)
|
||||
else
|
||||
snack.reagents.trans_to(bite, snack.reagents.total_volume)
|
||||
snack.bitecount++
|
||||
if(!snack.reagents.total_volume)
|
||||
// due to the trash code being hard-coded to place in hand, do magic trick
|
||||
// free active hand
|
||||
user.drop_item(src)
|
||||
|
||||
// consumption fills active hand, drop it back down
|
||||
snack.On_Consume()
|
||||
var/obj/trash = user.get_active_hand()
|
||||
if(trash)
|
||||
user.drop_item(trash)
|
||||
trash.loc = get_turf(snack.loc) // move trash to snack's turf
|
||||
|
||||
// put fork back in hand
|
||||
user.put_in_hand(src)
|
||||
user << "\red You grab the last bite of [snack]."
|
||||
del(snack)
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -453,33 +453,6 @@
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 8)
|
||||
bitesize = 1
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/kitchen/utensil/fork))
|
||||
if (W.icon_state == "forkloaded")
|
||||
user << "\red You already have omelette on your fork."
|
||||
return
|
||||
//W.icon = 'kitchen.dmi'
|
||||
W.icon_state = "forkloaded"
|
||||
/*if (herp)
|
||||
world << "[user] takes a piece of omelette with his fork!"*/
|
||||
//Why this unecessary check? Oh I know, because I'm bad >:C
|
||||
// Yes, you are. You griefing my badmin toys. --rastaf0
|
||||
user.visible_message( \
|
||||
"[user] takes a piece of omelette with their fork!", \
|
||||
"\blue You take a piece of omelette with your fork!" \
|
||||
)
|
||||
reagents.remove_reagent("nutriment", 1)
|
||||
if (reagents.total_volume <= 0)
|
||||
del(src)
|
||||
/*
|
||||
* Unsused.
|
||||
/obj/item/weapon/reagent_containers/food/snacks/omeletteforkload
|
||||
name = "Omelette Du Fromage"
|
||||
desc = "That's all you can say!"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
*/
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/muffin
|
||||
name = "Muffin"
|
||||
|
||||
Reference in New Issue
Block a user