Space Polyp Milking Fix and Gelatin Condiment Sprites (#33208)

* polyp_milking_fix

* adds_gelatin_condi_sprites

* forgot_to_save_sprite

* slight_desc_change

* this_wont_compile

* progress_sort_of_kinda

* null_b_gone

* fixed_glassdm_line

* fixed_per_kurf
This commit is contained in:
Optimism333
2022-09-06 21:59:47 -07:00
committed by GitHub
parent 462772ebd4
commit 6d77823457
34 changed files with 130 additions and 75 deletions

View File

@@ -854,6 +854,12 @@ its easier to just keep the beam vertical.
/atom/proc/update_icon()
/atom/proc/splashable()
return TRUE
/obj/item/weapon/storage/splashable() // I don't know where to put this, aaaaaaaaaaaaaa
return FALSE
/atom/proc/dissolvable()
return 0

View File

@@ -75,6 +75,9 @@
light_range_on = 3
light_power_on = 2
/obj/machinery/dna_scannernew/splashable()
return FALSE
/obj/machinery/dna_scannernew/New()
. = ..()

View File

@@ -39,6 +39,9 @@
/datum/malfhack_ability/oneuse/emag
)
/obj/machinery/sleeper/splashable()
return FALSE
/obj/machinery/sleeper/power_change()
..()
if(!(stat & (BROKEN|NOPOWER|FORCEDISABLE)) && occupant)

View File

@@ -52,6 +52,9 @@ var/list/apiaries_list = list()
machine_flags = WRENCHMOVE
/obj/machinery/apiary/splashable()
return FALSE
/obj/machinery/apiary/New()
..()
apiaries_list.Add(src)

View File

