Slime Mob Refactor

Death of the istype invasion from slimes, previously every single color of slime was its own kind of mob, and every single one of those slimes also had an adult form which was a different mob.

There is now only one kind of slime, reliant on new var is_adult and old var colour to determine how it looks. All baby slimes functioned identically outside of icon and core, and all adult slimes functioned identically to each other and to the babys save for a bit higher Health and more capacity to break shit.

A nice side effect is that this solves any inheritence issues of baby slimes growing up since it's still the same mob, though it doesn't solve the same issues for adult slimes splitting.

Also fixed a few annoying but rare bugs (like getting ghosted because you got DC'd and your slime self split and you weren't around to get mind transfered)
This commit is contained in:
Incoming
2014-01-13 19:38:37 -05:00
parent e178dc9293
commit 03464e1f4d
19 changed files with 155 additions and 578 deletions
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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("<span class='warning'>[user] smashes against [src].</span>", \
-1
View File
@@ -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
+2 -2
View File
@@ -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))
-1
View File
@@ -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 )
@@ -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)
@@ -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)
@@ -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)
+12 -16
View File
@@ -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("<b>The [name]</b> seizes up and falls limp...", 1) //ded -- Urist
for(var/mob/O in viewers(src, null))
O.show_message("<b>The [name]</b> seizes up and falls limp...", 1) //ded -- Urist
update_canmove()
if(blind) blind.layer = 0
+13 -37
View File
@@ -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))
@@ -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)
@@ -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>I must be conscious to do this...</i>"
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 << "<B>You are now an adult slime.</B>"
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>I am not ready to evolve yet...</i>"
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>I must be conscious to do this...</i>"
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>I must be conscious to do this...</i>"
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 << "<B>You are now a slime!</B>"
del(src)
else
src << "<i>I am not ready to reproduce yet...</i>"
@@ -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
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)
@@ -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)
@@ -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)
@@ -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)
-5
View File
@@ -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
+2 -5
View File
@@ -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