Merge remote-tracking branch 'upstream/master' into i-hate-mcolor
This commit is contained in:
@@ -100,6 +100,14 @@
|
||||
return held_items.Find(I)
|
||||
|
||||
|
||||
///Find number of held items, multihand compatible
|
||||
/mob/proc/get_num_held_items()
|
||||
. = 0
|
||||
for(var/i in 1 to held_items.len)
|
||||
if(held_items[i])
|
||||
.++
|
||||
|
||||
|
||||
//Sad that this will cause some overhead, but the alias seems necessary
|
||||
//*I* may be happy with a million and one references to "indexes" but others won't be
|
||||
/mob/proc/is_holding(obj/item/I)
|
||||
|
||||
@@ -453,14 +453,14 @@
|
||||
/mob/living/carbon/getBruteLoss_nonProsthetic()
|
||||
var/amount = 0
|
||||
for(var/obj/item/bodypart/BP in bodyparts)
|
||||
if (BP.status < 2)
|
||||
if (BP.is_organic_limb())
|
||||
amount += BP.brute_dam
|
||||
return amount
|
||||
|
||||
/mob/living/carbon/getFireLoss_nonProsthetic()
|
||||
var/amount = 0
|
||||
for(var/obj/item/bodypart/BP in bodyparts)
|
||||
if (BP.status < 2)
|
||||
if (BP.is_organic_limb())
|
||||
amount += BP.burn_dam
|
||||
return amount
|
||||
|
||||
|
||||
@@ -10,5 +10,5 @@
|
||||
damage_overlay_type = "synth"
|
||||
mutanttongue = /obj/item/organ/tongue/robot
|
||||
species_language_holder = /datum/language_holder/synthetic
|
||||
limbs_id = "synth"
|
||||
limbs_id = SPECIES_SYNTH
|
||||
species_category = SPECIES_CATEGORY_ROBOT
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
|
||||
no_equip = list(SLOT_BACK)
|
||||
blacklisted = 1
|
||||
limbs_id = "human"
|
||||
limbs_id = SPECIES_HUMAN
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||
species_category = SPECIES_CATEGORY_BASIC //they're a kind of human
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
/datum/species/angel/proc/ToggleFlight(mob/living/carbon/human/H,flight)
|
||||
if(flight && CanFly(H))
|
||||
stunmod = 2
|
||||
speedmod = -0.35
|
||||
speedmod = -0.1
|
||||
H.setMovetype(H.movement_type | FLYING)
|
||||
override_float = TRUE
|
||||
H.pass_flags |= PASSTABLE
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/species/arachnid
|
||||
name = "Arachnid"
|
||||
id = "arachnid"
|
||||
id = SPECIES_ARACHNID
|
||||
override_bp_icon = 'icons/mob/arachnid_parts.dmi'
|
||||
say_mod = "chitters"
|
||||
default_color = "00FF00"
|
||||
@@ -59,10 +59,10 @@
|
||||
SW?.Remove(H)
|
||||
|
||||
/datum/action/innate/spin_web
|
||||
name = "Spin Web"
|
||||
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS
|
||||
icon_icon = 'icons/mob/actions/actions_animal.dmi'
|
||||
button_icon_state = "lay_web"
|
||||
name = "Spin Web"
|
||||
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS
|
||||
icon_icon = 'icons/mob/actions/actions_animal.dmi'
|
||||
button_icon_state = "lay_web"
|
||||
|
||||
/datum/action/innate/spin_cocoon
|
||||
name = "Spin Cocoon"
|
||||
@@ -152,4 +152,4 @@
|
||||
else
|
||||
A.forceMove(C)
|
||||
H.visible_message("<span class='danger'>[H] wraps [A] into a cocoon!</span>")
|
||||
return
|
||||
return
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
mutanttongue = /obj/item/organ/tongue/dullahan
|
||||
mutantears = /obj/item/organ/ears/dullahan
|
||||
blacklisted = TRUE
|
||||
limbs_id = "human"
|
||||
limbs_id = SPECIES_HUMAN
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||
has_field_of_vision = FALSE //Too much of a trouble, their vision is already bound to their severed head.
|
||||
species_category = SPECIES_CATEGORY_UNDEAD
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/datum/species/human/felinid
|
||||
name = "Felinid"
|
||||
id = SPECIES_FELINID
|
||||
limbs_id = "human"
|
||||
limbs_id = SPECIES_HUMAN
|
||||
|
||||
mutant_bodyparts = list("mam_tail" = "Cat", "mam_ears" = "Cat", "deco_wings" = "None")
|
||||
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
/datum/species/jelly/roundstartslime
|
||||
name = "Xenobiological Slime Hybrid"
|
||||
id = SPECIES_SLIME_HYBRID
|
||||
limbs_id = "slime"
|
||||
limbs_id = SPECIES_SLIME
|
||||
default_color = "00FFFF"
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR)
|
||||
inherent_traits = list(TRAIT_TOXINLOVER)
|
||||
@@ -480,7 +480,7 @@
|
||||
heatmod = 1
|
||||
burnmod = 1
|
||||
|
||||
allowed_limb_ids = list("slime","stargazer","lum")
|
||||
allowed_limb_ids = list(SPECIES_SLIME,SPECIES_STARGAZER,SPECIES_SLIME_LUMI)
|
||||
|
||||
/datum/action/innate/slime_change
|
||||
name = "Alter Form"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
tail_type = "tail_lizard"
|
||||
wagging_type = "waggingtail_lizard"
|
||||
species_category = "lizard"
|
||||
species_category = SPECIES_CATEGORY_LIZARD
|
||||
|
||||
/datum/species/lizard/random_name(gender,unique,lastname)
|
||||
if(unique)
|
||||
@@ -47,7 +47,7 @@
|
||||
/datum/species/lizard/ashwalker
|
||||
name = "Ash Walker"
|
||||
id = SPECIES_ASHWALKER
|
||||
limbs_id = "lizard"
|
||||
limbs_id = SPECIES_LIZARD
|
||||
species_traits = list(MUTCOLORS,EYECOLOR,LIPS,DIGITIGRADE)
|
||||
inherent_traits = list(TRAIT_CHUNKYFINGERS)
|
||||
mutantlungs = /obj/item/organ/lungs/ashwalker
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
id = SPECIES_POD_WEAK
|
||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS)
|
||||
mutant_bodyparts = list("mcolor" = "FFFFFF","mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_snouts" = "Husky", "mam_tail" = "Husky", "mam_ears" = "Husky", "mam_body_markings" = "Husky", "taur" = "None", "legs" = "Normal Legs")
|
||||
limbs_id = "pod"
|
||||
limbs_id = SPECIES_POD
|
||||
light_nutrition_gain_factor = 3
|
||||
light_bruteheal = -0.2
|
||||
light_burnheal = -0.2
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
/datum/species/shadow/nightmare
|
||||
name = "Nightmare"
|
||||
id = SPECIES_NIGHTMARE
|
||||
limbs_id = "shadow"
|
||||
limbs_id = SPECIES_SHADOW
|
||||
burnmod = 1.5
|
||||
blacklisted = TRUE
|
||||
no_equip = list(SLOT_WEAR_MASK, SLOT_WEAR_SUIT, SLOT_GLOVES, SLOT_SHOES, SLOT_W_UNIFORM, SLOT_S_STORE)
|
||||
@@ -141,7 +141,7 @@
|
||||
playsound(owner,'sound/effects/singlebeat.ogg',40,1)
|
||||
if(respawn_progress >= HEART_RESPAWN_THRESHHOLD)
|
||||
owner.revive(full_heal = TRUE)
|
||||
if(!(owner.dna.species.id == "shadow" || owner.dna.species.id == "nightmare"))
|
||||
if(!(owner.dna.species.id == SPECIES_SHADOW || owner.dna.species.id == SPECIES_NIGHTMARE))
|
||||
var/mob/living/carbon/old_owner = owner
|
||||
Remove(HEART_SPECIAL_SHADOWIFY)
|
||||
old_owner.set_species(/datum/species/shadow)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
/datum/species/skeleton/space
|
||||
name = "Spooky Spacey Skeleton"
|
||||
id = SPECIES_SKELETON_SPACE
|
||||
limbs_id = "skeleton"
|
||||
limbs_id = SPECIES_SKELETON
|
||||
blacklisted = 1
|
||||
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT, TRAIT_FAKEDEATH, TRAIT_CALCIUM_HEALER)
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
meat = null
|
||||
gib_types = /obj/effect/gibspawner/robot
|
||||
damage_overlay_type = "synth"
|
||||
limbs_id = "synth"
|
||||
limbs_id = SPECIES_SYNTH
|
||||
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_NOLIMBDISABLE,TRAIT_NOHUNGER,TRAIT_NOBREATH)
|
||||
var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off
|
||||
@@ -80,7 +80,7 @@
|
||||
qdel(fake_species)
|
||||
fake_species = null
|
||||
meat = initial(meat)
|
||||
limbs_id = "synth"
|
||||
limbs_id = SPECIES_SYNTH
|
||||
use_skintones = FALSE
|
||||
sexes = 0
|
||||
fixed_mut_color = ""
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
mutant_heart = /obj/item/organ/heart/vampire
|
||||
mutanttongue = /obj/item/organ/tongue/vampire
|
||||
blacklisted = TRUE
|
||||
limbs_id = "human"
|
||||
limbs_id = SPECIES_HUMAN
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||
var/info_text = "You are a <span class='danger'>Vampire</span>. You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability."
|
||||
species_category = SPECIES_CATEGORY_UNDEAD
|
||||
@@ -153,16 +153,33 @@
|
||||
to_chat(caster, "<span class='warning'>You're already shapeshifted!</span>")
|
||||
return
|
||||
|
||||
if(!ishuman(caster))
|
||||
to_chat(caster, "<span class='warning'>You need to be humanoid to be able to do this!</span>")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/human_caster = caster
|
||||
var/mob/living/shape = new shapeshift_type(caster.loc)
|
||||
H = new(shape,src,caster)
|
||||
H = new(shape,src,human_caster)
|
||||
if(istype(H, /mob/living/simple_animal))
|
||||
var/mob/living/simple_animal/SA = H
|
||||
if((caster.blood_volume >= (BLOOD_VOLUME_BAD*caster.blood_ratio)) || (ventcrawl_nude_only && length(caster.get_equipped_items(include_pockets = TRUE))))
|
||||
if((human_caster.blood_volume <= (BLOOD_VOLUME_BAD*human_caster.blood_ratio)) || (ventcrawl_nude_only && length(human_caster.get_equipped_items(include_pockets = TRUE))))
|
||||
SA.ventcrawler = FALSE
|
||||
if(transfer_name)
|
||||
H.name = caster.name
|
||||
H.name = human_caster.name
|
||||
|
||||
|
||||
clothes_req = NONE
|
||||
mobs_whitelist = null
|
||||
mobs_blacklist = null
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/shapeshift/bat/cast(list/targets, mob/user = usr)
|
||||
if(!(locate(/obj/shapeshift_holder) in targets[1]))
|
||||
if(!ishuman(user))
|
||||
to_chat(user, "<span class='warning'>You need to be humanoid to be able to do this!</span>")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/human_user = user
|
||||
if(!(human_user.dna?.species?.id == SPECIES_VAMPIRE))
|
||||
to_chat(user, "<span class='warning'>You don't seem to be able to shapeshift..</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/datum/species/zombie
|
||||
// 1spooky
|
||||
name = "High-Functioning Zombie"
|
||||
id = "zombie"
|
||||
id = SPECIES_ZOMBIE
|
||||
say_mod = "moans"
|
||||
sexes = 0
|
||||
blacklisted = 1
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/datum/species/zombie/notspaceproof
|
||||
id = "notspaceproofzombie"
|
||||
limbs_id = "zombie"
|
||||
limbs_id = SPECIES_ZOMBIE
|
||||
blacklisted = 0
|
||||
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NOBREATH,TRAIT_NODEATH,TRAIT_FAKEDEATH)
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
/datum/species/zombie/infectious
|
||||
name = "Infectious Zombie"
|
||||
id = "memezombies"
|
||||
limbs_id = "zombie"
|
||||
limbs_id = SPECIES_ZOMBIE
|
||||
inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NOBREATH,TRAIT_NODEATH,TRAIT_NOSOFTCRIT, TRAIT_FAKEDEATH)
|
||||
mutanthands = /obj/item/zombie_hand
|
||||
armor = 20 // 120 damage to KO a zombie, which kills it
|
||||
@@ -100,7 +100,7 @@
|
||||
/datum/species/krokodil_addict
|
||||
name = SPECIES_HUMAN
|
||||
id = "goofzombies"
|
||||
limbs_id = "zombie" //They look like zombies
|
||||
limbs_id = SPECIES_ZOMBIE //They look like zombies
|
||||
sexes = 0
|
||||
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie
|
||||
mutanttongue = /obj/item/organ/tongue/zombie
|
||||
|
||||
@@ -59,15 +59,8 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, typecacheof(list(
|
||||
if(!client)
|
||||
return
|
||||
|
||||
if(iscarbon(src) && ventcrawler < 2)//It must have atleast been 1 to get this far
|
||||
var/failed = 0
|
||||
var/list/items_list = get_equipped_items(include_pockets = TRUE)
|
||||
if(items_list.len)
|
||||
failed = 1
|
||||
for(var/obj/item/I in held_items)
|
||||
failed = 1
|
||||
break
|
||||
if(failed)
|
||||
if(iscarbon(src) && ventcrawler == VENTCRAWLER_NUDE)
|
||||
if(length(get_equipped_items(include_pockets = TRUE)) || get_num_held_items())
|
||||
to_chat(src, "<span class='warning'>You can't crawl around in the ventilation ducts with items!</span>")
|
||||
return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user