Added Cheridan's slime sprites to replace roros. Replaced all mentions of roro/metroid with slime. Once Cheri has the rest of the sprites/Phol gets mutant race sprites I'll start work on redoing metroid/slime code with Giacom and adding breeding.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5223 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
Kortgstation@gmail.com
2012-11-29 04:12:22 +00:00
parent 3f1fc2ef62
commit 0c4f441cb5
69 changed files with 539 additions and 520 deletions

View File

@@ -265,7 +265,7 @@ var/syndicate_code_response//Code response for traitors.
if(4)
syndicate_code_phrase += pick("I wish I was","My dad was","His mom was","Where do I find","The hero this station needs is","I'd fuck","I wouldn't trust","Someone caught","HoS caught","Someone found","I'd wrestle","I wanna kill")
syndicate_code_phrase += " [pick("a","the")] "
syndicate_code_phrase += pick("wizard","ninja","xeno","lizard","metroid","monkey","syndicate","cyborg","clown","space carp","singularity","singulo","mime")
syndicate_code_phrase += pick("wizard","ninja","xeno","lizard","slime","monkey","syndicate","cyborg","clown","space carp","singularity","singulo","mime")
syndicate_code_phrase += "."
if(5)
syndicate_code_phrase += pick("Do we have","Is there","Where is","Where's","Who's")

View File

@@ -446,7 +446,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
moblist.Add(M)
for(var/mob/living/carbon/monkey/M in sortmob)
moblist.Add(M)
for(var/mob/living/carbon/metroid/M in sortmob)
for(var/mob/living/carbon/slime/M in sortmob)
moblist.Add(M)
for(var/mob/living/simple_animal/M in sortmob)
moblist.Add(M)

View File

@@ -87,7 +87,7 @@
var/robot_delay = 0
var/monkey_delay = 0
var/alien_delay = 0
var/metroid_delay = 0
var/slime_delay = 0
var/animal_delay = 0
var/admin_legacy_system = 0 //Defines whether the server uses the legacy admin system with admins.txt or the SQL system. Config option in config.txt
@@ -376,8 +376,8 @@
config.monkey_delay = value
if("alien_delay")
config.alien_delay = value
if("metroid_delay")
config.metroid_delay = value
if("slime_delay")
config.slime_delay = value
if("animal_delay")
config.animal_delay = value
else

View File

@@ -260,7 +260,7 @@ client
body += "<option value='?_src_=vars;makerobot=\ref[D]'>Make cyborg</option>"
body += "<option value='?_src_=vars;makemonkey=\ref[D]'>Make monkey</option>"
body += "<option value='?_src_=vars;makealien=\ref[D]'>Make alien</option>"
body += "<option value='?_src_=vars;makemetroid=\ref[D]'>Make metroid</option>"
body += "<option value='?_src_=vars;makeslime=\ref[D]'>Make slime</option>"
body += "<option value>---</option>"
body += "<option value='?_src_=vars;gib=\ref[D]'>Gib</option>"
if(isobj(D))
@@ -691,10 +691,10 @@ client
return
holder.Topic(href, list("makealien"=href_list["makealien"]))
else if(href_list["makemetroid"])
else if(href_list["makeslime"])
if(!check_rights(0)) return
var/mob/living/carbon/human/H = locate(href_list["makemetroid"])
var/mob/living/carbon/human/H = locate(href_list["makeslime"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
return
@@ -703,7 +703,7 @@ client
if(!H)
usr << "Mob doesn't exist anymore"
return
holder.Topic(href, list("makemetroid"=href_list["makemetroid"]))
holder.Topic(href, list("makeslime"=href_list["makeslime"]))
else if(href_list["makeai"])
if(!check_rights(0)) return
@@ -727,7 +727,7 @@ client
usr << "This can only be done to instances of type /mob/living/carbon/human"
return
var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","metroid","plant","shadow")
var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","slime","plant","shadow")
switch(new_mutantrace)
if(null) return
if("NONE") new_mutantrace = ""

View File

@@ -1101,10 +1101,10 @@ datum/mind
/mob/living/carbon/monkey/mind_initialize()
..()
//METROID
/mob/living/carbon/metroid/mind_initialize()
//slime
/mob/living/carbon/slime/mind_initialize()
..()
mind.assigned_role = "Metroid"
mind.assigned_role = "slime"
//XENO
/mob/living/carbon/alien/mind_initialize()

View File

@@ -592,7 +592,7 @@
/obj/item/clothing/head/collectable/HoS,
/obj/item/clothing/head/collectable/thunderdome,
/obj/item/clothing/head/collectable/swat,
/obj/item/clothing/head/collectable/metroid,
/obj/item/clothing/head/collectable/slime,
/obj/item/clothing/head/collectable/police,
/obj/item/clothing/head/collectable/slime,
/obj/item/clothing/head/collectable/xenom,

View File

@@ -267,8 +267,8 @@ its easier to just keep the beam vertical.
/atom/proc/attack_larva(mob/user as mob)
return
// for metroids
/atom/proc/attack_metroid(mob/user as mob)
// for slimes
/atom/proc/attack_slime(mob/user as mob)
return
/atom/proc/hand_h(mob/user as mob) //human (hand) - restrained
@@ -288,7 +288,7 @@ its easier to just keep the beam vertical.
src.hand_p(user)
return
/atom/proc/hand_m(mob/user as mob) //metroid - restrained
/atom/proc/hand_m(mob/user as mob) //slime - restrained
return
@@ -589,8 +589,8 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
src.attack_paw(usr)
else if(isalienadult(usr))
src.attack_alien(usr)
else if(ismetroid(usr))
src.attack_metroid(usr)
else if(isslime(usr))
src.attack_slime(usr)
else if(isanimal(usr))
src.attack_animal(usr)
else
@@ -608,7 +608,7 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
src.hand_p(usr, usr.hand)
else if(isalienadult(usr))
src.hand_al(usr, usr.hand)
else if(ismetroid(usr))
else if(isslime(usr))
return
else if(isanimal(usr))
return
@@ -819,28 +819,28 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
if ( !alien.restrained() )
attack_larva(alien)
else if(ismetroid(usr))
var/mob/living/carbon/metroid/metroid = usr
//-metroid stuff-
else if(isslime(usr))
var/mob/living/carbon/slime/slime = usr
//-slime stuff-
if(metroid.stat)
if(slime.stat)
return
var/in_range = in_range(src, metroid) || src.loc == metroid
var/in_range = in_range(src, slime) || src.loc == slime
if (in_range)
if ( !metroid.restrained() )
if ( !slime.restrained() )
if (W)
attackby(W,metroid)
attackby(W,slime)
if (W)
W.afterattack(src, metroid)
W.afterattack(src, slime)
else
attack_metroid(metroid)
attack_slime(slime)
else
hand_m(metroid, metroid.hand)
hand_m(slime, slime.hand)
else
if ( (W) && !metroid.restrained() )
W.afterattack(src, metroid)
if ( (W) && !slime.restrained() )
W.afterattack(src, slime)
else if(isanimal(usr))
@@ -1152,8 +1152,8 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
src.attack_larva(usr)
else if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot))
src.attack_ai(usr, usr.hand)
else if(istype(usr, /mob/living/carbon/metroid))
src.attack_metroid(usr)
else if(istype(usr, /mob/living/carbon/slime))
src.attack_slime(usr)
else if(istype(usr, /mob/living/simple_animal))
src.attack_animal(usr)
else

View File

@@ -175,9 +175,9 @@
user << "\blue <B>The sleeper is already occupied!</B>"
return
for(var/mob/living/carbon/metroid/M in range(1,G.affecting))
for(var/mob/living/carbon/slime/M in range(1,G.affecting))
if(M.Victim == G.affecting)
usr << "[G.affecting.name] will not fit into the sleeper because they have a Metroid latched onto their head."
usr << "[G.affecting.name] will not fit into the sleeper because they have a slime latched onto their head."
return
visible_message("[user] starts putting [G.affecting.name] into the sleeper.", 3)
@@ -367,7 +367,7 @@
usr << "\blue <B>The sleeper is already occupied!</B>"
return
for(var/mob/living/carbon/metroid/M in range(1,usr))
for(var/mob/living/carbon/slime/M in range(1,usr))
if(M.Victim == usr)
usr << "You're too busy getting your life sucked out of you."
return

View File

@@ -46,7 +46,7 @@
name_action = pick("Defeat ", "Annihilate ", "Save ", "Strike ", "Stop ", "Destroy ", "Robust ", "Romance ", "Pwn ", "Own ")
name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ")
name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "Metroid", "Griefer", "ERPer", "Lizard Man", "Unicorn")
name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn")
src.enemy_name = replacetext((name_part1 + name_part2), "the ", "")
src.name = (name_action + name_part1 + name_part2)

View File

@@ -120,9 +120,9 @@
else if(istype(G, /obj/item/weapon/grab))
if(!ismob(G:affecting))
return
for(var/mob/living/carbon/metroid/M in range(1,G:affecting))
for(var/mob/living/carbon/slime/M in range(1,G:affecting))
if(M.Victim == G:affecting)
usr << "[G:affecting:name] will not fit into the cryo because they have a Metroid latched onto their head."
usr << "[G:affecting:name] will not fit into the cryo because they have a slime latched onto their head."
return
var/mob/M = G:affecting
if(put_mob(M))
@@ -251,7 +251,7 @@
set name = "Move Inside"
set category = "Object"
set src in oview(1)
for(var/mob/living/carbon/metroid/M in range(1,usr))
for(var/mob/living/carbon/slime/M in range(1,usr))
if(M.Victim == usr)
usr << "You're too busy getting your life sucked out of you."
return

View File

@@ -169,7 +169,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/metroid/adult))
if(istype(user, /mob/living/carbon/alien/humanoid) || istype(user, /mob/living/carbon/slime/adult))
if(src.operating)
return
src.health = max(0, src.health - 25)

View File

@@ -60,9 +60,9 @@
..()
metroid
input = /mob/living/carbon/metroid
output = /obj/item/weapon/reagent_containers/glass/beaker/roro
slime
input = /mob/living/carbon/slime
output = /obj/item/weapon/reagent_containers/glass/beaker/slime
monkey
process(loc, what)

View File

@@ -82,8 +82,8 @@
else if(issilicon(M) || C.parameters["job"] == "AI") // sometimes M gets deleted prematurely for AIs... just check the job
race = "Artificial Life"
else if(ismetroid(M)) // NT knows a lot about metroids, but not aliens. Can identify metroids
race = "Metroid"
else if(isslime(M)) // NT knows a lot about slimes, but not aliens. Can identify slimes
race = "slime"
language = race
else if(isanimal(M))

View File

@@ -48,9 +48,9 @@
if(occupant)
occupant_message("The sleeper is already occupied")
return
for(var/mob/living/carbon/metroid/M in range(1,target))
for(var/mob/living/carbon/slime/M in range(1,target))
if(M.Victim == target)
occupant_message("[target] will not fit into the sleeper because they have a Metroid latched onto their head.")
occupant_message("[target] will not fit into the sleeper because they have a slime latched onto their head.")
return
occupant_message("You start putting [target] into [src].")
chassis.visible_message("[chassis] starts putting [target] into the [src].")

