mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-31 09:09:49 +01:00
Merge master into reforming.
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
/mob/living/carbon/human/update_fullness()
|
||||
var/previous_stomach_fullness = vore_fullness_ex["stomach"]
|
||||
var/previous_taur_fullness = vore_fullness_ex["taur belly"]
|
||||
//update_vore_tail_sprite()
|
||||
//update_vore_belly_sprite()
|
||||
. = ..()
|
||||
if(vore_fullness_ex["stomach"] != previous_stomach_fullness)
|
||||
update_vore_belly_sprite()
|
||||
if(vore_fullness_ex["taur belly"] != previous_taur_fullness)
|
||||
update_vore_tail_sprite()
|
||||
|
||||
/mob/living/carbon/human/vs_animate(var/belly_to_animate)
|
||||
if(belly_to_animate == "stomach")
|
||||
vore_belly_animation()
|
||||
else if(belly_to_animate == "taur belly")
|
||||
vore_tail_animation()
|
||||
else
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/verb/hide_headset()
|
||||
set name = "Show/Hide Headset"
|
||||
set category = "IC"
|
||||
set desc = "Toggle headset worn icon visibility."
|
||||
hide_headset = !hide_headset
|
||||
update_inv_ears()
|
||||
@@ -0,0 +1,12 @@
|
||||
/mob/living/carbon/human
|
||||
var/gender_change_cooldown = 0 // A cooldown for gender and gender indentify changing procs to make it easy to avoid spam of gender change
|
||||
var/loneliness_stage = 0
|
||||
var/next_loneliness_time = 0
|
||||
var/digitigrade = 0 // 0 = no digi, 1 = default, 2+ = digi styles... (Not used yet)
|
||||
vore_capacity = 3
|
||||
vore_capacity_ex = list("stomach" = 3, "taur belly" = 3)
|
||||
vore_fullness_ex = list("stomach" = 0, "taur belly" = 0)
|
||||
vore_icon_bellies = list("stomach", "taur belly")
|
||||
var/struggle_anim_stomach = FALSE
|
||||
var/struggle_anim_taur = FALSE
|
||||
var/hide_headset = FALSE
|
||||
@@ -1,2 +1,30 @@
|
||||
/datum/species
|
||||
var/crit_mod = 1
|
||||
/datum/species
|
||||
var/crit_mod = 1
|
||||
var/vore_belly_default_variant = "H"
|
||||
|
||||
// Handles non-standard eyes when using a species that utilizes a custom base icon set.
|
||||
// Eye data is stored in the head organ, and this needs to be handled specially.
|
||||
/datum/species/proc/handle_base_eyes(var/mob/living/carbon/human/H, var/custom_base)
|
||||
if(selects_bodytype && custom_base) // only bother if our src species datum allows bases and one is assigned
|
||||
var/datum/species/S = GLOB.all_species[custom_base]
|
||||
|
||||
//extract default eye data from species datum
|
||||
var/baseHeadPath = S.has_limbs[BP_HEAD]["path"] //has_limbs is a list of lists
|
||||
|
||||
if(!baseHeadPath)
|
||||
return // exit if we couldn't find a head path from the base.
|
||||
|
||||
var/obj/item/organ/external/head/baseHead = new baseHeadPath()
|
||||
if(!baseHead)
|
||||
return // exit if we didn't create the base properly
|
||||
|
||||
var/obj/item/organ/external/head/targetHead = H.get_organ(BP_HEAD)
|
||||
if(!targetHead)
|
||||
return // don't bother if target mob has no head for whatever reason
|
||||
|
||||
targetHead.eye_icon = baseHead.eye_icon
|
||||
targetHead.eye_icon_location = baseHead.eye_icon_location
|
||||
|
||||
if(!QDELETED(baseHead) && baseHead)
|
||||
qdel(baseHead)
|
||||
return
|
||||
+1
-1
@@ -155,7 +155,7 @@
|
||||
return "synthetic"
|
||||
|
||||
/mob/living/simple_mob/protean_blob/get_available_emotes()
|
||||
return global._robot_default_emotes
|
||||
return global._robot_default_emotes.Copy()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/init_vore()
|
||||
return //Don't make a random belly, don't waste your time
|
||||
|
||||
+1
@@ -19,6 +19,7 @@
|
||||
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE
|
||||
health_hud_intensity = 2
|
||||
num_alternate_languages = 3
|
||||
species_language = LANGUAGE_EAL
|
||||
assisted_langs = list(LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX)
|
||||
speech_bubble_appearance = "synthetic"
|
||||
color_mult = TRUE
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
/datum/species/unathi
|
||||
vore_belly_default_variant = "L"
|
||||
@@ -0,0 +1,29 @@
|
||||
/datum/species/teshari
|
||||
vore_belly_default_variant = "T"
|
||||
|
||||
// allow teshari to always be scooped, as long as pref is enabled
|
||||
/mob/living/MouseDrop(var/atom/over_object)
|
||||
// make sure src (The dragged) is human
|
||||
if(!istype(src, /mob/living/carbon/human))
|
||||
return ..()
|
||||
|
||||
var/mob/living/carbon/human/DraggedH = src
|
||||
|
||||
//make sure src (the dragged) is a teshari
|
||||
if(DraggedH.species.name == SPECIES_TESHARI)
|
||||
var/mob/living/M = over_object
|
||||
// only perform the grab if; grabber and grabbed adjacent, caller is grabbed OR grabber, and the grabbed's grab preference is true.
|
||||
if(holder_type && istype(M) && Adjacent(M) && (usr == M || usr == DraggedH) && DraggedH != M && !M.incapacitated() && DraggedH.pickup_pref && (M != usr || (M == usr && M.pickup_active)) && (DraggedH.a_intent == I_HELP && M.a_intent == I_HELP)) //VOREStation Edit
|
||||
get_scooped(M, (usr == DraggedH))
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
//allow teshari permission to pass plastic flaps.
|
||||
/obj/structure/plasticflaps/CanPass(atom/A, turf/T)
|
||||
var/mob/living/carbon/human/H = A
|
||||
if(istype(H))
|
||||
if(H.species.name == SPECIES_TESHARI)
|
||||
return 1
|
||||
|
||||
return ..()
|
||||
@@ -0,0 +1,2 @@
|
||||
/datum/trait/negative/deep_sleeper
|
||||
custom_only = FALSE
|
||||
@@ -0,0 +1,5 @@
|
||||
/datum/trait/positive/hardfeet
|
||||
custom_only = FALSE
|
||||
|
||||
/datum/trait/positive/linguist
|
||||
custom_only = FALSE
|
||||
@@ -0,0 +1,105 @@
|
||||
// Expand shoe layer to allow changing the icon for digi legs
|
||||
// For some reason, suit and uniform already has this funcitonality, but shoes do not.
|
||||
|
||||
//Duplicate defines so the code below can compile. See non-modular update_icons.dm for proper placement.
|
||||
#define SHOES_LAYER_ALT 9 //Shoe-slot item (when set to be under uniform via verb)
|
||||
#define SHOES_LAYER 12 //Shoe-slot item
|
||||
#define VORE_BELLY_LAYER 32 //Should be the same that it is in update_icons.dm
|
||||
|
||||
/mob/living/carbon/human/update_inv_shoes()
|
||||
//. = ..()
|
||||
remove_layer(SHOES_LAYER)
|
||||
remove_layer(SHOES_LAYER_ALT) //Dumb alternate layer for shoes being under the uniform.
|
||||
|
||||
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
|
||||
|
||||
var/obj/item/clothing/shoes/shoe = shoes
|
||||
var/shoe_sprite
|
||||
|
||||
if(istype(shoe) && !isnull(shoe.update_icon_define))
|
||||
shoe_sprite = shoe.update_icon_define
|
||||
else
|
||||
shoe_sprite = INV_FEET_DEF_ICON
|
||||
|
||||
//Allow for shoe layer toggle nonsense
|
||||
var/shoe_layer = SHOES_LAYER
|
||||
if(istype(shoes, /obj/item/clothing/shoes))
|
||||
var/obj/item/clothing/shoes/ushoes = shoes
|
||||
if(ushoes.shoes_under_pants == 1)
|
||||
shoe_layer = SHOES_LAYER_ALT
|
||||
|
||||
//NB: the use of a var for the layer on this one
|
||||
overlays_standing[shoe_layer] = shoes.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_shoes_str, default_icon = shoe_sprite, default_layer = shoe_layer)
|
||||
|
||||
apply_layer(SHOES_LAYER)
|
||||
apply_layer(SHOES_LAYER_ALT)
|
||||
|
||||
/mob/living/carbon/human/proc/update_vore_belly_sprite()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
|
||||
remove_layer(VORE_BELLY_LAYER)
|
||||
|
||||
var/image/vore_belly_image = get_vore_belly_image()
|
||||
if(vore_belly_image)
|
||||
vore_belly_image.layer = BODY_LAYER+VORE_BELLY_LAYER
|
||||
overlays_standing[VORE_BELLY_LAYER] = vore_belly_image
|
||||
|
||||
apply_layer(VORE_BELLY_LAYER)
|
||||
|
||||
/mob/living/carbon/human/proc/get_vore_belly_image()
|
||||
if(!(wear_suit && wear_suit.flags_inv & HIDETAIL))
|
||||
var/vs_fullness = vore_fullness_ex["stomach"]
|
||||
var/icon/vorebelly_s = new/icon(icon = 'icons/mob/vore/Bellies.dmi', icon_state = "[species.vore_belly_default_variant]Belly[vs_fullness][struggle_anim_stomach ? "" : " idle"]")
|
||||
vorebelly_s.Blend(vore_sprite_color["stomach"], vore_sprite_multiply["stomach"] ? ICON_MULTIPLY : ICON_ADD)
|
||||
var/image/working = image(vorebelly_s)
|
||||
working.overlays += em_block_image_generic(working)
|
||||
return working
|
||||
return null
|
||||
|
||||
/mob/living/carbon/human/proc/vore_belly_animation()
|
||||
if(!struggle_anim_stomach)
|
||||
struggle_anim_stomach = TRUE
|
||||
update_vore_belly_sprite()
|
||||
spawn(12)
|
||||
struggle_anim_stomach = FALSE
|
||||
update_vore_belly_sprite()
|
||||
|
||||
/mob/living/carbon/human/proc/update_vore_tail_sprite()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
|
||||
remove_layer(VORE_TAIL_LAYER)
|
||||
|
||||
var/image/vore_tail_image = get_vore_tail_image()
|
||||
if(vore_tail_image)
|
||||
vore_tail_image.layer = BODY_LAYER+VORE_TAIL_LAYER
|
||||
overlays_standing[VORE_TAIL_LAYER] = vore_tail_image
|
||||
|
||||
apply_layer(VORE_TAIL_LAYER)
|
||||
|
||||
/mob/living/carbon/human/proc/get_vore_tail_image()
|
||||
if(tail_style && istaurtail(tail_style) && tail_style:vore_tail_sprite_variant)
|
||||
var/vs_fullness = vore_fullness_ex["taur belly"]
|
||||
var/icon/vorebelly_s = new/icon(icon = 'icons/mob/vore/Taur_Bellies.dmi', icon_state = "Taur[tail_style:vore_tail_sprite_variant]-Belly-[vs_fullness][struggle_anim_taur ? "" : " idle"]")
|
||||
vorebelly_s.Blend(vore_sprite_color["taur belly"], vore_sprite_multiply["taur belly"] ? ICON_MULTIPLY : ICON_ADD)
|
||||
var/image/working = image(vorebelly_s)
|
||||
working.pixel_x = -16
|
||||
if(tail_style.em_block)
|
||||
working.overlays += em_block_image_generic(working)
|
||||
return working
|
||||
return null
|
||||
|
||||
/mob/living/carbon/human/proc/vore_tail_animation()
|
||||
if(!struggle_anim_taur)
|
||||
struggle_anim_taur = TRUE
|
||||
update_vore_tail_sprite()
|
||||
spawn(12)
|
||||
struggle_anim_taur = FALSE
|
||||
update_vore_tail_sprite()
|
||||
@@ -0,0 +1,2 @@
|
||||
/mob/living/proc/vs_animate(var/belly_to_animate)
|
||||
return
|
||||
@@ -0,0 +1,12 @@
|
||||
/obj/item/weapon/gripper/scene
|
||||
name = "misc gripper"
|
||||
desc = "A simple grasping tool that can hold a variety of 'general' objects..."
|
||||
|
||||
can_hold = list(
|
||||
/obj/item/capture_crystal,
|
||||
/obj/item/clothing,
|
||||
/obj/item/weapon/implanter,
|
||||
/obj/item/weapon/disk/nifsoft/compliance,
|
||||
/obj/item/weapon/handcuffs,
|
||||
/obj/item/toy
|
||||
)
|
||||
@@ -0,0 +1,12 @@
|
||||
/mob/living/simple_mob/horror/Master/aerostat
|
||||
|
||||
say_list_type = /datum/say_list/cyber_horror/master
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/horrormaster //The final boss of every Gradius game
|
||||
|
||||
/datum/say_list/cyber_horror/master
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/MasterSee.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/horrormaster
|
||||
threaten = TRUE
|
||||
threaten_delay = 1 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
@@ -0,0 +1,12 @@
|
||||
/mob/living/simple_mob/mechanical/infectionbot //This literally just adds onto the base robot at /code/modules/mob/living/simple_mob/subtypes/mechanical/disbot_vr.dm
|
||||
say_list_type = /datum/say_list/disbot
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/disbot
|
||||
|
||||
|
||||
/datum/say_list/disbot
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/infector.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/melee/disbot
|
||||
threaten = TRUE
|
||||
threaten_delay = 1 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
/mob/living/simple_mob/mechanical/combat_drone/lesser/aerostat
|
||||
desc = "A Vir System Authority automated combat drone with an aged apperance."
|
||||
movement_cooldown = 10
|
||||
say_list_type = /datum/say_list/malf_drone/drone_aerostat
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening/drone_aerostat
|
||||
|
||||
/datum/say_list/malf_drone/drone_aerostat
|
||||
speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.")
|
||||
emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity")
|
||||
|
||||
say_understood = list("Affirmative.", "Positive.")
|
||||
say_cannot = list("Denied.", "Negative.")
|
||||
say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.")
|
||||
say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.")
|
||||
say_threaten = list("This area is condemned by Vir System Authority. Please leave immediately. You have 20 seconds to comply.")
|
||||
say_stand_down = list("Visual lost.", "Error: Target not found.")
|
||||
say_escalate = list("Intruder is tresspassing. Maximum force authorized by Vir System Suthority.")
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/DroneFreezeLong.ogg'
|
||||
stand_down_sound = 'modular_chomp/sound/mob/robots/DroneLostTarget.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/threatening/drone_aerostat
|
||||
threaten_delay = 10 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
@@ -0,0 +1,22 @@
|
||||
/mob/living/simple_mob/mechanical/mecha/combat/gygax/aerostat
|
||||
desc = "A Vir System Authority automated combat mech with an aged apperance."
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/adv_dark_gygax
|
||||
say_list = /datum/say_list/gygax_aerostat
|
||||
|
||||
/datum/say_list/gygax_aerostat
|
||||
speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.")
|
||||
emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity")
|
||||
|
||||
say_understood = list("Affirmative.", "Positive.")
|
||||
say_cannot = list("Denied.", "Negative.")
|
||||
say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.")
|
||||
say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.")
|
||||
say_threaten = list("This area is condemned by Vir System Authority. Please leave immediately. You have 20 seconds to comply.")
|
||||
say_stand_down = list("Visual lost.", "Error: Target not found.")
|
||||
say_escalate = list("Intruder is tresspassing. Maximum force authorized by Vir System Suthority.")
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/GygaxIntruder4.ogg'
|
||||
stand_down_sound = 'modular_chomp/sound/mob/robots/GygaxDanger.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/threatening/drone_aerostat
|
||||
threaten_delay = 20 SECOND
|
||||
threaten_timeout = 30 SECONDS
|
||||
@@ -0,0 +1,49 @@
|
||||
/mob/living/simple_mob/shadekin
|
||||
var/phase_gentle = 0
|
||||
|
||||
/mob/living/simple_mob/shadekin/Login()
|
||||
. = ..()
|
||||
verbs |= /mob/living/simple_mob/shadekin/proc/phase_strength_toggle
|
||||
|
||||
|
||||
// Allow horizontal resting
|
||||
/mob/living/simple_mob/shadekin/update_transform()
|
||||
update_transform_horizontal()
|
||||
|
||||
//custom light flicker proc
|
||||
/mob/living/simple_mob/shadekin/proc/handle_phasein_flicker()
|
||||
if(phase_gentle) // gentle case: No light destruction. Flicker in 4 tile radius for 3s. Weaken for 3sec after
|
||||
for(var/obj/machinery/light/L in machines)
|
||||
if(L.z != z || get_dist(src,L) > 4)
|
||||
continue
|
||||
L.flicker(3)
|
||||
src.Stun(3)
|
||||
else //normal case. Flicker in 10 tile radius for 10s. chance to destroy light based on eye type.
|
||||
var/destroy_lights = 0
|
||||
if(eye_state == RED_EYES)
|
||||
destroy_lights = 80
|
||||
if(eye_state == PURPLE_EYES)
|
||||
destroy_lights = 25
|
||||
|
||||
for(var/obj/machinery/light/L in machines)
|
||||
if(L.z != z || get_dist(src,L) > 10)
|
||||
continue
|
||||
|
||||
if(prob(destroy_lights))
|
||||
spawn(rand(5,25))
|
||||
L.broken()
|
||||
else
|
||||
L.flicker(10)
|
||||
|
||||
//toggle proc for toggling gentle/normal phasing
|
||||
/mob/living/simple_mob/shadekin/proc/phase_strength_toggle()
|
||||
set name = "Toggle Phase Strength"
|
||||
set desc = "Toggle strength of phase. Gentle but slower, or faster but destructive to lights."
|
||||
set category = "Abilities"
|
||||
|
||||
if(phase_gentle)
|
||||
to_chat(src, "<span class='notice'>Phasing toggled to Normal. You may damage lights.</span>")
|
||||
phase_gentle = 0
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Phasing toggled to Gentle. You won't damage lights, but concentrating on that incurs a short stun.</span>")
|
||||
phase_gentle = 1
|
||||
@@ -87,6 +87,8 @@
|
||||
var/datum/action/innate/xeno_ch/xeno_corrode/corrode_action = new
|
||||
var/datum/action/innate/xeno_ch/xeno_pounce/pounce_action = new
|
||||
var/datum/action/innate/xeno_ch/xeno_spin/spin_action = new
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
|
||||
/mob/living/simple_mob/xeno_ch/Initialize()
|
||||
..()
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
/mob/living/simple_mob/vore/alienanimals/teppi/baby
|
||||
mob_size = MOB_MEDIUM
|
||||
@@ -2,3 +2,9 @@
|
||||
var/voice_freq = 42500 // Preference for character voice frequency
|
||||
var/list/voice_sounds_list = list() // The sound list containing our voice sounds!
|
||||
var/enabled = TRUE //Pauses a mob if disabled (Prevents life ticks from happening)
|
||||
var/died_in_vr = FALSE //For virtual reality sleepers
|
||||
|
||||
/mob/is_incorporeal()
|
||||
if(incorporeal_move)
|
||||
return 1
|
||||
..()
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
/datum/sprite_accessory/marking
|
||||
var/hide_body_parts = list()
|
||||
|
||||
/datum/sprite_accessory/marking/ch/anthrovirus_ra
|
||||
name = "Anthro Virus (Right Arm)"
|
||||
icon_state = "anthrovirus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_ARM,BP_R_HAND)
|
||||
hide_body_parts = list(BP_R_ARM,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/anthrovirus_la
|
||||
name = "Anthro Virus (Left Arm)"
|
||||
icon_state = "anthrovirus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_ARM,BP_L_HAND)
|
||||
hide_body_parts = list(BP_L_ARM,BP_L_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/anthrovirus_rl
|
||||
name = "Anthro Virus (Right Leg)"
|
||||
icon_state = "anthrovirus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG)
|
||||
hide_body_parts = list(BP_R_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/anthrovirus_ll
|
||||
name = "Anthro Virus (Left Leg)"
|
||||
icon_state = "anthrovirus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG)
|
||||
hide_body_parts = list(BP_L_LEG)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/anthrovirus_rf
|
||||
name = "Anthro Virus (Right Foot)"
|
||||
icon_state = "anthrovirus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_FOOT)
|
||||
hide_body_parts = list(BP_R_FOOT)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/anthrovirus_lf
|
||||
name = "Anthro Virus (Left Foot)"
|
||||
icon_state = "anthrovirus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_FOOT)
|
||||
hide_body_parts = list(BP_L_FOOT)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/anthrovirus_t
|
||||
name = "Anthro Virus (Torso)"
|
||||
icon_state = "anthrovirus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
hide_body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/anthrovirus_h
|
||||
name = "Anthro Virus (Head)"
|
||||
icon_state = "anthrovirus"
|
||||
body_parts = list(BP_HEAD)
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
hide_body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/virus_ra
|
||||
name = "Bacteriophage (Right Arm)"
|
||||
icon_state = "virus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_ARM,BP_R_HAND)
|
||||
hide_body_parts = list(BP_R_ARM,BP_R_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/virus_la
|
||||
name = "Bacteriophage (Left Arm)"
|
||||
icon_state = "virus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_ARM,BP_L_HAND)
|
||||
hide_body_parts = list(BP_L_ARM,BP_L_HAND)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/virus_rl
|
||||
name = "Bacteriophage (Right Leg)"
|
||||
icon_state = "virus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_R_LEG,BP_R_FOOT)
|
||||
hide_body_parts = list(BP_R_LEG,BP_R_FOOT)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/virus_ll
|
||||
name = "Bacteriophage (Left Leg)"
|
||||
icon_state = "virus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_L_LEG,BP_L_FOOT)
|
||||
hide_body_parts = list(BP_L_LEG,BP_L_FOOT)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/virus_t
|
||||
name = "Bacteriophage (Torso)"
|
||||
icon_state = "virus"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_TORSO,BP_GROIN)
|
||||
hide_body_parts = list(BP_TORSO,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/virus_g
|
||||
name = "Bacteriophage (Groin)"
|
||||
icon_state = "virusgroin" //this is separate so that the groin region can be hidden by the torso.
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_GROIN)
|
||||
//hide_body_parts = list(BP_GROIN) this IS pretty low, even for the groin body part.
|
||||
|
||||
/datum/sprite_accessory/marking/ch/virus_h
|
||||
name = "Bacteriophage (Head)"
|
||||
icon_state = "virus"
|
||||
body_parts = list(BP_HEAD)
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
hide_body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/tyranid
|
||||
name = "Tyranid Bodytype (Use with Armor)"
|
||||
icon_state = "tyranid"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
hide_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)
|
||||
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/ch/tyranid_armor
|
||||
name = "Tyranid Bodytype (Armor)"
|
||||
icon_state = "tyranidarmor"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
hide_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)
|
||||
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/ch/tyranid_legs
|
||||
name = "Tyranid Legs (Use with Armor)"
|
||||
icon_state = "tyranid"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/tyranid_legs_armor
|
||||
name = "Tyranid Legs (Armor)"
|
||||
icon_state = "tyranidarmor"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG)
|
||||
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_GROIN)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/sect_drone
|
||||
name = "Sect Drone Bodytype"
|
||||
icon_state = "sectdrone"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
hide_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)
|
||||
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/ch/sect_drone_eyes
|
||||
name = "Sect Drone Eyes"
|
||||
icon_state = "sectdrone_eyes"
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
body_parts = list(BP_HEAD)
|
||||
|
||||
/datum/sprite_accessory/marking/ch/thickneck
|
||||
name = "Thick Neck"
|
||||
icon_state = "thickneck"
|
||||
body_parts = list(BP_HEAD)
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/marking/ch/thickerneck
|
||||
name = "Thicker Neck"
|
||||
icon_state = "thickerneck"
|
||||
body_parts = list(BP_HEAD)
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/marking/ch/thickthroat
|
||||
name = "Thick Throat"
|
||||
icon_state = "thickthroat"
|
||||
body_parts = list(BP_HEAD)
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
@@ -0,0 +1,22 @@
|
||||
/datum/sprite_accessory/tail/anthrovirus_tail
|
||||
name = "Anthro Virus Tail"
|
||||
icon = 'icons/mob/vore/tails_ch.dmi'
|
||||
icon_state = "anthrovirustail_mark"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "anthrovirustail"
|
||||
|
||||
/datum/sprite_accessory/tail/tyranid_tail
|
||||
name = "Tyranid"
|
||||
icon = 'icons/mob/vore/tails_ch.dmi'
|
||||
icon_state = "tyranid"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
|
||||
/datum/sprite_accessory/tail/sectdrone_tail
|
||||
name = "Sect Drone Tail (To use with bodytype-marking)"
|
||||
icon = 'icons/mob/vore/tails_ch.dmi'
|
||||
icon_state = "sectdrone_tail"
|
||||
extra_overlay = "sectdrone_tail_mark"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
@@ -0,0 +1,29 @@
|
||||
/datum/sprite_accessory/tail/taur
|
||||
var/vore_tail_sprite_variant = ""
|
||||
|
||||
|
||||
/datum/sprite_accessory/tail/taur/wolf
|
||||
vore_tail_sprite_variant = "N"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/ch/longvirus
|
||||
name = "Long Virus (Taur)"
|
||||
icon_state = "longvirus_s"
|
||||
extra_overlay = "longvirus_markings"
|
||||
icon_sprite_tag = "virus"
|
||||
//suit_sprites = 'icons/mob/taursuits_noodle.dmi' Aye, I've gotta sprite that shit.´
|
||||
|
||||
/datum/sprite_accessory/tail/taur/ch/fox
|
||||
name = "Fox (Taur, 3-color)"
|
||||
icon_state = "fox"
|
||||
extra_overlay = "fox_markings"
|
||||
extra_overlay2 = "fox_markings2"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/ch/sectdrone
|
||||
name = "Sect Drone (Taur)"
|
||||
icon_state = "sectdrone"
|
||||
extra_overlay = "sectdrone_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/ch/fatsectdrone
|
||||
name = "Fat Sect Drone (Taur)"
|
||||
icon_state = "fatsectdrone"
|
||||
extra_overlay = "fatsectdrone_markings"
|
||||
@@ -0,0 +1,7 @@
|
||||
/datum/sprite_accessory/wing/sect_drone //We should some day make a variable to make some wings not be able to fly
|
||||
name = "Sect drone wings (To use with bodytype marking)"
|
||||
desc = ""
|
||||
icon = 'icons/mob/vore/wings_ch.dmi'
|
||||
icon_state = "sectdrone_wing"
|
||||
do_colouration = 1
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
Reference in New Issue
Block a user