mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 05:27:01 +01:00
staff of change fix
This commit is contained in:
@@ -93,6 +93,8 @@
|
||||
var/show_ssd = 1
|
||||
var/can_revive_by_healing // Determines whether or not this species can be revived by simply healing them
|
||||
var/has_gender = TRUE
|
||||
var/blacklisted = FALSE
|
||||
var/dangerous_existence = FALSE
|
||||
|
||||
//Death vars.
|
||||
var/death_message = "seizes up and falls limp, their eyes dead and lifeless..."
|
||||
@@ -704,4 +706,15 @@ It'll return null if the organ doesn't correspond, so include null checks when u
|
||||
|
||||
/datum/species/proc/water_act(mob/living/carbon/human/M, volume, temperature, source)
|
||||
if(abs(temperature - M.bodytemperature) > 10) //If our water and mob temperature varies by more than 10K, cool or/ heat them appropriately
|
||||
M.bodytemperature = (temperature + M.bodytemperature) * 0.5 //Approximation for gradual heating or cooling
|
||||
M.bodytemperature = (temperature + M.bodytemperature) * 0.5 //Approximation for gradual heating or cooling
|
||||
|
||||
/proc/get_random_species(species_name = FALSE) // Returns a random non black-listed or hazardous species, either as a string or datum
|
||||
var/static/list/random_species = list()
|
||||
if(!random_species.len)
|
||||
for(var/thing in subtypesof(/datum/species))
|
||||
var/datum/species/S = thing
|
||||
if(!initial(S.dangerous_existence) && !initial(S.blacklisted))
|
||||
random_species += initial(S.name)
|
||||
var/picked_species = pick(random_species)
|
||||
var/datum/species/selected_species = GLOB.all_species[picked_species]
|
||||
return species_name ? picked_species : selected_species.type
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "Nucleation"
|
||||
name_plural = "Nucleations"
|
||||
icobase = 'icons/mob/human_races/r_nucleation.dmi'
|
||||
blacklisted = TRUE
|
||||
blurb = "A sub-race of unfortunates who have been exposed to too much supermatter radiation. As a result, \
|
||||
supermatter crystal clusters have begun to grow across their bodies. Research to find a cure for this ailment \
|
||||
has been slow, and so this is a common fate for veteran engineers. The supermatter crystals produce oxygen, \
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
name_plural = "Plasmamen"
|
||||
icobase = 'icons/mob/human_races/r_plasmaman_sb.dmi'
|
||||
deform = 'icons/mob/human_races/r_plasmaman_pb.dmi' // TODO: Need deform.
|
||||
dangerous_existence = TRUE //So so much
|
||||
//language = "Clatter"
|
||||
|
||||
species_traits = list(IS_WHITELISTED, NO_BLOOD, NOTRANSSTING)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
icobase = 'icons/mob/human_races/r_shadow.dmi'
|
||||
deform = 'icons/mob/human_races/r_shadow.dmi'
|
||||
dangerous_existence = TRUE
|
||||
|
||||
unarmed_type = /datum/unarmed_attack/claws
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
icobase = 'icons/mob/human_races/r_shadowling.dmi'
|
||||
deform = 'icons/mob/human_races/r_shadowling.dmi'
|
||||
blacklisted = TRUE
|
||||
|
||||
blood_color = "#555555"
|
||||
flesh_color = "#222222"
|
||||
@@ -60,7 +61,7 @@
|
||||
blood_color = "#CCCCCC"
|
||||
flesh_color = "#AAAAAA"
|
||||
|
||||
species_traits = list(NO_BLOOD, NO_BREATHE, RADIMMUNE)
|
||||
species_traits = list(NO_BLOOD, NO_BREATHE, RADIMMUNE, NO_EXAMINE)
|
||||
burn_mod = 1.1
|
||||
oxy_mod = 0
|
||||
heatmod = 1.1
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
name_plural = "Vox"
|
||||
icobase = 'icons/mob/human_races/vox/r_vox.dmi'
|
||||
deform = 'icons/mob/human_races/vox/r_def_vox.dmi'
|
||||
dangerous_existence = TRUE
|
||||
language = "Vox-pidgin"
|
||||
tail = "voxtail"
|
||||
speech_sounds = list('sound/voice/shriek1.ogg')
|
||||
@@ -145,6 +146,7 @@
|
||||
icobase = 'icons/mob/human_races/r_armalis.dmi'
|
||||
deform = 'icons/mob/human_races/r_armalis.dmi'
|
||||
unarmed_type = /datum/unarmed_attack/claws/armalis
|
||||
blacklisted = TRUE
|
||||
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = 0
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
name_plural = "Wryn"
|
||||
icobase = 'icons/mob/human_races/r_wryn.dmi'
|
||||
deform = 'icons/mob/human_races/r_wryn.dmi'
|
||||
blacklisted = TRUE
|
||||
language = "Wryn Hivemind"
|
||||
tail = "wryntail"
|
||||
punchdamagelow = 0
|
||||
|
||||
@@ -146,114 +146,120 @@
|
||||
. = ..()
|
||||
wabbajack(change)
|
||||
|
||||
proc/wabbajack(mob/living/M)
|
||||
if(istype(M))
|
||||
if(istype(M, /mob/living) && M.stat != DEAD)
|
||||
if(M.notransform)
|
||||
return
|
||||
M.notransform = 1
|
||||
M.canmove = 0
|
||||
M.icon = null
|
||||
M.overlays.Cut()
|
||||
M.invisibility = 101
|
||||
/proc/wabbajack(mob/living/M)
|
||||
if(istype(M) && M.stat != DEAD && !M.notransform)
|
||||
M.notransform = TRUE
|
||||
M.canmove = FALSE
|
||||
M.icon = null
|
||||
M.overlays.Cut()
|
||||
M.invisibility = 101
|
||||
|
||||
if(istype(M, /mob/living/silicon/robot))
|
||||
var/mob/living/silicon/robot/Robot = M
|
||||
if(Robot.mmi)
|
||||
qdel(Robot.mmi)
|
||||
Robot.notify_ai(1)
|
||||
else
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
// Make sure there are no organs or limbs to drop
|
||||
for(var/t in H.bodyparts)
|
||||
qdel(t)
|
||||
for(var/i in H.internal_organs)
|
||||
qdel(i)
|
||||
for(var/obj/item/W in M)
|
||||
M.unEquip(W, 1)
|
||||
qdel(W)
|
||||
if(isrobot(M))
|
||||
var/mob/living/silicon/robot/Robot = M
|
||||
QDEL_NULL(Robot.mmi)
|
||||
Robot.notify_ai(1)
|
||||
else
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
// Make sure there are no organs or limbs to drop
|
||||
for(var/t in H.bodyparts)
|
||||
qdel(t)
|
||||
for(var/i in H.internal_organs)
|
||||
qdel(i)
|
||||
for(var/obj/item/W in M)
|
||||
M.unEquip(W, 1)
|
||||
qdel(W)
|
||||
|
||||
var/mob/living/new_mob
|
||||
var/mob/living/new_mob
|
||||
|
||||
var/randomize = pick("robot","slime","xeno","human","animal")
|
||||
switch(randomize)
|
||||
if("robot")
|
||||
if(prob(30))
|
||||
new_mob = new /mob/living/silicon/robot/syndicate(M.loc)
|
||||
else
|
||||
new_mob = new /mob/living/silicon/robot(M.loc)
|
||||
new_mob.gender = M.gender
|
||||
new_mob.invisibility = 0
|
||||
new_mob.job = "Cyborg"
|
||||
var/mob/living/silicon/robot/Robot = new_mob
|
||||
Robot.mmi = new /obj/item/mmi(new_mob)
|
||||
if(ishuman(M))
|
||||
Robot.mmi.transfer_identity(M) //Does not transfer key/client.
|
||||
if("slime")
|
||||
new_mob = new /mob/living/carbon/slime/random(M.loc)
|
||||
new_mob.universal_speak = 1
|
||||
if("xeno")
|
||||
if(prob(50))
|
||||
new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc)
|
||||
else
|
||||
new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc)
|
||||
new_mob.universal_speak = 1
|
||||
if("animal")
|
||||
if(prob(50))
|
||||
var/beast = pick("carp","bear","mushroom","statue", "bat", "goat", "tomato")
|
||||
switch(beast)
|
||||
if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(M.loc)
|
||||
if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(M.loc)
|
||||
if("mushroom") new_mob = new /mob/living/simple_animal/hostile/mushroom(M.loc)
|
||||
if("statue") new_mob = new /mob/living/simple_animal/hostile/statue(M.loc)
|
||||
if("bat") new_mob = new /mob/living/simple_animal/hostile/scarybat(M.loc)
|
||||
if("goat") new_mob = new /mob/living/simple_animal/hostile/retaliate/goat(M.loc)
|
||||
if("tomato") new_mob = new /mob/living/simple_animal/hostile/killertomato(M.loc)
|
||||
else
|
||||
var/animal = pick("parrot","corgi","crab","pug","cat","mouse","chicken","cow","lizard","chick","fox")
|
||||
switch(animal)
|
||||
if("parrot") new_mob = new /mob/living/simple_animal/parrot(M.loc)
|
||||
if("corgi") new_mob = new /mob/living/simple_animal/pet/corgi(M.loc)
|
||||
if("crab") new_mob = new /mob/living/simple_animal/crab(M.loc)
|
||||
if("cat") new_mob = new /mob/living/simple_animal/pet/cat(M.loc)
|
||||
if("mouse") new_mob = new /mob/living/simple_animal/mouse(M.loc)
|
||||
if("chicken") new_mob = new /mob/living/simple_animal/chicken(M.loc)
|
||||
if("cow") new_mob = new /mob/living/simple_animal/cow(M.loc)
|
||||
if("lizard") new_mob = new /mob/living/simple_animal/lizard(M.loc)
|
||||
if("fox") new_mob = new /mob/living/simple_animal/pet/fox(M.loc)
|
||||
else new_mob = new /mob/living/simple_animal/chick(M.loc)
|
||||
new_mob.universal_speak = 1
|
||||
if("human")
|
||||
new_mob = new /mob/living/carbon/human(M.loc)
|
||||
// Include standard, whitelisted, and monkey species...
|
||||
var/list/new_species = list()
|
||||
for(var/datum/species/S in subtypesof(/datum/species))
|
||||
if(istype(S, /datum/species/vox/armalis))
|
||||
continue
|
||||
new_species.Add(S)
|
||||
var/mob/living/carbon/human/H = new_mob
|
||||
var/datum/species/S = pick(new_species)
|
||||
H.set_species(S)
|
||||
randomize = initial(S.name)
|
||||
var/datum/preferences/A = new() //Randomize appearance for the human
|
||||
A.copy_to(new_mob)
|
||||
var/randomize = pick("robot", "slime", "xeno", "human", "animal")
|
||||
switch(randomize)
|
||||
if("robot")
|
||||
if(prob(30))
|
||||
new_mob = new /mob/living/silicon/robot/syndicate(M.loc)
|
||||
else
|
||||
return
|
||||
|
||||
M.create_attack_log("<font color='orange'>[key_name(M)] became [new_mob.real_name].</font>")
|
||||
new_mob.attack_log = M.attack_log
|
||||
|
||||
new_mob.a_intent = INTENT_HARM
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(new_mob)
|
||||
new_mob = new /mob/living/silicon/robot(M.loc)
|
||||
new_mob.gender = M.gender
|
||||
new_mob.invisibility = 0
|
||||
new_mob.job = "Cyborg"
|
||||
var/mob/living/silicon/robot/Robot = new_mob
|
||||
Robot.mmi = new /obj/item/mmi(new_mob)
|
||||
if(ishuman(M))
|
||||
Robot.mmi.transfer_identity(M) //Does not transfer key/client.
|
||||
if("slime")
|
||||
new_mob = new /mob/living/carbon/slime/random(M.loc)
|
||||
new_mob.universal_speak = TRUE
|
||||
if("xeno")
|
||||
if(prob(50))
|
||||
new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc)
|
||||
else
|
||||
new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc)
|
||||
new_mob.universal_speak = TRUE
|
||||
if("animal")
|
||||
if(prob(50))
|
||||
var/beast = pick("carp","bear","mushroom","statue", "bat", "goat", "tomato")
|
||||
switch(beast)
|
||||
if("carp")
|
||||
new_mob = new /mob/living/simple_animal/hostile/carp(M.loc)
|
||||
if("bear")
|
||||
new_mob = new /mob/living/simple_animal/hostile/bear(M.loc)
|
||||
if("mushroom")
|
||||
new_mob = new /mob/living/simple_animal/hostile/mushroom(M.loc)
|
||||
if("statue")
|
||||
new_mob = new /mob/living/simple_animal/hostile/statue(M.loc)
|
||||
if("bat")
|
||||
new_mob = new /mob/living/simple_animal/hostile/scarybat(M.loc)
|
||||
if("goat")
|
||||
new_mob = new /mob/living/simple_animal/hostile/retaliate/goat(M.loc)
|
||||
if("tomato")
|
||||
new_mob = new /mob/living/simple_animal/hostile/killertomato(M.loc)
|
||||
else
|
||||
var/animal = pick("parrot", "corgi", "crab", "pug", "cat", "mouse", "chicken", "cow", "lizard", "chick", "fox")
|
||||
switch(animal)
|
||||
if("parrot")
|
||||
new_mob = new /mob/living/simple_animal/parrot(M.loc)
|
||||
if("corgi")
|
||||
new_mob = new /mob/living/simple_animal/pet/corgi(M.loc)
|
||||
if("crab")
|
||||
new_mob = new /mob/living/simple_animal/crab(M.loc)
|
||||
if("cat")
|
||||
new_mob = new /mob/living/simple_animal/pet/cat(M.loc)
|
||||
if("mouse")
|
||||
new_mob = new /mob/living/simple_animal/mouse(M.loc)
|
||||
if("chicken")
|
||||
new_mob = new /mob/living/simple_animal/chicken(M.loc)
|
||||
if("cow")
|
||||
new_mob = new /mob/living/simple_animal/cow(M.loc)
|
||||
if("lizard")
|
||||
new_mob = new /mob/living/simple_animal/lizard(M.loc)
|
||||
if("fox")
|
||||
new_mob = new /mob/living/simple_animal/pet/fox(M.loc)
|
||||
else
|
||||
new_mob = new /mob/living/simple_animal/chick(M.loc)
|
||||
new_mob.universal_speak = TRUE
|
||||
if("human")
|
||||
new_mob = new /mob/living/carbon/human(M.loc)
|
||||
var/mob/living/carbon/human/H = new_mob
|
||||
var/datum/preferences/A = new() //Randomize appearance for the human
|
||||
A.species = get_random_species(TRUE)
|
||||
A.copy_to(new_mob)
|
||||
randomize = H.dna.species.name
|
||||
else
|
||||
new_mob.key = M.key
|
||||
return
|
||||
|
||||
to_chat(new_mob, "<B>Your form morphs into that of a [randomize].</B>")
|
||||
M.create_attack_log("<font color='orange'>[key_name(M)] became [new_mob.real_name].</font>")
|
||||
new_mob.attack_log = M.attack_log
|
||||
|
||||
qdel(M)
|
||||
return new_mob
|
||||
new_mob.a_intent = INTENT_HARM
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(new_mob)
|
||||
else
|
||||
new_mob.key = M.key
|
||||
|
||||
to_chat(new_mob, "<B>Your form morphs into that of a [randomize].</B>")
|
||||
|
||||
qdel(M)
|
||||
return new_mob
|
||||
|
||||
/obj/item/projectile/magic/animate
|
||||
name = "bolt of animation"
|
||||
|
||||
Reference in New Issue
Block a user