View File

@@ -964,7 +964,7 @@
usr << "\red Access denied"
src.log_append_to_last("Permission denied.")
return
for(var/mob/living/carbon/metroid/M in range(1,usr))
for(var/mob/living/carbon/slime/M in range(1,usr))
if(M.Victim == usr)
usr << "You're too busy getting your life sucked out of you."
return

View File

@@ -202,75 +202,75 @@
power *= 2
if(!istype(M, /mob/living/carbon/human))
if(istype(M, /mob/living/carbon/metroid))
var/mob/living/carbon/metroid/Metroid = M
if(istype(M, /mob/living/carbon/slime))
var/mob/living/carbon/slime/slime = M
if(prob(25))
user << "\red [src] passes right through [M]!"
return
if(power > 0)
Metroid.attacked += 10
slime.attacked += 10
if(Metroid.Discipline && prob(50)) // wow, buddy, why am I getting attacked??
Metroid.Discipline = 0
if(slime.Discipline && prob(50)) // wow, buddy, why am I getting attacked??
slime.Discipline = 0
if(power >= 3)
if(istype(Metroid, /mob/living/carbon/metroid/adult))
if(istype(slime, /mob/living/carbon/slime/adult))
if(prob(5 + round(power/2)))
if(Metroid.Victim)
if(prob(80) && !Metroid.client)
Metroid.Discipline++
Metroid.Victim = null
Metroid.anchored = 0
if(slime.Victim)
if(prob(80) && !slime.client)
slime.Discipline++
slime.Victim = null
slime.anchored = 0
spawn()
if(Metroid)
Metroid.SStun = 1
if(slime)
slime.SStun = 1
sleep(rand(5,20))
if(Metroid)
Metroid.SStun = 0
if(slime)
slime.SStun = 0
spawn(0)
if(Metroid)
Metroid.canmove = 0
step_away(Metroid, user)
if(slime)
slime.canmove = 0
step_away(slime, user)
if(prob(25 + power))
sleep(2)
if(Metroid && user)
step_away(Metroid, user)
Metroid.canmove = 1
if(slime && user)
step_away(slime, user)
slime.canmove = 1
else
if(prob(10 + power*2))
if(Metroid)
if(Metroid.Victim)
if(prob(80) && !Metroid.client)
Metroid.Discipline++
if(slime)
if(slime.Victim)
if(prob(80) && !slime.client)
slime.Discipline++
if(Metroid.Discipline == 1)
Metroid.attacked = 0
if(slime.Discipline == 1)
slime.attacked = 0
spawn()
if(Metroid)
Metroid.SStun = 1
if(slime)
slime.SStun = 1
sleep(rand(5,20))
if(Metroid)
Metroid.SStun = 0
if(slime)
slime.SStun = 0
Metroid.Victim = null
Metroid.anchored = 0
slime.Victim = null
slime.anchored = 0
spawn(0)
if(Metroid && user)
step_away(Metroid, user)
Metroid.canmove = 0
if(slime && user)
step_away(slime, user)
slime.canmove = 0
if(prob(25 + power*4))
sleep(2)
if(Metroid && user)
step_away(Metroid, user)
Metroid.canmove = 1
if(slime && user)
step_away(slime, user)
slime.canmove = 1
var/showname = "."
@@ -296,7 +296,7 @@
else
switch(src.damtype)
if("brute")
if(istype(src, /mob/living/carbon/metroid))
if(istype(src, /mob/living/carbon/slime))
M.adjustBrainLoss(power)
else
@@ -596,7 +596,7 @@
user << "\red You're going to need to remove that mask/helmet/glasses first."
return
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/metroid))//Aliens don't have eyes./N Metroids also don't have eyes!
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/slime))//Aliens don't have eyes./N slimes also don't have eyes!
user << "\red You cannot locate any eyes on this creature!"
return

View File

@@ -78,9 +78,9 @@
if(istype(G, /obj/item/weapon/grab))
if(!ismob(G:affecting))
return
for(var/mob/living/carbon/metroid/M in range(1,G:affecting))
for(var/mob/living/carbon/slime/M in range(1,G:affecting))
if(M.Victim == G:affecting)
usr << "[G:affecting:name] will not fit into the [src.name] because they have a Metroid latched onto their head."
usr << "[G:affecting:name] will not fit into the [src.name] because they have a slime latched onto their head."
return
var/mob/M = G:affecting
if(put_mob(M))

View File

