diff --git a/code/__DEFINES/~RUtgmc_defines/xeno.dm b/code/__DEFINES/~RUtgmc_defines/xeno.dm index 06579557f0f..7618e236fea 100644 --- a/code/__DEFINES/~RUtgmc_defines/xeno.dm +++ b/code/__DEFINES/~RUtgmc_defines/xeno.dm @@ -17,17 +17,17 @@ //List of weed images GLOBAL_LIST_INIT(weed_images_list, list( - WEED = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = WEED), - STICKY_WEED = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = STICKY_WEED), - RESTING_WEED = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = RESTING_WEED), - AUTOMATIC_WEEDING = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = AUTOMATIC_WEEDING) + WEED = image('icons/Xeno/actions.dmi', icon_state = WEED), + STICKY_WEED = image('icons/Xeno/actions.dmi', icon_state = STICKY_WEED), + RESTING_WEED = image('icons/Xeno/actions.dmi', icon_state = RESTING_WEED), + AUTOMATIC_WEEDING = image('icons/Xeno/actions.dmi', icon_state = AUTOMATIC_WEEDING) )) //List of pheromone images GLOBAL_LIST_INIT(pheromone_images_list, list( - AURA_XENO_RECOVERY = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = AURA_XENO_RECOVERY), - AURA_XENO_WARDING = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = AURA_XENO_WARDING), - AURA_XENO_FRENZY = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = AURA_XENO_FRENZY), + AURA_XENO_RECOVERY = image('icons/Xeno/actions.dmi', icon_state = AURA_XENO_RECOVERY), + AURA_XENO_WARDING = image('icons/Xeno/actions.dmi', icon_state = AURA_XENO_WARDING), + AURA_XENO_FRENZY = image('icons/Xeno/actions.dmi', icon_state = AURA_XENO_FRENZY), )) //List of plant images @@ -40,17 +40,17 @@ GLOBAL_LIST_INIT(plant_images_list, list( //List of resin structure images GLOBAL_LIST_INIT(resin_images_list, list( - RESIN_WALL = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = RESIN_WALL), - STICKY_RESIN = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = STICKY_RESIN), - RESIN_DOOR = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = RESIN_DOOR), - ALIEN_NEST = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = ALIEN_NEST) + RESIN_WALL = image('icons/Xeno/actions.dmi', icon_state = RESIN_WALL), + STICKY_RESIN = image('icons/Xeno/actions.dmi', icon_state = STICKY_RESIN), + RESIN_DOOR = image('icons/Xeno/actions.dmi', icon_state = RESIN_DOOR), + ALIEN_NEST = image('icons/Xeno/actions.dmi', icon_state = ALIEN_NEST) )) /* RU TGMC EDIT //List of puppeteer pheromone images GLOBAL_LIST_INIT(puppeteer_phero_images_list, list( - AURA_XENO_BLESSFURY = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = "Fury"), - AURA_XENO_BLESSWARDING = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = "Warding"), - AURA_XENO_BLESSFRENZY = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = "Frenzy"), + AURA_XENO_BLESSFURY = image('icons/Xeno/actions.dmi', icon_state = "Fury"), + AURA_XENO_BLESSWARDING = image('icons/Xeno/actions.dmi', icon_state = "Warding"), + AURA_XENO_BLESSFRENZY = image('icons/Xeno/actions.dmi', icon_state = "Frenzy"), )) RU TGMC EDIT*/ GLOBAL_LIST_INIT(panther_toxin_type_list, list( diff --git a/code/__HELPERS/matrices.dm b/code/__HELPERS/matrices.dm index 65eb16b1b36..8564399cdb8 100644 --- a/code/__HELPERS/matrices.dm +++ b/code/__HELPERS/matrices.dm @@ -191,6 +191,8 @@ round(cos_inv_third+sqrt3_sin, 0.001), round(cos_inv_third-sqrt3_sin, 0.001), ro return output + + //Returns a matrix multiplication of A with B /proc/color_matrix_multiply(list/A, list/B) if(!istype(A) || !istype(B)) @@ -207,3 +209,110 @@ round(cos_inv_third+sqrt3_sin, 0.001), round(cos_inv_third-sqrt3_sin, 0.001), ro for(x in 1 to 4) output[offset+x] = round(A[offset+1]*B[x] + A[offset+2]*B[x+4] + A[offset+3]*B[x+8] + A[offset+4]*B[x+12]+(y==5?B[x+16]:0), 0.001) return output + +//word of warning: using a matrix like this as a color value will simplify it back to a string after being set +/proc/color_hex2color_matrix(string) + var/length = length(string) + if((length != 7 && length != 9) || length != length_char(string)) + return color_matrix_identity() + var/r = hex2num(copytext(string, 2, 4))/255 + var/g = hex2num(copytext(string, 4, 6))/255 + var/b = hex2num(copytext(string, 6, 8))/255 + var/a = 1 + if(length == 9) + a = hex2num(copytext(string, 8, 10))/255 + if(!isnum(r) || !isnum(g) || !isnum(b) || !isnum(a)) + return color_matrix_identity() + return list(r, 0, 0, 0, 0, g, 0, 0, 0, 0, b, 0, 0, 0, 0, a, 0, 0, 0, 0) + + +///Converts a hex color string to a color matrix. +/proc/color_matrix_from_string(string) + if(!string || !istext(string)) + return color_matrix_identity() + + var/string_r = hex2num(copytext(string, 2, 4)) / 255 + var/string_g = hex2num(copytext(string, 4, 6)) / 255 + var/string_b = hex2num(copytext(string, 6, 8)) / 255 + + return list(string_r, 0, 0, 0, 0, string_g, 0, 0, 0, 0, string_b, 0, 0, 0, 0, 1, 0, 0, 0, 0) + + +/*Changing/updating a mob's client color matrices. These render over the map window and affect most things the player sees, except things like inventory, +text popups, HUD, and some fullscreens. Code based on atom filter code, since these have similar issues with application order - for ex. if you have +a desaturation and a recolor matrix, you'll get very different results if you desaturate before recoloring, or recolor before desaturating. +See matrices.dm for the matrix procs. +If you want to recolor a specific atom, you should probably do it as a color matrix filter instead since that code already exists. +Apparently color matrices are not the same sort of matrix used by matrix datums and can't be worked with using normal matrix procs.*/ + +///Adds a color matrix and updates the client. Priority is the order the matrices are applied, lowest first. Will replace an existing matrix of the same name, if one exists. +/mob/proc/add_client_color_matrix(name, priority, list/params, time, easing) + LAZYINITLIST(client_color_matrices) + + //Package the matrices in another list that stores priority. + client_color_matrices[name] = list("priority" = priority, "color_matrix" = params.Copy()) + + update_client_color_matrices(time, easing) + +/**Combines all color matrices and applies them to the client. +Also used on login to give a client its new body's color matrices. +Responsible for sorting the matrices. +Transition is animated but instant by default.**/ +/mob/proc/update_client_color_matrices(time = 0 SECONDS, easing = LINEAR_EASING) + if(!client) + return + + if(!length(client_color_matrices)) + animate(client, color = null, time = time, easing = easing) + UNSETEMPTY(client_color_matrices) + SEND_SIGNAL(src, COMSIG_MOB_RECALCULATE_CLIENT_COLOR) + return + + //Sort the matrix packages by priority. + client_color_matrices = sortTim(client_color_matrices, GLOBAL_PROC_REF(cmp_filter_data_priority), TRUE) + + var/list/final_matrix + + for(var/package in client_color_matrices) + var/list/current_matrix = client_color_matrices[package]["color_matrix"] + if(!final_matrix) + final_matrix = current_matrix + else + final_matrix = color_matrix_multiply(final_matrix, current_matrix) + + animate(client, color = final_matrix, time = time, easing = easing) + SEND_SIGNAL(src, COMSIG_MOB_RECALCULATE_CLIENT_COLOR) + +///Changes a matrix package's priority and updates client. +/mob/proc/change_client_color_matrix_priority(name, new_priority, time, easing) + if(!client_color_matrices || !client_color_matrices[name]) + return + + client_color_matrices[name]["priority"] = new_priority + + update_client_color_matrices(time, easing) + +///Returns the matrix of that name, if it exists. +/mob/proc/get_client_color_matrix(name) + return client_color_matrices[name]["color_matrix"] + +///Can take either a single name or a list of several. Attempts to remove target matrix packages and update client. +/mob/proc/remove_client_color_matrix(name_or_names, time, easing) + if(!client_color_matrices) + return + + var/found = FALSE + var/list/names = islist(name_or_names) ? name_or_names : list(name_or_names) + + for(var/name in names) + if(client_color_matrices[name]) + client_color_matrices -= name + found = TRUE + + if(found) + update_client_color_matrices(time, easing) + +///Removes all matrices and updates client. +/mob/proc/clear_client_color_matrices(time, easing) + client_color_matrices = null + update_client_color_matrices(time, easing) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index ea04b0fe090..47cf638530a 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -1,5 +1,38 @@ #define strip_improper(input_text) replacetext(replacetext(input_text, "\proper", ""), "\improper", "") +GLOBAL_LIST_INIT(ru_key_to_en_key, list("й" = "q", "ц" = "w", "у" = "e", "к" = "r", "е" = "t", "н" = "y", "г" = "u", "ш" = "i", "щ" = "o", "з" = "p", "х" = "\[", "ъ" = "]", + "ф" = "a", "ы" = "s", "в" = "d", "а" = "f", "п" = "g", "р" = "h", "о" = "j", "л" = "k", "д" = "l", "ж" = ";", "э" = "'", + "я" = "z", "ч" = "x", "с" = "c", "м" = "v", "и" = "b", "т" = "n", "ь" = "m", "б" = ",", "ю" = ".")) + +GLOBAL_LIST_INIT(en_key_to_ru_key, list( + "q" = "й", "w" = "ц", "e" = "у", "r" = "к", "t" = "е", "y" = "н", + "u" = "г", "i" = "ш", "o" = "щ", "p" = "з", + "a" = "ф", "s" = "ы", "d" = "в", "f" = "а", "g" = "п", "h" = "р", + "j" = "о", "k" = "л", "l" = "д", ";" = "ж", "'" = "э", "z" = "я", + "x" = "ч", "c" = "с", "v" = "м", "b" = "и", "n" = "т", "m" = "ь", + "," = "б", "." = "ю", +)) + +/proc/convert_ru_key_to_en_key(var/_key) + var/new_key = lowertext(_key) + new_key = GLOB.ru_key_to_en_key[new_key] + if(!new_key) + return _key + return uppertext(new_key) + +/proc/convert_ru_string_to_en_string(text) + . = "" + for(var/i in 1 to length_char(text)) + . += convert_ru_key_to_en_key(copytext_char(text, i, i+1)) + +/proc/sanitize_en_key_to_ru_key(char) + var/new_char = GLOB.en_key_to_ru_key[lowertext(char)] + return (new_char != null) ? new_char : char + +/proc/sanitize_en_string_to_ru_string(text) + . = "" + for(var/i in 1 to length_char(text)) + . += sanitize_en_key_to_ru_key(copytext_char(text, i, i+1)) /proc/format_table_name(table) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 478f483e98d..bcc049e0372 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1307,3 +1307,141 @@ GLOBAL_LIST_INIT(survivor_outfits, typecacheof(/datum/outfit/job/survivor)) return FALSE line_count ++ return TRUE + + + +/proc/get_true_location(atom/loc) + var/atom/subLoc = loc + while(subLoc.z == 0) + if (istype(subLoc.loc, /atom)) + subLoc = subLoc.loc + else + return subLoc + return subLoc + +#define get_true_turf(loc) get_turf(get_true_location(loc)) + +GLOBAL_LIST_EMPTY(loose_yautja_gear) +GLOBAL_LIST_EMPTY(tracked_yautja_gear) // list of pred gear with a tracking element attached + +GLOBAL_LIST_EMPTY(mainship_yautja_teleports) +GLOBAL_LIST_EMPTY(mainship_yautja_desc) +GLOBAL_LIST_EMPTY(yautja_teleports) +GLOBAL_LIST_EMPTY(yautja_teleport_descs) + +GLOBAL_LIST_INIT_TYPED(all_yautja_capes, /obj/item/clothing/yautja_cape, setup_yautja_capes()) + +/proc/setup_yautja_capes() + var/list/cape_list = list() + for(var/obj/item/clothing/yautja_cape/cape_type as anything in typesof(/obj/item/clothing/yautja_cape)) + cape_list[initial(cape_type.name)] = cape_type + return cape_list + +GLOBAL_VAR_INIT(roles_whitelist, load_role_whitelist()) + +/proc/load_role_whitelist(filename = "config/role_whitelist.txt") + var/L[] = file2list(filename) + var/P[] + var/W[] = new //We want a temporary whitelist list, in case we need to reload. + + var/i + var/r + var/ckey + var/role + for(i in L) + if(!i) + continue + i = trim(i) + + if(!length(i)) + continue + + else if(copytext(i, 1, 2) == "#") + continue + + P = splittext(i, "+") + + if(!P.len) + continue + + ckey = ckey(P[1]) //Converting their key to canonical form. ckey() does this by stripping all spaces, underscores and converting to lower case. + + role = NONE + r = 1 + while(++r <= P.len) + switch(ckey(P[r])) + if("yautja") + role |= WHITELIST_YAUTJA + if("yautjalegacy") + role |= WHITELIST_YAUTJA_LEGACY + if("yautjacouncil") + role |= WHITELIST_YAUTJA_COUNCIL + if("yautjacouncillegacy") + role |= WHITELIST_YAUTJA_COUNCIL_LEGACY + if("yautjaleader") + role |= WHITELIST_YAUTJA_LEADER + + W[ckey] = role + + return W + +//yautja ship AI announcement +/proc/yautja_announcement(message, title = "You receive a message from your ship AI...", sound_to_play = sound('sound/misc/notice1.ogg')) + var/list/targets = GLOB.human_mob_list + GLOB.dead_mob_list + for(var/mob/M in targets) + if(!isobserver(M)) //observers see everything + var/mob/living/carbon/human/H = M + if(!isyautja(H) || H.stat != CONSCIOUS) + continue + + to_chat(M, html = "[title]

