Finishes up the main shadekin features

This commit is contained in:
Heroman3003
2019-11-15 11:13:31 +10:00
parent 62889c39d9
commit ab603cffa4
16 changed files with 71 additions and 64 deletions

View File

@@ -106,7 +106,7 @@ obj/var/contaminated = 0
updatehealth() updatehealth()
//Burn eyes if exposed. //Burn eyes if exposed.
if(vsc.plc.EYE_BURNS && (species.breath_type != "phoron")) if(vsc.plc.EYE_BURNS && species.breath_type && (species.breath_type != "phoron")) //VOREStation Edit: those who don't breathe
var/burn_eyes = 1 var/burn_eyes = 1
//Check for protective glasses //Check for protective glasses

View File

@@ -884,7 +884,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
var/restricted = 0 var/restricted = 0
if(!(current_species.spawn_flags & SPECIES_CAN_JOIN)) //VOREStation Edit if(!(current_species.spawn_flags & SPECIES_CAN_JOIN))
restricted = 2 restricted = 2
else if(!is_alien_whitelisted(preference_mob(),current_species)) else if(!is_alien_whitelisted(preference_mob(),current_species))
restricted = 1 restricted = 1

View File

@@ -89,10 +89,19 @@
pref.b_wing = sanitize_integer(pref.b_wing, 0, 255, initial(pref.b_wing)) pref.b_wing = sanitize_integer(pref.b_wing, 0, 255, initial(pref.b_wing))
if(pref.ear_style) if(pref.ear_style)
pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style)) pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style))
var/datum/sprite_accessory/temp_ear_style = ear_styles_list[pref.ear_style]
if(temp_ear_style.apply_restrictions && (!(pref.species in temp_ear_style.species_allowed)))
pref.ear_style = initial(pref.ear_style)
if(pref.tail_style) if(pref.tail_style)
pref.tail_style = sanitize_inlist(pref.tail_style, tail_styles_list, initial(pref.tail_style)) pref.tail_style = sanitize_inlist(pref.tail_style, tail_styles_list, initial(pref.tail_style))
var/datum/sprite_accessory/temp_tail_style = tail_styles_list[pref.tail_style]
if(temp_tail_style.apply_restrictions && (!(pref.species in temp_tail_style.species_allowed)))
pref.tail_style = initial(pref.tail_style)
if(pref.wing_style) if(pref.wing_style)
pref.wing_style = sanitize_inlist(pref.wing_style, wing_styles_list, initial(pref.wing_style)) pref.wing_style = sanitize_inlist(pref.wing_style, wing_styles_list, initial(pref.wing_style))
var/datum/sprite_accessory/temp_wing_style = wing_styles_list[pref.wing_style]
if(temp_wing_style.apply_restrictions && (!(pref.species in temp_wing_style.species_allowed)))
pref.wing_style = initial(pref.wing_style)
/datum/category_item/player_setup_item/vore/ears/copy_to_mob(var/mob/living/carbon/human/character) /datum/category_item/player_setup_item/vore/ears/copy_to_mob(var/mob/living/carbon/human/character)
character.ear_style = ear_styles_list[pref.ear_style] character.ear_style = ear_styles_list[pref.ear_style]
@@ -182,7 +191,7 @@
var/list/pretty_ear_styles = list("Normal" = null) var/list/pretty_ear_styles = list("Normal" = null)
for(var/path in ear_styles_list) for(var/path in ear_styles_list)
var/datum/sprite_accessory/ears/instance = ear_styles_list[path] var/datum/sprite_accessory/ears/instance = ear_styles_list[path]
if((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)))
pretty_ear_styles[instance.name] = path pretty_ear_styles[instance.name] = path
// Present choice to user // Present choice to user
@@ -215,7 +224,7 @@
var/list/pretty_tail_styles = list("Normal" = null) var/list/pretty_tail_styles = list("Normal" = null)
for(var/path in tail_styles_list) for(var/path in tail_styles_list)
var/datum/sprite_accessory/tail/instance = tail_styles_list[path] var/datum/sprite_accessory/tail/instance = tail_styles_list[path]
if((!instance.ckeys_allowed) || (user.ckey in instance.ckeys_allowed)) if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)))
pretty_tail_styles[instance.name] = path pretty_tail_styles[instance.name] = path
// Present choice to user // Present choice to user
@@ -248,7 +257,7 @@
var/list/pretty_wing_styles = list("Normal" = null) var/list/pretty_wing_styles = list("Normal" = null)
for(var/path in wing_styles_list) for(var/path in wing_styles_list)
var/datum/sprite_accessory/wing/instance = wing_styles_list[path] var/datum/sprite_accessory/wing/instance = wing_styles_list[path]
if((!instance.ckeys_allowed) || (user.ckey in instance.ckeys_allowed)) if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)))
pretty_wing_styles[instance.name] = path pretty_wing_styles[instance.name] = path
// Present choice to user // Present choice to user