@@ -48,7 +48,7 @@
user << "\red You're going to need to remove that mask/helmet/glasses first."
return
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/metroid))//Aliens don't have eyes./N
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/slime))//Aliens don't have eyes./N
user << "\red You cannot locate any eyes on this creature!"
return
@@ -286,7 +286,7 @@
M:appendix_op_stage = 4.0
return
if(user.zone_sel.selecting == "head" || istype(M, /mob/living/carbon/metroid))
if(user.zone_sel.selecting == "head" || istype(M, /mob/living/carbon/slime))
var/mob/living/carbon/human/H = M
if(istype(H) && ( \
@@ -306,7 +306,7 @@
switch(M:brain_op_stage)
if(0.0)
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
if(M.stat == 2)
for(var/mob/O in (viewers(M) - user - M))
O.show_message("\red [M.name] is beginning to have its flesh cut open with [src] by [user].", 1)
@@ -346,7 +346,7 @@
M:brain_op_stage = 1.0
if(1)
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
if(M.stat == 2)
for(var/mob/O in (viewers(M) - user - M))
O.show_message("\red [M.name] is having its silky inndards cut apart with [src] by [user].", 1)
@@ -355,11 +355,11 @@
M:brain_op_stage = 2.0
return
if(2.0)
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
if(M.stat == 2)
var/mob/living/carbon/metroid/Metroid = M
if(Metroid.cores > 0)
if(istype(M, /mob/living/carbon/metroid))
var/mob/living/carbon/slime/slime = M
if(slime.cores > 0)
if(istype(M, /mob/living/carbon/slime))
user << "\red You attempt to remove [M]'s core, but [src] is ineffective!"
return
@@ -413,7 +413,7 @@
user << "\red You're going to need to remove that mask/helmet/glasses first."
return
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/metroid))//Aliens don't have eyes./N
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/slime))//Aliens don't have eyes./N
user << "\red You cannot locate any eyes on this creature!"
return
@@ -467,7 +467,7 @@
src.add_fingerprint(user)
if(user.zone_sel.selecting == "head" || istype(M, /mob/living/carbon/metroid))
if(user.zone_sel.selecting == "head" || istype(M, /mob/living/carbon/slime))
var/mob/living/carbon/human/H = M
if(istype(H) && ( \
@@ -487,7 +487,7 @@
switch(M:brain_op_stage)
if(1.0)
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
return
if(M != user)
for(var/mob/O in (viewers(M) - user - M))
@@ -519,21 +519,21 @@
M:brain_op_stage = 2.0
if(2.0)
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
if(M.stat == 2)
var/mob/living/carbon/metroid/Metroid = M
if(Metroid.cores > 0)
var/mob/living/carbon/slime/slime = M
if(slime.cores > 0)
for(var/mob/O in (viewers(M) - user - M))
O.show_message("\red [M.name] is having one of its cores sawed out with [src] by [user].", 1)
Metroid.cores--
M << "\red [user] begins to remove one of your cores with [src]! ([Metroid.cores] cores remaining)"
user << "\red You cut one of [M]'s cores out with [src]! ([Metroid.cores] cores remaining)"
slime.cores--
M << "\red [user] begins to remove one of your cores with [src]! ([slime.cores] cores remaining)"
user << "\red You cut one of [M]'s cores out with [src]! ([slime.cores] cores remaining)"
new/obj/item/metroid_core(M.loc)
new/obj/item/slime_core(M.loc)
if(Metroid.cores <= 0)
M.icon_state = "baby roro dead-nocore"
if(slime.cores <= 0)
M.icon_state = "baby slime dead-nocore"
return

View File

@@ -57,8 +57,8 @@
healthcheck()
return
/obj/structure/grille/attack_metroid(mob/user as mob)
if(!istype(user, /mob/living/carbon/metroid/adult)) return
/obj/structure/grille/attack_slime(mob/user as mob)
if(!istype(user, /mob/living/carbon/slime/adult)) return
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
user.visible_message("<span class='warning'>[user] smashes against [src].</span>", \

View File

@@ -49,7 +49,7 @@
// MouseDrop_T(var/atom/movable/C, mob/user)
// if(istype(C, /obj/mob/carbon/monkey)
// else if(istype(C, /obj/mob/carbon/alien) && !istype(C, /mob/living/carbon/alien/larva/metroid))
// else if(istype(C, /obj/mob/carbon/alien) && !istype(C, /mob/living/carbon/alien/larva/slime))
// else if(istype(C, /obj/livestock/spesscarp
attack_hand(mob/user as mob)

View File

@@ -86,8 +86,8 @@
shatter()
/obj/structure/mirror/attack_metroid(mob/user as mob)
if(!ismetroidadult(user)) return
/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

View File

@@ -113,7 +113,7 @@
return attack_hand(user)
/obj/structure/window/proc/attack_generic(mob/user as mob, damage = 0) //used by attack_alien, attack_animal, and attack_metroid
/obj/structure/window/proc/attack_generic(mob/user as mob, damage = 0) //used by attack_alien, attack_animal, and attack_slime
health -= damage
if(health <= 0)
user.visible_message("<span class='danger'>[user] smashes through [src]!</span>")
@@ -136,8 +136,8 @@
attack_generic(M, M.melee_damage_upper)
/obj/structure/window/attack_metroid(mob/user as mob)
if(!ismetroidadult(user)) return
/obj/structure/window/attack_slime(mob/user as mob)
if(!isslimeadult(user)) return
attack_generic(user, rand(10, 15))

View File

@@ -56,7 +56,7 @@ var/list/mechtoys = list(
else if(istype(A, /mob/living)) // You Shall Not Pass!
var/mob/living/M = A
if(!M.lying && !istype(M, /mob/living/carbon/monkey) && !istype(M, /mob/living/carbon/metroid)) //If your not laying down, or a small creature, no pass.
if(!M.lying && !istype(M, /mob/living/carbon/monkey) && !istype(M, /mob/living/carbon/slime)) //If your not laying down, or a small creature, no pass.
return 0
return ..()

View File

@@ -43,7 +43,7 @@
else
M.inertia_dir = 0
return
else if(!istype(M, /mob/living/carbon/metroid))
else if(!istype(M, /mob/living/carbon/slime))
if (M.m_intent == "run")
M.stop_pulling()
step(M, M.dir)
@@ -56,7 +56,7 @@
return
if(2) //lube //can cause infinite loops - needs work
if(!istype(M, /mob/living/carbon/metroid))
if(!istype(M, /mob/living/carbon/slime))
M.stop_pulling()
step(M, M.dir)
spawn(1) step(M, M.dir)

View File

@@ -154,7 +154,7 @@
updatehealth()
/mob/living/carbon/metroid/verb/suicide()
/mob/living/carbon/slime/verb/suicide()
set hidden = 1
if (stat == 2)
src << "You're already dead!"

View File

@@ -97,7 +97,7 @@ var/global/floorIsLava = 0
body += "<A href='?src=\ref[src];makeai=\ref[M]'>Make AI</A> | "
body += "<A href='?src=\ref[src];makerobot=\ref[M]'>Make Robot</A> | "
body += "<A href='?src=\ref[src];makealien=\ref[M]'>Make Alien</A> | "
body += "<A href='?src=\ref[src];makemetroid=\ref[M]'>Make Metroid</A> "
body += "<A href='?src=\ref[src];makeslime=\ref[M]'>Make slime</A> "
//Simple Animals
if(isanimal(M))
@@ -114,8 +114,8 @@ var/global/floorIsLava = 0
body += "<A href='?src=\ref[src];simplemake=sentinel;mob=\ref[M]'>Sentinel</A>, "
body += "<A href='?src=\ref[src];simplemake=larva;mob=\ref[M]'>Larva</A> \] "
body += "<A href='?src=\ref[src];simplemake=human;mob=\ref[M]'>Human</A> "
body += "\[ Metroid: <A href='?src=\ref[src];simplemake=metroid;mob=\ref[M]'>Baby</A>, "
body += "<A href='?src=\ref[src];simplemake=adultmetroid;mob=\ref[M]'>Adult</A> \] "
body += "\[ slime: <A href='?src=\ref[src];simplemake=slime;mob=\ref[M]'>Baby</A>, "
body += "<A href='?src=\ref[src];simplemake=adultslime;mob=\ref[M]'>Adult</A> \] "
body += "<A href='?src=\ref[src];simplemake=monkey;mob=\ref[M]'>Monkey</A> | "
body += "<A href='?src=\ref[src];simplemake=robot;mob=\ref[M]'>Cyborg</A> | "
body += "<A href='?src=\ref[src];simplemake=cat;mob=\ref[M]'>Cat</A> | "

View File

@@ -228,8 +228,8 @@
if(iscarbon(M)) //Carbon stuff
if(ishuman(M))
M_job = M.job
else if(ismetroid(M))
M_job = "Metroid"
else if(isslime(M))
M_job = "slime"
else if(ismonkey(M))
M_job = "Monkey"
else if(isalien(M)) //aliens

View File

@@ -262,8 +262,8 @@
if("sentinel") M.change_mob_type( /mob/living/carbon/alien/humanoid/sentinel , null, null, delmob )
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("metroid") M.change_mob_type( /mob/living/carbon/metroid , null, null, delmob )
if("adultmetroid") M.change_mob_type( /mob/living/carbon/metroid/adult , 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 )
@@ -1137,15 +1137,15 @@
usr.client.cmd_admin_alienize(H)
else if(href_list["makemetroid"])
else if(href_list["makeslime"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makemetroid"])
var/mob/living/carbon/human/H = locate(href_list["makeslime"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
return
usr.client.cmd_admin_metroidize(H)
usr.client.cmd_admin_slimeize(H)
else if(href_list["makerobot"])
if(!check_rights(R_SPAWN)) return

View File

@@ -230,20 +230,20 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
else
alert("Invalid mob")
/client/proc/cmd_admin_metroidize(var/mob/M in mob_list)
/client/proc/cmd_admin_slimeize(var/mob/M in mob_list)
set category = "Fun"
set name = "Make Metroid"
set name = "Make slime"
if(!ticker)
alert("Wait until the game starts")
return
if(ishuman(M))
log_admin("[key_name(src)] has metroidized [M.key].")
log_admin("[key_name(src)] has slimeized [M.key].")
spawn(10)
M:Metroidize()
M:slimeize()
feedback_add_details("admin_verb","MKMET") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] made [key_name(M)] into a metroid.")
message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into a metroid.", 1)
log_admin("[key_name(usr)] made [key_name(M)] into a slime.")
message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into a slime.", 1)
else
alert("Invalid mob")

View File

@@ -10,10 +10,10 @@
desc = "It smells faintly of plasma"
icon_state = "petehat"
/obj/item/clothing/head/collectable/metroid
name = "collectable metroid cap!"
/obj/item/clothing/head/collectable/slime
name = "collectable slime cap!"
desc = "It just latches right in place!"
icon_state = "metroid"
icon_state = "slime"
/obj/item/clothing/head/collectable/xenom
name = "collectable xenomorph helmet!"

View File

@@ -50,9 +50,9 @@ I said no!
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly
/datum/recipe/jellydonut/roro
reagents = list("rorojelly" = 5, "flour" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/rorojelly
/datum/recipe/jellydonut/slime
reagents = list("slimejelly" = 5, "flour" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
/datum/recipe/jellydonut/cherry
reagents = list("cherryjelly" = 5, "flour" = 5)
@@ -775,12 +775,12 @@ I said no!
)
result = /obj/item/weapon/reagent_containers/food/snacks/stew
/datum/recipe/rorotoast
reagents = list("rorojelly" = 5)
/datum/recipe/slimetoast
reagents = list("slimejelly" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
)
result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/roro
result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime
/datum/recipe/jelliedtoast
reagents = list("cherryjelly" = 5)
@@ -902,10 +902,10 @@ I said no!
)
result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake
/datum/recipe/roroburger
reagents = list("rorojelly" = 5, "flour" = 15)
/datum/recipe/slimeburger
reagents = list("slimejelly" = 5, "flour" = 15)
items = list()
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/roro
result = /obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime
/datum/recipe/jellyburger
reagents = list("cherryjelly" = 5, "flour" = 15)
@@ -920,13 +920,13 @@ I said no!
)
result = /obj/item/weapon/reagent_containers/food/snacks/twobread
/datum/recipe/rorosandwich
reagents = list("rorojelly" = 5)
/datum/recipe/slimesandwich
reagents = list("slimejelly" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
/obj/item/weapon/reagent_containers/food/snacks/breadslice,
)
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/roro
result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime
/datum/recipe/cherrysandwich
reagents = list("cherryjelly" = 5)
@@ -989,11 +989,11 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/bloodsoup
/datum/recipe/rorosoup
reagents = list("water" = 10, "rorojelly" = 5)
/datum/recipe/slimesoup
reagents = list("water" = 10, "slimejelly" = 5)
items = list(
)
result = /obj/item/weapon/reagent_containers/food/snacks/rorosoup
result = /obj/item/weapon/reagent_containers/food/snacks/slimesoup
/datum/recipe/clownstears
reagents = list("water" = 10)
@@ -1002,14 +1002,14 @@ I said no!
/obj/item/weapon/ore/clown,
)
result = /obj/item/weapon/reagent_containers/food/snacks/clownstears
/datum/recipe/boiledrorocore
/*
/datum/recipe/boiledslimeextract
reagents = list("water" = 5)
items = list(
/obj/item/metroid_core,
/obj/item/slime_core,
)
result = /obj/item/weapon/reagent_containers/food/snacks/boiledrorocore
result = /obj/item/weapon/reagent_containers/food/snacks/boiledslimecore
*/
/datum/recipe/braincake
reagents = list("milk" = 5, "flour" = 15)
items = list(

View File

@@ -213,7 +213,7 @@
if ((s_active && !( s_active in contents ) ))
s_active.close(src)
for(var/mob/living/carbon/metroid/M in view(1,src))
for(var/mob/living/carbon/slime/M in view(1,src))
M.UpdateFeed(src)
return
@@ -265,7 +265,7 @@
return
/mob/living/carbon/alien/humanoid/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/carbon/alien/humanoid/attack_slime(mob/living/carbon/slime/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -280,7 +280,7 @@
var/damage = rand(1, 3)
if(istype(M, /mob/living/carbon/metroid/adult))
if(istype(M, /mob/living/carbon/slime/adult))
damage = rand(10, 40)
else
damage = rand(5, 35)

View File

@@ -208,7 +208,7 @@
if ((s_active && !( s_active in contents ) ))
s_active.close(src)
for(var/mob/living/carbon/metroid/M in view(1,src))
for(var/mob/living/carbon/slime/M in view(1,src))
M.UpdateFeed(src)
return
@@ -279,7 +279,7 @@
return
/mob/living/carbon/alien/larva/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/carbon/alien/larva/attack_slime(mob/living/carbon/slime/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -294,7 +294,7 @@
var/damage = rand(1, 3)
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
damage = rand(20, 40)
else
damage = rand(5, 35)

View File

@@ -42,7 +42,7 @@
return 1
if (istype(other, /mob/living/carbon/human))
return 1
if (istype(other, /mob/living/carbon/metroid))
if (istype(other, /mob/living/carbon/slime))
return 1
return ..()

View File

@@ -64,9 +64,9 @@
loc = tmob.loc
tmob.loc = oldloc
now_pushing = 0
for(var/mob/living/carbon/metroid/Metroid in view(1,tmob))
if(Metroid.Victim == tmob)
Metroid.UpdateFeed()
for(var/mob/living/carbon/slime/slime in view(1,tmob))
if(slime.Victim == tmob)
slime.UpdateFeed()
return
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
@@ -317,7 +317,7 @@
if ((s_active && !( s_active in contents ) ))
s_active.close(src)
for(var/mob/living/carbon/metroid/M in view(1,src))
for(var/mob/living/carbon/slime/M in view(1,src))
M.UpdateFeed(src)
return
@@ -357,7 +357,7 @@
if(armor >= 2) return
/mob/living/carbon/human/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/carbon/human/attack_slime(mob/living/carbon/slime/M as mob)
if(M.Victim) return // can't attack while eating!
if (health > -100)
@@ -368,7 +368,7 @@
var/damage = rand(1, 3)
if(istype(M, /mob/living/carbon/metroid/adult))
if(istype(M, /mob/living/carbon/slime/adult))
damage = rand(10, 35)
else
damage = rand(5, 25)

View File

@@ -1034,7 +1034,7 @@
sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS)
if(dna)
switch(dna.mutantrace)
if("lizard","metroid")
if("lizard","slime")
see_in_dark = 3
see_invisible = SEE_INVISIBLE_LEVEL_ONE
if("shadow")

View File

@@ -23,7 +23,7 @@
if(copytext(message, 1, 2) != "*")
message = replacetext(message, "s", stutter("ss"))
if(src.dna.mutantrace == "metroid" && prob(5))
if(src.dna.mutantrace == "slime" && prob(5))
if(copytext(message, 1, 2) != "*")
if(copytext(message, 1, 2) == ";")
message = ";"
@@ -134,7 +134,7 @@
return 1
if (istype(other, /mob/living/carbon/brain))
return 1
if (istype(other, /mob/living/carbon/metroid))
if (istype(other, /mob/living/carbon/slime))
return 1
return ..()

View File

@@ -54,7 +54,7 @@ There are several things that need to be remembered:
All of these are named after the variable they update from. They are defined at the mob/ level like
update_clothing was, so you won't cause undefined proc runtimes with usr.update_inv_wear_id() if the usr is a
metroid etc. Instead, it'll just return without doing any work. So no harm in calling it for metroids and such.
slime etc. Instead, it'll just return without doing any work. So no harm in calling it for slimes and such.
> There are also these special cases:
@@ -323,7 +323,7 @@ Please contact me on #coderbus IRC. ~Carn x
if(dna)
switch(dna.mutantrace)
if("lizard","golem","metroid","shadow")
if("lizard","golem","slime","shadow")
overlays_lying[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_l")
overlays_standing[MUTANTRACE_LAYER] = image("icon" = 'icons/effects/genetics.dmi', "icon_state" = "[dna.mutantrace][fat]_[gender]_s")
if("plant")

View File

@@ -1,10 +1,10 @@
/mob/living/carbon/metroid/death(gibbed)
/mob/living/carbon/slime/death(gibbed)
if(stat == DEAD) return
stat = DEAD
icon_state = "baby roro dead"
icon_state = "baby slime dead"
if(!gibbed)
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
ghostize()
explosion(loc, -1,-1,3,12)
if(src) del(src)

View File

@@ -1,4 +1,4 @@
/mob/living/carbon/metroid/emote(var/act)
/mob/living/carbon/slime/emote(var/act)
if (findtext(act, "-", 1, null))
@@ -16,11 +16,6 @@
if("moan")
message = "<B>The [src.name]</B> moans."
m_type = 2
// if("roar")
// if (!muzzled)
// message = "<B>The [src.name]</B> roars." Commenting out since larva shouldn't roar /N
// m_type = 2
if("shiver")
message = "<B>The [src.name]</B> shivers."
m_type = 2
@@ -36,17 +31,11 @@
if("light")
message = "<B>The [src.name]</B> lights up for a bit, then stops."
m_type = 1
if("click")
message = "<B>The [src.name]</B> makes a clicking noise!"
if("jiggle")
message = "<B>The [src.name]</B> jiggles!"
m_type = 1
if("chatter")
message = "<B>The [src.name]</B> makes a noisy chattering sound!"
m_type = 1
if("growl")
message = "<B>The [src.name]</B> growls!"
m_type = 1
if("shriek")
message = "<B>The [src.name]</B> makes a high-pitched shriek!"
if("bounce")
message = "<B>The [src.name]</B> bounces in place."
m_type = 1
else
src << text("Invalid Emote: []", act)

View File

@@ -1,4 +1,4 @@
/mob/living/carbon/metroid/examine()
/mob/living/carbon/slime/examine()
set src in oview()
if(!usr || !src) return

View File

@@ -1,4 +1,4 @@
/mob/living/carbon/metroid/proc/regular_hud_updates()
/mob/living/carbon/slime/proc/regular_hud_updates()
return

View File

@@ -1,4 +1,4 @@
/mob/living/carbon/metroid/Life()
/mob/living/carbon/slime/Life()
set invisibility = 0
set background = 1
@@ -41,21 +41,21 @@
/mob/living/carbon/metroid
/mob/living/carbon/slime
var/AIproc = 0 // determines if the AI loop is activated
var/Atkcool = 0 // attack cooldown
var/Tempstun = 0 // temporary temperature stuns
var/Discipline = 0 // if a metroid has been hit with a freeze gun, or wrestled/attacked off a human, they become disciplined and don't attack anymore for a while
var/Discipline = 0 // if a slime has been hit with a freeze gun, or wrestled/attacked off a human, they become disciplined and don't attack anymore for a while
var/SStun = 0 // stun variable
/mob/living/carbon/metroid/proc/AIprocess() // the master AI process
/mob/living/carbon/slime/proc/AIprocess() // the master AI process
//world << "AI proc started."
if(AIproc || stat == DEAD || client) return
var/hungry = 0
var/starving = 0
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
switch(nutrition)
if(400 to 1100) hungry = 1
if(0 to 399)
@@ -84,7 +84,7 @@
if(Target)
//world << "[Target] Target Found"
for(var/mob/living/carbon/metroid/M in view(1,Target))
for(var/mob/living/carbon/slime/M in view(1,Target))
if(M.Victim == Target)
Target = null
AIproc = 0
@@ -104,7 +104,7 @@
Atkcool = 0
if(get_obstacle_ok(Target))
Target.attack_metroid(src)
Target.attack_slime(src)
//world << "retrun 1"
return
if(!Target.lying && prob(80))
@@ -117,7 +117,7 @@
Atkcool = 0
if(get_obstacle_ok(Target))
Target.attack_metroid(src)
Target.attack_slime(src)
if(prob(30))
@@ -145,12 +145,12 @@
var/sleeptime = movement_delay()
if(sleeptime <= 0) sleeptime = 1
sleep(sleeptime + 2) // this is about as fast as a player Metroid can go
sleep(sleeptime + 2) // this is about as fast as a player slime can go
AIproc = 0
//world << "AI proc ended."
/mob/living/carbon/metroid/proc/handle_environment(datum/gas_mixture/environment)
/mob/living/carbon/slime/proc/handle_environment(datum/gas_mixture/environment)
if(!environment)
adjustToxLoss(rand(10,20))
return
@@ -208,7 +208,7 @@
return //TODO: DEFERRED
/mob/living/carbon/metroid/proc/adjust_body_temperature(current, loc_temp, boost)
/mob/living/carbon/slime/proc/adjust_body_temperature(current, loc_temp, boost)
var/temperature = current
var/difference = abs(current-loc_temp) //get difference
var/increments// = difference/10 //find how many increments apart they are
@@ -225,7 +225,7 @@
temp_change = (temperature - current)
return temp_change
/mob/living/carbon/metroid/proc/handle_chemicals_in_body()
/mob/living/carbon/slime/proc/handle_chemicals_in_body()
if(reagents) reagents.metabolize(src)
@@ -235,9 +235,9 @@
return //TODO: DEFERRED
/mob/living/carbon/metroid/proc/handle_regular_status_updates()
/mob/living/carbon/slime/proc/handle_regular_status_updates()
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
health = 200 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
else
health = 150 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
@@ -315,10 +315,10 @@
return 1
/mob/living/carbon/metroid/proc/handle_nutrition()
/mob/living/carbon/slime/proc/handle_nutrition()
if(prob(20))
if(istype(src, /mob/living/carbon/metroid/adult)) nutrition-=rand(4,6)
if(istype(src, /mob/living/carbon/slime/adult)) nutrition-=rand(4,6)
else nutrition-=rand(2,3)
if(nutrition <= 0)
@@ -328,7 +328,7 @@
adjustToxLoss(rand(0,5))
else
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
if(nutrition >= 1000)
if(prob(40)) amount_grown++
@@ -336,29 +336,35 @@
if(nutrition >= 800)
if(prob(40)) amount_grown++
//lay eggs or grow
if(amount_grown >= 10 && !Victim && !Target)
if(istype(src, /mob/living/carbon/metroid/adult))
if(!client && nutrition >= 1000)
var/number = pick(1,1,1,1,1,1,2,2,2,3) //number of eggs laid
var/obj/item/weapon/reagent_containers/food/snacks/egg/roro/E
for(var/i=1,i<=number,i++)
E = new(loc)
src.nutrition -= 200
step_away(E,src)
if(istype(src, /mob/living/carbon/slime/adult))
if(!client)
var/number = pick(2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4)
for(var/i=1,i<=number,i++) // reproduce (has a small chance of producing 3 or 4 offspring)
var/mob/living/carbon/slime/M = new/mob/living/carbon/slime(loc)
// M.nutrition = round(nutrition * 0.9)
M.powerlevel = round(powerlevel/number)
M.Friends = Friends
M.tame = tame
M.rabid = rabid
M.Discipline = Discipline
if(i != 1) step_away(M,src)
del(src)
else
if(!client)
var/mob/living/carbon/metroid/adult/A = new/mob/living/carbon/metroid/adult(src.loc)
var/mob/living/carbon/slime/adult/A = new/mob/living/carbon/slime/adult(src.loc)
A.nutrition = nutrition
A.nutrition += 100
// A.nutrition += 100
A.powerlevel = max(0, powerlevel-1)
A.Friends = Friends
A.tame = tame
A.rabid = rabid
del(src)
/mob/living/carbon/metroid/proc/handle_targets()
/mob/living/carbon/slime/proc/handle_targets()
if(Tempstun)
if(!Victim) // not while they're eating!
canmove = 0
@@ -394,14 +400,14 @@
if(prob(5))
emote(pick("click","chatter","sway","light","vibrate","chatter","shriek"))
emote(pick("bounce","sway","light","vibrate","jiggle"))
if(AIproc && SStun) return
var/hungry = 0 // determines if the metroid is hungry
var/starving = 0 // determines if the metroid is starving-hungry
if(istype(src, /mob/living/carbon/metroid/adult)) // 1200 max nutrition
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
switch(nutrition)
if(601 to 900)
if(prob(25)) hungry = 1//Ensures they continue eating, but aren't as aggressive at the same time
@@ -417,7 +423,7 @@
if(0 to 200) starving = 1
if(starving && !client) // if a metroid is starving, it starts losing its friends
if(starving && !client) // if a slime is starving, it starts losing its friends
if(Friends.len > 0 && prob(1))
var/mob/nofriend = pick(Friends)
Friends -= nofriend
@@ -428,42 +434,42 @@
if(hungry || starving) //Only add to the list if we need to
for(var/mob/living/L in view(7,src))
//Ignore other metroids, dead mobs and simple_animals
if(ismetroid(L) || L.stat != CONSCIOUS || isanimal(L))
//Ignore other slimes, dead mobs and simple_animals
if(isslime(L) || L.stat != CONSCIOUS || isanimal(L))
continue
if(issilicon(L))
if(!istype(src, /mob/living/carbon/metroid/adult)) //Non-starving diciplined adult metroids wont eat things
if(!istype(src, /mob/living/carbon/slime/adult)) //Non-starving diciplined adult slimes wont eat things
if(!starving && Discipline > 0)
continue
if(tame) //Tame metroids ignore electronic life
if(tame) //Tame slimes ignore electronic life
continue
targets += L //Possible target found!
else if(iscarbon(L))
if(istype(L, /mob/living/carbon/human)) //Ignore metroid(wo)men
if(istype(L, /mob/living/carbon/human)) //Ignore slime(wo)men
var/mob/living/carbon/human/H = L
if(H.dna)
if(H.dna.mutantrace == "metroid")
if(H.dna.mutantrace == "slime")
continue
if(!istype(src, /mob/living/carbon/metroid/adult)) //Non-starving diciplined adult metroids wont eat things
if(!istype(src, /mob/living/carbon/slime/adult)) //Non-starving diciplined adult slimes wont eat things
if(!starving && Discipline > 0)
continue
if(L in Friends) //No eating friends!
continue
if(tame && ishuman(L)) //Tame metroids dont eat people.
if(tame && ishuman(L)) //Tame slimes dont eat people.
continue
if(!L.canmove) //Only one metroid can latch on at a time.
if(!L.canmove) //Only one slime can latch on at a time.
var/notarget = 0
for(var/mob/living/carbon/metroid/M in view(1,L))
for(var/mob/living/carbon/slime/M in view(1,L))
if(M.Victim == L)
notarget = 1
if(notarget)
@@ -474,7 +480,7 @@
if((hungry || starving) && targets.len > 0)
if(!istype(src, /mob/living/carbon/metroid/adult))
if(!istype(src, /mob/living/carbon/slime/adult))
if(!starving)
for(var/mob/living/carbon/C in targets)
if(!Discipline && prob(5))

View File

@@ -1,4 +1,4 @@
/mob/living/carbon/metroid/Login()
/mob/living/carbon/slime/Login()
..()
update_hud()
return

View File

@@ -1,7 +1,7 @@
/mob/living/carbon/metroid
name = "baby roro"
/mob/living/carbon/slime
name = "baby slime"
icon = 'icons/mob/mob.dmi'
icon_state = "baby roro"
icon_state = "baby slime"
pass_flags = PASSTABLE
voice_message = "skree!"
say_message = "hums"
@@ -17,33 +17,33 @@
see_in_dark = 8
// canstun and canweaken don't affect metroids because they ignore stun and weakened variables
// canstun and canweaken don't affect slimes because they ignore stun and weakened variables
// for the sake of cleanliness, though, here they are.
status_flags = CANPARALYSE|CANPUSH
var/cores = 3 // the number of /obj/item/metroid_core's the metroid has left inside
var/cores = 3 // the number of /obj/item/slime_core's the slime has left inside
var/powerlevel = 0 // 1-10 controls how much electricity they are generating
var/amount_grown = 0 // controls how long the metroid has been overfed, if 10, grows into an adult
var/amount_grown = 0 // controls how long the slime has been overfed, if 10, grows into an adult
// if adult: if 10: reproduces
var/mob/living/Victim = null // the person the metroid is currently feeding on
var/mob/living/Target = null // AI variable - tells the Metroid to hunt this down
var/mob/living/Victim = null // the person the slime is currently feeding on
var/mob/living/Target = null // AI variable - tells the slime to hunt this down
var/attacked = 0 // determines if it's been attacked recently. Can be any number, is a cooloff-ish variable
var/tame = 0 // if set to 1, the Metroid will not eat humans ever, or attack them
var/rabid = 0 // if set to 1, the Metroid will attack and eat anything it comes in contact with
var/tame = 0 // if set to 1, the slime will not eat humans ever, or attack them
var/rabid = 0 // if set to 1, the slime will attack and eat anything it comes in contact with
var/list/Friends = list() // A list of potential friends
var/list/FriendsWeight = list() // A list containing values respective to Friends. This determines how many times a Metroid "likes" something. If the Metroid likes it more than 2 times, it becomes a friend
var/list/FriendsWeight = list() // A list containing values respective to Friends. This determines how many times a slime "likes" something. If the slime likes it more than 2 times, it becomes a friend
// Metroids pass on genetic data, so all their offspring have the same "Friends",
// slimes pass on genetic data, so all their offspring have the same "Friends",
/mob/living/carbon/metroid/adult
name = "adult roro"
/mob/living/carbon/slime/adult
name = "adult slime"
icon = 'icons/mob/mob.dmi'
icon_state = "adult roro"
icon_state = "adult slime"
health = 200
gender = NEUTER
@@ -52,25 +52,25 @@
nutrition = 800 // 1200 = max
/mob/living/carbon/metroid/New()
/mob/living/carbon/slime/New()
var/datum/reagents/R = new/datum/reagents(100)
reagents = R
R.my_atom = src
if(name == "baby roro")
name = text("baby roro ([rand(1, 1000)])")
if(name == "baby slime")
name = text("baby slime ([rand(1, 1000)])")
else
name = text("adult roro ([rand(1,1000)])")
name = text("adult slime ([rand(1,1000)])")
real_name = name
spawn (1)
regenerate_icons()
src << "\blue Your icons have been generated!"
..()
/mob/living/carbon/metroid/adult/New()
verbs.Remove(/mob/living/carbon/metroid/verb/ventcrawl)
/mob/living/carbon/slime/adult/New()
verbs.Remove(/mob/living/carbon/slime/verb/ventcrawl)
..()
/mob/living/carbon/metroid/movement_delay()
/mob/living/carbon/slime/movement_delay()
var/tally = 0
var/health_deficiency = (100 - health)
@@ -80,22 +80,22 @@
tally += (283.222 - bodytemperature) / 10 * 1.75
if(reagents)
if(reagents.has_reagent("hyperzine")) // hyperzine slows Metroids down
if(reagents.has_reagent("hyperzine")) // hyperzine slows slimes down
tally *= 2 // moves twice as slow
if(reagents.has_reagent("frostoil")) // frostoil also makes them move VEEERRYYYYY slow
tally *= 5
if(health <= 0) // if damaged, the metroid moves twice as slow
if(health <= 0) // if damaged, the slime moves twice as slow
tally *= 2
if (bodytemperature >= 330.23) // 135 F
return -1 // Metroids become supercharged at high temperatures
return -1 // slimes become supercharged at high temperatures
return tally+config.metroid_delay
return tally+config.slime_delay
/mob/living/carbon/metroid/Bump(atom/movable/AM as mob|obj, yes)
/mob/living/carbon/slime/Bump(atom/movable/AM as mob|obj, yes)
spawn( 0 )
if ((!( yes ) || now_pushing))
return
@@ -115,9 +115,9 @@
if(istype(AM, /obj/structure/window) || istype(AM, /obj/structure/grille))
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
if(nutrition <= 600 && !Atkcool)
AM.attack_metroid(src)
AM.attack_slime(src)
spawn()
Atkcool = 1
sleep(15)
@@ -125,7 +125,7 @@
else
if(nutrition <= 500 && !Atkcool)
if(prob(5))
AM.attack_metroid(src)
AM.attack_slime(src)
spawn()
Atkcool = 1
sleep(15)
@@ -134,7 +134,7 @@
if(ismob(AM))
var/mob/tmob = AM
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
if(istype(tmob, /mob/living/carbon/human))
if(prob(90))
now_pushing = 0
@@ -162,22 +162,22 @@
return
return
/mob/living/carbon/metroid/Process_Spacemove()
/mob/living/carbon/slime/Process_Spacemove()
return 2
/mob/living/carbon/metroid/Stat()
/mob/living/carbon/slime/Stat()
..()
statpanel("Status")
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/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/metroid/adult))
if(istype(src,/mob/living/carbon/slime/adult))
stat(null, "Nutrition: [nutrition]/1200")
if(amount_grown >= 10)
stat(null, "You can reproduce!")
@@ -189,21 +189,21 @@
stat(null,"Power Level: [powerlevel]")
/mob/living/carbon/metroid/adjustFireLoss(amount)
/mob/living/carbon/slime/adjustFireLoss(amount)
..(-abs(amount)) // Heals them
return
/mob/living/carbon/metroid/bullet_act(var/obj/item/projectile/Proj)
/mob/living/carbon/slime/bullet_act(var/obj/item/projectile/Proj)
attacked += 10
..(Proj)
return 0
/mob/living/carbon/metroid/emp_act(severity)
/mob/living/carbon/slime/emp_act(severity)
powerlevel = 0 // oh no, the power!
..()
/mob/living/carbon/metroid/ex_act(severity)
/mob/living/carbon/slime/ex_act(severity)
if (stat == 2 && client)
return
@@ -234,7 +234,7 @@
updatehealth()
/mob/living/carbon/metroid/blob_act()
/mob/living/carbon/slime/blob_act()
if (stat == 2)
return
var/shielded = 0
@@ -256,14 +256,14 @@
return
/mob/living/carbon/metroid/u_equip(obj/item/W as obj)
/mob/living/carbon/slime/u_equip(obj/item/W as obj)
return
/mob/living/carbon/metroid/attack_ui(slot)
/mob/living/carbon/slime/attack_ui(slot)
return
/mob/living/carbon/metroid/meteorhit(O as obj)
/mob/living/carbon/slime/meteorhit(O as obj)
for(var/mob/M in viewers(src, null))
if ((M.client && !( M.blinded )))
M.show_message(text("\red [] has been hit by []", src, O), 1)
@@ -275,7 +275,7 @@
return
/mob/living/carbon/metroid/Move(a, b, flag)
/mob/living/carbon/slime/Move(a, b, flag)
var/t7 = 1
if (restrained())
@@ -337,7 +337,7 @@
return
/mob/living/carbon/metroid/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/carbon/slime/attack_slime(mob/living/carbon/slime/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -353,7 +353,7 @@
var/damage = rand(1, 3)
attacked += 5
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
damage = rand(1, 6)
else
damage = rand(1, 3)
@@ -366,7 +366,7 @@
return
/mob/living/carbon/metroid/attack_animal(mob/living/simple_animal/M as mob)
/mob/living/carbon/slime/attack_animal(mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0)
M.emote("[M.friendly] [src]")
else
@@ -380,7 +380,7 @@
adjustBruteLoss(damage)
updatehealth()
/mob/living/carbon/metroid/attack_paw(mob/living/carbon/monkey/M as mob)
/mob/living/carbon/slime/attack_paw(mob/living/carbon/monkey/M as mob)
if(!(istype(M, /mob/living/carbon/monkey))) return//Fix for aliens receiving double messages when attacking other aliens.
if (!ticker)
@@ -401,16 +401,16 @@
return
if (health > 0)
attacked += 10
playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
//playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[M.name] has bit [src]!</B>"), 1)
O.show_message(text("\red <B>[M.name] has attacked [src]!</B>"), 1)
adjustBruteLoss(rand(1, 3))
updatehealth()
return
/mob/living/carbon/metroid/attack_hand(mob/living/carbon/human/M as mob)
/mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -466,7 +466,7 @@
if(prob(80) && !client)
Discipline++
if(!istype(src, /mob/living/carbon/metroid/adult))
if(!istype(src, /mob/living/carbon/slime/adult))
if(Discipline == 1)
attacked = 0
@@ -566,7 +566,7 @@
/mob/living/carbon/metroid/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
/mob/living/carbon/slime/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -591,7 +591,7 @@
damage = rand(20, 40)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has slashed [name]!</B>", M), 1)
O.show_message(text("\red <B>[] has attacked [name]!</B>", M), 1)
else
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
@@ -635,7 +635,7 @@
anchored = 0
if(prob(80) && !client)
Discipline++
if(!istype(src, /mob/living/carbon/metroid))
if(!istype(src, /mob/living/carbon/slime))
if(Discipline == 1)
attacked = 0
@@ -660,15 +660,15 @@
return
/mob/living/carbon/metroid/restrained()
/mob/living/carbon/slime/restrained()
return 0
mob/living/carbon/metroid/var/co2overloadtime = null
mob/living/carbon/metroid/var/temperature_resistance = T0C+75
mob/living/carbon/slime/var/co2overloadtime = null
mob/living/carbon/slime/var/temperature_resistance = T0C+75
/mob/living/carbon/metroid/show_inv(mob/user as mob)
/mob/living/carbon/slime/show_inv(mob/user as mob)
user.set_machine(src)
var/dat = {"
@@ -680,22 +680,22 @@ mob/living/carbon/metroid/var/temperature_resistance = T0C+75
onclose(user, "mob[name]")
return
/mob/living/carbon/metroid/updatehealth()
/mob/living/carbon/slime/updatehealth()
if(status_flags & GODMODE)
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
health = 200
else
health = 150
stat = CONSCIOUS
else
// metroids can't suffocate unless they suicide. They are also not harmed by fire
if(istype(src, /mob/living/carbon/metroid/adult))
// slimes can't suffocate unless they suicide. They are also not harmed by fire
if(istype(src, /mob/living/carbon/slime/adult))
health = 200 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
else
health = 150 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
/mob/living/carbon/metroid/proc/get_obstacle_ok(atom/A)
/mob/living/carbon/slime/proc/get_obstacle_ok(atom/A)
var/direct = get_dir(src, A)
var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( src.loc )
var/ok = 0
@@ -777,12 +777,12 @@ mob/living/carbon/metroid/var/temperature_resistance = T0C+75
return 1
// Basically this Metroid Core catalyzes reactions that normally wouldn't happen anywhere
/obj/item/metroid_core
name = "roro core"
desc = "A very slimy and tender part of a Rorobeast. Legends claim these to have \"magical powers\"."
icon = 'icons/obj/surgery.dmi'
icon_state = "roro core"
// Basically this slime Core catalyzes reactions that normally wouldn't happen anywhere
/obj/item/slime_core
name = "slime extract"
desc = "Goo extracted from a slime. Legends claim these to have \"magical powers\"."
icon = 'icons/mob/mob.dmi'
icon_state = "slime extract"
flags = TABLEPASS
force = 1.0
w_class = 1.0
@@ -794,7 +794,7 @@ mob/living/carbon/metroid/var/temperature_resistance = T0C+75
var/Flush = 30
var/Uses = 5 // uses before it goes inert
/obj/item/metroid_core/New()
/obj/item/slime_core/New()
..()
var/datum/reagents/R = new/datum/reagents(100)
reagents = R
@@ -815,45 +815,45 @@ mob/living/carbon/metroid/var/temperature_resistance = T0C+75
Flush = 30
*/
/obj/item/weapon/reagent_containers/food/snacks/egg/roro
name = "roro egg"
/obj/item/weapon/reagent_containers/food/snacks/egg/slime
name = "slime egg"
desc = "A small, gelatinous egg."
icon = 'icons/mob/mob.dmi'
icon_state = "roro egg-growing"
icon_state = "slime egg-growing"
bitesize = 12
origin_tech = "biotech=4"
var/grown = 0
/obj/item/weapon/reagent_containers/food/snacks/egg/roro/New()
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/New()
..()
reagents.add_reagent("nutriment", 4)
reagents.add_reagent("rorojelly", 1)
reagents.add_reagent("slimejelly", 1)
spawn(rand(1200,1500))//the egg takes a while to "ripen"
Grow()
/obj/item/weapon/reagent_containers/food/snacks/egg/roro/proc/Grow()
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/proc/Grow()
grown = 1
icon_state = "roro egg-grown"
icon_state = "slime egg-grown"
processing_objects.Add(src)
return
/obj/item/weapon/reagent_containers/food/snacks/egg/roro/proc/Hatch()
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/proc/Hatch()
processing_objects.Remove(src)
var/turf/T = get_turf(src)
src.visible_message("\blue The [name] pulsates and quivers!")
spawn(rand(50,100))
src.visible_message("\blue The [name] bursts open!")
new/mob/living/carbon/metroid(T)
new/mob/living/carbon/slime(T)
del(src)
/obj/item/weapon/reagent_containers/food/snacks/egg/roro/process()
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/process()
var/turf/location = get_turf(src)
var/datum/gas_mixture/environment = location.return_air()
if (environment.toxins > MOLES_PLASMA_VISIBLE)//plasma exposure causes the egg to hatch
src.Hatch()
/obj/item/weapon/reagent_containers/food/snacks/egg/roro/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/weapon/reagent_containers/food/snacks/egg/slime/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype( W, /obj/item/toy/crayon ))
return
else

View File

@@ -1,5 +1,5 @@
/mob/living/carbon/metroid/verb/Feed()
set category = "Roro"
/mob/living/carbon/slime/verb/Feed()
set category = "Slime"
set desc = "This will let you feed on any valid creature in the surrounding area. This should also be used to halt the feeding process."
if(Victim)
Feedstop()
@@ -11,7 +11,7 @@
var/list/choices = list()
for(var/mob/living/C in view(1,src))
if(C!=src && !istype(C,/mob/living/carbon/metroid))
if(C!=src && !istype(C,/mob/living/carbon/slime))
choices += C
var/mob/living/carbon/M = input(src,"Who do you wish to feed on?") in null|choices
@@ -19,11 +19,11 @@
if(M in view(1, src))
if(!istype(src, /mob/living/carbon/brain))
if(!istype(M, /mob/living/carbon/metroid))
if(!istype(M, /mob/living/carbon/slime))
if(stat != 2)
if(health > -70)
for(var/mob/living/carbon/metroid/met in view())
for(var/mob/living/carbon/slime/met in view())
if(met.Victim == M && met != src)
src << "<i>The [met.name] is already feeding on this subject...</i>"
return
@@ -42,17 +42,17 @@
/mob/living/carbon/metroid/proc/Feedon(var/mob/living/carbon/M)
/mob/living/carbon/slime/proc/Feedon(var/mob/living/carbon/M)
Victim = M
src.loc = M.loc
canmove = 0
anchored = 1
var/lastnut = nutrition
//if(M.client) M << "\red You legs become paralyzed!"
if(istype(src, /mob/living/carbon/metroid/adult))
icon_state = "adult roro eat"
if(istype(src, /mob/living/carbon/slime/adult))
icon_state = "adult slime eat"
else
icon_state = "baby roro eat"
icon_state = "baby slime eat"
while(Victim && M.health > -70 && stat != 2)
// M.canmove = 0
@@ -84,9 +84,9 @@
adjustCloneLoss(-10)
if(Victim)
for(var/mob/living/carbon/metroid/Metroid in view(1,M))
if(Metroid.Victim == M && Metroid != src)
Metroid.Feedstop()
for(var/mob/living/carbon/slime/slime in view(1,M))
if(slime.Victim == M && slime != src)
slime.Feedstop()
nutrition += rand(10,25)
if(nutrition >= lastnut + 50)
@@ -96,7 +96,7 @@
if(powerlevel > 10)
powerlevel = 10
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
if(nutrition > 1200)
nutrition = 1200
else
@@ -119,14 +119,14 @@
break
if(stat == 2)
if(!istype(src, /mob/living/carbon/metroid/adult))
icon_state = "baby roro dead"
if(!istype(src, /mob/living/carbon/slime/adult))
icon_state = "baby slime dead"
else
if(istype(src, /mob/living/carbon/metroid/adult))
icon_state = "adult roro"
if(istype(src, /mob/living/carbon/slime/adult))
icon_state = "adult slime"
else
icon_state = "baby roro"
icon_state = "baby slime"
canmove = 1
anchored = 0
@@ -152,64 +152,81 @@
Victim = null
/mob/living/carbon/metroid/proc/Feedstop()
/mob/living/carbon/slime/proc/Feedstop()
if(Victim)
if(Victim.client) Victim << "[src] has let go of your head!"
Victim = null
/mob/living/carbon/metroid/proc/UpdateFeed(var/mob/M)
/mob/living/carbon/slime/proc/UpdateFeed(var/mob/M)
if(Victim)
if(Victim == M)
loc = M.loc // simple "attach to head" effect!
/mob/living/carbon/metroid/verb/Evolve()
set category = "Roro"
set desc = "This will let you evolve from baby to adult metroid."
/mob/living/carbon/slime/verb/Evolve()
set category = "slime"
set desc = "This will let you evolve from baby to adult slime."
if(stat)
src << "<i>I must be conscious to do this...</i>"
return
if(!istype(src, /mob/living/carbon/metroid/adult))
if(!istype(src, /mob/living/carbon/slime/adult))
if(amount_grown >= 10)
var/mob/living/carbon/metroid/adult/new_metroid = new /mob/living/carbon/metroid/adult(loc)
new_metroid.nutrition = nutrition
new_metroid.powerlevel = max(0, powerlevel-1)
new_metroid.a_intent = "hurt"
new_metroid.key = key
var/mob/living/carbon/slime/adult/new_slime = new /mob/living/carbon/slime/adult(loc)
new_slime.nutrition = nutrition
new_slime.powerlevel = max(0, powerlevel-1)
new_slime.a_intent = "hurt"
new_slime.key = key
new_metroid << "<B>You are now an adult Metroid.</B>"
new_slime << "<B>You are now an adult slime.</B>"
del(src)
else
src << "<i>I am not ready to evolve yet...</i>"
else
src << "<i>I have already evolved...</i>"
/mob/living/carbon/metroid/verb/Reproduce()
set category = "Roro"
set desc = "This will make you lay an egg. NOTE: This decreases your nutrition."
/mob/living/carbon/slime/verb/Reproduce()
set category = "Slime"
set desc = "This will make you split into a random number of Slimes (usually 2). NOTE: this will KILL you, but you will be transferred into one of the babies."
if(stat)
src << "<i>I must be conscious to do this...</i>"
return
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
if(amount_grown >= 10)
if(src.nutrition >= 300)
new/obj/item/weapon/reagent_containers/food/snacks/egg/roro(loc)
src.nutrition -= 200
else
src << "<i>I have not fed enough...</i>"
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
var/list/babies = list()
var/number = pick(14;2,3,4)
var/new_nutrition = round(nutrition * 0.9)
var/new_powerlevel = round(powerlevel / number)
for(var/i=1,i<=number,i++) // reproduce (has a small chance of producing 3 or 4 offspring)
var/mob/living/carbon/slime/M = new/mob/living/carbon/slime(loc)
M.nutrition = new_nutrition
M.powerlevel = new_powerlevel
if(i != 1) step_away(M,src)
babies += M
var/mob/living/carbon/slime/new_slime = pick(babies)
new_slime.a_intent = "hurt"
new_slime.key = key
new_slime << "<B>You are now a slime!</B>"
del(src)
else
src << "<i>I am not ready to reproduce yet...</i>"
else
src << "<i>I am not old enough to lay eggs yet...</i>"
src << "<i>I am not old enough to reproduce yet...</i>"
/mob/living/carbon/metroid/verb/ventcrawl()
/mob/living/carbon/slime/verb/ventcrawl()
set name = "Crawl through Vent"
set desc = "Enter an air vent and crawl through the pipe system."
set category = "Roro"
set category = "Slime"
if(Victim) return
handle_ventcrawl()

View File

@@ -1,10 +1,10 @@
/mob/living/carbon/metroid/say(var/message)
/mob/living/carbon/slime/say(var/message)
if (silent)
return
else
return ..()
/mob/living/carbon/metroid/say_quote(var/text)
/mob/living/carbon/slime/say_quote(var/text)
var/ending = copytext(text, length(text))
if (ending == "?")
@@ -14,8 +14,8 @@
return "telepathically chirps, \"[text]\"";
/mob/living/carbon/metroid/say_understands(var/other)
if (istype(other, /mob/living/carbon/metroid))
/mob/living/carbon/slime/say_understands(var/other)
if (istype(other, /mob/living/carbon/slime))
return 1
return ..()

View File

@@ -337,7 +337,7 @@
updatehealth()
/mob/living/carbon/monkey/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/carbon/monkey/attack_slime(mob/living/carbon/slime/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -352,7 +352,7 @@
var/damage = rand(1, 3)
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
damage = rand(20, 40)
else
damage = rand(5, 35)
@@ -457,7 +457,7 @@
if ((s_active && !( contents.Find(s_active) )))
s_active.close(src)
for(var/mob/living/carbon/metroid/M in view(1,src))
for(var/mob/living/carbon/slime/M in view(1,src))
M.UpdateFeed(src)
return

View File

@@ -10,7 +10,7 @@
var/oxyloss = 0.0 //Oxygen depravation damage (no air in lungs)
var/toxloss = 0.0 //Toxic damage caused by being poisoned or radiated
var/fireloss = 0.0 //Burn damage caused by being way too hot, too cold or burnt.
var/cloneloss = 0 //Damage caused by being cloned or ejected from the cloner early. Metroids also deal cloneloss damage to victims
var/cloneloss = 0 //Damage caused by being cloned or ejected from the cloner early. slimes also deal cloneloss damage to victims
var/brainloss = 0 //'Retardation' damage caused by someone hitting you in the head with a bible or being infected with brainrot.
var/halloss = 0 //Hallucination damage. 'Fake' damage obtained through hallucinating or the holodeck. Sleeping should cause it to wear off.

View File

@@ -638,7 +638,7 @@
/mob/living/silicon/robot/attack_metroid(mob/living/carbon/metroid/M as mob)
/mob/living/silicon/robot/attack_slime(mob/living/carbon/slime/M as mob)
if (!ticker)
M << "You cannot attack people before the game has started."
return
@@ -653,7 +653,7 @@
var/damage = rand(1, 3)
if(istype(src, /mob/living/carbon/metroid/adult))
if(istype(src, /mob/living/carbon/slime/adult))
damage = rand(20, 40)
else
damage = rand(5, 35)

View File

@@ -163,7 +163,7 @@
statpanel("[P.panel]","",P)
*/
//The last mob/living/carbon to push/drag/grab this mob (mostly used by Metroids friend recognition)
//The last mob/living/carbon to push/drag/grab this mob (mostly used by slimes friend recognition)
var/mob/living/carbon/LAssailant = null
//Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button

View File

@@ -194,7 +194,7 @@
return
*/
if(istype(affecting, /mob/living/carbon/metroid))
if(istype(affecting, /mob/living/carbon/slime))
assailant << "\blue You squeeze [affecting], but nothing interesting happens."
return

View File

@@ -30,13 +30,13 @@
return 1
return 0
/proc/ismetroid(A)
if(istype(A, /mob/living/carbon/metroid))
/proc/isslime(A)
if(istype(A, /mob/living/carbon/slime))
return 1
return 0
/proc/ismetroidadult(A)
if(istype(A, /mob/living/carbon/metroid/adult))
/proc/isslimeadult(A)
if(istype(A, /mob/living/carbon/slime/adult))
return 1
return 0

View File

@@ -207,7 +207,7 @@
del(src)
return
/mob/living/carbon/human/proc/Metroidize(adult as num, reproduce as num)
/mob/living/carbon/human/proc/slimeize(adult as num, reproduce as num)
if (monkeyizing)
return
for(var/obj/item/W in src)
@@ -220,25 +220,25 @@
for(var/t in organs)
del(t)
var/mob/living/carbon/metroid/new_metroid
var/mob/living/carbon/slime/new_slime
if(reproduce)
var/number = pick(14;2,3,4) //reproduce (has a small chance of producing 3 or 4 offspring)
var/list/babies = list()
for(var/i=1,i<=number,i++)
var/mob/living/carbon/metroid/M = new/mob/living/carbon/metroid(loc)
var/mob/living/carbon/slime/M = new/mob/living/carbon/slime(loc)
M.nutrition = round(nutrition/number)
step_away(M,src)
babies += M
new_metroid = pick(babies)
new_slime = pick(babies)
else
if(adult)
new_metroid = new /mob/living/carbon/metroid/adult(loc)
new_slime = new /mob/living/carbon/slime/adult(loc)
else
new_metroid = new /mob/living/carbon/metroid(loc)
new_metroid.a_intent = "hurt"
new_metroid.key = key
new_slime = new /mob/living/carbon/slime(loc)
new_slime.a_intent = "hurt"
new_slime.key = key
new_metroid << "<B>You are now a Metroid. Skreee!</B>"
new_slime << "<B>You are now a slime. Skreee!</B>"
spawn(0)//To prevent the proc from returning null.
del(src)
return

View File

@@ -14,7 +14,7 @@
/obj/item/weapon/paper_bin/MouseDrop(mob/user as mob)
if((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || in_range(src, usr))))))
if(!istype(usr, /mob/living/carbon/metroid) && !istype(usr, /mob/living/simple_animal))
if(!istype(usr, /mob/living/carbon/slime) && !istype(usr, /mob/living/simple_animal))
if( !usr.get_active_hand() ) //if active hand is empty
attack_hand(usr, 1, 1)

View File

@@ -76,7 +76,6 @@
ammo_type = "/obj/item/ammo_casing/a762"
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
load_method = 2
recoil = 1
var/cover_open = 0
var/mag_inserted = 1

View File

@@ -33,7 +33,7 @@
var/mob/living/new_mob
var/randomize = pick("monkey","robot","metroid","xeno","human")
var/randomize = pick("monkey","robot","slime","xeno","human")
switch(randomize)
if("monkey")
new_mob = new /mob/living/carbon/monkey(M.loc)
@@ -46,9 +46,9 @@
var/mob/living/silicon/robot/Robot = new_mob
Robot.mmi = new /obj/item/device/mmi(new_mob)
Robot.mmi.transfer_identity(M) //Does not transfer key/client.
if("metroid")
if(prob(50)) new_mob = new /mob/living/carbon/metroid/adult(M.loc)
else new_mob = new /mob/living/carbon/metroid(M.loc)
if("slime")
if(prob(50)) new_mob = new /mob/living/carbon/slime/adult(M.loc)
else new_mob = new /mob/living/carbon/slime(M.loc)
new_mob.universal_speak = 1
if("xeno")
var/alien_caste = pick("Hunter","Sentinel","Drone","Larva")
@@ -74,7 +74,7 @@
var/mob/living/carbon/human/H = new_mob
if(H.dna)
H.dna.mutantrace = pick("lizard","golem","metroid","plant",4;"")
H.dna.mutantrace = pick("lizard","golem","slime","plant",4;"")
else
return

View File

@@ -226,10 +226,10 @@ datum
matching_other = 1
else
if(istype(my_atom, /obj/item/metroid_core))
var/obj/item/metroid_core/M = my_atom
if(istype(my_atom, /obj/item/slime_core))
var/obj/item/slime_core/M = my_atom
if(M.POWERFLAG == C.required_other && M.Uses > 0) // added a limit to metroid cores -- Muskets requested this
if(M.POWERFLAG == C.required_other && M.Uses > 0) // added a limit to slime cores -- Muskets requested this
matching_other = 1
@@ -249,10 +249,10 @@ datum
for(var/mob/M in viewers(4, get_turf(my_atom)) )
M << "\blue \icon[my_atom] The solution begins to bubble."
if(istype(my_atom, /obj/item/metroid_core))
var/obj/item/metroid_core/ME = my_atom
if(istype(my_atom, /obj/item/slime_core))
var/obj/item/slime_core/ME = my_atom
ME.Uses--
if(ME.Uses <= 0) // give the notification that the metroid core is dead
if(ME.Uses <= 0) // give the notification that the slime core is dead
for(var/mob/M in viewers(4, get_turf(my_atom)) )
M << "\blue \icon[my_atom] The innards begin to boil!"

View File

@@ -73,9 +73,9 @@ datum
on_update(var/atom/A)
return
rorojelly
name = "Roro Jelly"
id = "rorojelly"
slimejelly
name = "slime Jelly"
id = "slimejelly"
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."
reagent_state = LIQUID
color = "#801E28" // rgb: 128, 30, 40
@@ -210,7 +210,7 @@ datum
T.overlays -= T.wet_overlay
T.wet_overlay = null
for(var/mob/living/carbon/metroid/M in T)
for(var/mob/living/carbon/slime/M in T)
M.adjustToxLoss(rand(15,20))
var/hotspot = (locate(/obj/effect/hotspot) in T)
@@ -1022,7 +1022,7 @@ datum
for(var/obj/effect/decal/cleanable/C in src)
del(C)
for(var/mob/living/carbon/metroid/M in T)
for(var/mob/living/carbon/slime/M in T)
M.adjustToxLoss(rand(5,10))
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
@@ -1104,8 +1104,8 @@ datum
return
reaction_obj(var/obj/O, var/volume)
src = null
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg/roro))
var/obj/item/weapon/reagent_containers/food/snacks/egg/roro/egg = O
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg/slime))
var/obj/item/weapon/reagent_containers/food/snacks/egg/slime/egg = O
if (egg.grown)
egg.Hatch()
if((!O) || (!volume)) return 0
@@ -1792,15 +1792,15 @@ datum
M.bodytemperature += 5 * TEMPERATURE_DAMAGE_COEFFICIENT
if(holder.has_reagent("frostoil"))
holder.remove_reagent("frostoil", 5)
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature += rand(5,20)
if(15 to 25)
M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature += rand(10,20)
if(25 to INFINITY)
M.bodytemperature += 15 * TEMPERATURE_DAMAGE_COEFFICIENT
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature += rand(15,20)
data++
..()
@@ -1878,23 +1878,23 @@ datum
M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT
if(holder.has_reagent("capsaicin"))
holder.remove_reagent("capsaicin", 5)
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature -= rand(5,20)
if(15 to 25)
M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature -= rand(10,20)
if(25 to INFINITY)
M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT
if(prob(1)) M.emote("shiver")
if(istype(M, /mob/living/carbon/metroid))
if(istype(M, /mob/living/carbon/slime))
M.bodytemperature -= rand(15,20)
data++
..()
return
reaction_turf(var/turf/simulated/T, var/volume)
for(var/mob/living/carbon/metroid/M in T)
for(var/mob/living/carbon/slime/M in T)
M.adjustToxLoss(rand(15,30))
sodiumchloride

View File

@@ -7,7 +7,7 @@ datum
var/list/required_reagents = new/list()
var/list/required_catalysts = new/list()
// Both of these variables are mostly going to be used with Metroid cores - but if you want to, you can use them for other things
// Both of these variables are mostly going to be used with slime cores - but if you want to, you can use them for other things
var/atom/required_container = null // the container required for the reaction to happen
var/required_other = 0 // an integer required for the reaction to happen
@@ -616,40 +616,40 @@ datum
result_amount = 5
/////////////////////////////////////METROID CORE REACTIONS ///////////////////////////////
/////////////////////////////////////slime CORE REACTIONS ///////////////////////////////
metroidpepper
name = "Metroid Condensedcapaicin"
slimepepper
name = "Slime Condensedcapaicin"
id = "m_condensedcapaicin"
result = "condensedcapsaicin"
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 1
metroidfrost
name = "Metroid Frost Oil"
slimefrost
name = "Slime Frost Oil"
id = "m_frostoil"
result = "frostoil"
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 1
metroidglycerol
name = "Metroid Glycerol"
slimeglycerol
name = "Slime Glycerol"
id = "m_glycerol"
result = "glycerol"
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 1
metroid_explosion
name = "Metroid Explosion"
slime_explosion
name = "Slime Explosion"
id = "m_explosion"
result = null
required_reagents = list("blood" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 2
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
@@ -659,50 +659,50 @@ datum
holder.clear_reagents()
return
metroidjam
name = "Metroid Jam"
slimejam
name = "Slime Jam"
id = "m_jam"
result = "metroid"
result = "slime"
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 2
metroidsynthi
name = "Metroid Synthetic Flesh"
slimesynthi
name = "Slime Synthetic Flesh"
id = "m_flesh"
result = null
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 2
on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
return
metroidenzyme
name = "Metroid Enzyme"
slimeenzyme
name = "Slime Enzyme"
id = "m_enzyme"
result = "enzyme"
required_reagents = list("blood" = 1, "water" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 3
metroidplasma
name = "Metroid Plasma"
slimeplasma
name = "Slime Plasma"
id = "m_plasma"
result = "plasma"
required_reagents = list("sugar" = 1, "blood" = 2)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 3
metroidvirus
name = "Metroid Virus"
slimevirus
name = "Slime Virus"
id = "m_virus"
result = null
required_reagents = list("sugar" = 1, "sacid" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 3
on_reaction(var/datum/reagents/holder, var/created_volume)
holder.clear_reagents()
@@ -720,14 +720,14 @@ datum
return
metroidteleport
name = "Metroid Teleport"
slimeteleport
name = "Slime Teleport"
id = "m_tele"
result = null
required_reagents = list("pacid" = 2, "mutagen" = 2)
required_catalysts = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 4
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -779,14 +779,14 @@ datum
sleep(20)
M.client.screen -= blueeffect
del(blueeffect)
metroidcrit
name = "Metroid Crit"
slimecrit
name = "Slime Crit"
id = "m_tele"
result = null
required_reagents = list("sacid" = 1, "blood" = 1)
required_catalysts = list("plasma" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 4
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -805,13 +805,13 @@ datum
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(C, pick(NORTH,SOUTH,EAST,WEST))
metroidbork
name = "Metroid Bork"
slimebork
name = "Slime Bork"
id = "m_tele"
result = null
required_reagents = list("sugar" = 1, "water" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 4
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -835,33 +835,33 @@ datum
metroidchloral
name = "Metroid Chloral"
slimechloral
name = "Slime Chloral"
id = "m_bunch"
result = "chloralhydrate"
required_reagents = list("blood" = 1, "water" = 2)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 5
metroidretro
name = "Metroid Retro"
slimeretro
name = "Slime Retro"
id = "m_xeno"
result = null
required_reagents = list("sugar" = 1)
result_amount = 1
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 5
on_reaction(var/datum/reagents/holder, var/created_volume)
var/datum/disease/F = new /datum/disease/dna_retrovirus(0)
var/list/data = list("viruses"= list(F))
holder.add_reagent("blood", 20, data)
metroidfoam
name = "Metroid Foam"
slimefoam
name = "Slime Foam"
id = "m_foam"
result = null
required_reagents = list("sacid" = 1)
result_amount = 2
required_container = /obj/item/metroid_core
required_container = /obj/item/slime_core
required_other = 5
on_reaction(var/datum/reagents/holder, var/created_volume)

View File

@@ -9,15 +9,15 @@
item_state = "beaker"
New()
..()
reagents.add_reagent("metroid", 50)
reagents.add_reagent("slime", 50)
on_reagent_change()
if (reagents.reagent_list.len > 0)
switch(reagents.get_master_reagent_id())
if("metroid")
icon_state = "jar_metroid"
name = "metroid jam"
desc = "A jar of metroid jam. Delicious!"
if("slime")
icon_state = "jar_slime"
name = "slime jam"
desc = "A jar of slime jam. Delicious!"
else
icon_state ="jar_what"
name = "jar of something"

View File

@@ -50,7 +50,7 @@
M << "\red You cannot force any more of [src] to go down your throat."
return 0
else
if(!istype(M, /mob/living/carbon/metroid)) //If you're feeding it to someone else.
if(!istype(M, /mob/living/carbon/slime)) //If you're feeding it to someone else.
var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25)
if (fullness <= (550 * (1 + M.overeatduration / 1000)))
for(var/mob/O in viewers(world.view, user))
@@ -354,7 +354,7 @@
if(6)
reagents.add_reagent("coco", 3)
if(7)
reagents.add_reagent("rorojelly", 3)
reagents.add_reagent("slimejelly", 3)
if(8)
reagents.add_reagent("banana", 3)
if(9)
@@ -382,7 +382,7 @@
src.name = "Frosted Jelly Donut"
reagents.add_reagent("sprinkles", 2)
/obj/item/weapon/reagent_containers/food/snacks/donut/rorojelly
/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly
name = "Jelly Donut"
desc = "You jelly?"
icon_state = "jdonut1"
@@ -390,7 +390,7 @@
..()
reagents.add_reagent("nutriment", 3)
reagents.add_reagent("sprinkles", 1)
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
bitesize = 5
if(prob(30))
src.icon_state = "jdonut2"
@@ -1149,13 +1149,13 @@
reagents.add_reagent("water", 5)
bitesize = 5
/obj/item/weapon/reagent_containers/food/snacks/rorosoup
name = "Roro soup"
/obj/item/weapon/reagent_containers/food/snacks/slimesoup
name = "slime soup"
desc = "If no water is available, you may substitute tears."
icon_state = "rorosoup"
icon_state = "slimesoup"
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
reagents.add_reagent("water", 10)
bitesize = 5
@@ -1235,7 +1235,7 @@
reagents.add_reagent("nutriment", 6)
reagents.add_reagent("blood", 10)
if(7)
reagents.add_reagent("rorojelly", 10)
reagents.add_reagent("slimejelly", 10)
reagents.add_reagent("water", 10)
if(8)
reagents.add_reagent("carbon", 10)
@@ -1476,7 +1476,7 @@
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast
name = "Jellied Toast"
desc = "A slice of bread covered with delicious jam."
icon_state = "rorotoast"
icon_state = "slimetoast"
trash = /obj/item/trash/plate
New()
..()
@@ -1488,24 +1488,24 @@
..()
reagents.add_reagent("cherryjelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/roro
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jellyburger
name = "Jelly Burger"
desc = "Culinary delight..?"
icon_state = "roroburger"
icon_state = "slimeburger"
New()
..()
reagents.add_reagent("nutriment", 5)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/roro
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry
New()
@@ -1642,32 +1642,32 @@
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich
name = "Jelly Sandwich"
desc = "You wish you had some peanut butter to go with this..."
icon_state = "rorosandwich"
icon_state = "slimesandwich"
trash = /obj/item/trash/plate
New()
..()
reagents.add_reagent("nutriment", 2)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/roro
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry
New()
..()
reagents.add_reagent("cherryjelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/boiledrorocore
name = "Boiled Roro Core"
/*
/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore
name = "Boiled slime Core"
desc = "A boiled red thing."
icon_state = "boiledrorocore"
icon_state = "boiledslimecore"
New()
..()
reagents.add_reagent("rorojelly", 5)
reagents.add_reagent("slimejelly", 5)
bitesize = 3
*/
/obj/item/weapon/reagent_containers/food/snacks/mint
name = "mint"
desc = "it is only wafer thin."

View File

@@ -146,10 +146,10 @@
reagents.add_reagent("cryoxadone", 30)
update_icon()
/obj/item/weapon/reagent_containers/glass/beaker/roro
/obj/item/weapon/reagent_containers/glass/beaker/slime
New()
..()
reagents.add_reagent("rorojelly", 50)
reagents.add_reagent("slimejelly", 50)
update_icon()
/obj/item/weapon/reagent_containers/glass/bucket

View File

@@ -59,7 +59,7 @@
return
if(ismob(target))//Blood!
if(istype(target, /mob/living/carbon/metroid))
if(istype(target, /mob/living/carbon/slime))
user << "\red You are unable to locate any blood."
return
if(src.reagents.has_reagent("blood"))
@@ -119,7 +119,7 @@
user << "\red [target] is empty."
return
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/metroid_core))
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/slime_core))
user << "\red You cannot directly remove reagents from this object."
return
@@ -137,15 +137,15 @@
if(istype(target, /obj/item/weapon/implantcase/chem))
return
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/metroid_core) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/cigpacket))
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_core) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/cigpacket))
user << "\red You cannot directly fill this object."
return
if(target.reagents.total_volume >= target.reagents.maximum_volume)
user << "\red [target] is full."
return
if(istype(target, /obj/item/metroid_core))
var/obj/item/metroid_core/core = target
if(istype(target, /obj/item/slime_core))
var/obj/item/slime_core/core = target
core.Flush = 30 // reset flush counter
if(ismob(target) && target != user)

