mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-26 13:37:58 +01:00
Praise Be and Skkula: The PR (Skkulakin Race 2025) [READY FOR REVIEW] (#30744)
* skulk.dm placeholder for testing purposes
* Made an oopsie, fixed
* Skulk flesh color and language color testing
* Adding working language key, fixed language color
* Changed skulk flesh color, may change it again soon
* Ran tgui, hopefully fixed language color
* Changed skulk language color, hopefully for good this time
* Missed a spot
* Tgui fuckery
* If at first you don't succeed, cry to yourself for a bit then try again
* Tgui makes me violent
* Eyewear no longer save Skkulakin from flashes
* Skulk bones now hurt really bad
* Adds Skulk Sprites, Back Accessories, and other Placeholders
* Desperately trying to get body_accessories to work
* Minor name changes
* Skkulakin now have colorable eyes
* Makes the silk-spinning ability somewhat work, more changes need to be made
* Fixes the Skulks' ability to spin silk, however still needs changes
* Changed Skulks easier bone breaks into a trait
* Skulks (Now with 100% ethically sourced back spines!)
* Gives Skkulakin the Vox clothing sprites (Not counting head, glasses, or masks)
* Added update_spines_layer() for testing and help purposes
* Working on getting Skulk Backspines to change color depending on preset
* Skulk Backspines are now colored the same as your preset up spawning in (Thank you, Qwerty)
* Undefines SILK_NUTRITION_AMOUNT (I made a woopsie)
* Readds a return I may have accidentally removed at some point
* Skkulakin can now chitter
* Silk now be used to craft cloth and has an icon
* TGUI is going to make me do things
* Fixes the Brittle Bones Trait to work with Frail Quirk
* Sprite Fix
* Adds masking helpers
* Made a small woopsie
* I'm genuinely a fucking idiot
* Adds a bunch of new clothing
* Changes some clothing descriptions
* Fixes more placeholders and adds two new outfits
* Made small mistake, fixed
* Temporary change (Will revert soon)
* Reverted previous changes as the event is now over
* New Skulk Clothing, added some to the racial tab in the loadout, and made low-inquis robes orderable from cargo
* Adds High-Inquis Robes into cargo console
* Adds Skkulakin Flag (Orderable From Merch Vendor)
* Made small mistake, fixed it
* Inquisitorial Crate only has Low-Inquisitor clothing again
* Commits all offered suggestions
* Converts spans to defines and sorts out the rest of Skulk clothing (No MODs just yet)
* Gives Skulks the Nian Butt Sprite for now
* Fixes a small error with biosuits
* Fixes small coding error
* Fixes a few mor small coding errors
* Update code/modules/mob/living/carbon/human/appearance.dm
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: AVeryReluctantSpider <102713858+AVeryReluctantSpider@users.noreply.github.com>
* Update code/game/objects/items/stacks/sheets/sheet_types.dm
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: AVeryReluctantSpider <102713858+AVeryReluctantSpider@users.noreply.github.com>
* Update code/modules/economy/merch_items.dm
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: AVeryReluctantSpider <102713858+AVeryReluctantSpider@users.noreply.github.com>
* Removes 'collective' from outfit_admin.dm
* Basic Pixel-Shifting (Not Yet Complete)
* improve skulk headwear offset
* Revert "improve skulk headwear offset"
This reverts commit 2d93d61699.
* improve skulk headwear offset
* Cleans up some code and fixes ALL hats for Skkulakin
* Lets the AI speak Skkula-Runespeak, fixes Bomber Jackets and Winter Coats, makes Backpacks look better, fixes other small sprite issues
* Let them wear pants
* Update code/modules/mob/language.dm
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: AVeryReluctantSpider <102713858+AVeryReluctantSpider@users.noreply.github.com>
* Fixes masks and glasses for skkulakin
* Fixes Inquisitor Masks and adds missing Engineering Outfits
* Fixes Explorer Suits and HECK Suit for Skulks
* Fixes a few small issues and resolves some suggested changes
* Rebuilds TGUI
* Fixes Science Jumpsuits & Radsuits
* Fix Skkulakin chef belt disappearance.
* fix string assoc lookups for alists
* Update code/game/objects/structures/mirror.dm
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: AVeryReluctantSpider <102713858+AVeryReluctantSpider@users.noreply.github.com>
* Update code/modules/mob/living/carbon/human/species/skulk.dm
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: AVeryReluctantSpider <102713858+AVeryReluctantSpider@users.noreply.github.com>
---------
Signed-off-by: AVeryReluctantSpider <102713858+AVeryReluctantSpider@users.noreply.github.com>
Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Co-authored-by: warriorstar-orion <orion@snowfrost.garden>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Co-authored-by: Alfalfa Scout <alfalfascout@proton.me>
This commit is contained in:
co-authored by
Contrabang
DGamerL
PollardTheDragon
warriorstar-orion
Alfalfa Scout
parent
9e7a98cefb
commit
6a1fc4f5c2
@@ -411,6 +411,23 @@
|
||||
new_name += " [pick("Alkaid","Andromeda","Antlia","Apus","Auriga","Caelum","Camelopardalis","Canes Venatici","Carinae","Cassiopeia","Centauri","Circinus","Cygnus","Dorado","Draco","Eridanus","Errakis","Fornax","Gliese","Grus","Horologium","Hydri","Lacerta","Leo Minor","Lupus","Lynx","Maffei","Megrez","Messier","Microscopium","Monocerotis","Muscae","Ophiuchi","Orion","Pegasi","Persei","Perseus","Polaris","Pyxis","Sculptor","Syrma","Telescopium","Tianyi","Triangulum","Trifid","Tucana","Tycho","Vir","Volans","Zavyava")]"
|
||||
return new_name
|
||||
|
||||
/datum/language/skulk
|
||||
name = "Skkula-Runespeak"
|
||||
desc = "A language comprised mostly of chittering, laced with psionic resonations used to convey urgency and emotion. Utterly esoteric to the unenlightened."
|
||||
speech_verb = "resonates"
|
||||
ask_verb = "pulses"
|
||||
exclaim_verbs = list("thunders")
|
||||
whisper_verb = "warps"
|
||||
colour = "skulk"
|
||||
key = "8"
|
||||
flags = RESTRICTED | WHITELISTED
|
||||
syllables = list("┤ᖋ|:ᖋᔮᒣ╎ᔮ", "ᖋリᒣ|:॥.", "ᒣ⍑ᒷ ▭", "⍊ᒷ∷", "ᒷ⎓", "╎リ┤ ▭ ⍑╎ᒲ")
|
||||
|
||||
/datum/language/skulk/get_random_name()
|
||||
var/new_name = "[pick("Akki", "Akku", "Avvi", "Bakku", "Bakki", "Bakk", "Kkath", "Makkith", "Vullo", "Mortis", "Vaal", "Kkari", "Thrakk", "Skkiv", "Llav", "Vykke", "Hakki", "Askki", "Tavv", "Maskii", "Tokko", "Kkavik", "Morkk", "Savv")]"
|
||||
new_name += "-[pick("Akku", "Avvi", "Bakku", "Bakki", "Bakk", "Kkath", "Makkith", "Vullo", "Mortis", "Vaal", "Kkari", "Thrakk", "Skkiv", "Llav", "Vykke", "Hakki", "Askki", "Tavv", "Maskii", "Tokko", "Kkavik", "Morkk", "Savv")]"
|
||||
return new_name
|
||||
|
||||
/datum/language/common
|
||||
name = "Galactic Common"
|
||||
desc = "Originally a carefully crafted fusion of various Human and Skrell dialects, Galactic Common is the most commonly spoken language in the Sector, and incorporates influences from nearly every known sapient species."
|
||||
|
||||
@@ -121,6 +121,7 @@
|
||||
m_styles["tail"] = "None"
|
||||
update_tail_layer()
|
||||
update_wing_layer()
|
||||
update_spines_layer()
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/human/proc/change_alt_head(alternate_head)
|
||||
|
||||
@@ -274,3 +274,31 @@ GLOBAL_LIST_EMPTY(body_accessory_by_species)
|
||||
/datum/body_accessory/wing/bluespace
|
||||
name = "Bluespace Wings"
|
||||
icon_state = "bluespace"
|
||||
|
||||
// Skulk spines
|
||||
/datum/body_accessory/spines
|
||||
icon = 'icons/mob/sprite_accessories/skulk/skulk_spines.dmi'
|
||||
animated_icon = null
|
||||
name = "Report this bug on github"
|
||||
icon_state = "hunter1"
|
||||
allowed_species = list("Skkulakin")
|
||||
has_behind = TRUE
|
||||
|
||||
/datum/body_accessory/spines/hunter
|
||||
name = "Hunter"
|
||||
|
||||
/datum/body_accessory/spines/cosmic
|
||||
name = "Cosmic"
|
||||
icon_state = "cosmic1"
|
||||
|
||||
/datum/body_accessory/spines/illusive
|
||||
name = "Illusive"
|
||||
icon_state = "illusive1"
|
||||
|
||||
/datum/body_accessory/spines/venom
|
||||
name = "Venom"
|
||||
icon_state = "venom1"
|
||||
|
||||
/datum/body_accessory/spines/hunger1
|
||||
name = "Hunger"
|
||||
icon_state = "hunger1"
|
||||
|
||||
@@ -94,6 +94,8 @@
|
||||
var/tail
|
||||
/// Same as tail but wing
|
||||
var/wing
|
||||
/// Same as wing but with back spines
|
||||
var/spines
|
||||
|
||||
var/tail_wagging = FALSE
|
||||
|
||||
|
||||
@@ -667,6 +667,16 @@
|
||||
sound = 'sound/effects/mob_effects/flutter.ogg'
|
||||
species_type_whitelist_typecache = list(/datum/species/moth)
|
||||
|
||||
/datum/emote/living/carbon/human/chitter
|
||||
key = "chitter"
|
||||
key_third_person = "chitters"
|
||||
message = "chitters."
|
||||
message_param = "chitters at %t."
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
sound = "sound/effects/chitter.ogg"
|
||||
species_type_whitelist_typecache = list(/datum/species/skulk)
|
||||
muzzled_noises = list("frustrated")
|
||||
|
||||
/datum/emote/living/carbon/human/quill
|
||||
key = "quill"
|
||||
key_third_person = "quills"
|
||||
|
||||
@@ -242,6 +242,9 @@
|
||||
if(!body_accessory)
|
||||
change_body_accessory("Plain Wings")
|
||||
|
||||
/mob/living/carbon/human/skulk/Initialize(mapload)
|
||||
. = ..(mapload, /datum/species/skulk)
|
||||
|
||||
/mob/living/carbon/human/get_status_tab_items()
|
||||
var/list/status_tab_data = ..()
|
||||
. = status_tab_data
|
||||
@@ -863,8 +866,9 @@
|
||||
var/obj/item/clothing/head/HFP = head //if yes gets the flash protection value from that item
|
||||
number += HFP.flash_protect
|
||||
if(istype(glasses, /obj/item/clothing/glasses)) //glasses
|
||||
var/obj/item/clothing/glasses/GFP = glasses
|
||||
number += GFP.flash_protect
|
||||
if(!is_species(src, /datum/species/skulk)) // makes sure skkulakin properly suffer
|
||||
var/obj/item/clothing/glasses/GFP = glasses
|
||||
number += GFP.flash_protect
|
||||
if(istype(wear_mask, /obj/item/clothing/mask)) //mask
|
||||
var/obj/item/clothing/mask/MFP = wear_mask
|
||||
number += MFP.flash_protect
|
||||
@@ -1216,6 +1220,8 @@
|
||||
|
||||
wing = dna.species.wing
|
||||
|
||||
spines = dna.species.spines
|
||||
|
||||
maxHealth = dna.species.total_health
|
||||
|
||||
if(dna.species.language)
|
||||
|
||||
@@ -104,10 +104,9 @@ Please contact me on #coderbus IRC. ~Carn x
|
||||
*/
|
||||
|
||||
/mob/living/carbon/human/proc/apply_overlay(cache_index)
|
||||
. = overlays_standing[cache_index]
|
||||
SEND_SIGNAL(src, COMSIG_CARBON_APPLY_OVERLAY, cache_index, .)
|
||||
if(.)
|
||||
add_overlay(.)
|
||||
SEND_SIGNAL(src, COMSIG_CARBON_APPLY_OVERLAY, cache_index)
|
||||
if(overlays_standing[cache_index])
|
||||
add_overlay(overlays_standing[cache_index])
|
||||
|
||||
/mob/living/carbon/human/proc/remove_overlay(cache_index)
|
||||
var/I = overlays_standing[cache_index]
|
||||
@@ -275,6 +274,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
//tail
|
||||
update_tail_layer()
|
||||
update_wing_layer()
|
||||
update_spines_layer()
|
||||
update_int_organs()
|
||||
//head accessory
|
||||
update_head_accessory()
|
||||
@@ -421,7 +421,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
return
|
||||
|
||||
var/species_name = ""
|
||||
if(dna.species.name in list("Drask", "Grey", "Vox", "Kidan"))
|
||||
if(dna.species.name in list("Drask", "Grey", "Vox", "Kidan", "Skkulakin"))
|
||||
species_name = "_[lowertext(dna.species.sprite_sheet_name)]"
|
||||
|
||||
var/icon/hands_mask = icon('icons/mob/body_accessory.dmi', "accessory_none_s") //Needs a blank icon, not actually related to markings at all
|
||||
@@ -562,6 +562,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
force_update_limbs()
|
||||
update_tail_layer()
|
||||
update_wing_layer()
|
||||
update_spines_layer()
|
||||
update_halo_layer()
|
||||
update_eyes_overlay_layer()
|
||||
overlays.Cut() // Force all overlays to regenerate
|
||||
@@ -887,6 +888,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
apply_overlay(SUIT_LAYER)
|
||||
update_tail_layer()
|
||||
update_wing_layer()
|
||||
update_spines_layer()
|
||||
update_collar()
|
||||
|
||||
/mob/living/carbon/human/update_inv_pockets()
|
||||
@@ -1146,12 +1148,11 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
if(!istype(body_accessory, /datum/body_accessory/wing))
|
||||
if(dna.species.optional_body_accessory)
|
||||
return
|
||||
else
|
||||
body_accessory = GLOB.body_accessory_by_name[dna.species.default_bodyacc]
|
||||
|
||||
if(istype(body_accessory, /datum/body_accessory/spines))
|
||||
return // fuck right off thanks
|
||||
body_accessory = GLOB.body_accessory_by_name[dna.species.default_bodyacc]
|
||||
if(!body_accessory.try_restrictions(src))
|
||||
return
|
||||
|
||||
var/icon/wings_icon = new /icon(body_accessory.icon, body_accessory.icon_state)
|
||||
if(HAS_TRAIT(src, TRAIT_I_WANT_BRAINS))
|
||||
wings_icon.ColorTone(COLORTONE_DEAD_EXT_ORGAN)
|
||||
@@ -1174,6 +1175,41 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
apply_overlay(WING_UNDERLIMBS_LAYER)
|
||||
apply_overlay(WING_LAYER)
|
||||
|
||||
/mob/living/carbon/human/proc/update_spines_layer()
|
||||
remove_overlay(SPINES_UNDERLIMBS_LAYER)
|
||||
remove_overlay(SPINES_LAYER)
|
||||
if(!istype(body_accessory, /datum/body_accessory/spines))
|
||||
if(dna.species.optional_body_accessory)
|
||||
return
|
||||
if(istype(body_accessory, /datum/body_accessory/wing))
|
||||
return // See above
|
||||
body_accessory = GLOB.body_accessory_by_name[dna.species.default_bodyacc]
|
||||
if(!body_accessory.try_restrictions(src))
|
||||
return
|
||||
|
||||
var/icon/spines_icon = new /icon(body_accessory.icon, spines)
|
||||
if(HAS_TRAIT(src, TRAIT_I_WANT_BRAINS))
|
||||
spines_icon.ColorTone(COLORTONE_DEAD_EXT_ORGAN)
|
||||
spines_icon.SetIntensity(0.7)
|
||||
var/mutable_appearance/spines_ma = mutable_appearance(spines_icon, layer = -SPINES_LAYER)
|
||||
spines_ma.pixel_x = body_accessory.pixel_x_offset
|
||||
spines_ma.pixel_y = body_accessory.pixel_y_offset
|
||||
overlays_standing[SPINES_LAYER] = spines_ma
|
||||
|
||||
if(body_accessory.has_behind)
|
||||
var/icon/under_spines_icon = new /icon(body_accessory.icon, "[spines]_BEHIND")
|
||||
if(HAS_TRAIT(src, TRAIT_I_WANT_BRAINS))
|
||||
under_spines_icon.ColorTone(COLORTONE_DEAD_EXT_ORGAN)
|
||||
under_spines_icon.SetIntensity(0.7)
|
||||
var/mutable_appearance/under_spines = mutable_appearance(under_spines_icon, layer = -SPINES_UNDERLIMBS_LAYER)
|
||||
under_spines.pixel_x = body_accessory.pixel_x_offset
|
||||
under_spines.pixel_y = body_accessory.pixel_y_offset
|
||||
overlays_standing[SPINES_UNDERLIMBS_LAYER] = under_spines
|
||||
|
||||
apply_overlay(SPINES_UNDERLIMBS_LAYER)
|
||||
apply_overlay(SPINES_LAYER)
|
||||
|
||||
// Warning to all that come here: This proc is also used to properly render nian wings and skulk spines. Also it sucks. Have fun!
|
||||
/mob/living/carbon/human/proc/update_tail_layer()
|
||||
// If the tail is currently wagging, don't stop wagging.
|
||||
if(tail_wagging)
|
||||
@@ -1198,7 +1234,11 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
|
||||
if(body_accessory)
|
||||
if(body_accessory.try_restrictions(src))
|
||||
var/icon/accessory_s = new/icon("icon" = body_accessory.icon, "icon_state" = body_accessory.icon_state)
|
||||
var/icon/accessory_s
|
||||
if(istype(body_accessory, /datum/body_accessory/spines))
|
||||
accessory_s = new/icon("icon" = body_accessory.icon, "icon_state" = spines)
|
||||
else
|
||||
accessory_s = new/icon("icon" = body_accessory.icon, "icon_state" = body_accessory.icon_state)
|
||||
if(HAS_TRAIT(src, TRAIT_I_WANT_BRAINS))
|
||||
accessory_s.ColorTone(COLORTONE_DEAD_EXT_ORGAN)
|
||||
accessory_s.SetIntensity(0.7)
|
||||
@@ -1382,8 +1422,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
|
||||
|
||||
/mob/living/carbon/human/handle_transform_change()
|
||||
..()
|
||||
update_tail_layer()
|
||||
update_wing_layer()
|
||||
update_body()
|
||||
|
||||
//Adds a collar overlay above the helmet layer if the suit has one
|
||||
// Suit needs an identically named sprite in icons/mob/clothing/collar.dmi
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
var/tail
|
||||
/// like tail but wings
|
||||
var/wing
|
||||
/// like wings but spines
|
||||
var/spines
|
||||
var/datum/unarmed_attack/unarmed //For empty hand harm-intent attack
|
||||
var/unarmed_type = /datum/unarmed_attack
|
||||
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
/datum/species/skulk
|
||||
name = "Skkulakin"
|
||||
name_plural = "Skkulakin"
|
||||
max_age = 70
|
||||
icobase = 'icons/mob/human_races/skulk/r_skulkbrown.dmi'
|
||||
language = "Skkula-Runespeak"
|
||||
unarmed_type = /datum/unarmed_attack/claws
|
||||
|
||||
blurb = "The Skkulakin are a species of psionically-attuned furred arthropods hailing from the Western Orion Spur. \
|
||||
Originating from the planet Votum-Accorium, an arctic world ruled by the brutal theocratic government known as the Silver Collective.<br/><br/> \
|
||||
Despite owning a large amount of territory in the western arm of the sector, the plasma supply their empire relies on is being stretched thin. \
|
||||
This has forced the once-proud species to desperately branch out and seek a solution to their critical shortage."
|
||||
|
||||
cold_level_1 = 240
|
||||
cold_level_2 = 180
|
||||
cold_level_3 = 100
|
||||
|
||||
heat_level_1 = 340
|
||||
heat_level_2 = 380
|
||||
heat_level_3 = 440
|
||||
|
||||
brain_mod = 0.8
|
||||
|
||||
species_traits = list()
|
||||
inherent_traits = list(TRAIT_BRITTLE_BONES)
|
||||
inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_BUG
|
||||
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
|
||||
bodyflags = HAS_BODY_MARKINGS | HAS_BACK_SPINES | HAS_ICON_SKIN_TONE | SHAVED | HAS_BODY_ACCESSORY
|
||||
dietflags = DIET_OMNI
|
||||
flesh_color = "#e3e2dd"
|
||||
|
||||
default_hair = "Scribe"
|
||||
default_bodyacc = "Illusive"
|
||||
spines = "Illusive1"
|
||||
|
||||
eyes = "skulk_eyes_s"
|
||||
butt_sprite = "nian"
|
||||
|
||||
optional_body_accessory = FALSE
|
||||
|
||||
reagent_tag = PROCESS_ORG
|
||||
|
||||
icon_skin_tones = alist(
|
||||
1 = "Blackgate",
|
||||
2 = "Talwyrm",
|
||||
3 = "Valcore",
|
||||
4 = "Ossya",
|
||||
5 = "Highfield",
|
||||
6 = "Votum-Accorium"
|
||||
)
|
||||
|
||||
has_organ = list(
|
||||
"heart" = /obj/item/organ/internal/heart/skulk,
|
||||
"lungs" = /obj/item/organ/internal/lungs/skulk,
|
||||
"liver" = /obj/item/organ/internal/liver/skulk,
|
||||
"kidneys" = /obj/item/organ/internal/kidneys/skulk,
|
||||
"brain" = /obj/item/organ/internal/brain/skulk,
|
||||
"eyes" = /obj/item/organ/internal/eyes/skulk
|
||||
)
|
||||
|
||||
suicide_messages = list(
|
||||
"is attempting to blow up their mind with their mind!",
|
||||
"is jamming their claws into their eye sockets!",
|
||||
"is tearing open their arm with their fangs!",
|
||||
"is twisting their own neck!",
|
||||
"is holding their breath!")
|
||||
|
||||
/datum/species/skulk/on_species_gain(mob/living/carbon/human/H)
|
||||
..()
|
||||
updatespeciescolor(H)
|
||||
H.update_icons()
|
||||
var/datum/action/innate/spin_silk/spin_silk = new()
|
||||
spin_silk.Grant(H)
|
||||
|
||||
/datum/species/skulk/on_species_loss(mob/living/carbon/human/H)
|
||||
..()
|
||||
for(var/datum/action/innate/spin_silk/spin_silk in H.actions)
|
||||
spin_silk.Remove(H)
|
||||
|
||||
/datum/species/skulk/updatespeciescolor(mob/living/carbon/human/H, owner_sensitive = 1) // Handling species-specific skin-tones for the Skulk race.
|
||||
if(H.dna.species.bodyflags & HAS_ICON_SKIN_TONE)
|
||||
var/new_icobase = 'icons/mob/human_races/skulk/r_skulkblack.dmi' // Default Blackgate Skkulakin.
|
||||
var/current_spine_type = null
|
||||
if(H.body_accessory)
|
||||
current_spine_type = lowertext("[H.body_accessory.name]")
|
||||
|
||||
var/chosen_spine_color = 1
|
||||
switch(H.s_tone)
|
||||
if(1) // Blackgate Skkulakin.
|
||||
new_icobase = 'icons/mob/human_races/skulk/r_skulkblack.dmi'
|
||||
chosen_spine_color = 1
|
||||
if(2) // Talwyrm Skkulakin.
|
||||
new_icobase = 'icons/mob/human_races/skulk/r_skulkbrown.dmi'
|
||||
chosen_spine_color = 2
|
||||
if(3) // Valcore Skkulakin.
|
||||
new_icobase = 'icons/mob/human_races/skulk/r_skulkred.dmi'
|
||||
chosen_spine_color = 3
|
||||
if(4) // Ossya Skkulakin.
|
||||
new_icobase = 'icons/mob/human_races/skulk/r_skulkblue.dmi'
|
||||
chosen_spine_color = 4
|
||||
if(5) // Highfield Skkulakin.
|
||||
new_icobase = 'icons/mob/human_races/skulk/r_skulkgreen.dmi'
|
||||
chosen_spine_color = 5
|
||||
if(6) // Votum-Accorium Skkulakin.
|
||||
new_icobase = 'icons/mob/human_races/skulk/r_skulkwhite.dmi'
|
||||
chosen_spine_color = 6
|
||||
if(H.body_accessory && current_spine_type)
|
||||
H.spines = "[current_spine_type][chosen_spine_color]"
|
||||
|
||||
H.change_icobase(new_icobase, owner_sensitive)
|
||||
|
||||
/datum/action/innate/spin_silk
|
||||
name = "Spin Silk"
|
||||
desc = "Use your spinnerets to create a spool of silk that can be used for crafting."
|
||||
check_flags = AB_CHECK_HANDS_BLOCKED | AB_CHECK_STUNNED | AB_CHECK_RESTRAINED | AB_CHECK_CONSCIOUS
|
||||
button_icon = 'icons/obj/stacks/organic.dmi'
|
||||
button_icon_state = "sheet-silk"
|
||||
var/cooldown = 0
|
||||
var/cooldown_duration = 10 SECONDS
|
||||
|
||||
#define SILK_NUTRITION_AMOUNT 90
|
||||
|
||||
/datum/action/innate/spin_silk/Activate()
|
||||
var/mob/living/carbon/human/user = owner
|
||||
if(world.time <= cooldown)
|
||||
to_chat(user, SPAN_WARNING("You are still recovering from spinning silk. Wait [round((cooldown - world.time) / 10)] seconds and try again."))
|
||||
return
|
||||
var/mob/living/carbon/human/skulk/H = owner
|
||||
if(H.nutrition < SILK_NUTRITION_AMOUNT)
|
||||
to_chat(user, SPAN_WARNING("You are too hungry to spin silk right now."))
|
||||
return
|
||||
var/obj/item/stack/sheet/silk/silk
|
||||
if(user.get_active_hand() && user.get_inactive_hand())
|
||||
to_chat(user, SPAN_WARNING("You don't have any free hands!"))
|
||||
return
|
||||
H.visible_message(SPAN_WARNING("[H] begins spinning a small amount of silk..."), SPAN_WARNING("You begin spinning a small amount of silk... (This will take [5] seconds, and you must hold still.)"))
|
||||
if(!do_after_once(H, 5 SECONDS, TRUE, H, attempt_cancel_message = "You stop spinning silk."))
|
||||
if(H.incapacitated())
|
||||
to_chat(user, SPAN_WARNING("You cannot spin silk in your current state!"))
|
||||
return
|
||||
silk = new(get_turf(H), 1)
|
||||
user.put_in_hands(silk)
|
||||
cooldown = world.time + cooldown_duration
|
||||
H.adjust_nutrition(-SILK_NUTRITION_AMOUNT)
|
||||
to_chat(user, SPAN_WARNING("You spin a small amount of silk."))
|
||||
|
||||
#undef SILK_NUTRITION_AMOUNT
|
||||
@@ -253,6 +253,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
|
||||
add_language("Bubblish", 1)
|
||||
add_language("Clownish", 1)
|
||||
add_language("Tkachi", 1)
|
||||
add_language("Skkula-Runespeak", 1)
|
||||
|
||||
if(!safety)//Only used by AIize() to successfully spawn an AI.
|
||||
if(!B)//If there is no player/brain inside.
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
user.add_language("Clownish")
|
||||
user.add_language("Cygni Standard")
|
||||
user.add_language("Tkachi")
|
||||
user.add_language("Skkula-Runespeak")
|
||||
else
|
||||
user.remove_language("Sinta'unathi")
|
||||
user.remove_language("Siik'tajr")
|
||||
@@ -91,6 +92,7 @@
|
||||
user.remove_language("Clownish")
|
||||
user.remove_language("Cygni Standard")
|
||||
user.remove_language("Tkachi")
|
||||
user.remove_language("Skkula-Runespeak")
|
||||
|
||||
/datum/pai_software/translator/is_active(mob/living/silicon/pai/user)
|
||||
return user.translator_on
|
||||
|
||||
@@ -293,6 +293,7 @@
|
||||
R.add_language("Orluum", FALSE)
|
||||
R.add_language("Clownish", FALSE)
|
||||
R.add_language("Tkachi", FALSE)
|
||||
R.add_language("Skkula-Runespeak", FALSE)
|
||||
|
||||
///Adds armor to a cyborg. Normaly resets it to 0 across the board, unless the module has an armor defined.
|
||||
/obj/item/robot_module/proc/add_armor(mob/living/silicon/robot/R)
|
||||
@@ -670,6 +671,7 @@
|
||||
R.add_language("Clownish",1)
|
||||
R.add_language("Cygni Standard", 1)
|
||||
R.add_language("Tkachi", 1)
|
||||
R.add_language("Skkula-Runespeak", 1)
|
||||
|
||||
// Mining
|
||||
/obj/item/robot_module/miner
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/datum/sprite_accessory/body_markings/tattoo/skulk
|
||||
icon = 'icons/mob/sprite_accessories/skulk/skulk_body_markings.dmi'
|
||||
species_allowed = list("Skkulakin")
|
||||
|
||||
/datum/sprite_accessory/body_markings/tattoo/skulk/danger_skulk
|
||||
name = "Danger"
|
||||
icon_state = "danger"
|
||||
|
||||
/datum/sprite_accessory/body_markings/tattoo/skulk/royal_skulk
|
||||
name = "Royal"
|
||||
icon_state = "royal"
|
||||
|
||||
/datum/sprite_accessory/body_markings/tattoo/skulk/grunt_skulk
|
||||
name = "Grunt"
|
||||
icon_state = "grunt"
|
||||
|
||||
/datum/sprite_accessory/body_markings/tattoo/skulk/mantis_skulk
|
||||
name = "Mantis"
|
||||
icon_state = "mantis"
|
||||
|
||||
/datum/sprite_accessory/body_markings/tattoo/skulk/striped_skulk
|
||||
name = "Striped"
|
||||
icon_state = "striped"
|
||||
@@ -0,0 +1,76 @@
|
||||
/datum/sprite_accessory/hair/skulk
|
||||
icon = 'icons/mob/sprite_accessories/skulk/skulk_hair.dmi'
|
||||
species_allowed = list("Skkulakin")
|
||||
glasses_over = 1
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/artificer
|
||||
name = "Artificer"
|
||||
icon_state = "artificer"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/priest
|
||||
name = "Priest"
|
||||
icon_state = "priest"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/cleric
|
||||
name = "Cleric"
|
||||
icon_state = "cleric"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/brewmaster
|
||||
name = "Brewmaster"
|
||||
icon_state = "brewmaster"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/alchemist
|
||||
name = "Alchemist"
|
||||
icon_state = "alchemist"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/agrolyte
|
||||
name = "Agrolyte"
|
||||
icon_state = "agrolyte"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/monk
|
||||
name = "Monk"
|
||||
icon_state = "monk"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/archivist
|
||||
name = "Archivist"
|
||||
icon_state = "archivist"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/scribe
|
||||
name = "Scribe"
|
||||
icon_state = "scribe"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/seer
|
||||
name = "Seer"
|
||||
icon_state = "seer"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/warrior
|
||||
name = "Warrior"
|
||||
icon_state = "warrior"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/lowinquis
|
||||
name = "Low-Inquisitor"
|
||||
icon_state = "lowinquis"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/highinquis
|
||||
name = "High-Inquisitor"
|
||||
icon_state = "highinquis"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/supremeinquis
|
||||
name = "Supreme-Inquisitor"
|
||||
icon_state = "supremeinquis"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/acolyte
|
||||
name = "Acolyte"
|
||||
icon_state = "acolyte"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/highacolyte
|
||||
name = "High-Acolyte"
|
||||
icon_state = "highacolyte"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/lordforeman
|
||||
name = "Lord-Foreman"
|
||||
icon_state = "lordforeman"
|
||||
|
||||
/datum/sprite_accessory/hair/skulk/silverinquis
|
||||
name = "Silver-Inquisitor"
|
||||
icon_state = "silverinquis"
|
||||
@@ -76,7 +76,7 @@
|
||||
icon = 'icons/mob/human_face.dmi' // Keep bald hair here, as for some reason, putting it elsewhere lead to it being colourable - Also it make sense as it is shared by everyone.
|
||||
name = "Bald"
|
||||
icon_state = "bald"
|
||||
species_allowed = list("Human", "Unathi", "Vox", "Diona", "Kidan", "Grey", "Plasmaman", "Skeleton", "Vulpkanin", "Tajaran", "Nian")
|
||||
species_allowed = list("Human", "Unathi", "Vox", "Diona", "Kidan", "Grey", "Plasmaman", "Skeleton", "Vulpkanin", "Tajaran", "Nian", "Skulk")
|
||||
glasses_over = 1
|
||||
|
||||
/datum/sprite_accessory/facial_hair
|
||||
@@ -96,7 +96,7 @@
|
||||
|
||||
/datum/sprite_accessory/head_accessory/none
|
||||
name = "None"
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Grey", "Kidan", "Machine", "Tajaran", "Vulpkanin", "Skrell", "Slime People", "Skeleton", "Vox")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Grey", "Kidan", "Machine", "Tajaran", "Vulpkanin", "Skrell", "Slime People", "Skeleton", "Vox", "Skulk")
|
||||
|
||||
/* BODY MARKINGS */
|
||||
|
||||
@@ -171,17 +171,18 @@
|
||||
///////////////////////////
|
||||
/datum/sprite_accessory/underwear
|
||||
icon = 'icons/mob/clothing/underwear.dmi'
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian", "Skkulakin")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/underwear.dmi',
|
||||
"Grey" = 'icons/mob/clothing/species/grey/underwear.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/underwear.dmi'
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/underwear.dmi',
|
||||
"Skkulakin" = 'icons/mob/clothing/species/skkulakin/underwear.dmi'
|
||||
)
|
||||
|
||||
/datum/sprite_accessory/underwear/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian", "Skkulakin")
|
||||
|
||||
/datum/sprite_accessory/underwear/male
|
||||
body_type = MALE
|
||||
@@ -301,17 +302,18 @@
|
||||
////////////////////////////
|
||||
/datum/sprite_accessory/undershirt
|
||||
icon = 'icons/mob/clothing/underwear.dmi'
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian", "Skkulakin")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/underwear.dmi',
|
||||
"Grey" = 'icons/mob/clothing/species/grey/underwear.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/underwear.dmi'
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/underwear.dmi',
|
||||
"Skkulakin" = 'icons/mob/clothing/species/skkulakin/underwear.dmi'
|
||||
)
|
||||
|
||||
/datum/sprite_accessory/undershirt/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian", "Skkulakin")
|
||||
|
||||
//plain color shirts
|
||||
/datum/sprite_accessory/undershirt/shirt_white
|
||||
@@ -583,18 +585,18 @@
|
||||
///////////////////////
|
||||
/datum/sprite_accessory/socks
|
||||
icon = 'icons/mob/clothing/underwear.dmi'
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian", "Skkulakin")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/underwear.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/underwear.dmi',
|
||||
"Nian" = 'icons/mob/clothing/species/nian/underwear.dmi'
|
||||
|
||||
"Nian" = 'icons/mob/clothing/species/nian/underwear.dmi',
|
||||
"Skkulakin" = 'icons/mob/clothing/species/skkulakin/underwear.dmi'
|
||||
)
|
||||
|
||||
/datum/sprite_accessory/socks/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian")
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian", "Skkulakin")
|
||||
|
||||
/datum/sprite_accessory/socks/white_norm
|
||||
name = "Normal White"
|
||||
|
||||
Reference in New Issue
Block a user