Adds werebeast event species

-Adds new customizable carbonspecies for werebeast shenanigans.
-Stats-wise somewhat faster, tougher, and hungrier compared to base humans. Also darksight.
-Added whatever the code needed to make it possible to have taller carbonspecies.
-As a side effect, the forementioned also makes it possible to do long necked species and more.
-The werebeast can use the tail, hair, ear, and markings customization. This will be messy on tails that rely heavily on human silhouette. The hair and ear customization is fully functional using unedited human assets with a coded offset.
-The hair/ears offset is a modifiable var for the species specific head organ subtype, and can be used by other species that use custom headtypes.
-The werebeast has a set of markings as well, restricted to the species. face, belly, socks, and nose.

Currently the werebeast ready clothing is limited to:
-Back: basic backpack, basic satchel, leather satchel, basic courier bag, and basic duffle.
-Belt: toolbelt and security belt.
-Eyes: most sunglasses and sunglass huds, welding goggles, regular and 3d glasses, plain, meson, and science goggles.
-Feet: black and brown basic shoes, galoshes, jackboots, and toeless jackboots.
-Hands: latex/white, nitrile, yellow/insulated, black, and fingerless gloves.
-Head: the entire selection of vanilla headgear.
-Suit: labcoat, regular and white hazard vest, and 4 flavors of varsity jackets.
-Uniform: white pants, white shorts, white, orange, yellow, black, grey, robo, engie, and janitor jumpsuits, swept and nurse skirt.
Everything else will likely not show up at all, but more can be added whenever needed.
This commit is contained in:
Verkister
2019-10-20 18:45:29 +03:00
parent d8f3a81d0c
commit 47d56f13d1
30 changed files with 167 additions and 13 deletions

View File

@@ -35,3 +35,4 @@
#define SPECIES_MONKEY_NEVREAN "Sparra"
#define SPECIES_MONKEY_SERGAL "Saru"
#define SPECIES_MONKEY_VULPKANIN "Wolpin"
#define SPECIES_WEREBEAST "Werebeast"

View File

@@ -17,3 +17,6 @@
centComm = 1
ks2type = /obj/item/device/encryptionkey/ert
/obj/item/device/radio/headset
sprite_sheets = list(SPECIES_TESHARI = 'icons/mob/species/seromi/ears.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/ears.dmi')

View File

@@ -128,4 +128,9 @@
/obj/item/weapon/storage/backpack/dufflebag/fluff //Black dufflebag without syndie buffs.
name = "plain black dufflebag"
desc = "A large dufflebag for holding extra tactical supplies."
icon_state = "duffle_syndie"
icon_state = "duffle_syndie"
/obj/item/weapon/storage/backpack
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/seromi/back.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/back.dmi')

View File

@@ -0,0 +1,4 @@
/obj/item/weapon/storage/belt
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/seromi/belt.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/belt.dmi')

View File

@@ -4,6 +4,10 @@
/obj/item/clothing/shoes
var/list/inside_emotes = list()
var/recent_squish = 0
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/seromi/shoes.dmi',
SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/feet.dmi')
/obj/item/clothing/shoes/New()
inside_emotes = list(
@@ -51,6 +55,17 @@
..()
/obj/item/clothing/gloves
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/seromi/gloves.dmi',
SPECIES_VOX = 'icons/mob/species/vox/gloves.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/hands.dmi')
/obj/item/clothing/ears
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/seromi/ears.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/ears.dmi')
/obj/item/clothing/relaymove(var/mob/living/user,var/direction)
if(recent_struggle)
@@ -98,13 +113,18 @@
SPECIES_ZORREN_FLAT = 'icons/mob/species/fennec/mask_vr.dmi',
SPECIES_AKULA = 'icons/mob/species/akula/mask_vr.dmi',
SPECIES_VULPKANIN = 'icons/mob/species/vulpkanin/mask.dmi',
SPECIES_XENOCHIMERA = 'icons/mob/species/tajaran/mask_vr.dmi'
SPECIES_XENOCHIMERA = 'icons/mob/species/tajaran/mask_vr.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/masks.dmi'
)
//"Spider" = 'icons/mob/species/spider/mask_vr.dmi' Add this later when they have custom mask sprites and everything.
//Switch to taur sprites if a taur equips
/obj/item/clothing/suit
var/taurized = FALSE //Easier than trying to 'compare icons' to see if it's a taur suit
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/seromi/suit.dmi',
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/suit.dmi')
/obj/item/clothing/suit/equipped(var/mob/user, var/slot)
var/normalize = TRUE
@@ -137,6 +157,10 @@
/obj/item/clothing/under
sensor_mode = 3
var/sensorpref = 5
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/seromi/uniform.dmi',
SPECIES_VOX = 'icons/mob/species/vox/uniform.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/uniform.dmi')
//TFF 5/8/19 - define numbers and specifics for suit sensor settings
/obj/item/clothing/under/New(var/mob/living/carbon/human/H)
@@ -150,4 +174,10 @@
if(5) sensor_mode = pick(0,1,2,3) //Select a random setting
else
sensor_mode = pick(0,1,2,3)
log_debug("Invalid switch for suit sensors, defaulting to random. [sensorpref] chosen")
log_debug("Invalid switch for suit sensors, defaulting to random. [sensorpref] chosen")
/obj/item/clothing/head
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/seromi/head.dmi',
SPECIES_VOX = 'icons/mob/species/vox/head.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/head.dmi')

View File

@@ -111,3 +111,10 @@
item_state = "tajblind_meson"
off_state = "tajblind"
body_parts_covered = EYES
/obj/item/clothing/glasses
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/seromi/eyes.dmi',
SPECIES_VOX = 'icons/mob/species/vox/eyes.dmi',
SPECIES_WEREBEAST = 'icons/mob/species/werebeast/eyes.dmi'
)

