mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-01-05 15:03:48 +00:00
Merge remote-tracking branch 'upstream/master' into tgui_engineering
This commit is contained in:
@@ -37,6 +37,8 @@
|
||||
var/mob/M = mob
|
||||
spawn(0) // It's possible that it could be deleted in the meantime, or that it runtimes.
|
||||
if(M)
|
||||
if(isobserver(M))
|
||||
message = "<span class='emote'><B>[src]</B> ([ghost_follow_link(src, M)]) [input]</span>"
|
||||
M.show_message(message, m_type)
|
||||
|
||||
for(var/obj in o_viewers)
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
)
|
||||
|
||||
/datum/language/seromi/get_random_name(gender)
|
||||
return ..(gender, 1, 4, 1.5)
|
||||
return ..(gender, 2, 4, 1.5)
|
||||
|
||||
|
||||
/datum/language/zaddat
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
xeno_harm_strength = 9
|
||||
req_one_access = list(access_research, access_robotics)
|
||||
botcard_access = list(access_research, access_robotics, access_xenobiology, access_xenoarch, access_tox, access_tox_storage, access_maint_tunnels)
|
||||
retaliates = FALSE
|
||||
var/xeno_stun_strength = 6
|
||||
|
||||
/mob/living/bot/secbot/ed209/slime/update_icons()
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
var/declare_arrests = FALSE // If true, announces arrests over sechuds.
|
||||
var/threat = 0 // How much of a threat something is. Set upon acquiring a target.
|
||||
var/attacked = FALSE // If true, gives the bot enough threat assessment to attack immediately.
|
||||
var/retaliates = TRUE //If this type of secbot should retaliate at all - so that slime securitrons don't go ballistic the second they get glomped.
|
||||
|
||||
var/is_ranged = FALSE
|
||||
var/awaiting_surrender = 0
|
||||
@@ -49,6 +50,7 @@
|
||||
desc = "A little security robot, with a slime baton subsituted for the regular one."
|
||||
default_icon_state = "slimesecbot"
|
||||
stun_strength = 10 // Slimebatons aren't meant for humans.
|
||||
retaliates = FALSE // No, you're not allowed to beat the slimes to death just because they scratched you.
|
||||
|
||||
xeno_harm_strength = 9 // Weaker than regular slimesky but they can stun.
|
||||
baton_glow = "#33CCFF"
|
||||
@@ -154,7 +156,7 @@
|
||||
..()
|
||||
|
||||
/mob/living/bot/secbot/proc/react_to_attack(mob/attacker)
|
||||
if(!on) // We don't want it to react if it's off
|
||||
if(!on || !retaliates) // We don't want it to react if it's off or doesn't care
|
||||
return
|
||||
|
||||
if(!target)
|
||||
|
||||
89
code/modules/mob/living/butchering.dm
Normal file
89
code/modules/mob/living/butchering.dm
Normal file
@@ -0,0 +1,89 @@
|
||||
|
||||
|
||||
/mob/living
|
||||
var/meat_amount = 0 // How much meat to drop from this mob when butchered
|
||||
var/obj/meat_type // The meat object to drop
|
||||
|
||||
var/gib_on_butchery = FALSE
|
||||
|
||||
var/list/butchery_loot // Associated list, path = number.
|
||||
|
||||
// Harvest an animal's delicious byproducts
|
||||
/mob/living/proc/harvest(var/mob/user, var/obj/item/I)
|
||||
if(meat_type && meat_amount>0 && (stat == DEAD))
|
||||
while(meat_amount > 0 && do_after(user, 0.5 SECONDS * (mob_size / 10), src))
|
||||
var/obj/item/meat = new meat_type(get_turf(src))
|
||||
meat.name = "[src.name] [meat.name]"
|
||||
new /obj/effect/decal/cleanable/blood/splatter(get_turf(src))
|
||||
meat_amount--
|
||||
|
||||
if(!meat_amount)
|
||||
handle_butcher(user, I)
|
||||
|
||||
/mob/living/proc/can_butcher(var/mob/user, var/obj/item/I) // Override for special butchering checks.
|
||||
if(((meat_type && meat_amount) || LAZYLEN(butchery_loot)) && stat == DEAD)
|
||||
return TRUE
|
||||
|
||||
return FALSE
|
||||
|
||||
/mob/living/proc/handle_butcher(var/mob/user, var/obj/item/I)
|
||||
if(!user || do_after(user, 2 SECONDS * mob_size / 10, src))
|
||||
if(LAZYLEN(butchery_loot))
|
||||
if(LAZYLEN(butchery_loot))
|
||||
for(var/path in butchery_loot)
|
||||
while(butchery_loot[path])
|
||||
butchery_loot[path] -= 1
|
||||
var/obj/item/loot = new path(get_turf(src))
|
||||
loot.pixel_x = rand(-12, 12)
|
||||
loot.pixel_y = rand(-12, 12)
|
||||
|
||||
butchery_loot.Cut()
|
||||
butchery_loot = null
|
||||
|
||||
if(LAZYLEN(organs))
|
||||
organs_by_name.Cut()
|
||||
|
||||
for(var/path in organs)
|
||||
if(ispath(path))
|
||||
var/obj/item/organ/external/neworg = new path(src)
|
||||
neworg.name = "[name] [neworg.name]"
|
||||
neworg.meat_type = meat_type
|
||||
|
||||
if(istype(src, /mob/living/simple_mob))
|
||||
var/mob/living/simple_mob/SM = src
|
||||
if(SM.limb_icon)
|
||||
neworg.force_icon = SM.limb_icon
|
||||
neworg.force_icon_key = SM.limb_icon_key
|
||||
|
||||
organs |= neworg
|
||||
organs -= path
|
||||
|
||||
for(var/obj/item/organ/OR in organs)
|
||||
OR.removed()
|
||||
organs -= OR
|
||||
|
||||
if(LAZYLEN(internal_organs))
|
||||
internal_organs_by_name.Cut()
|
||||
|
||||
for(var/path in internal_organs)
|
||||
if(ispath(path))
|
||||
var/obj/item/organ/neworg = new path(src, TRUE)
|
||||
neworg.name = "[name] [neworg.name]"
|
||||
neworg.meat_type = meat_type
|
||||
internal_organs |= neworg
|
||||
internal_organs -= path
|
||||
|
||||
for(var/obj/item/organ/OR in internal_organs)
|
||||
OR.removed()
|
||||
internal_organs -= OR
|
||||
|
||||
if(!ckey)
|
||||
if(issmall(src))
|
||||
user?.visible_message("<span class='danger'>[user] chops up \the [src]!</span>")
|
||||
new /obj/effect/decal/cleanable/blood/splatter(get_turf(src))
|
||||
if(gib_on_butchery)
|
||||
qdel(src)
|
||||
else
|
||||
user?.visible_message("<span class='danger'>[user] butchers \the [src] messily!</span>")
|
||||
if(gib_on_butchery)
|
||||
gib()
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/carbon/
|
||||
/mob/living/carbon
|
||||
gender = MALE
|
||||
var/datum/species/species //Contains icon generation and language information, set during New().
|
||||
var/list/stomach_contents = list()
|
||||
|
||||
@@ -472,7 +472,7 @@
|
||||
message = "points to [M]."
|
||||
else
|
||||
m_type = 1
|
||||
|
||||
|
||||
if("crack")
|
||||
if(!restrained())
|
||||
message = "cracks [T.his] knuckles."
|
||||
@@ -799,3 +799,27 @@
|
||||
HTML +="<a href='?src=\ref[src];flavor_change=done'>\[Done\]</a>"
|
||||
HTML += "<tt>"
|
||||
src << browse(HTML, "window=flavor_changes;size=430x300")
|
||||
|
||||
/mob/living/carbon/human/proc/toggle_tail(var/setting,var/message = 0)
|
||||
if(!tail_style || !tail_style.ani_state)
|
||||
if(message)
|
||||
to_chat(src, "<span class='warning'>You don't have a tail that supports this.</span>")
|
||||
return 0
|
||||
|
||||
var/new_wagging = isnull(setting) ? !wagging : setting
|
||||
if(new_wagging != wagging)
|
||||
wagging = new_wagging
|
||||
update_tail_showing()
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/proc/toggle_wing(var/setting,var/message = 0)
|
||||
if(!wing_style || !wing_style.ani_state)
|
||||
if(message)
|
||||
to_chat(src, "<span class='warning'>You don't have a wingtype that supports this.</span>")
|
||||
return 0
|
||||
|
||||
var/new_flapping = isnull(setting) ? !flapping : setting
|
||||
if(new_flapping != flapping)
|
||||
flapping = setting
|
||||
update_wing_showing()
|
||||
return 1
|
||||
|
||||
@@ -52,6 +52,8 @@
|
||||
dna.real_name = real_name
|
||||
sync_organ_dna()
|
||||
|
||||
verbs |= /mob/living/proc/toggle_selfsurgery
|
||||
|
||||
/mob/living/carbon/human/Destroy()
|
||||
human_mob_list -= src
|
||||
for(var/organ in organs)
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
oxyloss = 0
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
/mob/living/carbon/human/adjustHalLoss(var/amount)
|
||||
if(species.flags & NO_PAIN)
|
||||
halloss = 0
|
||||
@@ -435,13 +435,14 @@ This function restores all organs.
|
||||
return 0
|
||||
return
|
||||
|
||||
|
||||
/*
|
||||
/mob/living/carbon/human/proc/get_organ(var/zone)
|
||||
if(!zone)
|
||||
zone = BP_TORSO
|
||||
else if (zone in list( O_EYES, O_MOUTH ))
|
||||
zone = BP_HEAD
|
||||
return organs_by_name[zone]
|
||||
*/
|
||||
|
||||
/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/sharp = 0, var/edge = 0, var/obj/used_weapon = null)
|
||||
if(Debug2)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
var/age = 30 //Player's age (pure fluff)
|
||||
var/b_type = "A+" //Player's bloodtype
|
||||
var/synthetic //If they are a synthetic (aka synthetic torso)
|
||||
var/datum/robolimb/synthetic //If they are a synthetic (aka synthetic torso). Also holds the datum for the type of robolimb.
|
||||
|
||||
var/list/all_underwear = list()
|
||||
var/list/all_underwear_metadata = list()
|
||||
@@ -84,7 +84,6 @@
|
||||
var/special_voice = "" // For changing our voice. Used by a symptom.
|
||||
|
||||
var/last_dam = -1 //Used for determining if we need to process all organs or just some or even none.
|
||||
var/list/bad_external_organs = list()// organs we check until they are good.
|
||||
|
||||
var/xylophone = 0 //For the spoooooooky xylophone cooldown
|
||||
|
||||
@@ -115,3 +114,34 @@
|
||||
var/mob/living/carbon/human/vr_link = null
|
||||
|
||||
var/obj/machinery/machine_visual //machine that is currently applying visual effects to this mob. Only used for camera monitors currently.
|
||||
butchery_loot = list(/obj/item/stack/animalhide/human = 1)
|
||||
|
||||
// Horray Furries!
|
||||
var/datum/sprite_accessory/ears/ear_style = null
|
||||
var/r_ears = 30
|
||||
var/g_ears = 30
|
||||
var/b_ears = 30
|
||||
var/r_ears2 = 30
|
||||
var/g_ears2 = 30
|
||||
var/b_ears2 = 30
|
||||
var/datum/sprite_accessory/tail/tail_style = null
|
||||
var/r_tail = 30
|
||||
var/g_tail = 30
|
||||
var/b_tail = 30
|
||||
var/r_tail2 = 30
|
||||
var/g_tail2 = 30
|
||||
var/b_tail2 = 30
|
||||
var/datum/sprite_accessory/wing/wing_style = null
|
||||
var/r_wing = 30
|
||||
var/g_wing = 30
|
||||
var/b_wing = 30
|
||||
var/r_wing2 = 30
|
||||
var/g_wing2 = 30
|
||||
var/b_wing2 = 30
|
||||
|
||||
var/wagging = 0 //UGH.
|
||||
var/flapping = 0
|
||||
|
||||
// Custom Species Name
|
||||
var/custom_species
|
||||
|
||||
|
||||
@@ -227,6 +227,7 @@
|
||||
return
|
||||
|
||||
var/S = pick(footstep_sounds)
|
||||
GLOB.step_taken_shift_roundstat++
|
||||
if(!S) return
|
||||
|
||||
// Play every 20 steps while walking, for the sneak
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
update_icons_body() //Body handles eyes
|
||||
update_eyes() //For floating eyes only
|
||||
|
||||
/*
|
||||
/mob/living/carbon/var/list/internal_organs = list()
|
||||
/mob/living/carbon/human/var/list/organs = list()
|
||||
/mob/living/carbon/human/var/list/organs_by_name = list() // map organ names to organs
|
||||
@@ -13,6 +14,7 @@
|
||||
/mob/living/carbon/human/proc/get_bodypart_name(var/zone)
|
||||
var/obj/item/organ/external/E = get_organ(zone)
|
||||
if(E) . = E.name
|
||||
*/
|
||||
|
||||
/mob/living/carbon/human/proc/recheck_bad_external_organs()
|
||||
var/damage_this_tick = getToxLoss()
|
||||
|
||||
@@ -102,6 +102,7 @@
|
||||
var/alcohol_mod = 1 // Multiplier to alcohol strength; 0.5 = half, 0 = no effect at all, 2 = double, etc.
|
||||
var/pain_mod = 1 // Multiplier to pain effects; 0.5 = half, 0 = no effect (equal to NO_PAIN, really), 2 = double, etc.
|
||||
var/spice_mod = 1 // Multiplier to spice/capsaicin/frostoil effects; 0.5 = half, 0 = no effect (immunity), 2 = double, etc.
|
||||
var/trauma_mod = 1 // Affects traumatic shock (how fast pain crit happens). 0 = no effect (immunity to pain crit), 2 = double etc.Overriden by "can_feel_pain" var
|
||||
// set below is EMP interactivity for nonsynth carbons
|
||||
var/emp_sensitivity = 0 // bitflag. valid flags are: EMP_PAIN, EMP_BLIND, EMP_DEAFEN, EMP_CONFUSE, EMP_STUN, and EMP_(BRUTE/BURN/TOX/OXY)_DMG
|
||||
var/emp_dmg_mod = 1 // Multiplier to all EMP damage sustained by the mob, if it's EMP-sensitive
|
||||
@@ -250,6 +251,27 @@
|
||||
/datum/mob_descriptor/build
|
||||
)
|
||||
|
||||
//This is used in character setup preview generation (prefences_setup.dm) and human mob
|
||||
//rendering (update_icons.dm)
|
||||
var/color_mult = 0
|
||||
|
||||
//This is for overriding tail rendering with a specific icon in icobase, for static
|
||||
//tails only, since tails would wag when dead if you used this
|
||||
var/icobase_tail = 0
|
||||
|
||||
var/wing_hair
|
||||
var/wing
|
||||
var/wing_animation
|
||||
var/icobase_wing
|
||||
var/wikilink = null //link to wiki page for species
|
||||
var/icon_height = 32
|
||||
var/agility = 20 //prob() to do agile things
|
||||
|
||||
/datum/species/proc/update_attack_types()
|
||||
unarmed_attacks = list()
|
||||
for(var/u_type in unarmed_types)
|
||||
unarmed_attacks += new u_type()
|
||||
|
||||
/datum/species/New()
|
||||
if(hud_type)
|
||||
hud = new hud_type()
|
||||
@@ -376,8 +398,23 @@
|
||||
if(FEMALE)
|
||||
t_him = "her"
|
||||
|
||||
H.visible_message("<span class='notice'>[H] hugs [target] to make [t_him] feel better!</span>", \
|
||||
"<span class='notice'>You hug [target] to make [t_him] feel better!</span>")
|
||||
if(H.zone_sel.selecting == "head")
|
||||
H.visible_message( \
|
||||
"<span class='notice'>[H] pats [target] on the head.</span>", \
|
||||
"<span class='notice'>You pat [target] on the head.</span>", )
|
||||
else if(H.zone_sel.selecting == "r_hand" || H.zone_sel.selecting == "l_hand")
|
||||
H.visible_message( \
|
||||
"<span class='notice'>[H] shakes [target]'s hand.</span>", \
|
||||
"<span class='notice'>You shake [target]'s hand.</span>", )
|
||||
//TFF 15/12/19 - Port nose booping from CHOMPStation
|
||||
else if(H.zone_sel.selecting == "mouth")
|
||||
H.visible_message( \
|
||||
"<span class='notice'>[H] boops [target]'s nose.</span>", \
|
||||
"<span class='notice'>You boop [target] on the nose.</span>", )
|
||||
|
||||
else
|
||||
H.visible_message("<span class='notice'>[H] hugs [target] to make [t_him] feel better!</span>", \
|
||||
"<span class='notice'>You hug [target] to make [t_him] feel better!</span>")
|
||||
|
||||
/datum/species/proc/remove_inherent_verbs(var/mob/living/carbon/human/H)
|
||||
if(inherent_verbs)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
var/global/list/human_icon_cache = list() //key is incredibly complex, see update_icons_body()
|
||||
var/global/list/tail_icon_cache = list() //key is [species.race_key][r_skin][g_skin][b_skin]
|
||||
var/global/list/wing_icon_cache = list() // See tail.
|
||||
var/global/list/light_overlay_cache = list() //see make_worn_icon() on helmets
|
||||
var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
|
||||
@@ -86,11 +87,13 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
#define LEGCUFF_LAYER 25 //Same as handcuffs, for legcuffs
|
||||
#define L_HAND_LAYER 26 //Left-hand item
|
||||
#define R_HAND_LAYER 27 //Right-hand item
|
||||
#define MODIFIER_EFFECTS_LAYER 28 //Effects drawn by modifiers
|
||||
#define FIRE_LAYER 29 //'Mob on fire' overlay layer
|
||||
#define WATER_LAYER 30 //'Mob submerged' overlay layer
|
||||
#define TARGETED_LAYER 31 //'Aimed at' overlay layer
|
||||
#define TOTAL_LAYERS 31//<---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
|
||||
#define WING_LAYER 28 //Wings or protrusions over the suit.
|
||||
#define TAIL_LAYER_ALT 29 //Modified tail-sprite layer. Tend to be larger.
|
||||
#define MODIFIER_EFFECTS_LAYER 30 //Effects drawn by modifiers
|
||||
#define FIRE_LAYER 31 //'Mob on fire' overlay layer
|
||||
#define WATER_LAYER 32 //'Mob submerged' overlay layer
|
||||
#define TARGETED_LAYER 33 //'Aimed at' overlay layer
|
||||
#define TOTAL_LAYERS 33//<---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
|
||||
//////////////////////////////////
|
||||
|
||||
/mob/living/carbon/human
|
||||
@@ -180,7 +183,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
|
||||
// blend the individual damage states with our icons
|
||||
for(var/obj/item/organ/external/O in organs)
|
||||
if(isnull(O) || O.is_stump())
|
||||
if(isnull(O) || O.is_stump() || O.is_hidden_by_tail())
|
||||
continue
|
||||
|
||||
O.update_icon()
|
||||
@@ -252,22 +255,29 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
icon_key += "[rgb(part.s_col[1],part.s_col[2],part.s_col[3])]"
|
||||
if(part.body_hair && part.h_col && part.h_col.len >= 3)
|
||||
icon_key += "[rgb(part.h_col[1],part.h_col[2],part.h_col[3])]"
|
||||
icon_key += "[part.s_col_blend]"
|
||||
if(species.color_mult)
|
||||
icon_key += "[ICON_MULTIPLY]"
|
||||
else
|
||||
icon_key += "[ICON_ADD]"
|
||||
else
|
||||
icon_key += "#000000"
|
||||
|
||||
for(var/M in part.markings)
|
||||
icon_key += "[M][part.markings[M]["color"]]"
|
||||
|
||||
if(part.robotic >= ORGAN_ROBOT)
|
||||
icon_key += "2[part.model ? "-[part.model]": ""]"
|
||||
robolimb_count++
|
||||
if(part.organ_tag == BP_HEAD || part.organ_tag == BP_TORSO || part.organ_tag == BP_GROIN)
|
||||
if((part.robotic == ORGAN_ROBOT || part.robotic == ORGAN_LIFELIKE) && (part.organ_tag == BP_HEAD || part.organ_tag == BP_TORSO || part.organ_tag == BP_GROIN))
|
||||
robobody_count ++
|
||||
else if(part.status & ORGAN_DEAD)
|
||||
icon_key += "3"
|
||||
else
|
||||
icon_key += "1"
|
||||
|
||||
if(part.transparent)
|
||||
icon_key += "_t"
|
||||
|
||||
icon_key = "[icon_key][husk ? 1 : 0][fat ? 1 : 0][hulk ? 1 : 0][skeleton ? 1 : 0]"
|
||||
var/icon/base_icon
|
||||
if(human_icon_cache[icon_key])
|
||||
@@ -284,7 +294,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
//That part makes left and right legs drawn topmost and lowermost when human looks WEST or EAST
|
||||
//And no change in rendering for other parts (they icon_position is 0, so goes to 'else' part)
|
||||
if(part.icon_position & (LEFT | RIGHT))
|
||||
var/icon/temp2 = new('icons/mob/human.dmi',"blank")
|
||||
var/icon/temp2 = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi', icon_state = "blank")
|
||||
temp2.Insert(new/icon(temp,dir=NORTH),dir=NORTH)
|
||||
temp2.Insert(new/icon(temp,dir=SOUTH),dir=SOUTH)
|
||||
if(!(part.icon_position & LEFT))
|
||||
@@ -325,6 +335,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
|
||||
//tail
|
||||
update_tail_showing()
|
||||
update_wing_showing()
|
||||
|
||||
/mob/living/carbon/human/proc/update_skin()
|
||||
if(QDESTROYING(src))
|
||||
@@ -407,7 +418,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
if(facial_hair_style && facial_hair_style.species_allowed && (src.species.get_bodytype(src) in facial_hair_style.species_allowed))
|
||||
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
if(facial_hair_style.do_colouration)
|
||||
facial_s.Blend(rgb(r_facial, g_facial, b_facial), ICON_ADD)
|
||||
facial_s.Blend(rgb(r_facial, g_facial, b_facial), facial_hair_style.color_blend_mode)
|
||||
|
||||
face_standing.Blend(facial_s, ICON_OVERLAY)
|
||||
|
||||
@@ -433,11 +444,16 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
|
||||
face_standing.Blend(hair_s, ICON_OVERLAY)
|
||||
|
||||
if(head_organ.nonsolid)
|
||||
if(head_organ.nonsolid || head_organ.transparent)
|
||||
face_standing += rgb(,,,120)
|
||||
|
||||
overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER)
|
||||
var/icon/ears_s = get_ears_overlay()
|
||||
if(ears_s)
|
||||
face_standing.Blend(ears_s, ICON_OVERLAY)
|
||||
|
||||
overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER, "pixel_y" = head_organ.head_offset)
|
||||
apply_layer(HAIR_LAYER)
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/update_eyes()
|
||||
if(QDESTROYING(src))
|
||||
@@ -575,7 +591,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
uniform_sprite = "[INV_W_UNIFORM_DEF_ICON].dmi"
|
||||
|
||||
//Build a uniform sprite
|
||||
overlays_standing[UNIFORM_LAYER] = w_uniform.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_w_uniform_str, default_icon = uniform_sprite, default_layer = UNIFORM_LAYER)
|
||||
var/icon/c_mask = tail_style?.clip_mask
|
||||
if(c_mask)
|
||||
var/obj/item/clothing/suit/S = wear_suit
|
||||
if((wear_suit?.flags_inv & HIDETAIL) || (istype(S) && S.taurized)) // Reasons to not mask: 1. If you're wearing a suit that hides the tail or if you're wearing a taurized suit.
|
||||
c_mask = null
|
||||
overlays_standing[UNIFORM_LAYER] = w_uniform.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_w_uniform_str, default_icon = uniform_sprite, default_layer = UNIFORM_LAYER, clip_mask = c_mask)
|
||||
apply_layer(UNIFORM_LAYER)
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_id()
|
||||
@@ -657,6 +678,11 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
if(!shoes || (wear_suit && wear_suit.flags_inv & HIDESHOES) || (w_uniform && w_uniform.flags_inv & HIDESHOES))
|
||||
return //Either nothing to draw, or it'd be hidden.
|
||||
|
||||
for(var/f in list(BP_L_FOOT, BP_R_FOOT))
|
||||
var/obj/item/organ/external/foot/foot = get_organ(f)
|
||||
if(istype(foot) && foot.is_hidden_by_tail()) //If either foot is hidden by the tail, don't render footwear.
|
||||
return
|
||||
|
||||
//Allow for shoe layer toggle nonsense
|
||||
var/shoe_layer = SHOES_LAYER
|
||||
if(istype(shoes, /obj/item/clothing/shoes))
|
||||
@@ -733,6 +759,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
update_inv_w_uniform()
|
||||
update_inv_shoes()
|
||||
update_tail_showing()
|
||||
update_wing_showing()
|
||||
|
||||
if(!wear_suit)
|
||||
return //No point, no suit.
|
||||
@@ -747,7 +774,13 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
else
|
||||
suit_sprite = "[INV_SUIT_DEF_ICON].dmi"
|
||||
|
||||
overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_wear_suit_str, default_icon = suit_sprite, default_layer = SUIT_LAYER)
|
||||
var/icon/c_mask = null
|
||||
var/tail_is_rendered = (overlays_standing[TAIL_LAYER] || overlays_standing[TAIL_LAYER_ALT])
|
||||
var/valid_clip_mask = tail_style?.clip_mask
|
||||
|
||||
if(tail_is_rendered && valid_clip_mask && !(istype(suit) && suit.taurized)) //Clip the lower half of the suit off using the tail's clip mask for taurs since taur bodies aren't hidden.
|
||||
c_mask = valid_clip_mask
|
||||
overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_wear_suit_str, default_icon = suit_sprite, default_layer = SUIT_LAYER, clip_mask = c_mask)
|
||||
|
||||
apply_layer(SUIT_LAYER)
|
||||
|
||||
@@ -860,12 +893,23 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
return
|
||||
|
||||
remove_layer(TAIL_LAYER)
|
||||
remove_layer(TAIL_LAYER_ALT) // Alt Tail Layer
|
||||
|
||||
var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER
|
||||
|
||||
var/image/tail_image = get_tail_image()
|
||||
if(tail_image)
|
||||
tail_image.layer = BODY_LAYER+used_tail_layer
|
||||
overlays_standing[used_tail_layer] = tail_image
|
||||
apply_layer(used_tail_layer)
|
||||
return
|
||||
|
||||
var/species_tail = species.get_tail(src) // Species tail icon_state prefix.
|
||||
|
||||
//This one is actually not that bad I guess.
|
||||
if(species_tail && !(wear_suit && wear_suit.flags_inv & HIDETAIL))
|
||||
var/icon/tail_s = get_tail_icon()
|
||||
overlays_standing[TAIL_LAYER] = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+TAIL_LAYER)
|
||||
overlays_standing[used_tail_layer] = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+used_tail_layer) // Alt Tail Layer
|
||||
animate_tail_reset()
|
||||
|
||||
//TODO: Is this the appropriate place for this, and not on species...?
|
||||
@@ -875,31 +919,34 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
if(!tail_icon)
|
||||
//generate a new one
|
||||
var/species_tail_anim = species.get_tail_animation(src)
|
||||
if(!species_tail_anim && species.icobase_tail) species_tail_anim = species.icobase //Allow override of file for non-animated tails
|
||||
if(!species_tail_anim) species_tail_anim = 'icons/effects/species.dmi'
|
||||
tail_icon = new/icon(species_tail_anim)
|
||||
tail_icon.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
|
||||
tail_icon.Blend(rgb(r_skin, g_skin, b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
|
||||
// The following will not work with animated tails.
|
||||
var/use_species_tail = species.get_tail_hair(src)
|
||||
if(use_species_tail)
|
||||
var/icon/hair_icon = icon('icons/effects/species.dmi', "[species.get_tail(src)]_[use_species_tail]")
|
||||
hair_icon.Blend(rgb(r_hair, g_hair, b_hair), ICON_ADD)
|
||||
hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species.color_mult ? ICON_MULTIPLY : ICON_ADD) //Check for species color_mult
|
||||
tail_icon.Blend(hair_icon, ICON_OVERLAY)
|
||||
tail_icon_cache[icon_key] = tail_icon
|
||||
|
||||
return tail_icon
|
||||
|
||||
/mob/living/carbon/human/proc/set_tail_state(var/t_state)
|
||||
var/image/tail_overlay = overlays_standing[TAIL_LAYER]
|
||||
var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER // Alt Tail Layer
|
||||
var/image/tail_overlay = overlays_standing[used_tail_layer]
|
||||
|
||||
remove_layer(TAIL_LAYER)
|
||||
remove_layer(TAIL_LAYER_ALT)
|
||||
|
||||
if(tail_overlay)
|
||||
overlays_standing[TAIL_LAYER] = tail_overlay
|
||||
overlays_standing[used_tail_layer] = tail_overlay
|
||||
if(species.get_tail_animation(src))
|
||||
tail_overlay.icon_state = t_state
|
||||
. = tail_overlay
|
||||
|
||||
apply_layer(TAIL_LAYER)
|
||||
apply_layer(used_tail_layer)
|
||||
|
||||
//Not really once, since BYOND can't do that.
|
||||
//Update this if the ability to flick() images or make looping animation start at the first frame is ever added.
|
||||
@@ -909,8 +956,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
return
|
||||
|
||||
var/t_state = "[species.get_tail(src)]_once"
|
||||
var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER // Alt Tail Layer
|
||||
|
||||
var/image/tail_overlay = overlays_standing[TAIL_LAYER]
|
||||
var/image/tail_overlay = overlays_standing[used_tail_layer] // Alt Tail Layer
|
||||
if(tail_overlay && tail_overlay.icon_state == t_state)
|
||||
return //let the existing animation finish
|
||||
|
||||
@@ -918,7 +966,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
if(tail_overlay)
|
||||
spawn(20)
|
||||
//check that the animation hasn't changed in the meantime
|
||||
if(overlays_standing[TAIL_LAYER] == tail_overlay && tail_overlay.icon_state == t_state)
|
||||
if(overlays_standing[used_tail_layer] == tail_overlay && tail_overlay.icon_state == t_state) // Alt Tail Layer
|
||||
animate_tail_stop()
|
||||
|
||||
/mob/living/carbon/human/proc/animate_tail_start()
|
||||
@@ -941,6 +989,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
set_tail_state("[species.get_tail(src)]_idle[rand(0,9)]")
|
||||
else
|
||||
set_tail_state("[species.get_tail(src)]_static")
|
||||
toggle_tail(FALSE) //So tails stop when someone dies. TODO - Fix this hack ~Leshana
|
||||
|
||||
/mob/living/carbon/human/proc/animate_tail_stop()
|
||||
if(QDESTROYING(src))
|
||||
@@ -948,6 +997,19 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
|
||||
set_tail_state("[species.get_tail(src)]_static")
|
||||
|
||||
/mob/living/carbon/human/proc/update_wing_showing()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
|
||||
remove_layer(WING_LAYER)
|
||||
|
||||
var/image/wing_image = get_wing_image()
|
||||
if(wing_image)
|
||||
wing_image.layer = BODY_LAYER+WING_LAYER
|
||||
overlays_standing[WING_LAYER] = wing_image
|
||||
|
||||
apply_layer(WING_LAYER)
|
||||
|
||||
/mob/living/carbon/human/update_modifier_visuals()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
@@ -1013,6 +1075,89 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
|
||||
overlays_standing[SURGERY_LAYER] = total
|
||||
apply_layer(SURGERY_LAYER)
|
||||
|
||||
/mob/living/carbon/human/proc/get_wing_image()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
|
||||
//If you are FBP with wing style and didn't set a custom one
|
||||
if(synthetic && synthetic.includes_wing && !wing_style)
|
||||
var/icon/wing_s = new/icon("icon" = synthetic.icon, "icon_state" = "wing") //I dunno. If synths have some custom wing?
|
||||
wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
|
||||
return image(wing_s)
|
||||
|
||||
//If you have custom wings selected
|
||||
if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL))
|
||||
var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = flapping && wing_style.ani_state ? wing_style.ani_state : wing_style.icon_state)
|
||||
if(wing_style.do_colouration)
|
||||
wing_s.Blend(rgb(src.r_wing, src.g_wing, src.b_wing), wing_style.color_blend_mode)
|
||||
if(wing_style.extra_overlay)
|
||||
var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay)
|
||||
overlay.Blend(rgb(src.r_wing2, src.g_wing2, src.b_wing2), wing_style.color_blend_mode)
|
||||
wing_s.Blend(overlay, ICON_OVERLAY)
|
||||
qdel(overlay)
|
||||
return image(wing_s)
|
||||
|
||||
/mob/living/carbon/human/proc/get_ears_overlay()
|
||||
if(ear_style && !(head && (head.flags_inv & BLOCKHEADHAIR)))
|
||||
var/icon/ears_s = new/icon("icon" = ear_style.icon, "icon_state" = ear_style.icon_state)
|
||||
if(ear_style.do_colouration)
|
||||
ears_s.Blend(rgb(src.r_ears, src.g_ears, src.b_ears), ear_style.color_blend_mode)
|
||||
if(ear_style.extra_overlay)
|
||||
var/icon/overlay = new/icon("icon" = ear_style.icon, "icon_state" = ear_style.extra_overlay)
|
||||
overlay.Blend(rgb(src.r_ears2, src.g_ears2, src.b_ears2), ear_style.color_blend_mode)
|
||||
ears_s.Blend(overlay, ICON_OVERLAY)
|
||||
qdel(overlay)
|
||||
return ears_s
|
||||
return null
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/get_tail_image()
|
||||
//If you are FBP with tail style and didn't set a custom one
|
||||
var/datum/robolimb/model = isSynthetic()
|
||||
if(istype(model) && model.includes_tail && !tail_style)
|
||||
var/icon/tail_s = new/icon("icon" = synthetic.icon, "icon_state" = "tail")
|
||||
tail_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
|
||||
return image(tail_s)
|
||||
|
||||
//If you have a custom tail selected
|
||||
if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !isTaurTail(tail_style)))
|
||||
var/icon/tail_s = new/icon("icon" = tail_style.icon, "icon_state" = wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)
|
||||
if(tail_style.do_colouration)
|
||||
tail_s.Blend(rgb(src.r_tail, src.g_tail, src.b_tail), tail_style.color_blend_mode)
|
||||
if(tail_style.extra_overlay)
|
||||
var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay)
|
||||
if(wagging && tail_style.ani_state)
|
||||
overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay_w)
|
||||
overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode)
|
||||
tail_s.Blend(overlay, ICON_OVERLAY)
|
||||
qdel(overlay)
|
||||
else
|
||||
overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode)
|
||||
tail_s.Blend(overlay, ICON_OVERLAY)
|
||||
qdel(overlay)
|
||||
|
||||
if(isTaurTail(tail_style))
|
||||
var/datum/sprite_accessory/tail/taur/taurtype = tail_style
|
||||
if(taurtype.can_ride && !riding_datum)
|
||||
riding_datum = new /datum/riding/taur(src)
|
||||
verbs |= /mob/living/carbon/human/proc/taur_mount
|
||||
verbs |= /mob/living/proc/toggle_rider_reins
|
||||
return image(tail_s, "pixel_x" = -16)
|
||||
else
|
||||
return image(tail_s)
|
||||
return null
|
||||
|
||||
// TODO - Move this to where it should go ~Leshana
|
||||
/mob/living/proc/stop_flying()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
flying = FALSE
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/human/stop_flying()
|
||||
if((. = ..()))
|
||||
update_wing_showing()
|
||||
|
||||
//Human Overlays Indexes/////////
|
||||
#undef MUTATIONS_LAYER
|
||||
#undef SKIN_LAYER
|
||||
|
||||
@@ -13,8 +13,7 @@
|
||||
1.2 * src.getShockFireLoss() + \
|
||||
1.2 * src.getShockBruteLoss() + \
|
||||
1.7 * src.getCloneLoss() + \
|
||||
2 * src.halloss + \
|
||||
-1 * src.chem_effects[CE_PAINKILLER]
|
||||
2 * src.halloss
|
||||
|
||||
if(src.slurring)
|
||||
src.traumatic_shock -= 20
|
||||
@@ -27,6 +26,13 @@
|
||||
src.traumatic_shock += 30
|
||||
else if(organ.is_dislocated())
|
||||
src.traumatic_shock += 15
|
||||
|
||||
// Some individuals/species are more or less supectible to pain. Default trauma_mod = 1. Does not affect painkillers
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src
|
||||
H.traumatic_shock *= H.species.trauma_mod
|
||||
|
||||
src.traumatic_shock += -1 * src.chem_effects[CE_PAINKILLER]
|
||||
|
||||
if(src.traumatic_shock < 0)
|
||||
src.traumatic_shock = 0
|
||||
|
||||
@@ -31,7 +31,23 @@
|
||||
nest = null
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob(src, TRUE)
|
||||
|
||||
qdel(selected_image)
|
||||
|
||||
if(LAZYLEN(organs))
|
||||
organs_by_name.Cut()
|
||||
while(organs.len)
|
||||
var/obj/item/OR = organs[1]
|
||||
organs -= OR
|
||||
qdel(OR)
|
||||
|
||||
if(LAZYLEN(internal_organs))
|
||||
internal_organs_by_name.Cut()
|
||||
while(internal_organs.len)
|
||||
var/obj/item/OR = internal_organs[1]
|
||||
internal_organs -= OR
|
||||
qdel(OR)
|
||||
|
||||
return ..()
|
||||
|
||||
//mob verbs are faster than object verbs. See mob/verb/examine.
|
||||
@@ -56,159 +72,6 @@
|
||||
usr.visible_message("<b>[src]</b> points to [A]")
|
||||
return 1
|
||||
|
||||
/*one proc, four uses
|
||||
swapping: if it's 1, the mobs are trying to switch, if 0, non-passive is pushing passive
|
||||
default behaviour is:
|
||||
- non-passive mob passes the passive version
|
||||
- passive mob checks to see if its mob_bump_flag is in the non-passive's mob_bump_flags
|
||||
- if si, the proc returns
|
||||
*/
|
||||
/mob/living/proc/can_move_mob(var/mob/living/swapped, swapping = 0, passive = 0)
|
||||
if(!swapped)
|
||||
return 1
|
||||
if(!passive)
|
||||
return swapped.can_move_mob(src, swapping, 1)
|
||||
else
|
||||
var/context_flags = 0
|
||||
if(swapping)
|
||||
context_flags = swapped.mob_swap_flags
|
||||
else
|
||||
context_flags = swapped.mob_push_flags
|
||||
if(!mob_bump_flag) //nothing defined, go wild
|
||||
return 1
|
||||
if(mob_bump_flag & context_flags)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/mob/living/Bump(atom/movable/AM)
|
||||
if(now_pushing || !loc || buckled == AM)
|
||||
return
|
||||
now_pushing = 1
|
||||
if (istype(AM, /mob/living))
|
||||
var/mob/living/tmob = AM
|
||||
|
||||
//Even if we don't push/swap places, we "touched" them, so spread fire
|
||||
spread_fire(tmob)
|
||||
|
||||
for(var/mob/living/M in range(tmob, 1))
|
||||
if(tmob.pinned.len || ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) )
|
||||
if ( !(world.time % 5) )
|
||||
to_chat(src, "<span class='warning'>[tmob] is restrained, you cannot push past</span>")
|
||||
now_pushing = 0
|
||||
return
|
||||
if( tmob.pulling == M && ( M.restrained() && !( tmob.restrained() ) && tmob.stat == 0) )
|
||||
if ( !(world.time % 5) )
|
||||
to_chat(src, "<span class='warning'>[tmob] is restraining [M], you cannot push past</span>")
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
//BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
|
||||
var/can_swap = 1
|
||||
if(loc.density || tmob.loc.density)
|
||||
can_swap = 0
|
||||
if(can_swap)
|
||||
for(var/atom/movable/A in loc)
|
||||
if(A == src)
|
||||
continue
|
||||
if(!A.CanPass(tmob, loc))
|
||||
can_swap = 0
|
||||
if(!can_swap) break
|
||||
if(can_swap)
|
||||
for(var/atom/movable/A in tmob.loc)
|
||||
if(A == tmob)
|
||||
continue
|
||||
if(!A.CanPass(src, tmob.loc))
|
||||
can_swap = 0
|
||||
if(!can_swap) break
|
||||
|
||||
//Leaping mobs just land on the tile, no pushing, no anything.
|
||||
if(status_flags & LEAPING)
|
||||
loc = tmob.loc
|
||||
status_flags &= ~LEAPING
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
if((tmob.mob_always_swap || (tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained())) && tmob.canmove && canmove && !tmob.buckled && !buckled && can_swap && can_move_mob(tmob, 1, 0)) // mutual brohugs all around!
|
||||
var/turf/oldloc = loc
|
||||
forceMove(tmob.loc)
|
||||
tmob.forceMove(oldloc)
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
if(!can_move_mob(tmob, 0, 0))
|
||||
now_pushing = 0
|
||||
return
|
||||
if(a_intent == I_HELP || src.restrained())
|
||||
now_pushing = 0
|
||||
return
|
||||
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
|
||||
if(prob(40) && !(FAT in src.mutations))
|
||||
to_chat(src, "<span class='danger'>You fail to push [tmob]'s fat ass out of the way.</span>")
|
||||
now_pushing = 0
|
||||
return
|
||||
if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot))
|
||||
if(prob(99))
|
||||
now_pushing = 0
|
||||
return
|
||||
if(tmob.l_hand && istype(tmob.l_hand, /obj/item/weapon/shield/riot))
|
||||
if(prob(99))
|
||||
now_pushing = 0
|
||||
return
|
||||
if(!(tmob.status_flags & CANPUSH))
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
tmob.LAssailant = src
|
||||
|
||||
now_pushing = 0
|
||||
. = ..()
|
||||
if (!istype(AM, /atom/movable) || AM.anchored)
|
||||
if(confused && prob(50) && m_intent=="run")
|
||||
Weaken(2)
|
||||
playsound(src, "punch", 25, 1, -1)
|
||||
visible_message("<span class='warning'>[src] [pick("ran", "slammed")] into \the [AM]!</span>")
|
||||
src.apply_damage(5, BRUTE)
|
||||
to_chat(src, "<span class='warning'>You just [pick("ran", "slammed")] into \the [AM]!</span>")
|
||||
return
|
||||
if (!now_pushing)
|
||||
if(isobj(AM))
|
||||
var/obj/I = AM
|
||||
if(!can_pull_size || can_pull_size < I.w_class)
|
||||
return
|
||||
now_pushing = 1
|
||||
|
||||
var/t = get_dir(src, AM)
|
||||
if (istype(AM, /obj/structure/window))
|
||||
for(var/obj/structure/window/win in get_step(AM,t))
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
step(AM, t)
|
||||
|
||||
if(ishuman(AM) && AM:grabbed_by)
|
||||
for(var/obj/item/weapon/grab/G in AM:grabbed_by)
|
||||
step(G:assailant, get_dir(G:assailant, AM))
|
||||
G.adjust_position()
|
||||
now_pushing = 0
|
||||
|
||||
/mob/living/CanPass(atom/movable/mover, turf/target)
|
||||
if(istype(mover, /obj/structure/blob) && faction == "blob") //Blobs should ignore things on their faction.
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
// Called when something steps onto us. This allows for mulebots and vehicles to run things over. <3
|
||||
/mob/living/Crossed(var/atom/movable/AM) // Transplanting this from /mob/living/carbon/human/Crossed()
|
||||
if(AM == src || AM.is_incorporeal()) // We're not going to run over ourselves or ghosts
|
||||
return
|
||||
|
||||
if(istype(AM, /mob/living/bot/mulebot))
|
||||
var/mob/living/bot/mulebot/MB = AM
|
||||
MB.runOver(src)
|
||||
|
||||
if(istype(AM, /obj/vehicle))
|
||||
var/obj/vehicle/V = AM
|
||||
V.RunOver(src)
|
||||
|
||||
/mob/living/verb/succumb()
|
||||
set hidden = 1
|
||||
if ((src.health < 0 && src.health > (5-src.getMaxHealth()))) // Health below Zero but above 5-away-from-death, as before, but variable
|
||||
@@ -608,36 +471,6 @@ default behaviour is:
|
||||
|
||||
// ++++ROCKDTBEN++++ MOB PROCS //END
|
||||
|
||||
// Applies direct "cold" damage while checking protection against the cold.
|
||||
/mob/living/proc/inflict_cold_damage(amount)
|
||||
amount *= 1 - get_cold_protection(50) // Within spacesuit protection.
|
||||
if(amount > 0)
|
||||
adjustFireLoss(amount)
|
||||
|
||||
// Ditto, but for "heat".
|
||||
/mob/living/proc/inflict_heat_damage(amount)
|
||||
amount *= 1 - get_heat_protection(10000) // Within firesuit protection.
|
||||
if(amount > 0)
|
||||
adjustFireLoss(amount)
|
||||
|
||||
// and one for electricity because why not
|
||||
/mob/living/proc/inflict_shock_damage(amount)
|
||||
electrocute_act(amount, null, 1 - get_shock_protection(), pick(BP_HEAD, BP_TORSO, BP_GROIN))
|
||||
|
||||
// also one for water (most things resist it entirely, except for slimes)
|
||||
/mob/living/proc/inflict_water_damage(amount)
|
||||
amount *= 1 - get_water_protection()
|
||||
if(amount > 0)
|
||||
adjustToxLoss(amount)
|
||||
|
||||
// one for abstracted away ""poison"" (mostly because simplemobs shouldn't handle reagents)
|
||||
/mob/living/proc/inflict_poison_damage(amount)
|
||||
if(isSynthetic())
|
||||
return
|
||||
amount *= 1 - get_poison_protection()
|
||||
if(amount > 0)
|
||||
adjustToxLoss(amount)
|
||||
|
||||
/mob/proc/get_contents()
|
||||
|
||||
|
||||
@@ -688,50 +521,6 @@ default behaviour is:
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
/mob/living/proc/can_inject()
|
||||
return 1
|
||||
|
||||
/mob/living/proc/get_organ_target()
|
||||
var/mob/shooter = src
|
||||
var/t = shooter:zone_sel.selecting
|
||||
if ((t in list( O_EYES, O_MOUTH )))
|
||||
t = BP_HEAD
|
||||
var/obj/item/organ/external/def_zone = ran_zone(t)
|
||||
return def_zone
|
||||
|
||||
|
||||
// heal ONE external organ, organ gets randomly selected from damaged ones.
|
||||
/mob/living/proc/heal_organ_damage(var/brute, var/burn)
|
||||
adjustBruteLoss(-brute)
|
||||
adjustFireLoss(-burn)
|
||||
src.updatehealth()
|
||||
|
||||
// damage ONE external organ, organ gets randomly selected from damaged ones.
|
||||
/mob/living/proc/take_organ_damage(var/brute, var/burn, var/emp=0)
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
adjustBruteLoss(brute)
|
||||
adjustFireLoss(burn)
|
||||
src.updatehealth()
|
||||
|
||||
// heal MANY external organs, in random order
|
||||
/mob/living/proc/heal_overall_damage(var/brute, var/burn)
|
||||
adjustBruteLoss(-brute)
|
||||
adjustFireLoss(-burn)
|
||||
src.updatehealth()
|
||||
|
||||
// damage MANY external organs, in random order
|
||||
/mob/living/proc/take_overall_damage(var/brute, var/burn, var/used_weapon = null)
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
adjustBruteLoss(brute)
|
||||
adjustFireLoss(burn)
|
||||
src.updatehealth()
|
||||
|
||||
/mob/living/proc/restore_all_organs()
|
||||
return
|
||||
|
||||
|
||||
|
||||
/mob/living/proc/revive()
|
||||
rejuvenate()
|
||||
if(buckled)
|
||||
@@ -826,92 +615,6 @@ default behaviour is:
|
||||
|
||||
return
|
||||
|
||||
// Almost all of this handles pulling movables behind us
|
||||
/mob/living/Move(atom/newloc, direct, movetime)
|
||||
if(buckled && buckled.loc != newloc) //not updating position
|
||||
if(!buckled.anchored && buckled.buckle_movable)
|
||||
return buckled.Move(newloc, direct)
|
||||
else
|
||||
return 0
|
||||
|
||||
var/atom/movable/pullee = pulling
|
||||
// Prior to our move it's already too far away
|
||||
if(pullee && get_dist(src, pullee) > 1)
|
||||
stop_pulling()
|
||||
// Shenanigans! Pullee closed into locker for eg.
|
||||
if(pullee && !isturf(pullee.loc) && pullee.loc != loc)
|
||||
stop_pulling()
|
||||
// Can't pull with no hands
|
||||
if(restrained())
|
||||
stop_pulling()
|
||||
|
||||
// Will move our mob (probably)
|
||||
. = ..() // Moved() called at this point if successful
|
||||
|
||||
if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1) //seperated from our puller and not in the middle of a diagonal move
|
||||
pulledby.stop_pulling()
|
||||
|
||||
if(s_active && !(s_active in contents) && get_turf(s_active) != get_turf(src)) //check !( s_active in contents ) first so we hopefully don't have to call get_turf() so much.
|
||||
s_active.close(src)
|
||||
|
||||
/mob/living/proc/dragged(var/mob/living/dragger, var/oldloc)
|
||||
var/area/A = get_area(src)
|
||||
if(lying && !buckled && pull_damage() && A.has_gravity() && (prob(getBruteLoss() * 200 / maxHealth)))
|
||||
adjustBruteLoss(2)
|
||||
visible_message("<span class='danger'>\The [src]'s [isSynthetic() ? "state" : "wounds"] worsen terribly from being dragged!</span>")
|
||||
|
||||
/mob/living/Moved(var/atom/oldloc, direct, forced, movetime)
|
||||
. = ..()
|
||||
handle_footstep(loc)
|
||||
|
||||
if(pulling) // we were pulling a thing and didn't lose it during our move.
|
||||
var/pull_dir = get_dir(src, pulling)
|
||||
|
||||
if(pulling.anchored || !isturf(pulling.loc))
|
||||
stop_pulling()
|
||||
|
||||
else if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir))) // puller and pullee more than one tile away or in diagonal position
|
||||
// If it is too far away or across z-levels from old location, stop pulling.
|
||||
if(get_dist(pulling.loc, oldloc) > 1 || pulling.loc.z != oldloc?.z)
|
||||
stop_pulling()
|
||||
|
||||
// living might take damage from drags
|
||||
else if(isliving(pulling))
|
||||
var/mob/living/M = pulling
|
||||
M.dragged(src, oldloc)
|
||||
|
||||
pulling.Move(oldloc, 0, movetime) // the pullee tries to reach our previous position
|
||||
if(pulling && get_dist(src, pulling) > 1) // the pullee couldn't keep up
|
||||
stop_pulling()
|
||||
|
||||
if(!isturf(loc))
|
||||
return
|
||||
else if(lastarea?.has_gravity == 0)
|
||||
inertial_drift()
|
||||
else if(!isspace(loc))
|
||||
inertia_dir = 0
|
||||
make_floating(0)
|
||||
|
||||
/mob/living/proc/inertial_drift()
|
||||
if(x > 1 && x < (world.maxx) && y > 1 && y < (world.maxy))
|
||||
if(Process_Spacemove(1))
|
||||
inertia_dir = 0
|
||||
return
|
||||
|
||||
var/locthen = loc
|
||||
spawn(5)
|
||||
if(!anchored && !pulledby && loc == locthen)
|
||||
var/stepdir = inertia_dir ? inertia_dir : last_move
|
||||
if(!stepdir)
|
||||
return
|
||||
var/turf/T = get_step(src, stepdir)
|
||||
if(!T)
|
||||
return
|
||||
Move(T, stepdir, 5)
|
||||
|
||||
/mob/living/proc/handle_footstep(turf/T)
|
||||
return FALSE
|
||||
|
||||
/mob/living/verb/resist()
|
||||
set name = "Resist"
|
||||
set category = "IC"
|
||||
|
||||
@@ -571,4 +571,74 @@
|
||||
if(confused)
|
||||
accuracy_penalty += 45
|
||||
|
||||
return accuracy_penalty
|
||||
return accuracy_penalty
|
||||
|
||||
// Applies direct "cold" damage while checking protection against the cold.
|
||||
/mob/living/proc/inflict_cold_damage(amount)
|
||||
amount *= 1 - get_cold_protection(50) // Within spacesuit protection.
|
||||
if(amount > 0)
|
||||
adjustFireLoss(amount)
|
||||
|
||||
// Ditto, but for "heat".
|
||||
/mob/living/proc/inflict_heat_damage(amount)
|
||||
amount *= 1 - get_heat_protection(10000) // Within firesuit protection.
|
||||
if(amount > 0)
|
||||
adjustFireLoss(amount)
|
||||
|
||||
// and one for electricity because why not
|
||||
/mob/living/proc/inflict_shock_damage(amount)
|
||||
electrocute_act(amount, null, 1 - get_shock_protection(), pick(BP_HEAD, BP_TORSO, BP_GROIN))
|
||||
|
||||
// also one for water (most things resist it entirely, except for slimes)
|
||||
/mob/living/proc/inflict_water_damage(amount)
|
||||
amount *= 1 - get_water_protection()
|
||||
if(amount > 0)
|
||||
adjustToxLoss(amount)
|
||||
|
||||
// one for abstracted away ""poison"" (mostly because simplemobs shouldn't handle reagents)
|
||||
/mob/living/proc/inflict_poison_damage(amount)
|
||||
if(isSynthetic())
|
||||
return
|
||||
amount *= 1 - get_poison_protection()
|
||||
if(amount > 0)
|
||||
adjustToxLoss(amount)
|
||||
|
||||
/mob/living/proc/can_inject()
|
||||
return 1
|
||||
|
||||
/mob/living/proc/get_organ_target()
|
||||
var/mob/shooter = src
|
||||
var/t = shooter:zone_sel.selecting
|
||||
if ((t in list( O_EYES, O_MOUTH )))
|
||||
t = BP_HEAD
|
||||
var/obj/item/organ/external/def_zone = ran_zone(t)
|
||||
return def_zone
|
||||
|
||||
// heal ONE external organ, organ gets randomly selected from damaged ones.
|
||||
/mob/living/proc/heal_organ_damage(var/brute, var/burn)
|
||||
adjustBruteLoss(-brute)
|
||||
adjustFireLoss(-burn)
|
||||
src.updatehealth()
|
||||
|
||||
// damage ONE external organ, organ gets randomly selected from damaged ones.
|
||||
/mob/living/proc/take_organ_damage(var/brute, var/burn, var/emp=0)
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
adjustBruteLoss(brute)
|
||||
adjustFireLoss(burn)
|
||||
src.updatehealth()
|
||||
|
||||
// heal MANY external organs, in random order
|
||||
/mob/living/proc/heal_overall_damage(var/brute, var/burn)
|
||||
adjustBruteLoss(-brute)
|
||||
adjustFireLoss(-burn)
|
||||
src.updatehealth()
|
||||
|
||||
// damage MANY external organs, in random order
|
||||
/mob/living/proc/take_overall_damage(var/brute, var/burn, var/used_weapon = null)
|
||||
if(status_flags & GODMODE) return 0 //godmode
|
||||
adjustBruteLoss(brute)
|
||||
adjustFireLoss(burn)
|
||||
src.updatehealth()
|
||||
|
||||
/mob/living/proc/restore_all_organs()
|
||||
return
|
||||
|
||||
@@ -71,4 +71,10 @@
|
||||
|
||||
var/looking_elsewhere = FALSE //If the mob's view has been relocated to somewhere else, like via a camera or with binocs
|
||||
|
||||
var/image/selected_image = null // Used for buildmode AI control stuff.
|
||||
var/image/selected_image = null // Used for buildmode AI control stuff.
|
||||
|
||||
var/allow_self_surgery = FALSE // Used to determine if the mob can perform surgery on itself.
|
||||
|
||||
var/tail_alt = 0
|
||||
var/flying = 0 // Allows flight
|
||||
|
||||
|
||||
@@ -18,4 +18,243 @@
|
||||
if(!n.is_safe_to_enter(src))
|
||||
to_chat(src, span("warning", "\The [n] is dangerous to move into."))
|
||||
return FALSE // In case any code wants to know if movement happened.
|
||||
return ..() // Parent call should make the mob move.
|
||||
return ..() // Parent call should make the mob move.
|
||||
|
||||
/*one proc, four uses
|
||||
swapping: if it's 1, the mobs are trying to switch, if 0, non-passive is pushing passive
|
||||
default behaviour is:
|
||||
- non-passive mob passes the passive version
|
||||
- passive mob checks to see if its mob_bump_flag is in the non-passive's mob_bump_flags
|
||||
- if si, the proc returns
|
||||
*/
|
||||
/mob/living/proc/can_move_mob(var/mob/living/swapped, swapping = 0, passive = 0)
|
||||
if(!swapped)
|
||||
return 1
|
||||
if(!passive)
|
||||
return swapped.can_move_mob(src, swapping, 1)
|
||||
else
|
||||
var/context_flags = 0
|
||||
if(swapping)
|
||||
context_flags = swapped.mob_swap_flags
|
||||
else
|
||||
context_flags = swapped.mob_push_flags
|
||||
if(!mob_bump_flag) //nothing defined, go wild
|
||||
return 1
|
||||
if(mob_bump_flag & context_flags)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/mob/living/Bump(atom/movable/AM)
|
||||
if(now_pushing || !loc || buckled == AM)
|
||||
return
|
||||
now_pushing = 1
|
||||
if (istype(AM, /mob/living))
|
||||
var/mob/living/tmob = AM
|
||||
|
||||
//Even if we don't push/swap places, we "touched" them, so spread fire
|
||||
spread_fire(tmob)
|
||||
|
||||
for(var/mob/living/M in range(tmob, 1))
|
||||
if(tmob.pinned.len || ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) )
|
||||
if ( !(world.time % 5) )
|
||||
to_chat(src, "<span class='warning'>[tmob] is restrained, you cannot push past</span>")
|
||||
now_pushing = 0
|
||||
return
|
||||
if( tmob.pulling == M && ( M.restrained() && !( tmob.restrained() ) && tmob.stat == 0) )
|
||||
if ( !(world.time % 5) )
|
||||
to_chat(src, "<span class='warning'>[tmob] is restraining [M], you cannot push past</span>")
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
//BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
|
||||
var/can_swap = 1
|
||||
if(loc.density || tmob.loc.density)
|
||||
can_swap = 0
|
||||
if(can_swap)
|
||||
for(var/atom/movable/A in loc)
|
||||
if(A == src)
|
||||
continue
|
||||
if(!A.CanPass(tmob, loc))
|
||||
can_swap = 0
|
||||
if(!can_swap) break
|
||||
if(can_swap)
|
||||
for(var/atom/movable/A in tmob.loc)
|
||||
if(A == tmob)
|
||||
continue
|
||||
if(!A.CanPass(src, tmob.loc))
|
||||
can_swap = 0
|
||||
if(!can_swap) break
|
||||
|
||||
//Leaping mobs just land on the tile, no pushing, no anything.
|
||||
if(status_flags & LEAPING)
|
||||
loc = tmob.loc
|
||||
status_flags &= ~LEAPING
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
if((tmob.mob_always_swap || (tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained())) && tmob.canmove && canmove && !tmob.buckled && !buckled && can_swap && can_move_mob(tmob, 1, 0)) // mutual brohugs all around!
|
||||
var/turf/oldloc = loc
|
||||
forceMove(tmob.loc)
|
||||
tmob.forceMove(oldloc)
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
if(!can_move_mob(tmob, 0, 0))
|
||||
now_pushing = 0
|
||||
return
|
||||
if(a_intent == I_HELP || src.restrained())
|
||||
now_pushing = 0
|
||||
return
|
||||
if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations))
|
||||
if(prob(40) && !(FAT in src.mutations))
|
||||
to_chat(src, "<span class='danger'>You fail to push [tmob]'s fat ass out of the way.</span>")
|
||||
now_pushing = 0
|
||||
return
|
||||
if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot))
|
||||
if(prob(99))
|
||||
now_pushing = 0
|
||||
return
|
||||
if(tmob.l_hand && istype(tmob.l_hand, /obj/item/weapon/shield/riot))
|
||||
if(prob(99))
|
||||
now_pushing = 0
|
||||
return
|
||||
if(!(tmob.status_flags & CANPUSH))
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
tmob.LAssailant = src
|
||||
|
||||
now_pushing = 0
|
||||
. = ..()
|
||||
if (!istype(AM, /atom/movable) || AM.anchored)
|
||||
if(confused && prob(50) && m_intent=="run")
|
||||
Weaken(2)
|
||||
playsound(src, "punch", 25, 1, -1)
|
||||
visible_message("<span class='warning'>[src] [pick("ran", "slammed")] into \the [AM]!</span>")
|
||||
src.apply_damage(5, BRUTE)
|
||||
to_chat(src, "<span class='warning'>You just [pick("ran", "slammed")] into \the [AM]!</span>")
|
||||
return
|
||||
if (!now_pushing)
|
||||
if(isobj(AM))
|
||||
var/obj/I = AM
|
||||
if(!can_pull_size || can_pull_size < I.w_class)
|
||||
return
|
||||
now_pushing = 1
|
||||
|
||||
var/t = get_dir(src, AM)
|
||||
if (istype(AM, /obj/structure/window))
|
||||
for(var/obj/structure/window/win in get_step(AM,t))
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
step(AM, t)
|
||||
|
||||
if(ishuman(AM) && AM:grabbed_by)
|
||||
for(var/obj/item/weapon/grab/G in AM:grabbed_by)
|
||||
step(G:assailant, get_dir(G:assailant, AM))
|
||||
G.adjust_position()
|
||||
now_pushing = 0
|
||||
|
||||
/mob/living/CanPass(atom/movable/mover, turf/target)
|
||||
if(istype(mover, /obj/structure/blob) && faction == "blob") //Blobs should ignore things on their faction.
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
// Called when something steps onto us. This allows for mulebots and vehicles to run things over. <3
|
||||
/mob/living/Crossed(var/atom/movable/AM) // Transplanting this from /mob/living/carbon/human/Crossed()
|
||||
if(AM == src || AM.is_incorporeal()) // We're not going to run over ourselves or ghosts
|
||||
return
|
||||
|
||||
if(istype(AM, /mob/living/bot/mulebot))
|
||||
var/mob/living/bot/mulebot/MB = AM
|
||||
MB.runOver(src)
|
||||
|
||||
if(istype(AM, /obj/vehicle))
|
||||
var/obj/vehicle/V = AM
|
||||
V.RunOver(src)
|
||||
|
||||
// Almost all of this handles pulling movables behind us
|
||||
/mob/living/Move(atom/newloc, direct, movetime)
|
||||
if(buckled && buckled.loc != newloc) //not updating position
|
||||
if(!buckled.anchored && buckled.buckle_movable)
|
||||
return buckled.Move(newloc, direct)
|
||||
else
|
||||
return 0
|
||||
|
||||
var/atom/movable/pullee = pulling
|
||||
// Prior to our move it's already too far away
|
||||
if(pullee && get_dist(src, pullee) > 1)
|
||||
stop_pulling()
|
||||
// Shenanigans! Pullee closed into locker for eg.
|
||||
if(pullee && !isturf(pullee.loc) && pullee.loc != loc)
|
||||
stop_pulling()
|
||||
// Can't pull with no hands
|
||||
if(restrained())
|
||||
stop_pulling()
|
||||
|
||||
// Will move our mob (probably)
|
||||
. = ..() // Moved() called at this point if successful
|
||||
|
||||
if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1) //seperated from our puller and not in the middle of a diagonal move
|
||||
pulledby.stop_pulling()
|
||||
|
||||
if(s_active && !(s_active in contents) && get_turf(s_active) != get_turf(src)) //check !( s_active in contents ) first so we hopefully don't have to call get_turf() so much.
|
||||
s_active.close(src)
|
||||
|
||||
/mob/living/proc/dragged(var/mob/living/dragger, var/oldloc)
|
||||
var/area/A = get_area(src)
|
||||
if(lying && !buckled && pull_damage() && A.has_gravity() && (prob(getBruteLoss() * 200 / maxHealth)))
|
||||
adjustBruteLoss(2)
|
||||
visible_message("<span class='danger'>\The [src]'s [isSynthetic() ? "state" : "wounds"] worsen terribly from being dragged!</span>")
|
||||
|
||||
/mob/living/Moved(var/atom/oldloc, direct, forced, movetime)
|
||||
. = ..()
|
||||
handle_footstep(loc)
|
||||
|
||||
if(pulling) // we were pulling a thing and didn't lose it during our move.
|
||||
var/pull_dir = get_dir(src, pulling)
|
||||
|
||||
if(pulling.anchored || !isturf(pulling.loc))
|
||||
stop_pulling()
|
||||
|
||||
else if(get_dist(src, pulling) > 1 || (moving_diagonally != SECOND_DIAG_STEP && ((pull_dir - 1) & pull_dir))) // puller and pullee more than one tile away or in diagonal position
|
||||
// If it is too far away or across z-levels from old location, stop pulling.
|
||||
if(get_dist(pulling.loc, oldloc) > 1 || pulling.loc.z != oldloc?.z)
|
||||
stop_pulling()
|
||||
|
||||
// living might take damage from drags
|
||||
else if(isliving(pulling))
|
||||
var/mob/living/M = pulling
|
||||
M.dragged(src, oldloc)
|
||||
|
||||
pulling.Move(oldloc, 0, movetime) // the pullee tries to reach our previous position
|
||||
if(pulling && get_dist(src, pulling) > 1) // the pullee couldn't keep up
|
||||
stop_pulling()
|
||||
|
||||
if(!isturf(loc))
|
||||
return
|
||||
else if(lastarea?.has_gravity == 0)
|
||||
inertial_drift()
|
||||
else if(!isspace(loc))
|
||||
inertia_dir = 0
|
||||
make_floating(0)
|
||||
|
||||
/mob/living/proc/inertial_drift()
|
||||
if(x > 1 && x < (world.maxx) && y > 1 && y < (world.maxy))
|
||||
if(Process_Spacemove(1))
|
||||
inertia_dir = 0
|
||||
return
|
||||
|
||||
var/locthen = loc
|
||||
spawn(5)
|
||||
if(!anchored && !pulledby && loc == locthen)
|
||||
var/stepdir = inertia_dir ? inertia_dir : last_move
|
||||
if(!stepdir)
|
||||
return
|
||||
var/turf/T = get_step(src, stepdir)
|
||||
if(!T)
|
||||
return
|
||||
Move(T, stepdir, 5)
|
||||
|
||||
/mob/living/proc/handle_footstep(turf/T)
|
||||
return FALSE
|
||||
|
||||
@@ -15,3 +15,13 @@
|
||||
layer = HIDING_LAYER //Just above cables with their 2.44
|
||||
plane = OBJ_PLANE
|
||||
to_chat(src,"<span class='notice'>You are now hiding.</span>")
|
||||
|
||||
/mob/living/proc/toggle_selfsurgery()
|
||||
set name = "Allow Self Surgery"
|
||||
set desc = "Toggles the 'safeties' on self-surgery, allowing you to do so."
|
||||
set category = "Object"
|
||||
|
||||
allow_self_surgery = !allow_self_surgery
|
||||
|
||||
to_chat(usr, "<span class='notice'>You will [allow_self_surgery ? "now" : "no longer"] attempt to operate upon yourself.</span>")
|
||||
log_admin("DEBUG \[[world.timeofday]\]: [src.ckey ? "[src.name]:([src.ckey])" : "[src.name]"] has [allow_self_surgery ? "Enabled" : "Disabled"] self surgery.")
|
||||
|
||||
37
code/modules/mob/living/organs.dm
Normal file
37
code/modules/mob/living/organs.dm
Normal file
@@ -0,0 +1,37 @@
|
||||
/mob/living
|
||||
var/list/internal_organs = list()
|
||||
var/list/organs = list()
|
||||
var/list/organs_by_name = list() // map organ names to organs
|
||||
var/list/internal_organs_by_name = list() // so internal organs have less ickiness too
|
||||
var/list/bad_external_organs = list()// organs we check until they are good.
|
||||
|
||||
/mob/living/proc/get_bodypart_name(var/zone)
|
||||
var/obj/item/organ/external/E = get_organ(zone)
|
||||
if(E) . = E.name
|
||||
|
||||
/mob/living/proc/get_organ(var/zone)
|
||||
if(!zone)
|
||||
zone = BP_TORSO
|
||||
else if (zone in list( O_EYES, O_MOUTH ))
|
||||
zone = BP_HEAD
|
||||
return organs_by_name[zone]
|
||||
|
||||
/mob/living/gib()
|
||||
for(var/path in internal_organs)
|
||||
if(ispath(path))
|
||||
var/obj/item/organ/neworg = new path(src, TRUE)
|
||||
internal_organs -= path
|
||||
neworg.name = "[name] [neworg.name]"
|
||||
neworg.meat_type = meat_type
|
||||
internal_organs |= neworg
|
||||
|
||||
for(var/obj/item/organ/I in internal_organs)
|
||||
I.removed()
|
||||
if(isturf(I?.loc)) // Some organs qdel themselves or other things when removed
|
||||
I.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),30)
|
||||
|
||||
for(var/obj/item/organ/external/E in src.organs)
|
||||
if(!ispath(E))
|
||||
E.droplimb(0,DROPLIMB_EDGE,1)
|
||||
|
||||
..()
|
||||
16
code/modules/mob/living/riding.dm
Normal file
16
code/modules/mob/living/riding.dm
Normal file
@@ -0,0 +1,16 @@
|
||||
/mob/living/proc/toggle_rider_reins()
|
||||
set name = "Give Reins"
|
||||
set category = "Abilities"
|
||||
set desc = "Let people riding on you control your movement."
|
||||
|
||||
if(riding_datum)
|
||||
if(istype(riding_datum,/datum/riding))
|
||||
if(riding_datum.keytype)
|
||||
riding_datum.keytype = null
|
||||
to_chat(src, "Rider control enabled.")
|
||||
return
|
||||
else
|
||||
riding_datum.keytype = /obj/item/weapon/material/twohanded/riding_crop
|
||||
to_chat(src, "Rider control restricted.")
|
||||
return
|
||||
return
|
||||
@@ -71,6 +71,5 @@
|
||||
/mob/living/simple_mob/proc/remove_eyes()
|
||||
cut_overlay(eye_layer)
|
||||
|
||||
|
||||
/mob/living/simple_mob/gib()
|
||||
..(icon_gib,1,icon) // we need to specify where the gib animation is stored
|
||||
..(icon_gib,1,icon) // we need to specify where the gib animation is stored
|
||||
|
||||
8
code/modules/mob/living/simple_mob/butchering.dm
Normal file
8
code/modules/mob/living/simple_mob/butchering.dm
Normal file
@@ -0,0 +1,8 @@
|
||||
/mob/living/simple_mob
|
||||
gib_on_butchery = TRUE
|
||||
|
||||
/mob/living/simple_mob/can_butcher(var/mob/user, var/obj/item/I) // Override for special butchering checks.
|
||||
. = ..()
|
||||
|
||||
if(. && (!is_sharp(I) || !has_edge(I)))
|
||||
return FALSE
|
||||
@@ -68,9 +68,9 @@
|
||||
else
|
||||
var/datum/gender/T = gender_datums[src.get_visible_gender()]
|
||||
to_chat(user, "<span class='notice'>\The [src] is dead, medical items won't bring [T.him] back to life.</span>") // the gender lookup is somewhat overkill, but it functions identically to the obsolete gender macros and future-proofs this code
|
||||
if(meat_type && (stat == DEAD)) //if the animal has a meat, and if it is dead.
|
||||
if(istype(O, /obj/item/weapon/material/knife))
|
||||
harvest(user)
|
||||
if(can_butcher(user, O)) //if the animal can be butchered, do so and return. It's likely to be gibbed.
|
||||
harvest(user, O)
|
||||
return
|
||||
|
||||
if(user.a_intent == I_HELP && harvest_tool && istype(O, harvest_tool) && stat != DEAD)
|
||||
if(world.time > (harvest_recent + harvest_cooldown))
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
/mob/living/simple_mob/examine(mob/user)
|
||||
. = ..()
|
||||
if(user && harvest_tool && (get_dist(user, src) <= 3))
|
||||
if(stat != DEAD && user && harvest_tool && (get_dist(user, src) <= 3))
|
||||
. += "<span class='notice'>\The [src] can be [harvest_verb] with a [initial(harvest_tool.name)] every [round(harvest_cooldown, 0.1)] minutes.</span>"
|
||||
var/time_to_harvest = (harvest_recent + harvest_cooldown) - world.time
|
||||
if(time_to_harvest > 0)
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
handle_special()
|
||||
|
||||
handle_guts()
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -94,7 +96,7 @@
|
||||
throw_alert("oxy", /obj/screen/alert/too_much_oxy)
|
||||
else
|
||||
clear_alert("oxy")
|
||||
|
||||
|
||||
if(min_tox && Environment.gas["phoron"] < min_tox)
|
||||
atmos_unsuitable = 2
|
||||
throw_alert("tox_in_air", /obj/screen/alert/not_enough_tox)
|
||||
@@ -137,6 +139,12 @@
|
||||
else
|
||||
adjustOxyLoss(-unsuitable_atoms_damage)
|
||||
|
||||
/mob/living/simple_mob/proc/handle_guts()
|
||||
for(var/obj/item/organ/OR in internal_organs)
|
||||
OR.process()
|
||||
|
||||
for(var/obj/item/organ/OR in organs)
|
||||
OR.process()
|
||||
|
||||
/mob/living/simple_mob/proc/handle_supernatural()
|
||||
if(purge)
|
||||
|
||||
@@ -57,8 +57,6 @@
|
||||
var/response_harm = "tries to hurt" // If clicked on harm intent
|
||||
var/list/friends = list() // Mobs on this list wont get attacked regardless of faction status.
|
||||
var/harm_intent_damage = 3 // How much an unarmed harm click does to this mob.
|
||||
var/meat_amount = 0 // How much meat to drop from this mob when butchered
|
||||
var/obj/meat_type // The meat object to drop
|
||||
var/list/loot_list = list() // The list of lootable objects to drop, with "/path = prob%" structure
|
||||
var/obj/item/weapon/card/id/myid// An ID card if they have one to give them access to stuff.
|
||||
|
||||
@@ -156,6 +154,11 @@
|
||||
// contained in a cage
|
||||
var/in_stasis = 0
|
||||
|
||||
// Used for if the mob can drop limbs. Overrides species dmi.
|
||||
var/limb_icon
|
||||
// Used for if the mob can drop limbs. Overrides the icon cache key, so it doesn't keep remaking the icon needlessly.
|
||||
var/limb_icon_key
|
||||
|
||||
/mob/living/simple_mob/Initialize()
|
||||
verbs -= /mob/verb/observe
|
||||
health = maxHealth
|
||||
@@ -167,8 +170,8 @@
|
||||
|
||||
if(has_eye_glow)
|
||||
add_eyes()
|
||||
return ..()
|
||||
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/Destroy()
|
||||
default_language = null
|
||||
@@ -187,7 +190,6 @@
|
||||
update_icon()
|
||||
..()
|
||||
|
||||
|
||||
//Client attached
|
||||
/mob/living/simple_mob/Login()
|
||||
. = ..()
|
||||
@@ -266,27 +268,6 @@
|
||||
/mob/living/simple_mob/get_speech_ending(verb, var/ending)
|
||||
return verb
|
||||
|
||||
|
||||
// Harvest an animal's delicious byproducts
|
||||
/mob/living/simple_mob/proc/harvest(var/mob/user, var/invisible)
|
||||
var/actual_meat_amount = max(1,(meat_amount/2))
|
||||
var/attacker_name = user.name
|
||||
if(invisible)
|
||||
attacker_name = "someone"
|
||||
|
||||
if(meat_type && actual_meat_amount>0 && (stat == DEAD))
|
||||
for(var/i=0;i<actual_meat_amount;i++)
|
||||
var/obj/item/meat = new meat_type(get_turf(src))
|
||||
meat.name = "[src.name] [meat.name]"
|
||||
if(issmall(src))
|
||||
user.visible_message("<span class='danger'>[attacker_name] chops up \the [src]!</span>")
|
||||
new/obj/effect/decal/cleanable/blood/splatter(get_turf(src))
|
||||
qdel(src)
|
||||
else
|
||||
user.visible_message("<span class='danger'>[attacker_name] butchers \the [src] messily!</span>")
|
||||
gib()
|
||||
|
||||
|
||||
/mob/living/simple_mob/is_sentient()
|
||||
return mob_class & MOB_CLASS_HUMANOID|MOB_CLASS_ANIMAL|MOB_CLASS_SLIME // Update this if needed.
|
||||
|
||||
|
||||
@@ -6,4 +6,17 @@
|
||||
response_disarm = "shoos"
|
||||
response_harm = "hits"
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee
|
||||
|
||||
internal_organs = list(\
|
||||
/obj/item/organ/internal/brain,\
|
||||
/obj/item/organ/internal/heart,\
|
||||
/obj/item/organ/internal/liver,\
|
||||
/obj/item/organ/internal/stomach,\
|
||||
/obj/item/organ/internal/intestine,\
|
||||
/obj/item/organ/internal/lungs\
|
||||
)
|
||||
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/animalhide = 3\
|
||||
)
|
||||
|
||||
@@ -110,6 +110,10 @@
|
||||
var/poison_chance = 10 // Chance for injection to occur.
|
||||
var/poison_per_bite = 5 // Amount added per injection.
|
||||
|
||||
butchery_loot = list(\
|
||||
/obj/item/stack/material/chitin = 1\
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/animal/giant_spider/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
|
||||
@@ -232,7 +232,8 @@
|
||||
var/turf/our_tile = get_turf(src)
|
||||
var/obj/visual = new /obj/effect/decal/point(our_tile)
|
||||
visual.invisibility = invisibility
|
||||
visual.plane = plane
|
||||
visual.plane = ABOVE_PLANE
|
||||
visual.layer = FLY_LAYER
|
||||
|
||||
animate(visual,
|
||||
pixel_x = (tile.x - our_tile.x) * world.icon_size + A.pixel_x,
|
||||
@@ -240,9 +241,7 @@
|
||||
time = 1.7,
|
||||
easing = EASE_OUT)
|
||||
|
||||
spawn(20)
|
||||
if(visual)
|
||||
qdel(visual) // qdel
|
||||
QDEL_IN(visual, 2 SECONDS) //Better qdel
|
||||
|
||||
face_atom(A)
|
||||
return 1
|
||||
@@ -1207,4 +1206,4 @@ mob/proc/yank_out_object()
|
||||
|
||||
/mob/proc/grab_ghost(force)
|
||||
if(mind)
|
||||
return mind.grab_ghost(force = force)
|
||||
return mind.grab_ghost(force = force)
|
||||
|
||||
@@ -252,8 +252,12 @@
|
||||
|
||||
/datum/preferences/proc/update_preview_icon()
|
||||
var/mob/living/carbon/human/dummy/mannequin/mannequin = get_mannequin(client_ckey)
|
||||
if(!mannequin.dna) // Special handling for preview icons before SSAtoms has initailized.
|
||||
mannequin.dna = new /datum/dna(null)
|
||||
mannequin.delete_inventory(TRUE)
|
||||
dress_preview_mob(mannequin)
|
||||
mannequin.toggle_tail(setting = TRUE)
|
||||
mannequin.toggle_wing(setting = TRUE)
|
||||
COMPILE_OVERLAYS(mannequin)
|
||||
|
||||
preview_icon = icon('icons/effects/128x48.dmi', bgstate)
|
||||
|
||||
@@ -34,6 +34,11 @@
|
||||
// Whether or not the accessory can be affected by colouration
|
||||
var/do_colouration = 1
|
||||
|
||||
var/color_blend_mode = ICON_MULTIPLY // If checked.
|
||||
|
||||
// Ckey of person allowed to use this, if defined.
|
||||
var/list/ckeys_allowed = null
|
||||
var/apply_restrictions = FALSE //whether to apply restrictions for specific tails/ears/wings
|
||||
|
||||
/*
|
||||
////////////////////////////
|
||||
@@ -928,6 +933,359 @@
|
||||
icon_state = "hair_ziegler"
|
||||
flags = HAIR_TIEABLE
|
||||
|
||||
/datum/sprite_accessory/hair/astolfo
|
||||
name = "Astolfo"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "hair_astolfo"
|
||||
|
||||
/datum/sprite_accessory/hair/awoohair
|
||||
name = "Shoulder-length Messy"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "momijihair"
|
||||
|
||||
/datum/sprite_accessory/hair/braid
|
||||
name = "Floorlength Braid"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "hair_braid"
|
||||
|
||||
/datum/sprite_accessory/hair/twindrills
|
||||
name = "Twin Drills"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "hair_twincurl"
|
||||
|
||||
/datum/sprite_accessory/hair/ponytail6_fixed
|
||||
name = "Ponytail 6.2"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "hair_ponytail6"
|
||||
|
||||
/datum/sprite_accessory/hair/una_hood
|
||||
name = "Cobra Hood"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "soghun_hood"
|
||||
species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/hair/una_doublehorns
|
||||
name = "Double Unathi Horns"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "soghun_dubhorns"
|
||||
species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/hair/citheronia_colorable
|
||||
name = "Citheronia"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "citheronia_hair_c"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/hair/sergal_plain
|
||||
name = "Sergal Plain"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "serg_plain"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/hair/sergal_medicore
|
||||
name = "Sergal Medicore"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "serg_medicore"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/hair/sergal_tapered
|
||||
name = "Sergal Tapered"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "serg_tapered"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/hair/sergal_fairytail
|
||||
name = "Sergal Fairytail"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "serg_fairytail"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
// Vulpa stuffs
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_none
|
||||
name = "None"
|
||||
icon_state = "bald"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_kajam
|
||||
name = "Kajam"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "kajam"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_keid
|
||||
name = "Keid"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "keid"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_adhara
|
||||
name = "Adhara"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "adhara"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_kleeia
|
||||
name = "Kleeia"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "kleeia"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_mizar
|
||||
name = "Mizar"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "mizar"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_apollo
|
||||
name = "Apollo"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "apollo"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_belle
|
||||
name = "Belle"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "belle"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_bun
|
||||
name = "Vulp Bun"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "bun"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_jagged
|
||||
name = "Jagged"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "jagged"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_curl
|
||||
name = "Curl"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "curl"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_hawk
|
||||
name = "Hawk"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "hawk"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_anita
|
||||
name = "Anita"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "anita"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_short
|
||||
name = "Short"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "short"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/vulp_hair_spike
|
||||
name = "Spike"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "spike"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
//xeno stuffs
|
||||
/datum/sprite_accessory/hair/xeno_head_drone_color
|
||||
name = "Drone dome"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "cxeno_drone"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
// figure this one out for better coloring
|
||||
/datum/sprite_accessory/hair/xeno_head_sentinel_color
|
||||
name = "Sentinal dome"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "cxeno_sentinel"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/xeno_head_queen_color
|
||||
name = "Queen dome"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "cxeno_queen"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/xeno_head_hunter_color
|
||||
name = "Hunter dome"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "cxeno_hunter"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/xeno_head_praetorian_color
|
||||
name = "Praetorian dome"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "cxeno_praetorian"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
// Shadekin stuffs
|
||||
|
||||
/datum/sprite_accessory/hair/shadekin_hair_short
|
||||
name = "Shadekin Short Hair"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "shadekin_short"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/shadekin_hair_poofy
|
||||
name = "Shadekin Poofy Hair"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "shadekin_poofy"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/hair/shadekin_hair_long
|
||||
name = "Shadekin Long Hair"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_add = 'icons/mob/human_face_alt_add.dmi'
|
||||
icon_state = "shadekin_long"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
|
||||
/*
|
||||
shaved
|
||||
name = "Shaved"
|
||||
icon_state = "bald"
|
||||
gender = NEUTER
|
||||
species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
*/
|
||||
/datum/sprite_accessory/facial_hair/neck_fluff
|
||||
name = "Neck Fluff"
|
||||
icon = 'icons/mob/human_face_or_alt.dmi'
|
||||
icon_state = "facial_neckfluff"
|
||||
gender = NEUTER
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulp_none
|
||||
name = "None"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_state = "none"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulp_blaze
|
||||
name = "Blaze"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_state = "vulp_facial_blaze"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulp_vulpine
|
||||
name = "Vulpine"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_state = "vulp_facial_vulpine"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulp_earfluff
|
||||
name = "Earfluff"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_state = "vulp_facial_earfluff"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulp_mask
|
||||
name = "Mask"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_state = "vulp_facial_mask"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulp_patch
|
||||
name = "Patch"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_state = "vulp_facial_patch"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulp_ruff
|
||||
name = "Ruff"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_state = "vulp_facial_ruff"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulp_kita
|
||||
name = "Kita"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_state = "vulp_facial_kita"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulp_swift
|
||||
name = "Swift"
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_state = "vulp_facial_swift"
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = NEUTER
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/*
|
||||
///////////////////////////////////
|
||||
/ =---------------------------= /
|
||||
@@ -938,6 +1296,7 @@
|
||||
|
||||
/datum/sprite_accessory/facial_hair
|
||||
icon = 'icons/mob/Human_face.dmi'
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/facial_hair/shaved
|
||||
name = "Shaved"
|
||||
@@ -1126,23 +1485,23 @@
|
||||
/datum/sprite_accessory/hair/skr_tentacle_veryshort
|
||||
name = "Skrell Short Tentacles"
|
||||
icon_state = "skrell_hair_short"
|
||||
species_allowed = list(SPECIES_SKRELL)
|
||||
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
gender = MALE
|
||||
|
||||
/datum/sprite_accessory/hair/skr_tentacle_short
|
||||
name = "Skrell Average Tentacles"
|
||||
icon_state = "skrell_hair_average"
|
||||
species_allowed = list(SPECIES_SKRELL)
|
||||
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/hair/skr_tentacle_average
|
||||
name = "Skrell Long Tentacles"
|
||||
icon_state = "skrell_hair_long"
|
||||
species_allowed = list(SPECIES_SKRELL)
|
||||
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/hair/skr_tentacle_verylong
|
||||
name = "Skrell Very Long Tentacles"
|
||||
icon_state = "skrell_hair_verylong"
|
||||
species_allowed = list(SPECIES_SKRELL)
|
||||
species_allowed = list(SPECIES_SKRELL, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
//Tajaran hairstyles
|
||||
/datum/sprite_accessory/hair/taj_ears
|
||||
@@ -1424,6 +1783,8 @@
|
||||
//like Tajaran inner-ear coloring overlay stuff.
|
||||
species_allowed = list()
|
||||
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
var/body_parts = list() //A list of bodyparts this covers, in organ_tag defines
|
||||
//Reminder: BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD
|
||||
|
||||
|
||||
488
code/modules/mob/new_player/sprite_accessories_ear.dm
Normal file
488
code/modules/mob/new_player/sprite_accessories_ear.dm
Normal file
@@ -0,0 +1,488 @@
|
||||
/*
|
||||
////////////////////////////
|
||||
/ =--------------------= /
|
||||
/ == Ear Definitions == /
|
||||
/ =--------------------= /
|
||||
////////////////////////////
|
||||
*/
|
||||
/datum/sprite_accessory/ears
|
||||
name = "You should not see this..."
|
||||
icon = 'icons/mob/human_races/sprite_accessories/ears.dmi'
|
||||
do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color
|
||||
|
||||
color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
|
||||
var/extra_overlay // Icon state of an additional overlay to blend in.
|
||||
var/desc = "You should not see this..."
|
||||
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/ears/shadekin
|
||||
name = "Shadekin Ears, colorable"
|
||||
desc = ""
|
||||
icon_state = "shadekin"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
apply_restrictions = TRUE
|
||||
|
||||
/datum/sprite_accessory/ears/taj_ears
|
||||
name = "Tajaran Ears"
|
||||
icon_state = "ears_plain"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
extra_overlay = "ears_plain-inner"
|
||||
|
||||
/datum/sprite_accessory/ears/taj_ears_tall
|
||||
name = "Tajaran Tall Ears"
|
||||
icon_state = "msai_plain"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
extra_overlay = "msai_plain-inner"
|
||||
|
||||
/datum/sprite_accessory/ears/squirrel_orange
|
||||
name = "squirel, orange"
|
||||
desc = ""
|
||||
icon_state = "squirrel-orange"
|
||||
|
||||
/datum/sprite_accessory/ears/squirrel_red
|
||||
name = "squirrel, red"
|
||||
desc = ""
|
||||
icon_state = "squirrel-red"
|
||||
|
||||
/datum/sprite_accessory/ears/bunny_white
|
||||
name = "bunny, white"
|
||||
desc = ""
|
||||
icon_state = "bunny"
|
||||
|
||||
/datum/sprite_accessory/ears/bear_brown
|
||||
name = "bear, brown"
|
||||
desc = ""
|
||||
icon_state = "bear-brown"
|
||||
|
||||
/datum/sprite_accessory/ears/bear_panda
|
||||
name = "bear, panda"
|
||||
desc = ""
|
||||
icon_state = "panda"
|
||||
|
||||
/datum/sprite_accessory/ears/wolf_grey
|
||||
name = "wolf, grey"
|
||||
desc = ""
|
||||
icon_state = "wolf-grey"
|
||||
|
||||
/datum/sprite_accessory/ears/wolf_green
|
||||
name = "wolf, green"
|
||||
desc = ""
|
||||
icon_state = "wolf-green"
|
||||
|
||||
/datum/sprite_accessory/ears/wisewolf
|
||||
name = "wolf, wise"
|
||||
desc = ""
|
||||
icon_state = "wolf-wise"
|
||||
|
||||
/datum/sprite_accessory/ears/mouse_grey
|
||||
name = "mouse, grey"
|
||||
desc = ""
|
||||
icon_state = "mouse-grey"
|
||||
|
||||
/datum/sprite_accessory/ears/bee
|
||||
name = "bee antennae"
|
||||
desc = ""
|
||||
icon_state = "bee"
|
||||
|
||||
/datum/sprite_accessory/ears/antennae
|
||||
name = "antennae, colorable"
|
||||
desc = ""
|
||||
icon_state = "antennae"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/curly_bug
|
||||
name = "curly antennae, colorable"
|
||||
desc = ""
|
||||
icon_state = "curly_bug"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/dual_robot
|
||||
name = "synth antennae, colorable"
|
||||
desc = ""
|
||||
icon_state = "dual_robot_antennae"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/right_robot
|
||||
name = "right synth, colorable"
|
||||
desc = ""
|
||||
icon_state = "right_robot_antennae"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/left_robot
|
||||
name = "left synth, colorable"
|
||||
desc = ""
|
||||
icon_state = "left_robot_antennae"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/oni_h1
|
||||
name = "oni horns"
|
||||
desc = ""
|
||||
icon_state = "oni-h1"
|
||||
|
||||
/datum/sprite_accessory/ears/oni_h1_c
|
||||
name = "oni horns, colorable"
|
||||
desc = ""
|
||||
icon_state = "oni-h1_c"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/demon_horns1
|
||||
name = "demon horns"
|
||||
desc = ""
|
||||
icon_state = "demon-horns1"
|
||||
|
||||
/datum/sprite_accessory/ears/demon_horns1_c
|
||||
name = "demon horns, colorable"
|
||||
desc = ""
|
||||
icon_state = "demon-horns1_c"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/demon_horns2
|
||||
name = "demon horns, colorable(outward)"
|
||||
desc = ""
|
||||
icon_state = "demon-horns2"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/dragon_horns
|
||||
name = "dragon horns, colorable"
|
||||
desc = ""
|
||||
icon_state = "dragon-horns"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/foxears
|
||||
name = "highlander zorren ears"
|
||||
desc = ""
|
||||
icon_state = "foxears"
|
||||
|
||||
/datum/sprite_accessory/ears/fenears
|
||||
name = "flatland zorren ears"
|
||||
desc = ""
|
||||
icon_state = "fenears"
|
||||
|
||||
/datum/sprite_accessory/ears/sergal //Redundant
|
||||
name = "Sergal ears"
|
||||
icon_state = "serg_plain_s"
|
||||
|
||||
/datum/sprite_accessory/ears/foxearshc
|
||||
name = "highlander zorren ears, colorable"
|
||||
desc = ""
|
||||
icon_state = "foxearshc"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/fenearshc
|
||||
name = "flatland zorren ears, colorable"
|
||||
desc = ""
|
||||
icon_state = "fenearshc"
|
||||
extra_overlay = "fenears-inner"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/sergalhc
|
||||
name = "Sergal ears, colorable"
|
||||
icon_state = "serg_plain_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/mousehc
|
||||
name = "mouse, colorable"
|
||||
desc = ""
|
||||
icon_state = "mouse"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "mouseinner"
|
||||
|
||||
/datum/sprite_accessory/ears/mousehcno
|
||||
name = "mouse, colorable, no inner"
|
||||
desc = ""
|
||||
icon_state = "mouse"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/wolfhc
|
||||
name = "wolf, colorable"
|
||||
desc = ""
|
||||
icon_state = "wolf"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "wolfinner"
|
||||
|
||||
/datum/sprite_accessory/ears/bearhc
|
||||
name = "bear, colorable"
|
||||
desc = ""
|
||||
icon_state = "bear"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/smallbear
|
||||
name = "small bear"
|
||||
desc = ""
|
||||
icon_state = "smallbear"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/squirrelhc
|
||||
name = "squirrel, colorable"
|
||||
desc = ""
|
||||
icon_state = "squirrel"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/kittyhc
|
||||
name = "kitty, colorable"
|
||||
desc = ""
|
||||
icon_state = "kitty"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "kittyinner"
|
||||
|
||||
/datum/sprite_accessory/ears/bunnyhc
|
||||
name = "bunny, colorable"
|
||||
desc = ""
|
||||
icon_state = "bunny"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/antlers
|
||||
name = "antlers"
|
||||
desc = ""
|
||||
icon_state = "antlers"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/antlers_e
|
||||
name = "antlers with ears"
|
||||
desc = ""
|
||||
icon_state = "cow-nohorns"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "antlers_mark"
|
||||
|
||||
/datum/sprite_accessory/ears/smallantlers
|
||||
name = "small antlers"
|
||||
desc = ""
|
||||
icon_state = "smallantlers"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/smallantlers_e
|
||||
name = "small antlers with ears"
|
||||
desc = ""
|
||||
icon_state = "smallantlers"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "deer"
|
||||
|
||||
/datum/sprite_accessory/ears/deer
|
||||
name = "deer ears"
|
||||
desc = ""
|
||||
icon_state = "deer"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/cow
|
||||
name = "cow, horns"
|
||||
desc = ""
|
||||
icon_state = "cow"
|
||||
|
||||
/datum/sprite_accessory/ears/cowc
|
||||
name = "cow, horns, colorable"
|
||||
desc = ""
|
||||
icon_state = "cow-c"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/cow_nohorns
|
||||
name = "cow, no horns"
|
||||
desc = ""
|
||||
icon_state = "cow-nohorns"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/caprahorns
|
||||
name = "caprine horns"
|
||||
desc = ""
|
||||
icon_state = "caprahorns"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/otie
|
||||
name = "otie, colorable"
|
||||
desc = ""
|
||||
icon_state = "otie"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "otie-inner"
|
||||
|
||||
/datum/sprite_accessory/ears/donkey
|
||||
name = "donkey, colorable"
|
||||
desc = ""
|
||||
icon_state = "donkey"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "otie-inner"
|
||||
|
||||
/datum/sprite_accessory/ears/zears
|
||||
name = "jagged ears"
|
||||
desc = ""
|
||||
icon_state = "zears"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/elfs
|
||||
name = "elven ears"
|
||||
desc = ""
|
||||
icon_state = "elfs"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
species_allowed = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/ears/sleek
|
||||
name = "sleek ears"
|
||||
desc = ""
|
||||
icon_state = "sleek"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/drake
|
||||
name = "drake frills"
|
||||
desc = ""
|
||||
icon_state = "drake"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/vulp
|
||||
name = "vulpkanin, dual-color"
|
||||
desc = ""
|
||||
icon_state = "vulp"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "vulp-inner"
|
||||
|
||||
/datum/sprite_accessory/ears/vulp_short
|
||||
name = "vulpkanin short"
|
||||
desc = ""
|
||||
icon_state = "vulp_terrier"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/vulp_short_dc
|
||||
name = "vulpkanin short, dual-color"
|
||||
desc = ""
|
||||
icon_state = "vulp_terrier"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "vulp_terrier-inner"
|
||||
|
||||
/datum/sprite_accessory/ears/vulp_jackal
|
||||
name = "vulpkanin thin, dual-color"
|
||||
desc = ""
|
||||
icon_state = "vulp_jackal"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "vulp_jackal-inner"
|
||||
|
||||
/datum/sprite_accessory/ears/bunny_floppy
|
||||
name = "floopy bunny ears (colorable)"
|
||||
desc = ""
|
||||
icon_state = "floppy_bun"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/ears/teshari
|
||||
name = "Teshari (colorable fluff)"
|
||||
desc = ""
|
||||
icon_state = "teshari"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "teshariinner"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/ears/tesharihigh
|
||||
name = "Teshari upper ears (colorable fluff)"
|
||||
desc = ""
|
||||
icon_state = "tesharihigh"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "tesharihighinner"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/ears/tesharilow
|
||||
name = "Teshari lower ears (colorable fluff)"
|
||||
desc = ""
|
||||
icon_state = "tesharilow"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "tesharilowinner"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/ears/inkling
|
||||
name = "colorable mature inkling hair"
|
||||
desc = ""
|
||||
icon = 'icons/mob/human_face_alt.dmi'
|
||||
icon_state = "inkling-colorable"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/ears/large_dragon
|
||||
name = "Large dragon horns"
|
||||
desc = ""
|
||||
icon_state = "big_liz"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
// Special snowflake ears go below here.
|
||||
/datum/sprite_accessory/ears/elf_caprine_colorable
|
||||
name = "Caprine horns with pointy ears, colorable"
|
||||
desc = ""
|
||||
icon_state = "elfs"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "caprahorns"
|
||||
|
||||
/datum/sprite_accessory/ears/elf_oni_colorable
|
||||
name = "oni horns with pointy ears, colorable"
|
||||
desc = ""
|
||||
icon_state = "elfs"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "oni-h1_c"
|
||||
|
||||
/datum/sprite_accessory/ears/elf_demon_colorable
|
||||
name = "Demon horns with pointy ears, colorable"
|
||||
desc = ""
|
||||
icon_state = "elfs"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "demon-horns1_c"
|
||||
|
||||
/datum/sprite_accessory/ears/elf_demon_outwards_colorable
|
||||
name = "Demon horns with pointy ears, outwards, colourable"
|
||||
desc = ""
|
||||
icon_state = "elfs"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "demon-horns2"
|
||||
|
||||
/datum/sprite_accessory/ears/elf_dragon_colorable
|
||||
name = "Dragon horns with pointy ears, colourable"
|
||||
desc = ""
|
||||
icon_state = "elfs"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "dragon-horns"
|
||||
566
code/modules/mob/new_player/sprite_accessories_extra.dm
Normal file
566
code/modules/mob/new_player/sprite_accessories_extra.dm
Normal file
@@ -0,0 +1,566 @@
|
||||
/datum/sprite_accessory/marking/vr
|
||||
icon = 'icons/mob/human_races/markings_alt.dmi'
|
||||
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_belly
|
||||
name = "belly fur (Vulp)"
|
||||
icon_state = "vulp_belly"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_fullbelly
|
||||
name = "full belly fur (Vulp)"
|
||||
icon_state = "vulp_fullbelly"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_crest
|
||||
name = "belly crest (Vulp)"
|
||||
icon_state = "vulp_crest"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_nose
|
||||
name = "nose (Vulp)"
|
||||
icon_state = "vulp_nose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_short_nose
|
||||
name = "nose, short (Vulp)"
|
||||
icon_state = "vulp_short_nose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/snoutstripe
|
||||
name = "snout stripe (Vulp)"
|
||||
icon_state = "snoutstripe"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_face
|
||||
name = "face (Vulp)"
|
||||
icon_state = "vulp_face"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_facealt
|
||||
name = "face, alt. (Vulp)"
|
||||
icon_state = "vulp_facealt"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_earsface
|
||||
name = "ears and face (Vulp)"
|
||||
icon_state = "vulp_earsface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/vulp_all
|
||||
name = "all head highlights (Vulp)"
|
||||
icon_state = "vulp_all"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sergal_full
|
||||
name = "Sergal Markings"
|
||||
icon_state = "sergal_full"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
species_allowed = list("Sergal")
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sergal_full_female
|
||||
name = "Sergal Markings (Female)"
|
||||
icon_state = "sergal_full_female"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
species_allowed = list("Sergal")
|
||||
|
||||
/datum/sprite_accessory/marking/vr/monoeye
|
||||
name = "Monoeye"
|
||||
icon_state = "monoeye"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spidereyes
|
||||
name = "Spider Eyes"
|
||||
icon_state = "spidereyes"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sergaleyes
|
||||
name = "Sergal Eyes"
|
||||
icon_state = "eyes_sergal"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/brows
|
||||
name = "Eyebrows"
|
||||
icon_state = "brows"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/nevrean_female
|
||||
name = "Female Nevrean beak"
|
||||
icon_state = "nevrean_f"
|
||||
body_parts = list(BP_HEAD)
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/nevrean_male
|
||||
name = "Male Nevrean beak"
|
||||
icon_state = "nevrean_m"
|
||||
body_parts = list(BP_HEAD)
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
gender = MALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spots
|
||||
name = "Spots"
|
||||
icon_state = "spots"
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/shaggy_mane
|
||||
name = "Shaggy mane/feathers"
|
||||
icon_state = "shaggy"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/jagged_teeth
|
||||
name = "Jagged teeth"
|
||||
icon_state = "jagged"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/blank_face
|
||||
name = "Blank round face (use with monster mouth)"
|
||||
icon_state = "blankface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/monster_mouth
|
||||
name = "Monster mouth"
|
||||
icon_state = "monster"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/saber_teeth
|
||||
name = "Saber teeth"
|
||||
icon_state = "saber"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/fangs
|
||||
name = "Fangs"
|
||||
icon_state = "fangs"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/tusks
|
||||
name = "Tusks"
|
||||
icon_state = "tusks"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otie_face
|
||||
name = "Otie face"
|
||||
icon_state = "otieface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otie_nose
|
||||
name = "Otie nose"
|
||||
icon_state = "otie_nose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otienose_lite
|
||||
name = "Short otie nose"
|
||||
icon_state = "otienose_lite"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/backstripes
|
||||
name = "Back stripes"
|
||||
icon_state = "otiestripes"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/belly_butt
|
||||
name = "Belly and butt"
|
||||
icon_state = "bellyandbutt"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_GROIN,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/fingers_toes
|
||||
name = "Fingers and toes"
|
||||
icon_state = "fingerstoes"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otie_socks
|
||||
name = "Fingerless socks"
|
||||
icon_state = "otiesocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/corvid_beak
|
||||
name = "Corvid beak"
|
||||
icon_state = "corvidbeak"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/corvid_belly
|
||||
name = "Corvid belly"
|
||||
icon_state = "corvidbelly"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/cow_body
|
||||
name = "Cow markings"
|
||||
icon_state = "cowbody"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/cow_nose
|
||||
name = "Cow nose"
|
||||
icon_state = "cownose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zmask
|
||||
name = "Eye mask"
|
||||
icon_state = "zmask"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zbody
|
||||
name = "Thick jagged stripes"
|
||||
icon_state = "zbody"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_GROIN,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/znose
|
||||
name = "Jagged snout"
|
||||
icon_state = "znose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otter_nose
|
||||
name = "Otter nose"
|
||||
icon_state = "otternose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/otter_face
|
||||
name = "Otter face"
|
||||
icon_state = "otterface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/deer_face
|
||||
name = "Deer face"
|
||||
icon_state = "deerface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sharkface
|
||||
name = "Akula snout"
|
||||
icon_state = "sharkface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sheppy_face
|
||||
name = "Shepherd snout"
|
||||
icon_state = "shepface"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/sheppy_back
|
||||
name = "Shepherd back"
|
||||
icon_state = "shepback"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_belly_male
|
||||
name = "Zorren Male Torso"
|
||||
icon_state = "zorren_belly"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_belly_female
|
||||
name = "Zorren Female Torso"
|
||||
icon_state = "zorren_belly_female"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_back_patch
|
||||
name = "Zorren Back Patch"
|
||||
icon_state = "zorren_backpatch"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_face_male
|
||||
name = "Zorren Male Face"
|
||||
icon_state = "zorren_face"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
gender = MALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_face_female
|
||||
name = "Zorren Female Face"
|
||||
icon_state = "zorren_face_female"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_muzzle_male
|
||||
name = "Zorren Male Muzzle"
|
||||
icon_state = "zorren_muzzle"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
gender = MALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_muzzle_female
|
||||
name = "Zorren Female Muzzle"
|
||||
icon_state = "zorren_muzzle_female"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_socks
|
||||
name = "Zorren Socks"
|
||||
icon_state = "zorren_socks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/zorren_longsocks
|
||||
name = "Zorren Longsocks"
|
||||
icon_state = "zorren_longsocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/tesh_feathers
|
||||
name = "Teshari Feathers"
|
||||
icon_state = "tesh-feathers"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/harpy_feathers
|
||||
name = "Rapala leg Feather"
|
||||
icon_state = "harpy-feathers"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/harpy_legs
|
||||
name = "Rapala leg coloring"
|
||||
icon_state = "harpy-leg"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/chooves
|
||||
name = "Cloven hooves"
|
||||
icon_state = "chooves"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/body_tone
|
||||
name = "Body toning (for emergency contrast loss)"
|
||||
icon_state = "btone"
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/gloss
|
||||
name = "Full body gloss"
|
||||
icon_state = "gloss"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/eboop_panels
|
||||
name = "Eggnerd FBP panels"
|
||||
icon_state = "eboop"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/osocks_rarm
|
||||
name = "Modular Longsock (right arm)"
|
||||
icon_state = "osocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_ARM,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/osocks_larm
|
||||
name = "Modular Longsock (left arm)"
|
||||
icon_state = "osocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_ARM,BP_L_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/osocks_rleg
|
||||
name = "Modular Longsock (right leg)"
|
||||
icon_state = "osocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_FOOT,BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/osocks_lleg
|
||||
name = "Modular Longsock (left leg)"
|
||||
icon_state = "osocks"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_L_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/animeeyesinner
|
||||
name = "Anime Eyes Inner"
|
||||
icon_state = "animeeyesinner"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/animeeyesouter
|
||||
name = "Anime Eyes Outer"
|
||||
icon_state = "animeeyesouter"
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/panda_eye_marks
|
||||
name = "Panda Eye Markings"
|
||||
icon_state = "eyes_panda"
|
||||
body_parts = list(BP_HEAD)
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/catwomantorso
|
||||
name = "Catwoman chest stripes"
|
||||
icon_state = "catwomanchest"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/catwomangroin
|
||||
name = "Catwoman groin stripes"
|
||||
icon_state = "catwomangroin"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/catwoman_rleg
|
||||
name = "Catwoman right leg stripes"
|
||||
icon_state = "catwomanright"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/catwoman_lleg
|
||||
name = "Catwoman left leg stripes"
|
||||
icon_state = "catwomanleft"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/teshi_small_feathers
|
||||
name = "Teshari small wingfeathers"
|
||||
icon_state = "teshi_sf"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_lights
|
||||
name = "Ward - Spirit FBP Lights"
|
||||
icon_state = "lights"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_lights_body
|
||||
name = "Ward - Spirit FBP Lights (body)"
|
||||
icon_state = "lights"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_lights_head
|
||||
name = "Ward - Spirit FBP Lights (head)"
|
||||
icon_state = "lights"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_panels
|
||||
name = "Ward - Spirit FBP Panels"
|
||||
icon_state = "panels"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_panels_body
|
||||
name = "Ward - Spirit FBP Panels (body)"
|
||||
icon_state = "panels"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/spirit_panels_head
|
||||
name = "Ward - Spirit FBP Panels (head)"
|
||||
icon_state = "panels"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/tentacle_head
|
||||
name = "Squid Head"
|
||||
icon_state = "tentaclehead"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/tentacle_mouth
|
||||
name = "Tentacle Mouth"
|
||||
icon_state = "tentaclemouth"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/rosette
|
||||
name = "Rosettes"
|
||||
icon_state = "rosette"
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD)
|
||||
/*
|
||||
werewolf_nose
|
||||
name = "Werewolf nose"
|
||||
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
|
||||
icon_state = "werewolf_nose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
species_allowed = list(SPECIES_WEREBEAST)
|
||||
|
||||
werewolf_face
|
||||
name = "Werewolf face"
|
||||
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
|
||||
icon_state = "werewolf"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
species_allowed = list(SPECIES_WEREBEAST)
|
||||
|
||||
werewolf_belly
|
||||
name = "Werewolf belly"
|
||||
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
|
||||
icon_state = "werewolf"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_GROIN,BP_TORSO)
|
||||
species_allowed = list(SPECIES_WEREBEAST)
|
||||
|
||||
werewolf_socks
|
||||
name = "Werewolf socks"
|
||||
icon = 'icons/mob/species/werebeast/werebeast_markings.dmi'
|
||||
icon_state = "werewolf"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
|
||||
species_allowed = list(SPECIES_WEREBEAST)
|
||||
|
||||
shadekin_snoot
|
||||
name = "Shadekin Snoot"
|
||||
icon_state = "shadekin-snoot"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
|
||||
*/
|
||||
/datum/sprite_accessory/marking/vr/taj_nose_alt
|
||||
name = "Nose Color, alt. (Taj)"
|
||||
icon_state = "taj_nosealt"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/talons
|
||||
name = "Talons"
|
||||
icon_state = "talons"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/claws
|
||||
name = "Claws"
|
||||
icon_state = "claws"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_HAND,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/equine_snout //Why the long face? Works best with sergal bodytype.
|
||||
name = "Equine Snout"
|
||||
icon_state = "donkey"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/vr/equine_nose
|
||||
name = "Equine Nose"
|
||||
icon_state = "dnose"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
939
code/modules/mob/new_player/sprite_accessories_tail.dm
Normal file
939
code/modules/mob/new_player/sprite_accessories_tail.dm
Normal file
@@ -0,0 +1,939 @@
|
||||
/*
|
||||
////////////////////////////
|
||||
/ =--------------------= /
|
||||
/ == Tail Definitions == /
|
||||
/ =--------------------= /
|
||||
////////////////////////////
|
||||
*/
|
||||
/datum/sprite_accessory/tail
|
||||
name = "You should not see this..."
|
||||
icon = 'icons/mob/human_races/sprite_accessories/tails.dmi'
|
||||
do_colouration = 0 //Set to 1 to enable coloration using the tail color.
|
||||
|
||||
color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
|
||||
var/extra_overlay // Icon state of an additional overlay to blend in.
|
||||
var/show_species_tail = 0 // If false, do not render species' tail.
|
||||
var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it
|
||||
var/desc = "You should not see this..."
|
||||
var/ani_state // State when wagging/animated
|
||||
var/extra_overlay_w // Wagging state for extra overlay
|
||||
var/list/hide_body_parts = list() //Uses organ tag defines. Bodyparts in this list do not have their icons rendered, allowing for more spriter freedom when doing taur/digitigrade stuff.
|
||||
var/icon/clip_mask_icon = null //Icon file used for clip mask.
|
||||
var/clip_mask_state = null //Icon state to generate clip mask. Clip mask is used to 'clip' off the lower part of clothing such as jumpsuits & full suits.
|
||||
var/icon/clip_mask = null //Instantiated clip mask of given icon and state
|
||||
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/New()
|
||||
. = ..()
|
||||
if(clip_mask_icon && clip_mask_state)
|
||||
clip_mask = icon(icon = clip_mask_icon, icon_state = clip_mask_state)
|
||||
|
||||
// Species-unique tails
|
||||
|
||||
// Everyone tails
|
||||
|
||||
/datum/sprite_accessory/tail/invisible
|
||||
name = "hide species-sprite tail"
|
||||
icon = null
|
||||
icon_state = null
|
||||
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_UNATHI, SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/squirrel_orange
|
||||
name = "squirel, orange"
|
||||
desc = ""
|
||||
icon_state = "squirrel-orange"
|
||||
|
||||
/datum/sprite_accessory/tail/squirrel_red
|
||||
name = "squirrel, red"
|
||||
desc = ""
|
||||
icon_state = "squirrel-red"
|
||||
|
||||
/datum/sprite_accessory/tail/squirrel
|
||||
name = "squirrel, colorable"
|
||||
desc = ""
|
||||
icon_state = "squirrel"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/kitty
|
||||
name = "kitty, colorable, downwards"
|
||||
desc = ""
|
||||
icon_state = "kittydown"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/kittyup
|
||||
name = "kitty, colorable, upwards"
|
||||
desc = ""
|
||||
icon_state = "kittyup"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/tiger_white
|
||||
name = "tiger, colorable"
|
||||
desc = ""
|
||||
icon_state = "tiger"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "tigerinnerwhite"
|
||||
|
||||
/datum/sprite_accessory/tail/stripey
|
||||
name = "stripey taj, colorable"
|
||||
desc = ""
|
||||
icon_state = "stripeytail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "stripeytail_mark"
|
||||
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/stripeytail_brown
|
||||
name = "stripey taj, brown"
|
||||
desc = ""
|
||||
icon_state = "stripeytail-brown"
|
||||
|
||||
/datum/sprite_accessory/tail/chameleon
|
||||
name = "Chameleon, colorable"
|
||||
desc = ""
|
||||
icon_state = "chameleon"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/bunny
|
||||
name = "bunny, colorable"
|
||||
desc = ""
|
||||
icon_state = "bunny"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/tail/bear_brown
|
||||
name = "bear, brown"
|
||||
desc = ""
|
||||
icon_state = "bear-brown"
|
||||
|
||||
/datum/sprite_accessory/tail/bear
|
||||
name = "bear, colorable"
|
||||
desc = ""
|
||||
icon_state = "bear"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/dragon
|
||||
name = "dragon, colorable"
|
||||
desc = ""
|
||||
icon_state = "dragon"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/wolf_grey
|
||||
name = "wolf, grey"
|
||||
desc = ""
|
||||
icon_state = "wolf-grey"
|
||||
|
||||
/datum/sprite_accessory/tail/wolf_green
|
||||
name = "wolf, green"
|
||||
desc = ""
|
||||
icon_state = "wolf-green"
|
||||
|
||||
/datum/sprite_accessory/tail/wisewolf
|
||||
name = "wolf, wise"
|
||||
desc = ""
|
||||
icon_state = "wolf-wise"
|
||||
|
||||
/datum/sprite_accessory/tail/blackwolf
|
||||
name = "wolf, black"
|
||||
desc = ""
|
||||
icon_state = "wolf"
|
||||
|
||||
/datum/sprite_accessory/tail/wolf
|
||||
name = "wolf, colorable"
|
||||
desc = ""
|
||||
icon_state = "wolf"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "wolfinner"
|
||||
|
||||
/datum/sprite_accessory/tail/mouse_pink
|
||||
name = "mouse, pink"
|
||||
desc = ""
|
||||
icon_state = "mouse-pink"
|
||||
|
||||
/datum/sprite_accessory/tail/mouse
|
||||
name = "mouse, colorable"
|
||||
desc = ""
|
||||
icon_state = "mouse"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/horse
|
||||
name = "horse tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "horse"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/cow
|
||||
name = "cow tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "cow"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/fantail
|
||||
name = "avian fantail, colorable"
|
||||
desc = ""
|
||||
icon_state = "fantail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/wagtail
|
||||
name = "avian wagtail, colorable"
|
||||
desc = ""
|
||||
icon_state = "wagtail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/nevreandc
|
||||
name = "nevrean tail, dual-color"
|
||||
desc = ""
|
||||
icon_state = "nevreantail_dc"
|
||||
extra_overlay = "nevreantail_dc_tail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/nevreanwagdc
|
||||
name = "nevrean wagtail, dual-color"
|
||||
desc = ""
|
||||
icon_state = "wagtail"
|
||||
extra_overlay = "wagtail_dc_tail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/nevreanwagdc_alt
|
||||
name = "nevrean wagtail, marked, dual-color"
|
||||
desc = ""
|
||||
icon_state = "wagtail2_dc"
|
||||
extra_overlay = "wagtail2_dc_mark"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/crossfox
|
||||
name = "cross fox"
|
||||
desc = ""
|
||||
icon_state = "crossfox"
|
||||
|
||||
/datum/sprite_accessory/tail/beethorax
|
||||
name = "bee thorax"
|
||||
desc = ""
|
||||
icon_state = "beethorax"
|
||||
|
||||
/datum/sprite_accessory/tail/doublekitsune
|
||||
name = "double kitsune tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "doublekitsune"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/spade_color
|
||||
name = "spade-tail (colorable)"
|
||||
desc = ""
|
||||
icon_state = "spadetail-black"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/tail/snag
|
||||
name = "xenomorph tail 1"
|
||||
desc = ""
|
||||
icon_state = "snag"
|
||||
|
||||
/datum/sprite_accessory/tail/xenotail
|
||||
name = "xenomorph tail 2"
|
||||
desc = ""
|
||||
icon_state = "xenotail"
|
||||
|
||||
/datum/sprite_accessory/tail/eboop
|
||||
name = "EGN mech tail (dual color)"
|
||||
desc = ""
|
||||
icon_state = "eboop"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "eboop_mark"
|
||||
|
||||
/datum/sprite_accessory/tail/ketrai_wag
|
||||
name = "fennix tail (vwag)"
|
||||
desc = ""
|
||||
icon_state = "ketraitail"
|
||||
ani_state = "ketraitail_w"
|
||||
//ckeys_allowed = list("ketrai") //They requested it to be enabled for everyone.
|
||||
|
||||
/datum/sprite_accessory/tail/ketrainew_wag
|
||||
name = "new fennix tail (vwag)"
|
||||
desc = ""
|
||||
icon_state = "ketraitailnew"
|
||||
ani_state = "ketraitailnew_w"
|
||||
|
||||
/datum/sprite_accessory/tail/redpanda
|
||||
name = "red panda"
|
||||
desc = ""
|
||||
icon_state = "redpanda"
|
||||
|
||||
/datum/sprite_accessory/tail/ringtail
|
||||
name = "ringtail, colorable"
|
||||
desc = ""
|
||||
icon_state = "ringtail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "ringtail_mark"
|
||||
|
||||
/datum/sprite_accessory/tail/satyr
|
||||
name = "goat legs, colorable"
|
||||
desc = ""
|
||||
icon_state = "satyr"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
do_colouration = 1
|
||||
hide_body_parts = list(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT) //Exclude pelvis just in case.
|
||||
clip_mask_icon = 'icons/mob/human_races/sprite_accessories/taurs.dmi'
|
||||
clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms.
|
||||
|
||||
/datum/sprite_accessory/tail/tailmaw
|
||||
name = "tailmaw, colorable"
|
||||
desc = ""
|
||||
icon_state = "tailmaw"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/tail/curltail
|
||||
name = "curltail (vwag)"
|
||||
desc = ""
|
||||
icon_state = "curltail"
|
||||
ani_state = "curltail_w"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "curltail_mark"
|
||||
extra_overlay_w = "curltail_mark_w"
|
||||
|
||||
/datum/sprite_accessory/tail/shorttail
|
||||
name = "shorttail (vwag)"
|
||||
desc = ""
|
||||
icon_state = "straighttail"
|
||||
ani_state = "straighttail_w"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/sneptail
|
||||
name = "Snep/Furry Tail (vwag)"
|
||||
desc = ""
|
||||
icon_state = "sneptail"
|
||||
ani_state = "sneptail_w"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "sneptail_mark"
|
||||
extra_overlay_w = "sneptail_mark_w"
|
||||
|
||||
|
||||
/datum/sprite_accessory/tail/tiger_new
|
||||
name = "tiger tail (vwag)"
|
||||
desc = ""
|
||||
icon_state = "tigertail"
|
||||
ani_state = "tigertail_w"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "tigertail_mark"
|
||||
extra_overlay_w = "tigertail_mark_w"
|
||||
|
||||
/datum/sprite_accessory/tail/vulp_new
|
||||
name = "new vulp tail (vwag)"
|
||||
desc = ""
|
||||
icon_state = "vulptail"
|
||||
ani_state = "vulptail_w"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "vulptail_mark"
|
||||
extra_overlay_w = "vulptail_mark_w"
|
||||
|
||||
/datum/sprite_accessory/tail/otietail
|
||||
name = "otie tail (vwag)"
|
||||
desc = ""
|
||||
icon_state = "otie"
|
||||
ani_state = "otie_w"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/newtailmaw
|
||||
name = "new tailmaw (vwag)"
|
||||
desc = ""
|
||||
icon_state = "newtailmaw"
|
||||
ani_state = "newtailmaw_w"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/ztail
|
||||
name = "jagged flufftail"
|
||||
desc = ""
|
||||
icon_state = "ztail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/snaketail
|
||||
name = "snake tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "snaketail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/vulpan_alt
|
||||
name = "vulpkanin alt style, colorable"
|
||||
desc = ""
|
||||
icon_state = "vulptail_alt"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/sergaltaildc
|
||||
name = "sergal, dual-color"
|
||||
desc = ""
|
||||
icon_state = "sergal"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "sergal_mark"
|
||||
|
||||
/datum/sprite_accessory/tail/skunktail
|
||||
name = "skunk, dual-color"
|
||||
desc = ""
|
||||
icon_state = "skunktail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "skunktail_mark"
|
||||
|
||||
/datum/sprite_accessory/tail/deertail
|
||||
name = "deer, dual-color"
|
||||
desc = ""
|
||||
icon_state = "deertail"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "deertail_mark"
|
||||
|
||||
/datum/sprite_accessory/tail/teshari_fluffytail
|
||||
name = "Teshari alternative, colorable"
|
||||
desc = ""
|
||||
icon_state = "teshari_fluffytail"
|
||||
extra_overlay = "teshari_fluffytail_mark"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/nightstalker
|
||||
name = "Nightstalker, colorable"
|
||||
desc = ""
|
||||
icon_state = "nightstalker"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
//For all species tails. Includes haircolored tails.
|
||||
/datum/sprite_accessory/tail/special
|
||||
name = "Blank tail. Do not select."
|
||||
icon = 'icons/effects/species_tails.dmi'
|
||||
|
||||
/datum/sprite_accessory/tail/special/unathi
|
||||
name = "unathi tail"
|
||||
desc = ""
|
||||
icon_state = "sogtail_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/tajaran
|
||||
name = "tajaran tail"
|
||||
desc = ""
|
||||
icon_state = "tajtail_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/sergal
|
||||
name = "sergal tail"
|
||||
desc = ""
|
||||
icon_state = "sergtail_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/special/akula
|
||||
name = "akula tail"
|
||||
desc = ""
|
||||
icon_state = "sharktail_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/special/nevrean
|
||||
name = "nevrean tail"
|
||||
desc = ""
|
||||
icon_state = "nevreantail_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/special/armalis
|
||||
name = "armalis tail"
|
||||
desc = ""
|
||||
icon_state = "armalis_tail_humanoid_s"
|
||||
|
||||
/datum/sprite_accessory/tail/special/xenodrone
|
||||
name = "xenomorph drone tail"
|
||||
desc = ""
|
||||
icon_state = "xenos_drone_tail_s"
|
||||
|
||||
/datum/sprite_accessory/tail/special/xenosentinel
|
||||
name = "xenomorph sentinel tail"
|
||||
desc = ""
|
||||
icon_state = "xenos_sentinel_tail_s"
|
||||
|
||||
/datum/sprite_accessory/tail/special/xenohunter
|
||||
name = "xenomorph hunter tail"
|
||||
desc = ""
|
||||
icon_state = "xenos_hunter_tail_s"
|
||||
|
||||
/datum/sprite_accessory/tail/special/xenoqueen
|
||||
name = "xenomorph queen tail"
|
||||
desc = ""
|
||||
icon_state = "xenos_queen_tail_s"
|
||||
|
||||
/datum/sprite_accessory/tail/special/monkey
|
||||
name = "monkey tail"
|
||||
desc = ""
|
||||
icon_state = "chimptail_s"
|
||||
|
||||
/datum/sprite_accessory/tail/special/seromitail
|
||||
name = "seromi tail"
|
||||
desc = ""
|
||||
icon_state = "seromitail_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/seromitailfeathered
|
||||
name = "seromi tail w/ feathers"
|
||||
desc = ""
|
||||
icon_state = "seromitail_s"
|
||||
extra_overlay = "seromitail_feathers_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/unathihc
|
||||
name = "unathi tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "sogtail_hc_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/tajaranhc
|
||||
name = "tajaran tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "tajtail_hc_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/sergalhc
|
||||
name = "sergal tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "sergtail_hc_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/special/akulahc
|
||||
name = "akula tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "sharktail_hc_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/special/nevreanhc
|
||||
name = "nevrean tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "nevreantail_hc_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/special/foxhc
|
||||
name = "highlander zorren tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "foxtail_hc_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/special/fennechc
|
||||
name = "flatland zorren tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "fentail_hc_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/special/armalishc
|
||||
name = "armalis tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "armalis_tail_humanoid_hc_s"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/tail/special/xenodronehc
|
||||
name = "xenomorph drone tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "xenos_drone_tail_hc_s"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/tail/special/xenosentinelhc
|
||||
name = "xenomorph sentinel tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "xenos_sentinel_tail_hc_s"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/tail/special/xenohunterhc
|
||||
name = "xenomorph hunter tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "xenos_hunter_tail_hc_s"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/tail/special/xenoqueenhc
|
||||
name = "xenomorph queen tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "xenos_queen_tail_hc_s"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/tail/special/monkeyhc
|
||||
name = "monkey tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "chimptail_hc_s"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/tail/special/seromitailhc
|
||||
name = "seromi tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "seromitail_hc_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/special/seromitailfeatheredhc
|
||||
name = "seromi tail w/ feathers, colorable"
|
||||
desc = ""
|
||||
icon_state = "seromitail_feathers_hc_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/special/vulpan
|
||||
name = "vulpkanin, colorable"
|
||||
desc = ""
|
||||
icon_state = "vulptail_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
|
||||
/datum/sprite_accessory/tail/zenghu_taj
|
||||
name = "Zeng-Hu Tajaran Synth tail"
|
||||
desc = ""
|
||||
icon_state = "zenghu_taj"
|
||||
|
||||
//Taurs moved to a separate file due to extra code around them
|
||||
|
||||
//Buggo Abdomens!
|
||||
|
||||
/datum/sprite_accessory/tail/buggo
|
||||
name = "Bug abdomen, colorable"
|
||||
desc = ""
|
||||
icon_state = "buggo_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/buggobee
|
||||
name = "Bug abdomen, bee top, dual-colorable"
|
||||
desc = ""
|
||||
icon_state = "buggo_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggobee_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggobeefull
|
||||
name = "Bug abdomen, bee full, dual-colorable"
|
||||
desc = ""
|
||||
icon_state = "buggo_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggobeefull_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggounder
|
||||
name = "Bug abdomen, underside, dual-colorable"
|
||||
desc = ""
|
||||
icon_state = "buggo_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggounder_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggofirefly
|
||||
name = "Bug abdomen, firefly, dual-colorable"
|
||||
desc = ""
|
||||
icon_state = "buggo_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofirefly_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggofat
|
||||
name = "Fat bug abdomen, colorable"
|
||||
desc = ""
|
||||
icon_state = "buggofat_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/buggofatbee
|
||||
name = "Fat bug abdomen, bee top, dual-colorable"
|
||||
desc = ""
|
||||
icon_state = "buggofat_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofatbee_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggofatbeefull
|
||||
name = "Fat bug abdomen, bee full, dual-colorable"
|
||||
desc = ""
|
||||
icon_state = "buggofat_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofatbeefull_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggofatunder
|
||||
name = "Fat bug abdomen, underside, dual-colorable"
|
||||
desc = ""
|
||||
icon_state = "buggofat_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofatunder_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggofatfirefly
|
||||
name = "Fat bug abdomen, firefly, dual-colorable"
|
||||
desc = ""
|
||||
icon_state = "buggofat_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofatfirefly_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggowag
|
||||
name = "Bug abdomen, colorable, vwag change"
|
||||
desc = ""
|
||||
icon_state = "buggo_s"
|
||||
ani_state = "buggofat_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/buggobeewag
|
||||
name = "Bug abdomen, bee top, dual color, vwag"
|
||||
desc = ""
|
||||
icon_state = "buggo_s"
|
||||
ani_state = "buggofat_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggobee_markings"
|
||||
extra_overlay_w = "buggofatbee_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggobeefullwag
|
||||
name = "Bug abdomen, bee full, dual color, vwag"
|
||||
desc = ""
|
||||
icon_state = "buggo_s"
|
||||
ani_state = "buggofat_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggobeefull_markings"
|
||||
extra_overlay_w = "buggofatbeefull_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggounderwag
|
||||
name = "Bug abdomen, underside, dual color, vwag"
|
||||
desc = ""
|
||||
icon_state = "buggo_s"
|
||||
ani_state = "buggofat_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggounder_markings"
|
||||
extra_overlay_w = "buggofatunder_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggofireflywag
|
||||
name = "Bug abdomen, firefly, dual color, vwag"
|
||||
desc = ""
|
||||
icon_state = "buggo_s"
|
||||
ani_state = "buggofat_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofirefly_markings"
|
||||
extra_overlay_w = "buggofatfirefly_markings"
|
||||
|
||||
//Vass buggo variants!
|
||||
|
||||
/datum/sprite_accessory/tail/buggovass
|
||||
name = "Bug abdomen, vass, colorable"
|
||||
desc = ""
|
||||
icon_state = "buggo_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassbee
|
||||
name = "Bug abdomen, bee top, dc, vass"
|
||||
desc = ""
|
||||
icon_state = "buggo_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggobee_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassbeefull
|
||||
name = "Bug abdomen, bee full, dc, vass"
|
||||
desc = ""
|
||||
icon_state = "buggo_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggobeefull_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassunder
|
||||
name = "Bug abdomen, underside, dc, vass"
|
||||
desc = ""
|
||||
icon_state = "buggo_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggounder_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassfirefly
|
||||
name = "Bug abdomen, firefly, dc, vass"
|
||||
desc = ""
|
||||
icon_state = "buggo_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofirefly_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassfat
|
||||
name = "Fat bug abdomen, vass, colorable"
|
||||
desc = ""
|
||||
icon_state = "buggofat_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassfatbee
|
||||
name = "Fat bug abdomen, bee top, dc, vass"
|
||||
desc = ""
|
||||
icon_state = "buggofat_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofatbee_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassfatbeefull
|
||||
name = "Fat bug abdomen, bee full, dc, vass"
|
||||
desc = ""
|
||||
icon_state = "buggofat_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofatbeefull_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassfatunder
|
||||
name = "Fat bug abdomen, underside, dc, vass"
|
||||
desc = ""
|
||||
icon_state = "buggofat_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofatunder_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassfatfirefly
|
||||
name = "Fat bug abdomen, firefly, dc, vass"
|
||||
desc = ""
|
||||
icon_state = "buggofat_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofatfirefly_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovasswag
|
||||
name = "Bug abdomen, vass, colorable, vwag change"
|
||||
desc = ""
|
||||
icon_state = "buggo_vass_s"
|
||||
ani_state = "buggofat_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassbeewag
|
||||
name = "Bug abdomen, bee top, dc, vass, vwag"
|
||||
desc = ""
|
||||
icon_state = "buggo_vass_s"
|
||||
ani_state = "buggofat_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggobee_vass_markings"
|
||||
extra_overlay_w = "buggofatbee_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassbeefullwag
|
||||
name = "Bug abdomen, bee full, dc, vass, vwag"
|
||||
desc = ""
|
||||
icon_state = "buggo_vass_s"
|
||||
ani_state = "buggofat_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggobeefull_vass_markings"
|
||||
extra_overlay_w = "buggofatbeefull_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassunderwag
|
||||
name = "Bug abdomen, underside, dc, vass, vwag"
|
||||
desc = ""
|
||||
icon_state = "buggo_vass_s"
|
||||
ani_state = "buggofat_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggounder_vass_markings"
|
||||
extra_overlay_w = "buggofatunder_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/buggovassfireflywag
|
||||
name = "Bug abdomen, firefly, dc, vass, vwag"
|
||||
desc = ""
|
||||
icon_state = "buggo_vass_s"
|
||||
ani_state = "buggofat_vass_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "buggofirefly_vass_markings"
|
||||
extra_overlay_w = "buggofatfirefly_vass_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/tail_smooth
|
||||
name = "Smooth Lizard Tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "tail_smooth"
|
||||
ani_state = "tail_smooth_w"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/triplekitsune_colorable
|
||||
name = "Kitsune 3 tails, colorable"
|
||||
desc = ""
|
||||
icon_state = "triplekitsune"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "triplekitsune_tips"
|
||||
|
||||
/datum/sprite_accessory/tail/ninekitsune_colorable
|
||||
name = "Kitsune 9 tails, colorable"
|
||||
desc = ""
|
||||
icon_state = "ninekitsune"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "ninekitsune-tips"
|
||||
|
||||
/datum/sprite_accessory/tail/shadekin_short
|
||||
name = "Shadekin Short Tail, colorable"
|
||||
desc = ""
|
||||
icon_state = "shadekin-short"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
//apply_restrictions = TRUE
|
||||
//species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
|
||||
|
||||
/datum/sprite_accessory/tail/wartacosushi_tail //brightened +20RGB from matching roboparts
|
||||
name = "Ward-Takahashi Tail"
|
||||
desc = ""
|
||||
icon_state = "wardtakahashi_vulp"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/wartacosushi_tail_dc
|
||||
name = "Ward-Takahashi Tail, dual-color"
|
||||
desc = ""
|
||||
icon_state = "wardtakahashi_vulp_dc"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "wardtakahashi_vulp_dc_mark"
|
||||
349
code/modules/mob/new_player/sprite_accessories_taur.dm
Normal file
349
code/modules/mob/new_player/sprite_accessories_taur.dm
Normal file
@@ -0,0 +1,349 @@
|
||||
/datum/riding/taur
|
||||
keytype = /obj/item/weapon/material/twohanded/riding_crop // Crack!
|
||||
nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs.
|
||||
key_name = "a riding crop" // What the 'keys' for the thing being rided on would be called.
|
||||
only_one_driver = TRUE // If true, only the person in 'front' (first on list of riding mobs) can drive.
|
||||
|
||||
/datum/riding/taur/handle_vehicle_layer()
|
||||
if(ridden.has_buckled_mobs())
|
||||
ridden.layer = initial(ridden.layer)
|
||||
else
|
||||
var/mob/living/L = ridden
|
||||
if(!(istype(L) && (L.status_flags & HIDING)))
|
||||
ridden.layer = initial(ridden.layer)
|
||||
|
||||
/datum/riding/taur/ride_check(mob/living/M)
|
||||
var/mob/living/L = ridden
|
||||
if(L.stat)
|
||||
force_dismount(M)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/riding/taur/force_dismount(mob/M)
|
||||
. = ..()
|
||||
ridden.visible_message("<span class='notice'>[M] stops riding [ridden]!</span>")
|
||||
|
||||
//Hoooo boy.
|
||||
/datum/riding/taur/get_offsets(pass_index) // list(dir = x, y, layer)
|
||||
var/mob/living/L = ridden
|
||||
var/scale_x = L.icon_scale_x
|
||||
var/scale_y = L.icon_scale_y
|
||||
|
||||
var/list/values = list(
|
||||
"[NORTH]" = list(0, 8*scale_y, ABOVE_MOB_LAYER),
|
||||
"[SOUTH]" = list(0, 8*scale_y, BELOW_MOB_LAYER),
|
||||
"[EAST]" = list(-10*scale_x, 8*scale_y, ABOVE_MOB_LAYER),
|
||||
"[WEST]" = list(10*scale_x, 8*scale_y, ABOVE_MOB_LAYER))
|
||||
|
||||
return values
|
||||
|
||||
//Human overrides for taur riding
|
||||
/mob/living/carbon/human
|
||||
max_buckled_mobs = 1 //Yeehaw
|
||||
can_buckle = TRUE
|
||||
buckle_movable = TRUE
|
||||
buckle_lying = FALSE
|
||||
|
||||
/mob/living/carbon/human/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE)
|
||||
if(forced)
|
||||
return ..() // Skip our checks
|
||||
if(!isTaurTail(tail_style))
|
||||
return FALSE
|
||||
else
|
||||
var/datum/sprite_accessory/tail/taur/taurtype = tail_style
|
||||
if(!taurtype.can_ride)
|
||||
return FALSE
|
||||
if(lying)
|
||||
return FALSE
|
||||
if(!ishuman(M))
|
||||
return FALSE
|
||||
if(M in buckled_mobs)
|
||||
return FALSE
|
||||
// if(M.size_multiplier > size_multiplier * 1.2)
|
||||
// to_chat(M,"<span class='warning'>This isn't a pony show! You need to be bigger for them to ride.</span>")
|
||||
// return FALSE
|
||||
if(M.loc != src.loc)
|
||||
if(M.Adjacent(src))
|
||||
M.forceMove(get_turf(src))
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if(isTaurTail(H.tail_style))
|
||||
to_chat(src,"<span class='warning'>Too many legs. TOO MANY LEGS!!</span>")
|
||||
return FALSE
|
||||
|
||||
. = ..()
|
||||
if(.)
|
||||
buckled_mobs[M] = "riding"
|
||||
|
||||
/mob/living/carbon/human/MouseDrop_T(mob/living/M, mob/living/user) //Prevention for forced relocation caused by can_buckle. Base proc has no other use.
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/taur_mount(var/mob/living/M in living_mobs(1))
|
||||
set name = "Taur Mount/Dismount"
|
||||
set category = "Abilities"
|
||||
set desc = "Let people ride on you."
|
||||
|
||||
if(LAZYLEN(buckled_mobs))
|
||||
var/datum/riding/R = riding_datum
|
||||
for(var/rider in buckled_mobs)
|
||||
R.force_dismount(rider)
|
||||
return
|
||||
if (stat != CONSCIOUS)
|
||||
return
|
||||
if(!can_buckle || !istype(M) || !M.Adjacent(src) || M.buckled)
|
||||
return
|
||||
if(buckle_mob(M))
|
||||
visible_message("<span class='notice'>[M] starts riding [name]!</span>")
|
||||
|
||||
/mob/living/carbon/human/attack_hand(mob/user as mob)
|
||||
if(LAZYLEN(buckled_mobs))
|
||||
//We're getting off!
|
||||
if(user in buckled_mobs)
|
||||
riding_datum.force_dismount(user)
|
||||
//We're kicking everyone off!
|
||||
if(user == src)
|
||||
for(var/rider in buckled_mobs)
|
||||
riding_datum.force_dismount(rider)
|
||||
else
|
||||
. = ..()
|
||||
|
||||
/*
|
||||
////////////////////////////
|
||||
/ =--------------------= /
|
||||
/ == Taur Definitions == /
|
||||
/ =--------------------= /
|
||||
////////////////////////////
|
||||
*/
|
||||
|
||||
// Taur sprites are now a subtype of tail since they are mutually exclusive anyway.
|
||||
|
||||
/datum/sprite_accessory/tail/taur
|
||||
name = "You should not see this..."
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs.dmi'
|
||||
do_colouration = 1 // Yes color, using tail color
|
||||
color_blend_mode = ICON_MULTIPLY // The sprites for taurs are designed for ICON_MULTIPLY
|
||||
|
||||
var/icon/suit_sprites = null //File for suit sprites, if any.
|
||||
var/icon/under_sprites = null
|
||||
|
||||
var/icon_sprite_tag // This is where we put stuff like _Horse, so we can assign icons easier.
|
||||
|
||||
var/can_ride = FALSE //whether we're real rideable taur or just in that category.
|
||||
|
||||
hide_body_parts = list(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT) //Exclude pelvis just in case.
|
||||
clip_mask_icon = 'icons/mob/human_races/sprite_accessories/taurs.dmi'
|
||||
clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms.
|
||||
|
||||
// Species-unique long tails/taurhalves
|
||||
|
||||
// Tails/taurhalves for everyone
|
||||
|
||||
/datum/sprite_accessory/tail/taur/wolf
|
||||
name = "Wolf (Taur)"
|
||||
icon_state = "wolf_s"
|
||||
under_sprites = 'icons/mob/taursuits_wolf.dmi'
|
||||
suit_sprites = 'icons/mob/taursuits_wolf.dmi'
|
||||
icon_sprite_tag = "wolf"
|
||||
|
||||
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
|
||||
/datum/sprite_accessory/tail/taur/fatwolf
|
||||
name = "Fat Wolf (Taur)"
|
||||
icon_state = "fatwolf_s"
|
||||
icon_sprite_tag = "wolf" //This could be modified later.
|
||||
|
||||
/datum/sprite_accessory/tail/taur/wolf/wolf_2c
|
||||
name = "Wolf dual-color (Taur)"
|
||||
icon_state = "wolf_s"
|
||||
extra_overlay = "wolf_markings"
|
||||
//icon_sprite_tag = "wolf2c"
|
||||
|
||||
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
|
||||
/datum/sprite_accessory/tail/taur/wolf/fatwolf_2c
|
||||
name = "Fat Wolf dual-color (Taur)"
|
||||
icon_state = "fatwolf_s"
|
||||
extra_overlay = "fatwolf_markings"
|
||||
//icon_sprite_tag = "fatwolf2c"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/wolf/synthwolf
|
||||
name = "SynthWolf dual-color (Taur)"
|
||||
icon_state = "synthwolf_s"
|
||||
extra_overlay = "synthwolf_markings"
|
||||
//icon_sprite_tag = "synthwolf"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/naga
|
||||
name = "Naga (Taur)"
|
||||
icon_state = "naga_s"
|
||||
suit_sprites = 'icons/mob/taursuits_naga.dmi'
|
||||
//icon_sprite_tag = "naga"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/naga/naga_2c
|
||||
name = "Naga dual-color (Taur)"
|
||||
icon_state = "naga_s"
|
||||
extra_overlay = "naga_markings"
|
||||
//icon_sprite_tag = "naga2c"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/horse
|
||||
name = "Horse (Taur)"
|
||||
icon_state = "horse_s"
|
||||
under_sprites = 'icons/mob/taursuits_horse.dmi'
|
||||
suit_sprites = 'icons/mob/taursuits_horse.dmi'
|
||||
icon_sprite_tag = "horse"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/horse/synthhorse
|
||||
name = "SynthHorse dual-color (Taur)"
|
||||
icon_state = "synthhorse_s"
|
||||
extra_overlay = "synthhorse_markings"
|
||||
//icon_sprite_tag = "synthhorse"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/cow
|
||||
name = "Cow (Taur)"
|
||||
icon_state = "cow_s"
|
||||
suit_sprites = 'icons/mob/taursuits_cow.dmi'
|
||||
icon_sprite_tag = "cow"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/deer
|
||||
name = "Deer dual-color (Taur)"
|
||||
icon_state = "deer_s"
|
||||
extra_overlay = "deer_markings"
|
||||
suit_sprites = 'icons/mob/taursuits_deer.dmi'
|
||||
icon_sprite_tag = "deer"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/lizard
|
||||
name = "Lizard (Taur)"
|
||||
icon_state = "lizard_s"
|
||||
suit_sprites = 'icons/mob/taursuits_lizard.dmi'
|
||||
icon_sprite_tag = "lizard"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/lizard/lizard_2c
|
||||
name = "Lizard dual-color (Taur)"
|
||||
icon_state = "lizard_s"
|
||||
extra_overlay = "lizard_markings"
|
||||
//icon_sprite_tag = "lizard2c"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/lizard/synthlizard
|
||||
name = "SynthLizard dual-color (Taur)"
|
||||
icon_state = "synthlizard_s"
|
||||
extra_overlay = "synthlizard_markings"
|
||||
//icon_sprite_tag = "synthlizard"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/spider
|
||||
name = "Spider (Taur)"
|
||||
icon_state = "spider_s"
|
||||
suit_sprites = 'icons/mob/taursuits_spider.dmi'
|
||||
icon_sprite_tag = "spider"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/tents
|
||||
name = "Tentacles (Taur)"
|
||||
icon_state = "tent_s"
|
||||
icon_sprite_tag = "tentacle"
|
||||
can_ride = 0
|
||||
|
||||
/datum/sprite_accessory/tail/taur/feline
|
||||
name = "Feline (Taur)"
|
||||
icon_state = "feline_s"
|
||||
suit_sprites = 'icons/mob/taursuits_feline.dmi'
|
||||
icon_sprite_tag = "feline"
|
||||
|
||||
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
|
||||
/datum/sprite_accessory/tail/taur/fatfeline
|
||||
name = "Fat Feline (Taur)"
|
||||
icon_state = "fatfeline_s"
|
||||
//icon_sprite_tag = "fatfeline"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/fatfeline_wag
|
||||
name = "Fat Feline (Taur) (vwag)"
|
||||
icon_state = "fatfeline_s"
|
||||
ani_state = "fatfeline_w"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/feline/feline_2c
|
||||
name = "Feline dual-color (Taur)"
|
||||
icon_state = "feline_s"
|
||||
extra_overlay = "feline_markings"
|
||||
//icon_sprite_tag = "feline2c"
|
||||
|
||||
//TFF 22/11/19 - CHOMPStation port of fat taur sprites
|
||||
/datum/sprite_accessory/tail/taur/feline/fatfeline_2c
|
||||
name = "Fat Feline dual-color (Taur)"
|
||||
icon_state = "fatfeline_s"
|
||||
extra_overlay = "fatfeline_markings"
|
||||
//icon_sprite_tag = "fatfeline2c"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/feline/synthfeline
|
||||
name = "SynthFeline dual-color (Taur)"
|
||||
icon_state = "synthfeline_s"
|
||||
extra_overlay = "synthfeline_markings"
|
||||
//icon_sprite_tag = "synthfeline"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/slug
|
||||
name = "Slug (Taur)"
|
||||
icon_state = "slug_s"
|
||||
suit_sprites = 'icons/mob/taursuits_slug.dmi'
|
||||
icon_sprite_tag = "slug"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/frog
|
||||
name = "Frog (Taur)"
|
||||
icon_state = "frog_s"
|
||||
icon_sprite_tag = "frog"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/thicktentacles
|
||||
name = "Thick Tentacles (Taur)"
|
||||
icon_state = "tentacle_s"
|
||||
can_ride = 0
|
||||
icon_sprite_tag = "thick_tentacles"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/drake //Enabling on request, no suit compatibility but then again see 2 above.
|
||||
name = "Drake (Taur)"
|
||||
icon_state = "drake_s"
|
||||
extra_overlay = "drake_markings"
|
||||
suit_sprites = 'icons/mob/taursuits_drake.dmi'
|
||||
icon_sprite_tag = "drake"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/otie
|
||||
name = "Otie (Taur)"
|
||||
icon_state = "otie_s"
|
||||
extra_overlay = "otie_markings"
|
||||
suit_sprites = 'icons/mob/taursuits_otie.dmi'
|
||||
icon_sprite_tag = "otie"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/alraune/alraune_2c
|
||||
name = "Alraune (dual color)"
|
||||
icon_state = "alraunecolor_s"
|
||||
ani_state = "alraunecolor_closed_s"
|
||||
ckeys_allowed = null
|
||||
do_colouration = 1
|
||||
extra_overlay = "alraunecolor_markings"
|
||||
extra_overlay_w = "alraunecolor_closed_markings"
|
||||
clip_mask_state = "taur_clip_mask_alraune"
|
||||
icon_sprite_tag = "alraune"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/wasp
|
||||
name = "Wasp (dual color)"
|
||||
icon_state = "wasp_s"
|
||||
extra_overlay = "wasp_markings"
|
||||
clip_mask_state = "taur_clip_mask_wasp"
|
||||
icon_sprite_tag = "wasp"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/mermaid
|
||||
name = "Mermaid (Taur)"
|
||||
icon_state = "mermaid_s"
|
||||
can_ride = 0
|
||||
icon_sprite_tag = "mermaid"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/shadekin_tail
|
||||
name = "Shadekin Tail"
|
||||
icon_state = "shadekin_s"
|
||||
can_ride = 0
|
||||
hide_body_parts = null
|
||||
clip_mask_icon = null
|
||||
clip_mask_state = null
|
||||
//apply_restrictions = TRUE
|
||||
//species_allowed = list(SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
|
||||
|
||||
/datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_2c
|
||||
name = "Shadekin Tail (dual color)"
|
||||
extra_overlay = "shadekin_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_long
|
||||
name = "Shadekin Long Tail"
|
||||
icon_state = "shadekin_long_s"
|
||||
150
code/modules/mob/new_player/sprite_accessories_wing.dm
Normal file
150
code/modules/mob/new_player/sprite_accessories_wing.dm
Normal file
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
////////////////////////////
|
||||
/ =--------------------= /
|
||||
/ == Wing Definitions == /
|
||||
/ =--------------------= /
|
||||
////////////////////////////
|
||||
*/
|
||||
/datum/sprite_accessory/wing
|
||||
name = "You should not see this..."
|
||||
icon = 'icons/mob/human_races/sprite_accessories/wings.dmi'
|
||||
do_colouration = 0 //Set to 1 to enable coloration using the tail color.
|
||||
|
||||
color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
|
||||
var/extra_overlay // Icon state of an additional overlay to blend in.
|
||||
var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it. If the clothing is bulky enough to hide a tail, it should also hide wings.
|
||||
// var/show_species_tail = 1 // Just so // TODO - Seems not needed ~Leshana
|
||||
var/desc = "You should not see this..."
|
||||
var/ani_state // State when flapping/animated
|
||||
var/extra_overlay_w // Flapping state for extra overlay
|
||||
|
||||
species_allowed = list(SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/wing/featheredlarge //Made by Natje!
|
||||
name = "large feathered wings (colorable)"
|
||||
desc = ""
|
||||
icon_state = "feathered2"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/spider_legs //Not really /WINGS/ but they protrude from the back, kinda. Might as well have them here.
|
||||
name = "spider legs"
|
||||
desc = ""
|
||||
icon_state = "spider-legs"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/moth
|
||||
name = "moth wings"
|
||||
desc = ""
|
||||
icon_state = "moth"
|
||||
|
||||
/datum/sprite_accessory/wing/mothc
|
||||
name = "moth wings, colorable"
|
||||
desc = ""
|
||||
icon_state = "moth"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/dragonfly
|
||||
name = "dragonfly"
|
||||
desc = ""
|
||||
icon_state = "dragonfly"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/feathered
|
||||
name = "feathered wings, colorable"
|
||||
desc = ""
|
||||
icon_state = "feathered"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/feathered_medium
|
||||
name = "medium feathered wings, colorable" // Keekenox made these feathery things with a little bit more shape to them than the other wings. They are medium sized wing boys.
|
||||
desc = ""
|
||||
icon_state = "feathered3"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/bat_black
|
||||
name = "bat wings, black"
|
||||
desc = ""
|
||||
icon_state = "bat-black"
|
||||
|
||||
/datum/sprite_accessory/wing/bat_color
|
||||
name = "bat wings, colorable"
|
||||
desc = ""
|
||||
icon_state = "bat-color"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/wing/bat_red
|
||||
name = "bat wings, red"
|
||||
desc = ""
|
||||
icon_state = "bat-red"
|
||||
|
||||
/datum/sprite_accessory/wing/harpywings
|
||||
name = "harpy wings, colorable"
|
||||
desc = ""
|
||||
icon_state = "harpywings"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/feathered
|
||||
name = "feathered wings, colorable"
|
||||
desc = ""
|
||||
icon_state = "feathered"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/beewings
|
||||
name = "bee wings"
|
||||
desc = ""
|
||||
icon_state = "beewings"
|
||||
|
||||
/datum/sprite_accessory/wing/liquidfirefly_gazer //I g-guess this could be considered wings?
|
||||
name = "gazer eyestalks"
|
||||
desc = ""
|
||||
icon_state = "liquidfirefly-eyestalks"
|
||||
//ckeys_allowed = list("liquidfirefly","seiga") //At request.
|
||||
|
||||
/datum/sprite_accessory/wing/moth_full
|
||||
name = "moth antenna and wings"
|
||||
desc = ""
|
||||
icon_state = "moth_full"
|
||||
|
||||
/datum/sprite_accessory/wing/moth_full_gray
|
||||
name = "moth antenna and wings, colorable"
|
||||
desc = ""
|
||||
icon_state = "moth_full_gray"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/snag
|
||||
name = "xenomorph backplate"
|
||||
desc = ""
|
||||
icon_state = "snag-backplate"
|
||||
|
||||
/datum/sprite_accessory/wing/sepulchre_c_yw
|
||||
name = "demon wings (colorable)"
|
||||
desc = ""
|
||||
icon_state = "sepulchre_wingsc"
|
||||
do_colouration = 1
|
||||
|
||||
/datum/sprite_accessory/wing/cyberdragon
|
||||
name = "Cyber dragon wing (colorable)"
|
||||
desc = ""
|
||||
icon_state = "cyberdragon_s"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/wing/cyberdragon_red
|
||||
name = "Cyber dragon wing (red)"
|
||||
desc = ""
|
||||
icon_state = "cyberdragon_red_s"
|
||||
do_colouration = 0
|
||||
|
||||
/datum/sprite_accessory/wing/cyberdoe
|
||||
name = "Cyber doe wing"
|
||||
desc = ""
|
||||
icon_state = "cyberdoe_s"
|
||||
do_colouration = 0
|
||||
Reference in New Issue
Block a user