New nutrition system:

UI icon for your nutrition status. If not working - will be fixed a little later.
Walking makes you hungry faster. Running makes you hungry even faster.
Big hunger makes you slower.
Overeating for a prolonged period makes you fat.
Meat from gibber depends on nutrition of person who was put into it. Fatties go first.
If a person is in a sleeper or Cryo Cell, all his processes running 5 times slower.
Fixed bug when multiple persons could move into one sleeper.
Warden is now choosable after the game started.
Added ED-209 assembly process. Frame - Metal sheet - leg - leg - weld - security vest - helmet - proximity - wires - taser - battery. Security should reprogram it to patrol after that.
Added ED-209 sounds.
Added Airlock Electronics. When you want to make airlock - you take one, swipe your ID, if it is ok, you choose desired access and put it into the assembly instead of multitool. Also when disassembling, you get one.
Added prototype of chemical explosions system. WIP.
Added Imidazoline, Glycerol, Niroglicerin.
Added Explosion verb to the admins.
Added Attack Log verb. Does not work yet. WIP
Added output of jobban messages to the jobbaned person.
Standing/lying icon updates accordingly to your state.
Bucket now has volume 90. It was strange that beaker was larger than a bucket.
Changed Master Controller to introduce the new status output - loop frequency. If it will lag - revert just master controller file back.


git-svn-id: http://tgstation13.googlecode.com/svn/trunk@522 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
Rygzengrho
2010-12-03 10:52:37 +00:00
parent 899274b60a
commit fa8844dd49
39 changed files with 4339 additions and 4041 deletions

View File

@@ -109,6 +109,7 @@
icon = 'Cryogenic2.dmi'
icon_state = "sleeper_0"
density = 1
var/occupied = 0 // So there won't be multiple persons trying to get into one sleeper
var/mob/occupant = null
anchored = 1
@@ -226,6 +227,7 @@
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
src.occupant.loc = src.loc
src.occupant.metabslow = 0
src.occupant = null
src.icon_state = "sleeper_0"
return
@@ -281,6 +283,8 @@
return
src.go_out()
add_fingerprint(usr)
occupied = 0
return
/obj/machinery/sleeper/verb/move_inside()
@@ -289,23 +293,27 @@
if (usr.stat != 0)
return
if (src.occupant)
if (occupied)
usr << "\blue <B>The sleeper is already occupied!</B>"
return
/* if (usr.abiotic()) // Removing the requirement for user to be naked -- TLE
usr << "Subject may not have abiotic items on."
return*/
for (var/mob/V in viewers(usr))
occupied = 1
V.show_message("[usr] starts climbing into the sleeper.", 3)
if(do_after(usr, 20))
usr.pulling = null
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
usr.loc = src
usr.metabslow = 1
src.occupant = usr
src.icon_state = "sleeper_1"
for(var/obj/O in src)
del(O)
src.add_fingerprint(usr)
return
else
occupied = 0
return

View File

@@ -163,6 +163,7 @@
src.L += new /obj/item/weapon/weldingtool(src)
src.L += new /obj/item/clothing/head/helmet/welding(src)
src.L += new /obj/item/device/multitool(src)
src.L += new /obj/item/weapon/airlock_electronics(src)
src.L += new /obj/item/device/flashlight(src)
src.L += new /obj/item/weapon/extinguisher(src)
src.L += new /obj/item/weapon/sheet/metal(src)

View File

@@ -124,7 +124,7 @@
if(!ismob(G:affecting))
return
if (src.occupant)
user << "\blue <B>The sleeper is already occupied!</B>"
user << "\blue <B>The cryo cell is already occupied!</B>"
return
if (G:affecting.abiotic())
user << "Subject may not have abiotic items on."
@@ -220,6 +220,7 @@
src.occupant.client.eye = src.occupant.client.mob
src.occupant.client.perspective = MOB_PERSPECTIVE
src.occupant.loc = src.loc
src.occupant.metabslow = 0
src.occupant = null
build_icon()
return
@@ -252,6 +253,7 @@
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
usr.loc = src
usr.metabslow = 1
src.occupant = usr
/*for(var/obj/O in src)
O.loc = src.loc*/

View File

@@ -77,6 +77,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
autoclose = 1
var/doortype = 0
var/justzap = 0
var/obj/item/weapon/airlock_electronics/electronics = null
/obj/machinery/door/airlock/command
name = "Airlock"
@@ -902,7 +903,15 @@ About the new airlock wires panel:
if(5) new/obj/door_assembly/door_assembly_mai( src.loc )
if(6) new/obj/door_assembly/door_assembly_ext( src.loc )
if(7) new/obj/door_assembly/door_assembly_g( src.loc )
new/obj/item/device/multitool( src.loc )
var/obj/item/weapon/airlock_electronics/ae
if (!electronics)
ae = new/obj/item/weapon/airlock_electronics( src.loc )
ae.conf_access = src.req_access
else
ae = electronics
electronics = null
ae.loc = src.loc
del(src)
return
else if (src.arePowerSystemsOn() || !(stat & NOPOWER))

View File

