mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-15 17:15:25 +01:00
Altevian base code implementation
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user