View File

@@ -7,8 +7,8 @@
var/flapping = 0 var/flapping = 0
var/vantag_pref = VANTAG_NONE //What's my status? var/vantag_pref = VANTAG_NONE //What's my status?
var/impersonate_bodytype //For impersonating a bodytype var/impersonate_bodytype //For impersonating a bodytype
var/ability_flags = 0 //Shadekin stoof var/ability_flags = 0 //Shadekin abilities/potentially other species-based?
var/sensorpref = 5 var/sensorpref = 5 //Suit sensor loadout pref
/mob/living/carbon/human/proc/shadekin_get_energy() /mob/living/carbon/human/proc/shadekin_get_energy()
var/datum/species/shadekin/SK = species var/datum/species/shadekin/SK = species

View File

@@ -887,7 +887,7 @@
for(var/obj/item/I in src) for(var/obj/item/I in src)
if(I.contaminated) if(I.contaminated)
if(check_belly(I)) continue //VOREStation Edit if(check_belly(I)) continue //VOREStation Edit
if(src.species && src.species.get_bodytype() != "Vox") if(src.species && src.species.get_bodytype() != "Vox" && src.species.get_bodytype() != "Shadekin") //VOREStation Edit: shadekin
// This is hacky, I'm so sorry. // This is hacky, I'm so sorry.
if(I != l_hand && I != r_hand) //If the item isn't in your hands, you're probably wearing it. Full damage for you. if(I != l_hand && I != r_hand) //If the item isn't in your hands, you're probably wearing it. Full damage for you.
total_phoronloss += vsc.plc.CONTAMINATION_LOSS total_phoronloss += vsc.plc.CONTAMINATION_LOSS

View File

@@ -5,13 +5,17 @@
deform = 'icons/mob/human_races/r_shadekin_vr.dmi' deform = 'icons/mob/human_races/r_shadekin_vr.dmi'
tail = "tail" tail = "tail"
icobase_tail = 1 icobase_tail = 1
blurb = "Waow! A shaadefluffer!" blurb = "Very little is known about these creatures. They appear to be largely mammalian in appearance. \
Seemingly very rare to encounter, there have been widespread myths of these creatures the galaxy over, \
but next to no verifiable evidence to their existence. However, they have recently been more verifiably \
documented in the Virgo system, following a mining bombardment of Virgo 3. The crew of NSB Adephagia have \
taken to calling these creatures 'Shadekin', and the name has generally stuck and spread. " //TODO: Something that's not wiki copypaste
wikilink = "https://wiki.vore-station.net/Shadekin"
catalogue_data = list(/datum/category_item/catalogue/fauna/shadekin) catalogue_data = list(/datum/category_item/catalogue/fauna/shadekin)
language = LANGUAGE_SHADEKIN language = LANGUAGE_SHADEKIN
assisted_langs = list() assisted_langs = list()
unarmed_types = list(/datum/unarmed_attack/claws/shadekin/red) unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin)
//hud_type = /datum/hud_data/shadekin
rarity_value = 15 //INTERDIMENSIONAL FLUFFERS rarity_value = 15 //INTERDIMENSIONAL FLUFFERS
has_fine_manipulation = 0 has_fine_manipulation = 0
@@ -41,16 +45,16 @@
flags = NO_SCAN | NO_MINOR_CUT | NO_INFECT flags = NO_SCAN | NO_MINOR_CUT | NO_INFECT
spawn_flags = SPECIES_CAN_JOIN | SPECIES_WHITELIST_SELECTABLE spawn_flags = SPECIES_CAN_JOIN | SPECIES_WHITELIST_SELECTABLE
reagent_tag = IS_SHADEKIN //TODO: shadekin-unqiue chem interactions reagent_tag = IS_SHADEKIN // for shadekin-unqiue chem interactions
flesh_color = "#34AF10" //TODO: set colors flesh_color = "#FFC896"
blood_color = "#b3cbc3" blood_color = "#A10808"
base_color = "#066000" base_color = "#f0f0f0"
color_mult = 1 color_mult = 1
has_glowing_eyes = TRUE has_glowing_eyes = TRUE
death_message = "lets out a waning guttural screech, green blood bubbling from its maw." //TODO: replace death_message = "phases to somewhere far away!"
male_cough_sounds = null male_cough_sounds = null
female_cough_sounds = null female_cough_sounds = null
male_sneeze_sound = null male_sneeze_sound = null
@@ -80,7 +84,7 @@
O_EYES = /obj/item/organ/internal/eyes, O_EYES = /obj/item/organ/internal/eyes,
O_STOMACH = /obj/item/organ/internal/stomach, O_STOMACH = /obj/item/organ/internal/stomach,
O_INTESTINE = /obj/item/organ/internal/intestine O_INTESTINE = /obj/item/organ/internal/intestine
) //TODO: Phoron-immune eyes )
has_limbs = list( has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest), BP_TORSO = list("path" = /obj/item/organ/external/chest),

