Prisoner Management Update:

* New Implant: Chem. Insert up to 10 units of chemicals into implant with a syringe (while still in implant case) and then can use a prisoner management console to trigger 1, 5, or 10 units of the chemical to be injected into the implanted subject. Once all the chemicals are used up, the implant disables itself.
* Prisoner Management Console can now detect the approximate location of prisoners with tracking implants in them. It gives slightly more useful information then the tracker but isn't portable.
* AI cannot access Prisoner Management Console (unless malf/XISC).
* Prisoner Management Console re-added to Armory (It no longer can trigger explosive implants). Play nice or else you'll get your toys taken away from you.

BORK BORK update:
* Re-did ChemMaster. Now it allows you transfer reagents in and out of a buffer. You can then turn the contents of the buffer into either a pill or a bottle. When removing reagents from the buffer, you can either delete them entirely or return them to the beaker. However, removing the beaker clears the contents of the buffer (so no mixing inside the ChemMaster!). CondiMaster Neo is almost identical to the ChemMaster except it only makes condiment bottles (no pills).
* Milk now being handled like the other reagents (as intended). Remember: 5 units of milk = 1 cup.
* Soymilk interchangable with regular milk in microwave recipes. (again, 5 units = 1 cup)
* Xenomeatbread! 3 xeno meat, 3 cheese, 3 flour. Extra Heretical!
* Monkey related food items renamed to generic meat (since I'm adding animals, I really don't want to add a new food items for every single new animal).
* Cola removed from fridge. Thematically appropriate but it just clutters it up (especially since there are vending machines all over the damn place).
* Faggots removed from meat locker. Instead, a small amount of meat spawns in there.
* Carp processes modified. Code is a littles cleaner (lawl) and the random pathing a a little cleaner as well.

Badmin Update:
* By request, Admins can now trigger radiation event.
* Confirmation warning on admin-triggered carp event.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@660 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
morikou@gmail.com
2010-12-18 18:18:14 +00:00
parent 3eda991cc0
commit cac1fdb477
17 changed files with 3418 additions and 3148 deletions

View File

@@ -99,9 +99,9 @@
/obj/item/weapon/circuitboard/swfdoor
name = "Circuit board (Magix)"
computertype = "/obj/machinery/computer/pod/old/swf"
/obj/item/weapon/circuitboard/explosive
name = "Circuit board (ExImplant)"
computertype = "/obj/machinery/computer/explosive"
/obj/item/weapon/circuitboard/prisoner
name = "Circuit board (Prisoner Management)"
computertype = "/obj/machinery/computer/prisoner"

View File