View File

@@ -219,7 +219,7 @@
else
M.inertia_dir = 0
return
else if(!istype(M, /mob/living/carbon/metroid))
else if(!istype(M, /mob/living/carbon/slime))
if (M.m_intent == "run")
M.stop_pulling()
step(M, M.dir)
@@ -232,7 +232,7 @@
return
if(2) //lube
if(!istype(M, /mob/living/carbon/metroid))
if(!istype(M, /mob/living/carbon/slime))
M.stop_pulling()
step(M, M.dir)
spawn(1) step(M, M.dir)

View File

@@ -48,6 +48,14 @@ Stuff which is in development and not yet visible to players or just code relate
should be listed in the changelog upon commit tho. Thanks. -->
<!-- To take advantage of the pretty new format (well it was new when I wrote this anyway), open the "add-to-changelog.html" file in any browser and add the stuff and then generate the html code and paste it here -->
<div class="commit sansserif">
<h2 class="date">28 November 2012</h2>
<h3 class="author">Kor updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Slimes have replaced roros (finally)! Right now they are functionally identical, but massive expansion of slimes and xenobio is planned. Sprites are by Cheridan.</li>
</ul>
</div>
<div class="commit sansserif">
<h2 class="date">25 November 2012</h2>
<h3 class="author">Giacom updated:</h3>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 178 KiB

View File

@@ -5014,10 +5014,10 @@
"bSv" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
"bSw" = (/obj/machinery/portable_atmospherics/pump,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
"bSx" = (/obj/machinery/sparker{id = "Xenobio"; pixel_x = -25},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bSy" = (/mob/living/carbon/metroid,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bSy" = (/mob/living/carbon/slime,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bSz" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bSA" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; icon_state = "on"; name = "Acid-Proof Air Injector"; on = 1; unacidable = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bSB" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/mob/living/carbon/metroid,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bSB" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/mob/living/carbon/slime,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bSC" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bSD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bSE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)