More slime extract uses (#37165)

* More slime extract uses

* all this cleanup

* last lil bit

* finally cleans these up

* sanity

* so it shows up

* maybe this makes it work

* now it will

* adds this

* here too

* oh it's meant to go here

* may as well not drain it either

* oh hey these work

* now it works

* gets rid of this

* here too

* new system

* works like this

* this

* one last time

---------

Co-authored-by: SECBATON-GRIFFON <kanef9x@protonmail.com>
This commit is contained in:
SECBATON GRIFFON
2024-10-02 13:40:39 +01:00
committed by GitHub
parent ff071354b2
commit 5ceaa200ad
22 changed files with 288 additions and 152 deletions

View File

@@ -42,3 +42,27 @@ var/list/qualityByString = list(
#define SPAWN_ON_TURF "turf"
#define SPAWN_ON_LOC "loc"
// Slime extract application flags
#define SLIME_GREY 1
#define SLIME_GOLD 2
#define SLIME_SILVER 4
#define SLIME_METAL 8
#define SLIME_PURPLE 16
#define SLIME_DARKPURPLE 32
#define SLIME_ORANGE 64
#define SLIME_YELLOW 128
#define SLIME_RED 256
#define SLIME_BLUE 512
#define SLIME_DARKBLUE 1024
#define SLIME_PINK 2048
#define SLIME_GREEN 4096
#define SLIME_LIGHTPINK 8192
#define SLIME_BLACK 16384
#define SLIME_OIL 32768
#define SLIME_ADAMANTINE 65536
#define SLIME_BLUESPACE 131072
#define SLIME_PYRITE 262144
#define SLIME_CERULEAN 524288
#define SLIME_SEPIA 1048576
#define ALL_SLIMES 2097151 //sum of above, 2097152 - 1

View File

@@ -329,7 +329,7 @@ Pipelines + Other Objects -> Pipe network
"You hear a ratchet.")
var/obj/item/tool/wrench/socket/thewrench = W
var/datum/gas_mixture/internal_removed = int_air.remove_volume(starting_volume)
if(!thewrench.has_slime)
if(!(thewrench.has_slimes & SLIME_BLUESPACE))
env_air.merge(internal_removed)
else
to_chat(user, "<span class='warning'>You cannot unwrench this [src], it's too exerted due to internal pressure.</span>")

View File

@@ -37,6 +37,7 @@
var/list/reagents_forbidden //List of reagents that will not be transfered to the cooked item if found. reagents_forbidden = list(TOXIN, WATER)
var/list/items //List of items needed, items = list(/obj/item/tool/crowbar, /obj/item/weapon/welder)
var/result //Result of a complete recipe. result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
var/silver_slime_result //Result with a silver slime on the item
var/time = 10 SECONDS //Length of time it takes to complete the recipe. In 10ths of a second
var/priority = 0 //To check which recipe takes priority if they share ingredients
var/cookable_with = COOKABLE_WITH_HEAT //How this recipe can be cooked, eg. COOKABLE_WITH_MICROWAVE (see setup.dm).
@@ -124,7 +125,11 @@
obj: Resulting object.
*/
/datum/recipe/proc/make_food(var/obj/container, var/mob/user)
var/obj/result_obj = new result(container)
var/obj/result_obj
if((container.has_slimes & SLIME_SILVER) && silver_slime_result)
result_obj = new silver_slime_result(container)
else
result_obj = new result(container)
for(var/obj/O in (container.contents - result_obj))
if(O.arcanetampered && istype(container,/obj/machinery/microwave))
var/obj/machinery/microwave/M = container

View File

@@ -13,6 +13,9 @@
flags = OPENCONTAINER | NOREACT
pass_flags = PASSTABLE
log_reagents = 0 //transferred 5u of flour from a flour sack [0x20107e8] to Microwave [0x2007fdd]. transferred 5u of flour from a flour sack [0x20107e8] to Microwave [0x2007fdd]. transferred 5u of flour from a flour sack [0x20107e8] to Microwave [0x2007fdd].
slimeadd_message = "You place the slime extract into the cooking mechanisms"
slimes_accepted = SLIME_SILVER
slimeadd_success_message = "It gives off a distinct shine as a result"
var/operating = 0 // Is it on?
var/opened = 0.0
var/dirty = 0 // = {0..100} Does it need cleaning?

View File

@@ -18,6 +18,9 @@
w_type = RECYK_METAL
melt_temperature = MELTPOINT_STEEL
attack_verb = list("slams", "whacks", "bashes", "thunks", "batters", "bludgeons", "thrashes")
slimeadd_message = "You attach the slime extract to the extinguisher's funnel"
slimes_accepted = SLIME_BLUE
slimeadd_success_message = "It feels much colder now"
var/max_water = 50
var/last_use = 1.0
var/safety = 1
@@ -81,13 +84,6 @@
to_chat(user, "The safety is [safety ? "on" : "off"].")
return
/obj/item/weapon/extinguisher/foam/slime_act(primarytype, mob/user)
..()
if(primarytype == /mob/living/carbon/slime/blue)
has_slime=1
to_chat(user, "You attach the slime extract to the extinguisher's funnel.")
return TRUE
/obj/item/weapon/extinguisher/attackby(obj/item/W, mob/user)
if(user.stat || user.restrained() || user.lying)
return
@@ -274,7 +270,7 @@
R.my_atom = src
reagents.trans_to_holder(R,1)
var/obj/effect/foam/fire/W
if(has_slime)
if(has_slimes & SLIME_BLUE)
W=new /obj/effect/foam/fire/enhanced(get_turf(src),R)
else
W = new /obj/effect/foam/fire(get_turf(src),R)

View File

@@ -23,6 +23,9 @@
slot_flags = SLOT_HEAD
armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0)
body_parts_covered = HEAD
slimeadd_message = "You spread the slime extract on the SRCTAG"
slimes_accepted = SLIME_SILVER
slimeadd_success_message = "It gives off a distinct shine as a result"
var/mob/chef //The mob who most recently added a non-reagent ingredient to or picked up the pan.
var/limit = 10 //Number of ingredients that the pan can hold at once.
var/speed_multiplier = 1 //Can be changed to modify cooking speed.

View File