@@ -64,6 +64,9 @@ var/list/firstaid_exceptions = list(
bot_type = MED_BOT
commanding_radio = /obj/item/radio/integrated/signal/bot/medbot
/obj/machinery/bot/medbot/splashable()
return FALSE
/obj/machinery/bot/medbot/mysterious
name = "Mysterious Medibot"
desc = "International Medibot of mystery."

View File

@@ -34,6 +34,9 @@ var/global/list/cryo_health_indicator = list( "full" = image("icon" = 'icons/obj
light_power_on = 2
use_auto_lights = 1
/obj/machinery/atmospherics/unary/cryo_cell/splashable()
return FALSE
/obj/machinery/atmospherics/unary/cryo_cell/New()
. = ..()

View File

@@ -11,6 +11,9 @@
var/obj/item/weapon/reagent_containers/beaker = null
var/mob/living/carbon/human/attached = null
/obj/machinery/iv_drip/splashable()
return FALSE
/obj/machinery/iv_drip/update_icon()
if(src.attached)
icon_state = "hooked[mode ? "_inject" : "_draw"]"

View File

@@ -5,13 +5,15 @@
icon_state = "beer"
reagent_list = BEER
artifact = FALSE
can_be_placed_into = null
units_per_tick = 1
var/synth_cost = 30 // 1500 cell charge for 50u beer
/obj/item/weapon/reagent_containers/glass/replenishing/cyborg/fits_in_iv_drip()
return FALSE
/obj/item/weapon/reagent_containers/glass/replenishing/cyborg/afterattack(var/atom/target, var/mob/user, var/adjacency_flag, var/click_params)
return //This container does not splash
/obj/item/weapon/reagent_containers/glass/replenishing/cyborg/process()
if(isrobot(loc))
var/mob/living/silicon/robot/robot = loc

View File

@@ -31,6 +31,9 @@
mech_flags = null
det_time =0 //recycling this variable to be used by the grenade launcher's timer override function since chemnades use their assembly's timer instead.
/obj/item/weapon/grenade/chem_grenade/splashable()
return FALSE
/obj/item/weapon/grenade/chem_grenade/attack_self(mob/user as mob)
if(!stage || stage==GRENADE_STAGE_ASSEMBLY_INSERTED)
if(detonator)

View File

@@ -771,6 +771,9 @@
var/max_fuel = 20 //The max amount of acid stored
toolsounds = list('sound/items/Welder.ogg')
/obj/item/tool/solder/splashable()
return FALSE
/obj/item/tool/solder/New()
. = ..()
create_reagents(max_fuel)

View File

@@ -34,6 +34,9 @@
var/time_initialized_at = 0
/obj/structure/closet/splashable()
return FALSE
/obj/structure/closet/New()
..()
if (has_lock_type)

View File

@@ -25,6 +25,9 @@
var/flipped = 0
health = 100
/obj/structure/table/splashable()
return FALSE
/obj/structure/table/proc/update_adjacent()
for(var/direction in alldirs)
if(locate(/obj/structure/table, get_step(src, direction)))

View File

@@ -477,6 +477,9 @@
anchored = 1
var/busy = 0 //Something's being washed at the moment
/obj/structure/sink/splashable()
return FALSE
/obj/structure/sink/verb/empty_container_into()
set name = "Empty container into"
set category = "Object"

View File

@@ -235,6 +235,9 @@
/obj/item/clothing/gloves/powerfist/full
vial = /obj/item/weapon/reagent_containers/glass/beaker/vial/uranium
/obj/item/clothing/gloves/powerfist/splashable()
return FALSE
/obj/item/clothing/gloves/powerfist/New()
..()

View File

@@ -19,7 +19,6 @@
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(5)
volume = 5
can_be_placed_into = null
slot_flags = SLOT_MASK
body_parts_covered = MOUTH
goes_in_mouth = TRUE

View File

@@ -17,6 +17,9 @@
var/soda
var/alcohol
/obj/machinery/cooking/icemachine/splashable()
return FALSE
/obj/machinery/cooking/icemachine/New()
create_reagents(500)
flags |= NOREACT

View File

@@ -30,6 +30,9 @@
var/gives_milk = TRUE
var/datum/reagents/udder = null
/mob/living/simple_animal/hostile/retaliate/goat/splashable()
return FALSE
/mob/living/simple_animal/hostile/retaliate/goat/New()
if(gives_milk)
udder = new(50)
@@ -132,6 +135,9 @@
size = SIZE_BIG
holder_type = /obj/item/weapon/holder/animal/cow
/mob/living/simple_animal/cow/splashable()
return FALSE
/mob/living/simple_animal/cow/New()
..()
reagents.maximum_volume = 50

View File

@@ -189,11 +189,16 @@
speak = list("blblbb","wrmrmm","glglglg")
speak_emote = list("burbles", "hums")
emote_hear = list("gurgles")
emote_see = list("wiggles its bell", "probes around with its tendrils", "expands and contracts rhythmically")
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
response_help = "pokes"
response_disarm = "gently pushes aside"
response_harm = "punches"
stop_automated_movement_when_pulled = TRUE
pass_flags = PASSTABLE // Can fly over tables
speak_override = TRUE
min_oxy = 0
max_oxy = 0
@@ -223,9 +228,15 @@
flying = 1
acidimmune = 1
var/trades_coins = 0 // Check that allows Phyl to give coins for Zam Raisins, but not a regular polyp
var/last_trade = 0
var/const/trade_cooldown = 120 SECONDS // Specifically here for the subtype that trades coins for Zam Raisins
var/gives_milk = TRUE
var/datum/reagents/udder = null
/mob/living/simple_animal/hostile/retaliate/polyp/splashable()
return FALSE
/mob/living/simple_animal/hostile/retaliate/polyp/New()
if(gives_milk)
udder = new(50)
@@ -264,6 +275,19 @@
to_chat(user, "<span class='warning'>[O] is full.</span>")
if(!transfered)
to_chat(user, "<span class='warning'>[src]'s tendrils are dry. Wait a bit longer...</span>")
if(trades_coins == 1 && istype(O, /obj/item/weapon/reagent_containers/food/snacks/zam_notraisins))
if((last_trade + trade_cooldown < world.time))
Calm()
playsound(src, 'sound/items/eatfood.ogg', rand(10,50), 1)
visible_message("<span class='notice'>[user] feeds \the [O] to [src]. It burbles contentedly, and drops something in [user]'s hand.</span>")
var/image/heart = image('icons/mob/animal.dmi',src,"heart-ani2")
heart.plane = ABOVE_HUMAN_PLANE
flick_overlay(heart, list(user.client), 20)
qdel(O)
user.put_in_hands(new /obj/item/weapon/coin/iron)
last_trade = world.time
else
visible_message("<span class='notice'>[src] doesn't seem interested in \the [O] at the moment.</span>")
else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/meat))
Calm()
health+=15
@@ -290,45 +314,7 @@
meat_type = /obj/item/weapon/coin/iron // Instead of meat you get coins, 4 total
mob_property_flags = MOB_NO_LAZ // So he can't be killed and revived repeatedly to keep butchering coins
var/last_trade = 0
var/const/trade_cooldown = 120 SECONDS // Hopefully this is reasonable, considering he is an unlimited source of coins if the player has Zam NotRaisins
/mob/living/simple_animal/hostile/retaliate/polyp/phyl/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(stat == CONSCIOUS)
if(istype(O, /obj/item/weapon/reagent_containers/glass))
user.visible_message("<span class='notice'>[user] collects gelatin from [src]'s tendrils using \the [O].</span>")
var/obj/item/weapon/reagent_containers/glass/G = O
var/transfered = udder.trans_id_to(G, POLYPGELATIN, rand(5,10))
if(G.reagents.total_volume >= G.volume)
to_chat(user, "<span class='warning'>[O] is full.</span>")
if(!transfered)
to_chat(user, "<span class='warning'>[src]'s tendrils are dry. Wait a bit longer...</span>")
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/zam_notraisins))
if((last_trade + trade_cooldown < world.time))
Calm()
playsound(src, 'sound/items/eatfood.ogg', rand(10,50), 1)
visible_message("<span class='notice'>[user] feeds \the [O] to [src]. It burbles contentedly, and drops something in [user]'s hand.</span>")
var/image/heart = image('icons/mob/animal.dmi',src,"heart-ani2")
heart.plane = ABOVE_HUMAN_PLANE
flick_overlay(heart, list(user.client), 20)
qdel(O)
user.put_in_hands(new /obj/item/weapon/coin/iron)
last_trade = world.time
else
visible_message("<span class='notice'>[src] doesn't seem interested in \the [O] at the moment.</span>")
else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/meat))
Calm()
health+=15
playsound(src, 'sound/items/eatfood.ogg', rand(10,50), 1)
visible_message("<span class='notice'>[user] feeds \the [O] to [src]. It burbles contentedly.</span>")
var/image/heart = image('icons/mob/animal.dmi',src,"heart-ani2")
heart.plane = ABOVE_HUMAN_PLANE
flick_overlay(heart, list(user.client), 20)
qdel(O)
else
..()
else
..()
trades_coins = 1 // This one will trade coins occasionally if fed Zam NotRaisins
///////////////////////////////////////////////////////////////////GYM RAT///////////
// Can run on a treadmill much like the trader's colossal hamster, but not quite as efficiently. Maybe in the future I can code a unique reaction to creatine or something
@@ -486,6 +472,9 @@
var/gives_milk = TRUE
var/datum/reagents/udder = null
/mob/living/simple_animal/hostile/retaliate/cattle_specimen/splashable()
return FALSE
/mob/living/simple_animal/hostile/retaliate/cattle_specimen/New()
if(gives_milk)
udder = new(50)

