mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
Slime Mutation Changes +new reactions
Slime mutation chance starts at a flat 27% Slime mutation chance is now hereditary, with the new baby slimes inheriting the mutation chance of the parent (with a variation of -5 to +5). This allows you to cultivate slimes that are more likely to mutate over time rather than praying to the RNG forever. Plasma no longer causes slimes to have a higher mutation chance, and epinephrine no longer lowers mutation chance. Red slime extract+plasma now gives a potion that increases mutation chace Blue slime extract+blood now gives a potion that lowers mutation chance. The numbers might need tweaking if this makes xenobio too fast, but right now it is often frustrating and slow. It is more reliable and faster to build a mech than breed slimes given the current mutation system.
This commit is contained in:
@@ -147,7 +147,7 @@
|
||||
temp_change = (temperature - current)
|
||||
return temp_change
|
||||
|
||||
/mob/living/simple_animal/slime/handle_chemicals_in_body()
|
||||
/*/mob/living/simple_animal/slime/handle_chemicals_in_body()
|
||||
|
||||
if(reagents)
|
||||
reagents.metabolize(src)
|
||||
@@ -159,7 +159,7 @@
|
||||
mutation_chance = max(mutation_chance - 5,0) //Prevents muation chance going <0%
|
||||
reagents.remove_reagent("epinephrine", 5)
|
||||
updatehealth()
|
||||
|
||||
*/
|
||||
/mob/living/simple_animal/slime/handle_regular_status_updates()
|
||||
|
||||
if(..())
|
||||
|
||||
@@ -191,6 +191,7 @@
|
||||
if(i != 1) step_away(M,src)
|
||||
M.Friends = Friends.Copy()
|
||||
babies += M
|
||||
M.mutation_chance = mutation_chance+(rand(-5,5))
|
||||
feedback_add_details("slime_babies_born","slimebirth_[replacetext(M.colour," ","_")]")
|
||||
|
||||
var/mob/living/simple_animal/slime/new_slime = pick(babies)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
status_flags = CANPARALYSE|CANPUSH
|
||||
|
||||
var/cores = 1 // the number of /obj/item/slime_extract's the slime has left inside
|
||||
var/mutation_chance = 30 // Chance of mutating, should be between 25 and 35
|
||||
var/mutation_chance = 27 // Chance of mutating, should be between 25 and 35
|
||||
|
||||
var/powerlevel = 0 // 1-10 controls how much electricity they are generating
|
||||
var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows or reproduces
|
||||
@@ -61,6 +61,7 @@
|
||||
var/list/speech_buffer = list() // Last phrase said near it and person who said it
|
||||
|
||||
var/mood = "" // To show its face
|
||||
var/mutator_used = 0 //So you can't shove a dozen mutators into a single slime
|
||||
|
||||
///////////TIME FOR SUBSPECIES
|
||||
|
||||
@@ -80,7 +81,6 @@
|
||||
icon_dead = "[icon_state] dead"
|
||||
real_name = name
|
||||
slime_mutation = mutation_table(colour)
|
||||
mutation_chance = rand(25, 35)
|
||||
var/sanitizedcolour = replacetext(colour, " ", "")
|
||||
coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]")
|
||||
..()
|
||||
|
||||
@@ -218,6 +218,23 @@
|
||||
/datum/chemical_reaction/slimefrost/on_reaction(var/datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
|
||||
|
||||
|
||||
/datum/chemical_reaction/slimestabilizer
|
||||
name = "Slime Stabilizer"
|
||||
id = "m_slimestabilizer"
|
||||
result = null
|
||||
required_reagents = list("blood" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_extract/blue
|
||||
required_other = 1
|
||||
|
||||
/datum/chemical_reaction/slimestabilizer/on_reaction(var/datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
|
||||
var/obj/item/weapon/slimestabilizer/P = new /obj/item/weapon/slimestabilizer
|
||||
P.loc = get_turf(holder.my_atom)
|
||||
|
||||
|
||||
|
||||
//Dark Blue
|
||||
/datum/chemical_reaction/slimefreeze
|
||||
name = "Slime Freeze"
|
||||
@@ -363,7 +380,7 @@
|
||||
P.loc = get_turf(holder.my_atom)
|
||||
|
||||
//Red
|
||||
/datum/chemical_reaction/slimeglycerol
|
||||
/*/datum/chemical_reaction/slimeglycerol
|
||||
name = "Slime Glycerol"
|
||||
id = "m_glycerol"
|
||||
result = "glycerol"
|
||||
@@ -374,7 +391,21 @@
|
||||
|
||||
/datum/chemical_reaction/slimeglycerol/on_reaction(var/datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
|
||||
*/
|
||||
|
||||
/datum/chemical_reaction/slimemutator
|
||||
name = "Slime Mutator"
|
||||
id = "m_slimemutator"
|
||||
result = null
|
||||
required_reagents = list("plasma" = 1)
|
||||
result_amount = 1
|
||||
required_container = /obj/item/slime_extract/red
|
||||
required_other = 1
|
||||
|
||||
/datum/chemical_reaction/slimemutator/on_reaction(var/datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
|
||||
var/obj/item/weapon/slimemutator/P = new /obj/item/weapon/slimemutator
|
||||
P.loc = get_turf(holder.my_atom)
|
||||
|
||||
/datum/chemical_reaction/slimebloodlust
|
||||
name = "Bloodlust"
|
||||
|
||||
@@ -236,6 +236,13 @@
|
||||
M.cores = 3
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/weapon/slimesteroid3
|
||||
name = "slime steroid"
|
||||
desc = "A potent chemical mix that will cause a slime to generate more extract."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle16"
|
||||
|
||||
/obj/item/weapon/slimesteroid2
|
||||
name = "extract enhancer"
|
||||
desc = "A potent chemical mix that will give a slime extract three uses."
|
||||
@@ -256,6 +263,58 @@
|
||||
qdel(src)*/
|
||||
|
||||
|
||||
/obj/item/weapon/slimestabilizer
|
||||
name = "slime stabilizer"
|
||||
desc = "A potent chemical mix that will reduce the chance of a slime mutating."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle15"
|
||||
|
||||
/obj/item/weapon/slimestabilizer/attack(mob/living/simple_animal/slime/M as mob, mob/user as mob)
|
||||
if(!isslime(M))
|
||||
user << "<span class='warning'> The stabilizer only works on baby slimes!</span>"
|
||||
return ..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'> The slime is dead!</span>"
|
||||
return..()
|
||||
if(M.mutation_chance == 0)
|
||||
user <<"<span class='warning'> The slime already has no chance of mutating!</span>"
|
||||
return..()
|
||||
|
||||
user <<"<span class='notice'>You feed the slime the stabilizer. It is now less likely to mutate.</span>"
|
||||
M.mutation_chance -= 15
|
||||
if(M.mutation_chance < 0)
|
||||
M.mutation_chance = 0
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/slimemutator
|
||||
name = "slime mutator"
|
||||
desc = "A potent chemical mix that will increase the chance of a slime mutating."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
|
||||
/obj/item/weapon/slimemutator/attack(mob/living/simple_animal/slime/M as mob, mob/user as mob)
|
||||
if(!isslime(M))
|
||||
user << "<span class='warning'> The mutator only works on baby slimes!</span>"
|
||||
return ..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'> The slime is dead!</span>"
|
||||
return..()
|
||||
if(M.mutator_used == 1)
|
||||
user << "<span class='warning'> This slime has already consumed a mutator, any more would be far too unstable!</span>"
|
||||
return..()
|
||||
if(M.mutation_chance == 100)
|
||||
user <<"<span class='warning'> The slime is already guaranteed to mutate!</span>"
|
||||
return..()
|
||||
|
||||
user <<"<span class='notice'>You feed the slime the mutator. It is now more likely to mutate.</span>"
|
||||
M.mutation_chance += 5
|
||||
if(M.mutation_chance < 0)
|
||||
M.mutation_chance = 0
|
||||
M.mutator_used = 1
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
////////Adamantine Golem stuff I dunno where else to put it
|
||||
|
||||
// This will eventually be removed.
|
||||
|
||||
Reference in New Issue
Block a user