mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 18:32:03 +00:00
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:
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = ""
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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].")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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>", \
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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> | "
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/carbon/metroid/examine()
|
||||
/mob/living/carbon/slime/examine()
|
||||
set src in oview()
|
||||
|
||||
if(!usr || !src) return
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
/mob/living/carbon/metroid/proc/regular_hud_updates()
|
||||
/mob/living/carbon/slime/proc/regular_hud_updates()
|
||||
return
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/carbon/metroid/Login()
|
||||
/mob/living/carbon/slime/Login()
|
||||
..()
|
||||
update_hud()
|
||||
return
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
@@ -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 ..()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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!"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 |
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user