mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
lastproduce--
|
||||
|
||||
// Advance plant age.
|
||||
if(!has_slime)
|
||||
if(!(has_slimes & SLIME_GREEN))
|
||||
if(skip_aging)
|
||||
skip_aging--
|
||||
else
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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///
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user