diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 063a1eb6f40..12ea157a3bc 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -59,7 +59,7 @@ slime.Discipline = 0 if(power >= 3) - if(istype(slime, /mob/living/carbon/slime/adult)) + if(slime.is_adult) if(prob(5 + round(power/2))) if(slime.Victim) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 3c095b71aba..85f8d7d383c 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -153,7 +153,7 @@ return src.attack_hand(user) /obj/machinery/door/window/attack_paw(mob/user as mob) - if(istype(user, /mob/living/carbon/alien/humanoid) || istype(user, /mob/living/carbon/slime/adult)) + if(istype(user, /mob/living/carbon/alien/humanoid) || istype(user, /mob/living/carbon/slime/)) if(src.operating) return src.health = max(0, src.health - 25) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index c3a04fb3315..9eed23ad697 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -59,8 +59,8 @@ healthcheck() return -/obj/structure/grille/attack_slime(mob/user as mob) - if(!istype(user, /mob/living/carbon/slime/adult)) return +/obj/structure/grille/attack_slime(mob/living/carbon/slime/user as mob) + if(!user.is_adult) return playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) user.visible_message("[user] smashes against [src].", \ diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 76e17f53146..97e471eabb8 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -89,7 +89,6 @@ /obj/structure/mirror/attack_slime(mob/user as mob) - if(!isslimeadult(user)) return if(shattered) playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) return diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index a339db1ca01..3dc680175db 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -147,8 +147,8 @@ attack_generic(M, M.melee_damage_upper) -/obj/structure/window/attack_slime(mob/user as mob) - if(!isslimeadult(user)) return +/obj/structure/window/attack_slime(mob/living/carbon/slime/user as mob) + if(!user.is_adult) return attack_generic(user, rand(10, 15)) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 67f9c0fac6d..83d4e62a2c9 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -219,7 +219,6 @@ if("larva") M.change_mob_type( /mob/living/carbon/alien/larva , null, null, delmob ) if("human") M.change_mob_type( /mob/living/carbon/human , null, null, delmob ) if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob ) - if("adultslime") M.change_mob_type( /mob/living/carbon/slime/adult , null, null, delmob ) if("monkey") M.change_mob_type( /mob/living/carbon/monkey , null, null, delmob ) if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob ) if("cat") M.change_mob_type( /mob/living/simple_animal/cat , null, null, delmob ) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index a3dedef0122..f7204a30410 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -165,7 +165,7 @@ var/damage = rand(1, 3) - if(istype(M, /mob/living/carbon/slime/adult)) + if(M.is_adult) damage = rand(10, 40) else damage = rand(5, 35) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 7f88fb56c6b..7707bb5d700 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -181,7 +181,7 @@ var/damage = rand(1, 3) - if(istype(src, /mob/living/carbon/slime/adult)) + if(M.is_adult) damage = rand(20, 40) else damage = rand(5, 35) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 41ddbb312f6..51665ffc5f5 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -244,7 +244,7 @@ var/damage = rand(1, 3) - if(istype(M, /mob/living/carbon/slime/adult)) + if(M.is_adult) damage = rand(10, 35) else damage = rand(5, 25) diff --git a/code/modules/mob/living/carbon/metroid/death.dm b/code/modules/mob/living/carbon/metroid/death.dm index 92ecf85b4ce..630ef977ae6 100644 --- a/code/modules/mob/living/carbon/metroid/death.dm +++ b/code/modules/mob/living/carbon/metroid/death.dm @@ -1,23 +1,19 @@ /mob/living/carbon/slime/death(gibbed) + if(!gibbed) + if(is_adult) + var/mob/living/carbon/slime/M = new /mob/living/carbon/slime(loc) + M.colour = colour + M.rabid = 1 + is_adult = 0 + regenerate_icons() + health = maxHealth + return + if(stat == DEAD) return stat = DEAD icon_state = "[colour] baby slime dead" - - if(!gibbed) - if(istype(src, /mob/living/carbon/slime/adult)) - ghostize() - var/mob/living/carbon/slime/M1 = new primarytype(loc) - M1.rabid = 1 - if(src.mind) - src.mind.transfer_to(M1) - else - M1.key = src.key - var/mob/living/carbon/slime/M2 = new primarytype(loc) - M2.rabid = 1 - if(src) del(src) - else - for(var/mob/O in viewers(src, null)) - O.show_message("The [name] seizes up and falls limp...", 1) //ded -- Urist + for(var/mob/O in viewers(src, null)) + O.show_message("The [name] seizes up and falls limp...", 1) //ded -- Urist update_canmove() if(blind) blind.layer = 0 diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index f5cab1a36bc..62bb12487de 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -55,7 +55,7 @@ var/hungry = 0 var/starving = 0 - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) switch(nutrition) if(400 to 1100) hungry = 1 if(0 to 399) @@ -229,7 +229,7 @@ /mob/living/carbon/slime/proc/handle_regular_status_updates() - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) health = 200 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss()) else health = 150 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss()) @@ -310,7 +310,7 @@ /mob/living/carbon/slime/proc/handle_nutrition() if(prob(20)) - if(istype(src, /mob/living/carbon/slime/adult)) nutrition-=rand(4,6) + if(is_adult) nutrition-=rand(4,6) else nutrition-=rand(2,3) if(nutrition <= 0) @@ -320,7 +320,7 @@ adjustToxLoss(rand(0,5)) else - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) if(nutrition >= 1000) if(prob(40)) amount_grown++ @@ -329,36 +329,12 @@ if(prob(40)) amount_grown++ if(amount_grown >= 10 && !Victim && !Target) - if(istype(src, /mob/living/carbon/slime/adult)) - if(!client) - for(var/i=1,i<=4,i++) - var/newslime - if(prob(70)) - newslime = primarytype - else - newslime = slime_mutation[rand(1,4)] - - var/mob/living/carbon/slime/M = new newslime(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) - feedback_add_details("slime_babies_born","slimebirth_[replacetext(M.colour," ","_")]") - del(src) - - else - if(!client) - var/mob/living/carbon/slime/adult/A = new adulttype(src.loc) - A.nutrition = nutrition -// A.nutrition += 100 - A.powerlevel = max(0, powerlevel-1) - A.Friends = Friends - A.tame = tame - A.rabid = rabid - del(src) + if(!ckey) + if(is_adult) + Reproduce() + else + Evolve() /mob/living/carbon/slime/proc/handle_targets() if(Tempstun) @@ -403,7 +379,7 @@ var/hungry = 0 // determines if the slime is hungry var/starving = 0 // determines if the slime is starving-hungry - if(istype(src, /mob/living/carbon/slime/adult)) // 1200 max nutrition + if(is_adult) // 1200 max nutrition switch(nutrition) if(601 to 900) if(prob(25)) hungry = 1//Ensures they continue eating, but aren't as aggressive at the same time @@ -435,7 +411,7 @@ continue if(issilicon(L)) - if(!istype(src, /mob/living/carbon/slime/adult)) //Non-starving diciplined adult slimes wont eat things + if(!is_adult) //Non-starving diciplined adult slimes wont eat things if(!starving && Discipline > 0) continue @@ -452,7 +428,7 @@ if(H.dna.mutantrace == "slime") continue - if(!istype(src, /mob/living/carbon/slime/adult)) //Non-starving diciplined adult slimes wont eat things + if(!is_adult) //Non-starving diciplined adult slimes wont eat things if(!starving && Discipline > 0) continue @@ -476,7 +452,7 @@ if((hungry || starving) && targets.len > 0) - if(!istype(src, /mob/living/carbon/slime/adult)) + if(!is_adult) if(!starving) for(var/mob/living/carbon/C in targets) if(!Discipline && prob(5)) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index af83e79751d..fd8f0109883 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -5,6 +5,7 @@ pass_flags = PASSTABLE voice_message = "skree!" say_message = "hums" + var/is_adult = 0 layer = 5 @@ -44,40 +45,22 @@ ///////////TIME FOR SUBSPECIES var/colour = "grey" - var/primarytype = /mob/living/carbon/slime - var/adulttype = /mob/living/carbon/slime/adult var/coretype = /obj/item/slime_extract/grey var/list/slime_mutation[4] -/mob/living/carbon/slime/adult - name = "adult slime" - icon = 'icons/mob/slimes.dmi' - icon_state = "grey adult slime" - - health = 200 - gender = NEUTER - - update_icon = 0 - nutrition = 800 // 1200 = max - - /mob/living/carbon/slime/New() create_reagents(100) - name = text("[colour] baby slime ([rand(1, 1000)])") - real_name = name - spawn (1) - regenerate_icons() - src << "\blue Your icons have been generated!" + spawn (0) + name = "[colour] [is_adult ? "adult" : "baby"] slime ([rand(1, 1000)])" + icon_state = "[colour] [is_adult ? "adult" : "baby"] slime" + real_name = name + slime_mutation = mutation_table(colour) + coretype = text2path("/obj/item/slime_extract/[colour]") ..() -/mob/living/carbon/slime/adult/New() - //verbs.Remove(/mob/living/carbon/slime/verb/ventcrawl) +/mob/living/carbon/slime/regenerate_icons() + icon_state = "[colour] [is_adult ? "adult" : "baby"] slime" ..() - name = text("[colour] adult slime ([rand(1,1000)])") - slime_mutation[1] = /mob/living/carbon/slime/orange - slime_mutation[2] = /mob/living/carbon/slime/metal - slime_mutation[3] = /mob/living/carbon/slime/blue - slime_mutation[4] = /mob/living/carbon/slime/purple /mob/living/carbon/slime/movement_delay() var/tally = 0 @@ -123,7 +106,7 @@ if(istype(AM, /obj/structure/window) || istype(AM, /obj/structure/grille)) - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) if(nutrition <= 600 && !Atkcool) AM.attack_slime(src) spawn() @@ -142,7 +125,7 @@ if(ismob(AM)) var/mob/tmob = AM - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) if(istype(tmob, /mob/living/carbon/human)) if(prob(90)) now_pushing = 0 @@ -176,14 +159,14 @@ ..() statpanel("Status") - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) stat(null, "Health: [round((health / 200) * 100)]%") else stat(null, "Health: [round((health / 150) * 100)]%") if (client.statpanel == "Status") - if(istype(src,/mob/living/carbon/slime/adult)) + if(is_adult) stat(null, "Nutrition: [nutrition]/1200") if(amount_grown >= 10) stat(null, "You can reproduce!") @@ -291,7 +274,7 @@ var/damage = rand(1, 3) attacked += 5 - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) damage = rand(1, 6) else damage = rand(1, 3) @@ -403,7 +386,7 @@ if(prob(80) && !client) Discipline++ - if(!istype(src, /mob/living/carbon/slime/adult)) + if(!is_adult) if(Discipline == 1) attacked = 0 @@ -712,7 +695,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 if(!istype(M, /mob/living/carbon/slime))//If target is not a slime. user << "\red The potion only works on baby slimes!" return ..() - if(istype(M, /mob/living/carbon/slime/adult)) //Can't tame adults + if(M.is_adult) //Can't tame adults user << "\red Only baby slimes can be tamed!" return..() if(M.stat) @@ -742,9 +725,9 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 icon = 'icons/obj/chemical.dmi' icon_state = "bottle19" - attack(mob/living/carbon/slime/adult/M as mob, mob/user as mob) - if(!istype(M, /mob/living/carbon/slime/adult))//If target is not a slime. - user << "\red The potion only works on adult slimes!" + 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 potion only works on slimes!" return ..() if(M.stat) user << "\red The slime is dead!" @@ -778,7 +761,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 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 + if(M.is_adult) //Can't tame adults user << "\red Only baby slimes can use the steroid!" return..() if(M.stat) diff --git a/code/modules/mob/living/carbon/metroid/powers.dm b/code/modules/mob/living/carbon/metroid/powers.dm index c16039c5baf..29982814691 100644 --- a/code/modules/mob/living/carbon/metroid/powers.dm +++ b/code/modules/mob/living/carbon/metroid/powers.dm @@ -49,7 +49,7 @@ anchored = 1 var/lastnut = nutrition //if(M.client) M << "\red You legs become paralyzed!" - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) icon_state = "[colour] adult slime eat" else icon_state = "[colour] baby slime eat" @@ -96,7 +96,7 @@ if(powerlevel > 10) powerlevel = 10 - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) if(nutrition > 1200) nutrition = 1200 else @@ -119,11 +119,11 @@ break if(stat == 2) - if(!istype(src, /mob/living/carbon/slime/adult)) + if(!is_adult) icon_state = "[colour] baby slime dead" else - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) icon_state = "[colour] adult slime" else icon_state = "[colour] baby slime" @@ -173,19 +173,13 @@ if(stat) src << "I must be conscious to do this..." return - if(!istype(src, /mob/living/carbon/slime/adult)) + if(!is_adult) if(amount_grown >= 10) - var/mob/living/carbon/slime/adult/new_slime = new adulttype(loc) - new_slime.nutrition = nutrition - new_slime.powerlevel = max(0, powerlevel-1) - new_slime.a_intent = "harm" - if(src.mind) - src.mind.transfer_to(new_slime) - else - new_slime.key = src.key - new_slime.universal_speak = universal_speak - new_slime << "You are now an adult slime." - del(src) + is_adult = 1 + maxHealth = 200 + amount_grown = 0 + regenerate_icons() + name = text("[colour] [is_adult ? "adult" : "baby"] slime ([rand(1, 1000)])") else src << "I am not ready to evolve yet..." else @@ -193,15 +187,14 @@ /mob/living/carbon/slime/verb/Reproduce() set category = "Slime" - set desc = "This will make you split into four Slimes. NOTE: this will KILL you, but you will be transferred into one of the babies." + set desc = "This will make you split into four Slimes." if(stat) src << "I must be conscious to do this..." return - if(istype(src, /mob/living/carbon/slime/adult)) + if(is_adult) if(amount_grown >= 10) - //if(input("Are you absolutely sure you want to reproduce? Your current body will cease to be, but your consciousness will be transferred into a produced slime.") in list("Yes","No")=="Yes") if(stat) src << "I must be conscious to do this..." return @@ -210,13 +203,11 @@ var/new_nutrition = round(nutrition * 0.9) var/new_powerlevel = round(powerlevel / 4) for(var/i=1,i<=4,i++) - var/newslime + var/mob/living/carbon/slime/M = new /mob/living/carbon/slime/(loc) if(prob(70)) - newslime = primarytype + M.colour = colour else - newslime = slime_mutation[rand(1,4)] - - var/mob/living/carbon/slime/M = new newslime(loc) + M.colour = slime_mutation[rand(1,4)] M.nutrition = new_nutrition M.powerlevel = new_powerlevel if(i != 1) step_away(M,src) @@ -230,8 +221,6 @@ src.mind.transfer_to(new_slime) else new_slime.key = src.key - - new_slime << "You are now a slime!" del(src) else src << "I am not ready to reproduce yet..." diff --git a/code/modules/mob/living/carbon/metroid/subtypes.dm b/code/modules/mob/living/carbon/metroid/subtypes.dm index 2e6b6de0b1e..07ef76fa6b3 100644 --- a/code/modules/mob/living/carbon/metroid/subtypes.dm +++ b/code/modules/mob/living/carbon/metroid/subtypes.dm @@ -1,436 +1,79 @@ - -////////////////Tier 2 - -/mob/living/carbon/slime/purple - colour = "purple" - icon_state = "purple baby slime" - primarytype = /mob/living/carbon/slime/purple - adulttype = /mob/living/carbon/slime/adult/purple - coretype = /obj/item/slime_extract/purple - - -/mob/living/carbon/slime/adult/purple - icon_state = "purple adult slime" - colour = "purple" - primarytype = /mob/living/carbon/slime/purple - adulttype = /mob/living/carbon/slime/adult/purple - coretype = /obj/item/slime_extract/purple - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/darkpurple - slime_mutation[2] = /mob/living/carbon/slime/darkblue - slime_mutation[3] = /mob/living/carbon/slime/green - slime_mutation[4] = /mob/living/carbon/slime/green - -/mob/living/carbon/slime/metal - colour = "metal" - icon_state = "metal baby slime" - primarytype = /mob/living/carbon/slime/metal - adulttype = /mob/living/carbon/slime/adult/metal - coretype = /obj/item/slime_extract/metal - -/mob/living/carbon/slime/adult/metal - icon_state = "metal adult slime" - colour = "metal" - primarytype = /mob/living/carbon/slime/metal - adulttype = /mob/living/carbon/slime/adult/metal - coretype = /obj/item/slime_extract/metal - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/silver - slime_mutation[2] = /mob/living/carbon/slime/yellow - slime_mutation[3] = /mob/living/carbon/slime/gold - slime_mutation[4] = /mob/living/carbon/slime/gold - -/mob/living/carbon/slime/orange - colour = "orange" - icon_state = "orange baby slime" - primarytype = /mob/living/carbon/slime/orange - adulttype = /mob/living/carbon/slime/adult/orange - coretype = /obj/item/slime_extract/orange - -/mob/living/carbon/slime/adult/orange - colour = "orange" - icon_state = "orange adult slime" - primarytype = /mob/living/carbon/slime/orange - adulttype = /mob/living/carbon/slime/adult/orange - coretype = /obj/item/slime_extract/orange - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/red - slime_mutation[2] = /mob/living/carbon/slime/red - slime_mutation[3] = /mob/living/carbon/slime/darkpurple - slime_mutation[4] = /mob/living/carbon/slime/yellow - -/mob/living/carbon/slime/blue - colour = "blue" - icon_state = "blue baby slime" - primarytype = /mob/living/carbon/slime/blue - adulttype = /mob/living/carbon/slime/adult/blue - coretype = /obj/item/slime_extract/blue - -/mob/living/carbon/slime/adult/blue - icon_state = "blue adult slime" - colour = "blue" - primarytype = /mob/living/carbon/slime/blue - adulttype = /mob/living/carbon/slime/adult/blue - coretype = /obj/item/slime_extract/blue - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/darkblue - slime_mutation[2] = /mob/living/carbon/slime/pink - slime_mutation[3] = /mob/living/carbon/slime/pink - slime_mutation[4] = /mob/living/carbon/slime/silver - - -//Tier 3 - -/mob/living/carbon/slime/darkblue - colour = "dark blue" - icon_state = "dark blue baby slime" - primarytype = /mob/living/carbon/slime/darkblue - adulttype = /mob/living/carbon/slime/adult/darkblue - coretype = /obj/item/slime_extract/darkblue - -/mob/living/carbon/slime/adult/darkblue - icon_state = "dark blue adult slime" - colour = "dark blue" - primarytype = /mob/living/carbon/slime/darkblue - adulttype = /mob/living/carbon/slime/adult/darkblue - coretype = /obj/item/slime_extract/darkblue - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/purple - slime_mutation[2] = /mob/living/carbon/slime/cerulean - slime_mutation[3] = /mob/living/carbon/slime/blue - slime_mutation[4] = /mob/living/carbon/slime/cerulean - -/mob/living/carbon/slime/darkpurple - colour = "dark purple" - icon_state = "dark purple baby slime" - primarytype = /mob/living/carbon/slime/darkpurple - adulttype = /mob/living/carbon/slime/adult/darkpurple - coretype = /obj/item/slime_extract/darkpurple - -/mob/living/carbon/slime/adult/darkpurple - icon_state = "dark purple adult slime" - colour = "dark purple" - primarytype = /mob/living/carbon/slime/darkpurple - adulttype = /mob/living/carbon/slime/adult/darkpurple - coretype = /obj/item/slime_extract/darkpurple - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/purple - slime_mutation[2] = /mob/living/carbon/slime/sepia - slime_mutation[3] = /mob/living/carbon/slime/orange - slime_mutation[4] = /mob/living/carbon/slime/sepia - - -/mob/living/carbon/slime/yellow - icon_state = "yellow baby slime" - colour = "yellow" - primarytype = /mob/living/carbon/slime/yellow - adulttype = /mob/living/carbon/slime/adult/yellow - coretype = /obj/item/slime_extract/yellow - -/mob/living/carbon/slime/adult/yellow - icon_state = "yellow adult slime" - colour = "yellow" - primarytype = /mob/living/carbon/slime/yellow - adulttype = /mob/living/carbon/slime/adult/yellow - coretype = /obj/item/slime_extract/yellow - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/metal - slime_mutation[2] = /mob/living/carbon/slime/bluespace - slime_mutation[3] = /mob/living/carbon/slime/orange - slime_mutation[4] = /mob/living/carbon/slime/bluespace - - -/mob/living/carbon/slime/silver - colour = "silver" - icon_state = "silver baby slime" - primarytype = /mob/living/carbon/slime/silver - adulttype = /mob/living/carbon/slime/adult/silver - coretype = /obj/item/slime_extract/silver - -/mob/living/carbon/slime/adult/silver - icon_state = "silver adult slime" - colour = "silver" - primarytype = /mob/living/carbon/slime/silver - adulttype = /mob/living/carbon/slime/adult/silver - coretype = /obj/item/slime_extract/silver - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/metal - slime_mutation[2] = /mob/living/carbon/slime/pyrite - slime_mutation[3] = /mob/living/carbon/slime/blue - slime_mutation[4] = /mob/living/carbon/slime/pyrite - - -/////////////Tier 4 - - -/mob/living/carbon/slime/pink - colour = "pink" - icon_state = "pink baby slime" - primarytype = /mob/living/carbon/slime/pink - adulttype = /mob/living/carbon/slime/adult/pink - coretype = /obj/item/slime_extract/pink - -/mob/living/carbon/slime/adult/pink - icon_state = "pink adult slime" - colour = "pink" - primarytype = /mob/living/carbon/slime/pink - adulttype = /mob/living/carbon/slime/adult/pink - coretype = /obj/item/slime_extract/pink - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/pink - slime_mutation[2] = /mob/living/carbon/slime/pink - slime_mutation[3] = /mob/living/carbon/slime/lightpink - slime_mutation[4] = /mob/living/carbon/slime/lightpink - -/mob/living/carbon/slime/red - colour = "red" - icon_state = "red baby slime" - primarytype = /mob/living/carbon/slime/red - adulttype = /mob/living/carbon/slime/adult/red - coretype = /obj/item/slime_extract/red - -/mob/living/carbon/slime/adult/red - icon_state = "red adult slime" - colour = "red" - primarytype = /mob/living/carbon/slime/red - adulttype = /mob/living/carbon/slime/adult/red - coretype = /obj/item/slime_extract/red - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/red - slime_mutation[2] = /mob/living/carbon/slime/red - slime_mutation[3] = /mob/living/carbon/slime/oil - slime_mutation[4] = /mob/living/carbon/slime/oil - -/mob/living/carbon/slime/gold - colour = "gold" - icon_state = "gold baby slime" - primarytype = /mob/living/carbon/slime/gold - adulttype = /mob/living/carbon/slime/adult/gold - coretype = /obj/item/slime_extract/gold - -/mob/living/carbon/slime/adult/gold - icon_state = "gold adult slime" - colour = "gold" - primarytype = /mob/living/carbon/slime/gold - adulttype = /mob/living/carbon/slime/adult/gold - coretype = /obj/item/slime_extract/gold - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/gold - slime_mutation[2] = /mob/living/carbon/slime/gold - slime_mutation[3] = /mob/living/carbon/slime/adamantine - slime_mutation[4] = /mob/living/carbon/slime/adamantine - -/mob/living/carbon/slime/green - colour = "green" - icon_state = "green baby slime" - primarytype = /mob/living/carbon/slime/green - adulttype = /mob/living/carbon/slime/adult/green - coretype = /obj/item/slime_extract/green - -/mob/living/carbon/slime/adult/green - icon_state = "green adult slime" - colour = "green" - primarytype = /mob/living/carbon/slime/green - adulttype = /mob/living/carbon/slime/adult/green - coretype = /obj/item/slime_extract/green - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/green - slime_mutation[2] = /mob/living/carbon/slime/green - slime_mutation[3] = /mob/living/carbon/slime/black - slime_mutation[4] = /mob/living/carbon/slime/black - -// Tier 5 - -/mob/living/carbon/slime/lightpink - colour = "light pink" - icon_state = "light pink baby slime" - primarytype = /mob/living/carbon/slime/lightpink - adulttype = /mob/living/carbon/slime/adult/lightpink - coretype = /obj/item/slime_extract/lightpink - -/mob/living/carbon/slime/adult/lightpink - icon_state = "light pink adult slime" - colour = "light pink" - primarytype = /mob/living/carbon/slime/lightpink - adulttype = /mob/living/carbon/slime/adult/lightpink - coretype = /obj/item/slime_extract/lightpink - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/lightpink - slime_mutation[2] = /mob/living/carbon/slime/lightpink - slime_mutation[3] = /mob/living/carbon/slime/lightpink - slime_mutation[4] = /mob/living/carbon/slime/lightpink - -/mob/living/carbon/slime/oil - icon_state = "oil baby slime" - colour = "oil" - primarytype = /mob/living/carbon/slime/oil - adulttype = /mob/living/carbon/slime/adult/oil - coretype = /obj/item/slime_extract/oil - -/mob/living/carbon/slime/adult/oil - icon_state = "oil adult slime" - colour = "oil" - primarytype = /mob/living/carbon/slime/oil - adulttype = /mob/living/carbon/slime/adult/oil - coretype = /obj/item/slime_extract/oil - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/oil - slime_mutation[2] = /mob/living/carbon/slime/oil - slime_mutation[3] = /mob/living/carbon/slime/oil - slime_mutation[4] = /mob/living/carbon/slime/oil - -/mob/living/carbon/slime/black - icon_state = "black baby slime" - colour = "black" - primarytype = /mob/living/carbon/slime/black - adulttype = /mob/living/carbon/slime/adult/black - coretype = /obj/item/slime_extract/black - -/mob/living/carbon/slime/adult/black - icon_state = "black adult slime" - colour = "black" - primarytype = /mob/living/carbon/slime/black - adulttype = /mob/living/carbon/slime/adult/black - coretype = /obj/item/slime_extract/black - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/black - slime_mutation[2] = /mob/living/carbon/slime/black - slime_mutation[3] = /mob/living/carbon/slime/black - slime_mutation[4] = /mob/living/carbon/slime/black - -/mob/living/carbon/slime/adamantine - icon_state = "adamantine baby slime" - colour = "adamantine" - primarytype = /mob/living/carbon/slime/adamantine - adulttype = /mob/living/carbon/slime/adult/adamantine - coretype = /obj/item/slime_extract/adamantine - -/mob/living/carbon/slime/adult/adamantine - icon_state = "adamantine adult slime" - colour = "adamantine" - primarytype = /mob/living/carbon/slime/adamantine - adulttype = /mob/living/carbon/slime/adult/adamantine - coretype = /obj/item/slime_extract/adamantine - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/adamantine - slime_mutation[2] = /mob/living/carbon/slime/adamantine - slime_mutation[3] = /mob/living/carbon/slime/adamantine - slime_mutation[4] = /mob/living/carbon/slime/adamantine - -////////// Even in death I still code Tier ////////////// - -/mob/living/carbon/slime/bluespace - icon_state = "bluespace baby slime" - colour = "bluespace" - primarytype = /mob/living/carbon/slime/bluespace - adulttype = /mob/living/carbon/slime/adult/bluespace - coretype = /obj/item/slime_extract/bluespace - -/mob/living/carbon/slime/adult/bluespace - icon_state = "bluespace adult slime" - colour = "bluespace" - primarytype = /mob/living/carbon/slime/bluespace - adulttype = /mob/living/carbon/slime/adult/bluespace - coretype = /obj/item/slime_extract/bluespace - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/bluespace - slime_mutation[2] = /mob/living/carbon/slime/bluespace - slime_mutation[3] = /mob/living/carbon/slime/bluespace - slime_mutation[4] = /mob/living/carbon/slime/bluespace - -/mob/living/carbon/slime/pyrite - icon_state = "pyrite baby slime" - colour = "pyrite" - primarytype = /mob/living/carbon/slime/pyrite - adulttype = /mob/living/carbon/slime/adult/pyrite - coretype = /obj/item/slime_extract/pyrite - -/mob/living/carbon/slime/adult/pyrite - icon_state = "pyrite adult slime" - colour = "pyrite" - primarytype = /mob/living/carbon/slime/pyrite - adulttype = /mob/living/carbon/slime/adult/pyrite - coretype = /obj/item/slime_extract/pyrite - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/pyrite - slime_mutation[2] = /mob/living/carbon/slime/pyrite - slime_mutation[3] = /mob/living/carbon/slime/pyrite - slime_mutation[4] = /mob/living/carbon/slime/pyrite - -/mob/living/carbon/slime/cerulean - icon_state = "cerulean baby slime" - colour = "cerulean" - primarytype = /mob/living/carbon/slime/cerulean - adulttype = /mob/living/carbon/slime/adult/cerulean - coretype = /obj/item/slime_extract/cerulean - -/mob/living/carbon/slime/adult/cerulean - icon_state = "cerulean adult slime" - colour = "cerulean" - primarytype = /mob/living/carbon/slime/cerulean - adulttype = /mob/living/carbon/slime/adult/cerulean - coretype = /obj/item/slime_extract/cerulean - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/cerulean - slime_mutation[2] = /mob/living/carbon/slime/cerulean - slime_mutation[3] = /mob/living/carbon/slime/cerulean - slime_mutation[4] = /mob/living/carbon/slime/cerulean - -/mob/living/carbon/slime/sepia - icon_state = "sepia baby slime" - colour = "sepia" - primarytype = /mob/living/carbon/slime/sepia - adulttype = /mob/living/carbon/slime/adult/sepia - coretype = /obj/item/slime_extract/sepia - -/mob/living/carbon/slime/adult/sepia - icon_state = "sepia adult slime" - colour = "sepia" - primarytype = /mob/living/carbon/slime/sepia - adulttype = /mob/living/carbon/slime/adult/sepia - coretype = /obj/item/slime_extract/sepia - - New() - ..() - slime_mutation[1] = /mob/living/carbon/slime/sepia - slime_mutation[2] = /mob/living/carbon/slime/sepia - slime_mutation[3] = /mob/living/carbon/slime/sepia - slime_mutation[4] = /mob/living/carbon/slime/sepia \ No newline at end of file +proc/mutation_table(var/colour) + var/list/slime_mutation[4] + switch(colour) + //Tier 1 + if("grey") + slime_mutation[1] = "orange" + slime_mutation[2] = "metal" + slime_mutation[3] = "blue" + slime_mutation[4] = "purple" + //Tier 2 + if("purple") + slime_mutation[1] = "darkpurple" + slime_mutation[2] = "darkblue" + slime_mutation[3] = "green" + slime_mutation[4] = "green" + if("metal") + slime_mutation[1] = "silver" + slime_mutation[2] = "yellow" + slime_mutation[3] = "gold" + slime_mutation[4] = "gold" + if("yellow") + slime_mutation[1] = "red" + slime_mutation[2] = "red" + slime_mutation[3] = "darkpurple" + slime_mutation[4] = "yellow" + if("blue") + slime_mutation[1] = "darkblue" + slime_mutation[2] = "pink" + slime_mutation[3] = "pink" + slime_mutation[4] = "silver" + //Tier 3 + if("darkblue") + slime_mutation[1] = "purple" + slime_mutation[2] = "cerulean" + slime_mutation[3] = "blue" + slime_mutation[4] = "cerulean" + if("darkpurple") + slime_mutation[1] = "purple" + slime_mutation[2] = "sepia" + slime_mutation[3] = "orange" + slime_mutation[4] = "sepia" + if("yellow") + slime_mutation[1] = "metal" + slime_mutation[2] = "bluespace" + slime_mutation[3] = "orange" + slime_mutation[4] = "bluespace" + if("silver") + slime_mutation[1] = "metal" + slime_mutation[2] = "pyrite" + slime_mutation[3] = "blue" + slime_mutation[4] = "pyrite" + //Tier 4 + if("pink") + slime_mutation[1] = "pink" + slime_mutation[2] = "pink" + slime_mutation[3] = "lightpink" + slime_mutation[4] = "lightpink" + if("red") + slime_mutation[1] = "red" + slime_mutation[2] = "red" + slime_mutation[3] = "oil" + slime_mutation[4] = "oil" + if("gold") + slime_mutation[1] = "gold" + slime_mutation[2] = "gold" + slime_mutation[3] = "adamantine" + slime_mutation[4] = "adamantine" + if("green") + slime_mutation[1] = "green" + slime_mutation[2] = "green" + slime_mutation[3] = "black" + slime_mutation[4] = "black" + // Tier 5 + else + slime_mutation[1] = "[colour]" + slime_mutation[2] = "[colour]" + slime_mutation[3] = "[colour]" + slime_mutation[4] = "[colour]" + return(slime_mutation) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 8217f0df4a9..6528981fbff 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -273,7 +273,7 @@ var/damage = rand(1, 3) - if(istype(src, /mob/living/carbon/slime/adult)) + if(M.is_adult) damage = rand(20, 40) else damage = rand(5, 35) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 43fc5db7108..ddf854239db 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -651,7 +651,7 @@ var/damage = rand(1, 3) - if(istype(src, /mob/living/carbon/slime/adult)) + if(M.is_adult) damage = rand(20, 40) else damage = rand(5, 35) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 0e1fdd34f30..2501d2e1c26 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -363,7 +363,7 @@ var/damage = rand(1, 3) - if(istype(src, /mob/living/carbon/slime/adult)) + if(M.is_adult) damage = rand(20, 40) else damage = rand(5, 35) @@ -487,7 +487,7 @@ /mob/living/simple_animal/revive() health = maxHealth ..() - + /mob/living/simple_animal/proc/make_babies() // <3 <3 <3 if(gender != FEMALE || stat || !scan_ready || !childtype || !species) return @@ -509,4 +509,4 @@ alone = 0 continue if(alone && partner && children < 3) - new childtype(loc) + new childtype(loc) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index ecbb91f74b6..63d292b63c4 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -35,11 +35,6 @@ return 1 return 0 -/proc/isslimeadult(A) - if(istype(A, /mob/living/carbon/slime/adult)) - return 1 - return 0 - /proc/isrobot(A) if(istype(A, /mob/living/silicon/robot)) return 1 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 5edc7dcad0c..174980c0813 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -339,7 +339,7 @@ . = new_xeno del(src) -/mob/living/carbon/human/proc/slimeize(adult as num, reproduce as num) +/mob/living/carbon/human/proc/slimeize(reproduce as num) if (notransform) return for(var/obj/item/W in src) @@ -363,10 +363,7 @@ babies += M new_slime = pick(babies) else - if(adult) - new_slime = new /mob/living/carbon/slime/adult(loc) - else - new_slime = new /mob/living/carbon/slime(loc) + new_slime = new /mob/living/carbon/slime(loc) new_slime.a_intent = "harm" new_slime.key = key