mob stuff

This commit is contained in:
Poojawa
2018-04-23 02:26:53 -05:00
parent 5518efebea
commit 832f071b59
103 changed files with 264 additions and 329 deletions
@@ -1,8 +1,3 @@
#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point
#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 460K point and you are on fire
/mob/living/carbon/alien
name = "alien"
icon = 'icons/mob/alien.dmi'
@@ -146,9 +141,5 @@ Des: Removes all infected images from the alien.
mind.transfer_to(new_xeno)
qdel(src)
#undef HEAT_DAMAGE_LEVEL_1
#undef HEAT_DAMAGE_LEVEL_2
#undef HEAT_DAMAGE_LEVEL_3
/mob/living/carbon/alien/can_hold_items()
return has_fine_manipulation
@@ -4,6 +4,7 @@
pressure_resistance = 25
can_buckle = TRUE
buckle_lying = FALSE
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
//Hair colour and style
var/hair_color = "000"
var/hair_style = "Bald"
+7 -32
View File
@@ -2,24 +2,6 @@
//NOTE: Breathing happens once per FOUR TICKS, unless the last breath fails. In which case it happens once per ONE TICK! So oxyloss healing is done once per 4 ticks while oxyloss damage is applied once per tick!
#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point
#define HEAT_DAMAGE_LEVEL_3 10 //Amount of damage applied when your body temperature passes the 460K point and you are on fire
#define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point
#define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point
#define COLD_DAMAGE_LEVEL_3 3 //Amount of damage applied when your body temperature passes the 120K point
//Note that gas heat damage is only applied once every FOUR ticks.
#define HEAT_GAS_DAMAGE_LEVEL_1 2 //Amount of damage applied when the current breath's temperature just passes the 360.15k safety point
#define HEAT_GAS_DAMAGE_LEVEL_2 4 //Amount of damage applied when the current breath's temperature passes the 400K point
#define HEAT_GAS_DAMAGE_LEVEL_3 8 //Amount of damage applied when the current breath's temperature passes the 1000K point
#define COLD_GAS_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when the current breath's temperature just passes the 260.15k safety point
#define COLD_GAS_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when the current breath's temperature passes the 200K point
#define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point
// bitflags for the percentual amount of protection a piece of clothing which covers the body part offers.
// Used with human/proc/get_heat_protection() and human/proc/get_cold_protection()
// The values here should add up to 1.
@@ -102,8 +84,7 @@
/mob/living/carbon/human/breathe()
if(!dna.species.breathe(src))
..()
#define HUMAN_MAX_OXYLOSS 3
#define HUMAN_CRIT_MAX_OXYLOSS (SSmobs.wait/30)
/mob/living/carbon/human/check_breath(datum/gas_mixture/breath)
var/L = getorganslot(ORGAN_SLOT_LUNGS)
@@ -133,9 +114,6 @@
var/obj/item/organ/lungs/lun = L
lun.check_breath(breath,src)
#undef HUMAN_MAX_OXYLOSS
#undef HUMAN_CRIT_MAX_OXYLOSS
/mob/living/carbon/human/handle_environment(datum/gas_mixture/environment)
dna.species.handle_environment(environment, src)
@@ -147,12 +125,12 @@
/mob/living/carbon/human/proc/get_thermal_protection()
var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures
//CITADEL EDIT Vore code required overrides
//CITADEL EDIT Vore code required overrides
if(istype(loc, /obj/item/device/dogborg/sleeper))
return FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
if(ismob(loc))
return FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
if(istype(loc, /obj/belly))
if(isbelly(loc))
return FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
//END EDIT
if(wear_suit)
@@ -262,16 +240,14 @@
/mob/living/carbon/human/proc/get_cold_protection(temperature)
if(has_trait(TRAIT_RESISTCOLD))
return TRUE
//CITADEL EDIT Mandatory for vore code.
if(istype(loc, /obj/item/device/dogborg/sleeper))
return 1 //freezing to death in sleepers ruins fun.
if(istype(loc, /obj/belly))
return 1
return TRUE //freezing to death in sleepers ruins fun.
if(isbelly(loc))
return TRUE
if(ismob(loc))
return 1 //because lazy and being inside somemone insulates you from space
return TRUE //because lazy and being inside somemone insulates you from space
//END EDIT
temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K.
var/thermal_protection_flags = get_cold_protection_flags(temperature)
@@ -458,7 +434,6 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
if(drunkenness >= 101)
adjustToxLoss(4) //Let's be honest you shouldn't be alive by now
#undef HUMAN_MAX_OXYLOSS
#undef THERMAL_PROTECTION_HEAD
#undef THERMAL_PROTECTION_CHEST
#undef THERMAL_PROTECTION_GROIN
+75 -81
View File
@@ -2,14 +2,6 @@
GLOBAL_LIST_EMPTY(roundstart_races)
#define HEAT_DAMAGE_LEVEL_1 2
#define HEAT_DAMAGE_LEVEL_2 3
#define HEAT_DAMAGE_LEVEL_3 8
#define COLD_DAMAGE_LEVEL_1 0.5
#define COLD_DAMAGE_LEVEL_2 1.5
#define COLD_DAMAGE_LEVEL_3 3
/datum/species
var/id // if the game needs to manually check your race to do something not included in a proc here, it will use this
var/limbs_id //this is used if you want to use a different species limb sprites. Mainly used for angels as they look like humans.
@@ -57,6 +49,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
var/list/species_traits = list()
// generic traits tied to having the species
var/list/inherent_traits = list()
var/list/inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
var/attack_verb = "punch" // punch-specific attack verb
var/sound/attack_sound = 'sound/weapons/punch1.ogg'
@@ -269,6 +262,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(DIGITIGRADE in species_traits)
C.Digitigrade_Leg_Swap(FALSE)
C.mob_biotypes = inherent_biotypes
regenerate_organs(C,old_species)
if(exotic_bloodtype && C.dna.blood_type != exotic_bloodtype)
@@ -864,7 +858,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
/datum/species/proc/can_equip(obj/item/I, slot, disable_warning, mob/living/carbon/human/H, bypass_equip_delay_self = FALSE)
if(slot in no_equip)
if(!I.species_exception || !is_type_in_list(src, I.species_exception))
return 0
return FALSE
var/num_arms = H.get_num_arms()
var/num_legs = H.get_num_legs()
@@ -876,181 +870,180 @@ GLOBAL_LIST_EMPTY(roundstart_races)
return FALSE
if(slot_wear_mask)
if(H.wear_mask)
return 0
if( !(I.slot_flags & SLOT_MASK) )
return 0
return FALSE
if(!(I.slot_flags & SLOT_MASK))
return FALSE
if(!H.get_bodypart(BODY_ZONE_HEAD))
return 0
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_neck)
if(H.wear_neck)
return 0
return FALSE
if( !(I.slot_flags & SLOT_NECK) )
return 0
return 1
return FALSE
return TRUE
if(slot_back)
if(H.back)
return 0
return FALSE
if( !(I.slot_flags & SLOT_BACK) )
return 0
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_wear_suit)
if(H.wear_suit)
return 0
return FALSE
if( !(I.slot_flags & SLOT_OCLOTHING) )
return 0
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_gloves)
if(H.gloves)
return 0
return FALSE
if( !(I.slot_flags & SLOT_GLOVES) )
return 0
return FALSE
if(num_arms < 2)
return 0
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_shoes)
if(H.shoes)
return 0
return FALSE
if( !(I.slot_flags & SLOT_FEET) )
return 0
return FALSE
if(num_legs < 2)
return 0
return FALSE
if(DIGITIGRADE in species_traits)
if(!disable_warning)
to_chat(H, "<span class='warning'>The footwear around here isn't compatible with your feet!</span>")
return 0
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_belt)
if(H.belt)
return 0
return FALSE
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST)
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
if(!disable_warning)
to_chat(H, "<span class='warning'>You need a jumpsuit before you can attach this [I.name]!</span>")
return 0
if( !(I.slot_flags & SLOT_BELT) )
return FALSE
if(!(I.slot_flags & SLOT_BELT))
return
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_glasses)
if(H.glasses)
return 0
if( !(I.slot_flags & SLOT_EYES) )
return 0
return FALSE
if(!(I.slot_flags & SLOT_EYES))
return FALSE
if(!H.get_bodypart(BODY_ZONE_HEAD))
return 0
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_head)
if(H.head)
return 0
if( !(I.slot_flags & SLOT_HEAD) )
return 0
return FALSE
if(!(I.slot_flags & SLOT_HEAD))
return FALSE
if(!H.get_bodypart(BODY_ZONE_HEAD))
return 0
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_ears)
if(H.ears)
return 0
if( !(I.slot_flags & SLOT_EARS) )
return 0
return FALSE
if(!(I.slot_flags & SLOT_EARS))
return FALSE
if(!H.get_bodypart(BODY_ZONE_HEAD))
return 0
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_w_uniform)
if(H.w_uniform)
return 0
return FALSE
if( !(I.slot_flags & SLOT_ICLOTHING) )
return 0
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_wear_id)
if(H.wear_id)
return 0
return FALSE
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_CHEST)
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
if(!disable_warning)
to_chat(H, "<span class='warning'>You need a jumpsuit before you can attach this [I.name]!</span>")
return 0
return FALSE
if( !(I.slot_flags & SLOT_ID) )
return 0
return FALSE
return equip_delay_self_check(I, H, bypass_equip_delay_self)
if(slot_l_store)
if(I.flags_1 & NODROP_1) //Pockets aren't visible, so you can't move NODROP_1 items into them.
return 0
return FALSE
if(H.l_store)
return 0
return FALSE
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_L_LEG)
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
if(!disable_warning)
to_chat(H, "<span class='warning'>You need a jumpsuit before you can attach this [I.name]!</span>")
return 0
return FALSE
if(I.slot_flags & SLOT_DENYPOCKET)
return
return FALSE
if( I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & SLOT_POCKET) )
return 1
return TRUE
if(slot_r_store)
if(I.flags_1 & NODROP_1)
return 0
return FALSE
if(H.r_store)
return 0
return FALSE
var/obj/item/bodypart/O = H.get_bodypart(BODY_ZONE_R_LEG)
if(!H.w_uniform && !nojumpsuit && (!O || O.status != BODYPART_ROBOTIC))
if(!disable_warning)
to_chat(H, "<span class='warning'>You need a jumpsuit before you can attach this [I.name]!</span>")
return 0
return FALSE
if(I.slot_flags & SLOT_DENYPOCKET)
return 0
return FALSE
if( I.w_class <= WEIGHT_CLASS_SMALL || (I.slot_flags & SLOT_POCKET) )
return 1
return 0
return TRUE
return FALSE
if(slot_s_store)
if(I.flags_1 & NODROP_1)
return 0
return FALSE
if(H.s_store)
return 0
return FALSE
if(!H.wear_suit)
if(!disable_warning)
to_chat(H, "<span class='warning'>You need a suit before you can attach this [I.name]!</span>")
return 0
return FALSE
if(!H.wear_suit.allowed)
if(!disable_warning)
to_chat(H, "You somehow have a suit with no defined allowed items for suit storage, stop that.")
return 0
return FALSE
if(I.w_class > WEIGHT_CLASS_BULKY)
if(!disable_warning)
to_chat(H, "The [I.name] is too big to attach.") //should be src?
return 0
return FALSE
if( istype(I, /obj/item/device/pda) || istype(I, /obj/item/pen) || is_type_in_list(I, H.wear_suit.allowed) )
return 1
return 0
return TRUE
return FALSE
if(slot_handcuffed)
if(H.handcuffed)
return 0
return FALSE
if(!istype(I, /obj/item/restraints/handcuffs))
return 0
return FALSE
if(num_arms < 2)
return 0
return 1
return FALSE
return TRUE
if(slot_legcuffed)
if(H.legcuffed)
return 0
return FALSE
if(!istype(I, /obj/item/restraints/legcuffs))
return 0
return FALSE
if(num_legs < 2)
return 0
return 1
return FALSE
return TRUE
if(slot_in_backpack)
if(H.back && istype(H.back, /obj/item/storage))
var/obj/item/storage/B = H.back
if(B.can_be_inserted(I, 1, H))
return 1
return 0
return 0 //Unsupported slot
if(H.back)
if(H.back.SendSignal(COMSIG_TRY_STORAGE_CAN_INSERT, I, H, TRUE))
return TRUE
return FALSE
return FALSE //Unsupported slot
/datum/species/proc/equip_delay_self_check(obj/item/I, mob/living/carbon/human/H, bypass_equip_delay_self)
if(!I.equip_delay_self || bypass_equip_delay_self)
@@ -1069,7 +1062,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
H.blood_volume = min(H.blood_volume + round(chem.volume, 0.1), BLOOD_VOLUME_MAXIMUM)
H.reagents.del_reagent(chem.id)
return 1
return 0
return FALSE
/datum/species/proc/handle_speech(message, mob/living/carbon/human/H)
return message
@@ -1079,7 +1072,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
return list()
/datum/species/proc/check_weakness(obj/item, mob/living/attacker)
return 0
return FALSE
////////
//LIFE//
@@ -1116,6 +1109,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(prob(round(-H.satiety/40)))
H.Jitter(5)
hunger_rate = 3 * HUNGER_FACTOR
hunger_rate *= H.physiology.hunger_mod
H.nutrition = max(0, H.nutrition - hunger_rate)
@@ -3,7 +3,7 @@
id = "abductor"
say_mod = "gibbers"
sexes = FALSE
species_traits = list(SPECIES_ORGANIC,NOBLOOD,NOEYES)
species_traits = list(NOBLOOD,NOEYES)
inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NOGUNS,TRAIT_NOHUNGER,TRAIT_NOBREATH)
mutanttongue = /obj/item/organ/tongue/abductor
var/scientist = FALSE // vars to not pollute spieces list with castes
@@ -2,8 +2,9 @@
name = "Android"
id = "android"
say_mod = "states"
species_traits = list(SPECIES_ROBOTIC,NOBLOOD)
species_traits = list(NOBLOOD)
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_LIMBATTACHMENT)
inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID)
meat = null
damage_overlay_type = "synth"
mutanttongue = /obj/item/organ/tongue/robot
@@ -2,7 +2,7 @@
name = "Angel"
id = "angel"
default_color = "FFFFFF"
species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS)
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
mutant_bodyparts = list("wings")
default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "Angel")
use_skintones = 1
@@ -15,6 +15,6 @@
attack_sound = 'sound/weapons/resonator_blast.ogg'
blacklisted = 1
use_skintones = 0
species_traits = list(SPECIES_ORGANIC,NOBLOOD,EYECOLOR)
species_traits = list(NOBLOOD,EYECOLOR)
inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER)
sexes = 0
@@ -2,7 +2,7 @@
name = "dullahan"
id = "dullahan"
default_color = "FFFFFF"
species_traits = list(SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS)
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH)
default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None")
use_skintones = TRUE
@@ -2,7 +2,8 @@
name = "Flyperson"
id = "fly"
say_mod = "buzzes"
species_traits = list(SPECIES_ORGANIC, NOEYES)
species_traits = list(NOEYES)
inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG)
mutanttongue = /obj/item/organ/tongue/fly
mutantliver = /obj/item/organ/liver/fly
mutantstomach = /obj/item/organ/stomach/fly
@@ -2,8 +2,9 @@
// Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck.
name = "Golem"
id = "iron golem"
species_traits = list(SPECIES_INORGANIC,NOBLOOD,MUTCOLORS,NO_UNDERWEAR)
species_traits = list(NOBLOOD,MUTCOLORS,NO_UNDERWEAR)
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_NOGUNS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER)
inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
mutant_organs = list(/obj/item/organ/adamantine_resonator)
speedmod = 2
armor = 55
@@ -566,7 +567,7 @@
limbs_id = "cultgolem"
sexes = FALSE
info_text = "As a <span class='danger'>Runic Golem</span>, you possess eldritch powers granted by the Elder God Nar'Sie."
species_traits = list(SPECIES_INORGANIC,NOBLOOD,NO_UNDERWEAR,NOEYES) //no mutcolors
species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYES) //no mutcolors
prefix = "Runic"
var/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem/phase_shift
@@ -620,7 +621,8 @@
limbs_id = "clockgolem"
info_text = "<span class='bold alloy'>As a </span><span class='bold brass'>clockwork golem</span><span class='bold alloy'>, you are faster than \
other types of golem (being a machine), and are immune to electric shocks.</span>"
species_traits = list(SPECIES_ROBOTIC,NOBLOOD,NO_UNDERWEAR,NOEYES)
species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYES)
inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID)
armor = 20 //Reinforced, but much less so to allow for fast movement
attack_verb = "smash"
attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg'
@@ -672,8 +674,9 @@
limbs_id = "clothgolem"
sexes = FALSE
info_text = "As a <span class='danger'>Cloth Golem</span>, you are able to reform yourself after death, provided your remains aren't burned or destroyed. You are, of course, very flammable."
species_traits = list(SPECIES_UNDEAD,NOBLOOD,NO_UNDERWEAR) //no mutcolors, and can burn
species_traits = list(NOBLOOD,NO_UNDERWEAR) //no mutcolors, and can burn
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_NOBREATH,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOGUNS)
inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
armor = 15 //feels no pain, but not too resistant
burnmod = 2 // don't get burned
speedmod = 1 // not as heavy as stone
@@ -2,9 +2,9 @@
name = "Human"
id = "human"
default_color = "FFFFFF"
species_traits = list(MUTCOLORS_PARTSONLY,SPECIES_ORGANIC,EYECOLOR,HAIR,FACEHAIR,LIPS)
mutant_bodyparts = list("mam_tail", "mam_ears", "wings", "taur")
default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "wings" = "None", "taur" = "none")
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY)
mutant_bodyparts = list("mam_tail", "mam_ears", "wings", "taur") // CITADEL EDIT gives humans snowflake parts
default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None", "wings" = "None", "taur" = "None")
use_skintones = 1
skinned_type = /obj/item/stack/sheet/animalhide/human
disliked_food = GROSS | RAW
@@ -12,7 +12,7 @@
/datum/species/human/qualifies_for_rank(rank, list/features)
return TRUE
return TRUE //Pure humans are always allowed in all roles.
//Curiosity killed the cat's wagging tail.
/datum/species/human/spec_death(gibbed, mob/living/carbon/human/H)
@@ -4,7 +4,7 @@
id = "jelly"
default_color = "00FF90"
say_mod = "chirps"
species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,,HAIR,FACEHAIR,NOBLOOD)
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD)
inherent_traits = list(TRAIT_TOXINLOVER)
mutant_bodyparts = list("mam_tail", "mam_ears", "taur") //CIT CHANGE
default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None") //CIT CHANGE
@@ -119,7 +119,7 @@
name = "Slimeperson"
id = "slime"
default_color = "00FFFF"
species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD)
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD)
say_mod = "says"
hair_color = "mutcolor"
hair_alpha = 150
@@ -4,7 +4,8 @@
id = "lizard"
say_mod = "hisses"
default_color = "00FF00"
species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,LIPS, HAIR, FACEHAIR)
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR)
inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_REPTILE)
mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs", "taur")
mutanttongue = /obj/item/organ/tongue/lizard
mutanttail = /obj/item/organ/tail/lizard
@@ -17,8 +18,8 @@
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard
skinned_type = /obj/item/stack/sheet/animalhide/lizard
exotic_bloodtype = "L"
disliked_food = NONE
liked_food = NONE
disliked_food = GRAIN | DAIRY
liked_food = GROSS | MEAT
/datum/species/lizard/after_equip_job(datum/job/J, mob/living/carbon/human/H)
H.grant_language(/datum/language/draconic)
@@ -36,7 +37,7 @@
/datum/species/lizard/qualifies_for_rank(rank, list/features)
return TRUE
//I wag in death
/datum/species/lizard/spec_death(gibbed, mob/living/carbon/human/H)
if(H)
@@ -3,7 +3,8 @@
id = "moth"
say_mod = "flutters"
default_color = "00FF00"
species_traits = list(LIPS, SPECIES_ORGANIC, NOEYES)
species_traits = list(LIPS, NOEYES)
inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG)
mutant_bodyparts = list("moth_wings")
default_features = list("moth_wings" = "Plain")
attack_verb = "slash"
@@ -4,8 +4,9 @@
say_mod = "rattles"
sexes = 0
meat = /obj/item/stack/sheet/mineral/plasma
species_traits = list(SPECIES_INORGANIC,NOBLOOD,NOTRANSSTING)
species_traits = list(NOBLOOD,NOTRANSSTING)
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_NOHUNGER)
inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
mutantlungs = /obj/item/organ/lungs/plasmaman
mutanttongue = /obj/item/organ/tongue/bone/plasmaman
mutantliver = /obj/item/organ/liver/plasmaman
@@ -3,7 +3,7 @@
name = "Podperson"
id = "pod"
default_color = "59CE00"
species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR)
species_traits = list(MUTCOLORS,EYECOLOR)
attack_verb = "slash"
attack_sound = 'sound/weapons/slice.ogg'
miss_sound = 'sound/weapons/slashmiss.ogg'
@@ -9,7 +9,7 @@
blacklisted = 1
ignored_by = list(/mob/living/simple_animal/hostile/faithless)
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/shadow
species_traits = list(SPECIES_ORGANIC,NOBLOOD,NOEYES)
species_traits = list(NOBLOOD,NOEYES)
inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_NOBREATH)
dangerous_existence = 1
@@ -6,8 +6,9 @@
blacklisted = 1
sexes = 0
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton
species_traits = list(SPECIES_UNDEAD,NOBLOOD)
species_traits = list(NOBLOOD)
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT)
inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
mutanttongue = /obj/item/organ/tongue/bone
damage_overlay_type = ""//let's not show bloody wounds or burns over bones.
disliked_food = NONE
@@ -3,14 +3,15 @@
id = "synth"
say_mod = "beep boops" //inherited from a user's real species
sexes = 0
species_traits = list(SPECIES_ROBOTIC,NOTRANSSTING) //all of these + whatever we inherit from the real species
species_traits = list(NOTRANSSTING) //all of these + whatever we inherit from the real species
inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER,TRAIT_NOBREATH)
inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID)
dangerous_existence = 1
blacklisted = 1
meat = null
damage_overlay_type = "synth"
limbs_id = "synth"
var/list/initial_species_traits = list(SPECIES_ROBOTIC,NOTRANSSTING) //for getting these values back for assume_disguise()
var/list/initial_species_traits = list(NOTRANSSTING) //for getting these values back for assume_disguise()
var/list/initial_inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER,TRAIT_NOBREATH)
var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off
var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged
@@ -46,7 +47,6 @@
inherent_traits = initial_inherent_traits.Copy()
species_traits |= S.species_traits
inherent_traits |= S.inherent_traits
species_traits -= list(SPECIES_ORGANIC, SPECIES_INORGANIC, SPECIES_UNDEAD)
attack_verb = S.attack_verb
attack_sound = S.attack_sound
miss_sound = S.miss_sound
@@ -2,8 +2,9 @@
name = "vampire"
id = "vampire"
default_color = "FFFFFF"
species_traits = list(SPECIES_UNDEAD,EYECOLOR,HAIR,FACEHAIR,LIPS,DRINKSBLOOD)
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,DRINKSBLOOD)
inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH)
inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None")
exotic_bloodtype = "U"
use_skintones = TRUE
@@ -8,8 +8,9 @@
sexes = 0
blacklisted = 1
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie
species_traits = list(SPECIES_UNDEAD,NOBLOOD,NOZOMBIE,NOTRANSSTING)
species_traits = list(NOBLOOD,NOZOMBIE,NOTRANSSTING)
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NOBREATH)
inherent_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
mutanttongue = /obj/item/organ/tongue/zombie
var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg')
disliked_food = NONE
@@ -74,7 +75,6 @@
id = "goofzombies"
limbs_id = "zombie" //They look like zombies
sexes = 0
species_traits = list(SPECIES_ORGANIC)
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie
mutanttongue = /obj/item/organ/tongue/zombie
+2 -5
View File
@@ -72,11 +72,8 @@
put_in_hands(I)
update_inv_hands()
if(slot_in_backpack)
var/obj/item/storage/B = back
var/prev_jimmies = B.rustle_jimmies
B.rustle_jimmies = FALSE //don't conspicously rustle
B.handle_item_insertion(I, 1, src)
B.rustle_jimmies = prev_jimmies
if(!back.SendSignal(COMSIG_TRY_STORAGE_INSERT, I, src, TRUE))
not_handled = TRUE
else
not_handled = TRUE
@@ -7,6 +7,7 @@
gender = NEUTER
pass_flags = PASSTABLE
ventcrawler = VENTCRAWLER_NUDE
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/monkey = 5, /obj/item/stack/sheet/animalhide/monkey = 1)
type_of_meat = /obj/item/reagent_containers/food/snacks/meat/slab/monkey
gib_type = /obj/effect/decal/cleanable/blood/gibs