@@ -91,13 +91,9 @@
starting_materials = list(MAT_IRON = 150)
force = 15.0
throwforce = 12.0
/obj/item/tool/wrench/socket/slime_act(primarytype, mob/user)
..()
if(primarytype == /mob/living/carbon/slime/bluespace)
has_slime=1
to_chat(user, "You shove the slime extract inside \the [src]'s head.")
return TRUE
slimeadd_message = "You shove the slime extract inside SRCTAG's head"
slimes_accepted = SLIME_BLUESPACE
slimeadd_success_message = "A small draft of air sucks into it"
/*
* Screwdriver

View File

@@ -49,8 +49,11 @@ var/global/list/reagents_to_log = list(FUEL, PLASMA, PACID, SACID, AMUTATIONTOXI
var/current_glue_state = GLUE_STATE_NONE
var/last_glue_application = 0
//Does this item have a slime installed?
var/has_slime = 0
//Does this item have slimes installed? Bitflag for each type.
var/has_slimes = 0
var/slimeadd_message = "You add the slime extract to SRCTAG"
var/slimeadd_success_message
var/slimes_accepted = 0
var/on_armory_manifest = FALSE // Does this get included in the armory manifest paper?
var/holds_armory_items = FALSE // Does this check inside the object for stuff to include?
@@ -486,9 +489,13 @@ var/global/list/reagents_to_log = list(FUEL, PLASMA, PACID, SACID, AMUTATIONTOXI
return qdel(src)
/obj/slime_act(primarytype, mob/user)
if(has_slime)
to_chat(user, "\the [src] already has a slime extract attached.")
if(has_slimes & primarytype)
to_chat(user, "\the [src] already has this kind of slime extract attached.")
return FALSE
has_slimes |= primarytype
slimeadd_message = replacetext(slimeadd_message,"SRCTAG","\the [src]")
to_chat(user, "[slimeadd_message][slimeadd_success_message && (slimes_accepted & primarytype) ? ". [slimeadd_success_message]" : ""].")
return TRUE
/obj/singularity_pull(S, current_size, repel = FALSE)
INVOKE_EVENT(src, /event/before_move)

View File

@@ -4,9 +4,8 @@
icon_state = "rpd"
frequency = 1439
id = null
var/has_metal_slime = 0
var/has_yellow_slime = 0
starting_materials = list(MAT_IRON = 75000, MAT_GLASS = 37500)
slimes_accepted = SLIME_METAL|SLIME_YELLOW
var/build_all = 0
var/autowrench = 0
var/obj/item/tool/wrench/internal_wrench = new()
@@ -79,9 +78,9 @@
to_chat(user, "<span class='notice'>To quickly scroll between directions of the selected schematic, use alt+mousewheel.")
to_chat(user, "<span class='notice'>To quickly scroll between layers, use shift+mousewheel.</span>")
to_chat(user, "<span class='notice'>Note that hotkeys like ctrl click do not work while the RPD is held in your active hand!</span>")
if(has_metal_slime)
if(has_slimes & SLIME_METAL)
to_chat(user, "<span class='notice'>The multilayering mode is currently [build_all ? "enabled" : "disabled"].</span>")
if(has_yellow_slime)
if(has_slimes & SLIME_YELLOW)
to_chat(user, "<span class='notice'>The automatic wrenching mode is currently [autowrench ? "enabled" : "disabled"].</span>")
/obj/item/device/rcd/rpd/pickup(var/mob/living/L)
@@ -151,9 +150,9 @@
var/multitext=""
var/autotext=""
if (has_metal_slime)//build_all
if (has_slimes & SLIME_METAL)//build_all
multitext=" <div style='margin-top:1em;'><b>Multilayer Mode: </b><a href='?src=\ref[interface];toggle_multi=1'><span class='[build_all? "schem_selected" : "schem"]'>[build_all ? "On" : "Off"]</span></a></div> "
if (has_yellow_slime)//build_all
if (has_slimes & SLIME_YELLOW)//build_all
autotext=" <div style='margin-top:1em;'><b>Autowrench: </b><a href='?src=\ref[interface];toggle_auto=1'><span class='[autowrench? "schem_selected" : "schem"]'>[autowrench ? "On" : "Off"]</span></a></div> "
for(var/client/client in interface.clients)
@@ -175,11 +174,11 @@
/obj/item/device/rcd/rpd/Topic(var/href, var/list/href_list)
..()
if (href_list["toggle_auto"])
autowrench=has_yellow_slime ? !autowrench : 0
autowrench=has_slimes & SLIME_METAL ? !autowrench : 0
rebuild_ui()
return TRUE
if (href_list["toggle_multi"])
build_all=has_metal_slime ? !build_all : 0
build_all=has_slimes & SLIME_METAL ? !build_all : 0
rebuild_ui()
return TRUE
@@ -233,25 +232,16 @@
return selected.Topic(href, href_list)
/obj/item/device/rcd/rpd/slime_act(primarytype, mob/user)
if(primarytype == /mob/living/carbon/slime/metal)
if(has_metal_slime)
to_chat(user, "It already has a slime extract attached.")
return FALSE
else
has_metal_slime=1
if(primarytype == SLIME_METAL)
slimeadd_message = "You jam the slime extract into the RPD's fabricator."
if(primarytype == SLIME_YELLOW)
slimeadd_message = "You jam the slime extract into the RPD's output nozzle."
if(..())
if(primarytype == SLIME_METAL)
verbs += /obj/item/device/rcd/rpd/proc/multilayer
to_chat(user, "You jam the slime extract into the RPD's fabricator.")
return TRUE
if(primarytype == /mob/living/carbon/slime/yellow)
if(has_yellow_slime)
to_chat(user, "It already has a slime extract attached.")
return FALSE
else
has_yellow_slime=1
if(primarytype == SLIME_YELLOW)
verbs += /obj/item/device/rcd/rpd/proc/autowrench
to_chat(user, "You jam the slime extract into the RPD's output nozzle.")
return TRUE
return TRUE
/obj/item/device/rcd/rpd/afterattack(var/atom/A, var/mob/user)
if(!selected)

View File

@@ -14,24 +14,29 @@
reagents = list(FLOUR = 5)
items = list(/obj/item/weapon/reagent_containers/food/snacks/egg)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal/frosted
/datum/recipe/jellydonut
reagents = list(BERRYJUICE = 5, FLOUR = 5)
items = list(/obj/item/weapon/reagent_containers/food/snacks/egg)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/frosted
/datum/recipe/jellydonut/slime
reagents = list(SLIMEJELLY = 5, FLOUR = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/frosted
/datum/recipe/jellydonut/cherry
reagents = list(CHERRYJELLY = 5, FLOUR = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/frosted
/datum/recipe/chaosdonut
reagents = list(FROSTOIL = 5, CAPSAICIN = 5, FLOUR = 5)
items = list(/obj/item/weapon/reagent_containers/food/snacks/egg)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos/frosted
/datum/recipe/bagel
reagents = list(FLOUR = 5)
@@ -846,6 +851,7 @@
/datum/recipe/popcorn
items = list(/obj/item/weapon/reagent_containers/food/snacks/grown/corn)
result = /obj/item/weapon/reagent_containers/food/snacks/popcorn
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/popcorn/allpopped
/datum/recipe/syntisteak
reagents = list(SODIUMCHLORIDE = 1, BLACKPEPPER = 1)
@@ -1157,6 +1163,7 @@
reagents = list(FLOUR = 10)
items = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet)
result = /obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie/perfect
/datum/recipe/asspie
reagents = list(FLOUR = 10)
@@ -1369,6 +1376,7 @@
reagents = list(FLOUR = 5)
items = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet)
result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/perfect
/datum/recipe/chawanmushi
reagents = list(WATER = 5, SOYSAUCE = 5)
@@ -1419,6 +1427,7 @@
/datum/recipe/wishsoup
reagents = list(WATER = 20)
result = /obj/item/weapon/reagent_containers/food/snacks/wishsoup
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/wishsoup/perfect
/datum/recipe/stew
reagents = list(WATER = 10)
@@ -1552,11 +1561,13 @@
reagents = list(ZAMMILD = 5, CREAM = 5)
items = list()
result = /obj/item/weapon/reagent_containers/food/snacks/mothershipbroth
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/mothershipbroth/abducted
/datum/recipe/mothershipbroth_spicy
reagents = list(ZAMSPICYTOXIN = 5, CREAM = 5)
items = list()
result = /obj/item/weapon/reagent_containers/food/snacks/mothershipbroth_spicy
silver_slime_result = /obj/item/weapon/reagent_containers/food/snacks/mothershipbroth_spicy/abducted
/datum/recipe/cheesybroth
reagents = list(ZAMMILD = 5, CREAM = 5)

View File

@@ -9,11 +9,12 @@ var/list/hydro_trays = list()
flags = OPENCONTAINER | PROXMOVE // PROXMOVE could be added and removed as necessary if it causes lag
volume = 100
layer = HYDROPONIC_TRAY_LAYER
use_power = MACHINE_POWER_USE_IDLE
idle_power_usage = 10
active_power_usage = 50
slimeadd_message = "You attach the slime extract to SRCTAG's internal mechanisms"
slimes_accepted = SLIME_GREEN
slimeadd_success_message = "A faint whiff of clonexadone is emitted from them"
machine_flags = SCREWTOGGLE | CROWDESTROY | WRENCHMOVE | FIXED2WORK | MULTIOUTPUT
var/draw_warnings = 1 // Set to 0 to stop it from drawing the alert lights.
@@ -471,13 +472,6 @@ var/list/hydro_trays = list()
if (.)
power_change()//calls update_icon()
/obj/machinery/portable_atmospherics/hydroponics/slime_act(primarytype,mob/user)
..()
if(primarytype == /mob/living/carbon/slime/green)
has_slime=1
to_chat(user, "You attach the slime extract to \the [src]'s internal mechanisms.")
return TRUE
/obj/machinery/portable_atmospherics/hydroponics/wind_act(var/differential, var/list/connecting_turfs)
if (seed)
seed.wind_act(src, differential, connecting_turfs)

View File

@@ -84,7 +84,7 @@
lastproduce--
// Advance plant age.
if(!has_slime)
if(!(has_slimes & SLIME_GREEN))
if(skip_aging)
skip_aging--
else

View File

@@ -82,17 +82,20 @@
origin_tech = Tc_MATERIALS + "=1;" + Tc_ENGINEERING + "=1"
attack_verb = list("hits", "pierces", "slices", "attacks")
toolsounds = list('sound/weapons/Genhit.ogg')
slimeadd_message = "You mold the slime extract around the tip of SRCTAG"
hitsound = "sound/weapons/bloodyslice.ogg"
slimes_accepted = SLIME_OIL|SLIME_PYRITE
var/drill_verb = "picking"
var/diggables = DIG_ROCKS
var/excavation_amount = 100
/obj/item/weapon/pickaxe/slime_act(primarytype, mob/user)
..()
if(primarytype == /mob/living/carbon/slime/oil)
has_slime=1
to_chat(user, "You mold the slime extract around the tip of \the [src].")
return TRUE
switch(primarytype)
if(SLIME_OIL)
slimeadd_success_message = "It now has a strangely dense gravitational aura to it"
if(SLIME_PYRITE)
slimeadd_success_message = "It shines spectacularly"
. = ..()
/obj/item/weapon/pickaxe/hammer
name = "sledgehammer"

View File

@@ -77,6 +77,7 @@ var/global/list/mineralSpawnChance[]
var/rockernaut = NONE
var/minimum_mine_time = 0
var/mining_difficulty = MINE_DIFFICULTY_NORM
var/fortune_multiplier = 1 //how much extra mineral comes from a pyrite slime enhancement
/turf/unsimulated/mineral/snow
@@ -270,6 +271,7 @@ var/list/icon_state_to_appearance = list()
name = "rock"
return
name = "\improper [mineral.display_name] deposit"
fortune_multiplier = mineral.fortune_multiplier
update_icon()
/turf/unsimulated/mineral/attackby(obj/item/weapon/W, mob/user)
@@ -400,12 +402,12 @@ var/list/icon_state_to_appearance = list()
B.geological_data = geologic_data
if(P.has_slime)
if(P.has_slimes & SLIME_OIL)
for(var/turf/unsimulated/mineral/M in range(user,1))
M.GetDrilled(safety_override = TRUE, driller = user)
M.GetDrilled(safety_override = TRUE, driller = user, multiplier = (P.has_slimes & SLIME_PYRITE) ? 2 : 1)
return
GetDrilled(artifact_destroyed)
GetDrilled(artifact_destroyed, multiplier = (P.has_slimes & SLIME_PYRITE) ? 2 : 1)
return
@@ -488,9 +490,13 @@ var/list/icon_state_to_appearance = list()
* disabled after drilling (ie. gibtonite will be immediately disarmed).
* driller: Whatever is doing the drilling. Used for some messages.
*/
/turf/unsimulated/mineral/proc/GetDrilled(var/artifact_fail = TRUE, var/safety_override = FALSE, var/atom/driller)
/turf/unsimulated/mineral/proc/GetDrilled(var/artifact_fail = TRUE, var/safety_override = FALSE, var/atom/driller, var/multiplier = 1)
if (mineral && mineral.result_amount)
DropMineral()
if(multiplier >= 2 && fortune_multiplier >= 2)
for(var/i in 1 to round(fortune_multiplier*(multiplier/2)))
DropMineral()
else
DropMineral()
switch(rockernaut)
if(TURF_CONTAINS_ROCKERNAUT)
var/mob/living/simple_animal/hostile/asteroid/rockernaut/R = new(src)
@@ -514,7 +520,7 @@ var/list/icon_state_to_appearance = list()
ArtifactRepercussion(src, usr, "", "[artifact_find.artifact_find_type]")
if(artifact_fail && !mineral)
if(prob(1))
if(prob(multiplier))
switch(polarstar)
if(0)
new/obj/item/weapon/gun/energy/polarstar(src)
@@ -525,7 +531,7 @@ var/list/icon_state_to_appearance = list()
visible_message("<span class='notice'>Something came out of the wall! Looks like scrap metal.</span>")
polarstar = 2
if(rand(1,500) == 1)
if(rand(1,round(500/multiplier)) == 1)
visible_message("<span class='notice'>An old dusty crate was buried within!</span>")
DropAbandonedCrate()
@@ -885,6 +891,7 @@ var/list/icon_state_to_appearance = list()
name = "Uranium deposit"
icon_state = "rock_Uranium"
mineral = new /mineral/uranium
fortune_multiplier = 2
/turf/unsimulated/mineral/iron
@@ -897,18 +904,21 @@ var/list/icon_state_to_appearance = list()
name = "Diamond deposit"
icon_state = "rock_Diamond"
mineral = new /mineral/diamond
fortune_multiplier = 4
/turf/unsimulated/mineral/gold
name = "Gold deposit"
icon_state = "rock_Gold"
mineral = new /mineral/gold
fortune_multiplier = 2
/turf/unsimulated/mineral/silver
name = "Silver deposit"
icon_state = "rock_Silver"
mineral = new /mineral/silver
fortune_multiplier = 2
/turf/unsimulated/mineral/plasma
@@ -921,12 +931,14 @@ var/list/icon_state_to_appearance = list()
name = "Bananium deposit"
icon_state = "rock_Clown"
mineral = new /mineral/clown
fortune_multiplier = 8
/turf/unsimulated/mineral/phazon
name = "Phazite deposit"
icon_state = "rock_Phazon"
mineral = new /mineral/phazon
fortune_multiplier = 8
/turf/unsimulated/mineral/pharosium
name = "Pharosium deposit"
@@ -972,6 +984,7 @@ var/list/icon_state_to_appearance = list()
name = "Telecrystal deposit"
icon_state = "rock_Telecrystal"
mineral = new /mineral/telecrystal
fortune_multiplier = 8
/turf/unsimulated/mineral/mauxite
name = "Mauxite deposit"
@@ -997,6 +1010,7 @@ var/list/icon_state_to_appearance = list()
name = "Silver deposit"
icon_state = "rock_Silver"
mineral = new /mineral/mythril
fortune_multiplier = 8
////////////////////////////////Gibtonite
/turf/unsimulated/mineral/gibtonite
@@ -1079,7 +1093,7 @@ var/list/icon_state_to_appearance = list()
det_time = 0
visible_message("<span class='notice'>The chain reaction was stopped! The gibtonite had [src.det_time] reactions left till the explosion!</span>")
/turf/unsimulated/mineral/gibtonite/GetDrilled(var/artifact_fail = TRUE, var/safety_override = FALSE, var/atom/driller)
/turf/unsimulated/mineral/gibtonite/GetDrilled(var/artifact_fail = TRUE, var/safety_override = FALSE, var/atom/driller, var/multiplier = 1)
if(stage == 0 && mineral.result_amount >= 1) //Gibtonite deposit is activated
playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1)
explosive_reaction()

