diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 870816975b..2fed84553e 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -105,8 +105,9 @@ #define NOAROUSAL 37 //Stops all arousal effects #define NOGENITALS 38 //Cannot create, use, or otherwise have genitals -//Brainslugs +//Citadel istypes #define isborer(A) (istype(A, /mob/living/simple_animal/borer)) +#define isipcperson(A) (is_species(A, /datum/species/ipc)) #define CITADEL_MENTOR_OOC_COLOUR "#224724" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 2bcb1d5189..17a42f4ad1 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1052,18 +1052,3 @@ /mob/living/carbon/human/species/zombie/krokodil_addict race = /datum/species/krokodil_addict - -/* -//CITADEL EDIT - TODO: Enable people to set custom races -/mob/living/carbon/human/species/mammal - race = /datum/species/mammal -/mob/living/carbon/human/species/avian - race = /datum/species/avian -/mob/living/carbon/human/species/aquatic - race = /datum/species/aquatic -/mob/living/carbon/human/species/insect - race = /datum/species/insect -/mob/living/carbon/human/species/xeno - race = /datum/species/xeno -/mob/living/carbon/human/species/guilmon - race = /datum/species/guilmon */ diff --git a/modular_citadel/code/modules/mob/cit_emotes.dm b/modular_citadel/code/modules/mob/cit_emotes.dm index 65b6d43a77..df97cee63b 100644 --- a/modular_citadel/code/modules/mob/cit_emotes.dm +++ b/modular_citadel/code/modules/mob/cit_emotes.dm @@ -4,7 +4,7 @@ //Disables the custom emote blacklist from TG that normally applies to slimes. /datum/emote/living/custom mob_type_blacklist_typecache = list(/mob/living/brain) - + /datum/emote/living/scream/run_emote(mob/living/user, params) //I can't not port this shit, come on. if(user.nextsoundemote >= world.time || user.stat != CONSCIOUS) return @@ -35,7 +35,7 @@ sound = 'modular_citadel/sound/voice/scream_lizard.ogg' if(is_species(user, /datum/species/skeleton)) sound = 'modular_citadel/sound/voice/scream_skeleton.ogg' - if (is_species(user, /datum/species/fly) || is_species(user, /datum/species/moth)) + if (is_species(user, /datum/species/fly) || is_species(user, /datum/species/insect)) sound = 'modular_citadel/sound/voice/scream_moth.ogg' if(isalien(user)) sound = 'sound/voice/hiss6.ogg' @@ -49,7 +49,7 @@ else message = "makes a very loud noise." . = ..() - + /datum/emote/sound/carbon/snap key = "snap" key_third_person = "snaps" @@ -58,7 +58,7 @@ emote_type = EMOTE_AUDIBLE sound = 'sound/effects/snap01.ogg' mob_type_allowed_typecache = list(/mob/living/carbon/) - + /datum/emote/living/snap key = "snap" diff --git a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm index a2d3ce7b85..1b1e2c81e5 100644 --- a/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/modular_citadel/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -878,23 +878,17 @@ /datum/sprite_accessory/xeno_dorsal icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' -/datum/sprite_accessory/xeno_dorsal/none - name = "None" - /datum/sprite_accessory/xeno_dorsal/standard name = "Standard" icon_state = "standard" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_dorsal/royal name = "Royal" icon_state = "royal" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_dorsal/down name = "Dorsal Down" icon_state = "down" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' //Xeno Tail /datum/sprite_accessory/xeno_tail @@ -906,7 +900,6 @@ /datum/sprite_accessory/xeno_tail/standard name = "Xenomorph Tail" icon_state = "xeno" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' //Xeno Caste Heads /datum/sprite_accessory/xeno_head @@ -915,28 +908,100 @@ /datum/sprite_accessory/xeno_head/standard name = "Standard" icon_state = "standard" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_head/royal name = "royal" icon_state = "royal" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_head/hollywood name = "hollywood" icon_state = "hollywood" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' /datum/sprite_accessory/xeno_head/warrior name = "warrior" icon_state = "warrior" - icon = 'modular_citadel/icons/mob/xeno_parts_greyscale.dmi' // IPCs /datum/sprite_accessory/screen - icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' + icon = 'modular_citadel/icons/mob/ipc_screens.dmi' color_src = null +/datum/sprite_accessory/screen/blank + name = "Blank" + icon_state = "blank" + +/datum/sprite_accessory/screen/pink + name = "Pink" + icon_state = "pink" + +/datum/sprite_accessory/screen/green + name = "Green" + icon_state = "green" + +/datum/sprite_accessory/screen/red + name = "Red" + icon_state = "red" + +/datum/sprite_accessory/screen/blue + name = "Blue" + icon_state = "blue" + +/datum/sprite_accessory/screen/yellow + name = "Yellow" + icon_state = "yellow" + +/datum/sprite_accessory/screen/shower + name = "Shower" + icon_state = "shower" + +/datum/sprite_accessory/screen/nature + name = "Nature" + icon_state = "nature" + +/datum/sprite_accessory/screen/eight + name = "Eight" + icon_state = "eight" + +/datum/sprite_accessory/screen/goggles + name = "Goggles" + icon_state = "goggles" + +/datum/sprite_accessory/screen/heart + name = "Heart" + icon_state = "heart" + +/datum/sprite_accessory/screen/monoeye + name = "Mono eye" + icon_state = "monoeye" + +/datum/sprite_accessory/screen/breakout + name = "Breakout" + icon_state = "breakout" + +/datum/sprite_accessory/screen/purple + name = "Purple" + icon_state = "purple" + +/datum/sprite_accessory/screen/scroll + name = "Scroll" + icon_state = "scroll" + +/datum/sprite_accessory/screen/console + name = "Console" + icon_state = "console" + +/datum/sprite_accessory/screen/rgb + name = "RGB" + icon_state = "rgb" + +/datum/sprite_accessory/screen/golglider + name = "Gol Glider" + icon_state = "golglider" + +/datum/sprite_accessory/screen/rainbow + name = "Rainbow" + icon_state = "rainbow" + /datum/sprite_accessory/screen/sunburst name = "Sunburst" icon_state = "sunburst" @@ -944,7 +1009,41 @@ /datum/sprite_accessory/screen/static name = "Static" icon_state = "static" - + +//Oracle Station sprites + +/datum/sprite_accessory/screen/bsod + name = "BSOD" + icon_state = "bsod" + +/datum/sprite_accessory/screen/redtext + name = "Red Text" + icon_state = "retext" + +/datum/sprite_accessory/screen/sinewave + name = "Sine wave" + icon_state = "sinewave" + +/datum/sprite_accessory/screen/squarewave + name = "Square wave" + icon_state = "squarwave" + +/datum/sprite_accessory/screen/ecgwave + name = "ECG wave" + icon_state = "ecgwave" + +/datum/sprite_accessory/screen/eyes + name = "Eyes" + icon_state = "eyes" + +/datum/sprite_accessory/screen/textdrop + name = "Text drop" + icon_state = "textdrop" + +/datum/sprite_accessory/screen/stars + name = "Stars" + icon_state = "stars" + // *** Snooooow flaaaaake *** /datum/sprite_accessory/mam_body_markings/guilmon diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human.dm b/modular_citadel/code/modules/mob/living/carbon/human/human.dm deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 801d64f5cf..68780d0890 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -201,117 +201,6 @@ acidpwr = 12 */ -//##########SLIMEPEOPLE########## - -/datum/species/jelly/roundstartslime - name = "Slimeperson" - id = "slimeperson" - default_color = "00FFFF" - species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) - inherent_traits = list(TRAIT_TOXINLOVER) - mutant_bodyparts = list("mam_tail", "mam_ears", "taur") - default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None") - say_mod = "says" - hair_color = "mutcolor" - hair_alpha = 180 - liked_food = MEAT - coldmod = 3 - heatmod = 1 - burnmod = 1 - -/datum/action/innate/slime_change - name = "Alter Form" - check_flags = AB_CHECK_CONSCIOUS - button_icon_state = "alter_form" //placeholder - icon_icon = 'icons/mob/actions/actions_slime.dmi' - background_icon_state = "bg_alien" - -/datum/action/innate/slime_change/Activate() - var/mob/living/carbon/human/H = owner - if(!isjellyperson(H)) - return - else - H.visible_message("[owner] gains a look of \ - concentration while standing perfectly still.\ - Their body seems to shift and starts getting more goo-like.", - "You focus intently on altering your body while \ - standing perfectly still...") - change_form() - -/datum/action/innate/slime_change/proc/change_form() - var/mob/living/carbon/human/H = owner - var/select_alteration = input(owner, "Select what part of your form to alter", "Form Alteration", "cancel") in list("Hair Style", "Genitals", "Tail", "Ears", "Taur body", "Cancel") - if(select_alteration == "Hair Style") - if(H.gender == MALE) - var/new_style = input(owner, "Select a facial hair style", "Hair Alterations") as null|anything in GLOB.facial_hair_styles_list - if(new_style) - H.facial_hair_style = new_style - else - H.facial_hair_style = "Shaved" - //handle normal hair - var/new_style = input(owner, "Select a hair style", "Hair Alterations") as null|anything in GLOB.hair_styles_list - if(new_style) - H.hair_style = new_style - H.update_hair() - else if (select_alteration == "Genitals") - var/list/organs = list() - var/operation = input("Select organ operation.", "Organ Manipulation", "cancel") in list("add sexual organ", "remove sexual organ", "cancel") - switch(operation) - if("add sexual organ") - var/new_organ = input("Select sexual organ:", "Organ Manipulation") in list("Penis", "Testicles", "Breasts", "Vagina", "Womb", "Cancel") - if(new_organ == "Penis") - H.give_penis() - else if(new_organ == "Testicles") - H.give_balls() - else if(new_organ == "Breasts") - H.give_breasts() - else if(new_organ == "Vagina") - H.give_vagina() - else if(new_organ == "Womb") - H.give_womb() - else - return - if("remove sexual organ") - for(var/obj/item/organ/genital/X in H.internal_organs) - var/obj/item/organ/I = X - organs["[I.name] ([I.type])"] = I - var/obj/item/organ = input("Select sexual organ:", "Organ Manipulation", null) in organs - organ = organs[organ] - if(!organ) - return - var/obj/item/organ/genital/O - if(isorgan(organ)) - O = organ - O.Remove(H) - organ.forceMove(get_turf(H)) - qdel(organ) - H.update_body() - else if (select_alteration == "Ears") - var/new_ears - new_ears = input(owner, "Choose your character's ears:", "Ear Alteration") as null|anything in GLOB.mam_ears_list - if(new_ears) - H.dna.features["mam_ears"] = new_ears - H.update_body() - else if (select_alteration == "Tail") - var/new_tail - new_tail = input(owner, "Choose your character's tail:", "Tail Alteration") as null|anything in GLOB.mam_tails_list - if(new_tail) - H.dna.features["mam_tail"] = new_tail - if(new_tail != "None") - H.dna.features["taur"] = "None" - H.update_body() - else if (select_alteration == "Taur body") - var/new_taur - new_taur = input(owner, "Choose your character's tauric body:", "Taur Body Alteration") as null|anything in GLOB.taur_list - if(new_taur) - H.dna.features["taur"] = new_taur - if(new_taur != "None") - H.dna.features["mam_tail"] = "None" - H.dna.features["xenotail"] = "None" - H.update_body() - else - return - //misc /mob/living/carbon/human/dummy no_vore = TRUE diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm index 93823c03c8..f38cdb62f0 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -7,17 +7,38 @@ sexes = 0 species_traits = list(MUTCOLORS,NOEYES) mutant_bodyparts = list("ipc_screen") - default_features = list("ipc_screen" = "Sunburst") + default_features = list("ipc_screen" = "Blank") species_traits = list(MUTCOLORS) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc + var/datum/action/innate/monitor_change/screen + /datum/species/ipc/on_species_gain(mob/living/carbon/human/C) C.draw_citadel_parts() - . = ..() + if(isipcperson(C) && !screen) + screen = new + screen.Grant(C) + ..() /datum/species/ipc/on_species_loss(mob/living/carbon/human/C) C.draw_citadel_parts(TRUE) - . = ..() + if(screen) + screen.Remove(C) + ..() /datum/species/ipc/get_spans() - return SPAN_ROBOT \ No newline at end of file + return SPAN_ROBOT + +/datum/action/innate/monitor_change + name = "Screen Change" + check_flags = AB_CHECK_CONSCIOUS + icon_icon = 'icons/mob/actions/actions_silicon.dmi' + button_icon_state = "drone_vision" + +/datum/action/innate/monitor_change/Activate() + var/mob/living/carbon/human/H = owner + var/new_ipc_screen = input(usr, "Choose your character's screen:", "Monitor Display") as null|anything in GLOB.ipc_screens_list + if(!new_ipc_screen) + return + H.dna.features["ipc_screen"] = new_ipc_screen + H.update_body() diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 5e3f58e26c..03a7cbc0a7 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -1,2 +1,113 @@ /datum/species/jelly/slime name = "Xenobiological Slimeperson" + +//##########SLIMEPEOPLE########## + +/datum/species/jelly/roundstartslime + name = "Slimeperson" + id = "slimeperson" + default_color = "00FFFF" + species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD) + inherent_traits = list(TRAIT_TOXINLOVER) + mutant_bodyparts = list("mam_tail", "mam_ears", "taur") + default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None") + say_mod = "says" + hair_color = "mutcolor" + hair_alpha = 180 + liked_food = MEAT + coldmod = 3 + heatmod = 1 + burnmod = 1 + +/datum/action/innate/slime_change + name = "Alter Form" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "alter_form" //placeholder + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + +/datum/action/innate/slime_change/Activate() + var/mob/living/carbon/human/H = owner + if(!isjellyperson(H)) + return + else + H.visible_message("[owner] gains a look of \ + concentration while standing perfectly still.\ + Their body seems to shift and starts getting more goo-like.", + "You focus intently on altering your body while \ + standing perfectly still...") + change_form() + +/datum/action/innate/slime_change/proc/change_form() + var/mob/living/carbon/human/H = owner + var/select_alteration = input(owner, "Select what part of your form to alter", "Form Alteration", "cancel") in list("Hair Style", "Genitals", "Tail", "Ears", "Taur body", "Cancel") + if(select_alteration == "Hair Style") + if(H.gender == MALE) + var/new_style = input(owner, "Select a facial hair style", "Hair Alterations") as null|anything in GLOB.facial_hair_styles_list + if(new_style) + H.facial_hair_style = new_style + else + H.facial_hair_style = "Shaved" + //handle normal hair + var/new_style = input(owner, "Select a hair style", "Hair Alterations") as null|anything in GLOB.hair_styles_list + if(new_style) + H.hair_style = new_style + H.update_hair() + else if (select_alteration == "Genitals") + var/list/organs = list() + var/operation = input("Select organ operation.", "Organ Manipulation", "cancel") in list("add sexual organ", "remove sexual organ", "cancel") + switch(operation) + if("add sexual organ") + var/new_organ = input("Select sexual organ:", "Organ Manipulation") in list("Penis", "Testicles", "Breasts", "Vagina", "Womb", "Cancel") + if(new_organ == "Penis") + H.give_penis() + else if(new_organ == "Testicles") + H.give_balls() + else if(new_organ == "Breasts") + H.give_breasts() + else if(new_organ == "Vagina") + H.give_vagina() + else if(new_organ == "Womb") + H.give_womb() + else + return + if("remove sexual organ") + for(var/obj/item/organ/genital/X in H.internal_organs) + var/obj/item/organ/I = X + organs["[I.name] ([I.type])"] = I + var/obj/item/organ = input("Select sexual organ:", "Organ Manipulation", null) in organs + organ = organs[organ] + if(!organ) + return + var/obj/item/organ/genital/O + if(isorgan(organ)) + O = organ + O.Remove(H) + organ.forceMove(get_turf(H)) + qdel(organ) + H.update_body() + else if (select_alteration == "Ears") + var/new_ears + new_ears = input(owner, "Choose your character's ears:", "Ear Alteration") as null|anything in GLOB.mam_ears_list + if(new_ears) + H.dna.features["mam_ears"] = new_ears + H.update_body() + else if (select_alteration == "Tail") + var/new_tail + new_tail = input(owner, "Choose your character's tail:", "Tail Alteration") as null|anything in GLOB.mam_tails_list + if(new_tail) + H.dna.features["mam_tail"] = new_tail + if(new_tail != "None") + H.dna.features["taur"] = "None" + H.update_body() + else if (select_alteration == "Taur body") + var/new_taur + new_taur = input(owner, "Choose your character's tauric body:", "Taur Body Alteration") as null|anything in GLOB.taur_list + if(new_taur) + H.dna.features["taur"] = new_taur + if(new_taur != "None") + H.dna.features["mam_tail"] = "None" + H.dna.features["xenotail"] = "None" + H.update_body() + else + return \ No newline at end of file diff --git a/modular_citadel/icons/mob/ipc_screens.dmi b/modular_citadel/icons/mob/ipc_screens.dmi new file mode 100644 index 0000000000..09b2493bbd Binary files /dev/null and b/modular_citadel/icons/mob/ipc_screens.dmi differ diff --git a/modular_citadel/icons/mob/mobs.dmi b/modular_citadel/icons/mob/mobs.dmi deleted file mode 100644 index cf74d73796..0000000000 Binary files a/modular_citadel/icons/mob/mobs.dmi and /dev/null differ diff --git a/modular_citadel/icons/mob/mutant_bodyparts.dmi b/modular_citadel/icons/mob/mutant_bodyparts.dmi index f89d815b16..741051faa0 100644 Binary files a/modular_citadel/icons/mob/mutant_bodyparts.dmi and b/modular_citadel/icons/mob/mutant_bodyparts.dmi differ diff --git a/tgstation.dme b/tgstation.dme index f79ca52b3c..2ff341a744 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2732,7 +2732,6 @@ #include "modular_citadel\code\modules\mob\living\carbon\carbon.dm" #include "modular_citadel\code\modules\mob\living\carbon\damage_procs.dm" #include "modular_citadel\code\modules\mob\living\carbon\reindex_screams.dm" -#include "modular_citadel\code\modules\mob\living\carbon\human\human.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\life.dm"