@@ -1,4 +1,4 @@
/obj/machinery/computer/explosive
/obj/machinery/computer/prisoner
name = "Prisoner Management"
icon = 'computer.dmi'
icon_state = "explosive"
@@ -10,8 +10,9 @@
var/timeleft = 60
var/stop = 0.0
var/screen = 0 // 0 - No Access Denied, 1 - Access allowed
var/malf_access = 0
/obj/machinery/computer/explosive/attackby(I as obj, user as mob)
/obj/machinery/computer/prisoner/attackby(I as obj, user as mob)
if(istype(I, /obj/item/weapon/screwdriver))
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
@@ -19,7 +20,7 @@
user << "\blue The broken glass falls out."
var/obj/computerframe/A = new /obj/computerframe( src.loc )
new /obj/item/weapon/shard( src.loc )
var/obj/item/weapon/circuitboard/explosive/M = new /obj/item/weapon/circuitboard/explosive( A )
var/obj/item/weapon/circuitboard/prisoner/M = new /obj/item/weapon/circuitboard/prisoner( A )
for (var/obj/C in src)
C.loc = src.loc
M.id = src.id
@@ -31,7 +32,7 @@
else
user << "\blue You disconnect the monitor."
var/obj/computerframe/A = new /obj/computerframe( src.loc )
var/obj/item/weapon/circuitboard/explosive/M = new /obj/item/weapon/circuitboard/explosive( A )
var/obj/item/weapon/circuitboard/prisoner/M = new /obj/item/weapon/circuitboard/prisoner( A )
for (var/obj/C in src)
C.loc = src.loc
M.id = src.id
@@ -45,15 +46,24 @@
src.attack_hand(user)
return
/obj/machinery/computer/explosive/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/prisoner/attack_ai(var/mob/user as mob)
user << "\red Access Denied"
if(user.icon_state == "ai-malf" && malf_access == 0)
user << "\red BZZZZZZ..."
spawn(20)
user << "\red ...ZZZZZZ *BEEP*"
sleep(10)
user << "\red You now have access to Prisoner Management console"
malf_access = 1
if(malf_access == 1)
return src.attack_hand(user)
else
return
/obj/machinery/computer/explosive/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/prisoner/attack_paw(var/mob/user as mob)
return
/obj/machinery/computer/explosive/attack_hand(var/mob/user as mob)
/obj/machinery/computer/prisoner/attack_hand(var/mob/user as mob)
if(..())
return
user.machine = src
@@ -62,12 +72,22 @@
if(screen == 0)
dat += "<HR><A href='?src=\ref[src];lock=1'>Unlock Console</A>"
else if(screen == 1)
for(var/obj/item/weapon/implant/explosive/E in world)
if(!E.implanted) continue
dat += "[E.imp_in.name] | "
dat += "<A href='?src=\ref[src];killimplant=\ref[E]'>(<font color=red><i>Detonate</i></font>)</A> | "
dat += "<A href='?src=\ref[src];disable=\ref[E]'>(<font color=red><i>Deactivate</i></font>)</A> | "
dat += "<A href='?src=\ref[src];warn=\ref[E]'>(<font color=red><i>Warn</i></font>)</A> |<BR>"
dat += "<HR>Chemical Implants<BR>"
for(var/obj/item/weapon/implant/chem/C in world)
if(!C.implanted) continue
dat += "[C.imp_in.name] | Remaining Units: [C.reagents.total_volume] | Inject: "
dat += "<A href='?src=\ref[src];inject1=\ref[C]'>(<font color=red>(1)</font>)</A>"
dat += "<A href='?src=\ref[src];inject5=\ref[C]'>(<font color=red>(5)</font>)</A>"
dat += "<A href='?src=\ref[src];inject10=\ref[C]'>(<font color=red>(10)</font>)</A><BR>"
dat += "<HR>Tracking Implants<BR>"
for(var/obj/item/weapon/implant/tracking/T in world)
if(!T.implanted) continue
var/loc_display = "Unknown"
var/mob/living/carbon/M = T.imp_in
if(M.z == 1 && !istype(M.loc, /turf/space))
var/turf/mob_loc = get_turf_loc(M)
loc_display = mob_loc.loc
dat += "ID: [T.id] | Location: [loc_display]<BR>"
dat += "<HR><A href='?src=\ref[src];lock=1'>Lock Console</A>"
user << browse(dat, "window=computer;size=400x500")
@@ -81,7 +101,7 @@
src.updateDialog()
return
/obj/machinery/computer/explosive/Topic(href, href_list)
/obj/machinery/computer/prisoner/Topic(href, href_list)
if(..())
return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
@@ -90,7 +110,11 @@
var/obj/item/weapon/implant/I = locate(href_list["killimplant"])
var/mob/living/carbon/R = I.imp_in
if(R)
var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort")
var/choice = null
if(istype(usr, /mob/living/silicon))
choice = input("Using this command is in violation of default laws.") in list("Continue", "Abort")
if(choice != "Abort")
choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm")
R << "You hear quiet beep from the base of your skull."
message_admins("\blue [key_name_admin(usr)] gibbed [R.name]")
@@ -112,6 +136,30 @@
R << "\blue you hear a click as the implant disintegrates."
del(I)
else if (href_list["inject1"])
var/obj/item/weapon/implant/I = locate(href_list["inject1"])
var/mob/living/carbon/R = I.imp_in
I.reagents.trans_to(R, 1)
if(!I.reagents.total_volume)
R << "You hear a faint click from your chest."
del(I)
else if (href_list["inject5"])
var/obj/item/weapon/implant/I = locate(href_list["inject5"])
var/mob/living/carbon/R = I.imp_in
I.reagents.trans_to(R, 5)
if(!I.reagents.total_volume)
R << "You hear a faint click from your chest."
del(I)
else if (href_list["inject10"])
var/obj/item/weapon/implant/I = locate(href_list["inject10"])
var/mob/living/carbon/R = I.imp_in
I.reagents.trans_to(R, 10)
if(!I.reagents.total_volume)
R << "You hear a faint click from your chest."
del(I)
else if (href_list["lock"])
if(src.allowed(usr))
screen = !screen

