mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-20 03:19:58 +01:00
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.
349 lines
10 KiB
Plaintext
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
|