View File

@@ -258,6 +258,9 @@
)
var/current_chamber = 1
/obj/item/weapon/cylinder/splashable()
return FALSE
/obj/item/weapon/cylinder/Destroy()
for(var/i = 1; i < chambers.len; i++)
if(chambers[i])

View File

@@ -84,6 +84,9 @@
var/max_inject_amount = 20
var/inject_amount = 20 //The amount of reagents injected from the beaker each hit
/obj/item/weapon/sword/venom/splashable()
return FALSE
/obj/item/weapon/sword/venom/verb/set_inject_amount()
set name = "Set injection amount"
set category = "Object"

View File

@@ -8,6 +8,9 @@
var/list/cans = new/list() //These are the empty containers.
var/obj/item/weapon/reagent_containers/beaker = null // This is the active container
/obj/structure/centrifuge/splashable()
return FALSE
/obj/structure/centrifuge/examine(mob/user)
..()
to_chat(user, "<span class='info'>It contains [cans.len] empty containers[beaker ? " and an active container!" : "."]</span>")

View File

@@ -331,6 +331,9 @@ USE THIS CHEMISTRY DISPENSER FOR MAPS SO THEY START AT 100 ENERGY
return FALSE
return FALSE
/obj/machinery/chem_dispenser/splashable()
return FALSE
/obj/machinery/chem_dispenser/attackby(var/obj/item/weapon/D as obj, var/mob/user as mob, params) //to be worked on
if(..())
return 1

View File

@@ -126,6 +126,9 @@ var/global/list/pillIcon2Name = list("oblong purple-pink", "oblong green-white",
return TRUE
return FALSE
/obj/machinery/chem_master/splashable()
return FALSE
/obj/machinery/chem_master/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob)
if(..())
return 1

View File

@@ -9,6 +9,9 @@
var/list/beakers = new/list()
var/list/allowed_containers = list(/obj/item/weapon/reagent_containers/glass, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/)
/obj/item/weapon/electrolyzer/splashable()
return FALSE
/obj/item/weapon/electrolyzer/New()
. = ..()

View File