View File

@@ -382,3 +382,63 @@
H.eye_blurry = 5
H.shock_stage = min(H.shock_stage + coldshock, 160) //cold hurts and gives them pain messages, eventually weakening and paralysing, but doesn't damage.
return
/datum/species/werebeast
name = SPECIES_WEREBEAST
name_plural = "Werebeasts"
icobase = 'icons/mob/human_races/r_werebeast.dmi'
deform = 'icons/mob/human_races/r_def_werebeast.dmi'
icon_template = 'icons/mob/human_races/r_werebeast.dmi'
tail = "tail"
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
total_health = 200
brute_mod = 0.85
burn_mod = 0.85
metabolic_rate = 2
item_slowdown_mod = 0.25
hunger_factor = 0.4
darksight = 8
mob_size = MOB_LARGE
num_alternate_languages = 3
secondary_langs = list(LANGUAGE_CANILUNZT)
name_language = LANGUAGE_CANILUNZT
primitive_form = "Wolpin"
color_mult = 1
min_age = 18
max_age = 200
blurb = "Big buff werewolves. These are a limited functionality event species that are not balanced for regular gameplay. Adminspawn only."
wikilink="N/A"
catalogue_data = list(/datum/category_item/catalogue/fauna/vulpkanin)
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_COLOR | HAS_EYE_COLOR
inherent_verbs = list(
/mob/living/proc/shred_limb,
/mob/living/proc/eat_trash)
flesh_color = "#AFA59E"
base_color = "#777777"
heat_discomfort_strings = list(
"Your fur prickles in the heat.",
"You feel uncomfortably warm.",
"Your overheated skin itches."
)
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest),
BP_GROIN = list("path" = /obj/item/organ/external/groin),
BP_HEAD = list("path" = /obj/item/organ/external/head/vr/werebeast),
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/leg),
BP_R_LEG = list("path" = /obj/item/organ/external/leg/right),
BP_L_HAND = list("path" = /obj/item/organ/external/hand),
BP_R_HAND = list("path" = /obj/item/organ/external/hand/right),
BP_L_FOOT = list("path" = /obj/item/organ/external/foot),
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
)

View File

@@ -295,7 +295,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))
@@ -440,8 +440,13 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
// VOREStation Edit - START
var/icon/ears_s = get_ears_overlay()
if (ears_s)
if(ears_s)
face_standing.Blend(ears_s, ICON_OVERLAY)
if(istype(head_organ,/obj/item/organ/external/head/vr))
var/obj/item/organ/external/head/vr/head_organ_vr = head_organ
overlays_standing[HAIR_LAYER] = image(face_standing, layer = BODY_LAYER+HAIR_LAYER, "pixel_y" = head_organ_vr.head_offset)
apply_layer(HAIR_LAYER)
return
// VOREStation Edit - END
if(head_organ.nonsolid)

View File

@@ -8,7 +8,7 @@
//var/icon_add = 'icons/mob/human_face.dmi' //Already defined in sprite_accessories.dm line 49.
var/color_blend_mode = ICON_MULTIPLY
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE) //This lets all races use the default hairstyles.
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, 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.
astolfo
name = "Astolfo"
@@ -87,14 +87,14 @@
name = "Bald"
icon_state = "bald"
gender = MALE
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE) //Lets all the races be bald if they want.
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST) //Lets all the races be bald if they want.
ponytail6_fixed //Eggnerd's done with waiting for upstream fixes lmao.
name = "Ponytail 6 but fixed"
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "hair_ponytail6"
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_NEVREAN, SPECIES_AKULA,SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE)
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_NEVREAN, SPECIES_AKULA,SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST)
una_hood
name = "Cobra Hood"
@@ -477,13 +477,13 @@
/datum/sprite_accessory/facial_hair
icon = 'icons/mob/human_face_or_vr.dmi'
var/color_blend_mode = ICON_MULTIPLY
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE) //This lets all races use the facial hair styles.
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, 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 facial hair styles.
shaved
name = "Shaved"
icon_state = "bald"
gender = NEUTER
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE) //This needed to be manually defined, apparantly.
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_FLAT, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST) //This needed to be manually defined, apparantly.
vulp_none
@@ -1064,4 +1064,36 @@
name = "Heterochromia"
icon_state = "heterochromia"
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) //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) //This lets all races use the default hairstyles.
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)

View File

@@ -37,7 +37,7 @@
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(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD)
overlays |= facial_s
overlays |= image(facial_s, "pixel_y" = head_offset)
if(owner.h_style && !(owner.head && (owner.head.flags_inv & BLOCKHEADHAIR)))
var/datum/sprite_accessory/hair_style = hair_styles_list[owner.h_style]
@@ -45,14 +45,20 @@
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
if(hair_style.do_colouration && islist(h_col) && h_col.len >= 3)
hair_s.Blend(rgb(h_col[1], h_col[2], h_col[3]), ICON_MULTIPLY)
overlays |= hair_s
overlays |= image(hair_s, "pixel_y" = head_offset)
return mob_icon
/obj/item/organ/external/head/vr
var/eye_icons_vr = 'icons/mob/human_face_vr.dmi'
var/eye_icon_vr = "blank_eyes"
var/head_offset = 0
eye_icon = "blank_eyes"
/obj/item/organ/external/head/vr/sergal
eye_icon_vr = "eyes_sergal"
/obj/item/organ/external/head/vr/werebeast
eye_icons_vr = 'icons/mob/werebeast_face_vr.dmi'
eye_icon_vr = "werebeast_eyes"
head_offset = 6