View File

@@ -91,6 +91,12 @@
cheese_amount = 3
creates = "/obj/item/weapon/reagent_containers/food/snacks/meatbread"
/datum/recipe/xenomeatbread
flour_amount = 3
xenomeat_amount = 3
cheese_amount = 3
creates = "/obj/item/weapon/reagent_containers/food/snacks/xenomeatbread"
/datum/recipe/omelette
egg_amount = 2
cheese_amount = 2
@@ -230,6 +236,7 @@
src.available_recipes += new /datum/recipe/tofubread(src)
src.available_recipes += new /datum/recipe/loadedbakedpotato(src)
src.available_recipes += new /datum/recipe/cheesyfries(src)
src.available_recipes += new /datum/recipe/xenomeatbread(src)
@@ -328,14 +335,9 @@ obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob)
src.donkpocket_amount++
del(O)
else if(istype(O, /obj/item/weapon/reagent_containers/food/drinks/milk))
if(src.milk_amount < 5)
for(var/mob/V in viewers(src, null))
V.show_message(text("\blue [user] adds some milk to the microwave."))
src.milk_amount++
del(O)
else if(O.is_open_container())
return
else
if(!istype(extra_item, /obj/item)) //Allow one non food item to be added!
user.u_equip(O)
@@ -374,6 +376,9 @@ obj/machinery/microwave/attack_paw(user as mob)
while(src.reagents.get_reagent_amount("milk") > 4)
src.reagents.remove_reagent("milk", 5)
src.milk_amount++
while(src.reagents.get_reagent_amount("soymilk") > 4)
src.reagents.remove_reagent("soymilk", 5)
src.milk_amount++
while(src.reagents.get_reagent_amount("ketchup") > 4)
src.reagents.remove_reagent("ketchup", 5)
src.ketchup_amount++
@@ -410,7 +415,7 @@ Please clean it before use!</TT><BR>
<B>Cheese:</B>[src.cheese_amount] cheese wedges<BR>
<B>Tofu:</B>[src.tofu_amount] tofu chunks<BR>
<B>Monkey Meat:</B>[src.monkeymeat_amount] slabs of meat<BR>
<B>Meat Turnovers:</B>[src.donkpocket_amount] turnovers<BR>
<B>Turnovers:</B>[src.donkpocket_amount] turnovers<BR>
<B>Milk:</B>[src.milk_amount] cups of milk.<BR>
[sauces]
<B>Other Meat:</B>[src.humanmeat_amount] slabs of meat<BR>
@@ -507,6 +512,7 @@ Please clean it before use!</TT><BR>
if(operation == 2) // If dispose was pressed, empty the microwave
src.clear()
src.reagents.clear_reagents()
if(src.extra_item != null)
src.extra_item.loc = get_turf(src) // Eject the extra item so important shit like the disk can't be destroyed in there
src.extra_item = null
@@ -560,44 +566,6 @@ Please clean it before use!</TT><BR>
src.tofu_amount = 0
src.ketchup_amount = 0
src.berryjuice_amount = 0
src.updateUsrDialog()
//src.temp.reagents.clear_reagents()
return
////////////////////////////////////////////////////////////////////////////////////////////////////
//Food slicing RIGHT BELOW*************
////////////////////////////////////////////////////////////////////////////////////////////////////
/obj/item/weapon/reagent_containers/food/snacks/meatbread/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
W.visible_message(" \red <B>You slice the meatbread! </B>", 1)
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice (src.loc)
del(src)
return
/obj/item/weapon/reagent_containers/food/snacks/tofubread/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/kitchenknife /*|| /obj/item/weapon/scalpel*/))
W.visible_message(" \red <B>You slice the tofubread! </B>", 1)
new /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice (src.loc)
del(src)
return
/obj/item/weapon/reagent_containers/food/snacks/cheesewheel/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/kitchenknife /* || /obj/item/weapon/scalpel*/))
W.visible_message(" \red <B> You slice the cheese! </B>", 1)
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge (src.loc)
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