Merge branch 'incremental_tg' r5514 (11/1/2013) into bs12_with_tgport

Conflicts:
	baystation12.dme
	code/ATMOSPHERICS/components/unary/vent_pump.dm
	code/ATMOSPHERICS/components/unary/vent_scrubber.dm
	code/__HELPERS/game.dm
	code/controllers/shuttle_controller.dm
	code/datums/datumvars.dm
	code/datums/supplypacks.dm
	code/defines/obj/storage.dm
	code/defines/obj/vending.dm
	code/defines/obj/weapon.dm
	code/defines/procs/command_alert.dm
	code/game/area/Space Station 13 areas.dm
	code/game/atoms.dm
	code/game/gamemodes/changeling/modularchangling.dm
	code/game/gamemodes/cult/runes.dm
	code/game/gamemodes/events.dm
	code/game/gamemodes/events/dust.dm
	code/game/gamemodes/events/miniblob.dm
	code/game/gamemodes/events/ninja_equipment.dm
	code/game/gamemodes/factions.dm
	code/game/gamemodes/game_mode.dm
	code/game/gamemodes/gameticker.dm
	code/game/jobs/access.dm
	code/game/jobs/job/assistant.dm
	code/game/jobs/job/captain.dm
	code/game/jobs/job/civilian.dm
	code/game/jobs/job/engineering.dm
	code/game/jobs/job/medical.dm
	code/game/jobs/job/science.dm
	code/game/jobs/job/security.dm
	code/game/jobs/job_controller.dm
	code/game/machinery/alarm.dm
	code/game/machinery/atmo_control.dm
	code/game/machinery/atmoalter/area_atmos_computer.dm
	code/game/machinery/bots/medbot.dm
	code/game/machinery/computer/HolodeckControl.dm
	code/game/machinery/computer/ai_core.dm
	code/game/machinery/computer/atmos_alert.dm
	code/game/machinery/computer/card.dm
	code/game/machinery/computer/cloning.dm
	code/game/machinery/computer/computer.dm
	code/game/machinery/computer/message.dm
	code/game/machinery/computer/pod.dm
	code/game/machinery/computer/prisoner.dm
	code/game/machinery/computer/syndicate_shuttle.dm
	code/game/machinery/constructable_frame.dm
	code/game/machinery/doors/door.dm
	code/game/machinery/doors/firedoor.dm
	code/game/machinery/newscaster.dm
	code/game/machinery/recharger.dm
	code/game/machinery/spaceheater.dm
	code/game/machinery/telecomms/broadcaster.dm
	code/game/machinery/telecomms/logbrowser.dm
	code/game/machinery/telecomms/machine_interactions.dm
	code/game/machinery/teleporter.dm
	code/game/machinery/wishgranter.dm
	code/game/mecha/mech_fabricator.dm
	code/game/mecha/working/ripley.dm
	code/game/objects/items.dm
	code/game/objects/items/blueprints.dm
	code/game/objects/items/devices/flashlight.dm
	code/game/objects/items/devices/radio/encryptionkey.dm
	code/game/objects/items/devices/uplinks.dm
	code/game/objects/items/stacks/medical.dm
	code/game/objects/items/weapons/cards_ids.dm
	code/game/objects/items/weapons/gift_wrappaper.dm
	code/game/objects/items/weapons/hydroponics.dm
	code/game/objects/items/weapons/manuals.dm
	code/game/objects/items/weapons/secstorage/secstorage.dm
	code/game/objects/items/weapons/storage/backpack.dm
	code/game/objects/items/weapons/storage/firstaid.dm
	code/game/objects/items/weapons/storage/kit.dm
	code/game/objects/items/weapons/storage/storage.dm
	code/game/objects/items/weapons/storage/toolbox.dm
	code/game/objects/items/weapons/storage/uplink_kits.dm
	code/game/objects/items/weapons/stunbaton.dm
	code/game/objects/items/weapons/surgery_tools.dm
	code/game/objects/items/weapons/tools.dm
	code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
	code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
	code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
	code/game/objects/structures/crates_lockers/closets/secure/security.dm
	code/game/objects/structures/electricchair.dm
	code/game/objects/structures/extinguisher.dm
	code/game/objects/structures/watercloset.dm
	code/game/objects/weapons.dm
	code/game/turfs/turf.dm
	code/game/vehicles/airtight/airtight.dm
	code/game/vehicles/vehicle.dm
	code/global.dm
	code/modules/DetectiveWork/evidence.dm
	code/modules/admin/IsBanned.dm
	code/modules/admin/player_panel.dm
	code/modules/admin/verbs/diagnostics.dm
	code/modules/admin/verbs/getlogs.dm
	code/modules/client/preferences.dm
	code/modules/clothing/masks/miscellaneous.dm
	code/modules/clothing/spacesuits/rig.dm
	code/modules/clothing/suits/miscellaneous.dm
	code/modules/critters/critter_defenses.dm
	code/modules/detectivework/scanner.dm
	code/modules/flufftext/Hallucination.dm
	code/modules/food/recipes_microwave.dm
	code/modules/mining/mine_items.dm
	code/modules/mining/mine_turfs.dm
	code/modules/mining/satchel_ore_boxdm.dm
	code/modules/mob/dead/observer/observer.dm
	code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
	code/modules/mob/living/carbon/alien/special/facehugger.dm
	code/modules/mob/living/carbon/carbon.dm
	code/modules/mob/living/carbon/carbon_defines.dm
	code/modules/mob/living/carbon/human/human.dm
	code/modules/mob/living/carbon/human/human_attackhand.dm
	code/modules/mob/living/carbon/human/life.dm
	code/modules/mob/living/carbon/human/say.dm
	code/modules/mob/living/carbon/human/update_icons.dm
	code/modules/mob/living/carbon/metroid/metroid.dm
	code/modules/mob/living/living.dm
	code/modules/mob/living/silicon/ai/life.dm
	code/modules/mob/living/silicon/robot/robot.dm
	code/modules/mob/mob_cleanup.dm
	code/modules/mob/mob_defines.dm
	code/modules/mob/mob_transformation_simple.dm
	code/modules/paperwork/clipboard.dm
	code/modules/paperwork/folders.dm
	code/modules/paperwork/paper.dm
	code/modules/paperwork/paperbin.dm
	code/modules/paperwork/pen.dm
	code/modules/power/cable.dm
	code/modules/projectiles/guns/energy/special.dm
	code/modules/projectiles/guns/projectile/revolver.dm
	code/modules/projectiles/projectile/change.dm
	code/modules/projectiles/projectile/special.dm
	code/modules/reagents/Chemistry-Reagents.dm
	code/modules/reagents/reagent_containers/glass.dm
	code/modules/reagents/reagent_containers/hypospray.dm
	code/modules/recycling/sortingmachinery.dm
	code/modules/research/designs.dm
	config/config.txt
	html/changelog.html
	icons/mob/head.dmi
	icons/mob/hud.dmi
	icons/mob/items_lefthand.dmi
	icons/mob/items_righthand.dmi
	icons/mob/mask.dmi
	icons/mob/suit.dmi
	icons/mob/ties.dmi
	icons/mob/uniform.dmi
	icons/obj/clothing/hats.dmi
	icons/obj/clothing/masks.dmi
	icons/obj/clothing/suits.dmi
	icons/obj/clothing/ties.dmi
	icons/obj/grenade.dmi
	icons/obj/projectiles.dmi

Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
Cael_Aislinn
2013-01-11 22:12:31 +10:00
637 changed files with 28812 additions and 21593 deletions
+22 -6
View File
@@ -231,10 +231,15 @@ datum
matching_other = 1
else
if(istype(my_atom, /obj/item/metroid_core))
var/obj/item/metroid_core/M = my_atom
/*if(istype(my_atom, /obj/item/slime_core))
var/obj/item/slime_core/M = my_atom
if(M.POWERFLAG == C.required_other && M.Uses > 0) // added a limit to metroid cores -- Muskets requested this
if(M.POWERFLAG == C.required_other && M.Uses > 0) // added a limit to slime cores -- Muskets requested this
matching_other = 1*/
if(istype(my_atom, /obj/item/slime_extract))
var/obj/item/slime_extract/M = my_atom
if(M.Uses > 0) // added a limit to slime cores -- Muskets requested this
matching_other = 1
@@ -255,12 +260,21 @@ datum
for(var/mob/M in viewers(4, get_turf(my_atom)) )
M << "\blue \icon[my_atom] The solution begins to bubble."
if(istype(my_atom, /obj/item/metroid_core))
var/obj/item/metroid_core/ME = my_atom
/* if(istype(my_atom, /obj/item/slime_core))
var/obj/item/slime_core/ME = my_atom
ME.Uses--
if(ME.Uses <= 0) // give the notification that the metroid core is dead
if(ME.Uses <= 0) // give the notification that the slime core is dead
for(var/mob/M in viewers(4, get_turf(my_atom)) )
M << "\blue \icon[my_atom] The innards begin to boil!"
*/
if(istype(my_atom, /obj/item/slime_extract))
var/obj/item/slime_extract/ME2 = my_atom
ME2.Uses--
if(ME2.Uses <= 0) // give the notification that the slime core is dead
for(var/mob/M in viewers(4, get_turf(my_atom)) )
M << "\blue \icon[my_atom] The [my_atom]'s power is consumed in the reaction."
ME2.name = "used slime extract"
ME2.desc = "This extract has been used up."
playsound(get_turf(my_atom), 'sound/effects/bubbles.ogg', 80, 1)
@@ -399,6 +413,8 @@ datum
my_atom.on_reagent_change()
handle_reactions()
return 0
else
warning("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])")
handle_reactions()
+2 -2
View File
@@ -8,7 +8,7 @@
anchored = 1
icon = 'icons/obj/chemical.dmi'
icon_state = "dispenser"
use_power = 1
use_power = 0
idle_power_usage = 40
var/energy = 100
var/max_energy = 100
@@ -800,7 +800,7 @@
return 1
//Fill machine with the plantbag!
if(istype(O, /obj/item/weapon/plantbag))
if(istype(O, /obj/item/weapon/storage/bag/plants))
for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents)
O.contents -= G
File diff suppressed because it is too large Load Diff
+428 -53
View File
@@ -7,7 +7,7 @@ datum
var/list/required_reagents = new/list()
var/list/required_catalysts = new/list()
// Both of these variables are mostly going to be used with Metroid cores - but if you want to, you can use them for other things
// Both of these variables are mostly going to be used with slime cores - but if you want to, you can use them for other things
var/atom/required_container = null // the container required for the reaction to happen
var/required_other = 0 // an integer required for the reaction to happen
@@ -48,8 +48,9 @@ datum
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
// 100 created volume = 10 heavy range & 20 light range = same as normal EMP grenade
empulse(location, round(created_volume / 10), round(created_volume / 5), 1)
// 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
// 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
empulse(location, round(created_volume / 24), round(created_volume / 14), 1)
holder.clear_reagents()
return
/*
@@ -645,40 +646,40 @@ datum
result_amount = 5
/////////////////////////////////////METROID CORE REACTIONS ///////////////////////////////
metroidpepper
name = "Metroid Condensedcapaicin"
/////////////////////////////////////OLD SLIME CORE REACTIONS ///////////////////////////////
/*
slimepepper
name = "Slime Condensedcapaicin"
id = "m_condensedcapaicin"
result = "condensedcapsaicin"
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 1
metroidfrost
name = "Metroid Frost Oil"
slimefrost
name = "Slime Frost Oil"
id = "m_frostoil"
result = "frostoil"
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 1
metroidglycerol
name = "Metroid Glycerol"
slimeglycerol
name = "Slime Glycerol"
id = "m_glycerol"
result = "glycerol"
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 1
metroid_explosion
name = "Metroid Explosion"
slime_explosion
name = "Slime Explosion"
id = "m_explosion"
result = null
required_reagents = list("blood" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 2
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
@@ -688,50 +689,50 @@ datum
holder.clear_reagents()
return
metroidjam
name = "Metroid Jam"
slimejam
name = "Slime Jam"
id = "m_jam"
result = "metroid"
result = "slimejelly"
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 2
metroidsynthi
name = "Metroid Synthetic Flesh"
slimesynthi
name = "Slime Synthetic Flesh"
id = "m_flesh"
result = null
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 2
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
return
metroidenzyme
name = "Metroid Enzyme"
slimeenzyme
name = "Slime Enzyme"
id = "m_enzyme"
result = "enzyme"
required_reagents = list("blood" = 1, "water" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 3
metroidplasma
name = "Metroid Plasma"
slimeplasma
name = "Slime Plasma"
id = "m_plasma"
result = "plasma"
required_reagents = list("sugar" = 1, "blood" = 2)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 3
metroidvirus
name = "Metroid Virus"
slimevirus
name = "Slime Virus"
id = "m_virus"
result = null
required_reagents = list("sugar" = 1, "sacid" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 3
on_reaction(var/datum/reagents/holder, var/created_volume)
holder.clear_reagents()
@@ -749,14 +750,14 @@ datum
return
metroidteleport
name = "Metroid Teleport"
slimeteleport
name = "Slime Teleport"
id = "m_tele"
result = null
required_reagents = list("pacid" = 2, "mutagen" = 2)
required_catalysts = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 4
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -808,18 +809,31 @@ datum
sleep(20)
M.client.screen -= blueeffect
del(blueeffect)
metroidcrit
name = "Metroid Crit"
slimecrit
name = "Slime Crit"
id = "m_tele"
result = null
required_reagents = list("sacid" = 1, "blood" = 1)
required_catalysts = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 4
on_reaction(var/datum/reagents/holder, var/created_volume)
var/list/critters = typesof(/obj/effect/critter) - /obj/effect/critter // list of possible critters
var/blocked = list(/mob/living/simple_animal/hostile,
/mob/living/simple_animal/hostile/pirate,
/mob/living/simple_animal/hostile/pirate/ranged,
/mob/living/simple_animal/hostile/russian,
/mob/living/simple_animal/hostile/russian/ranged,
/mob/living/simple_animal/hostile/syndicate,
/mob/living/simple_animal/hostile/syndicate/melee,
/mob/living/simple_animal/hostile/syndicate/melee/space,
/mob/living/simple_animal/hostile/syndicate/ranged,
/mob/living/simple_animal/hostile/syndicate/ranged/space,
/mob/living/simple_animal/hostile/alien/queen/large,
/mob/living/simple_animal/clown
)//exclusion list for things you don't want the reaction to create.
var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs
playsound(get_turf_loc(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
@@ -829,18 +843,18 @@ datum
for(var/i = 1, i <= created_volume, i++)
var/chosen = pick(critters)
var/obj/effect/critter/C = new chosen
var/mob/living/simple_animal/hostile/C = new chosen
C.loc = get_turf_loc(holder.my_atom)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(C, pick(NORTH,SOUTH,EAST,WEST))
metroidbork
name = "Metroid Bork"
slimebork
name = "Slime Bork"
id = "m_tele"
result = null
required_reagents = list("sugar" = 1, "water" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 4
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -864,33 +878,33 @@ datum
metroidchloral
name = "Metroid Chloral"
slimechloral
name = "Slime Chloral"
id = "m_bunch"
result = "chloralhydrate"
required_reagents = list("blood" = 1, "water" = 2)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 5
metroidretro
name = "Metroid Retro"
slimeretro
name = "Slime Retro"
id = "m_xeno"
result = null
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 5
on_reaction(var/datum/reagents/holder, var/created_volume)
var/datum/disease/F = new /datum/disease/dna_retrovirus(0)
var/list/data = list("viruses"= list(F))
holder.add_reagent("blood", 20, data)
metroidfoam
name = "Metroid Foam"
slimefoam
name = "Slime Foam"
id = "m_foam"
result = null
required_reagents = list("sacid" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 5
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -914,14 +928,375 @@ datum
s.start()
holder.clear_reagents()
return
*/
/////////////////////////////////////////////NEW SLIME CORE REACTIONS/////////////////////////////////////////////
//Grey
slimespawn
name = "Slime Spawn"
id = "m_spawn"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/grey
required_other = 1
on_reaction(var/datum/reagents/holder)
for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
O.show_message(text("\red Infused with plasma, the core begins to quiver and grow, and soon a new baby slime emerges from it!"), 1)
var/mob/living/carbon/slime/S = new /mob/living/carbon/slime
S.loc = get_turf_loc(holder.my_atom)
slimemonkey
name = "Slime Monkey"
id = "m_monkey"
result = null
required_reagents = list("blood" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/grey
required_other = 1
on_reaction(var/datum/reagents/holder)
for(var/i = 1, i <= 3, i++)
var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube
M.loc = get_turf_loc(holder.my_atom)
//Green
slimemutate
name = "Mutation Toxin"
id = "mutationtoxin"
result = "mutationtoxin"
required_reagents = list("plasma" = 5)
result_amount = 1
required_other = 1
required_container = /obj/item/slime_extract/green
//Metal
slimemetal
name = "Slime Metal"
id = "m_metal"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/metal
required_other = 1
on_reaction(var/datum/reagents/holder)
var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal
M.amount = 15
M.loc = get_turf_loc(holder.my_atom)
var/obj/item/stack/sheet/plasteel/P = new /obj/item/stack/sheet/plasteel
P.amount = 5
P.loc = get_turf_loc(holder.my_atom)
//Gold
slimecrit
name = "Slime Crit"
id = "m_tele"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/gold
required_other = 1
on_reaction(var/datum/reagents/holder)
var/blocked = list(/mob/living/simple_animal/hostile,
/mob/living/simple_animal/hostile/pirate,
/mob/living/simple_animal/hostile/pirate/ranged,
/mob/living/simple_animal/hostile/russian,
/mob/living/simple_animal/hostile/russian/ranged,
/mob/living/simple_animal/hostile/syndicate,
/mob/living/simple_animal/hostile/syndicate/melee,
/mob/living/simple_animal/hostile/syndicate/melee/space,
/mob/living/simple_animal/hostile/syndicate/ranged,
/mob/living/simple_animal/hostile/syndicate/ranged/space,
/mob/living/simple_animal/hostile/alien/queen/large,
/mob/living/simple_animal/clown
)//exclusion list for things you don't want the reaction to create.
var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs
playsound(get_turf_loc(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/carbon/human/M in viewers(get_turf_loc(holder.my_atom), null))
if(M:eyecheck() <= 0)
flick("e_flash", M.flash)
for(var/i = 1, i <= 5, i++)
var/chosen = pick(critters)
var/mob/living/simple_animal/hostile/C = new chosen
C.faction = "slimesummon"
C.loc = get_turf_loc(holder.my_atom)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(C, pick(NORTH,SOUTH,EAST,WEST))
//Silver
slimebork
name = "Slime Bork"
id = "m_tele2"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/silver
required_other = 1
on_reaction(var/datum/reagents/holder)
var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks
// BORK BORK BORK
playsound(get_turf_loc(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/carbon/human/M in viewers(get_turf_loc(holder.my_atom), null))
if(M:eyecheck() <= 0)
flick("e_flash", M.flash)
for(var/i = 1, i <= 4 + rand(1,2), i++)
var/chosen = pick(borks)
var/obj/B = new chosen
if(B)
B.loc = get_turf_loc(holder.my_atom)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(B, pick(NORTH,SOUTH,EAST,WEST))
//Blue
slimefrost
name = "Slime Frost Oil"
id = "m_frostoil"
result = "frostoil"
required_reagents = list("plasma" = 5)
result_amount = 10
required_container = /obj/item/slime_extract/blue
required_other = 1
//Dark Blue
slimefreeze
name = "Slime Freeze"
id = "m_freeze"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/darkblue
required_other = 1
on_reaction(var/datum/reagents/holder)
for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
O.show_message(text("\red The slime extract begins to vibrate violently !"), 1)
sleep(50)
playsound(get_turf_loc(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/M in range (get_turf_loc(holder.my_atom), 7))
M.bodytemperature -= 140
M << "\blue You feel a chill!"
//Orange
slimecasp
name = "Slime Capsaicin Oil"
id = "m_capsaicinoil"
result = "capsaicin"
required_reagents = list("blood" = 5)
result_amount = 10
required_container = /obj/item/slime_extract/orange
required_other = 1
slimefire
name = "Slime fire"
id = "m_fire"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/orange
required_other = 1
on_reaction(var/datum/reagents/holder)
for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
O.show_message(text("\red The slime extract begins to vibrate violently !"), 1)
sleep(50)
var/turf/location = get_turf(holder.my_atom.loc)
for(var/turf/simulated/floor/target_tile in range(0,location))
if(target_tile.parent && target_tile.parent.group_processing)
target_tile.parent.suspend_group_processing()
var/datum/gas_mixture/napalm = new
napalm.toxins = 25
napalm.temperature = 1400
target_tile.assume_air(napalm)
spawn (0) target_tile.hotspot_expose(700, 400)
//Yellow
slimeoverload
name = "Slime EMP"
id = "m_emp"
result = null
required_reagents = list("blood" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/yellow
required_other = 1
on_reaction(var/datum/reagents/holder, var/created_volume)
empulse(get_turf_loc(holder.my_atom), 3, 7)
slimecell
name = "Slime Powercell"
id = "m_cell"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/yellow
required_other = 1
on_reaction(var/datum/reagents/holder, var/created_volume)
var/obj/item/weapon/cell/slime/P = new /obj/item/weapon/cell/slime
P.loc = get_turf_loc(holder.my_atom)
slimeglow
name = "Slime Glow"
id = "m_glow"
result = null
required_reagents = list("water" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/yellow
required_other = 1
on_reaction(var/datum/reagents/holder)
for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
O.show_message(text("\red The slime begins to emit a soft light."), 1)
var/obj/item/slime_extract/yellow/Y = holder
Y.luminosity = 6
//Purple
slimepsteroid
name = "Slime Steroid"
id = "m_steroid"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/purple
required_other = 1
on_reaction(var/datum/reagents/holder)
var/obj/item/weapon/slimesteroid/P = new /obj/item/weapon/slimesteroid
P.loc = get_turf_loc(holder.my_atom)
slimejam
name = "Slime Jam"
id = "m_jam"
result = "slimejelly"
required_reagents = list("sugar" = 5)
result_amount = 10
required_container = /obj/item/slime_extract/purple
required_other = 1
//Dark Purple
slimeplasma
name = "Slime Plasma"
id = "m_plasma"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/darkpurple
required_other = 1
on_reaction(var/datum/reagents/holder)
var/obj/item/stack/sheet/mineral/plasma/P = new /obj/item/stack/sheet/mineral/plasma
P.amount = 10
P.loc = get_turf_loc(holder.my_atom)
//Red
slimeglycerol
name = "Slime Glycerol"
id = "m_glycerol"
result = "glycerol"
required_reagents = list("plasma" = 5)
result_amount = 8
required_container = /obj/item/slime_extract/red
required_other = 1
slimebloodlust
name = "Bloodlust"
id = "m_bloodlust"
result = null
required_reagents = list("blood" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/red
required_other = 1
on_reaction(var/datum/reagents/holder)
for(var/mob/living/carbon/slime/slime in viewers(get_turf_loc(holder.my_atom), null))
slime.tame = 0
slime.rabid = 1
for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
O.show_message(text("\red The [slime] is driven into a frenzy!."), 1)
//Pink
slimeppotion
name = "Slime Potion"
id = "m_potion"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/pink
required_other = 1
on_reaction(var/datum/reagents/holder)
var/obj/item/weapon/slimepotion/P = new /obj/item/weapon/slimepotion
P.loc = get_turf_loc(holder.my_atom)
//Black
slimemutate2
name = "Advanced Mutation Toxin"
id = "mutationtoxin2"
result = "amutationtoxin"
required_reagents = list("plasma" = 5)
result_amount = 1
required_other = 1
required_container = /obj/item/slime_extract/black
//Oil
slimeexplosion
name = "Slime Explosion"
id = "m_explosion"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/oil
required_other = 1
on_reaction(var/datum/reagents/holder)
for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
O.show_message(text("\red The slime extract begins to vibrate violently !"), 1)
sleep(50)
explosion(get_turf_loc(holder.my_atom), 1 ,3, 6)
//Light Pink
slimepotion2
name = "Slime Potion 2"
id = "m_potion2"
result = null
result_amount = 1
required_container = /obj/item/slime_extract/lightpink
required_reagents = list("plasma" = 5)
required_other = 1
on_reaction(var/datum/reagents/holder)
var/obj/item/weapon/slimepotion2/P = new /obj/item/weapon/slimepotion2
P.loc = get_turf_loc(holder.my_atom)
//Adamantine
slimegolem
name = "Slime Golem"
id = "m_golem"
result = null
required_reagents = list("plasma" = 5)
result_amount = 1
required_container = /obj/item/slime_extract/adamantine
required_other = 1
on_reaction(var/datum/reagents/holder)
var/mob/living/carbon/human/G = new /mob/living/carbon/human
G.dna.mutantrace = "adamantine"
G.real_name = text("Adamantine Golem ([rand(1, 1000)])")
G.equip_to_slot_or_del(new /obj/item/clothing/under/golem(G), slot_w_uniform)
G.equip_to_slot_or_del(new /obj/item/clothing/suit/golem(G), slot_wear_suit)
G.equip_to_slot_or_del(new /obj/item/clothing/shoes/golem(G), slot_shoes)
G.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/golem(G), slot_wear_mask)
G.equip_to_slot_or_del(new /obj/item/clothing/gloves/golem(G), slot_gloves)
G.loc = get_turf_loc(holder.my_atom)
var/list/candidates = get_alien_candidates()
var/candidate = pick(candidates)
G.key = candidate
G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve the one created you, and assist them in completing their goals at any cost."
//////////////////////////////////////////FOOD MIXTURES////////////////////////////////////
+5 -1
View File
@@ -30,9 +30,13 @@
/obj/item/weapon/reagent_containers/attack(mob/M as mob, mob/user as mob, def_zone)
return
// this prevented pills, food, and other things from being picked up by bags.
// possibly intentional, but removing it allows us to not duplicate functionality.
// -Sayu (storage conslidation)
/*
/obj/item/weapon/reagent_containers/attackby(obj/item/I as obj, mob/user as mob)
return
*/
/obj/item/weapon/reagent_containers/afterattack(obj/target, mob/user , flag)
return
@@ -52,6 +52,7 @@
src.reagents.reaction(safe_thing, TOUCH)
user << "\blue You transfer [trans] units of the solution."
if (src.reagents.total_volume<=0)
filled = 0
@@ -62,6 +63,15 @@
for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red <B>[] squirts something into []'s eyes!</B>", user, target), 1)
src.reagents.reaction(target, TOUCH)
var/mob/M = target
var/R
if(src.reagents)
for(var/datum/reagent/A in src.reagents.reagent_list)
R += A.id + " ("
R += num2text(A.volume) + "),"
user.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])"
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])"
log_attack("\[[time_stamp()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])")
trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
user << "\blue You transfer [trans] units of the solution."
@@ -120,11 +120,11 @@
if (!(usr in range(0)) && usr!=src.loc) return
if(!reagents || reagents.total_volume==0)
usr << "\blue \The [src] is empty!"
else if (reagents.total_volume<src.volume/4)
else if (reagents.total_volume<=src.volume/4)
usr << "\blue \The [src] is almost empty!"
else if (reagents.total_volume<src.volume/2)
else if (reagents.total_volume<=src.volume*0.66)
usr << "\blue \The [src] is half full!"
else if (reagents.total_volume<src.volume/0.90)
else if (reagents.total_volume<=src.volume*0.90)
usr << "\blue \The [src] is almost full!"
else
usr << "\blue \The [src] is full!"
@@ -124,7 +124,6 @@
throw_speed = 3
throw_range = 5
item_state = "beer"
//item_state - Need to find a bottle sprite
attack_verb = list("stabbed", "slashed", "attacked")
var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken")
@@ -9,15 +9,15 @@
item_state = "beaker"
New()
..()
reagents.add_reagent("metroid", 50)
reagents.add_reagent("slime", 50)
on_reagent_change()
if (reagents.reagent_list.len > 0)
switch(reagents.get_master_reagent_id())
if("metroid")
icon_state = "jar_metroid"
name = "metroid jam"
desc = "A jar of metroid jam. Delicious!"
if("slime")
icon_state = "jar_slime"
name = "slime jam"
desc = "A jar of slime jam. Delicious!"
else
icon_state ="jar_what"
name = "jar of something"
@@ -50,7 +50,7 @@
M << "\red You cannot force any more of [src] to go down your throat."
return 0
else
if(!istype(M, /mob/living/carbon/metroid)) //If you're feeding it to someone else.
if(!istype(M, /mob/living/carbon/slime)) //If you're feeding it to someone else.
var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25)
if (fullness <= (550 * (1 + M.overeatduration / 1000)))
for(var/mob/O in viewers(world.view, user))
@@ -118,6 +118,10 @@
usr << "\blue \The [src] was bitten multiple times!"
/obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/storage))
..() // -> item/attackby()
if(istype(W,/obj/item/weapon/storage))
..() // -> item/attackby()
if((slices_num <= 0 || !slices_num) || !slice_path)
return 1
var/inaccurate = 0
@@ -345,7 +349,7 @@
desc = "Like life, it never quite tastes the same."
icon_state = "donut1"
New()
..()
reagents.add_reagent("nutriment", 2)
reagents.add_reagent("sprinkles", 1)
bitesize = 10
@@ -364,7 +368,7 @@
if(6)
reagents.add_reagent("coco", 3)
if(7)
reagents.add_reagent("rorojelly", 3)
reagents.add_reagent("slimejelly", 3)
if(8)
reagents.add_reagent("banana", 3)
if(9)
@@ -392,7 +396,7 @@
src.name = "Frosted Jelly Donut"
reagents.add_reagent("sprinkles", 2)
/obj/item/weapon/reagent_containers/food/snacks/donut/rorojelly
/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
name = "Jelly Donut"
desc = "You jelly?"
icon_state = "jdonut1"
@@ -400,7 +404,7 @@
..()
reagents.add_reagent("nutriment", 3)
reagents.add_reagent("sprinkles", 1)
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
bitesize = 5
if(prob(30))
src.icon_state = "jdonut2"
@@ -1032,7 +1036,7 @@
New()
..()
reagents.add_reagent("nutriment", 4)
reagents.add_reagent("doctor_delight", 2)
reagents.add_reagent("doctorsdelight", 5)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato
@@ -1159,13 +1163,13 @@
reagents.add_reagent("water", 5)
bitesize = 5
/obj/item/weapon/reagent_containers/food/snacks/rorosoup
name = "Roro soup"
/obj/item/weapon/reagent_containers/food/snacks/slimesoup
name = "slime soup"
desc = "If no water is available, you may substitute tears."
icon_state = "rorosoup"
icon_state = "slimesoup"
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
reagents.add_reagent("water", 10)
bitesize = 5
@@ -1245,7 +1249,7 @@
reagents.add_reagent("nutriment", 6)
reagents.add_reagent("blood", 10)
if(7)
reagents.add_reagent("rorojelly", 10)
reagents.add_reagent("slimejelly", 10)
reagents.add_reagent("water", 10)
if(8)
reagents.add_reagent("carbon", 10)
@@ -1486,7 +1490,7 @@
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast
name = "Jellied Toast"
desc = "A slice of bread covered with delicious jam."
icon_state = "rorotoast"
icon_state = "jellytoast"
trash = /obj/item/trash/plate
New()
..()
@@ -1498,24 +1502,24 @@
..()
reagents.add_reagent("cherryjelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/roro
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jellyburger
name = "Jelly Burger"
desc = "Culinary delight..?"
icon_state = "roroburger"
icon_state = "jellyburger"
New()
..()
reagents.add_reagent("nutriment", 5)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/roro
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry
New()
@@ -1652,32 +1656,32 @@
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich
name = "Jelly Sandwich"
desc = "You wish you had some peanut butter to go with this..."
icon_state = "rorosandwich"
icon_state = "jellysandwich"
trash = /obj/item/trash/plate
New()
..()
reagents.add_reagent("nutriment", 2)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/roro
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry
New()
..()
reagents.add_reagent("cherryjelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/boiledrorocore
name = "Boiled Roro Core"
/*
/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore
name = "Boiled slime Core"
desc = "A boiled red thing."
icon_state = "boiledrorocore"
icon_state = "boiledslimecore"
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
bitesize = 3
*/
/obj/item/weapon/reagent_containers/food/snacks/mint
name = "mint"
desc = "it is only wafer thin."
@@ -1764,7 +1768,7 @@
New()
..()
reagents.add_reagent("nutriment", 8)
reagents.add_reagent("doctor_delight", 5)
reagents.add_reagent("doctorsdelight", 5)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/appletart
@@ -49,22 +49,42 @@
usr << msg
return
if (istype(O, /obj/item/weapon/plantbag))
/*if (istype(O, /obj/item/weapon/storage/bag/plants))
var/obj/item/weapon/plantbag/S = O
if (S.mode == 1)
for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in locate(src.x,src.y,src.z))
if (S.contents.len < S.capacity)
S.contents += G;
else
user << "\blue The plant bag is full."
return
user << "\blue You pick up all the plants."
for(var/obj/item/G in get_turf(src))
if(istype(G, /obj/item/seeds) || istype(G, /obj/item/weapon/reagent_containers/food/snacks/grown))
if (S.contents.len < S.capacity)
S.contents += G
else
user << "\blue The plant bag is full."
return
user << "\blue You pick up all the plants and seeds."
else
if (S.contents.len < S.capacity)
S.contents += src;
else
user << "\blue The plant bag is full."*/
return
/*/obj/item/seeds/attackby(var/obj/item/O as obj, var/mob/user as mob)
if (istype(O, /obj/item/weapon/storage/bag/plants))
var/obj/item/weapon/plantbag/S = O
if (S.mode == 1)
for(var/obj/item/G in get_turf(src))
if(istype(G, /obj/item/seeds) || istype(G, /obj/item/weapon/reagent_containers/food/snacks/grown))
if (S.contents.len < S.capacity)
S.contents += G
else
user << "\blue The plant bag is full."
return
user << "\blue You pick up all the plants and seeds."
else
if (S.contents.len < S.capacity)
S.contents += src;
else
user << "\blue The plant bag is full."
return
return*/
/obj/item/weapon/grown/attackby(var/obj/item/O as obj, var/mob/user as mob)
..()
@@ -852,6 +872,7 @@
// Putting these at the bottom so they don't clutter the list up. -Cheridan
// *************************************
/*
//This object is just a transition object. All it does is make a grass tile and delete itself.
/obj/item/weapon/reagent_containers/food/snacks/grown/grass
seed = "/obj/item/seeds/grassseed"
@@ -863,6 +884,7 @@
new/obj/item/stack/tile/grass(src.loc)
spawn(5) //Workaround to keep harvesting from working weirdly.
del(src)
*/
//This object is just a transition object. All it does is make dosh and delete itself. -Cheridan
/obj/item/weapon/reagent_containers/food/snacks/grown/money
@@ -25,7 +25,7 @@
/obj/item/weapon/grenade/chem_grenade,
/obj/machinery/bot/medbot,
/obj/machinery/computer/pandemic,
/obj/item/weapon/secstorage/ssafe,
/obj/item/weapon/storage/secure/safe,
/obj/machinery/disposal,
/obj/machinery/iv_drip,
/obj/machinery/disease2/incubator
@@ -48,7 +48,16 @@
return
if(ismob(target) && target.reagents && reagents.total_volume)
var/mob/M = target
user << "\blue You splash the solution onto [target]."
var/R
if(src.reagents)
for(var/datum/reagent/A in src.reagents.reagent_list)
R += A.id + " ("
R += num2text(A.volume) + "),"
user.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> splashed <b>[M]/[M.ckey]</b> with ([R])"
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> splashed <b>[M]/[M.ckey]</b> with ([R])"
log_attack("\[[time_stamp()]\] <b>[user]/[user.ckey]</b> splashed <b>[M]/[M.ckey]</b> with ([R])")
for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red [] has been splashed with something by []!", target, user), 1)
src.reagents.reaction(target, TOUCH)
@@ -114,7 +123,7 @@
update_icon()
update_icon()
overlays = null
overlays.Cut()
if(reagents.total_volume)
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10")
@@ -148,10 +157,16 @@
reagents.add_reagent("cryoxadone", 30)
update_icon()
/obj/item/weapon/reagent_containers/glass/beaker/roro
/obj/item/weapon/reagent_containers/glass/beaker/sulphuric
New()
..()
reagents.add_reagent("rorojelly", 50)
reagents.add_reagent("sacid", 50)
update_icon()
/obj/item/weapon/reagent_containers/glass/beaker/slime
New()
..()
reagents.add_reagent("slimejelly", 50)
update_icon()
/obj/item/weapon/reagent_containers/glass/bucket
@@ -125,7 +125,7 @@
icon_state = "bottle3"
New()
..()
var/datum/disease/F = new /datum/disease/advance/heal(0)
var/datum/disease/F = new /datum/disease/advance/voice_change(0)
var/list/data = list("viruses"= list(F))
reagents.add_reagent("blood", 20, data)
@@ -136,7 +136,7 @@
icon_state = "bottle3"
New()
..()
var/datum/disease/F = new /datum/disease/advance/voice_change(0)
var/datum/disease/F = new /datum/disease/advance/heal(0)
var/list/data = list("viruses"= list(F))
reagents.add_reagent("blood", 20, data)
@@ -6,9 +6,8 @@
name = "hypospray"
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
icon = 'icons/obj/syringe.dmi'
item_state = "hypo1"
item_state = "hypo"
icon_state = "hypo"
var/original_icon_state = "hypo"
amount_per_transfer_from_this = 5
volume = 30
possible_transfer_amounts = null
@@ -34,54 +33,20 @@
user << "\blue You inject [M] with the hypospray."
M << "\red You feel a tiny prick!"
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been injected with [src.name] by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to inject [M.name] ([M.ckey])</font>")
log_attack("<font color='red'>[user.name] ([user.ckey]) injected [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
src.reagents.reaction(M, INGEST)
if(M.reagents)
var/list/injected = list()
for(var/datum/reagent/R in src.reagents.reagent_list)
injected += R.name
var/trans = reagents.trans_to(M, amount_per_transfer_from_this)
user << "\blue [trans] units injected. [reagents.total_volume] units remaining in the hypospray."
return
/obj/item/weapon/reagent_containers/hypospray/ert
name = "emergency hypospray"
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
amount_per_transfer_from_this = 50
volume = 50
var/contained = english_list(injected)
/obj/item/weapon/reagent_containers/hypospray/autoinjector
name = "autoinjector"
desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel."
icon_state = "autoinjector"
original_icon_state = "autoinjector"
item_state = "autoinjector"
amount_per_transfer_from_this = 5
volume = 5
log_attack("<font color='red'>[user.name] ([user.ckey]) injected [M.name] ([M.ckey]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])</font>")
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been injected ([contained]) with [src.name] by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to inject [M.name] ([M.ckey]) with [contained]</font>")
/obj/item/weapon/reagent_containers/hypospray/autoinjector/New()
..()
reagents.remove_reagent("tricordrazine", 30)
reagents.add_reagent("inaprovaline", 5)
update_icon()
return
/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M as mob, mob/user as mob)
..()
update_icon()
return
/obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon()
if(reagents.total_volume > 0)
icon_state = "[original_icon_state]1"
else
icon_state = "[original_icon_state]0"
/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine()
..()
if(reagents && reagents.reagent_list.len)
for(var/datum/reagent/R in reagents.reagent_list)
usr << "\blue It currently has [R.volume] units of [R.name] stored."
else
usr << "\blue It is currently empty."
return
@@ -15,25 +15,6 @@
if(!icon_state)
icon_state = "pill[rand(1,20)]"
attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/storage/pill_bottle))
var/obj/item/weapon/storage/pill_bottle/P = W
if (P.mode == 1)
for (var/obj/item/weapon/reagent_containers/pill/O in locate(src.x,src.y,src.z))
if(P.contents.len < P.storage_slots)
O.loc = P
P.orient2hud(user)
else
user << "\blue The pill bottle is full."
return
user << "\blue You pick up all the pills."
else
if (P.contents.len < P.storage_slots)
loc = P
P.orient2hud(user)
else
user << "\blue The pill bottle is full."
return
attack_self(mob/user as mob)
return
attack(mob/M as mob, mob/user as mob, def_zone)
@@ -61,6 +61,15 @@
for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red <B>[] squirts something into []'s eyes!</B>", user, target), 1)
src.reagents.reaction(target, TOUCH)
var/mob/M = target
var/R
if(src.reagents)
for(var/datum/reagent/A in src.reagents.reagent_list)
R += A.id + " ("
R += num2text(A.volume) + "),"
user.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])"
M.attack_log += "\[[time_stamp()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])"
log_attack("\[[time_stamp()]\] <b>[user]/[user.ckey]</b> squirted <b>[M]/[M.ckey]</b> with ([R])")
trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
user << "\blue You transfer [trans] units of the solution."
@@ -59,7 +59,7 @@
return
if(ismob(target))//Blood!
if(istype(target, /mob/living/carbon/metroid))
if(istype(target, /mob/living/carbon/slime))
user << "\red You are unable to locate any blood."
return
if(src.reagents.has_reagent("blood"))
@@ -128,7 +128,7 @@
user << "\red [target] is empty."
return
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/metroid_core))
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/slime_extract))
user << "\red You cannot directly remove reagents from this object."
return
@@ -146,17 +146,13 @@
if(istype(target, /obj/item/weapon/implantcase/chem))
return
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/metroid_core) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/cigpacket))
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes))
user << "\red You cannot directly fill this object."
return
if(target.reagents.total_volume >= target.reagents.maximum_volume)
user << "\red [target] is full."
return
if(istype(target, /obj/item/metroid_core))
var/obj/item/metroid_core/core = target
core.Flush = 30 // reset flush counter
if(ismob(target) && target != user)
for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red <B>[] is trying to inject []!</B>", user, target), 1)
@@ -188,7 +184,7 @@
update_icon()
var/rounded_vol = round(reagents.total_volume,5)
overlays = null
overlays.Cut()
if(ismob(loc))
var/injoverlay
switch(mode)
@@ -203,3 +203,15 @@
/obj/structure/reagent_dispensers/beerkeg/blob_act()
explosion(src.loc,0,3,5,7,10)
del(src)
/obj/structure/reagent_dispensers/virusfood
name = "Virus Food Dispenser"
desc = "A dispenser of virus food."
icon = 'icons/obj/objects.dmi'
icon_state = "virusfoodtank"
amount_per_transfer_from_this = 10
anchored = 1
New()
..()
reagents.add_reagent("virusfood", 1000)
+1
View File
@@ -87,6 +87,7 @@
M.visible_message("<span class='danger'>[M] is hit by the syringe!</span>")
del(D)
break
if(D)
for(var/atom/A in D.loc)
if(A == user) continue