View File

@@ -20,6 +20,8 @@ var/list/name_to_mineral
var/spread = 1
///Chance of spreading in any direction
var/spread_chance
///Fortune multiplier for pyrite extract pickaxes
var/fortune_multiplier
///Path to the resultant ore.
var/ore
@@ -49,6 +51,7 @@ var/list/name_to_mineral
name = "Uranium"
result_amount = 5
spread_chance = 10
fortune_multiplier = 2
ore = /obj/item/stack/ore/uranium
/mineral/iron
@@ -61,24 +64,28 @@ var/list/name_to_mineral
name = "Diamond"
result_amount = 5
spread_chance = 10
fortune_multiplier = 4
ore = /obj/item/stack/ore/diamond
/mineral/gold
name = "Gold"
result_amount = 5
spread_chance = 10
fortune_multiplier = 2
ore = /obj/item/stack/ore/gold
/mineral/silver
name = "Silver"
result_amount = 5
spread_chance = 10
fortune_multiplier = 2
ore = /obj/item/stack/ore/silver
/mineral/electrum
name = "Electrum"
result_amount = 5
spread_chance = 10
fortune_multiplier = 2
ore = /obj/item/stack/ore/electrum
/mineral/plasma
@@ -98,6 +105,7 @@ var/list/name_to_mineral
name = "Clown"
result_amount = 3
spread = 0
fortune_multiplier = 8
ore = /obj/item/stack/ore/clown
/mineral/phazon
@@ -105,6 +113,7 @@ var/list/name_to_mineral
name = "Phazon"
result_amount = 3
spread = 0
fortune_multiplier = 8
ore = /obj/item/stack/ore/phazon
/mineral/pharosium
@@ -159,6 +168,7 @@ var/list/name_to_mineral
name = "Telecrystal"
result_amount = 1
spread_chance = 5
fortune_multiplier = 8
ore = /obj/item/stack/ore/telecrystal
/mineral/mauxite
@@ -237,4 +247,5 @@ var/list/name_to_mineral
name = "Mythril"
result_amount = 4
spread = 2
fortune_multiplier = 8
ore = /obj/item/stack/ore/mythril