View File

@@ -3,6 +3,18 @@
///////////////////// /////////////////////
/// PHASE SHIFT /// /// PHASE SHIFT ///
///////////////////// /////////////////////
//Visual effect for phase in/out
/obj/effect/temp_visual/shadekin
randomdir = FALSE
duration = 5
icon = 'icons/mob/vore_shadekin.dmi'
/obj/effect/temp_visual/shadekin/phase_in
icon_state = "tp_in"
/obj/effect/temp_visual/shadekin/phase_out
icon_state = "tp_out"
/datum/power/shadekin/phase_shift /datum/power/shadekin/phase_shift
name = "Phase Shift (100)" name = "Phase Shift (100)"
desc = "Shift yourself out of alignment with realspace to travel quickly areas." desc = "Shift yourself out of alignment with realspace to travel quickly areas."
@@ -56,7 +68,6 @@
B.escapable = initial(B.escapable) B.escapable = initial(B.escapable)
//overlays.Cut() //overlays.Cut()
alpha = initial(alpha)
invisibility = initial(invisibility) invisibility = initial(invisibility)
see_invisible = initial(see_invisible) see_invisible = initial(see_invisible)
incorporeal_move = initial(incorporeal_move) incorporeal_move = initial(incorporeal_move)
@@ -65,10 +76,13 @@
update_icon() update_icon()
//Cosmetics mostly //Cosmetics mostly
flick("tp_in",src) var/obj/effect/temp_visual/shadekin/phase_in/phaseanim = new /obj/effect/temp_visual/shadekin/phase_in(src.loc)
phaseanim.dir = dir
alpha = 0
custom_emote(1,"phases in!") custom_emote(1,"phases in!")
sleep(5) //The duration of the TP animation sleep(5) //The duration of the TP animation
canmove = original_canmove canmove = original_canmove
alpha = initial(alpha)
//Potential phase-in vore //Potential phase-in vore
if(can_be_drop_pred) //Toggleable in vore panel if(can_be_drop_pred) //Toggleable in vore panel
@@ -101,7 +115,9 @@
var/obj/belly/B = belly var/obj/belly/B = belly
B.escapable = FALSE B.escapable = FALSE
//flick("tp_out",src) var/obj/effect/temp_visual/shadekin/phase_out/phaseanim = new /obj/effect/temp_visual/shadekin/phase_out(src.loc)
phaseanim.dir = dir
alpha = 0
sleep(5) sleep(5)
invisibility = INVISIBILITY_LEVEL_TWO invisibility = INVISIBILITY_LEVEL_TWO
see_invisible = INVISIBILITY_LEVEL_TWO see_invisible = INVISIBILITY_LEVEL_TWO

View File

@@ -1,27 +1,3 @@
/datum/hud_data/shadekin
icon = 'icons/mob/shadekin_hud.dmi'
has_a_intent = 1
has_m_intent = 1
has_warnings = 1
has_hands = 1
has_drop = 1
has_throw = 1
has_resist = 1
has_pressure = 1
has_nutrition = 1
has_bodytemp = 1
has_internals = 0
gear = list(
"head" = list("loc" = ui_shoes, "name" = "Hat", "slot" = slot_head, "state" = "hair", "toggle" = 1),
"suit storage" = list("loc" = ui_sstore1, "name" = "Uniform", "slot" = slot_w_uniform, "state" = "center", "toggle" = 1),
"id" = list("loc" = ui_id, "name" = "ID", "slot" = slot_wear_id, "state" = "id"),
"belt" = list("loc" = ui_belt, "name" = "Belt", "slot" = slot_belt, "state" = "belt"),
"back" = list("loc" = ui_back, "name" = "Back", "slot" = slot_back, "state" = "back"),
"storage1" = list("loc" = ui_storage1, "name" = "Left Pocket", "slot" = slot_l_store, "state" = "pocket"),
"storage2" = list("loc" = ui_storage2, "name" = "Right Pocket", "slot" = slot_r_store, "state" = "pocket")
)
/obj/screen/shadekin /obj/screen/shadekin
icon = 'icons/mob/shadekin_hud.dmi' icon = 'icons/mob/shadekin_hud.dmi'
invisibility = 101 invisibility = 101

View File

@@ -46,26 +46,15 @@
target.bloodstr.add_reagent("numbenzyme",attack_damage) target.bloodstr.add_reagent("numbenzyme",attack_damage)
/datum/unarmed_attack/claws/shadekin /datum/unarmed_attack/claws/shadekin
var/energy_gain = 0 var/energy_gain = 3
/datum/unarmed_attack/claws/shadekin/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) /datum/unarmed_attack/claws/shadekin/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
..() ..()
user.shadekin_adjust_energy(energy_gain) user.shadekin_adjust_energy(energy_gain)
/datum/unarmed_attack/claws/shadekin/blue /datum/unarmed_attack/bite/sharp/shadekin
energy_gain = 1 var/energy_gain = 3
/datum/unarmed_attack/claws/shadekin/red /datum/unarmed_attack/bite/sharp/shadekin/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
energy_gain = 8 ..()
user.shadekin_adjust_energy(energy_gain)
/datum/unarmed_attack/claws/shadekin/yellow
energy_gain = 3
/datum/unarmed_attack/claws/shadekin/purple
energy_gain = 4
/datum/unarmed_attack/claws/shadekin/orange
energy_gain = 5
/datum/unarmed_attack/claws/shadekin/green
energy_gain = 1

View File

@@ -1090,7 +1090,7 @@
name = "Heterochromia" name = "Heterochromia"
icon_state = "heterochromia" icon_state = "heterochromia"
body_parts = list(BP_HEAD) body_parts = list(BP_HEAD)
species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST) //This lets all races use the default hairstyles. species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN) //This lets all races use the default hairstyles.
werewolf_nose werewolf_nose
name = "Werewolf nose" name = "Werewolf nose"
@@ -1123,3 +1123,10 @@
color_blend_mode = ICON_MULTIPLY 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) 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) 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)

View File

@@ -163,10 +163,11 @@
name = "Shadekin Tail (Shadekin)" name = "Shadekin Tail (Shadekin)"
icon_state = "shadekin_s" icon_state = "shadekin_s"
can_ride = 0 can_ride = 0
//ckeys_allowed = list("spoopylizz")
hide_body_parts = null hide_body_parts = null
clip_mask_icon = null clip_mask_icon = null
clip_mask_state = null clip_mask_state = null
apply_restrictions = TRUE
species_allowed = list(SPECIES_SHADEKIN)
/datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_2c /datum/sprite_accessory/tail/taur/shadekin_tail/shadekin_tail_2c
name = "Shadekin Tail dual-color (Shadekin)" name = "Shadekin Tail dual-color (Shadekin)"

View File

@@ -12,6 +12,7 @@
/datum/sprite_accessory /datum/sprite_accessory
// Ckey of person allowed to use this, if defined. // Ckey of person allowed to use this, if defined.
var/list/ckeys_allowed = null var/list/ckeys_allowed = null
var/apply_restrictions = FALSE //whether to apply restrictions for specific tails/ears/wings
/* /*
//////////////////////////// ////////////////////////////
@@ -37,6 +38,8 @@
icon_state = "shadekin" icon_state = "shadekin"
do_colouration = 1 do_colouration = 1
color_blend_mode = ICON_MULTIPLY color_blend_mode = ICON_MULTIPLY
apply_restrictions = TRUE
species_allowed = list(SPECIES_SHADEKIN)
// Ears avaliable to anyone // Ears avaliable to anyone
@@ -682,6 +685,8 @@
icon_state = "shadekin-short" icon_state = "shadekin-short"
do_colouration = 1 do_colouration = 1
color_blend_mode = ICON_MULTIPLY color_blend_mode = ICON_MULTIPLY
apply_restrictions = TRUE
species_allowed = list(SPECIES_SHADEKIN)
// Everyone tails // Everyone tails

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB