From 3057cccda8c0d4a798832b42ace20678cc7dba82 Mon Sep 17 00:00:00 2001 From: skull132 Date: Mon, 8 Sep 2014 18:46:51 +0300 Subject: [PATCH] Slime Catalyst Modifies the gold slime reaction to provide a catalyst instead of random xenos. --- .../modules/mob/living/carbon/metroid/life.dm | 82 +++++++++++-------- .../mob/living/carbon/metroid/metroid.dm | 29 +++++++ code/modules/reagents/Chemistry-Recipes.dm | 14 +++- 3 files changed, 88 insertions(+), 37 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 27376324..82759f19 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -340,7 +340,51 @@ if(istype(src, /mob/living/carbon/slime/adult)) if(!client) for(var/i=1,i<=4,i++) - if(prob(70)) + if(catalyst == 0) + if(prob(70)) + var/mob/living/carbon/slime/M = new primarytype(loc) + M.powerlevel = round(powerlevel/4) + M.Friends = Friends + M.tame = tame + M.rabid = rabid + M.Discipline = Discipline + if(i != 1) step_away(M,src) + else + var/mutations = pick("one","two","three","four") + switch(mutations) + if("one") + var/mob/living/carbon/slime/M = new mutationone(loc) + M.powerlevel = round(powerlevel/4) + M.Friends = Friends + M.tame = tame + M.rabid = rabid + M.Discipline = Discipline + if(i != 1) step_away(M,src) + if("two") + var/mob/living/carbon/slime/M = new mutationtwo(loc) + M.powerlevel = round(powerlevel/4) + M.Friends = Friends + M.tame = tame + M.rabid = rabid + M.Discipline = Discipline + if(i != 1) step_away(M,src) + if("three") + var/mob/living/carbon/slime/M = new mutationthree(loc) + M.powerlevel = round(powerlevel/4) + M.Friends = Friends + M.tame = tame + M.rabid = rabid + M.Discipline = Discipline + if(i != 1) step_away(M,src) + if("four") + var/mob/living/carbon/slime/M = new mutationfour(loc) + M.powerlevel = round(powerlevel/4) + M.Friends = Friends + M.tame = tame + M.rabid = rabid + M.Discipline = Discipline + if(i != 1) step_away(M,src) + else var/mob/living/carbon/slime/M = new primarytype(loc) M.powerlevel = round(powerlevel/4) M.Friends = Friends @@ -348,41 +392,6 @@ M.rabid = rabid M.Discipline = Discipline if(i != 1) step_away(M,src) - else - var/mutations = pick("one","two","three","four") - switch(mutations) - if("one") - var/mob/living/carbon/slime/M = new mutationone(loc) - M.powerlevel = round(powerlevel/4) - M.Friends = Friends - M.tame = tame - M.rabid = rabid - M.Discipline = Discipline - if(i != 1) step_away(M,src) - if("two") - var/mob/living/carbon/slime/M = new mutationtwo(loc) - M.powerlevel = round(powerlevel/4) - M.Friends = Friends - M.tame = tame - M.rabid = rabid - M.Discipline = Discipline - if(i != 1) step_away(M,src) - if("three") - var/mob/living/carbon/slime/M = new mutationthree(loc) - M.powerlevel = round(powerlevel/4) - M.Friends = Friends - M.tame = tame - M.rabid = rabid - M.Discipline = Discipline - if(i != 1) step_away(M,src) - if("four") - var/mob/living/carbon/slime/M = new mutationfour(loc) - M.powerlevel = round(powerlevel/4) - M.Friends = Friends - M.tame = tame - M.rabid = rabid - M.Discipline = Discipline - if(i != 1) step_away(M,src) del(src) @@ -395,6 +404,7 @@ A.Friends = Friends A.tame = tame A.rabid = rabid + A.catalyst = catalyst del(src) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 49aef11d..333e0539 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -51,6 +51,9 @@ var/adulttype = /mob/living/carbon/slime/adult var/coretype = /obj/item/slime_extract/grey + ///////////GOLD SLIME CATALYST VAR + var/catalyst = 0 + /mob/living/carbon/slime/adult name = "adult slime" icon = 'icons/mob/slimes.dmi' @@ -810,6 +813,32 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 M.cores = 3 del (src) +////////Slime Catalyst. Makes it halve into slimes of the same type. + +/obj/item/weapon/slimecatalyst + name = "slime catalyst" + desc = "A potent chemical mixture that will influence a slime's splitting behaviour." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle15" + + 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 << "\red The steroid only works on baby slimes!" + return ..() + if(istype(M, /mob/living/carbon/slime/adult)) //Can't tame adults + user << "\red Only baby slimes can use the steroid!" + return..() + if(M.stat) + user << "\red The slime is dead!" + return..() + if(M.catalyst == 1) + user <<"\red The slime has already been fed a catalyst!" + return..() + + user <<"You feed the slime the catalyst. It's core now glows golden." + M.catalyst = 1 + del (src) + ////////Adamantine Golem stuff I dunno where else to put it diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 99d219f2..323c0960 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1067,7 +1067,7 @@ datum name = "Slime Crit" id = "m_tele" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("water" = 5) result_amount = 1 required_container = /obj/item/slime_extract/gold required_other = 1 @@ -1106,6 +1106,18 @@ datum step(C, pick(NORTH,SOUTH,EAST,WEST)) // for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null)) // O.show_message(text("\red The slime core fizzles disappointingly,"), 1) + + slimecatalyst + name = "slime catalyst" + id = "m_catalyst" + result = null + required_reagents = list("plasma" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/gold + required_other = 1 + on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/slimecatalyst/P = new /obj/item/weapon/slimecatalyst + P.loc = get_turf_loc(holder.my_atom) /* slimecritlesser name = "Slime Crit Lesser"