@@ -121,6 +121,9 @@ var/global/list/juice_items = list (
return FALSE
return ..()
/obj/machinery/reagentgrinder/splashable()
return FALSE
/obj/machinery/reagentgrinder/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(..())

View File

@@ -285,6 +285,11 @@
desc = "A dangerously flavorful sauce made from mothership spices and powerful acid."
icon_state = ZAMSPICYTOXIN
condiment_overlay = ZAMSPICYTOXIN
if(POLYPGELATIN)
name = "Polyp Gelatin"
desc = "A thick and nutritious gelatin collected from space polyps that has a mild, salty taste."
icon_state = POLYPGELATIN
condiment_overlay = POLYPGELATIN
if(CREAM)
name = "whipped cream dispenser"
desc = "Instant delight." //placeholder desc
@@ -585,6 +590,14 @@
..()
reagents.add_reagent(ZAMSPICYTOXIN, 50)
/obj/item/weapon/reagent_containers/food/condiment/polypgelatin
name = "Polyp Gelatin Bottle"
desc = "A thick, nutritious gelatin collected from space polyps. It has a mild flavor with a hint of salt."
/obj/item/weapon/reagent_containers/food/condiment/polypgelatin/New()
..()
reagents.add_reagent(POLYPGELATIN, 50)
/obj/item/weapon/reagent_containers/food/condiment/cream
name = "whipped cream dispenser"

View File

@@ -14,39 +14,6 @@
flags = FPRINT | OPENCONTAINER
layer = ABOVE_OBJ_LAYER
var/opaque = FALSE //when true no reagent filling overlay is applied to the icon.
//This is absolutely terrible
// TODO To remove this, return 1 on every attackby() that handles reagent_containers.
var/list/can_be_placed_into = list(
/obj/machinery/chem_master/,
/obj/machinery/chem_dispenser/,
/obj/machinery/reagentgrinder,
/obj/structure/table,
/obj/structure/closet,
/obj/structure/sink,
/obj/structure/centrifuge,
/obj/item/weapon/storage,
/obj/item/tool/solder,
/obj/machinery/atmospherics/unary/cryo_cell,
/obj/machinery/dna_scannernew,
/obj/item/weapon/grenade/chem_grenade,
/obj/item/weapon/electrolyzer,
/obj/machinery/bot/medbot,
/obj/item/weapon/storage/secure/safe,
/obj/machinery/iv_drip,
/obj/machinery/disease2/incubator,
/obj/machinery/disease2/centrifuge,
/obj/machinery/disposal,
/obj/machinery/apiary,
/mob/living/simple_animal/cow,
/mob/living/simple_animal/hostile/retaliate/goat,
/obj/machinery/cooking/icemachine,
/obj/machinery/sleeper,
/obj/machinery/anomaly,
/obj/machinery/bunsen_burner,
/obj/item/weapon/sword/venom,
/obj/item/weapon/cylinder,
/obj/item/clothing/gloves/powerfist,
)
/obj/item/weapon/reagent_containers/glass/get_rating()
return volume / 50
@@ -77,7 +44,7 @@
if (!adjacency_flag)
return
if (is_type_in_list(target, can_be_placed_into))
if (!target.splashable())
return
if(ishuman(target) || iscorgi(target)) //Splashing handled in attack now

View File

@@ -25,6 +25,9 @@
var/template_path = "disposalsbin.tmpl"
var/deconstructable = TRUE //Set to FALSE for disposal machinery that can be used for transporting players or things, but not tinkered with by players.
/obj/machinery/disposal/splashable()
return FALSE
/obj/machinery/disposal/supports_holomap()
return TRUE

View File

@@ -18,6 +18,9 @@
// If it's zero we're not scanning.
var/scan_process = 0
/obj/machinery/anomaly/splashable()
return FALSE
/obj/machinery/anomaly/Destroy()
if (held_container)
held_container.forceMove(loc)

View File

@@ -40,6 +40,9 @@
"unsafety" = 10))
ghost_read = 0
/obj/machinery/bunsen_burner/splashable()
return FALSE
/obj/machinery/bunsen_burner/New()
..()
processing_objects.Remove(src)

View File

@@ -39,6 +39,8 @@
var/special = CENTRIFUGE_LIGHTSPECIAL_OFF
/obj/machinery/disease2/centrifuge/splashable()
return FALSE
/obj/machinery/disease2/centrifuge/New()
. = ..()

View File

@@ -29,6 +29,8 @@
var/can_focus = 0 //Whether the machine can focus on an effect to mutate it or not
var/effect_focus = 0 //What effect of the disease are we focusing on?
/obj/machinery/disease2/incubator/splashable()
return FALSE
/obj/machinery/disease2/incubator/New()
. = ..()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB