Files
FluffyandGitHub 7265630dde Turn more unmanaged global vars into GLOB (#20446)
Turned a ton of unmanaged globals into managed globals.
Refactored some UT output.
Removed some unused things, including vars.
Added a test to ensure people don't keep adding new unmanaged vars.
2025-02-17 23:34:02 +00:00

349 lines
10 KiB
Plaintext

/obj/item/slime_extract
name = "slime extract"
desc = "Goo extracted from a slime. Legends claim these to have \"magical powers\"."
icon = 'icons/mob/npc/slimes.dmi'
icon_state = "grey slime extract"
force = 1
w_class = WEIGHT_CLASS_TINY
throwforce = 0
throw_speed = 3
throw_range = 6
origin_tech = list(TECH_BIO = 4)
var/uses = 1 // uses before it goes inert
var/enhanced = FALSE //has it been enhanced before?
atom_flags = ATOM_FLAG_OPEN_CONTAINER
/obj/item/slime_extract/attackby(obj/item/attacking_item, mob/user)
if(istype(attacking_item, /obj/item/extract_enhancer))
if(enhanced)
to_chat(user, SPAN_WARNING("This extract has already been enhanced!"))
return ..()
if(!uses)
to_chat(user, SPAN_WARNING("You can't enhance a used extract!"))
return ..()
to_chat(user, SPAN_NOTICE("You apply the enhancer. It now has triple the amount of uses."))
uses *= 3
enhanced = TRUE
qdel(attacking_item)
return TRUE
. = ..()
/obj/item/slime_extract/Initialize()
. = ..()
create_reagents(100)
reagents.add_reagent(/singleton/reagent/slimejelly, 30)
/obj/item/slime_extract/grey
name = "grey slime extract"
icon_state = "grey slime extract"
/obj/item/slime_extract/gold
name = "gold slime extract"
icon_state = "gold slime extract"
/obj/item/slime_extract/silver
name = "silver slime extract"
icon_state = "silver slime extract"
/obj/item/slime_extract/metal
name = "metal slime extract"
icon_state = "metal slime extract"
/obj/item/slime_extract/purple
name = "purple slime extract"
icon_state = "purple slime extract"
/obj/item/slime_extract/darkpurple
name = "dark purple slime extract"
icon_state = "dark purple slime extract"
/obj/item/slime_extract/orange
name = "orange slime extract"
icon_state = "orange slime extract"
/obj/item/slime_extract/yellow
name = "yellow slime extract"
icon_state = "yellow slime extract"
/obj/item/slime_extract/red
name = "red slime extract"
icon_state = "red slime extract"
/obj/item/slime_extract/blue
name = "blue slime extract"
icon_state = "blue slime extract"
/obj/item/slime_extract/darkblue
name = "dark blue slime extract"
icon_state = "dark blue slime extract"
/obj/item/slime_extract/pink
name = "pink slime extract"
icon_state = "pink slime extract"
/obj/item/slime_extract/green
name = "green slime extract"
icon_state = "green slime extract"
/obj/item/slime_extract/lightpink
name = "light pink slime extract"
icon_state = "light pink slime extract"
/obj/item/slime_extract/black
name = "black slime extract"
icon_state = "black slime extract"
/obj/item/slime_extract/oil
name = "oil slime extract"
icon_state = "oil slime extract"
/obj/item/slime_extract/adamantine
name = "adamantine slime extract"
icon_state = "adamantine slime extract"
/obj/item/slime_extract/bluespace
name = "bluespace slime extract"
icon_state = "bluespace slime extract"
/obj/item/slime_extract/pyrite
name = "pyrite slime extract"
icon_state = "pyrite slime extract"
/obj/item/slime_extract/cerulean
name = "cerulean slime extract"
icon_state = "cerulean slime extract"
/obj/item/slime_extract/sepia
name = "sepia slime extract"
icon_state = "sepia slime extract"
/obj/item/slime_extract/rainbow
name = "rainbow slime extract"
icon_state = "rainbow slime extract"
////Pet Slime Creation///
/obj/item/docility_serum
name = "docility serum"
desc = "A potent chemical mix that will nullify a slime's powers, causing it to become docile and tame. This one is meant for baby slimes."
icon = 'icons/obj/item/reagent_containers/glass.dmi'
icon_state = "bottle-1"
item_state = "bottle"
contained_sprite = TRUE
/obj/item/docility_serum/Initialize() // Better than hardsprited in stuff.
. = ..()
var/mutable_appearance/filling = mutable_appearance(icon, "[icon_state]-100")
filling.color = COLOR_PINK
AddOverlays(filling)
/obj/item/docility_serum/attack(mob/living/target_mob, mob/living/user, target_zone)
var/mob/living/carbon/slime/M = target_mob
if(!istype(M))//If target is not a slime.
to_chat(user, SPAN_WARNING("The docility serum only works on slimes!"))
return ..()
if(M.stat)
to_chat(user, SPAN_WARNING("The slime is dead!"))
return ..()
if(M.mind)
to_chat(user, SPAN_WARNING("The slime is too intelligent to be pacified!"))
return ..()
if(M.is_adult)
to_chat(user, SPAN_WARNING("The serum isn't advanced enough to affect adult slimes."))
return ..()
var/mob/living/simple_animal/slime/pet = new /mob/living/simple_animal/slime(M.loc)
pet.icon_state = "[M.colour] baby slime"
pet.icon_living = "[M.colour] baby slime"
pet.icon_dead = "[M.colour] baby slime dead"
pet.colour = "[M.colour]"
to_chat(user, SPAN_NOTICE("You feed the slime the docility serum, removing its powers and calming it."))
qdel(M)
var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN)
if(!newname)
newname = "pet slime"
pet.name = newname
pet.real_name = newname
qdel(src)
/obj/item/advanced_docility_serum
name = "advanced docility serum"
desc = "A potent chemical mix that will nullify a slime's powers, causing it to become docile and tame. This one is meant for adult slimes"
icon = 'icons/obj/item/reagent_containers/glass.dmi'
icon_state = "bottle-2"
item_state = "bottle"
contained_sprite = TRUE
/obj/item/advanced_docility_serum/Initialize() // Better than hardsprited in stuff.
. = ..()
var/mutable_appearance/filling = mutable_appearance(icon, "[icon_state]-100")
filling.color = COLOR_PALE_PINK
AddOverlays(filling)
/obj/item/advanced_docility_serum/attack(mob/living/target_mob, mob/living/user, target_zone)
var/mob/living/carbon/slime/M = target_mob
if(!istype(M))//If target is not a slime.
to_chat(user, SPAN_WARNING("The docility serum only works on slimes!"))
return ..()
if(M.stat)
to_chat(user, SPAN_WARNING("The slime is dead!"))
return ..()
if(M.mind)
to_chat(user, SPAN_WARNING("The slime is too intelligent to be pacified!"))
return ..()
if(!M.is_adult)
to_chat(user, SPAN_WARNING("The serum is too advanced to affect baby slimes."))
return ..()
var/mob/living/simple_animal/adultslime/pet = new /mob/living/simple_animal/slime(M.loc)
pet.icon_state = "[M.colour] adult slime"
pet.icon_living = "[M.colour] adult slime"
pet.icon_dead = "[M.colour] baby slime dead"
pet.colour = "[M.colour]"
to_chat(user, SPAN_NOTICE("You feed the slime the advanced docility serum, removing its powers and calming it."))
qdel(M)
var/newname = sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text, MAX_NAME_LEN)
if(!newname)
newname = "pet slime"
pet.name = newname
pet.real_name = newname
qdel(src)
/obj/item/slimesteroid
name = "slime steroid"
desc = "A potent chemical mix that will cause a slime to generate more extract."
icon = 'icons/obj/item/reagent_containers/glass.dmi'
icon_state = "bottle-3"
item_state = "bottle"
contained_sprite = TRUE
/obj/item/slimesteroid/Initialize() // Better than hardsprited in stuff.
SHOULD_CALL_PARENT(FALSE)
if(flags_1 & INITIALIZED_1)
stack_trace("Warning: [src]([type]) initialized multiple times!")
flags_1 |= INITIALIZED_1
var/mutable_appearance/filling = mutable_appearance(icon, "[icon_state]-100")
filling.color = COLOR_GREEN
AddOverlays(filling)
return INITIALIZE_HINT_NORMAL
/obj/item/slimesteroid/attack(mob/living/target_mob, mob/living/user, target_zone)
var/mob/living/carbon/slime/M = target_mob
if(!istype(M)) //If target is not a slime.
to_chat(user, SPAN_WARNING("The steroid only works on baby slimes!"))
return ..()
if(M.is_adult) //Can't tame adults
to_chat(user, SPAN_WARNING("Only baby slimes can use the steroid!"))
return ..()
if(M.stat == DEAD)
to_chat(user, SPAN_WARNING("The slime is dead!"))
return ..()
if(M.cores >= 3)
to_chat(user, SPAN_WARNING("The slime already has the maximum amount of extract!"))
return ..()
to_chat(user, "You feed the slime the steroid. It now has triple the amount of extract.")
M.cores *= 3
qdel(src)
/obj/item/extract_enhancer
name = "extract enhancer"
desc = "A potent chemical mix that will give a slime extract three uses."
icon = 'icons/obj/item/reagent_containers/glass.dmi'
icon_state = "bottle-4"
item_state = "bottle"
contained_sprite = TRUE
/obj/item/extract_enhancer/Initialize() // Better than hardsprited in stuff.
SHOULD_CALL_PARENT(FALSE)
if(flags_1 & INITIALIZED_1)
stack_trace("Warning: [src]([type]) initialized multiple times!")
flags_1 |= INITIALIZED_1
var/mutable_appearance/filling = mutable_appearance(icon, "[icon_state]-100")
filling.color = COLOR_BLUE
AddOverlays(filling)
return INITIALIZE_HINT_NORMAL
/obj/effect/golemrune
anchored = TRUE
desc = "A strange rune used to create golems. It glows when spirits are nearby."
name = "rune"
icon = 'icons/obj/rune.dmi'
icon_state = "golem"
unacidable = TRUE
layer = TURF_LAYER
var/golem_type = "Adamantine Golem"
/obj/effect/golemrune/Initialize()
. = ..()
START_PROCESSING(SSprocessing, src)
SSghostroles.add_spawn_atom("golem", src)
/obj/effect/golemrune/random_type/Initialize()
. = ..()
golem_type = pick(GLOB.golem_types)
/obj/effect/golemrune/Destroy()
SSghostroles.remove_spawn_atom("golem", src)
return ..()
/obj/effect/golemrune/process()
var/mob/abstract/ghost/observer/ghost
for(var/mob/abstract/ghost/observer/O in src.loc)
if(!O.client)
continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD)
continue
ghost = O
break
if(ghost && !(ghost.has_enabled_antagHUD && GLOB.config.antag_hud_restricted))
icon_state = "golem2"
else
icon_state = "golem"
/obj/effect/golemrune/assign_player(var/mob/user)
var/obj/item/stack/material/O = (locate(/obj/item/stack/material) in src.loc)
if(O?.amount >= 10)
if(O.material.golem)
golem_type = O.material.golem
O.use(10)
spark(get_turf(src), 10, GLOB.alldirs)
var/mob/living/carbon/human/G = new(src.loc)
G.key = user.key
G.set_species(golem_type)
G.name = G.species.get_random_name()
G.real_name = G.name
G.set_culture(GET_SINGLETON(/singleton/origin_item/culture/golem))
G.set_origin(GET_SINGLETON(/singleton/origin_item/origin/golem))
G.accent = G.origin.possible_accents[1]
G.citizenship = G.origin.possible_citizenships[1]
G.religion = G.origin.possible_religions[1]
G.preEquipOutfit(/obj/outfit/admin/golem, FALSE)
G.equipOutfit(/obj/outfit/admin/golem, FALSE)
G.client.init_verbs()
to_chat(G, SPAN_NOTICE("You are a golem. Serve your master, and assist them in completing their goals at any cost."))
qdel(src)
return G
/mob/living/carbon/slime/has_eyes()
return FALSE