Altevian base code implementation

This commit is contained in:
Heroman
2022-07-30 05:20:53 +10:00
parent 19504ad1f9
commit 144a973693
10 changed files with 130 additions and 35 deletions
+1
View File
@@ -25,6 +25,7 @@
#define SPECIES_PROTEAN "Protean"
#define SPECIES_RAPALA "Rapala"
#define SPECIES_SERGAL "Sergal"
#define SPECIES_ALTEVIAN "Altevian"
#define SPECIES_SHADEKIN_CREW "Black-Eyed Shadekin"
#define SPECIES_VASILISSAN "Vasilissan"
#define SPECIES_VULPKANIN "Vulpkanin"
+2
View File
@@ -451,6 +451,8 @@ var/list/mob/living/forced_ambiance_list = new
return
if(H.incorporeal_move) // VOREstation edit - Phaseshifted beings should not be affected by gravity
return
if(H.species.can_zero_g_move || H.species.can_space_freemove)
return
if(H.m_intent == "run")
H.AdjustStunned(6)
@@ -93,6 +93,14 @@
comparable conditions as wealthy members of the Diaspora."
value = CATALOGUER_REWARD_TRIVIAL
/datum/category_item/catalogue/fauna/altevian
name = "Sapients - Altevian"
desc = "The Altevian are a species of tall, rodent humanoids that are akin to rats for their features. \
The Altevian, unlike most species, do not have a home planet, nor system, adopting a fully nomadic lifestyle \
for their survival across the stars. Instead, they have opted to live in massive super capital-class colony-ships \
with a flagship as their place they would call home."
value = CATALOGUER_REWARD_TRIVIAL
/datum/category_item/catalogue/fauna/shadekin
name = "Sapients - Shadekin"
desc = "ERROR : No DNA found. ERROR : Ambient energy signature detected. Likely origin from attempt of scanning \
@@ -202,7 +202,13 @@
if(restrained()) return 0
if(..()) //Can move due to other reasons, don't use jetpack fuel
return 1
return TRUE
if(species.can_space_freemove || (species.can_zero_g_move && !istype(get_turf(src), /turf/space))) //VOREStation Edit.
return TRUE //VOREStation Edit.
if(flying) //VOREStation Edit. If you're flying, you glide around!
return TRUE //VOREStation Edit.
//Do we have a working jetpack?
var/obj/item/weapon/tank/jetpack/thrust = get_jetpack()
@@ -210,22 +216,23 @@
if(thrust)
if(((!check_drift) || (check_drift && thrust.stabilization_on)) && (!lying) && (thrust.do_thrust(0.01, src)))
inertia_dir = 0
return 1
if(flying) //VOREStation Edit. If you're flying, you glide around!
return 0 //VOREStation Edit.
return TRUE
return 0
return FALSE
/mob/living/carbon/human/Process_Spaceslipping(var/prob_slip = 5)
//If knocked out we might just hit it and stop. This makes it possible to get dead bodies and such.
if(species.flags & NO_SLIP)
return 0
return FALSE
if(species.can_space_freemove || species.can_zero_g_move)
return FALSE
var/obj/item/weapon/tank/jetpack/thrust = get_jetpack()
if(thrust?.can_thrust(0.01))
return 0
return FALSE
if(stat)
prob_slip = 0 // Changing this to zero to make it line up with the comment, and also, make more sense.
@@ -201,7 +201,8 @@
var/has_glowing_eyes = 0 // Whether the eyes are shown above all lighting
var/water_movement = 0 // How much faster or slower the species is in water
var/snow_movement = 0 // How much faster or slower the species is on snow
var/can_space_freemove = FALSE // Can we freely move in space?
var/can_zero_g_move = FALSE // What about just in zero-g non-space?
var/item_slowdown_mod = 1 // How affected by item slowdown the species is.
var/primitive_form // Lesser form, if any (ie. monkey for humans)
@@ -103,8 +103,10 @@
if(!name_language)
if(gender == FEMALE)
return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
else
else if(gender == MALE)
return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
else
return capitalize(prob(50) ? pick(first_names_male) : pick(first_names_female)) + " " + capitalize(pick(last_names))
var/datum/language/species_language = GLOB.all_languages[name_language]
if(!species_language)
@@ -562,3 +562,60 @@
"You feel uncomfortably warm.",
"Your chitin feels hot."
)
/datum/species/altevian
name = SPECIES_ALTEVIAN
name_plural = "Altevians"
icobase = 'icons/mob/human_races/r_sergal.dmi'
deform = 'icons/mob/human_races/r_def_sergal.dmi'
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
language = LANGUAGE_TAVAN
num_alternate_languages = 3
secondary_langs = list(LANGUAGE_TAVAN)
name_language = null
color_mult = 1
inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair)
min_age = 18
max_age = 80
blurb = "The Altevian are a species of tall, rodent humanoids that are akin to rats for their features. \
The Altevian, unlike most species, do not have a home planet, nor system, adopting a fully nomadic lifestyle \
for their survival across the stars. Instead, they have opted to live in massive super capital-class colony-ships \
with a flagship as their place they would call home."
wikilink="https://wiki.vore-station.net/Altevian"
catalogue_data = list(/datum/category_item/catalogue/fauna/altevian)
spawn_flags = SPECIES_CAN_JOIN
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
flesh_color = "#AFA59E"
base_color = "#777777"
genders = list(MALE, FEMALE, PLURAL, NEUTER)
burn_mod = 1.15
hunger_factor = 0.04
can_zero_g_move = TRUE
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),
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)
)
@@ -66,7 +66,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
#define MOB_DAM_LAYER 4 //Injury overlay sprites like open wounds
#define SURGERY_LAYER 5 //Overlays for open surgical sites
#define UNDERWEAR_LAYER 6 //Underwear/bras/etc
#define TAIL_SOUTH_LAYER 7 //Tail as viewed from the south
#define TAIL_LOWER_LAYER 7 //Tail as viewed from the south
#define SHOES_LAYER_ALT 8 //Shoe-slot item (when set to be under uniform via verb)
#define UNIFORM_LAYER 9 //Uniform-slot item
#define ID_LAYER 10 //ID-slot item
@@ -74,7 +74,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
#define GLOVES_LAYER 12 //Glove-slot item
#define BELT_LAYER 13 //Belt-slot item
#define SUIT_LAYER 14 //Suit-slot item
#define TAIL_NORTH_LAYER 15 //Some species have tails to render (As viewed from the N, E, or W)
#define TAIL_UPPER_LAYER 15 //Some species have tails to render (As viewed from the N, E, or W)
#define GLASSES_LAYER 16 //Eye-slot item
#define BELT_LAYER_ALT 17 //Belt-slot item (when set to be above suit via verb)
#define SUIT_STORE_LAYER 18 //Suit storage-slot item
@@ -90,7 +90,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
#define L_HAND_LAYER 28 //Left-hand item
#define R_HAND_LAYER 29 //Right-hand item
#define WING_LAYER 30 //Wings or protrusions over the suit.
#define TAIL_NORTH_LAYER_ALT 31 //Modified tail-sprite layer. Tend to be larger.
#define TAIL_UPPER_LAYER_ALT 31 //Modified tail-sprite layer. Tend to be larger.
#define MODIFIER_EFFECTS_LAYER 32 //Effects drawn by modifiers
#define FIRE_LAYER 33 //'Mob on fire' overlay layer
#define MOB_WATER_LAYER 34 //'Mob submerged' overlay layer
@@ -98,8 +98,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
#define TOTAL_LAYERS 35 //VOREStation edit. <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
//////////////////////////////////
#define GET_TAIL_LAYER (dir == SOUTH ? TAIL_SOUTH_LAYER : TAIL_NORTH_LAYER)
/mob/living/carbon/human
var/list/overlays_standing[TOTAL_LAYERS]
var/previous_damage_appearance // store what the body last looked like, so we only have to update it if something changed
@@ -839,7 +837,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
suit_sprite = INV_SUIT_DEF_ICON
var/icon/c_mask = null
var/tail_is_rendered = (overlays_standing[TAIL_NORTH_LAYER] || overlays_standing[TAIL_NORTH_LAYER_ALT] || overlays_standing[TAIL_SOUTH_LAYER])
var/tail_is_rendered = (overlays_standing[TAIL_UPPER_LAYER] || overlays_standing[TAIL_UPPER_LAYER_ALT] || overlays_standing[TAIL_LOWER_LAYER])
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.
@@ -952,19 +950,29 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
apply_layer(L_HAND_LAYER)
/mob/living/carbon/human/proc/get_tail_layer()
var/list/lower_layer_dirs = list(SOUTH)
if(tail_style)
lower_layer_dirs = tail_style.lower_layer_dirs.Copy()
if(dir in lower_layer_dirs)
return TAIL_LOWER_LAYER
else
return TAIL_UPPER_LAYER
/mob/living/carbon/human/proc/update_tail_showing()
if(QDESTROYING(src))
return
remove_layer(TAIL_NORTH_LAYER)
remove_layer(TAIL_NORTH_LAYER_ALT)
remove_layer(TAIL_SOUTH_LAYER)
remove_layer(TAIL_UPPER_LAYER)
remove_layer(TAIL_UPPER_LAYER_ALT)
remove_layer(TAIL_LOWER_LAYER)
var/tail_layer = GET_TAIL_LAYER
var/tail_layer = get_tail_layer()
if(src.tail_style && src.tail_style.clip_mask_state)
tail_layer = TAIL_NORTH_LAYER // Use default, let clip mask handle everything
if(tail_alt && tail_layer == TAIL_NORTH_LAYER)
tail_layer = TAIL_NORTH_LAYER_ALT
tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything
if(tail_alt && tail_layer == TAIL_UPPER_LAYER)
tail_layer = TAIL_UPPER_LAYER_ALT
var/image/tail_image = get_tail_image()
if(tail_image)
@@ -1003,16 +1011,16 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
return tail_icon
/mob/living/carbon/human/proc/set_tail_state(var/t_state)
var/tail_layer = GET_TAIL_LAYER
var/tail_layer = get_tail_layer()
if(src.tail_style && src.tail_style.clip_mask_state)
tail_layer = TAIL_NORTH_LAYER // Use default, let clip mask handle everything
if(tail_alt && tail_layer == TAIL_NORTH_LAYER)
tail_layer = TAIL_NORTH_LAYER_ALT
tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything
if(tail_alt && tail_layer == TAIL_UPPER_LAYER)
tail_layer = TAIL_UPPER_LAYER_ALT
var/image/tail_overlay = overlays_standing[tail_layer]
remove_layer(TAIL_NORTH_LAYER)
remove_layer(TAIL_NORTH_LAYER_ALT)
remove_layer(TAIL_SOUTH_LAYER)
remove_layer(TAIL_UPPER_LAYER)
remove_layer(TAIL_UPPER_LAYER_ALT)
remove_layer(TAIL_LOWER_LAYER)
if(tail_overlay)
overlays_standing[tail_layer] = tail_overlay
@@ -1030,9 +1038,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
return
var/t_state = "[species.get_tail(src)]_once"
var/tail_layer = GET_TAIL_LAYER
var/tail_layer = get_tail_layer()
if(src.tail_style && src.tail_style.clip_mask_state)
tail_layer = TAIL_NORTH_LAYER // Use default, let clip mask handle everything
tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything
var/image/tail_overlay = overlays_standing[tail_layer]
if(tail_overlay && tail_overlay.icon_state == t_state)
@@ -1292,9 +1300,8 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
#undef GLOVES_LAYER
#undef BELT_LAYER
#undef SUIT_LAYER
#undef TAIL_NORTH_LAYER
#undef TAIL_SOUTH_LAYER
#undef GET_TAIL_LAYER
#undef TAIL_UPPER_LAYER
#undef TAIL_LOWER_LAYER
#undef GLASSES_LAYER
#undef BELT_LAYER_ALT
#undef SUIT_STORE_LAYER
@@ -11,6 +11,8 @@
do_colouration = 0 //Set to 1 to enable coloration using the tail color.
species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW) //This lets all races use
var/list/lower_layer_dirs = list(SOUTH)
/datum/sprite_accessory/tail/New()
. = ..()
if(clip_mask_icon && clip_mask_state)
@@ -1175,6 +1177,14 @@
color_blend_mode = ICON_MULTIPLY
ckeys_allowed = list("prettiebyrd")
/datum/sprite_accessory/tail/altevian
name = "Altevian Tail"
icon = 'icons/mob/vore/tails_vr.dmi'
icon_state = "altevian"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
lower_layer_dirs = list(SOUTH, WEST)
/datum/sprite_accessory/tail/tentacle
name = "Tentacle, colorable (vwag)"
desc = ""
@@ -1201,4 +1211,4 @@
/datum/sprite_accessory/tail/longtail/shadekin_tail/shadekin_tail_long
name = "Shadekin Long Tail"
icon_state = "shadekin_long_s"
icon_state = "shadekin_long_s"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB