diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index d4633e3f072..54ca78aa398 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -174,6 +174,7 @@ w_class = 3.0 origin_tech = list(TECH_MATERIAL = 1) var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute + sprite_sheets = list("Resomi" = 'icons/mob/species/resomi/handcuffs.dmi') /obj/item/weapon/caution desc = "Caution! Wet Floor!" diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index bf5df08d34c..f58b491a418 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -11,6 +11,7 @@ var/global/list/obj/item/device/pda/PDAs = list() item_state = "electronic" w_class = 2.0 slot_flags = SLOT_ID | SLOT_BELT + sprite_sheets = list("Resomi" = 'icons/mob/species/resomi/id.dmi') //Main variables var/pdachoice = 1 diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 1915e5ec527..cc805cf95bd 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -94,6 +94,10 @@ icon_state = "id" item_state = "card-id" + sprite_sheets = list( + "Resomi" = 'icons/mob/species/resomi/id.dmi' + ) + var/access = list() var/registered_name = "Unknown" // The name registered_name on the card slot_flags = SLOT_ID diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 1ab42d80e24..289737cbeae 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -17,6 +17,7 @@ var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes var/cuff_sound = 'sound/weapons/handcuffs.ogg' var/cuff_type = "handcuffs" + sprite_sheets = list("Resomi" = 'icons/mob/species/resomi/handcuffs.dmi') /obj/item/weapon/handcuffs/attack(var/mob/living/carbon/C, var/mob/living/user) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 431e30d1cae..38ffaf20f71 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -17,6 +17,9 @@ slot_l_hand_str = "backpack", slot_r_hand_str = "backpack", ) + sprite_sheets = list( + "Resomi" = 'icons/mob/species/resomi/back.dmi' + ) w_class = 4 slot_flags = SLOT_BACK max_w_class = 3 diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index e83f18ff3a6..4d4c9cb1e57 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -6,6 +6,7 @@ item_state = "utility" slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined") + sprite_sheets = list("Resomi" = 'icons/mob/species/resomi/belt.dmi') var/show_above_suit = 0 diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index d2deeda6d57..a00cb019d42 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -23,6 +23,10 @@ var/list/global/tank_gauge_cache = list() throw_speed = 1 throw_range = 4 + sprite_sheets = list( + "Resomi" = 'icons/mob/species/resomi/back.dmi' + ) + var/datum/gas_mixture/air_contents = null var/distribute_pressure = ONE_ATMOSPHERE var/integrity = 3 diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index d2f11e27a85..835751bab22 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -101,6 +101,7 @@ w_class = 1.0 throwforce = 2 slot_flags = SLOT_EARS + sprite_sheets = list("Resomi" = 'icons/mob/species/resomi/ears.dmi') /obj/item/clothing/ears/attack_hand(mob/user as mob) if (!user) return @@ -208,6 +209,10 @@ BLIND // can't see anything var/vision_flags = 0 var/darkness_view = 0//Base human is 2 var/see_invisible = -1 + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Resomi" = 'icons/mob/species/resomi/eyes.dmi', + ) /obj/item/clothing/glasses/update_clothing_icon() if (ismob(src.loc)) @@ -230,7 +235,8 @@ BLIND // can't see anything attack_verb = list("challenged") species_restricted = list("exclude","Unathi","Tajara", "Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' + "Vox" = 'icons/mob/species/vox/gloves.dmi', + "Resomi" = 'icons/mob/species/resomi/gloves.dmi', ) /obj/item/clothing/gloves/update_clothing_icon() @@ -287,7 +293,8 @@ BLIND // can't see anything var/on = 0 sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/head.dmi' + "Vox" = 'icons/mob/species/vox/head.dmi', + "Resomi" = 'icons/mob/species/resomi/head.dmi' ) /obj/item/clothing/head/attack_self(mob/user) @@ -385,7 +392,8 @@ BLIND // can't see anything slot_flags = SLOT_MASK body_parts_covered = FACE|EYES sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/masks.dmi' + "Vox" = 'icons/mob/species/vox/masks.dmi', + "Resomi" = 'icons/mob/species/resomi/masks.dmi', ) var/voicechange = 0 @@ -420,7 +428,8 @@ BLIND // can't see anything var/overshoes = 0 species_restricted = list("exclude","Unathi","Tajara","Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/shoes.dmi' + "Vox" = 'icons/mob/species/vox/shoes.dmi', + "Resomi" = 'icons/mob/species/resomi/shoes.dmi', ) /obj/item/clothing/shoes/proc/draw_knife() @@ -494,7 +503,8 @@ BLIND // can't see anything w_class = 3 sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/suit.dmi' + "Vox" = 'icons/mob/species/vox/suit.dmi', + "Resomi" = 'icons/mob/species/resomi/suit.dmi' ) /obj/item/clothing/suit/update_clothing_icon() @@ -529,7 +539,8 @@ BLIND // can't see anything var/displays_id = 1 var/rolled_down = -1 //0 = unrolled, 1 = rolled, -1 = cannot be toggled sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' + "Vox" = 'icons/mob/species/vox/uniform.dmi', + "Resomi" = 'icons/mob/species/resomi/uniform.dmi' ) //convenience var for defining the icon state for the overlay used when the clothing is worn. diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 89cd162d54f..35c48d58e73 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -10,7 +10,8 @@ desc = "an ultra rare hat. It commands a certain respect." icon_state = "petehat" sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/head.dmi' + "Vox" = 'icons/mob/species/vox/head.dmi', + "Resomi" = 'icons/mob/species/resomi/head.dmi' ) /obj/item/clothing/head/collectable/slime diff --git a/code/modules/clothing/under/xenos/resomi.dm b/code/modules/clothing/under/xenos/resomi.dm new file mode 100644 index 00000000000..21c89ae1290 --- /dev/null +++ b/code/modules/clothing/under/xenos/resomi.dm @@ -0,0 +1,32 @@ +/obj/item/clothing/under/resomi + name = "small grey smock" + desc = "It looks fitted to nonhuman proportions." + icon = 'icons/obj/clothing/species/resomi/uniform.dmi' + icon_state = "resomi_grey" + worn_state = "resomi_grey" + species_restricted = list("Resomi") + +/obj/item/clothing/under/resomi/white + name = "small white smock" + icon_state = "resomi_white" + worn_state = "resomi_white" + +/obj/item/clothing/under/resomi/red + name = "small Security smock" + icon_state = "resomi_red" + worn_state = "resomi_red" + +/obj/item/clothing/under/resomi/yellow + name = "small Engineering smock" + icon_state = "resomi_yellow" + worn_state = "resomi_yellow" + +/obj/item/clothing/under/resomi/medical + name = "small Medical uniform" + icon_state = "resomi_medical" + worn_state = "resomi_medical" + +/obj/item/clothing/under/resomi/rainbow + name = "small rainbow smock" + icon_state = "resomi_rainbow" + worn_state = "resomi_rainbow" \ No newline at end of file diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 15931f44d38..5fe460795dd 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -9,7 +9,8 @@ var/list/holder_mob_icon_cache = list() show_messages = 1 sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/head.dmi' + "Vox" = 'icons/mob/species/vox/head.dmi', + "Resomi" = 'icons/mob/species/resomi/head.dmi' ) origin_tech = null diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index 53d42c47690..5a5377ae6a1 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -115,6 +115,25 @@ else return pick(ai_names) +/datum/language/resomi + name = "Resomi" + desc = "A trilling language spoken by the diminutive Resomi." + speech_verb = "chirps" + ask_verb = "chirrups" + exclaim_verb = "trills" + colour = "alien" + key = "v" + flags = WHITELISTED + space_chance = 50 + syllables = list( + "ca", "ra", "ma", "sa", "na", "ta", "la", "sha", "scha", "a", "a", + "ce", "re", "me", "se", "ne", "te", "le", "she", "sche", "e", "e", + "ci", "ri", "mi", "si", "ni", "ti", "li", "shi", "schi", "i", "i" + ) + +/datum/language/resomi/get_random_name(gender) + return ..(gender, 1, 4, 1.5) + //Syllable Lists /* This list really long, mainly because I can't make up my mind about which mandarin syllables should be removed, diff --git a/code/modules/mob/living/carbon/human/species/station/resomi.dm b/code/modules/mob/living/carbon/human/species/station/resomi.dm new file mode 100644 index 00000000000..238f022aabb --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/station/resomi.dm @@ -0,0 +1,114 @@ +/datum/species/resomi + name = "Resomi" + name_plural = "Resomii" + blurb = "A race of feathered raptors who developed on a cold world, almost \ + outside of the Goldilocks zone. Extremely fragile, they developed hunting skills \ + that emphasized taking out their prey without themselves getting hit. They are an \ + advanced post-scarcity culture on good terms with Skrellian and Human interests." + + num_alternate_languages = 2 + secondary_langs = list("Resomi") + name_language = "Resomi" + + blood_color = "#D514F7" + flesh_color = "#5F7BB0" + base_color = "#001144" + tail = "resomitail" + tail_hair = "feathers" + + icobase = 'icons/mob/human_races/r_resomi.dmi' + deform = 'icons/mob/human_races/r_resomi.dmi' + damage_overlays = 'icons/mob/human_races/masks/dam_resomi.dmi' + damage_mask = 'icons/mob/human_races/masks/dam_mask_resomi.dmi' + blood_mask = 'icons/mob/human_races/masks/blood_resomi.dmi' + + eyes = "eyes_resomi" + slowdown = -1 + total_health = 50 + brute_mod = 1.35 + burn_mod = 1.35 + mob_size = MOB_SMALL + holder_type = /obj/item/weapon/holder/human + short_sighted = 1 + gluttonous = 1 + + spawn_flags = CAN_JOIN | IS_WHITELISTED + appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_COLOR | HAS_EYE_COLOR + bump_flag = MONKEY + swap_flags = MONKEY|SLIME|SIMPLE_ANIMAL + push_flags = MONKEY|SLIME|SIMPLE_ANIMAL|ALIEN + + cold_level_1 = 180 + cold_level_2 = 130 + cold_level_3 = 70 + heat_level_1 = 320 + heat_level_2 = 370 + heat_level_3 = 600 + heat_discomfort_level = 292 + heat_discomfort_strings = list( + "Your feathers prickle in the heat.", + "You feel uncomfortably warm.", + ) + cold_discomfort_level = 180 + + has_limbs = list( + "chest" = list("path" = /obj/item/organ/external/chest), + "groin" = list("path" = /obj/item/organ/external/groin), + "head" = list("path" = /obj/item/organ/external/head), + "l_arm" = list("path" = /obj/item/organ/external/arm), + "r_arm" = list("path" = /obj/item/organ/external/arm/right), + "l_leg" = list("path" = /obj/item/organ/external/leg), + "r_leg" = list("path" = /obj/item/organ/external/leg/right), + "l_hand" = list("path" = /obj/item/organ/external/hand/resomi), + "r_hand" = list("path" = /obj/item/organ/external/hand/right/resomi), + "l_foot" = list("path" = /obj/item/organ/external/foot/resomi), + "r_foot" = list("path" = /obj/item/organ/external/foot/right/resomi) + ) + + has_organ = list( + "heart" = /obj/item/organ/heart, + "lungs" = /obj/item/organ/lungs, + "liver" = /obj/item/organ/liver, + "kidneys" = /obj/item/organ/kidneys, + "brain" = /obj/item/organ/brain, + "eyes" = /obj/item/organ/eyes + ) + + unarmed_types = list( + /datum/unarmed_attack/bite/sharp, + /datum/unarmed_attack/claws, + /datum/unarmed_attack/stomp/weak + ) + + var/shock_cap = 30 + var/hallucination_cap = 25 + +// I'm... so... ronrery, so ronery... +/datum/species/resomi/handle_environment_special(var/mob/living/carbon/human/H) + + // If they're dead or unconcious they're a bit beyond this kind of thing. + if(H.stat) + return + + // No point processing if we're already stressing the hell out. + if(H.hallucination >= hallucination_cap && H.shock_stage >= shock_cap) + return + + // Check for company. + for(var/mob/living/M in viewers(H)) + if(M == H || M.stat == DEAD || M.invisibility > H.see_invisible) + continue + if(M.faction == "neutral" || M.faction == H.faction) + return + + // No company? Suffer :( + if(H.shock_stage < shock_cap) + H.shock_stage += 1 + if(H.shock_stage >= shock_cap && H.hallucination < hallucination_cap) + H.hallucination += 2.5 + +/datum/species/resomi/get_vision_flags(var/mob/living/carbon/human/H) + if(!(H.sdisabilities & DEAF) && !H.ear_deaf) + return SEE_SELF|SEE_MOBS + else + return SEE_SELF diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index d8b9fbd7cfd..02c467e92e1 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -61,6 +61,21 @@ name = "Short Hair 2" icon_state = "hair_shorthair3" + resomi + name = "Resomi Plumage" + icon_state = "resomi_default" + species_allowed = list("Resomi") + + resomi_ears + name = "Resomi Ears" + icon_state = "resomi_ears" + species_allowed = list("Resomi") + + resomi_excited + name = "Resomi Spiky" + icon_state = "resomi_spiky" + species_allowed = list("Resomi") + cut name = "Cut Hair" icon_state = "hair_c" diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm index ad68815f377..8ebe9e4227a 100644 --- a/code/modules/organs/robolimbs.dm +++ b/code/modules/organs/robolimbs.dm @@ -15,7 +15,7 @@ var/datum/robolimb/basic_robolimb var/desc = "A generic unbranded robotic prosthesis." // Seen when examining a limb. var/icon = 'icons/mob/human_races/robotic.dmi' // Icon base to draw from. var/unavailable_at_chargen // If set, not available at chargen. - var/list/species_cannot_use = list() + var/list/species_cannot_use = list("Resomi") /datum/robolimb/bishop company = "Bishop" diff --git a/code/modules/organs/subtypes/resomi.dm b/code/modules/organs/subtypes/resomi.dm new file mode 100644 index 00000000000..f96cf75f03e --- /dev/null +++ b/code/modules/organs/subtypes/resomi.dm @@ -0,0 +1,8 @@ +/obj/item/organ/external/foot/resomi + body_hair = "feathers" +/obj/item/organ/external/foot/right/resomi + body_hair = "feathers" +/obj/item/organ/external/hand/resomi + body_hair = "feathers" +/obj/item/organ/external/hand/right/resomi + body_hair = "feathers" diff --git a/icons/mob/human_races/r_resomi.dmi b/icons/mob/human_races/r_resomi.dmi new file mode 100644 index 00000000000..e370ec6b1c7 Binary files /dev/null and b/icons/mob/human_races/r_resomi.dmi differ diff --git a/icons/mob/species/resomi/back.dmi b/icons/mob/species/resomi/back.dmi new file mode 100644 index 00000000000..66455ffb3c7 Binary files /dev/null and b/icons/mob/species/resomi/back.dmi differ diff --git a/icons/mob/species/resomi/belt.dmi b/icons/mob/species/resomi/belt.dmi new file mode 100644 index 00000000000..19a4a78cd92 Binary files /dev/null and b/icons/mob/species/resomi/belt.dmi differ diff --git a/icons/mob/species/resomi/ears.dmi b/icons/mob/species/resomi/ears.dmi new file mode 100644 index 00000000000..5ebdd8a5eef Binary files /dev/null and b/icons/mob/species/resomi/ears.dmi differ diff --git a/icons/mob/species/resomi/eyes.dmi b/icons/mob/species/resomi/eyes.dmi new file mode 100644 index 00000000000..17a41de7473 Binary files /dev/null and b/icons/mob/species/resomi/eyes.dmi differ diff --git a/icons/mob/species/resomi/gloves.dmi b/icons/mob/species/resomi/gloves.dmi new file mode 100644 index 00000000000..7ff6c97e692 Binary files /dev/null and b/icons/mob/species/resomi/gloves.dmi differ diff --git a/icons/mob/species/resomi/handcuffs.dmi b/icons/mob/species/resomi/handcuffs.dmi new file mode 100644 index 00000000000..12b35d4e9ce Binary files /dev/null and b/icons/mob/species/resomi/handcuffs.dmi differ diff --git a/icons/mob/species/resomi/head.dmi b/icons/mob/species/resomi/head.dmi new file mode 100644 index 00000000000..54ebad32d40 Binary files /dev/null and b/icons/mob/species/resomi/head.dmi differ diff --git a/icons/mob/species/resomi/id.dmi b/icons/mob/species/resomi/id.dmi new file mode 100644 index 00000000000..fb4d5b6e583 Binary files /dev/null and b/icons/mob/species/resomi/id.dmi differ diff --git a/icons/mob/species/resomi/masks.dmi b/icons/mob/species/resomi/masks.dmi new file mode 100644 index 00000000000..8742285ed32 Binary files /dev/null and b/icons/mob/species/resomi/masks.dmi differ diff --git a/icons/mob/species/resomi/shoes.dmi b/icons/mob/species/resomi/shoes.dmi new file mode 100644 index 00000000000..f901a71cb85 Binary files /dev/null and b/icons/mob/species/resomi/shoes.dmi differ diff --git a/icons/mob/species/resomi/suit.dmi b/icons/mob/species/resomi/suit.dmi new file mode 100644 index 00000000000..2f1ff6cb718 Binary files /dev/null and b/icons/mob/species/resomi/suit.dmi differ diff --git a/icons/mob/species/resomi/uniform.dmi b/icons/mob/species/resomi/uniform.dmi new file mode 100644 index 00000000000..b60322d498f Binary files /dev/null and b/icons/mob/species/resomi/uniform.dmi differ diff --git a/icons/obj/clothing/species/resomi/uniform.dmi b/icons/obj/clothing/species/resomi/uniform.dmi new file mode 100644 index 00000000000..817b3863cf0 Binary files /dev/null and b/icons/obj/clothing/species/resomi/uniform.dmi differ diff --git a/polaris.dme b/polaris.dme index dbd0433fe75..fc21c5ea996 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1107,6 +1107,7 @@ #include "code\modules\clothing\under\jobs\engineering.dm" #include "code\modules\clothing\under\jobs\medsci.dm" #include "code\modules\clothing\under\jobs\security.dm" +#include "code\modules\clothing\under\xenos\resomi.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\detectivework\footprints.dm" #include "code\modules\detectivework\forensics.dm" @@ -1378,6 +1379,7 @@ #include "code\modules\mob\living\carbon\human\species\outsider\vox.dm" #include "code\modules\mob\living\carbon\human\species\station\golem.dm" #include "code\modules\mob\living\carbon\human\species\station\monkey.dm" +#include "code\modules\mob\living\carbon\human\species\station\resomi.dm" #include "code\modules\mob\living\carbon\human\species\station\slime.dm" #include "code\modules\mob\living\carbon\human\species\station\station.dm" #include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_embryo.dm" @@ -1542,6 +1544,7 @@ #include "code\modules\organs\wound.dm" #include "code\modules\organs\subtypes\diona.dm" #include "code\modules\organs\subtypes\machine.dm" +#include "code\modules\organs\subtypes\resomi.dm" #include "code\modules\organs\subtypes\standard.dm" #include "code\modules\organs\subtypes\unbreakable.dm" #include "code\modules\organs\subtypes\xenos.dm"