mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
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:
@@ -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
|
||||
|
||||
|
||||
@@ -75,6 +75,9 @@
|
||||
light_range_on = 3
|
||||
light_power_on = 2
|
||||
|
||||
/obj/machinery/dna_scannernew/splashable()
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/dna_scannernew/New()
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -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"]"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -34,6 +34,9 @@
|
||||
|
||||
var/time_initialized_at = 0
|
||||
|
||||
/obj/structure/closet/splashable()
|
||||
return FALSE
|
||||
|
||||
/obj/structure/closet/New()
|
||||
..()
|
||||
if (has_lock_type)
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -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(..())
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -39,6 +39,8 @@
|
||||
|
||||
var/special = CENTRIFUGE_LIGHTSPECIAL_OFF
|
||||
|
||||
/obj/machinery/disease2/centrifuge/splashable()
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/disease2/centrifuge/New()
|
||||
. = ..()
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user