diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index edd7c212a3b..d00c7deeac6 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -799,6 +799,12 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine cost = 30 containername = "farwa crate" +/datum/supply_packs/organic/wolpin + name = "Wolpin crate" + contains = list (/obj/item/weapon/storage/box/wolpincubes) + cost = 30 + containername = "wolpin crate" + /datum/supply_packs/organic/skrell name = "Neaera crate" contains = list (/obj/item/weapon/storage/box/neaeracubes) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 04615c623e8..dd0a0b76bea 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -412,6 +412,18 @@ new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube(src) +/obj/item/weapon/storage/box/wolpincubes + name = "wolpin cube box" + desc = "Drymate brand wolpin cubes. Just add water!" + icon = 'icons/obj/food.dmi' + icon_state = "monkeycubebox" + storage_slots = 7 + can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube") + New() + ..() + for(var/i = 1; i <= 5; i++) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/wolpincube(src) + /obj/item/weapon/storage/box/permits name = "box of construction permits" desc = "A box for containing construction permits, used to officially declare built rooms as additions to the station." diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 67bf068d604..fe67a21a779 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -164,6 +164,13 @@ else src.DB_species_unlock("Plasmaman",100) return + if("7") + if(karma <50) + usr << "You do not have enough karma!" + return + else + src.DB_species_unlock("Vulpkanin",50) + return if(href_list["KarmaRefund"]) var/type = href_list["KarmaRefundType"] var/job = href_list["KarmaRefund"] diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 93c4a366bf6..3a5c0bb6357 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -352,7 +352,7 @@ datum/preferences dat += "
Eyes
" dat += "Change Color
__