View File

@@ -489,7 +489,7 @@
mech_flags = MECH_SCAN_FAIL
var/Uses = 1 // uses before it goes inert
var/enhanced = 0 //has it been enhanced before?
var/primarytype = /mob/living/carbon/slime
var/primarytype = SLIME_GREY
var/list/reactive_reagents = list() //easier lookup for reaction checks in grenades
var/icon_state_backup //backup icon_state_name to switch between multiple use sprites
@@ -551,127 +551,127 @@
/obj/item/slime_extract/grey
name = "grey slime extract"
icon_state = "grey slime extract"
primarytype = /mob/living/carbon/slime
primarytype = SLIME_GREY
reactive_reagents = list(PLASMA,BLOOD)
/obj/item/slime_extract/gold
name = "gold slime extract"
icon_state = "gold slime extract"
primarytype = /mob/living/carbon/slime/gold
primarytype = SLIME_GOLD
reactive_reagents = list(PLASMA,BLOOD,WATER)
/obj/item/slime_extract/silver
name = "silver slime extract"
icon_state = "silver slime extract"
primarytype = /mob/living/carbon/slime/silver
primarytype = SLIME_SILVER
reactive_reagents = list(PLASMA,WATER,CARBON)
/obj/item/slime_extract/metal
name = "metal slime extract"
icon_state = "metal slime extract"
primarytype = /mob/living/carbon/slime/metal
primarytype = SLIME_METAL
reactive_reagents = list(PLASMA,COPPER,TUNGSTEN,RADIUM,CARBON)
/obj/item/slime_extract/purple
name = "purple slime extract"
icon_state = "purple slime extract"
primarytype = /mob/living/carbon/slime/purple
primarytype = SLIME_PURPLE
reactive_reagents = list(PLASMA,SUGAR)
/obj/item/slime_extract/darkpurple
name = "dark purple slime extract"
icon_state = "dark purple slime extract"
primarytype = /mob/living/carbon/slime/darkpurple
primarytype = SLIME_DARKPURPLE
reactive_reagents = list(PLASMA)
/obj/item/slime_extract/orange
name = "orange slime extract"
icon_state = "orange slime extract"
primarytype = /mob/living/carbon/slime/orange
primarytype = SLIME_ORANGE
reactive_reagents = list(PLASMA,BLOOD)
/obj/item/slime_extract/yellow
name = "yellow slime extract"
icon_state = "yellow slime extract"
primarytype = /mob/living/carbon/slime/yellow
primarytype = SLIME_YELLOW
reactive_reagents = list(PLASMA,BLOOD,WATER)
/obj/item/slime_extract/red
name = "red slime extract"
icon_state = "red slime extract"
primarytype = /mob/living/carbon/slime/red
primarytype = SLIME_RED
reactive_reagents = list(PLASMA,BLOOD)
/obj/item/slime_extract/blue
name = "blue slime extract"
icon_state = "blue slime extract"
primarytype = /mob/living/carbon/slime/blue
primarytype = SLIME_BLUE
reactive_reagents = list(PLASMA)
/obj/item/slime_extract/darkblue
name = "dark blue slime extract"
icon_state = "dark blue slime extract"
primarytype = /mob/living/carbon/slime/darkblue
primarytype = SLIME_DARKBLUE
reactive_reagents = list(PLASMA,BLOOD)
/obj/item/slime_extract/pink
name = "pink slime extract"
icon_state = "pink slime extract"
primarytype = /mob/living/carbon/slime/pink
primarytype = SLIME_PINK
reactive_reagents = list(PLASMA)
/obj/item/slime_extract/green
name = "green slime extract"
icon_state = "green slime extract"
primarytype = /mob/living/carbon/slime/green
primarytype = SLIME_GREEN
reactive_reagents = list(PLASMA,IRON,BLOOD,WATER)
/obj/item/slime_extract/lightpink
name = "light pink slime extract"
icon_state = "light pink slime extract"
primarytype = /mob/living/carbon/slime/lightpink
primarytype = SLIME_LIGHTPINK
reactive_reagents = list(PLASMA,BLOOD)
/obj/item/slime_extract/black
name = "black slime extract"
icon_state = "black slime extract"
primarytype = /mob/living/carbon/slime/black
primarytype = SLIME_BLACK
reactive_reagents = list(PLASMA,GOLD,WATER,SUGAR,BLOOD)
/obj/item/slime_extract/oil
name = "oil slime extract"
icon_state = "oil slime extract"
primarytype = /mob/living/carbon/slime/oil
primarytype = SLIME_OIL
reactive_reagents = list(PLASMA,BLOOD)
/obj/item/slime_extract/adamantine
name = "adamantine slime extract"
icon_state = "adamantine slime extract"
primarytype = /mob/living/carbon/slime/adamantine
primarytype = SLIME_ADAMANTINE
reactive_reagents = list(PLASMA,CARBON,GOLD,SILVER)
/obj/item/slime_extract/bluespace
name = "bluespace slime extract"
icon_state = "bluespace slime extract"
primarytype = /mob/living/carbon/slime/bluespace
primarytype = SLIME_BLUESPACE
reactive_reagents = list(PLASMA,BLOOD)
/obj/item/slime_extract/pyrite
name = "pyrite slime extract"
icon_state = "pyrite slime extract"
primarytype = /mob/living/carbon/slime/pyrite
primarytype = SLIME_PYRITE
reactive_reagents = list(PLASMA,BLOOD)
/obj/item/slime_extract/cerulean
name = "cerulean slime extract"
icon_state = "cerulean slime extract"
primarytype = /mob/living/carbon/slime/cerulean
primarytype = SLIME_CERULEAN
reactive_reagents = list(PLASMA,BLOOD)
/obj/item/slime_extract/sepia
name = "sepia slime extract"
icon_state = "sepia slime extract"
primarytype = /mob/living/carbon/slime/sepia
primarytype = SLIME_SEPIA
reactive_reagents = list(PLASMA,BLOOD,PHAZON)
////Pet Slime Creation///

