Files
CHOMPStation2/code/modules/xenobio/items/slimepotions_vr.dm
CHOMPStation2 4d9879937f [MIRROR] Port tg statpanel (#9242)
Co-authored-by: ShadowLarkens <shadowlarkens@gmail.com>
Co-authored-by: Kashargul <KashL@t-online.de>
2024-10-17 23:29:59 +02:00

196 lines
7.5 KiB
Plaintext

/obj/item/slimepotion/attackby(obj/item/O, mob/user)
if(istype(O, /obj/item/slimepotion/mimic))
to_chat(user, span_notice("You apply the mimic to the slime potion as it copies it's effects."))
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
var/newtype = src.type
new newtype(get_turf(src))
qdel(O)
..()
/obj/item/slimepotion/infertility
name = "slime infertility agent"
desc = "A potent chemical mix that will reduce the amount of offspring this slime will have."
icon_state = "potpurple"
description_info = "The slime needs to be alive for this to work. It will reduce the amount of slime babies by 2 (to minimum of 2)."
/obj/item/slimepotion/infertility/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
if(!istype(M))
to_chat(user, span_warning("The agent only works on slimes!"))
return ..()
if(M.stat == DEAD)
to_chat(user, span_warning("The slime is dead!"))
return ..()
if(M.split_amount <= 2)
to_chat(user, span_warning("The slime cannot get any less fertile!"))
return ..()
to_chat(user, span_notice("You feed the slime the infertility agent. It will now have less offspring."))
M.split_amount = between(2, M.split_amount - 2, 6)
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
qdel(src)
/obj/item/slimepotion/fertility
name = "slime fertility agent"
desc = "A potent chemical mix that will increase the amount of offspring this slime will have."
icon_state = "potpurple"
description_info = "The slime needs to be alive for this to work. It will increase the amount of slime babies by 2 (to maximum of 6)."
/obj/item/slimepotion/fertility/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
if(!istype(M))
to_chat(user, span_warning("The agent only works on slimes!"))
return ..()
if(M.stat == DEAD)
to_chat(user, span_warning("The slime is dead!"))
return ..()
if(M.split_amount >= 6)
to_chat(user, span_warning("The slime cannot get any more fertile!"))
return ..()
to_chat(user, span_notice("You feed the slime the fertility agent. It will now have more offspring."))
M.split_amount = between(2, M.split_amount + 2, 6)
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
qdel(src)
/obj/item/slimepotion/shrink
name = "slime shrinking agent"
desc = "A potent chemical mix that will turn adult slime into a baby one."
icon_state = "potpurple"
description_info = "The slime needs to be alive for this to work."
/obj/item/slimepotion/shrink/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
if(!istype(M))
to_chat(user, span_warning("The agent only works on slimes!"))
return ..()
if(M.stat == DEAD)
to_chat(user, span_warning("The slime is dead!"))
return ..()
if(!(M.is_adult))
to_chat(user, span_warning("The slime is already a baby!"))
return ..()
to_chat(user, span_notice("You feed the slime the shrinking agent. It is now back to being a baby."))
M.make_baby()
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
qdel(src)
/obj/item/slimepotion/death
name = "slime death agent"
desc = "A potent chemical mix that will instantly kill a slime."
icon_state = "potblue"
description_info = "The slime needs to be alive for this to work."
/obj/item/slimepotion/death/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
if(!istype(M))
to_chat(user, span_warning("The agent only works on slimes!"))
return ..()
if(M.stat == DEAD)
to_chat(user, span_warning("The slime is already dead!"))
return ..()
to_chat(user, span_notice("You feed the slime the death agent. Its face flashes pain of betrayal before it goes still."))
M.adjustToxLoss(500)
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
qdel(src)
/obj/item/slimepotion/ferality
name = "slime ferality agent"
desc = "A potent chemical mix that will make a slime untamable."
icon_state = "potred"
description_info = "The slime needs to be alive for this to work."
/obj/item/slimepotion/ferality/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
if(!istype(M))
to_chat(user, span_warning("The agent only works on slimes!"))
return ..()
if(M.stat == DEAD)
to_chat(user, span_warning("The slime is already dead!"))
return ..()
if(M.untamable && M.untamable_inheirit)
to_chat(user, span_warning("The slime is already untamable!"))
return ..()
to_chat(user, span_notice("You feed the slime the death agent. It will now only get angrier at taming attempts."))
M.untamable = TRUE
M.untamable_inheirit = TRUE
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
qdel(src)
/obj/item/slimepotion/reinvigoration
name = "extract reinvigoration agent"
desc = "A potent chemical mix that will create a slime of appropriate type out of an extract."
icon_state = "potcyan"
description_info = "This will even work on inert extracts. Extract is destroyed in process."
/obj/item/slimepotion/mimic
name = "mimic agent"
desc = "A potent chemical mix that will mimic effects of other slime-produced agents."
icon_state = "potsilver"
description_info = "Warning: avoid combining multiple doses of mimic agent."
/obj/item/slimepotion/mimic/attackby(obj/item/O, mob/user)
if(istype(O, /obj/item/slimepotion/mimic))
to_chat(user, span_warning("You apply the mimic to the mimic, resulting a mimic that copies a mimic that copies a mimic that copies a mimic that-"))
var/location = get_turf(src)
playsound(location, 'sound/weapons/gauss_shoot.ogg', 50, 1)
var/datum/effect/effect/system/grav_pull/s = new /datum/effect/effect/system/grav_pull
s.set_up(3, 3, location)
s.start()
qdel(O)
qdel(src)
return
..()
/obj/item/slimepotion/sapience
name = "slime sapience agent"
desc = "A potent chemical mix that makes an animal capable of developing more advanced, sapient thought."
description_info = "The slime or other animal needs to be alive for this to work. The development is not always immedeate and may take indeterminate time before effects show."
icon_state = "potblue"
/obj/item/slimepotion/sapience/attack(mob/living/simple_mob/M, mob/user)
if(!istype(M))
to_chat(user, span_warning("The agent only works on creatures!"))
return ..()
if(M.stat == DEAD)
to_chat(user, span_warning("The creature is dead!"))
return ..()
if(M.ghostjoin)
to_chat(user, span_warning("The creature is already developing sapience."))
return ..()
if(M.ckey)
to_chat(user, span_warning("The creature is already sapient!"))
return ..()
to_chat(user, span_notice("You feed \the [M] the agent. It may now eventually develop proper sapience."))
M.ghostjoin = 1
active_ghost_pods |= M
if(!M.vore_active)
add_verb(M, /mob/living/simple_mob/proc/animal_nom)
M.ghostjoin_icon()
log_and_message_admins("[key_name_admin(user)] used a sapience potion on a simple mob: [M]. [ADMIN_FLW(src)]")
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
qdel(src)
/obj/item/slimepotion/obedience
name = "slime obedience agent"
desc = "A potent chemical mix that makes slime extremely obedient."
icon_state = "potlightpink"
description_info = "The target needs to be alive and currently misbehaving. Effect is equivalent to very strong discipline."
/obj/item/slimepotion/obedience/attack(mob/living/simple_mob/slime/xenobio/M, mob/user)
if(!istype(M))
to_chat(user, span_warning("The agent only works on slimes!"))
return ..()
if(M.stat == DEAD)
to_chat(user, span_warning("The slime is dead!"))
return ..()
to_chat(user, span_notice("You feed the slime the agent. It has been disciplined, for better or worse..."))
var/justified = M.is_justified_to_discipline()
M.adjust_discipline(10)
var/datum/ai_holder/simple_mob/xenobio_slime/AI = M.ai_holder
if(istype(AI) && justified)
AI.obedience = 10
playsound(src, 'sound/effects/bubbles.ogg', 50, 1)
qdel(src)