@@ -1,5 +1,3 @@
/obj/machinery/gibber/New()
..()
src.overlays += image('kitchen.dmi', "grindnotinuse")
@@ -79,18 +77,29 @@
src.dirty += 1
var/sourcename = src.occupant.real_name
var/sourcejob = src.occupant.job
var/sourcenutriment = src.occupant.nutrition / 15
var/sourcetotalreagents = src.occupant.reagents.total_volume
var/totalslabs = 3
var/obj/item/weapon/reagent_containers/food/snacks/humanmeat/newmeat1 = new /obj/item/weapon/reagent_containers/food/snacks/humanmeat
var/obj/item/weapon/reagent_containers/food/snacks/humanmeat/newmeat2 = new /obj/item/weapon/reagent_containers/food/snacks/humanmeat
var/obj/item/weapon/reagent_containers/food/snacks/humanmeat/newmeat3 = new /obj/item/weapon/reagent_containers/food/snacks/humanmeat
newmeat1.name = sourcename + newmeat1.name
newmeat1.subjectname = sourcename
newmeat1.subjectjob = sourcejob
newmeat1.reagents.add_reagent ("nutriment", sourcenutriment / totalslabs) // Thehehe. Fat guys go first
src.occupant.reagents.trans_to (newmeat1, round (sourcetotalreagents / totalslabs, 1)) // Transfer all the reagents from the body to meat
newmeat2.name = sourcename + newmeat2.name
newmeat2.subjectname = sourcename
newmeat2.subjectjob = sourcejob
newmeat2.reagents.add_reagent ("nutriment", sourcenutriment / totalslabs)
src.occupant.reagents.trans_to (newmeat2, round (sourcetotalreagents / totalslabs, 1))
newmeat3.name = sourcename + newmeat3.name
newmeat3.subjectname = sourcename
newmeat3.subjectjob = sourcejob
newmeat3.reagents.add_reagent ("nutriment", sourcenutriment / totalslabs)
src.occupant.reagents.trans_to (newmeat3, round (sourcetotalreagents / totalslabs, 1))
if(src.occupant.client)
var/mob/dead/observer/newmob
newmob = new/mob/dead/observer(src.occupant)

View File

@@ -454,21 +454,7 @@ Please clean it before use!</TT><BR>
if(src.extra_item)
if (src.extra_item.type == R.extra_item) thing = 1
if(R.extra_item == null || thing) // Just in case the recipe doesn't have an extra item in it
src.egg_amount = 0 // If so remove all the eggs
src.flour_amount = 0 // And the flour
src.water_amount = 0 //And the water
src.cheese_amount = 0 //And the cheese
src.xenomeat_amount = 0
src.monkeymeat_amount = 0
src.humanmeat_amount = 0
src.donkpocket_amount = 0
src.milk_amount = 0
src.tofu_amount = 0
src.hotsauce_amount = 0
src.coldsauce_amount = 0
src.soysauce_amount = 0
src.ketchup_amount = 0
src.berryjuice_amount = 0
src.clear()
src.extra_item = null // And the extra item
cooked_item = R.creates // Store the item that will be created
@@ -477,21 +463,7 @@ Please clean it before use!</TT><BR>
src.operating = 1 // Turn it on
src.icon_state = "mw1"
src.updateUsrDialog()
src.egg_amount = 0 //Clear all the values as this crap is what makes the mess inside!!
src.flour_amount = 0
src.cheese_amount = 0
src.xenomeat_amount = 0
src.water_amount = 0
src.humanmeat_amount = 0
src.monkeymeat_amount = 0
src.donkpocket_amount = 0
src.milk_amount = 0
src.tofu_amount = 0
src.hotsauce_amount = 0
src.coldsauce_amount = 0
src.soysauce_amount = 0
src.ketchup_amount = 0
src.berryjuice_amount = 0
src.clear()
sleep(40) // Half way through
playsound(src.loc, 'splat.ogg', 50, 1) // Play a splat sound
icon_state = "mwbloody1" // Make it look dirty!!
@@ -510,21 +482,7 @@ Please clean it before use!</TT><BR>
src.operating = 1 // Turn it on
src.icon_state = "mw1"
src.updateUsrDialog()
src.egg_amount = 0 //Clear all the values as this crap is gone when it breaks!!
src.flour_amount = 0
src.xenomeat_amount = 0
src.cheese_amount = 0
src.water_amount = 0
src.humanmeat_amount = 0
src.monkeymeat_amount = 0
src.donkpocket_amount = 0
src.tofu_amount = 0
src.milk_amount = 0
src.hotsauce_amount = 0
src.coldsauce_amount = 0
src.soysauce_amount = 0
src.ketchup_amount = 0
src.berryjuice_amount = 0
src.clear()
sleep(60) // Wait a while
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
s.set_up(2, 1, src)
@@ -548,21 +506,7 @@ Please clean it before use!</TT><BR>
src.operating = 0
if(operation == 2) // If dispose was pressed, empty the microwave
src.egg_amount = 0
src.flour_amount = 0
src.xenomeat_amount = 0
src.cheese_amount = 0
src.water_amount = 0
src.humanmeat_amount = 0
src.monkeymeat_amount = 0
src.donkpocket_amount = 0
src.milk_amount = 0
src.hotsauce_amount = 0
src.coldsauce_amount = 0
src.soysauce_amount = 0
src.tofu_amount = 0
src.ketchup_amount = 0
src.berryjuice_amount = 0
src.clear()
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
@@ -600,6 +544,24 @@ Please clean it before use!</TT><BR>
else
return
/obj/machinery/microwave/proc/clear()
src.egg_amount = 0
src.flour_amount = 0
src.xenomeat_amount = 0
src.cheese_amount = 0
src.water_amount = 0
src.humanmeat_amount = 0
src.monkeymeat_amount = 0
src.donkpocket_amount = 0
src.milk_amount = 0
src.hotsauce_amount = 0
src.coldsauce_amount = 0
src.soysauce_amount = 0
src.tofu_amount = 0
src.ketchup_amount = 0
src.berryjuice_amount = 0
//src.temp.reagents.clear_reagents()
return
////////////////////////////////////////////////////////////////////////////////////////////////////