diff --git a/code/modules/mob/living/carbon/slime/life.dm b/code/modules/mob/living/carbon/slime/life.dm
index f15fd5196a7..484f2700ae8 100644
--- a/code/modules/mob/living/carbon/slime/life.dm
+++ b/code/modules/mob/living/carbon/slime/life.dm
@@ -234,6 +234,10 @@
/mob/living/carbon/slime/proc/handle_nutrition()
+ if(docile) //God as my witness, I will never go hungry again
+ nutrition = 700
+ return
+
if(prob(15))
nutrition -= 1 + is_adult
@@ -291,7 +295,7 @@
if(Target)
--target_patience
- if (target_patience <= 0 || SStun || Discipline || attacked) // Tired of chasing or something draws out attention
+ if (target_patience <= 0 || SStun || Discipline || attacked || docile) // Tired of chasing or something draws out attention
target_patience = 0
Target = null
@@ -385,6 +389,7 @@
//Mood starts here
var/newmood = ""
if (rabid || attacked) newmood = "angry"
+ else if (docile) newmood = ":3"
else if (Target) newmood = "mischevous"
if (!newmood)
@@ -555,6 +560,7 @@
else return 200
/mob/living/carbon/slime/proc/will_hunt(var/hunger = -1) // Check for being stopped from feeding and chasing
+ if (docile) return 0
if (hunger == 2 || rabid || attacked) return 1
if (Leader) return 0
if (holding_still) return 0
diff --git a/code/modules/mob/living/carbon/slime/powers.dm b/code/modules/mob/living/carbon/slime/powers.dm
index ef91582c3ec..01918ec5fc5 100644
--- a/code/modules/mob/living/carbon/slime/powers.dm
+++ b/code/modules/mob/living/carbon/slime/powers.dm
@@ -5,6 +5,10 @@
Feedstop()
return 0
+ if(docile)
+ src << "I'm not hungry anymore..."
+ return 0
+
if(stat)
src << "I must be conscious to do this..."
return 0
diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm
index aa3af4b45ec..50a4d58086c 100644
--- a/code/modules/mob/living/carbon/slime/slime.dm
+++ b/code/modules/mob/living/carbon/slime/slime.dm
@@ -6,6 +6,7 @@
say_message = "hums"
ventcrawler = 2
var/is_adult = 0
+ var/docile = 0
languages = SLIME | HUMAN
faction = list("slime")
@@ -135,8 +136,8 @@
stat(null, "Health: [round((health / 200) * 100)]%")
else
stat(null, "Health: [round((health / 150) * 100)]%")
-
- stat(null, "Nutrition: [nutrition]/[get_max_nutrition()]")
+ if(!docile)
+ stat(null, "Nutrition: [nutrition]/[get_max_nutrition()]")
if(amount_grown >= 10)
if(is_adult)
stat(null, "You can reproduce!")
@@ -602,71 +603,60 @@
////Pet Slime Creation///
-/obj/item/weapon/slimepotion
+/obj/item/slimepotion
name = "docility potion"
- desc = "A potent chemical mix that will nullify a slime's powers, causing it to become docile and tame."
+ desc = "A potent chemical mix that nullifies a slime's hunger, causing it to become docile and tame."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle19"
- attack(mob/living/carbon/slime/M as mob, mob/user as mob)
- if(!istype(M, /mob/living/carbon/slime))//If target is not a slime.
- user << " The potion only works on baby slimes!"
- return ..()
- if(M.is_adult) //Can't tame adults
- user << " Only baby slimes can be tamed!"
- return..()
- if(M.stat)
- user << " The slime is dead!"
- return..()
- if(M.mind)
- user << " The slime resists!"
- 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]"
- user <<"You feed the slime the potion, removing it's powers and calming it."
- qdel(M)
- var/newname = copytext(sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text),1,MAX_NAME_LEN)
-
- if (!newname)
- newname = "pet slime"
- pet.name = newname
- pet.real_name = newname
- qdel(src)
-
-/obj/item/weapon/slimepotion2
- name = "advanced docility potion"
- 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/chemical.dmi'
- icon_state = "bottle19"
-
-/obj/item/weapon/slimepotion2/attack(mob/living/carbon/slime/M as mob, mob/user as mob)
- if(!istype(M, /mob/living/carbon/slime/))//If target is not a slime.
- user << " The potion only works on slimes!"
+/obj/item/slimepotion/attack(mob/living/carbon/slime/M as mob, mob/user as mob)
+ if(!isslime(M))
+ user << "The potion only works on slimes!"
return ..()
if(M.stat)
- user << " The slime is dead!"
+ user << "The slime is dead!"
return..()
- if(M.mind)
- user << " The slime resists!"
- return ..()
- var/mob/living/simple_animal/slime/adult/pet = new /mob/living/simple_animal/slime/adult(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]"
- user <<"You feed the slime the potion, removing it's powers and calming it."
- qdel(M)
+
+ M.docile = 1
+ M.nutrition = 700
+ M <<" You absorb the potion and feel your intense desire to feed melt away."
+ user <<" You feed the slime the potion, removing it's hunger and calming it."
var/newname = copytext(sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text),1,MAX_NAME_LEN)
if (!newname)
newname = "pet slime"
- pet.name = newname
- pet.real_name = newname
+ M.name = newname
+ M.real_name = newname
qdel(src)
+/obj/item/slimepotion2
+ name = "sentience potion"
+ desc = "A miraculous chemical mix that can raise the intelligence of creatures to human levels."
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "bottle19"
+
+/obj/item/slimepotion2/afterattack(mob/living/M as mob, mob/user as mob)
+ if(!(isslime(M) || isanimal(M) || ismonkey(M) || !M.ckey)) //I'm sorry for this line
+ user << "[M] is already too intelligent for this to work!"
+ return ..()
+ if(M.stat)
+ user << "[M] is dead!"
+ return..()
+
+ var/list/candidates = get_candidates(BE_ALIEN, ALIEN_AFK_BRACKET)
+ var/client/C = null
+
+ if(candidates.len)
+ C = pick(candidates)
+ M.key = C.key
+ M.languages |= HUMAN
+ M << "All at once it makes sense, you know what you are and who you are! Self awareness is yours!"
+ M << "You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist them in completing their goals at any cost."
+ user << "[M] is suddenly attentive and aware. It worked!"
+ qdel(src)
+ else
+ user << "[M] looks interested for a moment, but then looks back down. Maybe you should try again later..."
+ ..()
/obj/item/weapon/slimesteroid
name = "slime steroid"
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 2e52dc0ba70..59764ed8e08 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -870,7 +870,7 @@ datum/chemical_reaction/pestkiller
required_other = 1
/datum/chemical_reaction/slimeppotion/on_reaction(var/datum/reagents/holder)
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
- var/obj/item/weapon/slimepotion/P = new /obj/item/weapon/slimepotion
+ var/obj/item/slimepotion/P = new /obj/item/slimepotion
P.loc = get_turf(holder.my_atom)
@@ -913,7 +913,7 @@ datum/chemical_reaction/pestkiller
required_other = 1
/datum/chemical_reaction/slimepotion2/on_reaction(var/datum/reagents/holder)
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
- var/obj/item/weapon/slimepotion2/P = new /obj/item/weapon/slimepotion2
+ var/obj/item/slimepotion2/P = new /obj/item/slimepotion2
P.loc = get_turf(holder.my_atom)
//Adamantine
/datum/chemical_reaction/slimegolem
diff --git a/html/changelogs/Incoming5643-slimechanges.yml b/html/changelogs/Incoming5643-slimechanges.yml
new file mode 100644
index 00000000000..c67566840b3
--- /dev/null
+++ b/html/changelogs/Incoming5643-slimechanges.yml
@@ -0,0 +1,6 @@
+author: Incoming5643
+
+delete-after: True
+
+changes:
+ - rscadd: Nanotrasen scientists have recently reported mutations within the pink family line of slimes. Station scientists are encouraged to investigate."
\ No newline at end of file