From 113b84ab50225515e4d801ba1f0b7f178504f841 Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Wed, 30 Sep 2020 15:10:17 -0500 Subject: [PATCH 01/10] Ports arachnids from WaspStation --- code/__DEFINES/is_helpers.dm | 1 + code/__HELPERS/global_lists.dm | 3 + code/__HELPERS/mobs.dm | 16 ++ code/__HELPERS/names.dm | 3 + code/_globalvars/lists/flavor_misc.dm | 8 +- code/_globalvars/lists/names.dm | 2 + code/controllers/subsystem/traumas.dm | 3 +- code/game/objects/effects/spiderperson_web.dm | 70 ++++++++ code/modules/admin/create_mob.dm | 3 + code/modules/client/preferences.dm | 40 +++++ code/modules/client/preferences_savefile.dm | 9 + code/modules/language/language_holder.dm | 6 + code/modules/language/spider.dm | 13 ++ .../new_player/sprite_accessories/spider.dm | 47 ++++++ code/modules/mob/living/carbon/human/human.dm | 3 + .../mob/living/carbon/human/species.dm | 2 + .../carbon/human/species_types/spider.dm | 156 ++++++++++++++++++ .../chemistry/reagents/alcohol_reagents.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 6 + .../reagents/chemistry/recipes/others.dm | 12 +- code/modules/surgery/bodyparts/_bodyparts.dm | 7 +- code/modules/surgery/organs/eyes.dm | 6 + code/modules/surgery/organs/tongue.dm | 19 +++ config/game_options.txt | 1 + icons/mob/spider_legs.dmi | Bin 0 -> 1845 bytes icons/mob/spider_mandibles.dmi | Bin 0 -> 461 bytes icons/mob/spider_parts.dmi | Bin 0 -> 1097 bytes icons/mob/spider_spinneret.dmi | Bin 0 -> 911 bytes tgstation.dme | 8 +- 29 files changed, 436 insertions(+), 10 deletions(-) create mode 100644 code/game/objects/effects/spiderperson_web.dm create mode 100644 code/modules/language/spider.dm create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/spider.dm create mode 100644 code/modules/mob/living/carbon/human/species_types/spider.dm create mode 100644 icons/mob/spider_legs.dmi create mode 100644 icons/mob/spider_mandibles.dmi create mode 100644 icons/mob/spider_parts.dmi create mode 100644 icons/mob/spider_spinneret.dmi diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 55be13834d..c443f8e859 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -85,6 +85,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define isinsect(A) (is_species(A, /datum/species/insect)) #define isxenoperson(A) (is_species(A, /datum/species/xeno)) #define isstartjelly(A) (is_species(A, /datum/species/jelly/roundstartslime)) +#define isspiderperson(A) (is_species(A, /datum/species/spider)) //more carbon mobs #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 1119ef44ed..34cfcf2498 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -32,6 +32,9 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/caps, GLOB.caps_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_wings, GLOB.insect_wings_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_fluff, GLOB.insect_fluffs_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_legs, GLOB.spider_legs_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_spinneret, GLOB.spider_spinneret_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_mandibles, GLOB.spider_mandibles_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/deco_wings, GLOB.deco_wings_list) //CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 52e26b67e7..9437d29a3a 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -76,6 +76,12 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_fluff, GLOB.insect_fluffs_list) if(!GLOB.insect_markings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_markings, GLOB.insect_markings_list) + if(!GLOB.spider_legs_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_legs, GLOB.spider_legs_list) + if(!GLOB.spider_spinneret_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_spinneret, GLOB.spider_spinneret_list) + if(!GLOB.spider_mandibles_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_mandibles, GLOB.spider_mandibles_list) //CIT CHANGES - genitals and such if(!GLOB.cock_shapes_list.len) @@ -177,6 +183,9 @@ "insect_wings" = pick(GLOB.insect_wings_list), "insect_fluff" = "None", "insect_markings" = pick(GLOB.insect_markings_list), + "spider_legs" = pick(GLOB.spider_legs_list), + "spider_spinneret" = pick(GLOB.spider_spinneret_list), + "spider_mandibles" = pick(GLOB.spider_mandibles_list), "taur" = "None", "mam_body_markings" = snowflake_markings_list.len ? pick(snowflake_markings_list) : "None", "mam_ears" = snowflake_ears_list ? pick(snowflake_ears_list) : "None", @@ -278,6 +287,13 @@ if(!findname(.)) break +/proc/random_unique_spider_name(attempts_to_find_unique_name=10) + for(var/i in 1 to attempts_to_find_unique_name) + . = capitalize(pick(GLOB.spider_first)) + " " + capitalize(pick(GLOB.spider_last)) + + if(!findname(.)) + break + #define SKINTONE2HEX(skin_tone) GLOB.skin_tones[skin_tone] || skin_tone /proc/random_skin_tone() diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index e1848b21a2..4c1ab5e676 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -16,6 +16,9 @@ /proc/moth_name() return "[pick(GLOB.moth_first)] [pick(GLOB.moth_last)]" +/proc/spider_name() + return "[pick(GLOB.spider_first)] [pick(GLOB.spider_last)]" + /proc/church_name() var/static/church_name if (church_name) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 09d4aadf50..e071976465 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -38,6 +38,9 @@ GLOBAL_LIST_EMPTY(r_wings_list) GLOBAL_LIST_EMPTY(insect_wings_list) GLOBAL_LIST_EMPTY(insect_fluffs_list) GLOBAL_LIST_EMPTY(insect_markings_list) +GLOBAL_LIST_EMPTY(spider_legs_list) +GLOBAL_LIST_EMPTY(spider_spinneret_list) +GLOBAL_LIST_EMPTY(spider_mandibles_list) GLOBAL_LIST_EMPTY(caps_list) //a way to index the right bodypart list given the type of bodypart @@ -60,6 +63,9 @@ GLOBAL_LIST_INIT(mutant_reference_list, list( "insect_wings" = GLOB.insect_wings_list, "insect_fluff" = GLOB.insect_fluffs_list, "insect_markings" = GLOB.insect_markings_list, + "spider_legs" = GLOB.spider_legs_list, + "spider spinneret" = GLOB.spider_spinneret_list, + "spider mandibles" = GLOB.spider_mandibles_list, "caps" = GLOB.caps_list, "ipc_screen" = GLOB.ipc_screens_list, "ipc_antenna" = GLOB.ipc_antennas_list, @@ -274,7 +280,7 @@ GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/o //locked parts are those that your picked species requires to have //unlocked parts are those that anyone can choose on customisation regardless //parts not in unlocked, but in all, are thus locked -GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns")) +GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "spider_legs" = "Spider Legs", "spider_spinneret" = "Spinneret", "spider_mandibles" = "Mandibles", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns")) GLOBAL_LIST_INIT(unlocked_mutant_parts, list("horns", "insect_fluff")) //parts in either of the above two lists that require a second option that allows them to be coloured GLOBAL_LIST_INIT(colored_mutant_parts, list("insect_wings" = "wings_color", "deco_wings" = "wings_color", "horns" = "horns_color")) diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index b80fcf0bbf..297902ac87 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -16,6 +16,8 @@ GLOBAL_LIST_INIT(carp_names, world.file2list("strings/names/carp.txt")) GLOBAL_LIST_INIT(golem_names, world.file2list("strings/names/golem.txt")) GLOBAL_LIST_INIT(moth_first, world.file2list("strings/names/moth_first.txt")) GLOBAL_LIST_INIT(moth_last, world.file2list("strings/names/moth_last.txt")) +GLOBAL_LIST_INIT(spider_first, world.file2list("strings/names/spider_first.txt")) +GLOBAL_LIST_INIT(spider_last, world.file2list("strings/names/spider_last.txt")) GLOBAL_LIST_INIT(plasmaman_names, world.file2list("strings/names/plasmaman.txt")) GLOBAL_LIST_INIT(ethereal_names, world.file2list("strings/names/ethereal.txt")) GLOBAL_LIST_INIT(posibrain_names, world.file2list("strings/names/posibrain.txt")) diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index f556f7dee7..174c298470 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -198,7 +198,8 @@ SUBSYSTEM_DEF(traumas) "aliens" = typecacheof(list(/datum/species/abductor, /datum/species/jelly, /datum/species/pod, /datum/species/shadow)), "anime" = typecacheof(list(/datum/species/human/felinid)), "cats" = typecacheof(list(/datum/species/human/felinid)), - "syndicate" = typecacheof(list(/datum/species/corporate, /datum/species/zombie/infectious)) + "syndicate" = typecacheof(list(/datum/species/corporate, /datum/species/zombie/infectious)), + "spiders" = typecacheof(list(/datum/species/spider)) ) return ..() diff --git a/code/game/objects/effects/spiderperson_web.dm b/code/game/objects/effects/spiderperson_web.dm new file mode 100644 index 0000000000..93d254d672 --- /dev/null +++ b/code/game/objects/effects/spiderperson_web.dm @@ -0,0 +1,70 @@ +/obj/structure/spider_player + name = "large web" + icon = 'icons/effects/effects.dmi' + desc = "It's stringy and sticky, but the threads are larger than what spiderlings could produce." + anchored = TRUE + density = FALSE + max_integrity = 20 + +/obj/structure/spider_player/New() + ..() + icon_state = pick(list("stickyweb1", "stickyweb2")) + + +/obj/structure/spider_player/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + if(damage_type == BURN)//the stickiness of the web mutes all attack sounds except fire damage type + playsound(loc, 'sound/items/welder.ogg', 100, TRUE) + +/obj/structure/spider_player/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) + if(damage_flag == "melee") + switch(damage_type) + if(BURN) + damage_amount *= 2 + if(BRUTE) + damage_amount *= 0.5 + . = ..() + +/obj/structure/spider_player/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + take_damage(5, BURN, 0, 0) + +/obj/structure/spider_player/CanPass(atom/movable/mover, turf/target) + . = ..() + if(isspiderperson(mover)) + + return TRUE + else if(isliving(mover)) + if(isspiderperson(mover.pulledby)) + + return TRUE + if(prob(50)) + to_chat(mover, "You get stuck in \the [src] for a moment.") + return FALSE + +/obj/structure/spider_player/cocoon + name = "cocoon" + desc = "Something wrapped in silky spider web." + icon_state = "cocoon1" + anchored = FALSE + density = FALSE + max_integrity = 60 + +/obj/structure/spider_player/cocoon/Initialize() + icon_state = pick("cocoon1","cocoon2","cocoon3") + . = ..() + +/obj/structure/spider_player/cocoon/container_resist(mob/living/user) + var/breakout_time = 1000 // DECI not DECA ffs + to_chat(user, "You struggle against the tight bonds... (This will take about [DisplayTimeText(breakout_time)].)") + visible_message("You see something struggling and writhing in \the [src]!") + if(do_after(user,(breakout_time), target = src)) + if(!user || user.stat != CONSCIOUS || user.loc != src) + return + qdel(src) + +/obj/structure/spider_player/cocoon/Destroy() + var/turf/T = get_turf(src) + src.visible_message("\The [src] splits open.") + for(var/atom/movable/A in contents) + A.forceMove(T) + return ..() diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index e287d9b1b3..81740fd71a 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -43,6 +43,9 @@ H.dna.features["insect_wings"] = pick(GLOB.insect_wings_list) H.dna.features["deco_wings"] = pick(GLOB.deco_wings_list) H.dna.features["insect_fluff"] = pick(GLOB.insect_fluffs_list) + H.dna.features["spider_legs"] = pick(GLOB.spider_legs_list) + H.dna.features["spider_spinneret"] = pick(GLOB.spider_spinneret_list) + H.dna.features["spider_mandibles"] = pick(GLOB.spider_mandibles_list) H.dna.features["flavor_text"] = "" //Oh no. H.dna.features["body_model"] = H.gender diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index a673012118..41ed49f848 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -118,6 +118,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", + "spider_legs" = "Plain", + "spider_spinneret" = "Plain", + "spider_mandibles" = "Plain", "mam_body_markings" = "Plain", "mam_ears" = "None", "mam_snouts" = "None", @@ -1681,6 +1684,24 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_ipc_antenna) features["ipc_antenna"] = new_ipc_antenna + if("spider_legs") + var/new_spider_legs + new_spider_legs = input(user, "Choose your character's variant of spider legs:", "Character Preference") as null|anything in GLOB.spider_legs_list + if(new_spider_legs) + features["spider_legs"] = new_spider_legs + + if("spider_spinneret") + var/new_spider_spinneret + new_spider_spinneret = input(user, "Choose your character's spinneret markings:", "Character Preference") as null|anything in GLOB.spider_spinneret_list + if(new_spider_spinneret) + features["spider_spinneret"] = new_spider_spinneret + + if("spider_mandibles") + var/new_spider_mandibles + new_spider_mandibles = input(user, "Choose your character's variant of mandibles:", "Character Preference") as null|anything in GLOB.spider_mandibles_list + if (new_spider_mandibles) + features["spider_mandibles"] = new_spider_mandibles + if("tail_lizard") var/new_tail new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in GLOB.tails_list_lizard @@ -1846,6 +1867,24 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_insect_markings) features["insect_markings"] = new_insect_markings + if("spider_legs") + var/new_spider_legs + new_spider_legs = input(user, "Choose your character's variant of spider legs:", "Character Preference") as null|anything in GLOB.spider_legs_list + if(new_spider_legs) + features["spider_legs"] = new_spider_legs + + if("spider_spinneret") + var/new_spider_spinneret + new_spider_spinneret = input(user, "Choose your character's spinneret markings:", "Character Preference") as null|anything in GLOB.spider_spinneret_list + if(new_spider_spinneret) + features["spider_spinneret"] = new_spider_spinneret + + if("spider_mandibles") + var/new_spider_mandibles + new_spider_mandibles = input(user, "Choose your character's variant of mandibles:", "Character Preference") as null|anything in GLOB.spider_mandibles_list + if (new_spider_mandibles) + features["spider_mandibles"] = new_spider_mandibles + if("s_tone") var/list/choices = GLOB.skin_tones - GLOB.nonstandard_skin_tones if(CONFIG_GET(flag/allow_custom_skintones)) @@ -1885,6 +1924,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["xenotail"] = "None" features["tail_human"] = "None" features["tail_lizard"] = "None" + features["spider_spinneret"] = "None" if("ears") var/list/snowflake_ears_list = list() diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 23d0288163..8fc0ea8c04 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -511,6 +511,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_insect_wings"] >> features["insect_wings"] S["feature_insect_fluff"] >> features["insect_fluff"] S["feature_insect_markings"] >> features["insect_markings"] + S["feature_spider_legs"] >> features["spider_legs"] + S["feature_spider_spinneret"] >> features["spider_spinneret"] + S["feature_spider_mandibles"] >> features["spider_mandibles"] S["feature_horns_color"] >> features["horns_color"] S["feature_wings_color"] >> features["wings_color"] S["persistent_scars"] >> persistent_scars @@ -690,6 +693,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["insect_fluff"] = sanitize_inlist(features["insect_fluff"], GLOB.insect_fluffs_list) features["insect_markings"] = sanitize_inlist(features["insect_markings"], GLOB.insect_markings_list, "None") features["insect_wings"] = sanitize_inlist(features["insect_wings"], GLOB.insect_wings_list) + features["spider_legs"] = sanitize_inlist(features["spider_legs"], GLOB.spider_legs_list, "Plain") + features["spider_spinneret"] = sanitize_inlist(features["spider_spinneret"], GLOB.spider_spinneret_list, "Plain") + features["spider_mandibles"] = sanitize_inlist(features["spider_mandibles"], GLOB.spider_mandibles_list, "Plain") var/static/size_min if(!size_min) @@ -828,6 +834,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_insect_wings"] , features["insect_wings"]) WRITE_FILE(S["feature_insect_fluff"] , features["insect_fluff"]) WRITE_FILE(S["feature_insect_markings"] , features["insect_markings"]) + WRITE_FILE(S["feature_spider_legs"] , features["spider_legs"]) + WRITE_FILE(S["feature_spider_spinneret"] , features["spider_spinneret"]) + WRITE_FILE(S["feature_spider_mandibles"] , features["spider_mandibles"]) WRITE_FILE(S["feature_meat"] , features["meat_type"]) WRITE_FILE(S["feature_has_cock"], features["has_cock"]) diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index c1677117e9..77d03caa13 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -330,6 +330,12 @@ Key procs spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/voltaic = list(LANGUAGE_ATOM)) +/datum/language_holder/spider + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/spider = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/spider = list(LANGUAGE_ATOM)) + /datum/language_holder/empty understood_languages = list() spoken_languages = list() diff --git a/code/modules/language/spider.dm b/code/modules/language/spider.dm new file mode 100644 index 0000000000..43ab5e0de3 --- /dev/null +++ b/code/modules/language/spider.dm @@ -0,0 +1,13 @@ +/datum/language/spider + name = "Rachnidian" + desc = "A language that exploits the multiple limbs of spiders to do subtle dance like movements to communicate.\ + A proper speaker's movements are quick and sharp enough to make audible whiffs and thumps however, which are intelligible over the radio." + speech_verb = "chitter" + ask_verb = "chitter" + exclaim_verb = "chitter" + key = "r" + flags = NO_STUTTER | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + +/datum/language/spider/scramble(input) + . = prob(65) ? "wiff" : "thump" + . += (copytext(input, length(input)) == "?") ? "?" : "!" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/spider.dm b/code/modules/mob/dead/new_player/sprite_accessories/spider.dm new file mode 100644 index 0000000000..dcfa9aa45f --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/spider.dm @@ -0,0 +1,47 @@ +/datum/sprite_accessory/spider_legs + icon = 'icons/mob/spider_legs.dmi' + color_src = MUTCOLORS + +/datum/sprite_accessory/spider_legs/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/spider_legs/fuzzy + name = "Fuzzy" + icon_state = "fuzzy" + +/datum/sprite_accessory/spider_legs/spiky + name = "Spiky" + icon_state = "spiky" + +/datum/sprite_accessory/spider_spinneret + icon = 'icons/mob/spider_spinneret.dmi' + color_src = MUTCOLORS + +/datum/sprite_accessory/spider_spinneret/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/spider_spinneret/fuzzy + name = "Fuzzy" + icon_state = "fuzzy" + +/datum/sprite_accessory/spider_spinneret/black_widow + name = "Black Widow" + icon_state = "blackwidow" + +/datum/sprite_accessory/spider_mandibles + icon = 'icons/mob/spider_mandibles.dmi' + color_src = MUTCOLORS + +/datum/sprite_accessory/spider_mandibles/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/spider_mandibles/fuzzy + name = "Fuzzy" + icon_state = "fuzzy" + +/datum/sprite_accessory/spider_mandibles/spiky + name = "Spiky" + icon_state = "spiky" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 389787df67..b3f2f923a0 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1255,3 +1255,6 @@ /mob/living/carbon/human/species/roundstartslime race = /datum/species/jelly/roundstartslime + +/mob/living/carbon/human/species/spider + race = /datum/species/spider diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index d433ca1821..648b0921a9 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -117,6 +117,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //the ids you can use for your species, if empty, it means default only and not changeable var/list/allowed_limb_ids + var/override_bp_icon //override for the icon path used when setting bodypart overlays. Intended for species that don't fit in the standard 32x32 files. + /////////// // PROCS // /////////// diff --git a/code/modules/mob/living/carbon/human/species_types/spider.dm b/code/modules/mob/living/carbon/human/species_types/spider.dm new file mode 100644 index 0000000000..e93375b83e --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/spider.dm @@ -0,0 +1,156 @@ +/datum/species/spider + name = "Arachnid" + id = "rachnid" + override_bp_icon = 'icons/mob/spider_parts.dmi' + say_mod = "chitters" + default_color = "00FF00" + species_traits = list(LIPS, NOEYES, NO_UNDERWEAR) + inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG + mutant_bodyparts = list("spider_legs", "spider_spinneret", "spider_mandibles") + attack_verb = "slash" + attack_sound = 'sound/weapons/slash.ogg' + miss_sound = 'sound/weapons/slashmiss.ogg' + meat = /obj/item/reagent_containers/food/snacks/meat/slab/spider + liked_food = MEAT | RAW + disliked_food = FRUIT | GROSS + toxic_food = VEGETABLES | DAIRY + mutanteyes = /obj/item/organ/eyes/night_vision/spider + mutanttongue = /obj/item/organ/tongue/spider + species_language_holder = /datum/language_holder/spider + var/web_cooldown = 30 + var/web_ready = TRUE + var/spinner_rate = 75 + +/datum/species/spider/random_name(gender,unique,lastname) + if(unique) + return random_unique_spider_name() + + var/randname = spider_name() + + if(lastname) + randname += " [lastname]" + + return randname + +/datum/species/spider/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) + . = ..() + if(chem.type == /datum/reagent/toxin/pestkiller) + H.adjustToxLoss(3) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) + +/datum/species/spider/check_weakness(obj/item/weapon, mob/living/attacker) + if(istype(weapon, /obj/item/melee/flyswatter)) + return 9 //flyswatters deal 10x damage to spiders + return 0 + +/datum/species/spider/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) + . = ..() + var/datum/action/innate/spin_web/SW = new + var/datum/action/innate/spin_cocoon/SC = new + SC.Grant(H) + SW.Grant(H) + +/datum/species/spider/on_species_loss(mob/living/carbon/human/H) + . = ..() + var/datum/action/innate/spin_web/SW = locate(/datum/action/innate/spin_web) in H.actions + var/datum/action/innate/spin_cocoon/SC = locate(/datum/action/innate/spin_cocoon) in H.actions + SC?.Remove(H) + SW?.Remove(H) + +/datum/action/innate/spin_web + name = "Spin Web" + check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS + icon_icon = 'icons/mob/actions/actions_animal.dmi' + button_icon_state = "lay_web" + +/datum/action/innate/spin_cocoon + name = "Spin Cocoon" + check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS + icon_icon = 'icons/mob/actions/actions_animal.dmi' + button_icon_state = "wrap_0" + +/datum/action/innate/spin_web/Activate() + var/mob/living/carbon/human/species/spider/H = owner + var/datum/species/spider/E = H.dna.species + if(H.stat == "DEAD") + return + if(E.web_ready == FALSE) + to_chat(H, "You need to wait awhile to regenerate web fluid.") + return + var/turf/T = get_turf(H) + if(!T) + to_chat(H, "There's no room to spin your web here!") + return + var/obj/structure/spider/stickyweb/W = locate() in T + var/obj/structure/spider_player/W2 = locate() in T + if(W || W2) + to_chat(H, "There's already a web here!") + return + // Should have some minimum amount of food before trying to activate + var/nutrition_threshold = NUTRITION_LEVEL_FED + if (H.nutrition >= nutrition_threshold) + to_chat(H, "You begin spinning some web...") + if(!do_after(H, 10 SECONDS, 1, T)) + to_chat(H, "Your web spinning was interrupted!") + return + if(prob(75)) + H.adjust_nutrition(-E.spinner_rate) + addtimer(VARSET_CALLBACK(E, web_ready, TRUE), E.web_cooldown) + to_chat(H, "You use up a fair amount of energy spinning the web.") + new /obj/structure/spider_player(T, owner) + to_chat(H, "You weave a web on the ground with your spinneret!") + + else + to_chat(H, "You're too hungry to spin web right now, eat something first!") + return +/* + This took me far too long to figure out so I'm gonna document it here. + 1) Create an innate action for the species + 2) Have that action trigger a RegisterSignal for mob clicking + 3) Trigger the cocoonAtom proc on that signal + 4) Validate the target then start spinning + 5) if you're not interrupted, force move the target to the cocoon created at their location. +*/ +/datum/action/innate/spin_cocoon/Activate() + var/mob/living/carbon/human/species/spider/H = owner + var/datum/species/spider/E = H.dna.species + if(H.stat == "DEAD") + return + if(E.web_ready == FALSE) + to_chat(H, "You need to wait awhile to regenerate web fluid.") + return + var/nutrition_threshold = NUTRITION_LEVEL_FED + if (H.nutrition >= nutrition_threshold) + to_chat(H, "You pull out a strand from your spinneret, ready to wrap a target.
\ + (Press ALT+CLICK or MMB on the target to start wrapping.)
") + H.adjust_nutrition(E.spinner_rate * -0.5) + addtimer(VARSET_CALLBACK(E, web_ready, TRUE), E.web_cooldown) + RegisterSignal(H, list(COMSIG_MOB_ALTCLICKON), .proc/cocoonAtom) + return + else + to_chat(H, "You're too hungry to spin web right now, eat something first!") + return + +/datum/action/innate/spin_cocoon/proc/cocoonAtom(mob/living/carbon/human/species/spider/H, atom/movable/A) + UnregisterSignal(H, list(COMSIG_MOB_ALTCLICKON)) + var/datum/species/spider/E = H.dna.species + if (!H || !isspiderperson(H)) + return COMSIG_MOB_CANCEL_CLICKON + else + if(E.web_ready == FALSE) + to_chat(H, "You need to wait awhile to regenerate web fluid.") + return + if(!do_after(H, 10 SECONDS, 1, A)) + to_chat(H, "Your web spinning was interrupted!") + return + H.adjust_nutrition(E.spinner_rate * -3) + var/obj/structure/spider_player/cocoon/C = new(A.loc) + if(isliving(A)) + C.icon_state = pick("cocoon_large1","cocoon_large2","cocoon_large3") + A.forceMove(C) + H.visible_message("[H] wraps [A] into a large cocoon!") + return + else + A.forceMove(C) + H.visible_message("[H] wraps [A] into a cocoon!") + return \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 289b92f06d..b3416f831b 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1962,7 +1962,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/M) //Bugs should not drink Bug spray. - if(isinsect(M) || isflyperson(M)) + if(isinsect(M) || isflyperson(M) || isspiderperson(M)) M.adjustToxLoss(1,0) return ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 86f8b341d9..e70119f541 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -753,6 +753,12 @@ race = /datum/species/lizard/ashwalker mutationtext = "The pain subsides. You feel... savage." +/datum/reagent/mutationtoxin/arachnid + name = "Arachnid Mutation Toxin" + description = "A glowing toxin." + color = "#5EFF3B" //RGB: 94, 255, 59 + race = /datum/species/spider + mutationtext = "The pain subsides. You feel... silky." //DANGEROUS RACES /datum/reagent/mutationtoxin/shadow diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 92861a94ed..ae16bf389d 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -715,21 +715,27 @@ required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/medicine/synaptizine = 1, /datum/reagent/water = 1) /datum/chemical_reaction/cat - name = "felinid mutation toxic" + name = "felinid mutation toxin" id = /datum/reagent/mutationtoxin/felinid results = list(/datum/reagent/mutationtoxin/felinid = 1) required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/ammonia = 1, /datum/reagent/water = 1, /datum/reagent/pax/catnip = 1, /datum/reagent/mutationtoxin = 1) required_temp = 450 /datum/chemical_reaction/moff - name = "insect mutation toxic" + name = "insect mutation toxin" id = /datum/reagent/mutationtoxin/insect results = list(/datum/reagent/mutationtoxin/insect = 1) required_reagents = list(/datum/reagent/liquid_dark_matter = 2, /datum/reagent/ammonia = 5, /datum/reagent/lithium = 1, /datum/reagent/mutationtoxin = 1) required_temp = 320 +/datum/chemical_reaction/mutationtoxin/arachnid + name = "spiderperson mutation toxin" + id = /datum/reagent/mutationtoxin/arachnid + results = list(/datum/reagent/mutationtoxin/arachnid = 1) + required_reagents = list(/datum/reagent/mutationtoxin/insect = 1, /datum/reagent/toxin/heparin = 10) + /datum/chemical_reaction/notlight //Harder to make do to it being a hard race to play - name = "shadow muatatuin toxic" + name = "shadow mutation toxin" id = /datum/reagent/mutationtoxin/shadow results = list(/datum/reagent/mutationtoxin/shadow = 1) required_reagents = list(/datum/reagent/liquid_dark_matter = 5, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/oculine = 10, /datum/reagent/mutationtoxin = 1) diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index e90f86bf1c..1ebbabe1e7 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -651,8 +651,11 @@ body_markings = null aux_marking = null - if(species_id in GLOB.greyscale_limb_types) //should they have greyscales? - base_bp_icon = DEFAULT_BODYPART_ICON_ORGANIC + if(S.override_bp_icon) + base_bp_icon = S.override_bp_icon + else + if(species_id in GLOB.greyscale_limb_types) //should they have greyscales? + base_bp_icon = DEFAULT_BODYPART_ICON_ORGANIC if(base_bp_icon != DEFAULT_BODYPART_ICON) color_src = mut_colors ? MUTCOLORS : ((H.dna.skin_tone_override && S.use_skintones == USE_SKINTONES_GRAYSCALE_CUSTOM) ? CUSTOM_SKINTONE : SKINTONE) diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index e3ab44213f..abc563839b 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -421,6 +421,12 @@ name = "ipc eyes" icon_state = "cybernetic_eyeballs" +/obj/item/organ/eyes/night_vision/spider + name = "spider eyes" + desc = "These eyes seem to have increased sensitivity to bright light, offset by basic night vision." + see_in_dark = 4 + flash_protect = -1 + #undef BLURRY_VISION_ONE #undef BLURRY_VISION_TWO #undef BLIND_VISION_THREE diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 929b42f96d..fc534343ac 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -258,3 +258,22 @@ /obj/item/organ/tongue/ethereal/Initialize(mapload) . = ..() languages_possible = languages_possible_ethereal + +/obj/item/organ/tongue/spider + name = "inner mandible" + desc = "A set of soft, spoon-esque mandibles closer to the mouth opening, that allow for basic speech, and the ability to speak Rachnidian." + say_mod = "chitters" + var/static/list/languages_possible_arachnid = typecacheof(list( + /datum/language/common, + /datum/language/draconic, + /datum/language/codespeak, + /datum/language/monkey, + /datum/language/narsie, + /datum/language/beachbum, + /datum/language/aphasia, + /datum/language/spider, + )) + +/obj/item/organ/tongue/spider/Initialize(mapload) + . = ..() + languages_possible = languages_possible_arachnid \ No newline at end of file diff --git a/config/game_options.txt b/config/game_options.txt index a5b0d0b8c4..38b632175f 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -477,6 +477,7 @@ ROUNDSTART_RACES xeno ROUNDSTART_RACES slimeperson ROUNDSTART_RACES guilmon ROUNDSTART_RACES ipc +ROUNDSTART_RACES rachnid ##------------------------------------------------------------------------------------------- diff --git a/icons/mob/spider_legs.dmi b/icons/mob/spider_legs.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d04b5a719e30a8f8a6af1fc72bcb8e8d34e62f1f GIT binary patch literal 1845 zcmV-52g>+~P)005u_0{{R3dEt5<0000gP)t-s0000$ z7ywow0(wIniB2RQA1yi-0c0-+4-O715CCL4Adh55eNQkH6c}diNhtsT00DGTPE!Ct z=GbNc005kNR9JLGWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM z;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3K9+H@>(aGbObsJ|{K3I6keks;V;H$<@Qt z&qaxgGbOXA7-SL`XIfEWZYqdvh)ZihPGV*rd0K(&Y>I4kbnzllAH<`i>w`EIk3MAu zS3ehUOaK7Mt9)2SX)~Sx00t3BL_t(&f$dq%ZsRr(rj$As=mfAEw?+>IluZG*w@n&g zubWLDz!w914BDc;uCqnb-i!hTeB4LS+43RhAP1ilANm6OF6EynN*w+v%3>GDmq4P2 z;>Qs=9F8~$`QmG(9QVDOL14|}Q-x%BqIA)b;-VDS?sd$L>E+jBDTq#H7v%ct!a(?2 z%I`-htl-t}Ot~Ye;sJYb_{SytHJuc4QHrm5PiS-r5{@rorrcMOaLCm}Ge$g-grYPX z3C+f%3xIF;3ZXN`AVsVcy=GM?nM{SaGkMDtJdU|$@k#UsAUq2H&2=hT4 z_my#12XJq&*)cde0i^NIhmBYC0Bi|Mp9-1GduNeRMJ9>rI7uN+IjZ)lUZ~u*~+2u7mR|Y~; zPvc?~xkKzoN83GQw`go2G;9r0UN9AoR`&F*pl6bex?e}U!%C#rx&GMDcV8i zc~A*Oh^LWr+=MW?)DF{Y%7<^(f@huG`VgYG#+rommF05mXvs&%a_s7$W4YcS%oU@ztq&pk#~_bs zPxuBQK`2Wu5Z{vO(p2~tVl+9^i(EYohit zY{LCYfQwn*JRKOn(^#jNn zVWEgdNNPYr?Etb$cwZ3dgyB0*dzSOA=QkSZ_`&`ICTdW^IYAT97Kz%!mj5~mS z0I4D81Zrd22{r_PDvMD?;`#0>jn_A5wegQoYgpfAy}GX_lGR-XJ?(+}3^*4fBBEm> zV51^U!?|Z@a3!>Z;Yer)!iRST@`XK9}S z@TT22MtN(lh9fi~?L=ro+6A_l&Buq~2u(=45S);fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3K9+H@>(aGbObsJ~uHhB{L}}wKzVlw5qBy-Yv-AFGPupGbOXA7-Sk3XIfEWZYqdv zh*x_-PGV*r`PzX3*#vA?R&e!m0s9sJrgKcxUmK$b0002YNkl3+kQ(L!qn&008&{^IFi8LcPwr5 zXx8})U7j3E>*YPr@@}{M1RwSX)`_10008h?s_9Xz_Xm65@_Ng}NPp00000NkvXXu0mjf D6MMji literal 0 HcmV?d00001 diff --git a/icons/mob/spider_parts.dmi b/icons/mob/spider_parts.dmi new file mode 100644 index 0000000000000000000000000000000000000000..389ca79dda04039eacd58be20ec1499e39c0c809 GIT binary patch literal 1097 zcmV-P1h)H$P)iF1IU_GK zB|fnzH$F#+i!&v&s2HS~i!-e#F*g;&HpH&Fh-lRrsfj5>D=x_|D$XZbbxvwJ3C;$o zCc)W>c_}0q4pxrSbY%rsKNoNe0RZT{e)x>U^Yj1!0~Sd{K~#90?VQniqaYB49Wa22 z-7LQU!!Aj4(~X>gDv7k`?_Fjb&Z+3v4v=9Wgb+f=v5?BoTaR0vXVx>s)TpT}UQ<6` z;(;~e%BQ2Tg##$XGsBnHU)T2~L!L8s(w`lEl=AwzgOhvu$eoJoV@AI^dR6@ueP0Qu z{|6aQp<)2UxH@`W{bzkIWZeKEgb+dqA%u|MjJft0fKaM-c$@-yMjt*KGW1)8!5I4}-b>y`moThaml*4)XewgU0&b&pt~4 z??YO?V_(2-O91a8)4A^l_s*{S9&~Sj5JCtcgb+dqA%u`Van_`t{KnegMZ|+W!ZCVf znbpVmU3CSxV8sSxAcO!6#AHu1Akxr*59tO3pN&g!-i7?}gPQ^9!1}fZwBN9p6h-GJ z(iHMY-!0s73MB^~P4RRKJh%br`b9Oc?6r-5on!!o?^6iHmt}zlQoN}F^$r*~gE}w} z&@-H_k5MrYV^ae*J;dlO5}bomC|be#g4m`H@c|GpN7D>G{_z!Tp!H$G9l!=USja{q zyD%`=B^w%h&_6g};P{Vl!sY)K0HNamMfwhI0W{z`Ffc*`9c<H} z2qAt7?avw@ZPP7X5q zE9<{;^Bni>5kd$dgb+dqA%qY@$lky$kv)*@eRsnTaL~H}LI@#*kQ)902BQ&23=R3K P00000NkvXXu0mjfFi6(& literal 0 HcmV?d00001 diff --git a/icons/mob/spider_spinneret.dmi b/icons/mob/spider_spinneret.dmi new file mode 100644 index 0000000000000000000000000000000000000000..36dcb6714ce3239b8c7be53a18154cb03d23b194 GIT binary patch literal 911 zcmV;A191F_P)~ka=&Wk%21^05ucjRorIy4O+ApHD_Tl2us%00Lu4L_t(&f$fyRlH(u@M8^aJ0St-%|6>;c zd)ToWW2fe@Q|ihoNa}}>_4OqZi9{liNc4YcSr&YxCW|Osy|Dcv4T&Qs!0M)4;j_qHwp9Cu!MF5W8@d*HG16X?F>2Elo-|kUkJpgz<2LR565IA__y_@uJ1kN)6 zG<;72KqFvH@ZJaR2?7yZ0H89=3EdtxfHFOa{R%>`b{fFi!1=cp;IFXW)AQ_=V0sfG z|IRST49Nf5e!ahojrm}Yi$o%kNF)-8eurX=H;!&c9#glJKyuu2nyixYh6#p6;`T~_ zAinoIP0J<4+kmY_9gl6Q3!eZ0002ovPDHLkV1nyuicSCk literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 143f66a656..0e31cf38fa 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -808,8 +808,6 @@ #include "code\game\machinery\mass_driver.dm" #include "code\game\machinery\navbeacon.dm" #include "code\game\machinery\PDApainter.dm" -#include "code\game\machinery\poweredfans\fan_assembly.dm" -#include "code\game\machinery\poweredfans\poweredfans.dm" #include "code\game\machinery\quantum_pad.dm" #include "code\game\machinery\recharger.dm" #include "code\game\machinery\rechargestation.dm" @@ -887,6 +885,8 @@ #include "code\game\machinery\porta_turret\portable_turret.dm" #include "code\game\machinery\porta_turret\portable_turret_construct.dm" #include "code\game\machinery\porta_turret\portable_turret_cover.dm" +#include "code\game\machinery\poweredfans\fan_assembly.dm" +#include "code\game\machinery\poweredfans\poweredfans.dm" #include "code\game\machinery\shuttle\custom_shuttle.dm" #include "code\game\machinery\shuttle\shuttle_engine.dm" #include "code\game\machinery\shuttle\shuttle_heater.dm" @@ -956,6 +956,7 @@ #include "code\game\objects\effects\overlays.dm" #include "code\game\objects\effects\portals.dm" #include "code\game\objects\effects\proximity.dm" +#include "code\game\objects\effects\spiderperson_web.dm" #include "code\game\objects\effects\spiders.dm" #include "code\game\objects\effects\step_triggers.dm" #include "code\game\objects\effects\wanted_poster.dm" @@ -2305,6 +2306,7 @@ #include "code\modules\language\narsian.dm" #include "code\modules\language\ratvarian.dm" #include "code\modules\language\slime.dm" +#include "code\modules\language\spider.dm" #include "code\modules\language\swarmer.dm" #include "code\modules\language\sylvan.dm" #include "code\modules\language\vampiric.dm" @@ -2420,6 +2422,7 @@ #include "code\modules\mob\dead\new_player\sprite_accessories\legs_and_taurs.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\snouts.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\socks.dm" +#include "code\modules\mob\dead\new_player\sprite_accessories\spider.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\spines.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\synthliz.dm" #include "code\modules\mob\dead\new_player\sprite_accessories\tails.dm" @@ -2556,6 +2559,7 @@ #include "code\modules\mob\living\carbon\human\species_types\podpeople.dm" #include "code\modules\mob\living\carbon\human\species_types\shadowpeople.dm" #include "code\modules\mob\living\carbon\human\species_types\skeletons.dm" +#include "code\modules\mob\living\carbon\human\species_types\spider.dm" #include "code\modules\mob\living\carbon\human\species_types\synthliz.dm" #include "code\modules\mob\living\carbon\human\species_types\synths.dm" #include "code\modules\mob\living\carbon\human\species_types\vampire.dm" From 8828440575710b73d898936e6fcb50fb12245bfa Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Wed, 30 Sep 2020 16:06:56 -0500 Subject: [PATCH 02/10] fix --- code/_globalvars/lists/flavor_misc.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index e071976465..a961703f75 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -64,8 +64,8 @@ GLOBAL_LIST_INIT(mutant_reference_list, list( "insect_fluff" = GLOB.insect_fluffs_list, "insect_markings" = GLOB.insect_markings_list, "spider_legs" = GLOB.spider_legs_list, - "spider spinneret" = GLOB.spider_spinneret_list, - "spider mandibles" = GLOB.spider_mandibles_list, + "spider_spinneret" = GLOB.spider_spinneret_list, + "spider_mandibles" = GLOB.spider_mandibles_list, "caps" = GLOB.caps_list, "ipc_screen" = GLOB.ipc_screens_list, "ipc_antenna" = GLOB.ipc_antennas_list, From 0bb889932d0ed39fbd0fc7336c19211b73ab3a16 Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Wed, 30 Sep 2020 19:05:56 -0500 Subject: [PATCH 03/10] Completed! --- code/game/objects/effects/spiderperson_web.dm | 4 ++-- code/modules/client/preferences_savefile.dm | 4 ++-- .../new_player/sprite_accessories/spider.dm | 12 +++++++++--- .../carbon/human/species_types/spider.dm | 18 ++++++++---------- icons/mob/spider_legs.dmi | Bin 1845 -> 2045 bytes icons/mob/spider_mandibles.dmi | Bin 461 -> 498 bytes icons/mob/spider_parts.dmi | Bin 1097 -> 1239 bytes icons/mob/spider_spinneret.dmi | Bin 911 -> 1089 bytes 8 files changed, 21 insertions(+), 17 deletions(-) diff --git a/code/game/objects/effects/spiderperson_web.dm b/code/game/objects/effects/spiderperson_web.dm index 93d254d672..d448592eb0 100644 --- a/code/game/objects/effects/spiderperson_web.dm +++ b/code/game/objects/effects/spiderperson_web.dm @@ -37,7 +37,7 @@ if(isspiderperson(mover.pulledby)) return TRUE - if(prob(50)) + if(prob(20)) to_chat(mover, "You get stuck in \the [src] for a moment.") return FALSE @@ -54,7 +54,7 @@ . = ..() /obj/structure/spider_player/cocoon/container_resist(mob/living/user) - var/breakout_time = 1000 // DECI not DECA ffs + var/breakout_time = 150 // DECI not DECA ffs to_chat(user, "You struggle against the tight bonds... (This will take about [DisplayTimeText(breakout_time)].)") visible_message("You see something struggling and writhing in \the [src]!") if(do_after(user,(breakout_time), target = src)) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 8fc0ea8c04..1386a0d7a0 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -693,8 +693,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["insect_fluff"] = sanitize_inlist(features["insect_fluff"], GLOB.insect_fluffs_list) features["insect_markings"] = sanitize_inlist(features["insect_markings"], GLOB.insect_markings_list, "None") features["insect_wings"] = sanitize_inlist(features["insect_wings"], GLOB.insect_wings_list) - features["spider_legs"] = sanitize_inlist(features["spider_legs"], GLOB.spider_legs_list, "Plain") - features["spider_spinneret"] = sanitize_inlist(features["spider_spinneret"], GLOB.spider_spinneret_list, "Plain") + features["spider_legs"] = sanitize_inlist(features["spider_legs"], GLOB.spider_legs_list, "Plain") + features["spider_spinneret"] = sanitize_inlist(features["spider_spinneret"], GLOB.spider_spinneret_list, "Plain") features["spider_mandibles"] = sanitize_inlist(features["spider_mandibles"], GLOB.spider_mandibles_list, "Plain") var/static/size_min diff --git a/code/modules/mob/dead/new_player/sprite_accessories/spider.dm b/code/modules/mob/dead/new_player/sprite_accessories/spider.dm index dcfa9aa45f..fff9c51ece 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/spider.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/spider.dm @@ -1,6 +1,8 @@ /datum/sprite_accessory/spider_legs icon = 'icons/mob/spider_legs.dmi' - color_src = MUTCOLORS + relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) + mutant_part_string = "spider_legs" + color_src = 0 /datum/sprite_accessory/spider_legs/plain name = "Plain" @@ -16,7 +18,9 @@ /datum/sprite_accessory/spider_spinneret icon = 'icons/mob/spider_spinneret.dmi' - color_src = MUTCOLORS + relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) + mutant_part_string = "spinneret" + color_src = 0 /datum/sprite_accessory/spider_spinneret/plain name = "Plain" @@ -32,7 +36,9 @@ /datum/sprite_accessory/spider_mandibles icon = 'icons/mob/spider_mandibles.dmi' - color_src = MUTCOLORS + relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) + mutant_part_string = "mandibles" + color_src = 0 /datum/sprite_accessory/spider_mandibles/plain name = "Plain" diff --git a/code/modules/mob/living/carbon/human/species_types/spider.dm b/code/modules/mob/living/carbon/human/species_types/spider.dm index e93375b83e..a4e78a2830 100644 --- a/code/modules/mob/living/carbon/human/species_types/spider.dm +++ b/code/modules/mob/living/carbon/human/species_types/spider.dm @@ -6,7 +6,7 @@ default_color = "00FF00" species_traits = list(LIPS, NOEYES, NO_UNDERWEAR) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG - mutant_bodyparts = list("spider_legs", "spider_spinneret", "spider_mandibles") + mutant_bodyparts = list("spider_legs" = "Plain", "spider_spinneret" = "Plain", "spider_mandibles" = "Plain") attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' @@ -17,9 +17,9 @@ mutanteyes = /obj/item/organ/eyes/night_vision/spider mutanttongue = /obj/item/organ/tongue/spider species_language_holder = /datum/language_holder/spider - var/web_cooldown = 30 + var/web_cooldown = 200 var/web_ready = TRUE - var/spinner_rate = 75 + var/spinner_rate = 25 /datum/species/spider/random_name(gender,unique,lastname) if(unique) @@ -75,7 +75,7 @@ if(H.stat == "DEAD") return if(E.web_ready == FALSE) - to_chat(H, "You need to wait awhile to regenerate web fluid.") + to_chat(H, "You need to wait a while to regenerate web fluid.") return var/turf/T = get_turf(H) if(!T) @@ -93,12 +93,10 @@ if(!do_after(H, 10 SECONDS, 1, T)) to_chat(H, "Your web spinning was interrupted!") return - if(prob(75)) - H.adjust_nutrition(-E.spinner_rate) - addtimer(VARSET_CALLBACK(E, web_ready, TRUE), E.web_cooldown) - to_chat(H, "You use up a fair amount of energy spinning the web.") + H.adjust_nutrition(-E.spinner_rate) + addtimer(VARSET_CALLBACK(E, web_ready, TRUE), E.web_cooldown) + to_chat(H, "You use up a fair amount of energy weaving a web on the ground with your spinneret!") new /obj/structure/spider_player(T, owner) - to_chat(H, "You weave a web on the ground with your spinneret!") else to_chat(H, "You're too hungry to spin web right now, eat something first!") @@ -122,7 +120,7 @@ var/nutrition_threshold = NUTRITION_LEVEL_FED if (H.nutrition >= nutrition_threshold) to_chat(H, "You pull out a strand from your spinneret, ready to wrap a target.
\ - (Press ALT+CLICK or MMB on the target to start wrapping.)
") + (Press ALT+CLICK on the target to start wrapping.)") H.adjust_nutrition(E.spinner_rate * -0.5) addtimer(VARSET_CALLBACK(E, web_ready, TRUE), E.web_cooldown) RegisterSignal(H, list(COMSIG_MOB_ALTCLICKON), .proc/cocoonAtom) diff --git a/icons/mob/spider_legs.dmi b/icons/mob/spider_legs.dmi index d04b5a719e30a8f8a6af1fc72bcb8e8d34e62f1f..51c4623ba48c558799e494117297eea10c7e1f97 100644 GIT binary patch delta 1869 zcmV-T2eSCJ4*d@yiBL{Q4GJ0x0000DNk~Le0002M0002M1Oos70HE@5G?5`j0jiN` zg?|h3_X{CWC&a7d=!7_zd^;UoyvXt;>G~ip#iLJI!PU6Ax|G+Kmn9AS+%fm#4sHMD7v1<{*M&n} zu=VS;{?xxnmu2lJ9y<UaT_EIg+}~9>`RH$h#7`y=%&@cz$h` zUZyr^0MI<{5z_ekqsn%qCaH;*J{56rr>m%bNB^x4svpaFM(=cnLqg^+N>pDj`GPGW zqAJIOEZuF;i_xLVMlXWd^ozoi>iWcDbPf1QU4u=C>E37Jntobe1ob~NC4YBr0{J1! z-Edbg`@@Uj`J#fv1~3qQC6DHVic651WYIUeX4N z#~|CJ@5pkkGdH2zKhWDtyR(~wSLjZLXwfZ zjK|Beu@>4-cXB58msHmJa{1TqhG}X4mS?6e?-suP$9r|XH=p_!^`X}1@>Q}g7mz)U zPpo)vL>rh&c{1P2EF=$NVdcUc>b35bC9ghe3rSit@f+zi_kOlwe}Cf3y+$^(j`yijk zzDe1e_tDg(_dtaji|Je>rXlL~m@}Z78#G|M@Ml1OJhTdCPF4OHP1J}cgaIYno9G6~ zy|R;6-?96pRA7q9D}OOjN6B1vlW5+)EW0q{Ess5v0ekRKgQ!PsMs+}HkaOUHFt9gQ zIi^MQu_4{?a+^x(;@nDHaE0+Yu@)}GMU)Up;v<)u$WlCIWGG4ghr zb)XK7yPYhp<~qHV8ba$Jg`6<{)KV*LG9n6D`{XS0gk5sNcz>%yEwJ?cM38Q`A!%U7 zXI(HwX*EKmn_*ad5SZ~_rzIEuEl=p-Ir+gqbbfPqvD4qg+Z(6_FPCSHa2)I&OO9ZMedZ9gzgr8c?qzgx0C zy%*zoX7hkHKAp_6IP@&hz2l zPYOW}59n|}0EY*5H~^5t1Ns9Hz~Le4A~UegkI~5CA%DM*WDW=V2cTk*!$W?raSn&@ zcb@`~!$UnI=WtjiW(@puxIMWYn*KxbvJ>{{`jt@#rpnJ^1f@(`XgehYkmToFU{lSBLt> z!|4KWcz@Vm!`JVEp5oElZ~^3SK$taJ;B!F^2f#D4M&ppf13Mf5=_V8GLi!e1Yqu`p zk3bFw0QN^9hXVlmBYdrEbz#ev4*}$`V1pbMT#&$5FaZt=KEPqY2RJM$05~l80Ea~dZ2I7Z92TE0PZxi{2gDz+LGcG{ zQ2YTG6o0_x__8?ufDMd4-~!_h*alGi0UH#5zy`%1@Y%*6d=jAe11`+}V#C1r112#3 zfPV{&Kj4Dm57?mi1HOSxj{%53sDR@5gDNPDKd6Fj{K5ahlg1w)*zpGlZu|j)9e;q} z#vdTK@dprY`~iX;e}Le}9{~9A2gm?F{s6I!KiHx{@dpTY`~iR;e*j>|9{||#2MA{T z0e~NW01a^C50C+V`~iR;e*mZ;{s6#_KOO*V;}0Ok@dy6`P+S9m1VRp&00000NkvXX Hu0mjfC7*;} delta 1667 zcmV-}27LMb548>0001>1Oos70D0kh9+4qN0i2O& zg@1JMB2gd2qonJDI2DgRWd&D17jR4f0LiO-SVn0xo&W#_5lKWrRA_0k^kJ8ep%RO&`D)1A7eGqQ0)PMbh4k0tI~BN6^{wA?F|mpA#SY z0{brIpD0Qk{wd007s!`DqKD$g5jh-=IDZKF;%lWG_r04zV9n!Gg=Bc5bkULGq7>Ke zbqMeOog~JdCL?$j(@pk z@k#UsAUq2H&2=hT4_my#12m{(K9q` zpR)hvsJD;Fyu+S>;{cGUi$H5nmyl(NMNnt)yeyCVHRGps(MuyC>?jo}Yp)pp_&a)q z))&_W9*t7mVQ>G9tl8x?J68rmQ%~b!6uCp}NJrZ}WVdK+AT(?ZQeH3>j(=A6^sS*` z47di0;+6ju_s&9e^tTX1?=N6N`xqvRLb7Dn;h8k3(J%1w9Hm`N)|D@|lrm2J(}(h@ zK?)L5mwtYx3eI1nxY(x`rCcf6LFRc-2}Ovfk#pRHFuK-6-8t}_KL&rER)%+YI)9`$ z98`z*@Y8x%2%V|zXCRiuvVW!(iq4cQuVlI4zwk=ExiOt23)WsrXmLsmScGf25ce`q zK4JW|B}IQSMtm>CvS5Ysstc{aDsxHr;H6^e)^tM3hi}$`XPw>p5TdunnuPR~<#Oz3 z$w$X>?CPLnx!xem6{EMU41Q2&tH$k`OxV%IOSXfRM_1z}A*12arpxmU{FJF%Y0)FQX1rCqzqm z013vr88x>DprW^-H2`5!9zX)k5Hn*~!=A}Mu?^J{-mSJ!OT4`Y)Z?Hk!qI?W1Y5#V z2BPAl;!hm|6n}l@@n@XAu-2RG(1>v*T+{%DJ+@fLb$|(bQcK`MBV3D$7FEYCuBm0J2JWUl8ep=pLNu!V4O{ z)Ts?pm#Vt^T*yFMtRFyXDvCWoeLIYdJAi%wsUhbCYJX$e2{r_PDvMD?;`#0>jn_A5 zwegQoYgpfAy}GX_lGR-XJ?(+}3^*4fBBEm>V51^U!?|Z@a3!>Z;Yer)!V)jN&7#Eft;l z=RkPmpTpphe}2X@o&cc`LIe3NQnmcgt#6!aG*cMt=8XQ z*~G@9+g7JoDF8)Qh3GN@6)=_r`2{mLJiCzwoV0M{K;K zUs9T!5lJOdi?)YHW= zB%|@|O>e#?1CiE;i&FC#pYLG)XsB=Z?AWs3_q+JKISq5y8>;<3-eUHUVe{nZr42Dx z^TNOUc~vnZuf%t|Wop;A0Ap!qb+lz{18an&RIR_zmB#BP4%3=b?1ja z;qi+vMrBW8KC8(ivuK;;k0%cD*Ub0!?kk8wRL}1 ylwR_Dy@NmPLn7;!LisZa_u0Q5vSnb1|HS0FRbY$mxdbVo1_n=8KbLh*2~7aw#H$hj delta 372 zcmV-)0gL|f1I+_aiBL{Q4GJ0x0000DNk~Le0001h0001B1Oos704G#udH?_b5>QN3 zMZmzoeNQltWJY8Dn0H$+H)L$E;2LJ#7%t=H+ zR9J=W*s&6VFboFZ0(R$kf>L4EYac+X?iJ`3qg1982rvJ<#%QxBLVj_6OF9p8x;=@LQ_sQLOg|d*AYU z%fv{6O%&BRC9`gJ=TM3MpgM><2`12%Ac+1Tru6ND7vrm-FkK``yyxUvz;!tQwPDg79d7`oz2+`B z$FriJ<9OhBItd|!5JG$sX5r_x_xtX4N$h+CV@m^r;7j5chj6x=`Lwexe=`9RJds|0 z{Q3M&lV4^CXI>+$~~J75abC zr{^Mpp+7Le-UA6Vwi-}^X25UdVTdgZpCisl-~<;8 zNRY-~fl@(s6@~Z8TL_|^WbB_9hTRXK5JCtcgb+dq0eJb>^wa)VttZ%R@^F+=QINHX z#cM=aBkRmQ1~WP<8B#w|f?7$i9{hX4B`9}vK~9fA&Fe}X-#(C`Z8@eN@K?-K-J9Ub&?`Aq|Y=o*8IR}+m3QbStbI{@SmLcfj{X;3u_YY+>-#?VmeE(2J^X)Ym|AAoR{X;40 iA1Z_pLI@#*$mAED_!@um3DMmE00006C^0t`#5TmP zx`=4i8L5dWL@O@IFDlL_T6Iope>w@y2B{{&*@<~6Bp41>j?;8y1y?^8a0~$e=)8XT zjKuTw0009PNkl86NpsVUoPjEdwCC?#W*p9`=+_RA zVIYJMLdda@%FkPmTb*atGsM)WsVrVoKVRa3HRH;sqp^hpD8)0wm)Bp{fA=Lro-=mR zpB;Xb^7^`ilY9Eeor>#YM!!0GRs9uxUkRuG2N_SHVgSUrI(l9GXMHbZ-2fqk5JCtc zgpl8kwYayS#I3~%T6{Cs7}$ML;we0#1TDT9JDtsRh60d-d-#H`KVM*ht;}Y=$b2z# zZv4A`BOm$r*~}9#FwH5Wf1Lq4$xUBY!KVSq8xSd&LQ>Jft0fKaM-c$@-yMjt*KGW1 z)8!5I4}-b>y`moThaml*4)XewgU0&b&pt~4??YO?V_(2-O91a8)4A^l_s*{S9&~Sj z5JCtcgb+dqA%u`Van_`t{KnegMZ|+W!ZCVfnbpVmU3CSxV8sSxe;|Ya48&wlGa%B? zfe+~h1fPvdaNdRd@q?QI=)n562DIO>m=s0lC(;!1NZ&2oatb8}9!>Fd3p}_1>H0-A zu46>OmOVZt5220B>CMk2c~FxVv<8hg+`IAGxTk8r}}{}uqD z;{Zka4sHQ7;5slcLIWLa<`|Ji7(58w8$cqv&`$^Im9S z0JzGwl=NOt7?avw@ZPP7X5qE9<{;^Bni>5kd$dgb+dqA%qY@ v$lky$kv)*@eRsnTaL~H}LI@#*kQ)902BQ&23=R3K00000NkvXXu0mjfpc=_n diff --git a/icons/mob/spider_spinneret.dmi b/icons/mob/spider_spinneret.dmi index 36dcb6714ce3239b8c7be53a18154cb03d23b194..688ff90e0d2b69cf5ebfde0432418f97fedd71be 100644 GIT binary patch delta 1035 zcmeBYKgdzv8Q|y6%O%Cdz`(%k>ERLtqz`~F2Q!dNWtw9Oq$~q`LR^9Lgvxve35Lc{ zpJ@e|+5!yACN_pCGV$~Aad2>$iZIM;EKRpl?oV-3)vyhZsY(?T-X$U-C$H;X^U?^Y znXx3uFPOpM*^M+HXJb`JM2Smkaq`4^w|ag3tr}ZZ_9>_v8tdOXdG+w+^RAuU#;TiF zNTl$Ir$+@QJ(EfrkB)utW%9O zKC-b-FD}JmYDlaH-_gaPkq57yXPuM5uRz{q%Hk45^s&cFx5~ixmW1 zMUT`o1SbFZ-ybVAY3;3xAzL5hc)yxA>j|g&_ZtU)TqwKF2y`wOEWf~Azi*XgM0sR_ zh5G44pXsbV4?oU2w0wF`9wtTBn35Vmt1hV$Bd%XFTXz zquhAu&)j93^|!Sr7g+rkWj&#KB0N~qM@ZwmfBlK2=dUbfhgrjrA*L<6fbDuJqq^)8 z0r!WOR|ht)7uayk$${^?P=;x}p5tMl?u;D_o!c&h;s^}xcVF8S+juPGn+e}xh0KIK zpG?^fOR%~f+!wU;#rhvV5@p^Wt`#vhxTmq+r;_&wYf_CXSL^ZPe;#|}@9n8~)N^p< zoaCV6pszZCD%%G#UEjR<}cCNo*a{hD3zHau5e^LyDpN1>mO+Ui2OvND7 zMnQ4b|I~nq_IJ5D@9{_mR~xgyT*L7&=5}mj-bUW?sX_nRb8jj<>le+qalrQ4^UpiY zv>zNwj!dqTmNG5y-eC4@yLbI&Cd2wQ4i#Ip1afXMd#`4iySX#%^M2N-yG(aaFSwc= zaA@bX{5F``4Z2aq$8Gr!@hiSDzVp8P*`*ypSzErQ7e(u5XGT?;Hit(WJzu@>xVBUZ zW0?P%clsJ1-f`P26zDeV3nr9>#(%V4!p*YoYjnYq^|8Cy>*Q+{F4s@o`oCYf_U9#j z6DF7~_gVjEe!XA0Zti{G?fWljyr231!1VL!KY2{mjHln)aCzrU_wO6}*2{d_+`o8T z!Mw($e9z{yxh=h@Jtsn~H{J5)fwhglQylZ`V(WFzew@j)EbYYk_K+#|2CRp+)lOqO zE|Ios%etB)XX;j5l@r-e|9{$nGbKTl%sYDgv!4gEUgC?G!F0Mzd`4y1nLjrj&OYY~ zSa#sesxrl#s1up5PAN8?lGMHJ^M+}U_lII(pUK~I7~d}s{=D4V`$2Bw7S2Q8nq1l5 z#6P)rjdaw5CAn406-W3Rv`k9WJYH`BM1lxB`7@)4h|k4EmvH6 zx)c~?5fd=J+G+p*00DGTPE!Ct=GbNc005PGR9JLGWpiVZe@1^LwFpGz<)s#-mc$q2 zBxdHty9N3Cg(z`xreqcsgG}S%Oe;#vO$D(H@oG;it*WXdUwcwcVsbXn+4<%8%}`cw z^>YDx831*kPewhGRapQ40%J);K~!jg?Ucci;~)$~#{>fb42l2$V;2E?*s&U8r{=Iz z>dGld>W7f^^(B82i9{liNc4YcSr&YxCW|OsV*j9)B3!6(9RSs-9**r_v!4Vou*evoHGpkFDOp=E z2S5$rxUJ&V>*-c;mgB^lt>tGXOMvPXa(A zU`_De2kr?15nKSEGRz6x9yWk7J&FAaLa=rkz}mq1w-(^9u-?=2?3G}86C(f4FvtwZ z|Jr`Nzl)9eV2_JLB9TZW5{Z6?VvIMAZbu$dx0HWCa@=y7tdjDE35G@D_DX;tzV~u8 z=bzI4=8JRygjf7a2Uvo*XK->1rNF#%MN$WVU4HHFceyE-Oa6HhpvK++i21ec)ahe# z+|xyX#I%3_>N_HUGG>XKjw942V4DQkz!aPVP~M*M>j*$KGuKwGPR{Ht>hM(nGy*x* z8Q4!4fIQuRzb!yRfE&=~H>IP0J<4+kmY_9gl6Q3!eZ0002ovPDHLkV1l*Ja0UPX From 905633148beed5bfd2844c88704178de00afecd2 Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Wed, 30 Sep 2020 19:06:09 -0500 Subject: [PATCH 04/10] names --- strings/names/spider_first.txt | 30 ++++++++++++++++++++++++++++++ strings/names/spider_last.txt | 30 ++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 strings/names/spider_first.txt create mode 100644 strings/names/spider_last.txt diff --git a/strings/names/spider_first.txt b/strings/names/spider_first.txt new file mode 100644 index 0000000000..06fbae057c --- /dev/null +++ b/strings/names/spider_first.txt @@ -0,0 +1,30 @@ +Zerzir +Lalnuth +Avisreb +Qeqarnai +Rhikkiezhith +Necaqtex +Aqi +Shozhish +Sraiza +Ranqu +Zellalshi +Necoq +Zaqod +Salaree +Xavis +Cheqirni +Nieqi +Cakirkix +Ivad +Shenqazhe +Azurte +Lizire +Ivur +Kavur +Raicheca +Iqashe +Eq'za +Sak'sad +Hiezih +Cessix \ No newline at end of file diff --git a/strings/names/spider_last.txt b/strings/names/spider_last.txt new file mode 100644 index 0000000000..2b663f6df3 --- /dev/null +++ b/strings/names/spider_last.txt @@ -0,0 +1,30 @@ +Ik'sir +Sechathi +Qok'sut +Yeqied +Iravhoh +Kriaqux +Yikih +Khaqa +Azasnet +Qhecid +Qhin'qu +Zhechikzor +Qhovi +Hirath +Szornud +Zasokaq +Lhaqish +Qhiretid +Avizad +Qallazi +Qhizrud +Qicirne +Sezuveth +Zelriker +Rhiallor +Zhaliesh +Qoutirk'ab +Chavi +Riel'shes +Khentax \ No newline at end of file From 9dd706432129c43b866395c3e57637656ebdd340 Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Wed, 30 Sep 2020 19:20:44 -0500 Subject: [PATCH 05/10] language sprites --- code/modules/language/spider.dm | 2 ++ icons/misc/language.dmi | Bin 5468 -> 5637 bytes 2 files changed, 2 insertions(+) diff --git a/code/modules/language/spider.dm b/code/modules/language/spider.dm index 43ab5e0de3..2f52fc3d4b 100644 --- a/code/modules/language/spider.dm +++ b/code/modules/language/spider.dm @@ -8,6 +8,8 @@ key = "r" flags = NO_STUTTER | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD + icon_state = "spider" + /datum/language/spider/scramble(input) . = prob(65) ? "wiff" : "thump" . += (copytext(input, length(input)) == "?") ? "?" : "!" diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 9501dc9216367b0d848a22990f4cab94859c7123..a33f914885c9ec3d681f70b200e742be9f3abe53 100644 GIT binary patch literal 5637 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 literal 5468 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 Date: Wed, 30 Sep 2020 19:39:54 -0500 Subject: [PATCH 06/10] Fragility. --- code/modules/mob/living/carbon/human/species_types/spider.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/species_types/spider.dm b/code/modules/mob/living/carbon/human/species_types/spider.dm index a4e78a2830..60a7346fd4 100644 --- a/code/modules/mob/living/carbon/human/species_types/spider.dm +++ b/code/modules/mob/living/carbon/human/species_types/spider.dm @@ -17,6 +17,7 @@ mutanteyes = /obj/item/organ/eyes/night_vision/spider mutanttongue = /obj/item/organ/tongue/spider species_language_holder = /datum/language_holder/spider + brutemod = 1.1 var/web_cooldown = 200 var/web_ready = TRUE var/spinner_rate = 25 From 5d4429a61ac783c0de9286c2b45bc0e4ab001a4a Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Thu, 1 Oct 2020 12:57:07 -0500 Subject: [PATCH 07/10] You can now have none --- .../dead/new_player/sprite_accessories/spider.dm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/spider.dm b/code/modules/mob/dead/new_player/sprite_accessories/spider.dm index fff9c51ece..8623bcb495 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/spider.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/spider.dm @@ -4,6 +4,11 @@ mutant_part_string = "spider_legs" color_src = 0 +/datum/sprite_accessory/spider_legs/none + name = "None" + icon_state = null + relevant_layers = null + /datum/sprite_accessory/spider_legs/plain name = "Plain" icon_state = "plain" @@ -22,6 +27,11 @@ mutant_part_string = "spinneret" color_src = 0 +/datum/sprite_accessory/spider_spinneret/none + name = "None" + icon_state = null + relevant_layers = null + /datum/sprite_accessory/spider_spinneret/plain name = "Plain" icon_state = "plain" @@ -40,6 +50,11 @@ mutant_part_string = "mandibles" color_src = 0 +/datum/sprite_accessory/spider_mandibles/none + name = "None" + icon_state = null + relevant_layers = null + /datum/sprite_accessory/spider_mandibles/plain name = "Plain" icon_state = "plain" From a2fbd76a49b5a0810b15e84a61be606732587ee3 Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Thu, 1 Oct 2020 17:37:53 -0500 Subject: [PATCH 08/10] fix travis? --- code/modules/surgery/organs/eyes.dm | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 772bf588af..d5ea708270 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -421,13 +421,6 @@ name = "ipc eyes" icon_state = "cybernetic_eyeballs" -<<<<<<< HEAD -/obj/item/organ/eyes/night_vision/spider - name = "spider eyes" - desc = "These eyes seem to have increased sensitivity to bright light, offset by basic night vision." - see_in_dark = 4 - flash_protect = -1 -======= /obj/item/organ/eyes/ipc/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) @@ -436,7 +429,12 @@ owner.flash_act(visual = 1) if(severity >= 70) owner.adjustOrganLoss(ORGAN_SLOT_EYES, 20) ->>>>>>> master + +/obj/item/organ/eyes/night_vision/spider + name = "spider eyes" + desc = "These eyes seem to have increased sensitivity to bright light, offset by basic night vision." + see_in_dark = 4 + flash_protect = -1 #undef BLURRY_VISION_ONE #undef BLURRY_VISION_TWO From d2860b38c7a9bb494c328f4493d3d2324e11e76e Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Thu, 1 Oct 2020 18:46:31 -0500 Subject: [PATCH 09/10] normalization --- code/__DEFINES/is_helpers.dm | 2 +- code/__HELPERS/global_lists.dm | 6 +- code/__HELPERS/mobs.dm | 22 +++--- code/__HELPERS/names.dm | 4 +- code/_globalvars/lists/flavor_misc.dm | 14 ++-- code/_globalvars/lists/names.dm | 4 +- code/controllers/subsystem/traumas.dm | 2 +- code/datums/mutations/actions.dm | 5 +- .../{spiderperson_web.dm => arachnid_web.dm} | 24 +++---- code/modules/admin/create_mob.dm | 6 +- code/modules/client/preferences.dm | 68 +++++++++--------- code/modules/client/preferences_savefile.dm | 18 ++--- .../language/{spider.dm => arachnid.dm} | 8 +-- code/modules/language/language_holder.dm | 6 +- .../new_player/sprite_accessories/arachnid.dm | 68 ++++++++++++++++++ .../new_player/sprite_accessories/spider.dm | 68 ------------------ code/modules/mob/living/carbon/human/human.dm | 4 +- .../species_types/{spider.dm => arachnid.dm} | 50 ++++++------- .../simple_animal/hostile/giant_spider.dm | 3 +- .../chemistry/reagents/alcohol_reagents.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 2 +- .../reagents/chemistry/recipes/others.dm | 2 +- code/modules/surgery/organs/eyes.dm | 4 +- code/modules/surgery/organs/tongue.dm | 6 +- config/game_options.txt | 2 +- .../{spider_legs.dmi => arachnid_legs.dmi} | Bin 2045 -> 2049 bytes ...r_mandibles.dmi => arachnid_mandibles.dmi} | Bin icons/mob/arachnid_parts.dmi | Bin 0 -> 1240 bytes ...r_spinneret.dmi => arachnid_spinneret.dmi} | Bin icons/mob/spider_parts.dmi | Bin 1239 -> 0 bytes tgstation.dme | 8 +-- 31 files changed, 205 insertions(+), 203 deletions(-) rename code/game/objects/effects/{spiderperson_web.dm => arachnid_web.dm} (69%) rename code/modules/language/{spider.dm => arachnid.dm} (66%) create mode 100644 code/modules/mob/dead/new_player/sprite_accessories/arachnid.dm delete mode 100644 code/modules/mob/dead/new_player/sprite_accessories/spider.dm rename code/modules/mob/living/carbon/human/species_types/{spider.dm => arachnid.dm} (77%) rename icons/mob/{spider_legs.dmi => arachnid_legs.dmi} (84%) rename icons/mob/{spider_mandibles.dmi => arachnid_mandibles.dmi} (100%) create mode 100644 icons/mob/arachnid_parts.dmi rename icons/mob/{spider_spinneret.dmi => arachnid_spinneret.dmi} (100%) delete mode 100644 icons/mob/spider_parts.dmi diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 9d420683a0..508bb64a62 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -86,7 +86,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define isinsect(A) (is_species(A, /datum/species/insect)) #define isxenoperson(A) (is_species(A, /datum/species/xeno)) #define isstartjelly(A) (is_species(A, /datum/species/jelly/roundstartslime)) -#define isspiderperson(A) (is_species(A, /datum/species/spider)) +#define isarachnid(A) (is_species(A, /datum/species/arachnid)) //more carbon mobs #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 34cfcf2498..b8c009ff4f 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -32,9 +32,9 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/caps, GLOB.caps_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_wings, GLOB.insect_wings_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_fluff, GLOB.insect_fluffs_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_legs, GLOB.spider_legs_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_spinneret, GLOB.spider_spinneret_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_mandibles, GLOB.spider_mandibles_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_legs, GLOB.arachnid_legs_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_spinneret, GLOB.arachnid_spinneret_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_mandibles, GLOB.arachnid_mandibles_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/deco_wings, GLOB.deco_wings_list) //CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 9437d29a3a..513437e57e 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -76,12 +76,12 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_fluff, GLOB.insect_fluffs_list) if(!GLOB.insect_markings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_markings, GLOB.insect_markings_list) - if(!GLOB.spider_legs_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_legs, GLOB.spider_legs_list) - if(!GLOB.spider_spinneret_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_spinneret, GLOB.spider_spinneret_list) - if(!GLOB.spider_mandibles_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_mandibles, GLOB.spider_mandibles_list) + if(!GLOB.arachnid_legs_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_legs, GLOB.arachnid_legs_list) + if(!GLOB.arachnid_spinneret_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_spinneret, GLOB.arachnid_spinneret_list) + if(!GLOB.arachnid_mandibles_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/arachnid_mandibles, GLOB.arachnid_mandibles_list) //CIT CHANGES - genitals and such if(!GLOB.cock_shapes_list.len) @@ -183,9 +183,9 @@ "insect_wings" = pick(GLOB.insect_wings_list), "insect_fluff" = "None", "insect_markings" = pick(GLOB.insect_markings_list), - "spider_legs" = pick(GLOB.spider_legs_list), - "spider_spinneret" = pick(GLOB.spider_spinneret_list), - "spider_mandibles" = pick(GLOB.spider_mandibles_list), + "arachnid_legs" = pick(GLOB.arachnid_legs_list), + "arachnid_spinneret" = pick(GLOB.arachnid_spinneret_list), + "arachnid_mandibles" = pick(GLOB.arachnid_mandibles_list), "taur" = "None", "mam_body_markings" = snowflake_markings_list.len ? pick(snowflake_markings_list) : "None", "mam_ears" = snowflake_ears_list ? pick(snowflake_ears_list) : "None", @@ -287,9 +287,9 @@ if(!findname(.)) break -/proc/random_unique_spider_name(attempts_to_find_unique_name=10) +/proc/random_unique_arachnid_name(attempts_to_find_unique_name=10) for(var/i in 1 to attempts_to_find_unique_name) - . = capitalize(pick(GLOB.spider_first)) + " " + capitalize(pick(GLOB.spider_last)) + . = capitalize(pick(GLOB.arachnid_first)) + " " + capitalize(pick(GLOB.arachnid_last)) if(!findname(.)) break diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index 4c1ab5e676..a61e3a6492 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -16,8 +16,8 @@ /proc/moth_name() return "[pick(GLOB.moth_first)] [pick(GLOB.moth_last)]" -/proc/spider_name() - return "[pick(GLOB.spider_first)] [pick(GLOB.spider_last)]" +/proc/arachnid_name() + return "[pick(GLOB.arachnid_first)] [pick(GLOB.arachnid_last)]" /proc/church_name() var/static/church_name diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index c5c63202d0..717a0b1dbf 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -38,9 +38,9 @@ GLOBAL_LIST_EMPTY(r_wings_list) GLOBAL_LIST_EMPTY(insect_wings_list) GLOBAL_LIST_EMPTY(insect_fluffs_list) GLOBAL_LIST_EMPTY(insect_markings_list) -GLOBAL_LIST_EMPTY(spider_legs_list) -GLOBAL_LIST_EMPTY(spider_spinneret_list) -GLOBAL_LIST_EMPTY(spider_mandibles_list) +GLOBAL_LIST_EMPTY(arachnid_legs_list) +GLOBAL_LIST_EMPTY(arachnid_spinneret_list) +GLOBAL_LIST_EMPTY(arachnid_mandibles_list) GLOBAL_LIST_EMPTY(caps_list) //a way to index the right bodypart list given the type of bodypart @@ -63,9 +63,9 @@ GLOBAL_LIST_INIT(mutant_reference_list, list( "insect_wings" = GLOB.insect_wings_list, "insect_fluff" = GLOB.insect_fluffs_list, "insect_markings" = GLOB.insect_markings_list, - "spider_legs" = GLOB.spider_legs_list, - "spider_spinneret" = GLOB.spider_spinneret_list, - "spider_mandibles" = GLOB.spider_mandibles_list, + "arachnid_legs" = GLOB.arachnid_legs_list, + "arachnid_spinneret" = GLOB.arachnid_spinneret_list, + "arachnid_mandibles" = GLOB.arachnid_mandibles_list, "caps" = GLOB.caps_list, "ipc_screen" = GLOB.ipc_screens_list, "ipc_antenna" = GLOB.ipc_antennas_list, @@ -280,7 +280,7 @@ GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/o //locked parts are those that your picked species requires to have //unlocked parts are those that anyone can choose on customisation regardless //parts not in unlocked, but in all, are thus locked -GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "spider_legs" = "Spider Legs", "spider_spinneret" = "Spinneret", "spider_mandibles" = "Mandibles", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns")) +GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "arachnid_legs" = "Arachnid Legs", "arachnid_spinneret" = "Spinneret", "arachnid_mandibles" = "Mandibles", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns")) GLOBAL_LIST_INIT(unlocked_mutant_parts, list("horns", "insect_fluff")) //parts in either of the above two lists that require a second option that allows them to be coloured GLOBAL_LIST_INIT(colored_mutant_parts, list("insect_wings" = "wings_color", "deco_wings" = "wings_color", "horns" = "horns_color")) diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index 297902ac87..1148e92dd5 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -16,8 +16,8 @@ GLOBAL_LIST_INIT(carp_names, world.file2list("strings/names/carp.txt")) GLOBAL_LIST_INIT(golem_names, world.file2list("strings/names/golem.txt")) GLOBAL_LIST_INIT(moth_first, world.file2list("strings/names/moth_first.txt")) GLOBAL_LIST_INIT(moth_last, world.file2list("strings/names/moth_last.txt")) -GLOBAL_LIST_INIT(spider_first, world.file2list("strings/names/spider_first.txt")) -GLOBAL_LIST_INIT(spider_last, world.file2list("strings/names/spider_last.txt")) +GLOBAL_LIST_INIT(arachnid_first, world.file2list("strings/names/arachnid_first.txt")) +GLOBAL_LIST_INIT(arachnid_last, world.file2list("strings/names/arachnid_last.txt")) GLOBAL_LIST_INIT(plasmaman_names, world.file2list("strings/names/plasmaman.txt")) GLOBAL_LIST_INIT(ethereal_names, world.file2list("strings/names/ethereal.txt")) GLOBAL_LIST_INIT(posibrain_names, world.file2list("strings/names/posibrain.txt")) diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 174c298470..1dea40a802 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -199,7 +199,7 @@ SUBSYSTEM_DEF(traumas) "anime" = typecacheof(list(/datum/species/human/felinid)), "cats" = typecacheof(list(/datum/species/human/felinid)), "syndicate" = typecacheof(list(/datum/species/corporate, /datum/species/zombie/infectious)), - "spiders" = typecacheof(list(/datum/species/spider)) + "arachnid" = typecacheof(list(/datum/species/arachnid)) ) return ..() diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm index bd9ecaeeaa..c859d38587 100644 --- a/code/datums/mutations/actions.dm +++ b/code/datums/mutations/actions.dm @@ -342,8 +342,9 @@ to_chat(user, "You can't lay webs here!") failed = TRUE var/turf/T = get_turf(user) - var/obj/structure/spider/stickyweb/genetic/W = locate() in T - if(W) + var/obj/structure/spider/stickyweb/W = locate() in T + var/obj/structure/arachnid/W2 = locate() in T + if(W || W2) to_chat(user, "There's already a web here!") failed = TRUE if(failed) diff --git a/code/game/objects/effects/spiderperson_web.dm b/code/game/objects/effects/arachnid_web.dm similarity index 69% rename from code/game/objects/effects/spiderperson_web.dm rename to code/game/objects/effects/arachnid_web.dm index d448592eb0..2adaa12dc9 100644 --- a/code/game/objects/effects/spiderperson_web.dm +++ b/code/game/objects/effects/arachnid_web.dm @@ -1,4 +1,4 @@ -/obj/structure/spider_player +/obj/structure/arachnid name = "large web" icon = 'icons/effects/effects.dmi' desc = "It's stringy and sticky, but the threads are larger than what spiderlings could produce." @@ -6,16 +6,16 @@ density = FALSE max_integrity = 20 -/obj/structure/spider_player/New() +/obj/structure/arachnid/New() ..() icon_state = pick(list("stickyweb1", "stickyweb2")) -/obj/structure/spider_player/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) +/obj/structure/arachnid/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) if(damage_type == BURN)//the stickiness of the web mutes all attack sounds except fire damage type playsound(loc, 'sound/items/welder.ogg', 100, TRUE) -/obj/structure/spider_player/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/structure/arachnid/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == "melee") switch(damage_type) if(BURN) @@ -24,24 +24,24 @@ damage_amount *= 0.5 . = ..() -/obj/structure/spider_player/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/arachnid/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) take_damage(5, BURN, 0, 0) -/obj/structure/spider_player/CanPass(atom/movable/mover, turf/target) +/obj/structure/arachnid/CanPass(atom/movable/mover, turf/target) . = ..() - if(isspiderperson(mover)) + if(isarachnid(mover)) return TRUE else if(isliving(mover)) - if(isspiderperson(mover.pulledby)) + if(isarachnid(mover.pulledby)) return TRUE if(prob(20)) to_chat(mover, "You get stuck in \the [src] for a moment.") return FALSE -/obj/structure/spider_player/cocoon +/obj/structure/arachnid/cocoon name = "cocoon" desc = "Something wrapped in silky spider web." icon_state = "cocoon1" @@ -49,11 +49,11 @@ density = FALSE max_integrity = 60 -/obj/structure/spider_player/cocoon/Initialize() +/obj/structure/arachnid/cocoon/Initialize() icon_state = pick("cocoon1","cocoon2","cocoon3") . = ..() -/obj/structure/spider_player/cocoon/container_resist(mob/living/user) +/obj/structure/arachnid/cocoon/container_resist(mob/living/user) var/breakout_time = 150 // DECI not DECA ffs to_chat(user, "You struggle against the tight bonds... (This will take about [DisplayTimeText(breakout_time)].)") visible_message("You see something struggling and writhing in \the [src]!") @@ -62,7 +62,7 @@ return qdel(src) -/obj/structure/spider_player/cocoon/Destroy() +/obj/structure/arachnid/cocoon/Destroy() var/turf/T = get_turf(src) src.visible_message("\The [src] splits open.") for(var/atom/movable/A in contents) diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 81740fd71a..6aab698a4a 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -43,9 +43,9 @@ H.dna.features["insect_wings"] = pick(GLOB.insect_wings_list) H.dna.features["deco_wings"] = pick(GLOB.deco_wings_list) H.dna.features["insect_fluff"] = pick(GLOB.insect_fluffs_list) - H.dna.features["spider_legs"] = pick(GLOB.spider_legs_list) - H.dna.features["spider_spinneret"] = pick(GLOB.spider_spinneret_list) - H.dna.features["spider_mandibles"] = pick(GLOB.spider_mandibles_list) + H.dna.features["arachnid_legs"] = pick(GLOB.arachnid_legs_list) + H.dna.features["arachnid_spinneret"] = pick(GLOB.arachnid_spinneret_list) + H.dna.features["arachnid_mandibles"] = pick(GLOB.arachnid_mandibles_list) H.dna.features["flavor_text"] = "" //Oh no. H.dna.features["body_model"] = H.gender diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d18eb9f482..c613401700 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -119,9 +119,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", - "spider_legs" = "Plain", - "spider_spinneret" = "Plain", - "spider_mandibles" = "Plain", + "arachnid_legs" = "Plain", + "arachnid_spinneret" = "Plain", + "arachnid_mandibles" = "Plain", "mam_body_markings" = "Plain", "mam_ears" = "None", "mam_snouts" = "None", @@ -1685,23 +1685,23 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_ipc_antenna) features["ipc_antenna"] = new_ipc_antenna - if("spider_legs") - var/new_spider_legs - new_spider_legs = input(user, "Choose your character's variant of spider legs:", "Character Preference") as null|anything in GLOB.spider_legs_list - if(new_spider_legs) - features["spider_legs"] = new_spider_legs + if("arachnid_legs") + var/new_arachnid_legs + new_arachnid_legs = input(user, "Choose your character's variant of arachnid legs:", "Character Preference") as null|anything in GLOB.arachnid_legs_list + if(new_arachnid_legs) + features["arachnid_legs"] = new_arachnid_legs - if("spider_spinneret") - var/new_spider_spinneret - new_spider_spinneret = input(user, "Choose your character's spinneret markings:", "Character Preference") as null|anything in GLOB.spider_spinneret_list - if(new_spider_spinneret) - features["spider_spinneret"] = new_spider_spinneret + if("arachnid_spinneret") + var/new_arachnid_spinneret + new_arachnid_spinneret = input(user, "Choose your character's spinneret markings:", "Character Preference") as null|anything in GLOB.arachnid_spinneret_list + if(new_arachnid_spinneret) + features["arachnid_spinneret"] = new_arachnid_spinneret - if("spider_mandibles") - var/new_spider_mandibles - new_spider_mandibles = input(user, "Choose your character's variant of mandibles:", "Character Preference") as null|anything in GLOB.spider_mandibles_list - if (new_spider_mandibles) - features["spider_mandibles"] = new_spider_mandibles + if("arachnid_mandibles") + var/new_arachnid_mandibles + new_arachnid_mandibles = input(user, "Choose your character's variant of mandibles:", "Character Preference") as null|anything in GLOB.arachnid_mandibles_list + if (new_arachnid_mandibles) + features["arachnid_mandibles"] = new_arachnid_mandibles if("tail_lizard") var/new_tail @@ -1868,23 +1868,23 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_insect_markings) features["insect_markings"] = new_insect_markings - if("spider_legs") - var/new_spider_legs - new_spider_legs = input(user, "Choose your character's variant of spider legs:", "Character Preference") as null|anything in GLOB.spider_legs_list - if(new_spider_legs) - features["spider_legs"] = new_spider_legs + if("arachnid_legs") + var/new_arachnid_legs + new_arachnid_legs = input(user, "Choose your character's variant of arachnid legs:", "Character Preference") as null|anything in GLOB.arachnid_legs_list + if(new_arachnid_legs) + features["arachnid_legs"] = new_arachnid_legs - if("spider_spinneret") - var/new_spider_spinneret - new_spider_spinneret = input(user, "Choose your character's spinneret markings:", "Character Preference") as null|anything in GLOB.spider_spinneret_list - if(new_spider_spinneret) - features["spider_spinneret"] = new_spider_spinneret + if("arachnid_spinneret") + var/new_arachnid_spinneret + new_arachnid_spinneret = input(user, "Choose your character's spinneret markings:", "Character Preference") as null|anything in GLOB.arachnid_spinneret_list + if(new_arachnid_spinneret) + features["arachnid_spinneret"] = new_arachnid_spinneret - if("spider_mandibles") - var/new_spider_mandibles - new_spider_mandibles = input(user, "Choose your character's variant of mandibles:", "Character Preference") as null|anything in GLOB.spider_mandibles_list - if (new_spider_mandibles) - features["spider_mandibles"] = new_spider_mandibles + if("arachnid_mandibles") + var/new_arachnid_mandibles + new_arachnid_mandibles = input(user, "Choose your character's variant of mandibles:", "Character Preference") as null|anything in GLOB.arachnid_mandibles_list + if (new_arachnid_mandibles) + features["arachnid_mandibles"] = new_arachnid_mandibles if("s_tone") var/list/choices = GLOB.skin_tones - GLOB.nonstandard_skin_tones @@ -1925,7 +1925,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["xenotail"] = "None" features["tail_human"] = "None" features["tail_lizard"] = "None" - features["spider_spinneret"] = "None" + features["arachnid_spinneret"] = "None" if("ears") var/list/snowflake_ears_list = list() diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 41e9d9e39b..9aa377bce6 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -540,9 +540,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_insect_wings"] >> features["insect_wings"] S["feature_insect_fluff"] >> features["insect_fluff"] S["feature_insect_markings"] >> features["insect_markings"] - S["feature_spider_legs"] >> features["spider_legs"] - S["feature_spider_spinneret"] >> features["spider_spinneret"] - S["feature_spider_mandibles"] >> features["spider_mandibles"] + S["feature_arachnid_legs"] >> features["arachnid_legs"] + S["feature_arachnid_spinneret"] >> features["arachnid_spinneret"] + S["feature_arachnid_mandibles"] >> features["arachnid_mandibles"] S["feature_horns_color"] >> features["horns_color"] S["feature_wings_color"] >> features["wings_color"] S["persistent_scars"] >> persistent_scars @@ -726,9 +726,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["insect_fluff"] = sanitize_inlist(features["insect_fluff"], GLOB.insect_fluffs_list) features["insect_markings"] = sanitize_inlist(features["insect_markings"], GLOB.insect_markings_list, "None") features["insect_wings"] = sanitize_inlist(features["insect_wings"], GLOB.insect_wings_list) - features["spider_legs"] = sanitize_inlist(features["spider_legs"], GLOB.spider_legs_list, "Plain") - features["spider_spinneret"] = sanitize_inlist(features["spider_spinneret"], GLOB.spider_spinneret_list, "Plain") - features["spider_mandibles"] = sanitize_inlist(features["spider_mandibles"], GLOB.spider_mandibles_list, "Plain") + features["arachnid_legs"] = sanitize_inlist(features["arachnid_legs"], GLOB.arachnid_legs_list, "Plain") + features["arachnid_spinneret"] = sanitize_inlist(features["arachnid_spinneret"], GLOB.arachnid_spinneret_list, "Plain") + features["arachnid_mandibles"] = sanitize_inlist(features["arachnid_mandibles"], GLOB.arachnid_mandibles_list, "Plain") var/static/size_min if(!size_min) @@ -867,9 +867,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_insect_wings"] , features["insect_wings"]) WRITE_FILE(S["feature_insect_fluff"] , features["insect_fluff"]) WRITE_FILE(S["feature_insect_markings"] , features["insect_markings"]) - WRITE_FILE(S["feature_spider_legs"] , features["spider_legs"]) - WRITE_FILE(S["feature_spider_spinneret"] , features["spider_spinneret"]) - WRITE_FILE(S["feature_spider_mandibles"] , features["spider_mandibles"]) + WRITE_FILE(S["feature_arachnid_legs"] , features["arachnid_legs"]) + WRITE_FILE(S["feature_arachnid_spinneret"] , features["arachnid_spinneret"]) + WRITE_FILE(S["feature_arachnid_mandibles"] , features["arachnid_mandibles"]) WRITE_FILE(S["feature_meat"] , features["meat_type"]) WRITE_FILE(S["feature_has_cock"], features["has_cock"]) diff --git a/code/modules/language/spider.dm b/code/modules/language/arachnid.dm similarity index 66% rename from code/modules/language/spider.dm rename to code/modules/language/arachnid.dm index 2f52fc3d4b..92ea47781e 100644 --- a/code/modules/language/spider.dm +++ b/code/modules/language/arachnid.dm @@ -1,6 +1,6 @@ -/datum/language/spider +/datum/language/arachnid name = "Rachnidian" - desc = "A language that exploits the multiple limbs of spiders to do subtle dance like movements to communicate.\ + desc = "A language that exploits the multiple limbs of arachnids to do subtle dance like movements to communicate.\ A proper speaker's movements are quick and sharp enough to make audible whiffs and thumps however, which are intelligible over the radio." speech_verb = "chitter" ask_verb = "chitter" @@ -8,8 +8,8 @@ key = "r" flags = NO_STUTTER | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD - icon_state = "spider" + icon_state = "arachnid" -/datum/language/spider/scramble(input) +/datum/language/arachnid/scramble(input) . = prob(65) ? "wiff" : "thump" . += (copytext(input, length(input)) == "?") ? "?" : "!" diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 77d03caa13..219d8dc184 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -330,11 +330,11 @@ Key procs spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/voltaic = list(LANGUAGE_ATOM)) -/datum/language_holder/spider +/datum/language_holder/arachnid understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), - /datum/language/spider = list(LANGUAGE_ATOM)) + /datum/language/arachnid = list(LANGUAGE_ATOM)) spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), - /datum/language/spider = list(LANGUAGE_ATOM)) + /datum/language/arachnid = list(LANGUAGE_ATOM)) /datum/language_holder/empty understood_languages = list() diff --git a/code/modules/mob/dead/new_player/sprite_accessories/arachnid.dm b/code/modules/mob/dead/new_player/sprite_accessories/arachnid.dm new file mode 100644 index 0000000000..f75c6208f8 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/arachnid.dm @@ -0,0 +1,68 @@ +/datum/sprite_accessory/arachnid_legs + icon = 'icons/mob/arachnid_legs.dmi' + relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) + mutant_part_string = "arachnid_legs" + color_src = 0 + +/datum/sprite_accessory/arachnid_legs/none + name = "None" + icon_state = null + relevant_layers = null + +/datum/sprite_accessory/arachnid_legs/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/arachnid_legs/fuzzy + name = "Fuzzy" + icon_state = "fuzzy" + +/datum/sprite_accessory/arachnid_legs/spiky + name = "Spiky" + icon_state = "spiky" + +/datum/sprite_accessory/arachnid_spinneret + icon = 'icons/mob/arachnid_spinneret.dmi' + relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) + mutant_part_string = "spinneret" + color_src = 0 + +/datum/sprite_accessory/arachnid_spinneret/none + name = "None" + icon_state = null + relevant_layers = null + +/datum/sprite_accessory/arachnid_spinneret/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/arachnid_spinneret/fuzzy + name = "Fuzzy" + icon_state = "fuzzy" + +/datum/sprite_accessory/arachnid_spinneret/black_widow + name = "Black Widow" + icon_state = "blackwidow" + +/datum/sprite_accessory/arachnid_mandibles + icon = 'icons/mob/arachnid_mandibles.dmi' + relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) + mutant_part_string = "mandibles" + color_src = 0 + +/datum/sprite_accessory/arachnid_mandibles/none + name = "None" + icon_state = null + relevant_layers = null + +/datum/sprite_accessory/arachnid_mandibles/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/arachnid_mandibles/fuzzy + name = "Fuzzy" + icon_state = "fuzzy" + +/datum/sprite_accessory/arachnid_mandibles/spiky + name = "Spiky" + icon_state = "spiky" \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/spider.dm b/code/modules/mob/dead/new_player/sprite_accessories/spider.dm deleted file mode 100644 index 8623bcb495..0000000000 --- a/code/modules/mob/dead/new_player/sprite_accessories/spider.dm +++ /dev/null @@ -1,68 +0,0 @@ -/datum/sprite_accessory/spider_legs - icon = 'icons/mob/spider_legs.dmi' - relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) - mutant_part_string = "spider_legs" - color_src = 0 - -/datum/sprite_accessory/spider_legs/none - name = "None" - icon_state = null - relevant_layers = null - -/datum/sprite_accessory/spider_legs/plain - name = "Plain" - icon_state = "plain" - -/datum/sprite_accessory/spider_legs/fuzzy - name = "Fuzzy" - icon_state = "fuzzy" - -/datum/sprite_accessory/spider_legs/spiky - name = "Spiky" - icon_state = "spiky" - -/datum/sprite_accessory/spider_spinneret - icon = 'icons/mob/spider_spinneret.dmi' - relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER) - mutant_part_string = "spinneret" - color_src = 0 - -/datum/sprite_accessory/spider_spinneret/none - name = "None" - icon_state = null - relevant_layers = null - -/datum/sprite_accessory/spider_spinneret/plain - name = "Plain" - icon_state = "plain" - -/datum/sprite_accessory/spider_spinneret/fuzzy - name = "Fuzzy" - icon_state = "fuzzy" - -/datum/sprite_accessory/spider_spinneret/black_widow - name = "Black Widow" - icon_state = "blackwidow" - -/datum/sprite_accessory/spider_mandibles - icon = 'icons/mob/spider_mandibles.dmi' - relevant_layers = list(BODY_ADJ_LAYER, BODY_FRONT_LAYER) - mutant_part_string = "mandibles" - color_src = 0 - -/datum/sprite_accessory/spider_mandibles/none - name = "None" - icon_state = null - relevant_layers = null - -/datum/sprite_accessory/spider_mandibles/plain - name = "Plain" - icon_state = "plain" - -/datum/sprite_accessory/spider_mandibles/fuzzy - name = "Fuzzy" - icon_state = "fuzzy" - -/datum/sprite_accessory/spider_mandibles/spiky - name = "Spiky" - icon_state = "spiky" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b3f2f923a0..ce6aa71f67 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1256,5 +1256,5 @@ /mob/living/carbon/human/species/roundstartslime race = /datum/species/jelly/roundstartslime -/mob/living/carbon/human/species/spider - race = /datum/species/spider +/mob/living/carbon/human/species/arachnid + race = /datum/species/arachnid diff --git a/code/modules/mob/living/carbon/human/species_types/spider.dm b/code/modules/mob/living/carbon/human/species_types/arachnid.dm similarity index 77% rename from code/modules/mob/living/carbon/human/species_types/spider.dm rename to code/modules/mob/living/carbon/human/species_types/arachnid.dm index 60a7346fd4..2072883c54 100644 --- a/code/modules/mob/living/carbon/human/species_types/spider.dm +++ b/code/modules/mob/living/carbon/human/species_types/arachnid.dm @@ -1,12 +1,12 @@ -/datum/species/spider +/datum/species/arachnid name = "Arachnid" - id = "rachnid" - override_bp_icon = 'icons/mob/spider_parts.dmi' + id = "arachnid" + override_bp_icon = 'icons/mob/arachnid_parts.dmi' say_mod = "chitters" default_color = "00FF00" species_traits = list(LIPS, NOEYES, NO_UNDERWEAR) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG - mutant_bodyparts = list("spider_legs" = "Plain", "spider_spinneret" = "Plain", "spider_mandibles" = "Plain") + mutant_bodyparts = list("arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain") attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' @@ -14,44 +14,44 @@ liked_food = MEAT | RAW disliked_food = FRUIT | GROSS toxic_food = VEGETABLES | DAIRY - mutanteyes = /obj/item/organ/eyes/night_vision/spider - mutanttongue = /obj/item/organ/tongue/spider - species_language_holder = /datum/language_holder/spider + mutanteyes = /obj/item/organ/eyes/night_vision/arachnid + mutanttongue = /obj/item/organ/tongue/arachnid + species_language_holder = /datum/language_holder/arachnid brutemod = 1.1 var/web_cooldown = 200 var/web_ready = TRUE var/spinner_rate = 25 -/datum/species/spider/random_name(gender,unique,lastname) +/datum/species/arachnid/random_name(gender,unique,lastname) if(unique) - return random_unique_spider_name() + return random_unique_arachnid_name() - var/randname = spider_name() + var/randname = arachnid_name() if(lastname) randname += " [lastname]" return randname -/datum/species/spider/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) +/datum/species/arachnid/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) . = ..() if(chem.type == /datum/reagent/toxin/pestkiller) H.adjustToxLoss(3) H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) -/datum/species/spider/check_weakness(obj/item/weapon, mob/living/attacker) +/datum/species/arachnid/check_weakness(obj/item/weapon, mob/living/attacker) if(istype(weapon, /obj/item/melee/flyswatter)) - return 9 //flyswatters deal 10x damage to spiders + return 9 //flyswatters deal 10x damage to arachnids return 0 -/datum/species/spider/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) +/datum/species/arachnid/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) . = ..() var/datum/action/innate/spin_web/SW = new var/datum/action/innate/spin_cocoon/SC = new SC.Grant(H) SW.Grant(H) -/datum/species/spider/on_species_loss(mob/living/carbon/human/H) +/datum/species/arachnid/on_species_loss(mob/living/carbon/human/H) . = ..() var/datum/action/innate/spin_web/SW = locate(/datum/action/innate/spin_web) in H.actions var/datum/action/innate/spin_cocoon/SC = locate(/datum/action/innate/spin_cocoon) in H.actions @@ -71,8 +71,8 @@ button_icon_state = "wrap_0" /datum/action/innate/spin_web/Activate() - var/mob/living/carbon/human/species/spider/H = owner - var/datum/species/spider/E = H.dna.species + var/mob/living/carbon/human/species/arachnid/H = owner + var/datum/species/arachnid/E = H.dna.species if(H.stat == "DEAD") return if(E.web_ready == FALSE) @@ -83,7 +83,7 @@ to_chat(H, "There's no room to spin your web here!") return var/obj/structure/spider/stickyweb/W = locate() in T - var/obj/structure/spider_player/W2 = locate() in T + var/obj/structure/arachnid/W2 = locate() in T if(W || W2) to_chat(H, "There's already a web here!") return @@ -97,7 +97,7 @@ H.adjust_nutrition(-E.spinner_rate) addtimer(VARSET_CALLBACK(E, web_ready, TRUE), E.web_cooldown) to_chat(H, "You use up a fair amount of energy weaving a web on the ground with your spinneret!") - new /obj/structure/spider_player(T, owner) + new /obj/structure/arachnid(T, owner) else to_chat(H, "You're too hungry to spin web right now, eat something first!") @@ -111,8 +111,8 @@ 5) if you're not interrupted, force move the target to the cocoon created at their location. */ /datum/action/innate/spin_cocoon/Activate() - var/mob/living/carbon/human/species/spider/H = owner - var/datum/species/spider/E = H.dna.species + var/mob/living/carbon/human/species/arachnid/H = owner + var/datum/species/arachnid/E = H.dna.species if(H.stat == "DEAD") return if(E.web_ready == FALSE) @@ -130,10 +130,10 @@ to_chat(H, "You're too hungry to spin web right now, eat something first!") return -/datum/action/innate/spin_cocoon/proc/cocoonAtom(mob/living/carbon/human/species/spider/H, atom/movable/A) +/datum/action/innate/spin_cocoon/proc/cocoonAtom(mob/living/carbon/human/species/arachnid/H, atom/movable/A) UnregisterSignal(H, list(COMSIG_MOB_ALTCLICKON)) - var/datum/species/spider/E = H.dna.species - if (!H || !isspiderperson(H)) + var/datum/species/arachnid/E = H.dna.species + if (!H || !isarachnid(H)) return COMSIG_MOB_CANCEL_CLICKON else if(E.web_ready == FALSE) @@ -143,7 +143,7 @@ to_chat(H, "Your web spinning was interrupted!") return H.adjust_nutrition(E.spinner_rate * -3) - var/obj/structure/spider_player/cocoon/C = new(A.loc) + var/obj/structure/arachnid/cocoon/C = new(A.loc) if(isliving(A)) C.icon_state = pick("cocoon_large1","cocoon_large2","cocoon_large3") A.forceMove(C) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index a8799f4e8c..bde5a19518 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -368,7 +368,8 @@ var/turf/T = get_turf(S) var/obj/structure/spider/stickyweb/W = locate() in T - if(W) + var/obj/structure/arachnid/W2 = locate() in T + if(W || W2) to_chat(S, "There's already a web here!") return diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 3440a037d0..cd21723e64 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1969,7 +1969,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/M) //Bugs should not drink Bug spray. - if(isinsect(M) || isflyperson(M) || isspiderperson(M)) + if(isinsect(M) || isflyperson(M) || isarachnid(M)) M.adjustToxLoss(1,0) return ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 13607065bb..f62391886c 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -785,7 +785,7 @@ name = "Arachnid Mutation Toxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 - race = /datum/species/spider + race = /datum/species/arachnid mutationtext = "The pain subsides. You feel... silky." //DANGEROUS RACES diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index ae16bf389d..585b33b189 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -729,7 +729,7 @@ required_temp = 320 /datum/chemical_reaction/mutationtoxin/arachnid - name = "spiderperson mutation toxin" + name = "arachnid mutation toxin" id = /datum/reagent/mutationtoxin/arachnid results = list(/datum/reagent/mutationtoxin/arachnid = 1) required_reagents = list(/datum/reagent/mutationtoxin/insect = 1, /datum/reagent/toxin/heparin = 10) diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index d5ea708270..a088eb2e4f 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -430,8 +430,8 @@ if(severity >= 70) owner.adjustOrganLoss(ORGAN_SLOT_EYES, 20) -/obj/item/organ/eyes/night_vision/spider - name = "spider eyes" +/obj/item/organ/eyes/night_vision/arachnid + name = "arachnid eyes" desc = "These eyes seem to have increased sensitivity to bright light, offset by basic night vision." see_in_dark = 4 flash_protect = -1 diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index fc534343ac..5c26235193 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -259,7 +259,7 @@ . = ..() languages_possible = languages_possible_ethereal -/obj/item/organ/tongue/spider +/obj/item/organ/tongue/arachnid name = "inner mandible" desc = "A set of soft, spoon-esque mandibles closer to the mouth opening, that allow for basic speech, and the ability to speak Rachnidian." say_mod = "chitters" @@ -271,9 +271,9 @@ /datum/language/narsie, /datum/language/beachbum, /datum/language/aphasia, - /datum/language/spider, + /datum/language/arachnid, )) -/obj/item/organ/tongue/spider/Initialize(mapload) +/obj/item/organ/tongue/arachnid/Initialize(mapload) . = ..() languages_possible = languages_possible_arachnid \ No newline at end of file diff --git a/config/game_options.txt b/config/game_options.txt index 38b632175f..bb6c5d8f01 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -477,7 +477,7 @@ ROUNDSTART_RACES xeno ROUNDSTART_RACES slimeperson ROUNDSTART_RACES guilmon ROUNDSTART_RACES ipc -ROUNDSTART_RACES rachnid +ROUNDSTART_RACES arachnid ##------------------------------------------------------------------------------------------- diff --git a/icons/mob/spider_legs.dmi b/icons/mob/arachnid_legs.dmi similarity index 84% rename from icons/mob/spider_legs.dmi rename to icons/mob/arachnid_legs.dmi index 51c4623ba48c558799e494117297eea10c7e1f97..bdd67a518f28b7463d238f007cfed843413fb013 100644 GIT binary patch delta 144 zcmV;B0B`^O4}lPnX92E}Xi9%Ru_!S)BQG;0J|{K3I6keks;V;H$<@Qt&qaxgGbOXA z7-SX~XIfEWZYqdvh+A_(PGV*rxtfa$GP5bP*)7Q5FN9>h5HFLb7vgA2>~(bUBGb3z y=!Cczk4|L;S3ehUN&)~|U%CEAsf8f`00zrRL_t(|ob8*vZW~7s$M>@>0ni3XOg(@A delta 99 zcmV-p0G$7U5d9C3X922_Xi5jZxF9nnwJ4Fh8b=ZrXIfEWZYqdvh)ZihPGV*rd0K(& zY>I4k3-b31AyFs9tK{f}IG21o9bLT0@+Il|ATGtDPg%j$&jp-r0KJj3v(pC|{<9td F;|2|nEBycf diff --git a/icons/mob/spider_mandibles.dmi b/icons/mob/arachnid_mandibles.dmi similarity index 100% rename from icons/mob/spider_mandibles.dmi rename to icons/mob/arachnid_mandibles.dmi diff --git a/icons/mob/arachnid_parts.dmi b/icons/mob/arachnid_parts.dmi new file mode 100644 index 0000000000000000000000000000000000000000..1b7093545051ec536bd9b71b074fc961183a1b40 GIT binary patch literal 1240 zcmV;}1Sk86P)?Jl{JASZ)s~rff+Y_`hklMCxqY?{6LtC zCJ=qZNwdBRkDed}&3GNZpF1l1{L9y_?VImAd;seRp&vb3mo86-LGx?<>&k@f5ZrYv0f&>uVY*-0l5l z?l*f+j6eOX`AUyp?fn7-FZZ~`euC~|ru>r`J_Su$(3p%<)GT~~ zpoVNLnB?-rkpeBOP@{dX1{S0Vv@S>|qESH2}z;ESYh%F4EVE+Mv z9Ta5ECNc!ktyX?JlK1J*KH%U47Ys;{#$SO_L3R~|_sUxcqMc;ypBRSS51mPTfw0|gH|F|=y{X^;c$Gs`; zAIjE0?oMg{P`3VYe+v7Dg5`k=Yaf-$d8PeBYYW0hjyaU}4+ZNVR}tj3D?(}iP_+JW zkzs1%V#CApX{B}{gb+dqA%w_8?;q6r2lf6zy??MGdjH_@-#^%R|4>fj{X;3u_YY+> z-#?VmeE(2J^X)Ym|AAoR{X;40A1Z_pLI@#*$mAED_!@um3DMmE0000`flzhg1IH|B_tuWySBHkcg?-CPn67$K z+gtPEP-sa`M{5XqqOv8qK*1%f1O`eReDol5WldnoYq2$>z>I5r_|~G*gb@7yd?3t4 z;iHc@DMr`m=m}C#G*|I$(@}TGpS*T$-+Z3n4dX+dRo`rqj{pDzok>JNRCt{2o!y$7 zAQVLd7$HB?RNwz$i<9=EjqHs&;Z-J7@FISi#GW;ICq2IsWV1U}(?fqu% zH+xTvKmDxvN{?Ud{Q?9p_qfG=g6?9b{F50z1x;Gen2b}@EO^AdHZg%8BthW!ZD_1} zB*z~v{`!u7r;~mBe4ql(mqC6{!?a&C+}Uq$dS~NL`oVbc@eA^6)fjf556-xN1Vacd z3;GZbVDQOt6MEl=+J)$fup?w_98K4M8z6WO&p;CeTlR}5sZXDvk?&JuEU#x!g= z2|`2X+ZLQoQIGPUhFkVKg^>!5O+Wh&<2XXWI4;2>6NZ5Z4nxy|gEKh)U|iD|nH4ag zhHNaD z6lBdNG6d1BR(?B@_vz3+;NS!o3`mg1Ux89Vb`^#9%3BDcon-8v7>3;spb$a`A%qY@ z2myHc*Ywl=SFI=5ZSruGQc;k#iN$L~StIMrJ_a*7D;ZKhQi57Zupaz-!X+qobU{v; z;Jyuu@^I)NGl8K2L0CUvYn)q{=!O1{!0OyY1A;xO(C`Z8@eN@K?-K-J9Ub&?`Aq|Y z=o*8IR}+m3QbStbI{@SmLcHr?KK(yfnekPLn-PXDufV12qA>X Date: Sun, 11 Oct 2020 14:35:59 -0500 Subject: [PATCH 10/10] Update species.dm consistent commenting even though it's not consistent anyway. --- code/modules/mob/living/carbon/human/species.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index d445274f36..7ec2fb6cc6 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -118,8 +118,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //the ids you can use for your species, if empty, it means default only and not changeable var/list/allowed_limb_ids - var/override_bp_icon //override for the icon path used when setting bodypart overlays. Intended for species that don't fit in the standard 32x32 files. - //the type of eyes this species has + //override for the icon path used when setting bodypart overlays. Intended for species that don't fit in the standard 32x32 files. + var/override_bp_icon + //the icon state of the eyes this species has var/eye_type = "normal" ///////////