" - if(species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Slime People") + if(species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Slime People" || species == "Vulpkanin") dat += "
Body Color
" dat += "Change Color
__
" @@ -970,7 +970,7 @@ datum/preferences if("age") age = rand(AGE_MIN, AGE_MAX) if("hair") - if(species == "Human" || species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Machine" || species == "Wryn") + if(species == "Human" || species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Machine" || species == "Wryn" || species == "Vulpkanin") r_hair = rand(0,255) g_hair = rand(0,255) b_hair = rand(0,255) @@ -996,7 +996,7 @@ datum/preferences if(species == "Human") s_tone = random_skin_tone() if("s_color") - if(species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Slime People" || species == "Wryn") + if(species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Slime People" || species == "Wryn" || species == "Vulpkanin") r_skin = rand(0,255) g_skin = rand(0,255) b_skin = rand(0,255) @@ -1119,7 +1119,7 @@ datum/preferences b_type = new_b_type if("hair") - if(species == "Human" || species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Machine") + if(species == "Human" || species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Machine" || species == "Vulpkanin") var/input = "Choose your character's hair colour:" if(species == "Machine") input = "Choose your character's frame colour:" @@ -1202,7 +1202,7 @@ datum/preferences s_tone = 35 - max(min( round(new_s_tone), 220),1) if("skin") - if(species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Slime People") + if(species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Slime People"|| species == "Vulpkanin") var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference") as color|null if(new_skin) r_skin = hex2num(copytext(new_skin, 2, 4)) diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm index ed00a84e97c..db0f6790913 100644 --- a/code/modules/karma/karma.dm +++ b/code/modules/karma/karma.dm @@ -202,6 +202,7 @@ You've gained [totalkarma] total karma in your time here.
"} Unlock Vox -- 45KP
Unlock Slime People -- 45KP
Unlock Plasmaman -- 100KP
+ Unlock Vulpkanin -- 50KP
"} if (2) // Karma Refunds diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 60b2c20636a..a4fb9ae6d26 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -180,6 +180,20 @@ new_name += ..(gender,1) return new_name +/datum/language/vulpkanin + name = "Canilunzt" + desc = "The guttural language spoken and utilized by the inhabitants of Vazzend system, composed of growls, barks, yaps, and heavy utilization of ears and tail movements.Vulpkanin speak this language with ease." + speech_verb = "rawrs" + ask_verb = "rurs" + exclaim_verb = "barks" + colour = "vulpkanin" + key = "w" + flags = RESTRICTED + syllables = list("rur","ya","cen","rawr","bar","kuk","tek","qat","uk","wu","vuh","tah","tch","schz","auch", \ + "ist","ein","entch","zwichs","tut","mir","wo","bis","es","vor","nic","gro","lll","enem","zandt","tzch","noch", \ + "hel","ischt","far","wa","baram","iereng","tech","lach","sam","mak","lich","gen","or","ag","eck","gec","stag","onn", \ + "bin","ket","jarl","vulf","einech","cresthz","azunein","ghzth") + /datum/language/skrell name = "Skrellian" desc = "A melodic and complex language spoken by the Skrell of Qerrbalak. Some of the notes are inaudible to humans." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a8c1df9b426..de9680dccab 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -62,6 +62,10 @@ h_style = "Tajaran Ears" ..(new_loc, "Tajaran") +/mob/living/carbon/human/vulpkanin/New(var/new_loc) + h_style = "Bald" + ..(new_loc, "Vulpkanin") + /mob/living/carbon/human/unathi/New(var/new_loc) h_style = "Unathi Horns" ..(new_loc, "Unathi") diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 4375800af54..e414d2d8bb7 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -24,6 +24,13 @@ icon_state = "tajkey1" uni_append = list(0x0A0,0xE00) // 0A0E00 +/mob/living/carbon/monkey/vulpkanin + name = "wolpin" + voice_name = "wolpin" + speak_emote = list("yaps") + icon_state = "tajkey1" + uni_append = list(0x066,0x4FE) // 0A0E00 + /mob/living/carbon/monkey/skrell name = "neaera" voice_name = "neaera" @@ -106,6 +113,13 @@ dna.species = "Tajaran" add_language("Siik'tajr") +/mob/living/carbon/monkey/vulpkanin/New() + + ..() + greaterform = "Vulpkanin" + dna.species = "Vulpkanin" + add_language("Canilunzt") + /mob/living/carbon/monkey/diona/New() ..() diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 1727757c9da..c261262cbbc 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -410,6 +410,38 @@ H.stop_tail_wagging(1) +/datum/species/vulpkanin + name = "Vulpkanin" + icobase = 'icons/mob/human_races/r_vulpkanin.dmi' + deform = 'icons/mob/human_races/r_vulpkanin.dmi' + path = /mob/living/carbon/human/vulpkanin + default_language = "Galactic Common" + language = "Canilunzt" + primitive = /mob/living/carbon/monkey/vulpkanin + tail = "vulptail" + unarmed_type = /datum/unarmed_attack/claws + darksight = 8 + slowdown = -1 + brute_mod = 1.1 + burn_mod = 1.1 + + blurb = "Vulpkanin are a species of extremely quick canine-pideds residing on the planet Altam just barely within the \ + the dual-star Vazzend system. Their politically de-centralized and independent natures have led them to become a species and \ + culture both feared and respected for their discoveries. Disovery, loyalty, and utilitarianism dominates their lifestyles \ + to the degree it can cause conflict with more authoritarian entities. They speak a guttural language known as 'Canilunzt' \ + which has a heavy emphasis on utilizing tail positioning and ear twitches to communicate intent." + + flags = HAS_LIPS | HAS_UNDERWEAR | IS_WHITELISTED + bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING + dietflags = DIET_OMNI + + flesh_color = "#966464" + base_color = "#BE8264" + +/datum/species/vulpkanin/handle_death(var/mob/living/carbon/human/H) + + H.stop_tail_wagging(1) + /datum/species/skrell name = "Skrell" icobase = 'icons/mob/human_races/r_skrell.dmi' diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 5545e9f09bc..4533ffcc49b 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -147,6 +147,7 @@ var/list/ai_verbs_default = list( add_language("Gutter", 0) add_language("Sinta'unathi", 0) add_language("Siik'tajr", 0) + add_language("Canilunzt", 0) add_language("Skrellian", 0) add_language("Vox-pidgin", 0) add_language("Rootspeak", 0) diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 41fc6bfcb6d..877c6002dc6 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -484,6 +484,7 @@ if(user.translator_on) user.add_language("Sinta'unathi") user.add_language("Siik'tajr") + user.add_language("Canilunzt") user.add_language("Skrellian") user.add_language("Vox-pidgin") user.add_language("Rootspeak") @@ -493,6 +494,7 @@ else user.remove_language("Sinta'unathi") user.remove_language("Siik'tajr") + user.remove_language("Canilunzt") user.remove_language("Skrellian") user.remove_language("Vox-pidgin") user.remove_language("Rootspeak") diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index d8adc434d40..d30e96491fd 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -65,6 +65,7 @@ R.add_language("Gutter", 0) R.add_language("Sinta'unathi", 0) R.add_language("Siik'tajr", 0) + R.add_language("Canilunzt", 0) R.add_language("Skrellian", 0) R.add_language("Vox-pidgin", 0) R.add_language("Rootspeak", 0) @@ -275,6 +276,7 @@ R.add_language("Gutter", 1) R.add_language("Sinta'unathi", 1) R.add_language("Siik'tajr", 1) + R.add_language("Canilunzt", 1) R.add_language("Skrellian", 1) R.add_language("Vox-pidgin", 1) R.add_language("Rootspeak", 1) diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index ecb36044881..363675b723c 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -10,11 +10,11 @@ datum/preferences s_tone = random_skin_tone() h_style = random_hair_style(gender, species) f_style = random_facial_hair_style(gender, species) - if(species == "Human" || species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Machine") + if(species == "Human" || species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Machine" || species == "Vulpkanin") randomize_hair_color("hair") randomize_hair_color("facial") randomize_eyes_color() - if(species == "Unathi" || species == "Tajaran" || species == "Skrell") + if(species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Vulpkanin") randomize_skin_color() underwear = rand(1,underwear_m.len) undershirt = rand(1,undershirt_t.len) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 6ba963c5f1b..4f8c7c4f7a1 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -434,7 +434,7 @@ name = "Shaved" icon_state = "bald" gender = NEUTER - species_allowed = list("Human","Unathi","Tajaran","Skrell","Vox","Diona","Kidan","Greys","Machine") + species_allowed = list("Human","Unathi","Tajaran","Skrell","Vox","Diona","Kidan","Greys","Machine", "Vulpkanin") watson @@ -659,6 +659,33 @@ icon_state = "hair_messy" species_allowed = list("Tajaran") +//Vulpkanin + + vulp_hair_none + name = "None" + icon_state = "bald" + species_allowed = list("Vulpkanin") + + vulp_hair_short + name = "Kajam" + icon_state = "kajam" + species_allowed = list("Vulpkanin") + + vulp_hair_long + name = "Keid" + icon_state = "keid" + species_allowed = list("Vulpkanin") + + vulp_hair_fluffy + name = "Adhara" + icon_state = "adhara" + species_allowed = list("Vulpkanin") + + vulp_hair_ponytail + name = "Kleeia" + icon_state = "kleeia" + species_allowed = list("Vulpkanin") + vox_quills_short name = "Short Vox Quills" icon_state = "vox_shortquills" @@ -789,6 +816,12 @@ icon = 'icons/mob/human_races/r_tajaran.dmi' species_allowed = list("Tajaran") + vulpkanin + name = "Default Vulpkanin skin" + icon_state = "default" + icon = 'icons/mob/human_races/r_vulpkanin.dmi' + species_allowed = list("Vulpkanin") + unathi name = "Default Unathi skin" icon_state = "default" diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 40f5cb1469d..1ed7f749f3f 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -1753,6 +1753,13 @@ name = "farwa cube" monkey_type =/mob/living/carbon/monkey/tajara +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wolpincube + name = "wolpin cube" + monkey_type = /mob/living/carbon/monkey/vulpkanin +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/wolpincube + name = "wolpin cube" + monkey_type = /mob/living/carbon/monkey/vulpkanin + /obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube name = "stok cube" monkey_type = /mob/living/carbon/monkey/unathi diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index f699c68a82d..a72b66e88e1 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -10,7 +10,7 @@ var/list/datum/disease2/effectholder/effects = list() var/antigen = 0 // 16 bits describing the antigens, when one bit is set, a cure with that bit can dock here var/max_stage = 4 - var/list/affected_species = list("Human","Unathi","Skrell","Tajaran","Vox","Kidan","Slime People","Grey","Diona") + var/list/affected_species = list("Human","Unathi","Skrell","Tajaran","Vox","Kidan","Slime People","Grey","Diona", "Vulpkanin") /datum/disease2/disease/New() uniqueID = rand(0,10000) diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 82a6d814154..fac26760073 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -84,6 +84,7 @@ h1.alert, h2.alert {color: #000000;} .slime {color: #0077AA;} .clown {color: #ff0000;} .shadowling {color: #311648;} +.vulpkanin {color: #B97A57;} .rough {font-family: "Trebuchet MS", cursive, sans-serif;} .say_quote {font-family: Georgia, Verdana, sans-serif;} .sans {font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} diff --git a/icons/effects/species.dmi b/icons/effects/species.dmi index 59422946e24..63f67113cdc 100644 Binary files a/icons/effects/species.dmi and b/icons/effects/species.dmi differ diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 65178bc773d..2a1ee5d5568 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/human_races/r_vulpkanin.dmi b/icons/mob/human_races/r_vulpkanin.dmi new file mode 100644 index 00000000000..6f2c8df3dca Binary files /dev/null and b/icons/mob/human_races/r_vulpkanin.dmi differ