[span_alert(message)]") + SEND_SOUND(M, sound_to_play) + +/// Will attempt to find what's holding this item if it's being contained by something, ie if it's in a satchel held by a human, this'll return the human +/proc/recursive_holder_check(obj/item/held_item, recursion_limit = 3) + if(recursion_limit <= 0) + return held_item + if(!held_item.loc || isturf(held_item.loc)) + return held_item + recursion_limit-- + return recursive_holder_check(held_item.loc, recursion_limit) + +// returns turf relative to A for a given clockwise angle at set range +// result is bounded to map size +/proc/get_angle_target_turf(atom/A, angle, range) + if(!istype(A)) + return null + var/x = A.x + var/y = A.y + + x += range * sin(angle) + y += range * cos(angle) + + //Restricts to map boundaries while keeping the final angle the same + var/dx = A.x - x + var/dy = A.y - y + var/ratio + + if(dy == 0) //prevents divide-by-zero errors + ratio = INFINITY + else + ratio = dx / dy + + if(x < 1) + y += (1 - x) / ratio + x = 1 + else if (x > world.maxx) + y += (world.maxx - x) / ratio + x = world.maxx + if(y < 1) + x += (1 - y) * ratio + y = 1 + else if (y > world.maxy) + x += (world.maxy - y) * ratio + y = world.maxy + + + x = round(x,1) + y = round(y,1) + + return locate(x,y,A.z) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index affca044d8e..ae733fba9be 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -1,14 +1,3 @@ -//Preferences stuff -/* RUTGMC EDIT EDITION -GLOBAL_LIST_INIT(ethnicities_list, init_ethnicities()) - -/// Ethnicity - Initialise all /datum/ethnicity into a list indexed by ethnicity name -/proc/init_ethnicities() - . = list() - for(var/path in subtypesof(/datum/ethnicity)) - var/datum/ethnicity/E = new path() - .[E.name] = E -*/ //Hairstyles GLOBAL_LIST_EMPTY(hair_styles_list) //stores /datum/sprite_accessory/hair indexed by name GLOBAL_LIST_EMPTY(hair_gradients_list) //stores /datum/sprite_accessory/hair_gradient indexed by name @@ -23,6 +12,9 @@ GLOBAL_LIST_INIT(undershirt_f, list("None","Black undershirt", "White undershirt //Mutant Human bits GLOBAL_LIST_EMPTY(moth_wings_list) GLOBAL_LIST_EMPTY(tails_list_monkey) + //Backpacks +GLOBAL_LIST_INIT(backpacklist, list("Nothing", "Backpack", "Satchel", "Green Satchel", "Molle Backpack", "Molle Satchel", "Scav Backpack")) + GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites @@ -79,59 +71,8 @@ GLOBAL_LIST_INIT(ai_core_display_screens, list( input = pick(GLOB.ai_core_display_screens - "Random") return "ai-[lowertext(input)]" - //Backpacks -//GLOBAL_LIST_INIT(backpacklist, list("Nothing", "Backpack", "Satchel")) // RUTGMC DELETION, moved to modular - - GLOBAL_LIST_INIT(genders, list(MALE, FEMALE, NEUTER)) -/* RUTGMC EDIT BEGIN: Moved to modular_RUtgmc\code\_globalvars\lists\flavor_misc.dm -GLOBAL_LIST_INIT(playable_icons, list( - "boiler", - "bull", - "captain", - "carrier", - "chief_medical", - "cl", - "crusher", - "cse", - "defender", - "defiler", - "drone", - "fieldcommander", - "gorger", - "hivelord", - "hivemind", - "hunter", - "larva", - "mech_pilot", - "medical", - "pilot", - "praetorian", - "private", - "puppeteer", - "ravager", - "requisition", - "researcher", - "runner", - "sentinel", - "spiderling", - "spitter", - "st", - "staffofficer", - "synth", - "warlock", - "warrior", - "widow", - "wraith", - "xenoking", - "xenominion", - "xenoqueen", - "xenoshrike", - "behemoth", -)) -RUTGMC EDIT END */ - //like above but autogenerated when a new squad is created GLOBAL_LIST_INIT(playable_squad_icons, list( "private", @@ -208,15 +149,6 @@ GLOBAL_LIST_INIT(campaign_mission_icon_types, list( "final_tgmc", )) -/* RUTGMC DELETION BEGIN, moved to modular -GLOBAL_LIST_INIT(minimap_icons, init_minimap_icons()) - -/proc/init_minimap_icons() - . = list() - for(var/icon_state in GLOB.playable_icons) - .[icon_state] = icon2base64(icon('icons/UI_icons/map_blips.dmi', icon_state, frame = 1)) //RUTGMC edit - icon change -RUTGMC EDIT END */ - GLOBAL_LIST_INIT(campaign_icons, init_campaign_icons()) /proc/init_campaign_icons() @@ -234,3 +166,87 @@ GLOBAL_LIST_INIT(campaign_mission_icons, init_campaign_mission_icons()) for(var/icon_state in GLOB.campaign_mission_icon_types) for(var/colour in colours) .["[icon_state]_[colour]"] = icon2base64(icon('icons/UI_icons/mission_icons.dmi', "[icon_state]_[colour]", frame = 1)) + + + +GLOBAL_LIST_INIT(playable_icons, list( + "behemoth", + "boiler", + "bull", + "captain", + "clown", + "military_police", + "carrier", + "chief_medical", + "cl", + "crusher", + "cse", + "defender", + "defiler", + "drone", + "facehugger", + "fieldcommander", + "gorger", + "hivelord", + "hivemind", + "hunter", + "larva", + "mech_pilot", + "medical", + "panther", + "pilot", + "praetorian", + "private", + "ravager", + "requisition", + "researcher", + "runner", + "sentinel", + "spitter", + "st", + "staffofficer", + "synth", + "warlock", + "warrior", + "xenoking", + "xenominion", + "xenoqueen", + "xenoshrike", + "chimera", + "predator", + "thrall", + "hellhound", +)) + +GLOBAL_LIST_EMPTY(human_ethnicities_list) +GLOBAL_LIST_EMPTY(yautja_ethnicities_list) + +GLOBAL_LIST_EMPTY(yautja_hair_styles_list) + +GLOBAL_LIST_INIT(ethnicities_list, init_ethnicities()) + +/// Ethnicity - Initialise all /datum/ethnicity into a list indexed by ethnicity name +/proc/init_ethnicities() + . = list() + + for(var/path in subtypesof(/datum/ethnicity) - /datum/ethnicity/human - /datum/ethnicity/yautja) + var/datum/ethnicity/E = new path() + .[E.name] = E + + if(istype(E, /datum/ethnicity/human)) + GLOB.human_ethnicities_list[E.name] = E + + if(istype(E, /datum/ethnicity/yautja)) + GLOB.yautja_ethnicities_list[E.name] = E + + for(var/path in subtypesof(/datum/sprite_accessory/yautja_hair)) + var/datum/sprite_accessory/yautja_hair/H = new path() + GLOB.yautja_hair_styles_list[H.name] = H + + +GLOBAL_LIST_INIT(minimap_icons, init_minimap_icons()) + +/proc/init_minimap_icons() + . = list() + for(var/icon_state in GLOB.playable_icons) + .[icon_state] = icon2base64(icon('icons/UI_icons/map_blips.dmi', icon_state, frame = 1)) //RUTGMC edit - icon change diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index 683a9e1023d..3cc2e73a45e 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -13,6 +13,9 @@ GLOBAL_LIST_EMPTY(start_landmarks_list) //list of all spawn points created GLOBAL_LIST_EMPTY(corpse_landmarks_list) //list of all corpse spawner GLOBAL_LIST_EMPTY(valhalla_button_spawn_landmark) //list of the landmarks used to spawn mobs for the valhalla buttons +GLOBAL_LIST_EMPTY(start_squad_landmarks_list) //list of all squad roundstart spawn points created +GLOBAL_LIST_EMPTY(latejoin_squad_landmarks_list) //list of all squad latejoin spawn points created + GLOBAL_LIST_EMPTY(spawns_by_job) //2d array of /datum/job => list(turfs) GLOBAL_LIST_EMPTY(landmarks_round_start) //landmarks that require action at round start diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 845fe4d2eaa..c64bf246164 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -54,8 +54,6 @@ GLOBAL_LIST_INIT_TYPED(xeno_caste_datums, /list/datum/xeno_caste, init_xeno_cast .[C.caste_type_path] = list() .[C.caste_type_path][C.upgrade] = C -//RUTGMC EDIT BEGIN: Moved to modular_RUtgmc\code\_globalvars\lists\mobs.dm -/* GLOBAL_LIST_INIT(all_xeno_types, list( /mob/living/carbon/xenomorph/runner, /mob/living/carbon/xenomorph/runner/primordial, @@ -69,6 +67,8 @@ GLOBAL_LIST_INIT(all_xeno_types, list( /mob/living/carbon/xenomorph/gorger/primordial, /mob/living/carbon/xenomorph/hunter, /mob/living/carbon/xenomorph/hunter/primordial, + /mob/living/carbon/xenomorph/panther, + /mob/living/carbon/xenomorph/panther/primordial, /mob/living/carbon/xenomorph/warrior, /mob/living/carbon/xenomorph/warrior/primordial, /mob/living/carbon/xenomorph/spitter, @@ -83,8 +83,6 @@ GLOBAL_LIST_INIT(all_xeno_types, list( /mob/living/carbon/xenomorph/queen/primordial, /mob/living/carbon/xenomorph/king, /mob/living/carbon/xenomorph/king/primordial, - /mob/living/carbon/xenomorph/wraith, - /mob/living/carbon/xenomorph/wraith/primordial, /mob/living/carbon/xenomorph/ravager, /mob/living/carbon/xenomorph/ravager/primordial, /mob/living/carbon/xenomorph/praetorian, @@ -95,29 +93,35 @@ GLOBAL_LIST_INIT(all_xeno_types, list( /mob/living/carbon/xenomorph/defiler/primordial, /mob/living/carbon/xenomorph/crusher, /mob/living/carbon/xenomorph/crusher/primordial, - /mob/living/carbon/xenomorph/widow, - /mob/living/carbon/xenomorph/widow/primordial, /mob/living/carbon/xenomorph/shrike, /mob/living/carbon/xenomorph/shrike/primordial, /mob/living/carbon/xenomorph/warlock, /mob/living/carbon/xenomorph/warlock/primordial, - /mob/living/carbon/xenomorph/puppeteer, - /mob/living/carbon/xenomorph/puppeteer/primordial, /mob/living/carbon/xenomorph/behemoth, /mob/living/carbon/xenomorph/behemoth/primordial, + /mob/living/carbon/xenomorph/chimera, + /mob/living/carbon/xenomorph/chimera/primordial, /mob/living/carbon/xenomorph/beetle, /mob/living/carbon/xenomorph/mantis, /mob/living/carbon/xenomorph/scorpion, - /mob/living/carbon/xenomorph/spiderling, + /mob/living/carbon/xenomorph/facehugger, )) -*/ -//RUTGMC EDIT END + +GLOBAL_LIST_INIT(forbid_excepts, list( + /mob/living/carbon/xenomorph/king, + /mob/living/carbon/xenomorph/queen, + /mob/living/carbon/xenomorph/shrike, + /mob/living/carbon/xenomorph/larva, + /mob/living/carbon/xenomorph/drone, + )) + +GLOBAL_LIST_EMPTY_TYPED(hellhound_list, /mob/living/carbon/xenomorph/hellhound) +GLOBAL_LIST_EMPTY_TYPED(yautja_mob_list, /mob/living/carbon/human/species/yautja) + GLOBAL_LIST_INIT(xeno_types_tier_one, list(/mob/living/carbon/xenomorph/runner, /mob/living/carbon/xenomorph/drone, /mob/living/carbon/xenomorph/sentinel, /mob/living/carbon/xenomorph/defender)) -//RUTGMC EDIT - Moved to modular_RUtgmc\code\_globalvars\lists\mobs.dm -/* -GLOBAL_LIST_INIT(xeno_types_tier_two, list(/mob/living/carbon/xenomorph/hunter, /mob/living/carbon/xenomorph/warrior, /mob/living/carbon/xenomorph/spitter, /mob/living/carbon/xenomorph/hivelord, /mob/living/carbon/xenomorph/carrier, /mob/living/carbon/xenomorph/bull, /mob/living/carbon/xenomorph/wraith, /mob/living/carbon/xenomorph/puppeteer)) -GLOBAL_LIST_INIT(xeno_types_tier_three, list(/mob/living/carbon/xenomorph/gorger, /mob/living/carbon/xenomorph/widow, /mob/living/carbon/xenomorph/ravager, /mob/living/carbon/xenomorph/praetorian, /mob/living/carbon/xenomorph/boiler, /mob/living/carbon/xenomorph/defiler, /mob/living/carbon/xenomorph/crusher, /mob/living/carbon/xenomorph/shrike, /mob/living/carbon/xenomorph/behemoth)) -*/ +GLOBAL_LIST_INIT(xeno_types_tier_two, list(/mob/living/carbon/xenomorph/hunter, /mob/living/carbon/xenomorph/panther, /mob/living/carbon/xenomorph/warrior, /mob/living/carbon/xenomorph/spitter, /mob/living/carbon/xenomorph/hivelord, /mob/living/carbon/xenomorph/carrier, /mob/living/carbon/xenomorph/bull)) +GLOBAL_LIST_INIT(xeno_types_tier_three, list(/mob/living/carbon/xenomorph/gorger, /mob/living/carbon/xenomorph/ravager, /mob/living/carbon/xenomorph/praetorian, /mob/living/carbon/xenomorph/boiler, /mob/living/carbon/xenomorph/defiler, /mob/living/carbon/xenomorph/crusher, /mob/living/carbon/xenomorph/shrike, /mob/living/carbon/xenomorph/behemoth, /mob/living/carbon/xenomorph/chimera)) + GLOBAL_LIST_INIT_TYPED(hive_datums, /datum/hive_status, init_hive_datum_list()) // init by make_datum_references_lists() /proc/init_hive_datum_list() @@ -144,7 +148,7 @@ GLOBAL_LIST_INIT(hive_ui_static_data, init_hive_status_lists()) // init by make_ GLOB.hive_ui_caste_index[type_path] = length(.) //Starts from 0. - var/icon/xeno_minimap = icon('modular_RUtgmc/icons/UI_icons/map_blips.dmi', initial(caste.minimap_icon)) ///RUTGMC edit, icon redirect to module + var/icon/xeno_minimap = icon('icons/UI_icons/map_blips.dmi', initial(caste.minimap_icon)) ///RUTGMC edit, icon redirect to module var/tier = initial(caste.tier) if(tier == XENO_TIER_MINION) continue diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 058cf05a69d..7fc4c191a75 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -1,6 +1,8 @@ GLOBAL_LIST_EMPTY(cable_list) //Index for all cables, so that powernets don't have to look through the entire world all the time GLOBAL_LIST_INIT(ammo_list, init_ammo_list()) //List of all ammo types. Used by guns to tell the projectile how to act. +GLOBAL_LIST_EMPTY(xeno_egg_hugger) + /proc/init_ammo_list() . = list() // Our ammo stuff is initialized here. diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 08f3ff8af20..60bddaa8302 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -61,12 +61,6 @@ #define ui_ammo3 "EAST-1:28,CENTER+3:29" #define ui_ammo4 "EAST-1:28,CENTER+4:31" -/* RUTGMC DELETION -#define ui_alien_nightvision "EAST-1:28,5:13" -#define ui_alien_health "EAST-1:28,6:13" -#define ui_queen_locator "EAST-1:28,7:13" -#define ui_alienplasmadisplay "EAST-1:28,8:13" -*/ #define ui_alien_nightvision "EAST-1:28,6:13" #define ui_alien_health "EAST-1:12,8:13" #define ui_alien_health_larva "EAST-1:28,8:13" @@ -75,6 +69,9 @@ #define ui_evolvehud "EAST-1:28,6:13" #define ui_sunderhud "EAST-1:28,10:13" +//Upper-middle right (damage indicators) +#define ui_predator_power "EAST-1:28,CENTER:17" + //Pop-up inventory #define ui_shoes "WEST+1:8,1:5" @@ -102,3 +99,26 @@ #define ui_ai_bioscan "SOUTH:6,WEST+6" #define ui_ai_multicam "SOUTH:6,WEST+17" #define ui_ai_add_multicam "SOUTH:6,WEST+18" + +// Какого хрена атомы лежат в дефайнах?! +// TODO: Уберите предовские атомы в другой И ПОДХОДЯЩИЙ файл, плиз. +/* + | | | + | | | + v v v +*/ +/atom/movable/screen/fullscreen/machine/pred + alpha = 140 + +/atom/movable/screen/fullscreen/machine/pred/meson + icon_state = "pred_meson" + icon = 'modular_RUtgmc/icons/mob/screen/full.dmi' + +/atom/movable/screen/fullscreen/machine/pred/night + icon_state = "robothalf" + +/datum/hud/var/atom/movable/screen/pred_power_icon + +/datum/hud/Destroy() + pred_power_icon = null + return ..() diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 4c222ac915c..e0137729ebe 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -19,6 +19,9 @@ var/atom/movable/screen/action_intent var/atom/movable/screen/move_intent var/atom/movable/screen/alien_plasma_display + var/atom/movable/screen/alien_evolve_display + var/atom/movable/screen/alien_sunder_display + var/atom/movable/screen/locate_leader var/atom/movable/screen/SL_locator @@ -99,6 +102,7 @@ action_intent = null move_intent = null alien_plasma_display = null + alien_evolve_display = null locate_leader = null module_store_icon = null diff --git a/code/_onclick/hud/screen_objects/menu_text_objects.dm b/code/_onclick/hud/screen_objects/menu_text_objects.dm index 1b2db453df4..df300b0e1b7 100644 --- a/code/_onclick/hud/screen_objects/menu_text_objects.dm +++ b/code/_onclick/hud/screen_objects/menu_text_objects.dm @@ -35,7 +35,7 @@ . = ..() if(!(flags_atom & INITIALIZED)) //yes this can happen, fuck me return - color = COLOR_ORANGE + color = COLOR_RUTGMC_RED var/mob/new_player/player = usr player.playsound_local(player, 'sound/effects/menu_click.ogg', 50) @@ -52,7 +52,7 @@ /atom/movable/screen/text/lobby/clickable/setup_character - maptext = "CHARACTER: ..." + maptext = "ПЕРСОНАЖ: ..." icon_state = "setup" ///Bool, whether we registered to listen for charachter updates already var/registered = FALSE @@ -63,14 +63,14 @@ hud.mymob.client?.prefs.ShowChoices(hud.mymob) /atom/movable/screen/text/lobby/clickable/setup_character/update_text() - maptext = "CHARACTER: [hud?.mymob.client ? hud.mymob.client.prefs.real_name : "Unknown User"]" + maptext = "ПЕРСОНАЖ: [hud?.mymob.client ? hud.mymob.client.prefs.real_name : "Unknown User"]" if(registered) return RegisterSignal(hud.mymob.client, COMSIG_CLIENT_PREFERENCES_UIACTED, PROC_REF(update_text)) registered = TRUE /atom/movable/screen/text/lobby/clickable/join_game - maptext = "JOIN GAME" + maptext = "ПРИСОЕДИНИТЬСЯ" icon_state = "join" /atom/movable/screen/text/lobby/clickable/join_game/Click() @@ -80,7 +80,7 @@ /atom/movable/screen/text/lobby/clickable/observe - maptext = "OBSERVE" + maptext = "НАБЛЮДАТЬ" icon_state = "observe" /atom/movable/screen/text/lobby/clickable/observe/Click() @@ -89,12 +89,12 @@ player.try_to_observe() /atom/movable/screen/text/lobby/clickable/ready - maptext = "YOU ARE: NOT READY" + maptext = "ВЫ: НЕ ГОТОВЫ" icon_state = "unready" /atom/movable/screen/text/lobby/clickable/ready/update_text() var/mob/new_player/player = hud.mymob - maptext = "YOU ARE: [player.ready ? "" : "NOT "]READY" + maptext = "ВЫ: [player.ready ? "" : "НЕ "]ГОТОВЫ" /atom/movable/screen/text/lobby/clickable/ready/Click() . = ..() @@ -104,7 +104,7 @@ update_text() /atom/movable/screen/text/lobby/clickable/manifest - maptext = "VIEW MANIFEST" + maptext = "МАНИФЕСТ МОРПЕХОВ" icon_state = "manifest" /atom/movable/screen/text/lobby/clickable/manifest/Click() @@ -113,7 +113,7 @@ player.view_manifest() /atom/movable/screen/text/lobby/clickable/xenomanifest - maptext = "VIEW HIVE" + maptext = "МАНИФЕСТ УЛЬЯ" icon_state = "manifest" /atom/movable/screen/text/lobby/clickable/xenomanifest/Click() @@ -122,7 +122,7 @@ player.view_xeno_manifest() /atom/movable/screen/text/lobby/clickable/background - maptext = "BACKGROUND" + maptext = "ПРЕДЫСТОРИЯ" icon_state = "background" /atom/movable/screen/text/lobby/clickable/background/Click() @@ -132,7 +132,7 @@ /atom/movable/screen/text/lobby/clickable/changelog - maptext = "CHANGELOG" + maptext = "ЛОГ ИЗМЕНЕНИЙ" icon_state = "changelog" /atom/movable/screen/text/lobby/clickable/changelog/Click() @@ -152,9 +152,9 @@ var/mob/new_player/player = hud.mymob var/hasnewpolls = player.check_playerpolls() if(isnull(hasnewpolls)) - maptext = "NO DATABASE!" + maptext = "НЕТ БАЗЫ ДАННЫХ!" return - maptext = "SHOW POLLS[hasnewpolls ? " (NEW!)" : ""]" + maptext = "ПОКАЗАТЬ ОПРОСЫ[hasnewpolls ? " (NEW!)" : ""]" /atom/movable/screen/text/lobby/clickable/polls/Click() . = ..() diff --git a/code/_onclick/hud/screen_objects/screen_objects.dm b/code/_onclick/hud/screen_objects/screen_objects.dm index 163705af29a..33a4cbd4420 100644 --- a/code/_onclick/hud/screen_objects/screen_objects.dm +++ b/code/_onclick/hud/screen_objects/screen_objects.dm @@ -395,9 +395,12 @@ icon = 'icons/mob/screen/health.dmi' /atom/movable/screen/healths/alien - icon = 'icons/mob/screen/alien.dmi' + icon = 'icons/mob/screen/alien_better.dmi' screen_loc = ui_alien_health +/atom/movable/screen/healths/alien/larva + screen_loc = ui_alien_health_larva // it's in the position of plasma hud, as larva has no plasma hud as such + /atom/movable/screen/stamina_hud icon = 'icons/mob/screen/health.dmi' name = "stamina" diff --git a/code/_onclick/hud/xeno/larva.dm b/code/_onclick/hud/xeno/larva.dm index f62626f5226..793b6452470 100644 --- a/code/_onclick/hud/xeno/larva.dm +++ b/code/_onclick/hud/xeno/larva.dm @@ -1,4 +1,3 @@ -/* RUTGMC DELETION /datum/hud/larva/New(mob/living/carbon/xenomorph/larva/owner, ui_style, ui_color, ui_alpha = 230) ..() var/atom/movable/screen/using @@ -13,11 +12,14 @@ using.alpha = ui_alpha infodisplay += using - healths = new /atom/movable/screen/healths/alien() + alien_evolve_display = new /atom/movable/screen/alien/evolvehud() + alien_evolve_display.alpha = ui_alpha + infodisplay += alien_evolve_display + + healths = new /atom/movable/screen/healths/alien/larva() healths.alpha = ui_alpha infodisplay += healths locate_leader = new /atom/movable/screen/alien/queen_locator() locate_leader.alpha = ui_alpha infodisplay += locate_leader -*/ diff --git a/code/_onclick/hud/xeno/xeno.dm b/code/_onclick/hud/xeno/xeno.dm index efe2f6183c3..e9e8e3cf77e 100644 --- a/code/_onclick/hud/xeno/xeno.dm +++ b/code/_onclick/hud/xeno/xeno.dm @@ -1,5 +1,5 @@ /atom/movable/screen/alien - icon = 'icons/mob/screen/alien.dmi' + icon = 'icons/mob/screen/alien_better.dmi' /atom/movable/screen/alien/Click() if(!isxeno(usr)) @@ -42,9 +42,26 @@ /atom/movable/screen/alien/plasmadisplay name = "plasma stored" - icon_state = "power_display2" + icon_state = "power_display_20" screen_loc = ui_alienplasmadisplay +/atom/movable/screen/alien/evolvehud + name = "Evolve Status" + desc = "Click for evolve panel." + icon_state = "evolve_empty" + screen_loc = ui_evolvehud + +/atom/movable/screen/alien/evolvehud/Click() + . = ..() + if(!.) + return + var/mob/living/carbon/xenomorph/X = usr + X.Evolve() + +/atom/movable/screen/alien/sunderhud + icon_state = "sunder0" + screen_loc = ui_sunderhud + /datum/hud/alien/New(mob/living/carbon/xenomorph/owner, ui_style, ui_color, ui_alpha = 230) ..() var/atom/movable/screen/using @@ -123,6 +140,14 @@ locate_leader.alpha = ui_alpha infodisplay += locate_leader + alien_evolve_display = new /atom/movable/screen/alien/evolvehud() + alien_evolve_display.alpha = ui_alpha + infodisplay += alien_evolve_display + + alien_sunder_display = new /atom/movable/screen/alien/sunderhud() + alien_sunder_display.alpha = ui_alpha + infodisplay += alien_sunder_display + pull_icon = new /atom/movable/screen/pull() pull_icon.icon = 'icons/mob/screen/alien.dmi' pull_icon.screen_loc = ui_above_movement diff --git a/modular_RUtgmc/code/_onclick/hud/yautja.dm b/code/_onclick/hud/yautja.dm similarity index 91% rename from modular_RUtgmc/code/_onclick/hud/yautja.dm rename to code/_onclick/hud/yautja.dm index 75faa710695..c07c96597a3 100644 --- a/modular_RUtgmc/code/_onclick/hud/yautja.dm +++ b/code/_onclick/hud/yautja.dm @@ -2,7 +2,7 @@ . = ..() pred_power_icon = new /atom/movable/screen() - pred_power_icon.icon = 'modular_RUtgmc/icons/mob/screen/yautja.dmi' + pred_power_icon.icon = 'icons/mob/screen/yautja.dmi' pred_power_icon.icon_state = "powerbar10" pred_power_icon.name = "bracer power stored" pred_power_icon.screen_loc = ui_predator_power diff --git a/code/_onclick/xeno.dm b/code/_onclick/xeno.dm index f5b3d560a7d..abb2327d679 100644 --- a/code/_onclick/xeno.dm +++ b/code/_onclick/xeno.dm @@ -39,3 +39,24 @@ /atom/proc/attack_hivemind(mob/living/carbon/xenomorph/hivemind/attacker) return + + + +/mob/living/carbon/xenomorph/facehugger/UnarmedAttack(atom/A, has_proximity, modifiers) + if(lying_angle) + return FALSE + if(isclosedturf(get_turf(src)) && !iswallturf(A)) //If we are on a closed turf (e.g. in a wall) we can't attack anything, except walls (or well, resin walls really) so we can't make ourselves be stuck. + balloon_alert(src, "Cannot reach") + return FALSE + if(!(isopenturf(A) || istype(A, /obj/alien/weeds))) //We don't care about open turfs; they don't trigger our melee click cooldown + changeNext_move(xeno_caste ? xeno_caste.attack_delay : CLICK_CD_MELEE) + if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED)) + return FALSE + + var/atom/S = A.handle_barriers(src) + S.attack_facehugger(src, xeno_caste.melee_damage * xeno_melee_damage_modifier, isrightclick = islist(modifiers) ? modifiers["right"] : FALSE) + GLOB.round_statistics.xeno_unarmed_attacks++ + SSblackbox.record_feedback("tally", "round_statistics", 1, "xeno_unarmed_attacks") + +/atom/proc/attack_facehugger(mob/living/carbon/xenomorph/facehugger/F, damage_amount = F.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) + return diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index 5838c3d6287..57cb1fd0361 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -195,3 +195,13 @@ /datum/config_entry/keyed_list/vv_edit_var(var_name, var_value) return var_name != "splitter" && ..() + +/datum/config_entry/number/pred_round + config_entry_value = 0 + min_val = 0 + max_val = 2 + +/datum/config_entry/number/pred_round_chance + config_entry_value = 0 + min_val = 0 + max_val = 100 diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 746170d5ee1..6c0c478e361 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -1,3 +1,7 @@ +/datum/config_entry/flag/tgs_event_approval_messaging + +/datum/config_entry/flag/tgs_adminless_messaging + /* Basics, the most important. */ diff --git a/modular_RUtgmc/code/controllers/subsystem/cellauto.dm b/code/controllers/subsystem/cellauto.dm similarity index 100% rename from modular_RUtgmc/code/controllers/subsystem/cellauto.dm rename to code/controllers/subsystem/cellauto.dm diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index 97c0f36c360..dac7cb16e2f 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -293,6 +293,7 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table var/affected var/last_insert_id + var/no_auto_delete = FALSE var/list/item //list of data values populated by NextRow() /datum/db_query/New(connection, sql, arguments) diff --git a/modular_RUtgmc/code/controllers/subsystem/hunt_system.dm b/code/controllers/subsystem/hunt_system.dm similarity index 100% rename from modular_RUtgmc/code/controllers/subsystem/hunt_system.dm rename to code/controllers/subsystem/hunt_system.dm diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 11f17edc545..8bfbd2c4b69 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -267,7 +267,12 @@ SUBSYSTEM_DEF(job) //If we joined at roundstart we should be positioned at our workstation var/turf/spawn_turf if(!joined_late || job.job_flags & JOB_FLAG_OVERRIDELATEJOINSPAWN) - spawn_turf = job.return_spawn_turf() + var/datum/job/terragov/squad/marine = job + var/mob/living/carbon/human/h = new_character + if(!ishuman(new_character) || !h.assigned_squad || !length_char(GLOB.start_squad_landmarks_list)) + spawn_turf = job.return_spawn_turf(player, player.client) + else + spawn_turf = marine.spawn_by_squads(h.assigned_squad.id) if(spawn_turf) SendToAtom(new_character, spawn_turf) else @@ -339,9 +344,14 @@ SUBSYSTEM_DEF(job) SendToAtom(M, pick(GLOB.latejoinsom)) return else - if(length(GLOB.latejoin)) - SendToAtom(M, pick(GLOB.latejoin)) + var/mob/living/carbon/human/h = M + if(h.assigned_squad && length_char(GLOB.latejoin_squad_landmarks_list)) + SendToAtom(M, pick(GLOB.latejoin_squad_landmarks_list[h.assigned_squad.id])) return + else + if(length_char(GLOB.latejoin)) + SendToAtom(M, pick(GLOB.latejoin)) + return message_admins("Unable to send mob [M] to late join!") CRASH("Unable to send mob [M] to late join!") diff --git a/code/controllers/subsystem/minimaps.dm b/code/controllers/subsystem/minimaps.dm index 83e60b714b2..2916771fdc7 100644 --- a/code/controllers/subsystem/minimaps.dm +++ b/code/controllers/subsystem/minimaps.dm @@ -629,6 +629,61 @@ SUBSYSTEM_DEF(minimaps) else minimap_displayed = FALSE +/datum/controller/subsystem/minimaps/proc/add_zlevel(zlevel) + minimaps_by_z["[zlevel]"] = new /datum/hud_displays + var/icon/icon_gen = new('icons/UI_icons/minimap.dmi') //480x480 blank icon template for drawing on the map + for(var/xval = 1 to world.maxx) + for(var/yval = 1 to world.maxy) //Scan all the turfs and draw as needed + var/turf/location = locate(xval,yval,zlevel) + if(isspaceturf(location)) + continue + if(location.density) + icon_gen.DrawBox(location.minimap_color, xval, yval) + continue + var/atom/movable/alttarget = (locate(/obj/machinery/door) in location) || (locate(/obj/structure/fence) in location) + if(alttarget) + icon_gen.DrawBox(alttarget.minimap_color, xval, yval) + continue + var/area/turfloc = location.loc + if(turfloc.minimap_color) + icon_gen.DrawBox(BlendRGB(location.minimap_color, turfloc.minimap_color, 0.5), xval, yval) + continue + icon_gen.DrawBox(location.minimap_color, xval, yval) + icon_gen.Scale(480*2,480*2) //scale it up x2 to make it easer to see + icon_gen.Crop(1, 1, min(icon_gen.Width(), 480), min(icon_gen.Height(), 480)) //then cut all the empty pixels + //generation is done, now we need to center the icon to someones view, this can be left out if you like it ugly and will halve SSinit time + //calculate the offset of the icon + var/largest_x = 0 + var/smallest_x = SCREEN_PIXEL_SIZE + var/largest_y = 0 + var/smallest_y = SCREEN_PIXEL_SIZE + for(var/xval=1 to SCREEN_PIXEL_SIZE step 2) //step 2 is twice as fast :) + for(var/yval=1 to SCREEN_PIXEL_SIZE step 2) //keep in mind 1 wide giant straight lines will offset wierd but you shouldnt be mapping those anyway right??? + if(!icon_gen.GetPixel(xval, yval)) + continue + if(xval > largest_x) + largest_x = xval + else if(xval < smallest_x) + smallest_x = xval + if(yval > largest_y) + largest_y = yval + else if(yval < smallest_y) + smallest_y = yval + + minimaps_by_z["[zlevel]"].x_offset = FLOOR((SCREEN_PIXEL_SIZE-largest_x-smallest_x)/2, 1) + minimaps_by_z["[zlevel]"].y_offset = FLOOR((SCREEN_PIXEL_SIZE-largest_y-smallest_y)/2, 1) + + icon_gen.Shift(EAST, minimaps_by_z["[zlevel]"].x_offset) + icon_gen.Shift(NORTH, minimaps_by_z["[zlevel]"].y_offset) + + minimaps_by_z["[zlevel]"].hud_image = icon_gen //done making the image! + +/datum/action/minimap/yautja + minimap_flags = MINIMAP_FLAG_XENO|MINIMAP_FLAG_MARINE|MINIMAP_FLAG_MARINE_SOM|MINIMAP_FLAG_YAUTJA + marker_flags = MINIMAP_FLAG_YAUTJA + +/datum/action/minimap/observer + minimap_flags = MINIMAP_FLAG_XENO|MINIMAP_FLAG_MARINE|MINIMAP_FLAG_MARINE_SOM|MINIMAP_FLAG_EXCAVATION_ZONE|MINIMAP_FLAG_YAUTJA /datum/action/minimap/xeno diff --git a/code/controllers/subsystem/points.dm b/code/controllers/subsystem/points.dm index 9f9168436de..269dacff712 100644 --- a/code/controllers/subsystem/points.dm +++ b/code/controllers/subsystem/points.dm @@ -31,6 +31,17 @@ SUBSYSTEM_DEF(points) var/list/request_shopping_cart = list() +//Это явно должно быть выше, поправьте если разберётесь. +/datum/controller/subsystem/points + ///Assoc list of personal supply points + var/personal_supply_points = list() + ///Personal supply points gain modifier + var/psp_multiplier = 0.075 + ///Personal supply points limit + var/psp_limit = 600 + ///Var used to calculate points difference between updates + var/supply_points_old = 0 + /datum/controller/subsystem/points/Recover() ordernum = SSpoints.ordernum supply_packs = SSpoints.supply_packs @@ -78,6 +89,31 @@ SUBSYSTEM_DEF(points) for(var/key in supply_points) supply_points[key] += SUPPLY_POINT_RATE / (1 MINUTES / wait) + for(var/key in supply_points) + for(var/mob/living/account in GLOB.alive_human_list_faction[key]) + if(account.job.title in GLOB.jobs_marines) + personal_supply_points[account.ckey] = min(personal_supply_points[account.ckey] + max(supply_points[key] - supply_points_old, 0) * psp_multiplier, psp_limit) + supply_points_old = supply_points[key] + +/datum/controller/subsystem/points/proc/buy_using_psp(mob/living/user) + var/cost = 0 + var/list/ckey_shopping_cart = request_shopping_cart[user.ckey] + if(!length_char(ckey_shopping_cart)) + return + if(length_char(ckey_shopping_cart) > 20) + return + for(var/i in ckey_shopping_cart) + var/datum/supply_packs/SP = supply_packs[i] + cost += SP.cost * ckey_shopping_cart[i] + if(cost > personal_supply_points[user.ckey]) + return + var/list/datum/supply_order/orders = process_cart(user, ckey_shopping_cart) + for(var/i in 1 to length_char(orders)) + orders[i].authorised_by = user.real_name + LAZYADDASSOCSIMPLE(shoppinglist[user.faction], "[orders[i].id]", orders[i]) + personal_supply_points[user.ckey] -= cost + ckey_shopping_cart.Cut() + ///Add amount of psy points to the selected hive only if the gamemode support psypoints /datum/controller/subsystem/points/proc/add_psy_points(hivenumber, amount) if(!CHECK_BITFIELD(SSticker.mode.flags_round_type, MODE_PSY_POINTS)) diff --git a/modular_RUtgmc/code/controllers/subsystem/predships.dm b/code/controllers/subsystem/predships.dm similarity index 100% rename from modular_RUtgmc/code/controllers/subsystem/predships.dm rename to code/controllers/subsystem/predships.dm diff --git a/code/controllers/subsystem/processing/resinshaping.dm b/code/controllers/subsystem/processing/resinshaping.dm index dcb72712ccf..39ba9cb3fe5 100644 --- a/code/controllers/subsystem/processing/resinshaping.dm +++ b/code/controllers/subsystem/processing/resinshaping.dm @@ -1,14 +1,27 @@ -/* RUTGMC DELETION +/// Controls how many quickbuilds each xenomorph gets. +#define QUICKBUILD_STRUCTURES_PER_XENO 600 + SUBSYSTEM_DEF(resinshaping) name = "Resin Shaping" flags = SS_NO_FIRE + /// A list used to count how many buildings were built by player ckey , counter[ckey] = [build_count] + var/list/xeno_builds_counter = list() /// Counter for quickbuild points, as long as this is above 0 building is instant. var/list/quickbuild_points_by_hive = list() + /// Counter for total structures built + var/total_structures_built = 0 + /// Counter for total refunds of structures + var/total_structures_refunded = 0 /// Whether or not quickbuild is enabled. Set to FALSE when the game starts. var/active = TRUE /datum/controller/subsystem/resinshaping/stat_entry() - return ..("QUICKBUILD POINTS (NORMAL HIVE)=[quickbuild_points_by_hive[XENO_HIVE_NORMAL]]") + if(SSticker.mode?.quickbuild_points_flags & MODE_PERSONAL_QUICKBUILD_POINTS) + return "BUILT=[total_structures_built] REFUNDED=[total_structures_refunded]" + else if(SSticker.mode?.quickbuild_points_flags & MODE_GENERAL_QUICKBUILD_POINTS) + return "QUICKBUILD POINTS (NORMAL HIVE)=[quickbuild_points_by_hive[XENO_HIVE_NORMAL]]" + else + return "OFFLINE" /datum/controller/subsystem/resinshaping/proc/toggle_off() SIGNAL_HANDLER @@ -16,8 +29,64 @@ SUBSYSTEM_DEF(resinshaping) UnregisterSignal(SSdcs, list(COMSIG_GLOB_OPEN_SHUTTERS_EARLY, COMSIG_GLOB_OPEN_TIMED_SHUTTERS_LATE,COMSIG_GLOB_OPEN_TIMED_SHUTTERS_XENO_HIVEMIND,COMSIG_GLOB_TADPOLE_LAUNCHED,COMSIG_GLOB_DROPPOD_LANDED)) /datum/controller/subsystem/resinshaping/Initialize() + RegisterSignals(SSdcs, list(COMSIG_GLOB_OPEN_SHUTTERS_EARLY, COMSIG_GLOB_OPEN_TIMED_SHUTTERS_LATE,COMSIG_GLOB_OPEN_TIMED_SHUTTERS_XENO_HIVEMIND,COMSIG_GLOB_TADPOLE_LAUNCHED,COMSIG_GLOB_DROPPOD_LANDED), PROC_REF(toggle_off)) for(var/hivenumber in GLOB.hive_datums) quickbuild_points_by_hive[hivenumber] = SSmapping.configs[GROUND_MAP].quickbuilds - RegisterSignals(SSdcs, list(COMSIG_GLOB_OPEN_SHUTTERS_EARLY, COMSIG_GLOB_OPEN_TIMED_SHUTTERS_LATE,COMSIG_GLOB_OPEN_TIMED_SHUTTERS_XENO_HIVEMIND,COMSIG_GLOB_TADPOLE_LAUNCHED,COMSIG_GLOB_DROPPOD_LANDED), PROC_REF(toggle_off)) return SS_INIT_SUCCESS -*/ + +/// Retrieves a mob's building points using their ckey. Only works for mobs with clients. +/datum/controller/subsystem/resinshaping/proc/get_building_points(mob/living/carbon/xenomorph/the_builder) + if(SSticker.mode?.quickbuild_points_flags & MODE_PERSONAL_QUICKBUILD_POINTS) + var/player_key = "[the_builder.client?.ckey]" + if(!player_key) + return 0 + return QUICKBUILD_STRUCTURES_PER_XENO - xeno_builds_counter[player_key] + else if(SSticker.mode?.quickbuild_points_flags & MODE_GENERAL_QUICKBUILD_POINTS) + return quickbuild_points_by_hive[the_builder.get_xeno_hivenumber()] + +/// Increments a mob buildings count , using their ckey. +/datum/controller/subsystem/resinshaping/proc/increment_build_counter(mob/living/carbon/xenomorph/the_builder) + if(SSticker.mode?.quickbuild_points_flags & MODE_PERSONAL_QUICKBUILD_POINTS) + var/player_key = "[the_builder.client?.ckey]" + if(!player_key) + return + xeno_builds_counter[player_key]++ + total_structures_built++ + else if(SSticker.mode?.quickbuild_points_flags & MODE_GENERAL_QUICKBUILD_POINTS) + quickbuild_points_by_hive[the_builder.get_xeno_hivenumber()]-- + +/// Decrements a mob buildings count , using their ckey. +/datum/controller/subsystem/resinshaping/proc/decrement_build_counter(mob/living/carbon/xenomorph/the_builder) + if(SSticker.mode?.quickbuild_points_flags & MODE_PERSONAL_QUICKBUILD_POINTS) + var/player_key = "[the_builder.client?.ckey]" + if(!player_key) + return 0 + xeno_builds_counter[player_key]-- + total_structures_refunded++ + total_structures_built-- + else if(SSticker.mode?.quickbuild_points_flags & MODE_GENERAL_QUICKBUILD_POINTS) + quickbuild_points_by_hive[the_builder.hivenumber]++ + +/// Returns a TRUE if a structure should be refunded and instant deconstructed , or false if not +/datum/controller/subsystem/resinshaping/proc/should_refund(atom/structure, mob/living/carbon/xenomorph/the_demolisher) + if(SSticker.mode?.quickbuild_points_flags & MODE_PERSONAL_QUICKBUILD_POINTS) + var/player_key = "[the_demolisher.client?.ckey]" + // could be a AI mob thats demolishing without a player key. + if(!player_key || !active) + return FALSE + if(istype(structure, /obj/alien/resin/sticky) && !istype(structure,/obj/alien/resin/sticky/thin)) + return TRUE + if(istype(structure, /turf/closed/wall/resin)) + return TRUE + if(istype(structure, /obj/structure/mineral_door/resin)) + return TRUE + if(istype(structure, /obj/structure/bed/nest)) + return TRUE + return FALSE + else if(SSticker.mode?.quickbuild_points_flags & MODE_GENERAL_QUICKBUILD_POINTS) + if(active) + return TRUE + return FALSE + +#undef QUICKBUILD_STRUCTURES_PER_XENO + diff --git a/code/datums/actions/action.dm b/code/datums/actions/action.dm index 6ccb7b23b09..505969808b3 100644 --- a/code/datums/actions/action.dm +++ b/code/datums/actions/action.dm @@ -48,9 +48,9 @@ KEYBINDINGS visual_references[VREF_MUTABLE_MAPTEXT] = maptext_list switch(action_type) if(ACTION_TOGGLE) - visual_references[VREF_MUTABLE_ACTIVE_FRAME] = mutable_appearance('modular_RUtgmc/icons/mob/actions.dmi', "active", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE) + visual_references[VREF_MUTABLE_ACTIVE_FRAME] = mutable_appearance('icons/mob/actions.dmi', "active", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE) if(ACTION_SELECT) - visual_references[VREF_MUTABLE_SELECTED_FRAME] = mutable_appearance('modular_RUtgmc/icons/mob/actions.dmi', "selected_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE) + visual_references[VREF_MUTABLE_SELECTED_FRAME] = mutable_appearance('icons/mob/actions.dmi', "selected_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE) visual_references[VREF_MUTABLE_ACTION_STATE] = mutable_appearance(action_icon, action_icon_state, HUD_LAYER, HUD_PLANE) button.add_overlay(visual_references[VREF_MUTABLE_ACTION_STATE]) diff --git a/code/datums/actions/observer_action.dm b/code/datums/actions/observer_action.dm index ba7c0325a8e..33640aa7f2d 100644 --- a/code/datums/actions/observer_action.dm +++ b/code/datums/actions/observer_action.dm @@ -105,3 +105,95 @@ return mode.player_respawn(owner) + +/datum/action/observer_action/find_facehugger_spawn + name = "Spawn as Facehugger" + action_icon = 'icons/Xeno/actions.dmi' + action_icon_state = "hugger_set" + +/datum/action/observer_action/find_facehugger_spawn/action_activate() + var/mob/dead/observer/dead_owner = owner + if(GLOB.key_to_time_of_death[owner.key] + TIME_BEFORE_TAKING_BODY > world.time && !dead_owner.started_as_observer) + to_chat(owner, span_warning("You died too recently to be able to take a new mob.")) + return + + var/list/spawn_point = list() + var/list/area_names = list() + var/list/area_namecounts = list() + var/name + + for(var/mob/living/carbon/xenomorph/potential_xeno AS in GLOB.alive_xeno_list) + if(dead_owner.z != potential_xeno.z) + continue + if(!isxenocarrier(potential_xeno)) + continue + + var/mob/living/carbon/xenomorph/carrier/selected_carrier = potential_xeno + if(selected_carrier.huggers_reserved >= selected_carrier.huggers) + continue + + name = selected_carrier.name + spawn_point[name] = potential_xeno + + for(var/obj/alien/egg/hugger/potential_egg AS in GLOB.xeno_egg_hugger) + if(dead_owner.z != potential_egg.z) + continue + if(potential_egg.maturity_stage != potential_egg.stage_ready_to_burst) + continue + if(!potential_egg.hugger_type) + continue + if(istype(potential_egg, /obj/alien/egg/hugger/forsaken)) + continue + + var/area_egg = get_area(potential_egg) + if(area_egg in area_names) + area_namecounts[area_egg]++ + name = "[potential_egg.name] at [area_egg] ([area_namecounts[area_egg]])" + else + area_names.Add(area_egg) + area_namecounts[area_egg] = 1 + name = "[potential_egg.name] at [get_area(potential_egg)]" + + spawn_point[name] = potential_egg + + if(!length_char(spawn_point)) + to_chat(owner, span_warning("There are no spawn points for facehugger on your Z-level.")) + return + + var/selected = tgui_input_list(usr, "Please select a spawn point:", "Spawn as Facehugger", spawn_point) + if(!selected) + return + + var/target = spawn_point[selected] + dead_owner.abstract_move(get_turf(target)) + +/datum/action/observer_action/join_predator + name = "Join the Hunt" + action_icon_state = "pred_ghost" + +/datum/action/observer_action/join_predator/give_action(mob/M) + var/owner_ckey = M.client?.ckey + if(!owner_ckey) + return + + if(!(GLOB.roles_whitelist[owner_ckey] & WHITELIST_PREDATOR)) + return + + if(!SSticker.mode || !(SSticker.mode.flags_round_type & MODE_PREDATOR)) + RegisterSignal(SSdcs, COMSIG_GLOB_PREDATOR_ROUND_TOGGLED, PROC_REF(handle_button_status_visuals)) + + . = ..() + +/datum/action/observer_action/join_predator/can_use_action() + if(!SSticker.mode || !(SSticker.mode.flags_round_type & MODE_PREDATOR)) + return FALSE + return TRUE + +/datum/action/observer_action/join_predator/action_activate() + var/mob/dead/observer/activator = owner + if(SSticker.current_state < GAME_STATE_PLAYING || !SSticker.mode) + to_chat(activator, span_warning("The game hasn't started yet!")) + return + + if(SSticker.mode.check_predator_late_join(activator)) + SSticker.mode.join_predator(activator) diff --git a/code/datums/jobs/job/xenomorph.dm b/code/datums/jobs/job/xenomorph.dm index fc911cd9532..cd44a5baa6d 100644 --- a/code/datums/jobs/job/xenomorph.dm +++ b/code/datums/jobs/job/xenomorph.dm @@ -53,7 +53,7 @@ /datum/job/xenomorph/after_spawn(mob/living/carbon/xenomorph/xeno, mob/M, latejoin) . = ..() - SSminimaps.add_marker(xeno, MINIMAP_FLAG_XENO, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, xeno.xeno_caste.minimap_icon)) //RUTGMC edit - icon change + SSminimaps.add_marker(xeno, MINIMAP_FLAG_XENO, image('icons/UI_icons/map_blips.dmi', null, xeno.xeno_caste.minimap_icon)) //RUTGMC edit - icon change /datum/job/xenomorph/queen title = ROLE_XENO_QUEEN diff --git a/code/game/objects/effects/landmarks/excavation_site_spawner.dm b/code/game/objects/effects/landmarks/excavation_site_spawner.dm index 300a60c4f55..68443aa758b 100644 --- a/code/game/objects/effects/landmarks/excavation_site_spawner.dm +++ b/code/game/objects/effects/landmarks/excavation_site_spawner.dm @@ -17,7 +17,7 @@ /obj/effect/landmark/excavation_site_spawner/proc/spawn_excavation_site() rewards_typepath = pick(rewards_datums) if(initial(rewards_typepath.map_icon)) - SSminimaps.add_marker(src, MINIMAP_FLAG_EXCAVATION_ZONE, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, initial(rewards_typepath.map_icon))) // RU TGMC edit - map blips + SSminimaps.add_marker(src, MINIMAP_FLAG_EXCAVATION_ZONE, image('icons/UI_icons/map_blips.dmi', null, initial(rewards_typepath.map_icon))) // RU TGMC edit - map blips ///Perform an excavation and revert the spawner to inactive state /obj/effect/landmark/excavation_site_spawner/proc/excavate_site() diff --git a/code/game/objects/machinery/miner.dm b/code/game/objects/machinery/miner.dm index 6e09369e27e..02eaab59f7a 100644 --- a/code/game/objects/machinery/miner.dm +++ b/code/game/objects/machinery/miner.dm @@ -71,7 +71,7 @@ **/ /obj/machinery/miner/proc/init_marker() var/marker_icon = "miner_[mineral_value >= PLATINUM_CRATE_SELL_AMOUNT ? "platinum" : "phoron"]_on" - SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, marker_icon)) //RU TGMC edit + SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, marker_icon)) //RU TGMC edit /obj/machinery/miner/update_icon() switch(miner_status) @@ -288,7 +288,7 @@ stop_processing() SSminimaps.remove_marker(src) var/marker_icon = "miner_[mineral_value >= PLATINUM_CRATE_SELL_AMOUNT ? "platinum" : "phoron"]_off" - SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, marker_icon)) //RUTGMC edit - icon change + SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, marker_icon)) //RUTGMC edit - icon change return if(add_tick >= required_ticks) if(miner_upgrade_type == MINER_AUTOMATED) diff --git a/code/game/objects/machinery/squad_supply/supply_beacon.dm b/code/game/objects/machinery/squad_supply/supply_beacon.dm index f4df56df68b..b727095e22c 100644 --- a/code/game/objects/machinery/squad_supply/supply_beacon.dm +++ b/code/game/objects/machinery/squad_supply/supply_beacon.dm @@ -63,7 +63,7 @@ marker_flags = MINIMAP_FLAG_MARINE //RUTGMC EDIT CHANGE BEGIN - ORBITAL_BEACON //SSminimaps.add_marker(src, marker_flags, image('icons/UI_icons/map_blips.dmi', null, "supply")) RUTGMC EDIT - ORIGINAL - SSminimaps.add_marker(src, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, beacon_mini_icon, ABOVE_FLOAT_LAYER)) + SSminimaps.add_marker(src, marker_flags, image('icons/UI_icons/map_blips.dmi', null, beacon_mini_icon, ABOVE_FLOAT_LAYER)) //RUTGMC EDIT CHANGE END update_icon() return TRUE diff --git a/code/modules/events/intel_computer.dm b/code/modules/events/intel_computer.dm index a8a58cd2913..4a4bdd00d7e 100644 --- a/code/modules/events/intel_computer.dm +++ b/code/modules/events/intel_computer.dm @@ -20,6 +20,6 @@ /datum/round_event/intel_computer/proc/activate(obj/machinery/computer/intel_computer/I) I.active = TRUE - SSminimaps.add_marker(I, MINIMAP_FLAG_ALL, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "intel", ABOVE_FLOAT_LAYER)) + SSminimaps.add_marker(I, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, "intel", ABOVE_FLOAT_LAYER)) priority_announce("Our data sifting algorithm has detected valuable classified information on a access point in [get_area(I)]. Should this data be recovered by ground forces, a reward will be given in the form of increased assets.", title = "TGMC Intel Division") xeno_message("We sense a looming threat from [get_area(I)]. We must keep the hosts away from there.") diff --git a/code/modules/mob/living/carbon/xenomorph/abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities.dm index faed0a4052d..238b6766afa 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities.dm @@ -884,11 +884,11 @@ if(X.layer != XENO_HIDING_LAYER) X.layer = XENO_HIDING_LAYER to_chat(X, span_notice("We are now hiding.")) - button.add_overlay(mutable_appearance('modular_RUtgmc/icons/Xeno/actions.dmi', "selected_purple_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE)) // RUTGMC edit - icon change + button.add_overlay(mutable_appearance('icons/Xeno/actions.dmi', "selected_purple_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE)) // RUTGMC edit - icon change else X.layer = MOB_LAYER to_chat(X, span_notice("We have stopped hiding.")) - button.cut_overlay(mutable_appearance('modular_RUtgmc/icons/Xeno/actions.dmi', "selected_purple_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE)) // RUTGMC edit - icon change + button.cut_overlay(mutable_appearance('icons/Xeno/actions.dmi', "selected_purple_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE)) // RUTGMC edit - icon change //Neurotox Sting diff --git a/code/modules/mob/living/carbon/xenomorph/castes/defiler/abilities_defiler.dm b/code/modules/mob/living/carbon/xenomorph/castes/defiler/abilities_defiler.dm index ed117606f63..2098c30db06 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/defiler/abilities_defiler.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/defiler/abilities_defiler.dm @@ -403,11 +403,11 @@ // This is cursed, don't copy this code its the WRONG way to do this. // TODO: generate this from GLOB.defiler_toxin_type_list var/static/list/defiler_toxin_images_list = list( -// DEFILER_NEUROTOXIN = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = DEFILER_NEUROTOXIN), //RUTGMC edit - icon change //NEURO REMOVAL - DEFILER_HEMODILE = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = DEFILER_HEMODILE), //RUTGMC edit - icon change - DEFILER_TRANSVITOX = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = DEFILER_TRANSVITOX), //RUTGMC edit - icon change - DEFILER_OZELOMELYN = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = DEFILER_OZELOMELYN), //RUTGMC edit - icon change - DEFILER_ACID = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = DEFILER_ACID), //RUTGMC edit - icon change +// DEFILER_NEUROTOXIN = image('icons/Xeno/actions.dmi', icon_state = DEFILER_NEUROTOXIN), //RUTGMC edit - icon change //NEURO REMOVAL + DEFILER_HEMODILE = image('icons/Xeno/actions.dmi', icon_state = DEFILER_HEMODILE), //RUTGMC edit - icon change + DEFILER_TRANSVITOX = image('icons/Xeno/actions.dmi', icon_state = DEFILER_TRANSVITOX), //RUTGMC edit - icon change + DEFILER_OZELOMELYN = image('icons/Xeno/actions.dmi', icon_state = DEFILER_OZELOMELYN), //RUTGMC edit - icon change + DEFILER_ACID = image('icons/Xeno/actions.dmi', icon_state = DEFILER_ACID), //RUTGMC edit - icon change ) var/toxin_choice = show_radial_menu(owner, owner, defiler_toxin_images_list, radius = 48) if(!toxin_choice) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/hunter/abilities_hunter.dm b/code/modules/mob/living/carbon/xenomorph/castes/hunter/abilities_hunter.dm index 1c98d43adf8..37bcd6a62f4 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/hunter/abilities_hunter.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/hunter/abilities_hunter.dm @@ -297,7 +297,7 @@ RU TGMC EDIT */ owner.layer = MOB_LAYER var/datum/action/ability/xeno_action/xenohide/hide_action = owner.actions_by_path[/datum/action/ability/xeno_action/xenohide] //hide_action?.button?.cut_overlay(mutable_appearance('icons/Xeno/actions.dmi', "selected_purple_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE)) // Removes Hide action icon border // ORIGINAL - hide_action?.button?.cut_overlay(mutable_appearance('modular_RUtgmc/icons/Xeno/actions.dmi', "selected_purple_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE)) // RUTGMC EDIT + hide_action?.button?.cut_overlay(mutable_appearance('icons/Xeno/actions.dmi', "selected_purple_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE)) // RUTGMC EDIT if(owner.buckled) owner.buckled.unbuckle_mob(owner) RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(movement_fx)) diff --git a/code/modules/mob/living/carbon/xenomorph/xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/xenomorph.dm index bbed0e3066a..ba747bb91a1 100644 --- a/code/modules/mob/living/carbon/xenomorph/xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/xenomorph.dm @@ -76,7 +76,7 @@ if(CONFIG_GET(flag/xenos_on_strike)) replace_by_ai() if(z) //Larva are initiated in null space - SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, xeno_caste.minimap_icon)) //RUTGMC edit - icon change + SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('icons/UI_icons/map_blips.dmi', null, xeno_caste.minimap_icon)) //RUTGMC edit - icon change handle_weeds_on_movement() AddElement(/datum/element/footstep, footstep_type, mob_size >= MOB_SIZE_BIG ? 0.8 : 0.5) diff --git a/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm b/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm index 1fcb5053c17..a6d8a35f5fc 100644 --- a/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm +++ b/code/modules/mob/living/carbon/xenomorph/xenoprocs.dm @@ -556,9 +556,9 @@ return SSminimaps.remove_marker(src) - var/image/blip = image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, xeno_caste.minimap_icon) //RUTGMC edit - icon change + var/image/blip = image('icons/UI_icons/map_blips.dmi', null, xeno_caste.minimap_icon) //RUTGMC edit - icon change if(makeleader) - blip.overlays += image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, xeno_caste.minimap_leadered_overlay) //RUTGMC edit - icon change + blip.overlays += image('icons/UI_icons/map_blips.dmi', null, xeno_caste.minimap_leadered_overlay) //RUTGMC edit - icon change SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, blip) ///updates the xeno's glow, based on the ability being used diff --git a/code/modules/power/groundmap_geothermal.dm b/code/modules/power/groundmap_geothermal.dm index fcb7a3d77fe..6a5fa16eda4 100644 --- a/code/modules/power/groundmap_geothermal.dm +++ b/code/modules/power/groundmap_geothermal.dm @@ -60,15 +60,15 @@ GLOBAL_VAR_INIT(generators_on_ground, 0) //RUTGMC ADDITION BEGIN SSminimaps.remove_marker(src) if(!corrupted && !is_on) - SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "generator_off")) + SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, "generator_off")) if(corrupted) - SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "generator_corrupt")) + SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, "generator_corrupt")) //RUTGMC ADDITION END switch(buildstate) if(GEOTHERMAL_NO_DAMAGE) if(is_on) desc = "A thermoelectric generator sitting atop a borehole dug deep in the planet's surface. It generates energy by boiling the plasma steam that rises from the well.\nIt is old technology and has a large failure rate, and must be repaired frequently.\nIt is currently on, and beeping randomly amid faint hisses of steam." - SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "generator_on")) //RU TGMC edit - map blips + SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, "generator_on")) //RU TGMC edit - map blips switch(power_gen_percent) if(25) icon_state = "on25" diff --git a/code/modules/xenomorph/xeno_structures.dm b/code/modules/xenomorph/xeno_structures.dm index 80bb255436b..d88d247bd1c 100644 --- a/code/modules/xenomorph/xeno_structures.dm +++ b/code/modules/xenomorph/xeno_structures.dm @@ -315,7 +315,7 @@ TUNNEL for(var/datum/atom_hud/xeno_tactical/xeno_tac_hud in GLOB.huds) //Add to the xeno tachud xeno_tac_hud.add_to_hud(src) hud_set_xeno_tunnel() - SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "xenotunnel", HIGH_FLOAT_LAYER)) // RU TGMC edit - map blips + SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('icons/UI_icons/map_blips.dmi', null, "xenotunnel", HIGH_FLOAT_LAYER)) // RU TGMC edit - map blips /obj/structure/xeno/tunnel/Destroy() var/turf/drop_loc = get_turf(src) @@ -888,7 +888,7 @@ TUNNEL ///Change minimap icon if silo is under attack or not /obj/structure/xeno/silo/proc/update_minimap_icon() SSminimaps.remove_marker(src) - SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "silo[warning ? "_warn" : "_passive"]", VERY_HIGH_FLOAT_LAYER)) // RU TGMC edit - map blips + SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('icons/UI_icons/map_blips.dmi', null, "silo[warning ? "_warn" : "_passive"]", VERY_HIGH_FLOAT_LAYER)) // RU TGMC edit - map blips /obj/structure/xeno/xeno_turret icon = 'icons/Xeno/acidturret.dmi' @@ -926,7 +926,7 @@ TUNNEL ///Change minimap icon if its firing or not firing /obj/structure/xeno/xeno_turret/proc/update_minimap_icon() SSminimaps.remove_marker(src) - SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "xeno_turret[firing ? "_firing" : "_passive"]")) // RU TGMC edit - map blips + SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('icons/UI_icons/map_blips.dmi', null, "xeno_turret[firing ? "_firing" : "_passive"]")) // RU TGMC edit - map blips /obj/structure/xeno/xeno_turret/Initialize(mapload, _hivenumber) . = ..() @@ -1239,7 +1239,7 @@ TUNNEL /obj/structure/xeno/pherotower/Initialize(mapload, _hivenumber) . = ..() - SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "phero", ABOVE_FLOAT_LAYER)) // RU TGMC edit - map blips + SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('icons/UI_icons/map_blips.dmi', null, "phero", ABOVE_FLOAT_LAYER)) // RU TGMC edit - map blips GLOB.hive_datums[hivenumber].pherotowers += src //Pheromone towers start off with recovery. @@ -1382,7 +1382,7 @@ TUNNEL ///Change minimap icon if spawner is under attack or not /obj/structure/xeno/spawner/proc/update_minimap_icon() SSminimaps.remove_marker(src) - SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "spawner[warning ? "_warn" : "_passive"]", , ABOVE_FLOAT_LAYER)) // RU TGMC edit - map blips + SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('icons/UI_icons/map_blips.dmi', null, "spawner[warning ? "_warn" : "_passive"]", , ABOVE_FLOAT_LAYER)) // RU TGMC edit - map blips /obj/structure/xeno/spawner/proc/on_spawn(list/squad) if(!isxeno(squad[length(squad)])) diff --git a/icons/UI_Icons/map_blips.dmi b/icons/UI_Icons/map_blips.dmi index ca03e1e015f..b19a391b8ee 100644 Binary files a/icons/UI_Icons/map_blips.dmi and b/icons/UI_Icons/map_blips.dmi differ diff --git a/icons/Xeno/actions.dmi b/icons/Xeno/actions.dmi index 3268e27c2c6..88ae58bd94e 100644 Binary files a/icons/Xeno/actions.dmi and b/icons/Xeno/actions.dmi differ diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index fedac4867e3..c50cd1e6954 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/modular_RUtgmc/icons/mob/hunter/r_predator.dmi b/icons/mob/hunter/r_predator.dmi similarity index 100% rename from modular_RUtgmc/icons/mob/hunter/r_predator.dmi rename to icons/mob/hunter/r_predator.dmi diff --git a/modular_RUtgmc/icons/mob/screen/alien_better.dmi b/icons/mob/screen/alien_better.dmi similarity index 100% rename from modular_RUtgmc/icons/mob/screen/alien_better.dmi rename to icons/mob/screen/alien_better.dmi diff --git a/icons/mob/screen/health.dmi b/icons/mob/screen/health.dmi index 550ea22c2ba..1026e92ef2e 100644 Binary files a/icons/mob/screen/health.dmi and b/icons/mob/screen/health.dmi differ diff --git a/modular_RUtgmc/icons/mob/screen/yautja.dmi b/icons/mob/screen/yautja.dmi similarity index 100% rename from modular_RUtgmc/icons/mob/screen/yautja.dmi rename to icons/mob/screen/yautja.dmi diff --git a/modular_RUtgmc/code/__HELPERS/matrices.dm b/modular_RUtgmc/code/__HELPERS/matrices.dm deleted file mode 100644 index 839568c0c5e..00000000000 --- a/modular_RUtgmc/code/__HELPERS/matrices.dm +++ /dev/null @@ -1,107 +0,0 @@ -//word of warning: using a matrix like this as a color value will simplify it back to a string after being set -/proc/color_hex2color_matrix(string) - var/length = length(string) - if((length != 7 && length != 9) || length != length_char(string)) - return color_matrix_identity() - var/r = hex2num(copytext(string, 2, 4))/255 - var/g = hex2num(copytext(string, 4, 6))/255 - var/b = hex2num(copytext(string, 6, 8))/255 - var/a = 1 - if(length == 9) - a = hex2num(copytext(string, 8, 10))/255 - if(!isnum(r) || !isnum(g) || !isnum(b) || !isnum(a)) - return color_matrix_identity() - return list(r, 0, 0, 0, 0, g, 0, 0, 0, 0, b, 0, 0, 0, 0, a, 0, 0, 0, 0) - - -///Converts a hex color string to a color matrix. -/proc/color_matrix_from_string(string) - if(!string || !istext(string)) - return color_matrix_identity() - - var/string_r = hex2num(copytext(string, 2, 4)) / 255 - var/string_g = hex2num(copytext(string, 4, 6)) / 255 - var/string_b = hex2num(copytext(string, 6, 8)) / 255 - - return list(string_r, 0, 0, 0, 0, string_g, 0, 0, 0, 0, string_b, 0, 0, 0, 0, 1, 0, 0, 0, 0) - - - -/*Changing/updating a mob's client color matrices. These render over the map window and affect most things the player sees, except things like inventory, -text popups, HUD, and some fullscreens. Code based on atom filter code, since these have similar issues with application order - for ex. if you have -a desaturation and a recolor matrix, you'll get very different results if you desaturate before recoloring, or recolor before desaturating. -See matrices.dm for the matrix procs. -If you want to recolor a specific atom, you should probably do it as a color matrix filter instead since that code already exists. -Apparently color matrices are not the same sort of matrix used by matrix datums and can't be worked with using normal matrix procs.*/ - -///Adds a color matrix and updates the client. Priority is the order the matrices are applied, lowest first. Will replace an existing matrix of the same name, if one exists. -/mob/proc/add_client_color_matrix(name, priority, list/params, time, easing) - LAZYINITLIST(client_color_matrices) - - //Package the matrices in another list that stores priority. - client_color_matrices[name] = list("priority" = priority, "color_matrix" = params.Copy()) - - update_client_color_matrices(time, easing) - -/**Combines all color matrices and applies them to the client. -Also used on login to give a client its new body's color matrices. -Responsible for sorting the matrices. -Transition is animated but instant by default.**/ -/mob/proc/update_client_color_matrices(time = 0 SECONDS, easing = LINEAR_EASING) - if(!client) - return - - if(!length(client_color_matrices)) - animate(client, color = null, time = time, easing = easing) - UNSETEMPTY(client_color_matrices) - SEND_SIGNAL(src, COMSIG_MOB_RECALCULATE_CLIENT_COLOR) - return - - //Sort the matrix packages by priority. - client_color_matrices = sortTim(client_color_matrices, GLOBAL_PROC_REF(cmp_filter_data_priority), TRUE) - - var/list/final_matrix - - for(var/package in client_color_matrices) - var/list/current_matrix = client_color_matrices[package]["color_matrix"] - if(!final_matrix) - final_matrix = current_matrix - else - final_matrix = color_matrix_multiply(final_matrix, current_matrix) - - animate(client, color = final_matrix, time = time, easing = easing) - SEND_SIGNAL(src, COMSIG_MOB_RECALCULATE_CLIENT_COLOR) - -///Changes a matrix package's priority and updates client. -/mob/proc/change_client_color_matrix_priority(name, new_priority, time, easing) - if(!client_color_matrices || !client_color_matrices[name]) - return - - client_color_matrices[name]["priority"] = new_priority - - update_client_color_matrices(time, easing) - -///Returns the matrix of that name, if it exists. -/mob/proc/get_client_color_matrix(name) - return client_color_matrices[name]["color_matrix"] - -///Can take either a single name or a list of several. Attempts to remove target matrix packages and update client. -/mob/proc/remove_client_color_matrix(name_or_names, time, easing) - if(!client_color_matrices) - return - - var/found = FALSE - var/list/names = islist(name_or_names) ? name_or_names : list(name_or_names) - - for(var/name in names) - if(client_color_matrices[name]) - client_color_matrices -= name - found = TRUE - - if(found) - update_client_color_matrices(time, easing) - -///Removes all matrices and updates client. -/mob/proc/clear_client_color_matrices(time, easing) - client_color_matrices = null - update_client_color_matrices(time, easing) diff --git a/modular_RUtgmc/code/__HELPERS/text.dm b/modular_RUtgmc/code/__HELPERS/text.dm deleted file mode 100644 index ddbd45c4fba..00000000000 --- a/modular_RUtgmc/code/__HELPERS/text.dm +++ /dev/null @@ -1,33 +0,0 @@ -GLOBAL_LIST_INIT(ru_key_to_en_key, list("й" = "q", "ц" = "w", "у" = "e", "к" = "r", "е" = "t", "н" = "y", "г" = "u", "ш" = "i", "щ" = "o", "з" = "p", "х" = "\[", "ъ" = "]", - "ф" = "a", "ы" = "s", "в" = "d", "а" = "f", "п" = "g", "р" = "h", "о" = "j", "л" = "k", "д" = "l", "ж" = ";", "э" = "'", - "я" = "z", "ч" = "x", "с" = "c", "м" = "v", "и" = "b", "т" = "n", "ь" = "m", "б" = ",", "ю" = ".")) - -GLOBAL_LIST_INIT(en_key_to_ru_key, list( - "q" = "й", "w" = "ц", "e" = "у", "r" = "к", "t" = "е", "y" = "н", - "u" = "г", "i" = "ш", "o" = "щ", "p" = "з", - "a" = "ф", "s" = "ы", "d" = "в", "f" = "а", "g" = "п", "h" = "р", - "j" = "о", "k" = "л", "l" = "д", ";" = "ж", "'" = "э", "z" = "я", - "x" = "ч", "c" = "с", "v" = "м", "b" = "и", "n" = "т", "m" = "ь", - "," = "б", "." = "ю", -)) - -/proc/convert_ru_key_to_en_key(var/_key) - var/new_key = lowertext(_key) - new_key = GLOB.ru_key_to_en_key[new_key] - if(!new_key) - return _key - return uppertext(new_key) - -/proc/convert_ru_string_to_en_string(text) - . = "" - for(var/i in 1 to length_char(text)) - . += convert_ru_key_to_en_key(copytext_char(text, i, i+1)) - -/proc/sanitize_en_key_to_ru_key(char) - var/new_char = GLOB.en_key_to_ru_key[lowertext(char)] - return (new_char != null) ? new_char : char - -/proc/sanitize_en_string_to_ru_string(text) - . = "" - for(var/i in 1 to length_char(text)) - . += sanitize_en_key_to_ru_key(copytext_char(text, i, i+1)) diff --git a/modular_RUtgmc/code/__HELPERS/unsorted.dm b/modular_RUtgmc/code/__HELPERS/unsorted.dm deleted file mode 100644 index 723c7dbd476..00000000000 --- a/modular_RUtgmc/code/__HELPERS/unsorted.dm +++ /dev/null @@ -1,135 +0,0 @@ -/proc/get_true_location(atom/loc) - var/atom/subLoc = loc - while(subLoc.z == 0) - if (istype(subLoc.loc, /atom)) - subLoc = subLoc.loc - else - return subLoc - return subLoc - -#define get_true_turf(loc) get_turf(get_true_location(loc)) - -GLOBAL_LIST_EMPTY(loose_yautja_gear) -GLOBAL_LIST_EMPTY(tracked_yautja_gear) // list of pred gear with a tracking element attached - -GLOBAL_LIST_EMPTY(mainship_yautja_teleports) -GLOBAL_LIST_EMPTY(mainship_yautja_desc) -GLOBAL_LIST_EMPTY(yautja_teleports) -GLOBAL_LIST_EMPTY(yautja_teleport_descs) - -GLOBAL_LIST_INIT_TYPED(all_yautja_capes, /obj/item/clothing/yautja_cape, setup_yautja_capes()) - -/proc/setup_yautja_capes() - var/list/cape_list = list() - for(var/obj/item/clothing/yautja_cape/cape_type as anything in typesof(/obj/item/clothing/yautja_cape)) - cape_list[initial(cape_type.name)] = cape_type - return cape_list - -GLOBAL_VAR_INIT(roles_whitelist, load_role_whitelist()) - -/proc/load_role_whitelist(filename = "config/role_whitelist.txt") - var/L[] = file2list(filename) - var/P[] - var/W[] = new //We want a temporary whitelist list, in case we need to reload. - - var/i - var/r - var/ckey - var/role - for(i in L) - if(!i) - continue - i = trim(i) - - if(!length(i)) - continue - - else if(copytext(i, 1, 2) == "#") - continue - - P = splittext(i, "+") - - if(!P.len) - continue - - ckey = ckey(P[1]) //Converting their key to canonical form. ckey() does this by stripping all spaces, underscores and converting to lower case. - - role = NONE - r = 1 - while(++r <= P.len) - switch(ckey(P[r])) - if("yautja") - role |= WHITELIST_YAUTJA - if("yautjalegacy") - role |= WHITELIST_YAUTJA_LEGACY - if("yautjacouncil") - role |= WHITELIST_YAUTJA_COUNCIL - if("yautjacouncillegacy") - role |= WHITELIST_YAUTJA_COUNCIL_LEGACY - if("yautjaleader") - role |= WHITELIST_YAUTJA_LEADER - - W[ckey] = role - - return W - -//yautja ship AI announcement -/proc/yautja_announcement(message, title = "You receive a message from your ship AI...", sound_to_play = sound('sound/misc/notice1.ogg')) - var/list/targets = GLOB.human_mob_list + GLOB.dead_mob_list - for(var/mob/M in targets) - if(!isobserver(M)) //observers see everything - var/mob/living/carbon/human/H = M - if(!isyautja(H) || H.stat != CONSCIOUS) - continue - - to_chat(M, html = "[title]