View File

@@ -165,6 +165,9 @@
w_type = RECYK_ELECTRONIC
min_harm_label = 3
harm_label_examine = list("<span class='info'>A tiny label is on the lens.</span>", "<span class='warning'>A label covers the lens!</span>")
slimeadd_message = "You add the slime extract to the camera lens"
slimes_accepted = SLIME_SEPIA
slimeadd_success_message = "It now has a sepia tinge"
var/pictures_max = 10
var/pictures_left = 10
var/on = TRUE
@@ -196,6 +199,13 @@
QDEL_NULL(flashbulb)
..()
/obj/item/device/camera/slime_act(primarytype, mob/user)
if(primarytype == SLIME_SEPIA && ..())
var/obj/item/device/camera/sepia/S = new(user.loc)
if(src in user.held_items)
user.put_in_hands(S)
qdel(src)
/obj/item/device/camera/sepia
name = "camera"
desc = "This polaroid camera takes pictures in sepia. It's for the aesthetic."

View File

@@ -7,6 +7,8 @@
density = 1
anchored = 0
use_power = MACHINE_POWER_USE_NONE
slimeadd_message = "You add the slime extract to the fuel port"
slimes_accepted = SLIME_GREY
machine_flags = SCREWTOGGLE | CROWDESTROY | WRENCHMOVE | FIXED2WORK | EMAGGABLE
@@ -28,9 +30,12 @@
return
/obj/machinery/power/port_gen/process()
if(active && HasFuel() && !crit_fail && anchored && powernet)
add_avail(power_gen * power_output)
UseFuel()
if(active && !crit_fail && anchored && powernet)
if(HasFuel())
add_avail(power_gen * power_output)
UseFuel()
if(has_slimes & slimes_accepted)
add_avail(power_gen)
src.updateDialog()
else
@@ -38,6 +43,13 @@
update_icon()
handleInactive()
/obj/machinery/power/port_gen/slime_act(primarytype, mob/user)
if((slimes_accepted&(has_slimes|primarytype)) == slimes_accepted)
slimeadd_success_message = "It churns comfortably"
else if(slimes_accepted & primarytype)
slimeadd_success_message = "It begins to [pick("nudge","budge","rumble")] slightly"
. = ..()
/obj/machinery/power/port_gen/attack_hand(mob/user as mob)
if(..())
return
@@ -53,6 +65,7 @@
/obj/machinery/power/port_gen/pacman
name = "P.A.C.M.A.N.-type Portable Generator"
slimes_accepted = SLIME_DARKPURPLE
var/sheets = 0
var/max_sheets = 100
var/sheet_name = ""
@@ -302,6 +315,7 @@
power_gen = 15000
time_per_sheet = 65
board_path = "/obj/item/weapon/circuitboard/pacman/super"
slimes_accepted = SLIME_DARKPURPLE|SLIME_METAL
/obj/machinery/power/port_gen/pacman/super/overheat()
explosion(src.loc, 3, 3, 3, -1)
@@ -313,6 +327,7 @@
power_gen = 40000
time_per_sheet = 80
board_path = "/obj/item/weapon/circuitboard/pacman/mrs"
slimes_accepted = SLIME_DARKPURPLE|SLIME_METAL|SLIME_ADAMANTINE
/obj/machinery/power/port_gen/pacman/mrs/overheat()
explosion(src.loc, 4, 4, 4, -1)
@@ -325,6 +340,7 @@
power_gen = 100000
time_per_sheet = 100
board_path = "/obj/item/weapon/circuitboard/pacman/baby"
slimes_accepted = SLIME_DARKPURPLE|SLIME_METAL|SLIME_ADAMANTINE|SLIME_PYRITE
/obj/machinery/power/port_gen/pacman/baby/overheat()
explosion(src.loc, 5, 5, 5, -1)
@@ -337,6 +353,7 @@
power_gen = 250000 //you're burning phazon here, you madman
time_per_sheet = 250
board_path = "/obj/item/weapon/circuitboard/pacman/professor"
slimes_accepted = SLIME_DARKPURPLE|SLIME_METAL|SLIME_ADAMANTINE|SLIME_PYRITE|SLIME_BLACK
/obj/machinery/power/port_gen/pacman/professor/overheat()
explosion(src.loc, 6, 6, 6, -1)

