-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Новая раса для TG SS220 Вульпочки #267
base: master
Are you sure you want to change the base?
Changes from all commits
d56a8ab
b6d613c
a6ef94b
cd095c6
5557bab
4a90954
9b19886
1870291
ff2153f
517829a
fb1fd06
0f1c56c
ba58ec5
a5c6f59
caed519
87d7262
33485fa
53d5b55
dae346e
3c0968e
b4645c7
87465bd
1d44e71
41daae9
a4988f4
b859357
441191c
8fa1b06
66ff252
4eff490
77f77f9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,3 +14,6 @@ | |
#TRANSLATE_SUGGEST_WEBHOOK_URL | ||
|
||
#INTERVIEW_WEBHOOK_URL | ||
|
||
## Bandastation Races | ||
ROUNDSTART_RACES vulpkanin |
Original file line number | Diff line number | Diff line change | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -195,9 +195,16 @@ | |||||||||||||||
message = "самодовольно улыбается." | ||||||||||||||||
|
||||||||||||||||
/datum/emote/living/sniff | ||||||||||||||||
name = "шмыгнуть" | ||||||||||||||||
message = "шмыгает носом." | ||||||||||||||||
message_mime = "бесшумно шмыгает носом." | ||||||||||||||||
name = "нюхать" | ||||||||||||||||
message = "нюхает." | ||||||||||||||||
message_mime = "бесшумно нюхает." | ||||||||||||||||
message_param = "нюхает %t." | ||||||||||||||||
Comment on lines
+198
to
+201
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. убери эти изменения |
||||||||||||||||
|
||||||||||||||||
/datum/emote/living/sniff/get_sound(mob/living/user) | ||||||||||||||||
if(user.gender == FEMALE) | ||||||||||||||||
return 'modular_bandastation/emote_panel/audio/female/sniff_female.ogg' | ||||||||||||||||
else | ||||||||||||||||
return 'modular_bandastation/emote_panel/audio/male/sniff_male.ogg' | ||||||||||||||||
Comment on lines
+204
to
+207
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||
|
||||||||||||||||
/datum/emote/living/snore | ||||||||||||||||
name = "храпеть" | ||||||||||||||||
|
@@ -640,3 +647,71 @@ | |||||||||||||||
name = "ooga" | ||||||||||||||||
message = "oogas." | ||||||||||||||||
message_param = "oogas at %t." | ||||||||||||||||
|
||||||||||||||||
// Vulpkanin | ||||||||||||||||
|
||||||||||||||||
/datum/emote/living/carbon/human/vulpkanin/can_run_emote(mob/user, status_check = TRUE, intentional = FALSE) | ||||||||||||||||
var/organ = user.get_organ_slot(ORGAN_SLOT_TONGUE) | ||||||||||||||||
if(istype(organ, /obj/item/organ/tongue/vulpkanin)) | ||||||||||||||||
return ..() | ||||||||||||||||
|
||||||||||||||||
/datum/emote/living/carbon/human/vulpkanin/howl | ||||||||||||||||
larentoun marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||
name = "Выть" | ||||||||||||||||
key = "howl" | ||||||||||||||||
key_third_person = "howls" | ||||||||||||||||
message = "воет." | ||||||||||||||||
message_mime = "делает вид, что воет." | ||||||||||||||||
message_param = "воет на %t." | ||||||||||||||||
emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE | ||||||||||||||||
cooldown = 6 SECONDS | ||||||||||||||||
sound = 'modular_bandastation/emote_panel/audio/howl.ogg' | ||||||||||||||||
|
||||||||||||||||
/datum/emote/living/carbon/human/vulpkanin/growl | ||||||||||||||||
name = "Рычать" | ||||||||||||||||
key = "growl" | ||||||||||||||||
key_third_person = "growls" | ||||||||||||||||
message = "рычит." | ||||||||||||||||
message_mime = "бусшумно рычит." | ||||||||||||||||
message_param = "рычит на %t." | ||||||||||||||||
cooldown = 2 SECONDS | ||||||||||||||||
emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE | ||||||||||||||||
|
||||||||||||||||
/datum/emote/living/carbon/human/vulpkanin/growl/get_sound(mob/living/user) | ||||||||||||||||
return pick( | ||||||||||||||||
'modular_bandastation/emote_panel/audio/growl1.ogg', | ||||||||||||||||
'modular_bandastation/emote_panel/audio/growl2.ogg', | ||||||||||||||||
'modular_bandastation/emote_panel/audio/growl3.ogg', | ||||||||||||||||
) | ||||||||||||||||
|
||||||||||||||||
/datum/emote/living/carbon/human/vulpkanin/purr | ||||||||||||||||
name = "Урчать" | ||||||||||||||||
key = "purr" | ||||||||||||||||
key_third_person = "purrs" | ||||||||||||||||
message = "урчит." | ||||||||||||||||
message_param = "урчит на %t." | ||||||||||||||||
emote_type = EMOTE_AUDIBLE | ||||||||||||||||
vary = TRUE | ||||||||||||||||
cooldown = 2 SECONDS | ||||||||||||||||
sound = 'modular_bandastation/emote_panel/audio/purr.ogg' | ||||||||||||||||
|
||||||||||||||||
/datum/emote/living/carbon/human/vulpkanin/bark | ||||||||||||||||
name = "Гавкнуть" | ||||||||||||||||
key = "bark" | ||||||||||||||||
key_third_person = "bark" | ||||||||||||||||
message = "гавкает." | ||||||||||||||||
message_param = "гавкает на %t." | ||||||||||||||||
emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE | ||||||||||||||||
vary = TRUE | ||||||||||||||||
cooldown = 2 SECONDS | ||||||||||||||||
sound = 'modular_bandastation/emote_panel/audio/bark.ogg' | ||||||||||||||||
|
||||||||||||||||
/datum/emote/living/carbon/human/vulpkanin/wbark | ||||||||||||||||
name = "Гавкнуть дважды" | ||||||||||||||||
key = "wbark" | ||||||||||||||||
key_third_person = "wbark" | ||||||||||||||||
message = "дважды гавкает." | ||||||||||||||||
message_param = "дважды гавкает на %t." | ||||||||||||||||
emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE | ||||||||||||||||
vary = TRUE | ||||||||||||||||
cooldown = 2 SECONDS | ||||||||||||||||
sound = 'modular_bandastation/emote_panel/audio/wbark.ogg' |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
/datum/modpack/species | ||
name = "Modpack Species" | ||
desc = "Добавление архитектуры для новых видов и конфигурирования существующих" | ||
author = "nlaysi" | ||
|
||
/datum/modpack/species/vulpkanin | ||
name = "Species Vulpkanin" | ||
desc = "Добавление вида Вульпканин" | ||
author = "nlaysi" | ||
Nlaysi marked this conversation as resolved.
Show resolved
Hide resolved
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
#ifndef MODPACK_SPECIES | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. А это тут зачем? |
||
#define MODPACK_SPECIES | ||
|
||
#include "_species.dm" | ||
|
||
#include "code/_defines.dm" | ||
#include "code/language.dm" | ||
#include "code/dna.dm" | ||
|
||
#include "code/human/carbon.dm" | ||
#include "code/surgery/organs/external/vulpkanin_external.dm" | ||
#include "code/surgery/organs/internal/vulpkanin_internal.dm" | ||
#include "code/surgery/organs/limbgrower_designs.dm" | ||
#include "code/human/sprite_accessories/vulpkanin.dm" | ||
#include "code/preferences/species_features/vulpkanin.dm" | ||
#include "code/surgery/bodyparts/vulpkanin_bodyparts.dm" | ||
#include "code/human/species_type/vulpkanin.dm" | ||
#include "code/human/sprite_accessories/hair.dm" | ||
#include "code/human/species/species.dm" | ||
#include "code/reagents/mutation.dm" | ||
|
||
#include "code/clothing/human_update_icons.dm" | ||
#include "code/clothing/items.dm" | ||
#include "code/clothing/mod.dm" | ||
|
||
#endif |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
#define SPECIES_VULPKANIN "vulpkanin" | ||
#define BUTT_SPRITE_VULPKANIN "vulpkanin" | ||
|
||
#define DEFAULT_SPRITE_LIST "default_sprites" | ||
|
||
#define DNA_VULPKANIN_BODY_MARKINGS DNA_FEATURE_BLOCKS + 1 | ||
#define DNA_VULPKANIN_HEAD_MARKINGS DNA_FEATURE_BLOCKS + 2 | ||
#define DNA_VULPKANIN_HEAD_ACCESSORIES DNA_FEATURE_BLOCKS + 3 | ||
#define DNA_VULPKANIN_TAIL DNA_FEATURE_BLOCKS + 4 | ||
#define DNA_VULPKANIN_TAIL_MARKINGS DNA_FEATURE_BLOCKS + 5 | ||
#define DNA_VULPKANIN_FACIAL_HAIR DNA_FEATURE_BLOCKS + 6 | ||
#define DNA_FURCOLOR_1 DNA_FEATURE_BLOCKS + 7 | ||
#define DNA_FURCOLOR_2 DNA_FEATURE_BLOCKS + 8 | ||
#define DNA_FURCOLOR_3 DNA_FEATURE_BLOCKS + 9 | ||
#define DNA_FURCOLOR_4 DNA_FEATURE_BLOCKS + 10 | ||
#define DNA_FURCOLOR_5 DNA_FEATURE_BLOCKS + 11 | ||
|
||
#define DNA_MODULAR_BLOCKS_COUNT 11 | ||
|
||
#define HEAD_VULPKANIN (1<<16) | ||
|
||
GLOBAL_LIST_INIT(first_names_female_vulp, world.file2list("strings/names/first_female_vulp.txt")) | ||
GLOBAL_LIST_INIT(first_names_male_vulp, world.file2list("strings/names/first_male_vulp.txt")) | ||
GLOBAL_LIST_INIT(last_names_vulp, world.file2list("strings/names/last_vulp.txt")) | ||
|
||
/datum/controller/subsystem/accessories | ||
var/list/vulpkanin_body_markings_list | ||
var/list/vulpkanin_head_markings_list | ||
var/list/vulpkanin_head_accessories_list | ||
var/list/tails_list_vulpkanin | ||
var/list/vulpkanin_tail_markings_list | ||
var/list/vulpkanin_facial_hair_list | ||
|
||
/datum/controller/subsystem/accessories/proc/init_modular_lists() | ||
vulpkanin_body_markings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/vulpkanin_body_markings, add_blank = TRUE)[DEFAULT_SPRITE_LIST] | ||
vulpkanin_head_markings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/vulpkanin_head_markings, add_blank = TRUE)[DEFAULT_SPRITE_LIST] | ||
vulpkanin_head_accessories_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/vulpkanin_head_accessories, add_blank = TRUE)[DEFAULT_SPRITE_LIST] | ||
tails_list_vulpkanin = init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/vulpkanin, add_blank = FALSE)[DEFAULT_SPRITE_LIST] | ||
vulpkanin_tail_markings_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/vulpkanin_tail_markings, add_blank = TRUE)[DEFAULT_SPRITE_LIST] | ||
vulpkanin_facial_hair_list = init_sprite_accessory_subtypes(/datum/sprite_accessory/vulpkanin_facial_hair, add_blank = TRUE)[DEFAULT_SPRITE_LIST] | ||
|
||
/datum/controller/subsystem/accessories/PreInit() | ||
..() | ||
init_modular_lists() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
#define RESOLVE_ICON_STATE(worn_item) (worn_item.worn_icon_state || worn_item.icon_state) | ||
|
||
/obj/item/bodypart | ||
var/species_bodytype | ||
|
||
/mob/living/carbon/human/update_worn_mask(update_obscured = TRUE) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Добавь все оверрайды в кор-код с нужным комментом, типо // BANDASTATION EDIT START - Vulps. Примеры уже есть в коде. |
||
remove_overlay(FACEMASK_LAYER) | ||
|
||
var/obj/item/bodypart/head/my_head = get_bodypart(BODY_ZONE_HEAD) | ||
if(isnull(my_head)) //Decapitated | ||
return | ||
|
||
if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_MASK) + 1]) | ||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_MASK) + 1] | ||
inv.update_icon() | ||
|
||
if(wear_mask) | ||
var/obj/item/worn_item = wear_mask | ||
update_hud_wear_mask(worn_item) | ||
|
||
if(update_obscured) | ||
update_obscured_slots(worn_item.flags_inv) | ||
|
||
if(check_obscured_slots(transparent_protection = TRUE) & ITEM_SLOT_MASK) | ||
return | ||
|
||
var/icon_file = 'icons/mob/clothing/mask.dmi' | ||
var/list/icon_files_species = list( | ||
SPECIES_VULPKANIN = 'modular_bandastation/species/icons/mob/species/clothing/mask.dmi', | ||
) | ||
|
||
var/mutant_override = FALSE | ||
|
||
var/obj/item/bodypart/head/bodypart_head = src.get_bodypart(BODY_ZONE_HEAD) | ||
if(worn_item.worn_icon_species && worn_item.worn_icon_species[bodypart_head.species_bodytype]) | ||
icon_file = worn_item.worn_icon_species[bodypart_head.species_bodytype] | ||
mutant_override = TRUE | ||
else if(bodypart_head.species_bodytype in icon_files_species) | ||
icon_file = icon_files_species[bodypart_head.species_bodytype] | ||
mutant_override = FALSE | ||
|
||
if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(worn_item)))) | ||
icon_file = 'icons/mob/clothing/mask.dmi' | ||
mutant_override = FALSE | ||
|
||
var/mutable_appearance/mask_overlay = wear_mask.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = icon_file, override_file = mutant_override ? icon_file : null) | ||
my_head.worn_mask_offset?.apply_offset(mask_overlay) | ||
overlays_standing[FACEMASK_LAYER] = mask_overlay | ||
|
||
apply_overlay(FACEMASK_LAYER) | ||
update_body_parts() | ||
|
||
/mob/living/carbon/human/update_worn_head(update_obscured = TRUE) | ||
remove_overlay(HEAD_LAYER) | ||
if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1]) | ||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_HEAD) + 1] | ||
inv.update_icon() | ||
|
||
if(head) | ||
var/obj/item/worn_item = head | ||
update_hud_head(worn_item) | ||
|
||
if(update_obscured) | ||
update_obscured_slots(worn_item.flags_inv) | ||
|
||
if(check_obscured_slots(transparent_protection = TRUE) & ITEM_SLOT_HEAD) | ||
return | ||
|
||
var/icon_file = 'icons/mob/clothing/head/default.dmi' | ||
var/list/icon_files_species = list( | ||
SPECIES_VULPKANIN = 'modular_bandastation/species/icons/mob/species/clothing/head.dmi', | ||
) | ||
|
||
var/mutant_override = FALSE | ||
|
||
var/obj/item/bodypart/head/bodypart_head = src.get_bodypart(BODY_ZONE_HEAD) | ||
if(worn_item.worn_icon_species && worn_item.worn_icon_species[bodypart_head.species_bodytype]) | ||
icon_file = worn_item.worn_icon_species[bodypart_head.species_bodytype] | ||
mutant_override = TRUE | ||
else if(bodypart_head.species_bodytype in icon_files_species) | ||
icon_file = icon_files_species[bodypart_head.species_bodytype] | ||
mutant_override = FALSE | ||
|
||
if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(worn_item)))) | ||
icon_file = 'icons/mob/clothing/head/default.dmi' | ||
mutant_override = FALSE | ||
|
||
var/mutable_appearance/head_overlay = head.build_worn_icon(default_layer = HEAD_LAYER, default_icon_file = icon_file, override_file = mutant_override ? icon_file : null) | ||
var/obj/item/bodypart/head/my_head = get_bodypart(BODY_ZONE_HEAD) | ||
my_head?.worn_head_offset?.apply_offset(head_overlay) | ||
overlays_standing[HEAD_LAYER] = head_overlay | ||
|
||
apply_overlay(HEAD_LAYER) | ||
|
||
/mob/living/carbon/human/update_worn_oversuit(update_obscured = TRUE) | ||
remove_overlay(SUIT_LAYER) | ||
|
||
if(client && hud_used) | ||
var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_OCLOTHING) + 1] | ||
inv.update_icon() | ||
|
||
if(wear_suit) | ||
var/obj/item/worn_item = wear_suit | ||
update_hud_wear_suit(worn_item) | ||
|
||
if(update_obscured) | ||
update_obscured_slots(worn_item.flags_inv) | ||
|
||
var/icon_file = DEFAULT_SUIT_FILE | ||
var/list/icon_files_species = list( | ||
SPECIES_VULPKANIN = 'modular_bandastation/species/icons/mob/species/clothing/suit.dmi', | ||
) | ||
|
||
var/mutant_override = FALSE | ||
|
||
var/obj/item/bodypart/chest/bodypart_chest = src.get_bodypart(BODY_ZONE_CHEST) | ||
if(worn_item.worn_icon_species && worn_item.worn_icon_species[bodypart_chest.species_bodytype]) | ||
icon_file = worn_item.worn_icon_species[bodypart_chest.species_bodytype] | ||
mutant_override = TRUE | ||
else if(bodypart_chest.species_bodytype in icon_files_species) | ||
icon_file = icon_files_species[bodypart_chest.species_bodytype] | ||
mutant_override = FALSE | ||
|
||
if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(worn_item)))) | ||
icon_file = DEFAULT_SUIT_FILE | ||
mutant_override = FALSE | ||
|
||
var/mutable_appearance/suit_overlay = wear_suit.build_worn_icon(default_layer = SUIT_LAYER, default_icon_file = icon_file, override_file = mutant_override ? icon_file : null) | ||
var/obj/item/bodypart/chest/my_chest = get_bodypart(BODY_ZONE_CHEST) | ||
my_chest?.worn_suit_offset?.apply_offset(suit_overlay) | ||
overlays_standing[SUIT_LAYER] = suit_overlay | ||
update_body_parts() | ||
update_body_parts() | ||
|
||
apply_overlay(SUIT_LAYER) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.