[span_alert(message)]") - SEND_SOUND(M, sound_to_play) - -/// Will attempt to find what's holding this item if it's being contained by something, ie if it's in a satchel held by a human, this'll return the human -/proc/recursive_holder_check(obj/item/held_item, recursion_limit = 3) - if(recursion_limit <= 0) - return held_item - if(!held_item.loc || isturf(held_item.loc)) - return held_item - recursion_limit-- - return recursive_holder_check(held_item.loc, recursion_limit) - -// returns turf relative to A for a given clockwise angle at set range -// result is bounded to map size -/proc/get_angle_target_turf(atom/A, angle, range) - if(!istype(A)) - return null - var/x = A.x - var/y = A.y - - x += range * sin(angle) - y += range * cos(angle) - - //Restricts to map boundaries while keeping the final angle the same - var/dx = A.x - x - var/dy = A.y - y - var/ratio - - if(dy == 0) //prevents divide-by-zero errors - ratio = INFINITY - else - ratio = dx / dy - - if(x < 1) - y += (1 - x) / ratio - x = 1 - else if (x > world.maxx) - y += (world.maxx - x) / ratio - x = world.maxx - if(y < 1) - x += (1 - y) * ratio - y = 1 - else if (y > world.maxy) - x += (world.maxy - y) * ratio - y = world.maxy - - - x = round(x,1) - y = round(y,1) - - return locate(x,y,A.z) diff --git a/modular_RUtgmc/code/_globalvars/lists/flavor_misc.dm b/modular_RUtgmc/code/_globalvars/lists/flavor_misc.dm deleted file mode 100644 index 38058baae90..00000000000 --- a/modular_RUtgmc/code/_globalvars/lists/flavor_misc.dm +++ /dev/null @@ -1,84 +0,0 @@ -//Backpacks -GLOBAL_LIST_INIT(backpacklist, list("Nothing", "Backpack", "Satchel", "Green Satchel", "Molle Backpack", "Molle Satchel", "Scav Backpack")) - -GLOBAL_LIST_INIT(playable_icons, list( - "behemoth", - "boiler", - "bull", - "captain", - "clown", - "military_police", - "carrier", - "chief_medical", - "cl", - "crusher", - "cse", - "defender", - "defiler", - "drone", - "facehugger", - "fieldcommander", - "gorger", - "hivelord", - "hivemind", - "hunter", - "larva", - "mech_pilot", - "medical", - "panther", - "pilot", - "praetorian", - "private", - "ravager", - "requisition", - "researcher", - "runner", - "sentinel", - "spitter", - "st", - "staffofficer", - "synth", - "warlock", - "warrior", - "xenoking", - "xenominion", - "xenoqueen", - "xenoshrike", - "chimera", - "predator", - "thrall", - "hellhound", -)) - -GLOBAL_LIST_EMPTY(human_ethnicities_list) -GLOBAL_LIST_EMPTY(yautja_ethnicities_list) - -GLOBAL_LIST_EMPTY(yautja_hair_styles_list) - -GLOBAL_LIST_INIT(ethnicities_list, init_ethnicities()) - -/// Ethnicity - Initialise all /datum/ethnicity into a list indexed by ethnicity name -/proc/init_ethnicities() - . = list() - - for(var/path in subtypesof(/datum/ethnicity) - /datum/ethnicity/human - /datum/ethnicity/yautja) - var/datum/ethnicity/E = new path() - .[E.name] = E - - if(istype(E, /datum/ethnicity/human)) - GLOB.human_ethnicities_list[E.name] = E - - if(istype(E, /datum/ethnicity/yautja)) - GLOB.yautja_ethnicities_list[E.name] = E - - for(var/path in subtypesof(/datum/sprite_accessory/yautja_hair)) - var/datum/sprite_accessory/yautja_hair/H = new path() - GLOB.yautja_hair_styles_list[H.name] = H - - -GLOBAL_LIST_INIT(minimap_icons, init_minimap_icons()) - -/proc/init_minimap_icons() - . = list() - for(var/icon_state in GLOB.playable_icons) - .[icon_state] = icon2base64(icon('modular_RUtgmc/icons/UI_icons/map_blips.dmi', icon_state, frame = 1)) //RUTGMC edit - icon change diff --git a/modular_RUtgmc/code/_globalvars/lists/mapping.dm b/modular_RUtgmc/code/_globalvars/lists/mapping.dm deleted file mode 100644 index 6d6d92b58a1..00000000000 --- a/modular_RUtgmc/code/_globalvars/lists/mapping.dm +++ /dev/null @@ -1,2 +0,0 @@ -GLOBAL_LIST_EMPTY(start_squad_landmarks_list) //list of all squad roundstart spawn points created -GLOBAL_LIST_EMPTY(latejoin_squad_landmarks_list) //list of all squad latejoin spawn points created diff --git a/modular_RUtgmc/code/_globalvars/lists/mobs.dm b/modular_RUtgmc/code/_globalvars/lists/mobs.dm deleted file mode 100644 index c58e4faec26..00000000000 --- a/modular_RUtgmc/code/_globalvars/lists/mobs.dm +++ /dev/null @@ -1,66 +0,0 @@ -GLOBAL_LIST_INIT(all_xeno_types, list( - /mob/living/carbon/xenomorph/runner, - /mob/living/carbon/xenomorph/runner/primordial, - /mob/living/carbon/xenomorph/drone, - /mob/living/carbon/xenomorph/drone/primordial, - /mob/living/carbon/xenomorph/sentinel, - /mob/living/carbon/xenomorph/sentinel/primordial, - /mob/living/carbon/xenomorph/defender, - /mob/living/carbon/xenomorph/defender/primordial, - /mob/living/carbon/xenomorph/gorger, - /mob/living/carbon/xenomorph/gorger/primordial, - /mob/living/carbon/xenomorph/hunter, - /mob/living/carbon/xenomorph/hunter/primordial, - /mob/living/carbon/xenomorph/panther, - /mob/living/carbon/xenomorph/panther/primordial, - /mob/living/carbon/xenomorph/warrior, - /mob/living/carbon/xenomorph/warrior/primordial, - /mob/living/carbon/xenomorph/spitter, - /mob/living/carbon/xenomorph/spitter/primordial, - /mob/living/carbon/xenomorph/hivelord, - /mob/living/carbon/xenomorph/hivelord/primordial, - /mob/living/carbon/xenomorph/carrier, - /mob/living/carbon/xenomorph/carrier/primordial, - /mob/living/carbon/xenomorph/bull, - /mob/living/carbon/xenomorph/bull/primordial, - /mob/living/carbon/xenomorph/queen, - /mob/living/carbon/xenomorph/queen/primordial, - /mob/living/carbon/xenomorph/king, - /mob/living/carbon/xenomorph/king/primordial, - /mob/living/carbon/xenomorph/ravager, - /mob/living/carbon/xenomorph/ravager/primordial, - /mob/living/carbon/xenomorph/praetorian, - /mob/living/carbon/xenomorph/praetorian/primordial, - /mob/living/carbon/xenomorph/boiler, - /mob/living/carbon/xenomorph/boiler/primordial, - /mob/living/carbon/xenomorph/defiler, - /mob/living/carbon/xenomorph/defiler/primordial, - /mob/living/carbon/xenomorph/crusher, - /mob/living/carbon/xenomorph/crusher/primordial, - /mob/living/carbon/xenomorph/shrike, - /mob/living/carbon/xenomorph/shrike/primordial, - /mob/living/carbon/xenomorph/warlock, - /mob/living/carbon/xenomorph/warlock/primordial, - /mob/living/carbon/xenomorph/behemoth, - /mob/living/carbon/xenomorph/behemoth/primordial, - /mob/living/carbon/xenomorph/chimera, - /mob/living/carbon/xenomorph/chimera/primordial, - /mob/living/carbon/xenomorph/beetle, - /mob/living/carbon/xenomorph/mantis, - /mob/living/carbon/xenomorph/scorpion, - /mob/living/carbon/xenomorph/facehugger, - )) - -GLOBAL_LIST_INIT(xeno_types_tier_two, list(/mob/living/carbon/xenomorph/hunter, /mob/living/carbon/xenomorph/panther, /mob/living/carbon/xenomorph/warrior, /mob/living/carbon/xenomorph/spitter, /mob/living/carbon/xenomorph/hivelord, /mob/living/carbon/xenomorph/carrier, /mob/living/carbon/xenomorph/bull)) -GLOBAL_LIST_INIT(xeno_types_tier_three, list(/mob/living/carbon/xenomorph/gorger, /mob/living/carbon/xenomorph/ravager, /mob/living/carbon/xenomorph/praetorian, /mob/living/carbon/xenomorph/boiler, /mob/living/carbon/xenomorph/defiler, /mob/living/carbon/xenomorph/crusher, /mob/living/carbon/xenomorph/shrike, /mob/living/carbon/xenomorph/behemoth, /mob/living/carbon/xenomorph/chimera)) - -GLOBAL_LIST_INIT(forbid_excepts, list( - /mob/living/carbon/xenomorph/king, - /mob/living/carbon/xenomorph/queen, - /mob/living/carbon/xenomorph/shrike, - /mob/living/carbon/xenomorph/larva, - /mob/living/carbon/xenomorph/drone, - )) - -GLOBAL_LIST_EMPTY_TYPED(hellhound_list, /mob/living/carbon/xenomorph/hellhound) -GLOBAL_LIST_EMPTY_TYPED(yautja_mob_list, /mob/living/carbon/human/species/yautja) diff --git a/modular_RUtgmc/code/_globalvars/lists/objects.dm b/modular_RUtgmc/code/_globalvars/lists/objects.dm deleted file mode 100644 index f565a991aef..00000000000 --- a/modular_RUtgmc/code/_globalvars/lists/objects.dm +++ /dev/null @@ -1 +0,0 @@ -GLOBAL_LIST_EMPTY(xeno_egg_hugger) diff --git a/modular_RUtgmc/code/_onclick/hud/defines.dm b/modular_RUtgmc/code/_onclick/hud/defines.dm deleted file mode 100644 index 23084614f90..00000000000 --- a/modular_RUtgmc/code/_onclick/hud/defines.dm +++ /dev/null @@ -1,18 +0,0 @@ -//Upper-middle right (damage indicators) -#define ui_predator_power "EAST-1:28,CENTER:17" - -/atom/movable/screen/fullscreen/machine/pred - alpha = 140 - -/atom/movable/screen/fullscreen/machine/pred/meson - icon_state = "pred_meson" - icon = 'modular_RUtgmc/icons/mob/screen/full.dmi' - -/atom/movable/screen/fullscreen/machine/pred/night - icon_state = "robothalf" - -/datum/hud/var/atom/movable/screen/pred_power_icon - -/datum/hud/Destroy() - pred_power_icon = null - return ..() diff --git a/modular_RUtgmc/code/_onclick/hud/hud.dm b/modular_RUtgmc/code/_onclick/hud/hud.dm deleted file mode 100644 index 65068553dc0..00000000000 --- a/modular_RUtgmc/code/_onclick/hud/hud.dm +++ /dev/null @@ -1,8 +0,0 @@ -/datum/hud - var/atom/movable/screen/alien_evolve_display - var/atom/movable/screen/alien_sunder_display - -/datum/hud/Destroy() - alien_evolve_display = null - - return ..() diff --git a/modular_RUtgmc/code/_onclick/hud/screen_objects/menu_text_objects.dm b/modular_RUtgmc/code/_onclick/hud/screen_objects/menu_text_objects.dm deleted file mode 100644 index 3701dd4d262..00000000000 --- a/modular_RUtgmc/code/_onclick/hud/screen_objects/menu_text_objects.dm +++ /dev/null @@ -1,46 +0,0 @@ -/atom/movable/screen/text/lobby/clickable/MouseEntered(location, control, params) - . = ..() - color = COLOR_RUTGMC_RED - -/atom/movable/screen/text/lobby/clickable/setup_character - maptext = "ПЕРСОНАЖ: ..." - -/atom/movable/screen/text/lobby/clickable/setup_character/update_text() - maptext = "ПЕРСОНАЖ: [hud?.mymob.client ? hud.mymob.client.prefs.real_name : "Unknown User"]" - if(registered) - return - RegisterSignal(hud.mymob.client, COMSIG_CLIENT_PREFERENCES_UIACTED, PROC_REF(update_text)) - registered = TRUE - -/atom/movable/screen/text/lobby/clickable/join_game - maptext = "ПРИСОЕДИНИТЬСЯ" - -/atom/movable/screen/text/lobby/clickable/observe - maptext = "НАБЛЮДАТЬ" - -/atom/movable/screen/text/lobby/clickable/ready - maptext = "ВЫ: НЕ ГОТОВЫ" - -/atom/movable/screen/text/lobby/clickable/ready/update_text() - var/mob/new_player/player = hud.mymob - maptext = "ВЫ: [player.ready ? "" : "НЕ "]ГОТОВЫ" - -/atom/movable/screen/text/lobby/clickable/manifest - maptext = "МАНИФЕСТ МОРПЕХОВ" - -/atom/movable/screen/text/lobby/clickable/xenomanifest - maptext = "МАНИФЕСТ УЛЬЯ" - -/atom/movable/screen/text/lobby/clickable/background - maptext = "ПРЕДЫСТОРИЯ" - -/atom/movable/screen/text/lobby/clickable/changelog - maptext = "ЛОГ ИЗМЕНЕНИЙ" - -/atom/movable/screen/text/lobby/clickable/polls/fetch_polls() - var/mob/new_player/player = hud.mymob - var/hasnewpolls = player.check_playerpolls() - if(isnull(hasnewpolls)) - maptext = "НЕТ БАЗЫ ДАННЫХ!" - return - maptext = "ПОКАЗАТЬ ОПРОСЫ[hasnewpolls ? " (NEW!)" : ""]" diff --git a/modular_RUtgmc/code/_onclick/hud/screen_objects/screen_objects.dm b/modular_RUtgmc/code/_onclick/hud/screen_objects/screen_objects.dm deleted file mode 100644 index 45e62916dca..00000000000 --- a/modular_RUtgmc/code/_onclick/hud/screen_objects/screen_objects.dm +++ /dev/null @@ -1,11 +0,0 @@ -/atom/movable/screen/healths - icon = 'modular_RUtgmc/icons/mob/screen/health.dmi' - -/atom/movable/screen/healths/alien - icon = 'modular_RUtgmc/icons/mob/screen/alien_better.dmi' - -/atom/movable/screen/healths/alien/larva - screen_loc = ui_alien_health_larva // it's in the position of plasma hud, as larva has no plasma hud as such - -/atom/movable/screen/stamina_hud - icon = 'modular_RUtgmc/icons/mob/screen/health.dmi' diff --git a/modular_RUtgmc/code/_onclick/hud/xeno/larva.dm b/modular_RUtgmc/code/_onclick/hud/xeno/larva.dm deleted file mode 100644 index 793b6452470..00000000000 --- a/modular_RUtgmc/code/_onclick/hud/xeno/larva.dm +++ /dev/null @@ -1,25 +0,0 @@ -/datum/hud/larva/New(mob/living/carbon/xenomorph/larva/owner, ui_style, ui_color, ui_alpha = 230) - ..() - var/atom/movable/screen/using - - using = new /atom/movable/screen/mov_intent/alien() - using.alpha = ui_alpha - using.icon_state = (owner.m_intent == MOVE_INTENT_RUN ? "running" : "walking") - static_inventory += using - move_intent = using - - using = new /atom/movable/screen/alien/nightvision() - using.alpha = ui_alpha - infodisplay += using - - alien_evolve_display = new /atom/movable/screen/alien/evolvehud() - alien_evolve_display.alpha = ui_alpha - infodisplay += alien_evolve_display - - healths = new /atom/movable/screen/healths/alien/larva() - healths.alpha = ui_alpha - infodisplay += healths - - locate_leader = new /atom/movable/screen/alien/queen_locator() - locate_leader.alpha = ui_alpha - infodisplay += locate_leader diff --git a/modular_RUtgmc/code/_onclick/hud/xeno/xeno.dm b/modular_RUtgmc/code/_onclick/hud/xeno/xeno.dm deleted file mode 100644 index ad5e4314e5f..00000000000 --- a/modular_RUtgmc/code/_onclick/hud/xeno/xeno.dm +++ /dev/null @@ -1,40 +0,0 @@ -/atom/movable/screen/alien/nightvision - icon = 'modular_RUtgmc/icons/mob/screen/alien_better.dmi' - -/atom/movable/screen/alien/queen_locator - icon = 'modular_RUtgmc/icons/mob/screen/alien_better.dmi' - -/atom/movable/screen/alien/plasmadisplay - name = "plasma stored" - icon = 'modular_RUtgmc/icons/mob/screen/alien_better.dmi' - icon_state = "power_display_20" - -/atom/movable/screen/alien/evolvehud - icon = 'modular_RUtgmc/icons/mob/screen/alien_better.dmi' - name = "Evolve Status" - desc = "Click for evolve panel." - icon_state = "evolve_empty" - screen_loc = ui_evolvehud - -/atom/movable/screen/alien/evolvehud/Click() - . = ..() - if(!.) - return - var/mob/living/carbon/xenomorph/X = usr - X.Evolve() - -/atom/movable/screen/alien/sunderhud - icon = 'modular_RUtgmc/icons/mob/screen/alien_better.dmi' - icon_state = "sunder0" - screen_loc = ui_sunderhud - -/datum/hud/alien/New(mob/living/carbon/xenomorph/owner, ui_style, ui_color, ui_alpha = 230) - ..() - - alien_evolve_display = new /atom/movable/screen/alien/evolvehud() - alien_evolve_display.alpha = ui_alpha - infodisplay += alien_evolve_display - - alien_sunder_display = new /atom/movable/screen/alien/sunderhud() - alien_sunder_display.alpha = ui_alpha - infodisplay += alien_sunder_display diff --git a/modular_RUtgmc/code/_onclick/xeno.dm b/modular_RUtgmc/code/_onclick/xeno.dm deleted file mode 100644 index 245957c29aa..00000000000 --- a/modular_RUtgmc/code/_onclick/xeno.dm +++ /dev/null @@ -1,18 +0,0 @@ -/mob/living/carbon/xenomorph/facehugger/UnarmedAttack(atom/A, has_proximity, modifiers) - if(lying_angle) - return FALSE - if(isclosedturf(get_turf(src)) && !iswallturf(A)) //If we are on a closed turf (e.g. in a wall) we can't attack anything, except walls (or well, resin walls really) so we can't make ourselves be stuck. - balloon_alert(src, "Cannot reach") - return FALSE - if(!(isopenturf(A) || istype(A, /obj/alien/weeds))) //We don't care about open turfs; they don't trigger our melee click cooldown - changeNext_move(xeno_caste ? xeno_caste.attack_delay : CLICK_CD_MELEE) - if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED)) - return FALSE - - var/atom/S = A.handle_barriers(src) - S.attack_facehugger(src, xeno_caste.melee_damage * xeno_melee_damage_modifier, isrightclick = islist(modifiers) ? modifiers["right"] : FALSE) - GLOB.round_statistics.xeno_unarmed_attacks++ - SSblackbox.record_feedback("tally", "round_statistics", 1, "xeno_unarmed_attacks") - -/atom/proc/attack_facehugger(mob/living/carbon/xenomorph/facehugger/F, damage_amount = F.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE) - return diff --git a/modular_RUtgmc/code/controllers/configuration/entries.dm b/modular_RUtgmc/code/controllers/configuration/entries.dm deleted file mode 100644 index 88c1d84bbd6..00000000000 --- a/modular_RUtgmc/code/controllers/configuration/entries.dm +++ /dev/null @@ -1,9 +0,0 @@ -/datum/config_entry/number/pred_round - config_entry_value = 0 - min_val = 0 - max_val = 2 - -/datum/config_entry/number/pred_round_chance - config_entry_value = 0 - min_val = 0 - max_val = 100 diff --git a/modular_RUtgmc/code/controllers/configuration/entries/general.dm b/modular_RUtgmc/code/controllers/configuration/entries/general.dm deleted file mode 100644 index 91894e6d63c..00000000000 --- a/modular_RUtgmc/code/controllers/configuration/entries/general.dm +++ /dev/null @@ -1,3 +0,0 @@ -/datum/config_entry/flag/tgs_event_approval_messaging - -/datum/config_entry/flag/tgs_adminless_messaging diff --git a/modular_RUtgmc/code/controllers/subsystem/dbcore.dm b/modular_RUtgmc/code/controllers/subsystem/dbcore.dm deleted file mode 100644 index d99b50d85a2..00000000000 --- a/modular_RUtgmc/code/controllers/subsystem/dbcore.dm +++ /dev/null @@ -1,2 +0,0 @@ -/datum/db_query - var/no_auto_delete = FALSE diff --git a/modular_RUtgmc/code/controllers/subsystem/job.dm b/modular_RUtgmc/code/controllers/subsystem/job.dm deleted file mode 100644 index 64708d21f9c..00000000000 --- a/modular_RUtgmc/code/controllers/subsystem/job.dm +++ /dev/null @@ -1,44 +0,0 @@ -//Gives the player the stuff they should have with their rank. -/datum/controller/subsystem/job/spawn_character(mob/new_player/player, joined_late = FALSE) - var/mob/living/new_character = player.new_character - var/datum/job/job = player.assigned_role - - new_character.apply_assigned_role_to_spawn(job, player.client, player.assigned_squad) - - //If we joined at roundstart we should be positioned at our workstation - var/turf/spawn_turf - if(!joined_late || job.job_flags & JOB_FLAG_OVERRIDELATEJOINSPAWN) - var/datum/job/terragov/squad/marine = job - var/mob/living/carbon/human/h = new_character - if(!ishuman(new_character) || !h.assigned_squad || !length_char(GLOB.start_squad_landmarks_list)) - spawn_turf = job.return_spawn_turf(player, player.client) - else - spawn_turf = marine.spawn_by_squads(h.assigned_squad.id) - if(spawn_turf) - SendToAtom(new_character, spawn_turf) - else - SendToLateJoin(new_character, job) - - job.radio_help_message(player) - - job.after_spawn(new_character, player, joined_late) // note: this happens before new_character has a key! - - return new_character - -/datum/controller/subsystem/job/SendToLateJoin(mob/M, datum/job/assigned_role) - switch(assigned_role.faction) - if(FACTION_SOM) - if(length(GLOB.latejoinsom)) - SendToAtom(M, pick(GLOB.latejoinsom)) - return - else - var/mob/living/carbon/human/h = M - if(h.assigned_squad && length_char(GLOB.latejoin_squad_landmarks_list)) - SendToAtom(M, pick(GLOB.latejoin_squad_landmarks_list[h.assigned_squad.id])) - return - else - if(length_char(GLOB.latejoin)) - SendToAtom(M, pick(GLOB.latejoin)) - return - message_admins("Unable to send mob [M] to late join!") - CRASH("Unable to send mob [M] to late join!") diff --git a/modular_RUtgmc/code/controllers/subsystem/minimaps.dm b/modular_RUtgmc/code/controllers/subsystem/minimaps.dm deleted file mode 100644 index 594c098bbfd..00000000000 --- a/modular_RUtgmc/code/controllers/subsystem/minimaps.dm +++ /dev/null @@ -1,58 +0,0 @@ -/atom/movable/screen/minimap_locator - icon = 'modular_RUTGMC/icons/UI_icons/map_blips.dmi' - -/datum/controller/subsystem/minimaps/proc/add_zlevel(zlevel) - minimaps_by_z["[zlevel]"] = new /datum/hud_displays - var/icon/icon_gen = new('icons/UI_icons/minimap.dmi') //480x480 blank icon template for drawing on the map - for(var/xval = 1 to world.maxx) - for(var/yval = 1 to world.maxy) //Scan all the turfs and draw as needed - var/turf/location = locate(xval,yval,zlevel) - if(isspaceturf(location)) - continue - if(location.density) - icon_gen.DrawBox(location.minimap_color, xval, yval) - continue - var/atom/movable/alttarget = (locate(/obj/machinery/door) in location) || (locate(/obj/structure/fence) in location) - if(alttarget) - icon_gen.DrawBox(alttarget.minimap_color, xval, yval) - continue - var/area/turfloc = location.loc - if(turfloc.minimap_color) - icon_gen.DrawBox(BlendRGB(location.minimap_color, turfloc.minimap_color, 0.5), xval, yval) - continue - icon_gen.DrawBox(location.minimap_color, xval, yval) - icon_gen.Scale(480*2,480*2) //scale it up x2 to make it easer to see - icon_gen.Crop(1, 1, min(icon_gen.Width(), 480), min(icon_gen.Height(), 480)) //then cut all the empty pixels - //generation is done, now we need to center the icon to someones view, this can be left out if you like it ugly and will halve SSinit time - //calculate the offset of the icon - var/largest_x = 0 - var/smallest_x = SCREEN_PIXEL_SIZE - var/largest_y = 0 - var/smallest_y = SCREEN_PIXEL_SIZE - for(var/xval=1 to SCREEN_PIXEL_SIZE step 2) //step 2 is twice as fast :) - for(var/yval=1 to SCREEN_PIXEL_SIZE step 2) //keep in mind 1 wide giant straight lines will offset wierd but you shouldnt be mapping those anyway right??? - if(!icon_gen.GetPixel(xval, yval)) - continue - if(xval > largest_x) - largest_x = xval - else if(xval < smallest_x) - smallest_x = xval - if(yval > largest_y) - largest_y = yval - else if(yval < smallest_y) - smallest_y = yval - - minimaps_by_z["[zlevel]"].x_offset = FLOOR((SCREEN_PIXEL_SIZE-largest_x-smallest_x)/2, 1) - minimaps_by_z["[zlevel]"].y_offset = FLOOR((SCREEN_PIXEL_SIZE-largest_y-smallest_y)/2, 1) - - icon_gen.Shift(EAST, minimaps_by_z["[zlevel]"].x_offset) - icon_gen.Shift(NORTH, minimaps_by_z["[zlevel]"].y_offset) - - minimaps_by_z["[zlevel]"].hud_image = icon_gen //done making the image! - -/datum/action/minimap/yautja - minimap_flags = MINIMAP_FLAG_XENO|MINIMAP_FLAG_MARINE|MINIMAP_FLAG_MARINE_SOM|MINIMAP_FLAG_YAUTJA - marker_flags = MINIMAP_FLAG_YAUTJA - -/datum/action/minimap/observer - minimap_flags = MINIMAP_FLAG_XENO|MINIMAP_FLAG_MARINE|MINIMAP_FLAG_MARINE_SOM|MINIMAP_FLAG_EXCAVATION_ZONE|MINIMAP_FLAG_YAUTJA diff --git a/modular_RUtgmc/code/controllers/subsystem/points.dm b/modular_RUtgmc/code/controllers/subsystem/points.dm deleted file mode 100644 index 6b3fb3c02d8..00000000000 --- a/modular_RUtgmc/code/controllers/subsystem/points.dm +++ /dev/null @@ -1,37 +0,0 @@ -/datum/controller/subsystem/points - ///Assoc list of personal supply points - var/personal_supply_points = list() - ///Personal supply points gain modifier - var/psp_multiplier = 0.075 - ///Personal supply points limit - var/psp_limit = 600 - ///Var used to calculate points difference between updates - var/supply_points_old = 0 - -/datum/controller/subsystem/points/fire(resumed = FALSE) - . = ..() - - for(var/key in supply_points) - for(var/mob/living/account in GLOB.alive_human_list_faction[key]) - if(account.job.title in GLOB.jobs_marines) - personal_supply_points[account.ckey] = min(personal_supply_points[account.ckey] + max(supply_points[key] - supply_points_old, 0) * psp_multiplier, psp_limit) - supply_points_old = supply_points[key] - -/datum/controller/subsystem/points/proc/buy_using_psp(mob/living/user) - var/cost = 0 - var/list/ckey_shopping_cart = request_shopping_cart[user.ckey] - if(!length_char(ckey_shopping_cart)) - return - if(length_char(ckey_shopping_cart) > 20) - return - for(var/i in ckey_shopping_cart) - var/datum/supply_packs/SP = supply_packs[i] - cost += SP.cost * ckey_shopping_cart[i] - if(cost > personal_supply_points[user.ckey]) - return - var/list/datum/supply_order/orders = process_cart(user, ckey_shopping_cart) - for(var/i in 1 to length_char(orders)) - orders[i].authorised_by = user.real_name - LAZYADDASSOCSIMPLE(shoppinglist[user.faction], "[orders[i].id]", orders[i]) - personal_supply_points[user.ckey] -= cost - ckey_shopping_cart.Cut() diff --git a/modular_RUtgmc/code/controllers/subsystem/processing/resinshaping.dm b/modular_RUtgmc/code/controllers/subsystem/processing/resinshaping.dm deleted file mode 100644 index b8b2419dcb5..00000000000 --- a/modular_RUtgmc/code/controllers/subsystem/processing/resinshaping.dm +++ /dev/null @@ -1,91 +0,0 @@ -/// Controls how many quickbuilds each xenomorph gets. -#define QUICKBUILD_STRUCTURES_PER_XENO 600 - -SUBSYSTEM_DEF(resinshaping) - name = "Resin Shaping" - flags = SS_NO_FIRE - /// A list used to count how many buildings were built by player ckey , counter[ckey] = [build_count] - var/list/xeno_builds_counter = list() - /// Counter for quickbuild points, as long as this is above 0 building is instant. - var/list/quickbuild_points_by_hive = list() - /// Counter for total structures built - var/total_structures_built = 0 - /// Counter for total refunds of structures - var/total_structures_refunded = 0 - /// Whether or not quickbuild is enabled. Set to FALSE when the game starts. - var/active = TRUE - -/datum/controller/subsystem/resinshaping/stat_entry() - if(SSticker.mode?.quickbuild_points_flags & MODE_PERSONAL_QUICKBUILD_POINTS) - return "BUILT=[total_structures_built] REFUNDED=[total_structures_refunded]" - else if(SSticker.mode?.quickbuild_points_flags & MODE_GENERAL_QUICKBUILD_POINTS) - return "QUICKBUILD POINTS (NORMAL HIVE)=[quickbuild_points_by_hive[XENO_HIVE_NORMAL]]" - else - return "OFFLINE" - -/datum/controller/subsystem/resinshaping/proc/toggle_off() - SIGNAL_HANDLER - active = FALSE - UnregisterSignal(SSdcs, list(COMSIG_GLOB_OPEN_SHUTTERS_EARLY, COMSIG_GLOB_OPEN_TIMED_SHUTTERS_LATE,COMSIG_GLOB_OPEN_TIMED_SHUTTERS_XENO_HIVEMIND,COMSIG_GLOB_TADPOLE_LAUNCHED,COMSIG_GLOB_DROPPOD_LANDED)) - -/datum/controller/subsystem/resinshaping/Initialize() - RegisterSignals(SSdcs, list(COMSIG_GLOB_OPEN_SHUTTERS_EARLY, COMSIG_GLOB_OPEN_TIMED_SHUTTERS_LATE,COMSIG_GLOB_OPEN_TIMED_SHUTTERS_XENO_HIVEMIND,COMSIG_GLOB_TADPOLE_LAUNCHED,COMSIG_GLOB_DROPPOD_LANDED), PROC_REF(toggle_off)) - for(var/hivenumber in GLOB.hive_datums) - quickbuild_points_by_hive[hivenumber] = SSmapping.configs[GROUND_MAP].quickbuilds - return SS_INIT_SUCCESS - -/// Retrieves a mob's building points using their ckey. Only works for mobs with clients. -/datum/controller/subsystem/resinshaping/proc/get_building_points(mob/living/carbon/xenomorph/the_builder) - if(SSticker.mode?.quickbuild_points_flags & MODE_PERSONAL_QUICKBUILD_POINTS) - var/player_key = "[the_builder.client?.ckey]" - if(!player_key) - return 0 - return QUICKBUILD_STRUCTURES_PER_XENO - xeno_builds_counter[player_key] - else if(SSticker.mode?.quickbuild_points_flags & MODE_GENERAL_QUICKBUILD_POINTS) - return quickbuild_points_by_hive[the_builder.get_xeno_hivenumber()] - -/// Increments a mob buildings count , using their ckey. -/datum/controller/subsystem/resinshaping/proc/increment_build_counter(mob/living/carbon/xenomorph/the_builder) - if(SSticker.mode?.quickbuild_points_flags & MODE_PERSONAL_QUICKBUILD_POINTS) - var/player_key = "[the_builder.client?.ckey]" - if(!player_key) - return - xeno_builds_counter[player_key]++ - total_structures_built++ - else if(SSticker.mode?.quickbuild_points_flags & MODE_GENERAL_QUICKBUILD_POINTS) - quickbuild_points_by_hive[the_builder.get_xeno_hivenumber()]-- - -/// Decrements a mob buildings count , using their ckey. -/datum/controller/subsystem/resinshaping/proc/decrement_build_counter(mob/living/carbon/xenomorph/the_builder) - if(SSticker.mode?.quickbuild_points_flags & MODE_PERSONAL_QUICKBUILD_POINTS) - var/player_key = "[the_builder.client?.ckey]" - if(!player_key) - return 0 - xeno_builds_counter[player_key]-- - total_structures_refunded++ - total_structures_built-- - else if(SSticker.mode?.quickbuild_points_flags & MODE_GENERAL_QUICKBUILD_POINTS) - quickbuild_points_by_hive[the_builder.hivenumber]++ - -/// Returns a TRUE if a structure should be refunded and instant deconstructed , or false if not -/datum/controller/subsystem/resinshaping/proc/should_refund(atom/structure, mob/living/carbon/xenomorph/the_demolisher) - if(SSticker.mode?.quickbuild_points_flags & MODE_PERSONAL_QUICKBUILD_POINTS) - var/player_key = "[the_demolisher.client?.ckey]" - // could be a AI mob thats demolishing without a player key. - if(!player_key || !active) - return FALSE - if(istype(structure, /obj/alien/resin/sticky) && !istype(structure,/obj/alien/resin/sticky/thin)) - return TRUE - if(istype(structure, /turf/closed/wall/resin)) - return TRUE - if(istype(structure, /obj/structure/mineral_door/resin)) - return TRUE - if(istype(structure, /obj/structure/bed/nest)) - return TRUE - return FALSE - else if(SSticker.mode?.quickbuild_points_flags & MODE_GENERAL_QUICKBUILD_POINTS) - if(active) - return TRUE - return FALSE - -#undef QUICKBUILD_STRUCTURES_PER_XENO diff --git a/modular_RUtgmc/code/datums/actions/ability_actions.dm b/modular_RUtgmc/code/datums/actions/ability_actions.dm deleted file mode 100644 index 242abfc10a3..00000000000 --- a/modular_RUtgmc/code/datums/actions/ability_actions.dm +++ /dev/null @@ -1,3 +0,0 @@ -/datum/action/ability - action_icon = 'modular_RUtgmc/icons/Xeno/actions.dmi' - background_icon = 'modular_RUtgmc/icons/Xeno/actions.dmi' diff --git a/modular_RUtgmc/code/datums/actions/actions/action.dm b/modular_RUtgmc/code/datums/actions/actions/action.dm deleted file mode 100644 index 3c2bbef9f7c..00000000000 --- a/modular_RUtgmc/code/datums/actions/actions/action.dm +++ /dev/null @@ -1,15 +0,0 @@ -/datum/action - action_icon = 'modular_RUtgmc/icons/mob/actions.dmi' - background_icon = 'modular_RUtgmc/icons/mob/actions.dmi' - -/datum/action/observer_action/show_hivestatus - action_icon = 'modular_RUtgmc/icons/Xeno/actions.dmi' - -/atom/movable/screen/action_button - icon = 'modular_RUtgmc/icons/mob/actions.dmi' - -/atom/movable/screen/action_button/hide_toggle - icon = 'modular_RUtgmc/icons/mob/actions.dmi' - -/atom/movable/vis_obj/action - icon = 'modular_RUtgmc/icons/mob/actions.dmi' diff --git a/modular_RUtgmc/code/datums/actions/observer_action.dm b/modular_RUtgmc/code/datums/actions/observer_action.dm deleted file mode 100644 index 55f67172f0d..00000000000 --- a/modular_RUtgmc/code/datums/actions/observer_action.dm +++ /dev/null @@ -1,91 +0,0 @@ -/datum/action/observer_action/find_facehugger_spawn - name = "Spawn as Facehugger" - action_icon = 'modular_RUtgmc/icons/Xeno/actions.dmi' - action_icon_state = "hugger_set" - -/datum/action/observer_action/find_facehugger_spawn/action_activate() - var/mob/dead/observer/dead_owner = owner - if(GLOB.key_to_time_of_death[owner.key] + TIME_BEFORE_TAKING_BODY > world.time && !dead_owner.started_as_observer) - to_chat(owner, span_warning("You died too recently to be able to take a new mob.")) - return - - var/list/spawn_point = list() - var/list/area_names = list() - var/list/area_namecounts = list() - var/name - - for(var/mob/living/carbon/xenomorph/potential_xeno AS in GLOB.alive_xeno_list) - if(dead_owner.z != potential_xeno.z) - continue - if(!isxenocarrier(potential_xeno)) - continue - - var/mob/living/carbon/xenomorph/carrier/selected_carrier = potential_xeno - if(selected_carrier.huggers_reserved >= selected_carrier.huggers) - continue - - name = selected_carrier.name - spawn_point[name] = potential_xeno - - for(var/obj/alien/egg/hugger/potential_egg AS in GLOB.xeno_egg_hugger) - if(dead_owner.z != potential_egg.z) - continue - if(potential_egg.maturity_stage != potential_egg.stage_ready_to_burst) - continue - if(!potential_egg.hugger_type) - continue - if(istype(potential_egg, /obj/alien/egg/hugger/forsaken)) - continue - - var/area_egg = get_area(potential_egg) - if(area_egg in area_names) - area_namecounts[area_egg]++ - name = "[potential_egg.name] at [area_egg] ([area_namecounts[area_egg]])" - else - area_names.Add(area_egg) - area_namecounts[area_egg] = 1 - name = "[potential_egg.name] at [get_area(potential_egg)]" - - spawn_point[name] = potential_egg - - if(!length_char(spawn_point)) - to_chat(owner, span_warning("There are no spawn points for facehugger on your Z-level.")) - return - - var/selected = tgui_input_list(usr, "Please select a spawn point:", "Spawn as Facehugger", spawn_point) - if(!selected) - return - - var/target = spawn_point[selected] - dead_owner.abstract_move(get_turf(target)) - -/datum/action/observer_action/join_predator - name = "Join the Hunt" - action_icon_state = "pred_ghost" - -/datum/action/observer_action/join_predator/give_action(mob/M) - var/owner_ckey = M.client?.ckey - if(!owner_ckey) - return - - if(!(GLOB.roles_whitelist[owner_ckey] & WHITELIST_PREDATOR)) - return - - if(!SSticker.mode || !(SSticker.mode.flags_round_type & MODE_PREDATOR)) - RegisterSignal(SSdcs, COMSIG_GLOB_PREDATOR_ROUND_TOGGLED, PROC_REF(handle_button_status_visuals)) - - . = ..() - -/datum/action/observer_action/join_predator/can_use_action() - if(!SSticker.mode || !(SSticker.mode.flags_round_type & MODE_PREDATOR)) - return FALSE - return TRUE - -/datum/action/observer_action/join_predator/action_activate() - var/mob/dead/observer/activator = owner - if(SSticker.current_state < GAME_STATE_PLAYING || !SSticker.mode) - to_chat(activator, span_warning("The game hasn't started yet!")) - return - - if(SSticker.mode.check_predator_late_join(activator)) - SSticker.mode.join_predator(activator) diff --git a/modular_RUtgmc/code/datums/actions/xeno_action.dm b/modular_RUtgmc/code/datums/actions/xeno_action.dm deleted file mode 100644 index c5bcd5c1dac..00000000000 --- a/modular_RUtgmc/code/datums/actions/xeno_action.dm +++ /dev/null @@ -1,7 +0,0 @@ -/datum/action/ability/xeno_action - action_icon = 'modular_RUtgmc/icons/Xeno/actions.dmi' - background_icon = 'modular_RUtgmc/icons/Xeno/actions.dmi' - -/datum/action/bump_attack_toggle - action_icon = 'modular_RUtgmc/icons/Xeno/actions.dmi' - background_icon = 'modular_RUtgmc/icons/Xeno/actions.dmi' diff --git a/modular_RUtgmc/code/datums/jobs/squads.dm b/modular_RUtgmc/code/datums/jobs/squads.dm index 6e6d1d7e96c..7fe63837b75 100644 --- a/modular_RUtgmc/code/datums/jobs/squads.dm +++ b/modular_RUtgmc/code/datums/jobs/squads.dm @@ -6,9 +6,9 @@ tracking_id = SSdirection.init_squad(name, squad_leader) for(var/state in GLOB.playable_squad_icons) - var/icon/top = icon('modular_RUtgmc/icons/UI_icons/map_blips.dmi', state, frame = 1) + var/icon/top = icon('icons/UI_icons/map_blips.dmi', state, frame = 1) top.Blend(color, ICON_MULTIPLY) - var/icon/bottom = icon('modular_RUtgmc/icons/UI_icons/map_blips.dmi', "squad_underlay", frame = 1) + var/icon/bottom = icon('icons/UI_icons/map_blips.dmi', "squad_underlay", frame = 1) top.Blend(bottom, ICON_UNDERLAY) var/icon_state = lowertext(name) + "_" + state diff --git a/modular_RUtgmc/code/game/objects/items/radio/headset.dm b/modular_RUtgmc/code/game/objects/items/radio/headset.dm index 24548d79d10..e237d5b49d1 100644 --- a/modular_RUtgmc/code/game/objects/items/radio/headset.dm +++ b/modular_RUtgmc/code/game/objects/items/radio/headset.dm @@ -21,26 +21,26 @@ if(wearer.stat == DEAD) if(HAS_TRAIT(wearer, TRAIT_UNDEFIBBABLE)) if(issynth(wearer)) - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "undefibbable_synt")) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, "undefibbable_synt")) else if(isrobot(wearer)) - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "undefibbable_robo")) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, "undefibbable_robo")) else if(ishuman(wearer)) - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "undefibbable")) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, "undefibbable")) return if(!wearer.client) var/mob/dead/observer/ghost = wearer.get_ghost() if(!ghost?.can_reenter_corpse) if(issynth(wearer)) - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "undefibbable_synt")) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, "undefibbable_synt")) else if(isrobot(wearer)) - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "undefibbable_robo")) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, "undefibbable_robo")) else if(ishuman(wearer)) - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "undefibbable")) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, "undefibbable")) return if(issynth(wearer)) - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "defibbable_synt")) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, "defibbable_synt")) else if(isrobot(wearer)) - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "defibbable_robo")) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, "defibbable_robo")) else if(ishuman(wearer)) var/stage switch(wearer.dead_ticks) @@ -50,19 +50,19 @@ stage = 2 if(0.8 * TIME_BEFORE_DNR to INFINITY) stage = 3 - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "defibbable[stage]")) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, "defibbable[stage]")) return if(wearer.assigned_squad) - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, lowertext(wearer.assigned_squad.name)+"_"+wearer.job.minimap_icon)) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, lowertext(wearer.assigned_squad.name)+"_"+wearer.job.minimap_icon)) /* //Выключил ибо у нас свой набор иконок который и так не грейскейл - var/image/underlay = image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "squad_underlay") - var/image/overlay = image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, wearer.job.minimap_icon) + var/image/underlay = image('icons/UI_icons/map_blips.dmi', null, "squad_underlay") + var/image/overlay = image('icons/UI_icons/map_blips.dmi', null, wearer.job.minimap_icon) overlay.color = wearer.assigned_squad.color underlay.overlays += overlay SSminimaps.add_marker(wearer, marker_flags, underlay) */ return - SSminimaps.add_marker(wearer, marker_flags, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, wearer.job.minimap_icon)) + SSminimaps.add_marker(wearer, marker_flags, image('icons/UI_icons/map_blips.dmi', null, wearer.job.minimap_icon)) /obj/item/radio/headset/mainship/mcom var/loud = FALSE diff --git a/modular_RUtgmc/code/game/objects/machinery/miner.dm b/modular_RUtgmc/code/game/objects/machinery/miner.dm index a3a0c8c4c37..6ca9d42477d 100644 --- a/modular_RUtgmc/code/game/objects/machinery/miner.dm +++ b/modular_RUtgmc/code/game/objects/machinery/miner.dm @@ -22,7 +22,7 @@ start_processing() SSminimaps.remove_marker(src) var/marker_icon = "miner_[mineral_value >= PLATINUM_CRATE_SELL_AMOUNT ? "platinum" : "phoron"]_on" - SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, marker_icon)) + SSminimaps.add_marker(src, MINIMAP_FLAG_ALL, image('icons/UI_icons/map_blips.dmi', null, marker_icon)) miner_status = MINER_RUNNING if(!camera.status) camera.toggle_cam(null, FALSE) diff --git a/modular_RUtgmc/code/modules/cm_preds/yaut_bracers.dm b/modular_RUtgmc/code/modules/cm_preds/yaut_bracers.dm index a28bc9bfda7..3c401e27253 100644 --- a/modular_RUtgmc/code/modules/cm_preds/yaut_bracers.dm +++ b/modular_RUtgmc/code/modules/cm_preds/yaut_bracers.dm @@ -809,16 +809,16 @@ SSminimaps.remove_marker(owner) if(!isyautja(owner)) - SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "bracer_stolen")) + SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('icons/UI_icons/map_blips.dmi', null, "bracer_stolen")) if(owner.stat >= DEAD) if(HAS_TRAIT(owner, TRAIT_UNDEFIBBABLE)) - SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "undefibbable")) + SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('icons/UI_icons/map_blips.dmi', null, "undefibbable")) else - SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "defibbable")) + SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('icons/UI_icons/map_blips.dmi', null, "defibbable")) else - SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, minimap_icon)) + SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('icons/UI_icons/map_blips.dmi', null, minimap_icon)) if(owner?.stat >= DEAD) - SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "undefibbable")) + SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('icons/UI_icons/map_blips.dmi', null, "undefibbable")) /* *This is the main proc for checking AND draining the bracer energy. It must have human passed as an argument. @@ -986,12 +986,12 @@ if(!wearer_turf) return - SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, minimap_icon)) + SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('icons/UI_icons/map_blips.dmi', null, minimap_icon)) if(owner.stat >= DEAD) if(HAS_TRAIT(owner, TRAIT_UNDEFIBBABLE)) - SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "undefibbable")) + SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('icons/UI_icons/map_blips.dmi', null, "undefibbable")) else - SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "defibbable")) + SSminimaps.add_marker(owner, MINIMAP_FLAG_YAUTJA, image('icons/UI_icons/map_blips.dmi', null, "defibbable")) /obj/item/clothing/gloves/yautja/hunter name = "clan bracers" diff --git a/modular_RUtgmc/code/modules/mob/living/carbon/human/yautja.dm b/modular_RUtgmc/code/modules/mob/living/carbon/human/yautja.dm index 7254d627719..afbf2b67103 100644 --- a/modular_RUtgmc/code/modules/mob/living/carbon/human/yautja.dm +++ b/modular_RUtgmc/code/modules/mob/living/carbon/human/yautja.dm @@ -57,7 +57,7 @@ knock_down_reduction = 4 stun_reduction = 4 - icobase = 'modular_RUtgmc/icons/mob/hunter/r_predator.dmi' + icobase = 'icons/mob/hunter/r_predator.dmi' /datum/species/yautja/handle_death(mob/living/carbon/human/H, gibbed) if(gibbed) @@ -188,25 +188,25 @@ var/global/image/hud_icon_hunter_thralled holder.overlays.Cut() if(hunter_data.hunted) if(!hud_icon_hunter_hunted) - hud_icon_hunter_hunted = image('modular_RUtgmc/icons/mob/screen/yautja.dmi', src, "hunter_hunted") + hud_icon_hunter_hunted = image('icons/mob/screen/yautja.dmi', src, "hunter_hunted") holder.overlays += hud_icon_hunter_hunted if(hunter_data.dishonored) if(!hud_icon_hunter_dishonored) - hud_icon_hunter_dishonored = image('modular_RUtgmc/icons/mob/screen/yautja.dmi', src, "hunter_dishonored") + hud_icon_hunter_dishonored = image('icons/mob/screen/yautja.dmi', src, "hunter_dishonored") holder.overlays += hud_icon_hunter_dishonored else if(hunter_data.honored) if(!hud_icon_hunter_honored) - hud_icon_hunter_honored = image('modular_RUtgmc/icons/mob/screen/yautja.dmi', src, "hunter_honored") + hud_icon_hunter_honored = image('icons/mob/screen/yautja.dmi', src, "hunter_honored") holder.overlays += hud_icon_hunter_honored if(hunter_data.thralled) if(!hud_icon_hunter_thralled) - hud_icon_hunter_thralled = image('modular_RUtgmc/icons/mob/screen/yautja.dmi', src, "hunter_thralled") + hud_icon_hunter_thralled = image('icons/mob/screen/yautja.dmi', src, "hunter_thralled") holder.overlays += hud_icon_hunter_thralled else if(hunter_data.gear) if(!hud_icon_hunter_gear) - hud_icon_hunter_gear = image('modular_RUtgmc/icons/mob/screen/yautja.dmi', src, "hunter_gear") + hud_icon_hunter_gear = image('icons/mob/screen/yautja.dmi', src, "hunter_gear") holder.overlays += hud_icon_hunter_gear hud_list[HUNTER_HUD] = holder @@ -221,16 +221,16 @@ var/global/image/hud_icon_hunter_thralled holder.pixel_y = 20 if(hunter_data.hunted) if(!hud_icon_hunter_hunted) - hud_icon_hunter_hunted = image('modular_RUtgmc/icons/mob/screen/yautja.dmi', src, "hunter_hunted") + hud_icon_hunter_hunted = image('icons/mob/screen/yautja.dmi', src, "hunter_hunted") holder.overlays += hud_icon_hunter_hunted if(hunter_data.dishonored) if(!hud_icon_hunter_dishonored) - hud_icon_hunter_dishonored = image('modular_RUtgmc/icons/mob/screen/yautja.dmi', src, "hunter_dishonored") + hud_icon_hunter_dishonored = image('icons/mob/screen/yautja.dmi', src, "hunter_dishonored") holder.overlays += hud_icon_hunter_dishonored else if(hunter_data.honored) if(!hud_icon_hunter_honored) - hud_icon_hunter_honored = image('modular_RUtgmc/icons/mob/screen/yautja.dmi', src, "hunter_honored") + hud_icon_hunter_honored = image('icons/mob/screen/yautja.dmi', src, "hunter_honored") holder.overlays += hud_icon_hunter_honored hud_list[HUNTER_HUD] = holder diff --git a/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/facehugger/abilities_facehugger.dm b/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/facehugger/abilities_facehugger.dm index 37d880d674b..b209a365018 100644 --- a/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/facehugger/abilities_facehugger.dm +++ b/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/facehugger/abilities_facehugger.dm @@ -76,7 +76,7 @@ if(owner.layer == XENO_HIDING_LAYER) //Xeno is currently hiding, unhide him owner.layer = MOB_LAYER var/datum/action/ability/xeno_action/xenohide/hide_action = owner.actions_by_path[/datum/action/ability/xeno_action/xenohide] - hide_action?.button?.cut_overlay(mutable_appearance('modular_RUtgmc/icons/Xeno/actions.dmi', "selected_purple_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE)) // Removes Hide action icon border + hide_action?.button?.cut_overlay(mutable_appearance('icons/Xeno/actions.dmi', "selected_purple_frame", ACTION_LAYER_ACTION_ICON_STATE, FLOAT_PLANE)) // Removes Hide action icon border if(owner.buckled) owner.buckled.unbuckle_mob(owner) diff --git a/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/hivemind/abilities_hivemind.dm b/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/hivemind/abilities_hivemind.dm index f4b4dd20fab..783bae35c34 100644 --- a/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/hivemind/abilities_hivemind.dm +++ b/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/hivemind/abilities_hivemind.dm @@ -1,11 +1,11 @@ //List of Hivemind resin structure images GLOBAL_LIST_INIT(hivemind_resin_images_list, list( - RESIN_WALL = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = RESIN_WALL), - STICKY_RESIN = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = STICKY_RESIN), - RESIN_DOOR = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = RESIN_DOOR), - ALIEN_NEST = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = ALIEN_NEST), - GROWTH_WALL = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = GROWTH_WALL), - GROWTH_DOOR = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = GROWTH_DOOR) + RESIN_WALL = image('icons/Xeno/actions.dmi', icon_state = RESIN_WALL), + STICKY_RESIN = image('icons/Xeno/actions.dmi', icon_state = STICKY_RESIN), + RESIN_DOOR = image('icons/Xeno/actions.dmi', icon_state = RESIN_DOOR), + ALIEN_NEST = image('icons/Xeno/actions.dmi', icon_state = ALIEN_NEST), + GROWTH_WALL = image('icons/Xeno/actions.dmi', icon_state = GROWTH_WALL), + GROWTH_DOOR = image('icons/Xeno/actions.dmi', icon_state = GROWTH_DOOR) )) /datum/action/ability/xeno_action/sow/hivemind diff --git a/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/panther/abilities_panther.dm b/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/panther/abilities_panther.dm index d84c4b01bdb..0c5a5081861 100644 --- a/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/panther/abilities_panther.dm +++ b/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/castes/panther/abilities_panther.dm @@ -497,10 +497,10 @@ // This is cursed, don't copy this code its the WRONG way to do this. // TODO: generate this from GLOB.panther_toxin_type_list (or wait while offtgmc reworks the defiler code and then copy it ) var/static/list/panther_toxin_images_list = list( - PANTHER_HEMODILE = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = PANTHER_HEMODILE), - PANTHER_TRANSVITOX = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = PANTHER_TRANSVITOX), - PANTHER_OZELOMELYN = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = PANTHER_OZELOMELYN), - PANTHER_SANGUINAL = image('modular_RUtgmc/icons/Xeno/actions.dmi', icon_state = PANTHER_SANGUINAL), + PANTHER_HEMODILE = image('icons/Xeno/actions.dmi', icon_state = PANTHER_HEMODILE), + PANTHER_TRANSVITOX = image('icons/Xeno/actions.dmi', icon_state = PANTHER_TRANSVITOX), + PANTHER_OZELOMELYN = image('icons/Xeno/actions.dmi', icon_state = PANTHER_OZELOMELYN), + PANTHER_SANGUINAL = image('icons/Xeno/actions.dmi', icon_state = PANTHER_SANGUINAL), ) var/toxin_choice = show_radial_menu(owner, owner, panther_toxin_images_list, radius = 48) if(!toxin_choice) diff --git a/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/life.dm b/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/life.dm index 5167683cb51..04e98c23280 100644 --- a/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/life.dm +++ b/modular_RUtgmc/code/modules/mob/living/carbon/xenomorph/life.dm @@ -43,9 +43,9 @@ amount = round(evolution_stored * 100 / xeno_caste.evolution_threshold, 5) hud_used.alien_evolve_display.icon_state = "evolve[amount]" if(!hive.check_ruler() && !isxenolarva(src)) - hud_used.alien_evolve_display.overlays += image('modular_RUtgmc/icons/mob/screen/alien_better.dmi', icon_state = "evolve_cant") + hud_used.alien_evolve_display.overlays += image('icons/mob/screen/alien_better.dmi', icon_state = "evolve_cant") else - hud_used.alien_evolve_display.overlays -= image('modular_RUtgmc/icons/mob/screen/alien_better.dmi', icon_state = "evolve_cant") + hud_used.alien_evolve_display.overlays -= image('icons/mob/screen/alien_better.dmi', icon_state = "evolve_cant") else hud_used.alien_evolve_display.icon_state = "evolve_empty" else @@ -59,15 +59,15 @@ hud_used.alien_sunder_display.icon_state = "sunder[amount]" switch(amount) if(80 to 100) - hud_used.alien_sunder_display.overlays += image('modular_RUtgmc/icons/mob/screen/alien_better.dmi', icon_state = "sunder_warn0") + hud_used.alien_sunder_display.overlays += image('icons/mob/screen/alien_better.dmi', icon_state = "sunder_warn0") if(60 to 80) - hud_used.alien_sunder_display.overlays += image('modular_RUtgmc/icons/mob/screen/alien_better.dmi', icon_state = "sunder_warn1") + hud_used.alien_sunder_display.overlays += image('icons/mob/screen/alien_better.dmi', icon_state = "sunder_warn1") if(40 to 60) - hud_used.alien_sunder_display.overlays += image('modular_RUtgmc/icons/mob/screen/alien_better.dmi', icon_state = "sunder_warn2") + hud_used.alien_sunder_display.overlays += image('icons/mob/screen/alien_better.dmi', icon_state = "sunder_warn2") if(20 to 40) - hud_used.alien_sunder_display.overlays += image('modular_RUtgmc/icons/mob/screen/alien_better.dmi', icon_state = "sunder_warn3") + hud_used.alien_sunder_display.overlays += image('icons/mob/screen/alien_better.dmi', icon_state = "sunder_warn3") if(0 to 20) - hud_used.alien_sunder_display.overlays += image('modular_RUtgmc/icons/mob/screen/alien_better.dmi', icon_state = "sunder_warn4") + hud_used.alien_sunder_display.overlays += image('icons/mob/screen/alien_better.dmi', icon_state = "sunder_warn4") else hud_used.alien_sunder_display.icon_state = "sunder0" diff --git a/modular_RUtgmc/code/modules/xenomorph/xeno_structures.dm b/modular_RUtgmc/code/modules/xenomorph/xeno_structures.dm index c8f2a335af0..9d896233487 100644 --- a/modular_RUtgmc/code/modules/xenomorph/xeno_structures.dm +++ b/modular_RUtgmc/code/modules/xenomorph/xeno_structures.dm @@ -46,14 +46,14 @@ /obj/structure/xeno/evotower/Initialize(mapload, _hivenumber) . = ..() - SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "tower")) + SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('icons/UI_icons/map_blips.dmi', null, "tower")) /obj/structure/xeno/evotower/ex_act(severity) take_damage(severity * 2.5, BRUTE, BOMB) /obj/structure/xeno/psychictower/Initialize(mapload, _hivenumber) . = ..() - SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "tower")) + SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('icons/UI_icons/map_blips.dmi', null, "tower")) /obj/structure/xeno/psychictower/ex_act(severity) take_damage(severity * 2.5, BRUTE, BOMB) @@ -63,7 +63,7 @@ /obj/structure/xeno/plant/Initialize(mapload, _hivenumber) . = ..() - SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('modular_RUtgmc/icons/UI_icons/map_blips.dmi', null, "[mature_icon_state]")) + SSminimaps.add_marker(src, MINIMAP_FLAG_XENO, image('icons/UI_icons/map_blips.dmi', null, "[mature_icon_state]")) /obj/structure/xeno/trap/ex_act(severity) take_damage(severity, BRUTE, BOMB) diff --git a/modular_RUtgmc/icons/UI_Icons/map_blips.dmi b/modular_RUtgmc/icons/UI_Icons/map_blips.dmi deleted file mode 100644 index 567e1e62f96..00000000000 Binary files a/modular_RUtgmc/icons/UI_Icons/map_blips.dmi and /dev/null differ diff --git a/modular_RUtgmc/icons/Xeno/actions.dmi b/modular_RUtgmc/icons/Xeno/actions.dmi deleted file mode 100644 index 88ae58bd94e..00000000000 Binary files a/modular_RUtgmc/icons/Xeno/actions.dmi and /dev/null differ diff --git a/modular_RUtgmc/icons/mob/actions.dmi b/modular_RUtgmc/icons/mob/actions.dmi deleted file mode 100644 index c50cd1e6954..00000000000 Binary files a/modular_RUtgmc/icons/mob/actions.dmi and /dev/null differ diff --git a/modular_RUtgmc/icons/mob/screen/health.dmi b/modular_RUtgmc/icons/mob/screen/health.dmi deleted file mode 100644 index 1026e92ef2e..00000000000 Binary files a/modular_RUtgmc/icons/mob/screen/health.dmi and /dev/null differ diff --git a/modular_RUtgmc/includes.dm b/modular_RUtgmc/includes.dm index 70858dbd290..04f08f2ea39 100644 --- a/modular_RUtgmc/includes.dm +++ b/modular_RUtgmc/includes.dm @@ -1,30 +1,6 @@ -#include "code\__HELPERS\text.dm" -#include "code\__HELPERS\unsorted.dm" -#include "code\_globalvars\lists\flavor_misc.dm" -#include "code\_globalvars\lists\mapping.dm" -#include "code\_globalvars\lists\mobs.dm" -#include "code\_globalvars\lists\objects.dm" -#include "code\_onclick\xeno.dm" -#include "code\_onclick\hud\hud.dm" -#include "code\_onclick\hud\screen_objects\menu_text_objects.dm" -#include "code\_onclick\hud\screen_objects\screen_objects.dm" -#include "code\_onclick\hud\xeno\larva.dm" -#include "code\_onclick\hud\xeno\xeno.dm" -#include "code\controllers\configuration\entries\general.dm" -#include "code\controllers\subsystem\cellauto.dm" -#include "code\controllers\subsystem\job.dm" -#include "code\controllers\subsystem\predships.dm" -#include "code\controllers\subsystem\hunt_system.dm" -#include "code\controllers\subsystem\minimaps.dm" -#include "code\controllers\subsystem\points.dm" -#include "code\controllers\subsystem\processing\resinshaping.dm" #include "code\datums\namepool.dm" #include "code\datums\shuttles.dm" #include "code\datums\skills.dm" -#include "code\datums\actions\ability_actions.dm" -#include "code\datums\actions\observer_action.dm" -#include "code\datums\actions\xeno_action.dm" -#include "code\datums\actions\actions\action.dm" #include "code\datums\autocells\auto_cell.dm" #include "code\datums\autocells\explosion.dm" #include "code\datums\autocells\vomitwave.dm" @@ -377,9 +353,6 @@ #include "code\modules\projectiles\guns\shotguns.dm" #include "code\modules\projectiles\guns\smgs.dm" #include "code\modules\projectiles\guns\specialist.dm" -#include "code\__HELPERS\matrices.dm" -#include "code\_onclick\hud\defines.dm" -#include "code\_onclick\hud\yautja.dm" #include "code\datums\elements\yautja_tracked_item.dm" #include "code\datums\jobs\job\job.dm" #include "code\datums\jobs\job\pred.dm" @@ -407,8 +380,6 @@ #include "code\modules\vehicles\mecha\mecha_defense.dm" #include "code\modules\vehicles\powerloader.dm" #include "code\modules\xenomorph\xeno_structures.dm" -#include "code\controllers\configuration\entries.dm" -#include "code\controllers\subsystem\dbcore.dm" #include "code\game\objects\items\weapons\weapons.dm" #include "code\modules\client\preferences.dm" #include "code\modules\projectiles\mounted.dm" diff --git a/tgmc.dme b/tgmc.dme index 671703d520f..cd6e10363f8 100644 --- a/tgmc.dme +++ b/tgmc.dme @@ -236,6 +236,7 @@ #include "code\_onclick\hud\human.dm" #include "code\_onclick\hud\movable_screen_objects.dm" #include "code\_onclick\hud\new_player.dm" +#include "code\_onclick\hud\yautja.dm" #include "code\_onclick\hud\parallax.dm" #include "code\_onclick\hud\picture_in_picture.dm" #include "code\_onclick\hud\radial.dm" @@ -269,6 +270,7 @@ #include "code\controllers\subsystem\aura.dm" #include "code\controllers\subsystem\autofire.dm" #include "code\controllers\subsystem\blackbox.dm" +#include "code\controllers\subsystem\cellauto.dm" #include "code\controllers\subsystem\chat.dm" #include "code\controllers\subsystem\codex.dm" #include "code\controllers\subsystem\dbcore.dm" @@ -296,6 +298,8 @@ #include "code\controllers\subsystem\monitor.dm" #include "code\controllers\subsystem\npcpool.dm" #include "code\controllers\subsystem\overlays.dm" +#include "code\controllers\subsystem\hunt_system.dm" +#include "code\controllers\subsystem\predships.dm" #include "code\controllers\subsystem\parallax.dm" #include "code\controllers\subsystem\pathfinder.dm" #include "code\controllers\subsystem\persistence.dm"