View File

@@ -9,6 +9,9 @@
icon_state = "dispenser"
use_power = MACHINE_POWER_USE_IDLE
idle_power_usage = 40
slimeadd_message = "You throw the slime into the dispenser's tank"
slimes_accepted = SLIME_BLACK|SLIME_PYRITE
slimeadd_success_message = "A new option appears on the dispenser screen"
var/energy = 0
var/max_energy = 50
var/rechargerate = 2
@@ -20,6 +23,7 @@
var/useramount = 30 // Last used amount
var/required_quirk = MODULE_CAN_HANDLE_CHEMS
var/template_path = "chem_dispenser.tmpl"
var/list/slime_reagents = list("black" = DSYRUP, "pyrite" = COLORFUL_REAGENT)
var/list/dispensable_reagents = list(
HYDROGEN,
LITHIUM,
@@ -385,12 +389,13 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY
return
/obj/machinery/chem_dispenser/slime_act(primarytype, mob/user)
..()
if(primarytype == /mob/living/carbon/slime/black)
has_slime=1
dispensable_reagents.Add(DSYRUP)
to_chat(user, "You throw the slime into the dispenser's tank.")
return TRUE
. = ..()
if(. && (slimes_accepted & primarytype))
switch(primarytype)
if(SLIME_BLACK)
dispensable_reagents.Add(slime_reagents["black"])
if(SLIME_PYRITE)
dispensable_reagents.Add(slime_reagents["pyrite"])
/obj/machinery/chem_dispenser/attack_paw(mob/user as mob)
return src.attack_hand(user)
@@ -449,6 +454,7 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY
icon_state = "brewer"
pass_flags = PASSTABLE
required_quirk = MODULE_CAN_HANDLE_FOOD
slime_reagents = list("black" = BLOOD, "pyrite" = BANANA)
dispensable_reagents = list(
TEA = COOKTEMP_READY,
GREENTEA = COOKTEMP_READY,
@@ -496,6 +502,7 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY
pass_flags = PASSTABLE
beaker_height = -5
required_quirk = MODULE_CAN_HANDLE_FOOD
slime_reagents = list("black" = TRICORDRAZINE, "pyrite" = BANANA)
dispensable_reagents = list(SPACEMOUNTAINWIND, SODAWATER, LEMON_LIME, DR_GIBB, COLA, ICE = T0C, TONIC)
/obj/machinery/chem_dispenser/soda_dispenser/New()
@@ -531,6 +538,7 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY
pass_flags = PASSTABLE
beaker_height = -6
required_quirk = MODULE_CAN_HANDLE_FOOD
slime_reagents = list("black" = TRICORDRAZINE, "pyrite" = BANANA)
dispensable_reagents = list(
BEER,
WHISKEY,

View File

@@ -1076,6 +1076,7 @@
icon_state = "donut1"
food_flags = FOOD_SWEET | FOOD_ANIMAL | FOOD_DIPPABLE //eggs are used
var/soggy = 0
var/frostchance = 30
base_crumb_chance = 30
//Called in drinks.dm attackby
@@ -1101,11 +1102,14 @@
reagents.add_reagent(NUTRIMENT, 3)
reagents.add_reagent(SPRINKLES, 1)
src.bitesize = 3
if(prob(30))
if(prob(frostchance))
src.icon_state = "donut2"
src.name = "frosted donut"
reagents.add_reagent(SPRINKLES, 2)
/obj/item/weapon/reagent_containers/food/snacks/donut/normal/frosted
frostchance = 100
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos
name = "Chaos Donut"
desc = "Like life, it never quite tastes the same."
@@ -1136,11 +1140,13 @@
reagents.add_reagent(BERRYJUICE, 3)
if(10)
reagents.add_reagent(TRICORDRAZINE, 3)
if(prob(30))
if(prob(frostchance))
icon_state = "donut2"
name = "frosted chaos donut"
reagents.add_reagent(SPRINKLES, 2)
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/frosted
frostchance = 100
/obj/item/weapon/reagent_containers/food/snacks/donut/jelly
name = "jelly donut"
@@ -1153,11 +1159,14 @@
reagents.add_reagent(NUTRIMENT, 3)
reagents.add_reagent(SPRINKLES, 1)
reagents.add_reagent(BERRYJUICE, 5)
if(prob(30))
if(prob(frostchance))
icon_state = "jdonut2"
name = "Frosted Jelly Donut"
reagents.add_reagent(SPRINKLES, 2)
/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/frosted
frostchance = 100
/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
name = "jelly donut"
desc = "You jelly?"
@@ -1169,11 +1178,14 @@
reagents.add_reagent(SPRINKLES, 1)
reagents.add_reagent(SLIMEJELLY, 5)
bitesize = 5
if(prob(30))
if(prob(frostchance))
icon_state = "jdonut2"
name = "Frosted Jelly Donut"
reagents.add_reagent(SPRINKLES, 2)
/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/frosted
frostchance = 100
/obj/item/weapon/reagent_containers/food/snacks/donutiron //not a subtype of donuts to avoid inheritance
name = "ironman donut"
icon_state = "irondonut"
@@ -1196,11 +1208,14 @@
reagents.add_reagent(NUTRIMENT, 3)
reagents.add_reagent(SPRINKLES, 1)
reagents.add_reagent(CHERRYJELLY, 5)
if(prob(30))
if(prob(frostchance))
icon_state = "jdonut2"
name = "Frosted Jelly Donut"
reagents.add_reagent(SPRINKLES, 2)
/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/frosted
frostchance = 100
/obj/item/weapon/reagent_containers/food/snacks/bagel
name = "bagel"
desc = "You can almost imagine the center is a black hole."
@@ -2068,10 +2083,12 @@
name = "plump pie"
desc = "I bet you love stuff made out of plump helmets!"
icon_state = "plump_pie"
var/exceptionalprob = 10
/obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie/New()
..()
reagents.clear_reagents()
if(prob(10))
if(prob(exceptionalprob))
name = "exceptional plump pie"
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!"
reagents.add_reagent(NUTRIMENT, 8)
@@ -2081,6 +2098,9 @@
reagents.add_reagent(NUTRIMENT, 8)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie/perfect
exceptionalprob = 100
/obj/item/weapon/reagent_containers/food/snacks/pie/xemeatpie
name = "Xeno-pie"
icon_state = "xenomeatpie"
@@ -2184,13 +2204,15 @@
icon_state = "popcorn"
trash = /obj/item/trash/popcorn
var/unpopped = 0
var/unpopped_min = 1
var/unpopped_max = 10
filling_color = "#EFE5D4"
valid_utensils = 0
/obj/item/weapon/reagent_containers/food/snacks/popcorn/New()
..()
eatverb = pick("bite","crunch","nibble","gnaw","gobble","chomp")
unpopped = rand(1,10)
unpopped = rand(unpopped_min,unpopped_max)
reagents.add_reagent(NUTRIMENT, 2)
bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0
@@ -2200,6 +2222,11 @@
unpopped = max(0, unpopped-1)
reagents.add_reagent(SACID, 0.1) //only a little tingle.
/obj/item/weapon/reagent_containers/food/snacks/popcorn/allpopped
desc = "Now let's find some pure kino. These ones seem evenly cooked to perfection."
unpopped_min = 0
unpopped_max = 0
/obj/item/weapon/reagent_containers/food/snacks/sosjerky
name = "\improper Scaredy's Private Reserve Beef Jerky"
icon_state = "sosjerky"
@@ -2907,15 +2934,19 @@
crumb_icon = "dribbles"
filling_color = "#DEF7F5"
valid_utensils = UTENSILE_SPOON
var/wishprob = 25
/obj/item/weapon/reagent_containers/food/snacks/wishsoup/New()
..()
reagents.add_reagent(WATER, 10)
bitesize = 5
if(prob(25))
if(prob(wishprob))
src.desc = "A wish come true!"
reagents.add_reagent(NUTRIMENT, 8)
/obj/item/weapon/reagent_containers/food/snacks/wishsoup/perfect
wishprob = 100
/obj/item/weapon/reagent_containers/food/snacks/avocadosoup
name = "Avocado Soup"
desc = "May be served either hot or cold."
@@ -3668,10 +3699,11 @@
desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour."
icon_state = "phelmbiscuit"
food_flags = FOOD_DIPPABLE
var/exceptionalprob = 10
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/New()
..()
if(prob(10))
if(prob(exceptionalprob))
name = "exceptional plump helmet biscuit"
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!"
reagents.add_reagent(NUTRIMENT, 8)
@@ -3681,6 +3713,9 @@
reagents.add_reagent(NUTRIMENT, 5)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/perfect
exceptionalprob = 100
/obj/item/weapon/reagent_containers/food/snacks/chawanmushi
name = "chawanmushi"
desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat."
@@ -8345,11 +8380,12 @@ var/global/list/bomb_like_items = list(/obj/item/device/transfer_valve, /obj/ite
crumb_icon = "dribbles"
filling_color = "#B38B26"
valid_utensils = UTENSILE_SPOON
var/abductionchance = 10
/obj/item/weapon/reagent_containers/food/snacks/mothershipbroth/New()
..()
reagents.clear_reagents()
if(prob(10))
if(prob(abductionchance))
name = "Abducted Mothership Broth"
desc = "An unidentified microwave object has abducted your broth and made it slightly more nutritious!"
icon_state = "mothershipbroth_ufo"
@@ -8362,6 +8398,9 @@ var/global/list/bomb_like_items = list(/obj/item/device/transfer_valve, /obj/ite
reagents.add_reagent(ZAMMILD, 5)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/mothershipbroth/abducted
abductionchance = 100
/obj/item/weapon/reagent_containers/food/snacks/mothershipbroth_spicy
name = "Mothership Spicy Broth"
desc = "A simple dish of mothership broth. Soothing, but not very nourishing. At least it's spicy."
@@ -8371,11 +8410,12 @@ var/global/list/bomb_like_items = list(/obj/item/device/transfer_valve, /obj/ite
crumb_icon = "dribbles"
filling_color = "#D35A0D"
valid_utensils = UTENSILE_SPOON
var/abductionchance = 10
/obj/item/weapon/reagent_containers/food/snacks/mothershipbroth_spicy/New()
..()
reagents.clear_reagents()
if(prob(10))
if(prob(abductionchance))
name = "Abducted Mothership Spicy Broth"
desc = "An unidentified microwave object has abducted your broth and made it slightly more nutritious!"
icon_state = "mothershipbroth_spicyufo"
@@ -8388,6 +8428,9 @@ var/global/list/bomb_like_items = list(/obj/item/device/transfer_valve, /obj/ite
reagents.add_reagent(ZAMSPICYTOXIN, 5)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/mothershipbroth_spicy/abducted
abductionchance = 100
/obj/item/weapon/reagent_containers/food/snacks/cheesybroth
name = "Mothership Cheesy Broth"
desc = "Traditional mothership broth with some cheese melted into it. Pairs well with a slice of gingi bread."

View File

@@ -15,6 +15,9 @@
amount_per_transfer_from_this = 10
volume = 250
possible_transfer_amounts = null
slimeadd_message = "You drop the slime extract down into the spray nozzle"
slimeadd_success_message = "The reagents inside swell up to the brim"
var/preset_reagent
var/melted = 0
var/delay_spraying = TRUE // Whether to delay the next attack after using it
@@ -22,6 +25,11 @@
//! List of things to avoid spraying on close range. TODO Remove snowflake, handle this in every attackby() properly.
var/list/ignore_spray_types = list(/obj/item/weapon/storage, /obj/structure/table, /obj/structure/rack, /obj/structure/closet, /obj/structure/sink)
/obj/item/weapon/reagent_containers/spray/New()
..()
if(preset_reagent)
reagents.add_reagent(preset_reagent, volume)
/obj/item/weapon/reagent_containers/spray/attackby(obj/item/weapon/W, mob/user)
if(user.is_in_modules(src))
return
@@ -32,6 +40,10 @@
else if(istype(W, /obj/item/stack/rods))
user.create_in_hands(src, new /obj/item/weapon/gun_assembly(loc, "spraybottle_assembly"), W, msg = "You press \the [W] into the melted plastic on the top of \the [src].")
/obj/item/weapon/reagent_containers/spray/slime_act(primarytype, mob/user)
. = ..()
if(. && preset_reagent && (slimes_accepted & primarytype))
reagents.add_reagent(preset_reagent, volume)//in a perfect world, we'd calculate how much to add, but the add_reagents() already has sanity checking for max volume
/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob, var/adjacency_flag, var/click_params)
if (adjacency_flag && is_type_in_list(A, ignore_spray_types))
@@ -82,6 +94,8 @@
reagents.add_reagent(LUBE, 2)
/obj/item/weapon/reagent_containers/spray/proc/make_puff(var/atom/target, var/mob/user)
if((has_slimes & slimes_accepted) && preset_reagent)
reagents.add_reagent(preset_reagent, 10)
// Create the chemical puff
var/transfer_amount = amount_per_transfer_from_this
if (!can_transfer_an_APTFT() && !is_empty()) //If it doesn't contain enough reagents to fulfill its amount_per_transfer_from_this, but also isn't empty, it'll spray whatever it has left.
@@ -105,6 +119,8 @@
/obj/item/weapon/reagent_containers/spray/cleaner
name = "space cleaner"
desc = "BLAM!-brand non-foaming space cleaner!"
slimes_accepted = SLIME_BLUE
preset_reagent = CLEANER
var/image/content_reagent
/obj/item/weapon/reagent_containers/spray/cleaner/New()
@@ -135,32 +151,16 @@
item_state = "pepperspray"
volume = 40
amount_per_transfer_from_this = 10
/obj/item/weapon/reagent_containers/spray/pepper/New()
..()
reagents.add_reagent(CONDENSEDCAPSAICIN, 40)
/obj/item/weapon/reagent_containers/spray/pepper/slime_act(primarytype, mob/user)
..()
if(primarytype == /mob/living/carbon/slime/orange)
has_slime=1
reagents.add_reagent(CONDENSEDCAPSAICIN, 40)//in a perfect world, we'd calculate how much to add, but the add_reagents() already has sanity checking for max volume
to_chat(user, "You drop the slime extract down into the spray canister, and liquid capsaicin swells up to the brim.")
return TRUE
/obj/item/weapon/reagent_containers/spray/pepper/make_puff(var/atom/target, var/mob/user)
if(has_slime)
reagents.add_reagent(CONDENSEDCAPSAICIN, 10)
..()
slimeadd_message = "You drop the slime extract down into the spray canister"
slimes_accepted = SLIME_ORANGE
preset_reagent = CONDENSEDCAPSAICIN
// Luminol
/obj/item/weapon/reagent_containers/spray/luminol
name = "spray bottle (luminol)"
desc = "A spray bottle with an unscrewable top. A label on the side reads 'Contains: Luminol'."
/obj/item/weapon/reagent_containers/spray/luminol/New()
..()
reagents.add_reagent(LUMINOL, 250)
slimes_accepted = SLIME_GREEN
preset_reagent = LUMINOL
// Plant-B-Gone
/obj/item/weapon/reagent_containers/spray/plantbgone
@@ -169,11 +169,8 @@
icon = 'icons/obj/hydroponics/hydro_tools.dmi'
icon_state = "plantbgone"
item_state = "plantbgone"
volume = 250
/obj/item/weapon/reagent_containers/spray/plantbgone/New()
..()
reagents.add_reagent(PLANTBGONE, 250)
slimes_accepted = SLIME_RED
preset_reagent = PLANTBGONE
/obj/item/weapon/reagent_containers/spray/bugzapper
name = "Bug Zapper"
@@ -181,21 +178,15 @@
icon = 'icons/obj/hydroponics/hydro_tools.dmi'
icon_state = "pestspray"
item_state = "pestspray"
volume = 250
/obj/item/weapon/reagent_containers/spray/bugzapper/New()
..()
reagents.add_reagent(INSECTICIDE, 250)
slimes_accepted = SLIME_RED
preset_reagent = INSECTICIDE
//Fake Xeno Creep Sprayer
/obj/item/weapon/reagent_containers/spray/creepspray
name = "Alien Weed Spray"
desc = "You're unsure if this is meant to cull or create weeds. The Discount Dan logo is haphazardly slapped on top of a faded yellow 'W' and gray 'Y'"
volume = 250
/obj/item/weapon/reagent_containers/spray/creepspray/New()
..()
reagents.add_reagent(FAKE_CREEP, 250)
slimes_accepted = SLIME_PYRITE
preset_reagent = FAKE_CREEP
//chemsprayer
/obj/item/weapon/reagent_containers/spray/chemsprayer

View File

@@ -9,6 +9,9 @@
pass_flags = PASSTABLE
var/heating = BUNSEN_OFF //whether the bunsen is turned on
var/obj/item/weapon/reagent_containers/held_container
slimeadd_message = "You add the slime extract to the fuel port"
slimes_accepted = SLIME_RED
slimeadd_success_message = "It feels full now"
ghost_read = 0
is_cooktop = TRUE
@@ -44,6 +47,12 @@
/////////////////////
/obj/machinery/bunsen_burner/slime_act(primarytype, mob/user)
. = ..()
if(primarytype == SLIME_RED && .)
reagents.clear_reagents()
reagents.add_reagent(GLYCEROL, 250)
/obj/machinery/bunsen_burner/splashable()
return FALSE
@@ -142,16 +151,17 @@
try_refill_nearby()
for(var/possible_fuel in possible_fuels)
if(reagents.has_reagent(possible_fuel))
if(reagents.has_reagent(possible_fuel) || (possible_fuel == GLYCEROL && (has_slimes & SLIME_RED)))
var/list/fuel_stats = possible_fuels[possible_fuel]
max_temperature = fuel_stats["max_temperature"]
thermal_energy_transfer = fuel_stats["thermal_energy_transfer"]
consumption_rate = fuel_stats["consumption_rate"]
unsafety = fuel_stats["unsafety"]
o2_consumption = fuel_stats["o2_cons"]
co2_consumption = fuel_stats["co2_cons"]
unsafety = has_slimes & SLIME_RED ? fuel_stats["unsafety"] : 0
o2_consumption = has_slimes & SLIME_RED ? fuel_stats["o2_cons"] : 0
co2_consumption = has_slimes & SLIME_RED ? fuel_stats["co2_cons"] : 0
reagents.remove_reagent(possible_fuel, consumption_rate)
if(!(possible_fuel == GLYCEROL && (has_slimes & SLIME_RED)) && reagents.has_reagent(possible_fuel))
reagents.remove_reagent(possible_fuel, consumption_rate)
if(held_container)
if(!cookvessel) //Cooking vessels are heated differently.
held_container.reagents.heating(thermal_energy_transfer, max_temperature)