diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 4e64cf6ff7..fb33f2fafb 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -81,6 +81,12 @@ Then in our `handle_grabs_ch()` proc, if we want to avoid performing the stock g * Reference issues and pull requests liberally. * Use the GitHub magic words "Fixed/Fixes/Fix, Resolved/Resolves/Resolve, Closed/Closes/Close", as in, "Closes #1928", as this will automatically close that issue when the PR is merged if it is a fix for that issue. +### Early porting + +* You may earlyport. +* Follow standard chompcomments incase upstream ends up closing their PR for any reason. +* If it does get merged upstream and the mirror appears on our repo, you are responsible for unfucking the comments situation, because it'll have to say VORE edits instead of CHOMP edits. + ## Licensing CHOMPStation is licensed under the GNU Affero General Public License version 3, which can be found in full in LICENSE-AGPL3.txt. diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index f81e48b044..b133acc9ec 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -86,18 +86,15 @@ #define LANGUAGE_ROOTLOCAL "Local Rootspeak" #define LANGUAGE_ROOTGLOBAL "Global Rootspeak" #define LANGUAGE_CULT "Cult" -#define LANGUAGE_OCCULT "Occult" #define LANGUAGE_CHANGELING "Changeling" #define LANGUAGE_VOX "Vox-Pidgin" #define LANGUAGE_TERMINUS "Terminus" -#define LANGUAGE_SKRELLIANFAR "High Skrellian" #define LANGUAGE_MINBUS "Minbus" #define LANGUAGE_EVENT1 "Occursus" #define LANGUAGE_AKHANI "Akhani" #define LANGUAGE_ALAI "Alai" #define LANGUAGE_ZADDAT "Vedahq" #define LANGUAGE_PROMETHEAN "Promethean Biolinguistics" -#define LANGUAGE_BLOB "Chemosense Transmission" #define LANGUAGE_GIBBERISH "Babel" // Language flags. diff --git a/code/__defines/species_languages_vr.dm b/code/__defines/species_languages_vr.dm index 1a5fbdab4c..b8f3ed3429 100644 --- a/code/__defines/species_languages_vr.dm +++ b/code/__defines/species_languages_vr.dm @@ -1,7 +1,7 @@ #define SPECIES_WHITELIST_SELECTABLE 0x20 // Can select and customize, but not join as #define LANGUAGE_DRUDAKAR "D'Rudak'Ar" -#define LANGUAGE_SLAVIC "Pan-Slavic" +#define LANGUAGE_SLAVIC "Pan-Slavic" //CHOMP reAdd #define LANGUAGE_BIRDSONG "Birdsong" #define LANGUAGE_SAGARU "Sagaru" #define LANGUAGE_CANILUNZT "Canilunzt" @@ -10,13 +10,9 @@ #define LANGUAGE_ENOCHIAN "Enochian" #define LANGUAGE_VESPINAE "Vespinae" #define LANGUAGE_SPACER "Spacer" -#define LANGUAGE_CLOWNISH "Coulrian" #define LANGUAGE_TAVAN "Tavan" #define LANGUAGE_ECHOSONG "Echo Song" -#define LANGUAGE_CHIMPANZEE "Chimpanzee" -#define LANGUAGE_NEAERA "Neaera" -#define LANGUAGE_STOK "Stok" -#define LANGUAGE_FARWA "Farwa" +#define LANGUAGE_ANIMAL "Animal" #define LANGUAGE_SHADEKIN "Shadekin Empathy" diff --git a/code/_global_vars/mobs.dm b/code/_global_vars/mobs.dm index 7e60dc71ea..9e1027bc88 100644 --- a/code/_global_vars/mobs.dm +++ b/code/_global_vars/mobs.dm @@ -1,5 +1,7 @@ GLOBAL_LIST_EMPTY(admins) //all clients whom are admins GLOBAL_PROTECT(admins) +GLOBAL_LIST_EMPTY(mentors) +GLOBAL_PROTECT(mentors) GLOBAL_LIST_EMPTY(deadmins) //all ckeys who have used the de-admin verb. GLOBAL_LIST_EMPTY(stealthminID) GLOBAL_LIST_EMPTY(directory) //all ckeys with associated client diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 2f336d1a39..2a81ab313d 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -79,6 +79,7 @@ var/list/gamemode_cache = list() var/static/kick_inactive = 0 //force disconnect for inactive players after this many minutes, if non-0 var/static/show_mods = 0 var/static/show_devs = 0 + var/static/show_mentors = 0 var/static/show_event_managers = 0 var/static/mods_can_tempban = 0 var/static/mods_can_job_tempban = 0 @@ -290,7 +291,7 @@ var/list/gamemode_cache = list() // How strictly the loadout enforces object species whitelists var/loadout_whitelist = LOADOUT_WHITELIST_LAX - + var/static/vgs_access_identifier = null // VOREStation Edit - VGS var/static/vgs_server_port = null // VOREStation Edit - VGS @@ -660,6 +661,9 @@ var/list/gamemode_cache = list() if("show_devs") config.show_devs = 1 + if("show_mentors") + config.show_mentors = 1 + if("show_event_managers") config.show_event_managers = 1 diff --git a/code/controllers/subsystems/job.dm b/code/controllers/subsystems/job.dm index f265f39955..2aa6d84cb6 100644 --- a/code/controllers/subsystems/job.dm +++ b/code/controllers/subsystems/job.dm @@ -131,12 +131,13 @@ SUBSYSTEM_DEF(job) return department_datums[primary_department] +/datum/controller/subsystem/job/proc/get_ping_role(var/role) + var/datum/job/J = get_job(role) + if(J.requestable) + return get_primary_department_of_job(J) + // Someday it might be good to port code/game/jobs/job_controller.dm to here and clean it up. - - - - /datum/controller/subsystem/job/proc/job_debug_message(message) if(debug_messages) log_debug("JOB DEBUG: [message]") \ No newline at end of file diff --git a/code/game/jobs/job/assistant_vr.dm b/code/game/jobs/job/assistant_vr.dm index bfcf3037b4..1aa1f7cb55 100644 --- a/code/game/jobs/job/assistant_vr.dm +++ b/code/game/jobs/job/assistant_vr.dm @@ -27,6 +27,7 @@ job_description = "An Intern does whatever is requested of them, often doing so in process of learning \ another job. Though they are part of the crew, they have no real authority." timeoff_factor = 0 // Interns, noh + requestable = FALSE /datum/alt_title/intern_eng title = "Apprentice Engineer" @@ -96,6 +97,7 @@ supervisors = "nobody! You don't work here" job_description = "A Visitor is just there to visit the place. They have no real authority or responsibility." timeoff_factor = 0 + requestable = FALSE alt_titles = list("Guest" = /datum/alt_title/guest, "Traveler" = /datum/alt_title/traveler) /datum/job/assistant/New() diff --git a/code/game/jobs/job/engineering_vr.dm b/code/game/jobs/job/engineering_vr.dm index 1455fe0df0..e0ca7bac7e 100644 --- a/code/game/jobs/job/engineering_vr.dm +++ b/code/game/jobs/job/engineering_vr.dm @@ -23,6 +23,9 @@ /datum/alt_title/maintenance_manager title = "Maintenance Manager" +/datum/job/chief_engineer/get_request_reasons() + return list("Engine setup", "Construction project", "Repairs necessary") + /datum/job/engineer pto_type = PTO_ENGINEERING @@ -38,6 +41,9 @@ title = "Engineering Contractor" title_blurb = "An Engineering Contractor fulfills similar duties to other engineers, but isn't directly employed by NT proper." +/datum/job/engineer/get_request_reasons() + return list("Engine setup", "Construction project", "Repairs necessary") + @@ -55,3 +61,6 @@ /datum/alt_title/disposals_tech title = "Disposals Technician" title_blurb = "A Disposals Technician is an Atmospheric Technician still and can fulfill all the same duties, although specializes more in disposals delivery system's operations and configurations." + +/datum/job/atmos/get_request_reasons() + return list("Construction project", "Repairs necessary") \ No newline at end of file diff --git a/code/game/jobs/job/job_vr.dm b/code/game/jobs/job/job_vr.dm index 0f2599b8aa..ac8b6be0b4 100644 --- a/code/game/jobs/job/job_vr.dm +++ b/code/game/jobs/job/job_vr.dm @@ -20,6 +20,8 @@ //Do we forbid ourselves from earning PTO? var/playtime_only = FALSE + var/requestable = TRUE + // Check client-specific availability rules. /datum/job/proc/player_has_enough_pto(client/C) return timeoff_factor >= 0 || (C && LAZYACCESS(C.department_hours, pto_type) > 0) @@ -58,4 +60,7 @@ if(isnum(C.play_hours[PTO_EXPLORATION])) remaining_time_needed = max(0, remaining_time_needed - C.play_hours[PTO_EXPLORATION]) return remaining_time_needed - return 0 \ No newline at end of file + return 0 + +/datum/job/proc/get_request_reasons() + return list() \ No newline at end of file diff --git a/code/game/jobs/job/medical_vr.dm b/code/game/jobs/job/medical_vr.dm index 29033ebadc..5fc2081ebd 100644 --- a/code/game/jobs/job/medical_vr.dm +++ b/code/game/jobs/job/medical_vr.dm @@ -21,6 +21,9 @@ /datum/alt_title/healthcare_manager title = "Healthcare Manager" +/datum/job/cmo/get_request_reasons() + return list("Surgery pending", "Viral outbreak") + /datum/job/doctor spawn_positions = 5 @@ -29,7 +32,6 @@ "Emergency Physician" = /datum/alt_title/emergency_physician, "Nurse" = /datum/alt_title/nurse, "Orderly" = /datum/alt_title/orderly, "Virologist" = /datum/alt_title/virologist, "Medical Contractor" = /datum/alt_title/medical_contractor) - /datum/alt_title/physician title = "Physician" @@ -46,6 +48,9 @@ title = "Medical Contractor" title_blurb = "A Medical Contractor can be anything from a full-blown doctor to the likes of a nurse or orderly, but isn't directly employed by NT proper." +/datum/job/doctor/get_request_reasons() + return list("Surgery pending", "Viral outbreak") + /datum/job/chemist pto_type = PTO_MEDICAL diff --git a/code/game/jobs/job/security_vr.dm b/code/game/jobs/job/security_vr.dm index bba60df71a..22de747d7b 100644 --- a/code/game/jobs/job/security_vr.dm +++ b/code/game/jobs/job/security_vr.dm @@ -16,6 +16,9 @@ /datum/alt_title/security_manager title = "Security Manager" +/datum/job/hos/get_request_reasons() + return list("Wildlife management", "Forensic investigation") + /datum/job/warden pto_type = PTO_SECURITY @@ -28,6 +31,9 @@ /datum/alt_title/armory_superintendent title = "Armory Superintendent" +/datum/job/warden/get_request_reasons() + return list("Wildlife management") + /datum/job/detective pto_type = PTO_SECURITY @@ -39,6 +45,9 @@ /datum/alt_title/security_inspector title = "Security Inspector" +/datum/job/detective/get_request_reasons() + return list("Forensic investigation") + /datum/job/officer total_positions = 5 @@ -58,3 +67,6 @@ /datum/alt_title/security_contractor title = "Security Contractor" + +/datum/job/officer/get_request_reasons() + return list("Wildlife management") diff --git a/code/game/jobs/job/special_vr.dm b/code/game/jobs/job/special_vr.dm index 54e8c157da..3a10a23df5 100644 --- a/code/game/jobs/job/special_vr.dm +++ b/code/game/jobs/job/special_vr.dm @@ -113,6 +113,7 @@ job_description = "A Clown is there to entertain the crew and keep high morale using various harmless pranks and ridiculous jokes!" whitelist_only = 1 latejoin_only = 0 + requestable = FALSE outfit_type = /decl/hierarchy/outfit/job/clown pto_type = PTO_CIVILIAN alt_titles = list("Jester" = /datum/alt_title/jester, "Fool" = /datum/alt_title/fool) @@ -144,6 +145,7 @@ alt_titles = list("Poseur" = /datum/alt_title/poseur) whitelist_only = 1 latejoin_only = 0 + requestable = FALSE outfit_type = /decl/hierarchy/outfit/job/mime pto_type = PTO_CIVILIAN diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 14758aa2f6..2a79c6aaac 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -208,7 +208,6 @@ R.add_language(LANGUAGE_SIIK, 1) R.add_language(LANGUAGE_AKHANI, 1) R.add_language(LANGUAGE_SKRELLIAN, 1) - R.add_language(LANGUAGE_SKRELLIANFAR, 0) R.add_language(LANGUAGE_GUTTER, 1) R.add_language(LANGUAGE_SCHECHI, 1) R.add_language(LANGUAGE_ROOTLOCAL, 1) diff --git a/code/game/objects/items/robot/robot_upgrades_vr.dm b/code/game/objects/items/robot/robot_upgrades_vr.dm index 499d535a5c..72707e5048 100644 --- a/code/game/objects/items/robot/robot_upgrades_vr.dm +++ b/code/game/objects/items/robot/robot_upgrades_vr.dm @@ -6,7 +6,7 @@ R.add_language(LANGUAGE_ECUREUILIAN, 1) R.add_language(LANGUAGE_DAEMON, 1) R.add_language(LANGUAGE_ENOCHIAN, 1) - R.add_language(LANGUAGE_SLAVIC, 1) + R.add_language(LANGUAGE_SLAVIC, 1) //CHOMP reAdd R.add_language(LANGUAGE_DRUDAKAR, 1) R.add_language(LANGUAGE_TAVAN, 1) return 1 @@ -203,4 +203,4 @@ if(T) to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!") to_chat(usr, "There's no mounting point for the module!") - return 0 \ No newline at end of file + return 0 diff --git a/code/game/objects/items/weapons/implants/implant_vr.dm b/code/game/objects/items/weapons/implants/implant_vr.dm index 127f300ab7..362a5e0be6 100644 --- a/code/game/objects/items/weapons/implants/implant_vr.dm +++ b/code/game/objects/items/weapons/implants/implant_vr.dm @@ -22,20 +22,17 @@ if (emote == "smile") src.uses-- to_chat(source,"You suddenly feel as if you can understand other languages!") - source.add_language(LANGUAGE_CHIMPANZEE) - source.add_language(LANGUAGE_NEAERA) - source.add_language(LANGUAGE_STOK) - source.add_language(LANGUAGE_FARWA) source.add_language(LANGUAGE_UNATHI) source.add_language(LANGUAGE_SIIK) source.add_language(LANGUAGE_SKRELLIAN) + source.add_language(LANGUAGE_ANIMAL) source.add_language(LANGUAGE_SCHECHI) source.add_language(LANGUAGE_BIRDSONG) source.add_language(LANGUAGE_SAGARU) source.add_language(LANGUAGE_CANILUNZT) - source.add_language(LANGUAGE_SLAVIC) + source.add_language(LANGUAGE_SLAVIC) //CHOMP reAdd source.add_language(LANGUAGE_SOL_COMMON) //In case they're giving a xenomorph an implant or something. - source.add_language(LANGUAGE_TAVAN) + source.add_language(LANGUAGE_TAVAN) /obj/item/weapon/implant/vrlanguage/post_implant(mob/source) source.mind.store_memory("A implant can be activated by using the smile emote, say *smile to attempt to activate.", 0, 0) diff --git a/code/game/world.dm b/code/game/world.dm index 9d7ace91a6..07f7d4ac00 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -80,8 +80,8 @@ var/world_topic_spam_protect_ip = "0.0.0.0" var/world_topic_spam_protect_time = world.timeofday /world/Topic(T, addr, master, key) - TGS_TOPIC - VGS_TOPIC // VOREStation Edit - VGS + VGS_TOPIC // VOREStation Edit - VGS //CHOMP Edit swapped lines around + TGS_TOPIC //CHOMP Edit swapped lines around log_topic("\"[T]\", from:[addr], master:[master], key:[key]") if (T == "ping") @@ -113,7 +113,7 @@ var/world_topic_spam_protect_time = world.timeofday s["players"] = 0 s["stationtime"] = stationtime2text() s["roundduration"] = roundduration2text() - s["map"] = strip_improper(using_map.full_name) //Done to remove the non-UTF-8 text macros + s["map"] = strip_improper(using_map.full_name) //Done to remove the non-UTF-8 text macros if(input["status"] == "2") // Shiny new hip status. var/active = 0 @@ -509,12 +509,9 @@ var/world_topic_spam_protect_time = world.timeofday if (copytext(line, 1, 2) == ";") continue - var/title = "Mentor" - var/rights = admin_ranks[title] - var/ckey = copytext(line, 1, length(line)+1) - var/datum/admins/D = new /datum/admins(title, rights, ckey) - D.associate(GLOB.directory[ckey]) + var/datum/mentor/M = new /datum/mentor(ckey) + M.associate(GLOB.directory[ckey]) /world/proc/update_status() var/s = "" @@ -544,7 +541,7 @@ var/world_topic_spam_protect_time = world.timeofday features += config.abandon_allowed ? "respawn" : "no respawn" features += config.persistence_disabled ? "persistence disabled" : "persistence enabled" - + features += config.persistence_ignore_mapload ? "persistence mapload disabled" : "persistence mapload enabled" if (config && config.allow_vote_mode) @@ -694,7 +691,7 @@ var/failed_old_db_connections = 0 if(dbcon_old?.IsConnected()) results += "WARNING: dbcon_old is connected, not touching it, but is this intentional?" - + if(!config.sql_enabled) results += "stopping because config.sql_enabled = false" else @@ -703,7 +700,7 @@ var/failed_old_db_connections = 0 results += "SUCCESS: set up a connection successfully with setup_database_connection()" else results += "FAIL: failed to connect to the database with setup_database_connection()" - + results += "-- DB Reset End --" to_world_log(results.Join("\n")) */ @@ -713,11 +710,11 @@ var/failed_old_db_connections = 0 if(!istype(GLOB.players_by_zlevel, /list)) GLOB.players_by_zlevel = new /list(world.maxz, 0) GLOB.living_players_by_zlevel = new /list(world.maxz, 0) - + while(GLOB.players_by_zlevel.len < world.maxz) GLOB.players_by_zlevel.len++ GLOB.players_by_zlevel[GLOB.players_by_zlevel.len] = list() - + GLOB.living_players_by_zlevel.len++ GLOB.living_players_by_zlevel[GLOB.living_players_by_zlevel.len] = list() @@ -759,10 +756,10 @@ var/global/game_id = null game_id = "" var/list/c = list( - "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", - "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", - "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", + "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", + "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" ) var/l = c.len diff --git a/code/modules/admin/admin_verb_lists_vr.dm b/code/modules/admin/admin_verb_lists_vr.dm index ced5e5712e..cbbeab71ad 100644 --- a/code/modules/admin/admin_verb_lists_vr.dm +++ b/code/modules/admin/admin_verb_lists_vr.dm @@ -7,6 +7,8 @@ var/list/admin_verbs_default = list( /client/proc/cmd_admin_say, //VOREStation Add, /client/proc/cmd_mod_say, //VOREStation Add, /client/proc/cmd_event_say, //VOREStation Add, + /client/proc/cmd_mentor_ticket_panel, + /client/proc/cmd_mentor_say // /client/proc/hide_verbs, //hides all our adminverbs, //VOREStation Remove, // /client/proc/hide_most_verbs, //hides all our hideable adminverbs, //VOREStation Remove, // /client/proc/debug_variables, //allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify, //VOREStation Remove, @@ -122,7 +124,9 @@ var/list/admin_verbs_admin = list( /datum/admins/proc/set_uplink, //VOREStation Add, /datum/admins/proc/sendFax, /client/proc/despawn_player, - /datum/admins/proc/view_feedback + /datum/admins/proc/view_feedback, + /client/proc/make_mentor, + /client/proc/unmake_mentor ) var/list/admin_verbs_ban = list( diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index f8bd2ab50e..d17219e59c 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -24,11 +24,8 @@ else if(href_list["ahelp_tickets"]) GLOB.ahelp_tickets.BrowseTickets(text2num(href_list["ahelp_tickets"])) -<<<<<<< HEAD -======= mentor_commands(href, href_list, src) ->>>>>>> 16eeda039c... Merge pull request #13503 from lm40/master if(href_list["dbsearchckey"] || href_list["dbsearchadmin"]) var/adminckey = href_list["dbsearchadmin"] diff --git a/code/modules/blob2/overmind/overmind.dm b/code/modules/blob2/overmind/overmind.dm index cdfe6d766a..625dca158f 100644 --- a/code/modules/blob2/overmind/overmind.dm +++ b/code/modules/blob2/overmind/overmind.dm @@ -25,7 +25,7 @@ var/list/overminds = list() universal_understand = TRUE - var/list/has_langs = list(LANGUAGE_BLOB) + var/list/has_langs = list(LANGUAGE_ANIMAL) var/datum/language/default_language = null /mob/observer/blob/get_default_language() diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 24df219632..5915a9a6f6 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -60,6 +60,14 @@ cmd_admin_pm(C,null) return + if(href_list["mentorhelp_msg"]) + var/client/C = locate(href_list["mentorhelp_msg"]) + if(ismob(C)) + var/mob/M = C + C = M.client + cmd_mentor_pm(C, null) + return + if(href_list["irc_msg"]) if(!holder && received_irc_pm < world.time - 6000) //Worse they can do is spam IRC for 10 minutes to_chat(usr, "You are no longer able to use this, it's been more then 10 minutes since an admin on IRC has responded to you") @@ -123,6 +131,7 @@ switch(href_list["_src_"]) if("holder") hsrc = holder + if("mentorholder") hsrc = (check_rights(R_ADMIN, 0) ? holder : mentorholder) if("usr") hsrc = mob if("prefs") return prefs.process_link(usr,href_list) if("vars") return view_var_Topic(href,href_list,hsrc) @@ -185,6 +194,10 @@ GLOB.admins += src holder.owner = src + mentorholder = mentor_datums[ckey] + if (mentorholder) + mentorholder.associate(GLOB.directory[ckey]) + //preferences datum - also holds some persistant data for the client (because we may as well keep these datums to a minimum) prefs = preferences_datums[ckey] if(!prefs) @@ -262,6 +275,9 @@ if(holder) holder.owner = null GLOB.admins -= src + if (mentorholder) + mentorholder.owner = null + GLOB.mentors -= src GLOB.ahelp_tickets.ClientLogout(src) GLOB.directory -= ckey GLOB.clients -= src diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm index 04f90a8051..489973a92e 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm @@ -91,7 +91,7 @@ /datum/gear/uniform/pants/New() ..() var/list/pants = list() - for(var/obj/item/clothing/under/pants/pant_type as anything in typesof(/obj/item/clothing/under/pants)) + for(var/obj/item/clothing/under/pants/pant_type as anything in (typesof(/obj/item/clothing/under/pants) - typesof(/obj/item/clothing/under/pants/altevian))) pants[initial(pant_type.name)] = pant_type gear_tweaks += new/datum/gear_tweak/path(sortAssoc(pants)) diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm index 41ebeafe1b..20f09a7fd8 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm @@ -36,7 +36,7 @@ /datum/gear/uniform/job_khi/med display_name = "ge uniform, med" //CHOMPedit: changed to GE suit path = /obj/item/clothing/under/rank/khi/med - allowed_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Paramedic","Geneticist","Field Medic") + allowed_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Paramedic","Geneticist","Field Medic","Psychiatrist") /datum/gear/uniform/job_khi/eng display_name = "ge uniform, eng" //CHOMPedit: changed to GE suit @@ -290,3 +290,38 @@ Talon jumpsuit display_name = "undersuit, command (SM/HoP)" allowed_roles = list("Site Manager", "Head of Personnel") path = /obj/item/clothing/under/undersuit/command + +//Altevian Uniforms +/datum/gear/uniform/job_altevian/cmd + display_name = "altevian uniform, cmd" + path = /obj/item/clothing/under/pants/altevian/command + allowed_roles = list("Head of Security","Site Manager","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer") + +/datum/gear/uniform/job_altevian/sec + display_name = "altevian uniform, sec" + path = /obj/item/clothing/under/pants/altevian/security + allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer") + +/datum/gear/uniform/job_altevian/med + display_name = "altevian uniform, med" + path = /obj/item/clothing/under/pants/altevian/medical + allowed_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Paramedic","Geneticist","Field Medic","Psychiatrist") + +/datum/gear/uniform/job_altevian/eng + display_name = "altevian uniform, eng" + path = /obj/item/clothing/under/pants/altevian/engineering + allowed_roles = list("Chief Engineer","Atmospheric Technician","Engineer") + +/datum/gear/uniform/job_altevian/sci + display_name = "altevian uniform, sci" + path = /obj/item/clothing/under/pants/altevian/science + allowed_roles = list("Research Director", "Scientist", "Roboticist", "Xenobiologist", "Xenobotanist") + +/datum/gear/uniform/job_altevian/crg + display_name = "altevian uniform, cargo" + path = /obj/item/clothing/under/pants/altevian/cargo + allowed_roles = list("Quartermaster", "Cargo Technician", "Shaft Miner") + +/datum/gear/uniform/job_altevian/civ + display_name = "altevian uniform, civ" + path = /obj/item/clothing/under/pants/altevian diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno.dm b/code/modules/client/preference_setup/loadout/loadout_xeno.dm index 4194ab5370..41cc5aa037 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno.dm @@ -167,9 +167,9 @@ sort_category = "Xenowear" /datum/gear/uniform/dept/undercoat/cap - display_name = "facility director undercoat (Teshari)" + display_name = "site manager undercoat (Teshari)" path = /obj/item/clothing/under/teshari/undercoat/jobs/cap - allowed_roles = list("Facility Director") + allowed_roles = list("Site Manager") /datum/gear/uniform/dept/undercoat/hop display_name = "head of personnel undercoat (Teshari)" @@ -276,9 +276,9 @@ sort_category = "Xenowear" /datum/gear/suit/dept/cloak/cap - display_name = "facility director cloak (Teshari)" + display_name = "site manager cloak (Teshari)" path = /obj/item/clothing/suit/storage/teshari/cloak/jobs - allowed_roles = list("Facility Director") + allowed_roles = list("Site Manager") /datum/gear/suit/dept/cloak/hop display_name = "head of personnel cloak (Teshari)" diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm index 006815d443..17c257828a 100644 --- a/code/modules/client/verbs/who.dm +++ b/code/modules/client/verbs/who.dm @@ -83,7 +83,7 @@ else if(check_rights(R_STEALTH, FALSE, C)) // event managers //VOREStation Edit: Retired Staff category = R_EVENT num_event_managers_online++ - + temp += "\t[C] is a [C.holder.rank]" if(holder) if(C.holder.fakekey) @@ -121,6 +121,28 @@ if(config.show_event_managers) msg += "\n Current Miscellaneous ([num_event_managers_online]):\n" + eventMmsg + var/num_mentors_online = 0 + var/mmsg = "" + + for(var/client/C in GLOB.mentors) + num_mentors_online++ + mmsg += "\t[C] is a Mentor" + if(holder) + if(isobserver(C.mob)) + mmsg += " - Observing" + else if(istype(C.mob,/mob/new_player)) + mmsg += " - Lobby" + else + mmsg += " - Playing" + + if(C.is_afk()) + var/seconds = C.last_activity_seconds() + mmsg += " (AFK - [round(seconds / 60)] minutes, [seconds % 60] seconds)" + mmsg += "\n" + + if(config.show_mentors) + msg += "\n Current Mentors ([num_mentors_online]):\n" + mmsg + msg += "\nAdminhelps are also sent to Discord. If no admins are available in game try anyway and an admin on Discord may see it and respond." to_chat(src, msg) diff --git a/code/modules/clothing/suits/aliens/teshari.dm b/code/modules/clothing/suits/aliens/teshari.dm index e74a1f3292..2cf99ff727 100644 --- a/code/modules/clothing/suits/aliens/teshari.dm +++ b/code/modules/clothing/suits/aliens/teshari.dm @@ -106,8 +106,8 @@ // Job Cloaks /obj/item/clothing/suit/storage/teshari/cloak/jobs/cap - name = "facility director cloak" - desc = "A soft Teshari cloak made for the Facility Director" + name = "site manager cloak" + desc = "A soft Teshari cloak made for the Site Manager" icon_state = "tesh_cloak_cap" //Cargo diff --git a/code/modules/clothing/under/accessories/altevian_vr.dm b/code/modules/clothing/under/accessories/altevian_vr.dm new file mode 100644 index 0000000000..ec3322d185 --- /dev/null +++ b/code/modules/clothing/under/accessories/altevian_vr.dm @@ -0,0 +1,78 @@ +/obj/item/clothing/accessory/jacket/altevian + name = "Altevian Hegemony Civilian Jacket" + desc = "A form fitting jacket that looks more for fashion than for work with it leaving ones mid-riff exposed to the outside elements, but when looking so good it isn't really ones worry by that point! " + icon = 'icons/inventory/accessory/item_vr.dmi' + icon_override = 'icons/inventory/accessory/mob_vr.dmi' + icon_state = "altevian-jacket-civ" + item_state = "altevian-jacket-civ" + overlay_state = "altevian-jacket-civ" + +/obj/item/clothing/accessory/jacket/altevian/command + name = "Altevian Hegemony Command Jacket" + icon_state = "altevian-jacket-com" + item_state = "altevian-jacket-com" + overlay_state = "altevian-jacket-com" + +/obj/item/clothing/accessory/jacket/altevian/security + name = "Altevian Hegemony Security Jacket" + icon_state = "altevian-jacket-sec" + item_state = "altevian-jacket-sec" + overlay_state = "altevian-jacket-sec" + +/obj/item/clothing/accessory/jacket/altevian/medical + name = "Altevian Hegemony Command Jacket" + icon_state = "altevian-jacket-med" + item_state = "altevian-jacket-med" + overlay_state = "altevian-jacket-med" + +/obj/item/clothing/accessory/jacket/altevian/engineering + name = "Altevian Hegemony Engineering Jacket" + icon_state = "altevian-jacket-eng" + item_state = "altevian-jacket-eng" + overlay_state = "altevian-jacket-eng" + +/obj/item/clothing/accessory/jacket/altevian/science + name = "Altevian Hegemony Science Jacket" + icon_state = "altevian-jacket-sci" + item_state = "altevian-jacket-sci" + overlay_state = "altevian-jacket-sci" + +/obj/item/clothing/accessory/jacket/altevian/cargo + name = "Altevian Hegemony Cargo Jacket" + icon_state = "altevian-jacket-cargo" + item_state = "altevian-jacket-cargo" + overlay_state = "altevian-jacket-cargo" + + +/obj/item/clothing/accessory/scarf/altevian + name = "Blue Comfortable Scarf" + desc = "A scarf made of synthetic material that would be common among a people who don't really have the leisure of organic crops for luxury goods. They seemed to of refined this process though and one wouldn't be able to tell the difference between it and ones made normally." + icon = 'icons/inventory/accessory/item_vr.dmi' + icon_override = 'icons/inventory/accessory/mob_vr.dmi' + icon_state = "altevian-scarf-blue" + item_state = "altevian-scarf-blue" + overlay_state = "altevian-scarf-blue" + +/obj/item/clothing/accessory/scarf/altevian/red + name = "Red Comfortable Scarf" + icon_state = "altevian-scarf-red" + item_state = "altevian-scarf-red" + overlay_state = "altevian-scarf-red" + +/obj/item/clothing/accessory/scarf/altevian/yellow + name = "Yellow Comfortable Scarf" + icon_state = "altevian-scarf-yellow" + item_state = "altevian-scarf-yellow" + overlay_state = "altevian-scarf-yellow" + +/obj/item/clothing/accessory/scarf/altevian/green + name = "Green Comfortable Scarf" + icon_state = "altevian-scarf-green" + item_state = "altevian-scarf-green" + overlay_state = "altevian-scarf-green" + +/obj/item/clothing/accessory/scarf/altevian/purple + name = "Purple Comfortable Scarf" + icon_state = "altevian-scarf-purple" + item_state = "altevian-scarf-purple" + overlay_state = "altevian-scarf-purple" \ No newline at end of file diff --git a/code/modules/clothing/under/altevian_vr.dm b/code/modules/clothing/under/altevian_vr.dm new file mode 100644 index 0000000000..51f3bbef3b --- /dev/null +++ b/code/modules/clothing/under/altevian_vr.dm @@ -0,0 +1,46 @@ +/obj/item/clothing/under/pants/altevian + name = "Altevian Hegemony Civilian Pants" + desc = "An extremely comfortable set of clothing that's made to help people handle their day to day work around the fleets with little to no discomfort." + icon = 'icons/inventory/uniform/item_vr.dmi' + icon_override = 'icons/inventory/uniform/mob_vr.dmi' + icon_state = "altevian-pants-civ" + worn_state = "altevian-pants-civ" + gender = PLURAL + body_parts_covered = LOWER_TORSO|LEGS + starting_accessories = list(/obj/item/clothing/accessory/jacket/altevian) + +/obj/item/clothing/under/pants/altevian/command + name = "Altevian Hegemony Command Pants" + icon_state = "altevian-pants-com" + worn_state = "altevian-pants-com" + starting_accessories = list(/obj/item/clothing/accessory/jacket/altevian/command) + +/obj/item/clothing/under/pants/altevian/security + name = "Altevian Hegemony Security Pants" + icon_state = "altevian-pants-sec" + worn_state = "altevian-pants-sec" + starting_accessories = list(/obj/item/clothing/accessory/jacket/altevian/security) + +/obj/item/clothing/under/pants/altevian/engineering + name = "Altevian Hegemony Engineering Pants" + icon_state = "altevian-pants-eng" + worn_state = "altevian-pants-eng" + starting_accessories = list(/obj/item/clothing/accessory/jacket/altevian/engineering) + +/obj/item/clothing/under/pants/altevian/medical + name = "Altevian Hegemony Medical Pants" + icon_state = "altevian-pants-med" + worn_state = "altevian-pants-med" + starting_accessories = list(/obj/item/clothing/accessory/jacket/altevian/medical) + +/obj/item/clothing/under/pants/altevian/science + name = "Altevian Hegemony Science Pants" + icon_state = "altevian-pants-sci" + worn_state = "altevian-pants-sci" + starting_accessories = list(/obj/item/clothing/accessory/jacket/altevian/science) + +/obj/item/clothing/under/pants/altevian/cargo + name = "Altevian Hegemony Cargo Pants" + icon_state = "altevian-pants-cargo" + worn_state = "altevian-pants-cargo" + starting_accessories = list(/obj/item/clothing/accessory/jacket/altevian/cargo) diff --git a/code/modules/clothing/under/xenos/teshari.dm b/code/modules/clothing/under/xenos/teshari.dm index ea9da2250f..f410c0f5d8 100644 --- a/code/modules/clothing/under/xenos/teshari.dm +++ b/code/modules/clothing/under/xenos/teshari.dm @@ -221,8 +221,8 @@ //Job Undercoats /obj/item/clothing/under/teshari/undercoat/jobs/cap - name = "facility director undercoat" - desc = "A traditional Teshari garb made for the Facility Director" + name = "site manager undercoat" + desc = "A traditional Teshari garb made for the Site Manager" icon_state = "tesh_uniform_cap" /obj/item/clothing/under/teshari/undercoat/jobs/hop diff --git a/code/modules/mob/language/monkey.dm b/code/modules/mob/language/monkey.dm index 0ceaf4a88f..8224ca7aa8 100644 --- a/code/modules/mob/language/monkey.dm +++ b/code/modules/mob/language/monkey.dm @@ -1,58 +1,13 @@ -/datum/language/human/monkey - name = "Chimpanzee" +/datum/language/human/animal + name = LANGUAGE_ANIMAL desc = "A collection of ooking noises made by monkeys" - speech_verb = "chimpers" - ask_verb = "chimpers" - exclaim_verb = "screeches" + speech_verb = "says" + ask_verb = "inquires" + exclaim_verb = "yells" key = "C" - syllables = list("ook","eek") + syllables = list("chrp","tweet","squick","croak","hiss","gronk","meow","mew","bark", "woof", "bowwow", "yap", "arf") //This is a generalized animal language. If spoken by an animal, it comes out with the mob noises. This only occurs when spoken by a carbon (human). machine_understands = 0 -/datum/language/skrell/monkey - name = "Neaera" - desc = "A collection of squiking noises made by naera." - key = "8" - syllables = list("squick","croak") - machine_understands = 0 - -/datum/language/unathi/monkey - name = "Stok" - desc = "A collection of hissing noises made by stok." - key = "7" - syllables = list("hiss","gronk") - machine_understands = 0 - -/datum/language/tajaran/monkey - name = "Farwa" - desc = "A collection of meowing noises made by farwa." - key = "9" - syllables = list("meow","mew") - machine_understands = 0 - -/datum/language/corgi - name = "Dog" - desc = "A set of barks and woofs that only dogs can understand." - speech_verb = "barks" - ask_verb = "woofs" - exclaim_verb = "howls" - key = "n" - flags = RESTRICTED - machine_understands = 0 - space_chance = 100 - syllables = list("bark", "woof", "bowwow", "yap", "arf") - -/datum/language/cat - name = "Cat" - desc = "A set of meows and mrowls that only cats can understand." - speech_verb = "meows" - ask_verb = "mrowls" - exclaim_verb = "yowls" - key = "c" - flags = RESTRICTED - machine_understands = 0 - space_chance = 100 - syllables = list("meow", "mrowl", "purr", "meow", "meow", "meow") - /datum/language/mouse name = "Mouse" desc = "A set of squeaks that only mice can understand." @@ -65,18 +20,6 @@ space_chance = 100 syllables = list("squeak") // , "gripes", "oi", "meow") -/datum/language/bird - name = "Bird" - desc = "A set of chirps and squawks that only birds can understand." - speech_verb = "chirps" - ask_verb = "tweets" - exclaim_verb = "squawks" - key = "B" - flags = RESTRICTED - machine_understands = 0 - space_chance = 100 - syllables = list("chirp", "squawk", "tweet") - /datum/language/teppi name = "Teppi" desc = "A set of gyohs that only teppi can understand." diff --git a/code/modules/mob/language/outsider.dm b/code/modules/mob/language/outsider.dm index c2417a3b40..ff72aa1b24 100644 --- a/code/modules/mob/language/outsider.dm +++ b/code/modules/mob/language/outsider.dm @@ -74,17 +74,6 @@ "gal'h'rfikk", "harfrandid", "mud'gib", "il", "fuu", "ma'jin", "dedo", "ol'btoh", "n'ath", "reth", "sh'yro", "eth", \ "d'rekkathnor", "khari'd", "gual'te", "nikka", "nikt'o", "barada", "kla'atu", "barhah", "hra" ,"zar'garis", "spiri", "malum") -/datum/language/cult - name = LANGUAGE_OCCULT - desc = "The initiated can share their thoughts by means defying all reason." - speech_verb = "intones" - ask_verb = "intones" - exclaim_verb = "chants" - colour = "cult" - key = "y" - machine_understands = 0 - flags = RESTRICTED | HIVEMIND - /datum/language/xenocommon name = "Xenolingua" //CHOMPedit colour = "alien" @@ -143,32 +132,6 @@ "danya","da","mied","zan","das","krem","myka","cyka","blyat","to","st","no","na","ni", "ko","ne","en","po","ra","li","on","byl","cto","eni","ost","ol","ego","ver","stv","pro") -//For your event purposes. -/datum/language/occursus - name = LANGUAGE_EVENT1 - desc = "The Powers That Be have seen it fit to grace you with a special language that sounds like... something. This description should be overridden by the time you see this." - speech_verb = "says" - ask_verb = "asks" - exclaim_verb = "shouts" - colour = "warning" - key = "]" - flags = RESTRICTED - syllables = list("chan","ange","thi","se") - -//Bloblang. -/datum/language/blob - name = LANGUAGE_BLOB - desc = "The massive processing power of the Blob's core gives the overmind finely tuned abilities to transmit messages to nearby life-forms through chemical signals." - speech_verb = "resonates" - ask_verb = "reverberates" - exclaim_verb = "shudders" - colour = "blob" - key = "}" - machine_understands = TRUE - flags = RESTRICTED - - syllables = list("^", "˅", "-", "°", "~") - /datum/language/corticalborer/broadcast(var/mob/living/speaker,var/message,var/speaker_mask) var/mob/living/simple_mob/animal/borer/B diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index 641143b1f0..58e55e15a8 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -125,19 +125,6 @@ // flags = WHITELISTED (YWEdit) syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix") -/datum/language/skrellfar - name = LANGUAGE_SKRELLIANFAR - desc = "The most common language among the Skrellian Far Kingdoms. Has an even higher than usual concentration of inaudible phonemes. Native to Skrell." - speech_verb = "warbles" - ask_verb = "warbles" - exclaim_verb = "sings" - whisper_verb = "hums" - colour = "skrellfar" - key = "p" - space_chance = 30 -// flags = WHITELISTED (YWEdit) - syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix", "...", "oo", "q", "nq", "x", "xq", "ll", "...", "...", "...") //should sound like there's holes in it - /datum/language/skrell/get_random_name(var/gender) var/list/first_names = file2list('config/names/first_name_skrell.txt') var/list/last_names = file2list('config/names/last_name_skrell.txt') diff --git a/code/modules/mob/language/station_vr.dm b/code/modules/mob/language/station_vr.dm index 95b804d7e5..7be2976d69 100644 --- a/code/modules/mob/language/station_vr.dm +++ b/code/modules/mob/language/station_vr.dm @@ -103,7 +103,7 @@ machine_understands = FALSE flags = RESTRICTED | HIVEMIND //CHOMPstation Edit: Changining from WHITELISTED to RESTRICTED | Empathy should be shadekin exclusive. This probably breaks carbon shadekins ability to use emptathy, we dont use them and if it does it should be implemented like DIONA root talk. -shark -/datum/language/slavic +/datum/language/slavic //CHOMP reAdd this language name = LANGUAGE_SLAVIC desc = "The official language of the Independent Colonial Confederation of Gilgamesh, originally established in 2122 by the short-lived United Slavic Confederation on Earth." speech_verb = "govorit" // All Russian for "says" "asks" and "shouts". Mostly here as a joke. @@ -119,20 +119,6 @@ "ver", "stv", "pro", "ski" ) -/datum/language/clownish - name = LANGUAGE_CLOWNISH - desc = "A special elective language course for those studying at the Clown Planet Institute." - speech_verb = "honks" - ask_verb = "seins" - exclaim_verb = "crenks" - whisper_verb = "squeaks" - colour = "#F785F2" // Pink for the clown. - key = "<" - flags = WHITELISTED | CLOWN - syllables = list( - "honk", "knock", "salt", "slip", "lube", "banana", "flower", "pie", "did you hear", "🅱️", "haha", "bully", "going up", - ) - /datum/language/drudakar name = LANGUAGE_DRUDAKAR desc = "The native language of the D'Rudak'Ar, a loosely tied together community of dragons and demi-dragons based in the Diul system. Features include many hard consonants and rolling 'r's." @@ -202,11 +188,5 @@ machine_understands = FALSE desc = "A dialect of Tradeband not uncommon amongst traders in the Free Trade Union. The language is often difficult to translate due to changing frequently and being highly colloquial." partial_understanding = list(LANGUAGE_TRADEBAND = 30, LANGUAGE_SOL_COMMON = 10) -/datum/language/human/monkey - flags = RESTRICTED -/datum/language/skrell/monkey - flags = RESTRICTED -/datum/language/unathi/monkey - flags = RESTRICTED -/datum/language/tajaran/monkey +/datum/language/human/animal flags = RESTRICTED diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 162298731a..215cc8ebd4 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -20,7 +20,11 @@ . += M.slowdown var/health_deficiency = (getMaxHealth() - health) - if(health_deficiency >= 40) . += (health_deficiency / 25) + if(health_deficiency >= 40) //VOREStation Edit Start + if(chem_effects[CE_PAINKILLER]) //On painkillers? Reduce pain! On anti-painkillers? Increase pain! + health_deficiency = max(0, health_deficiency - src.chem_effects[CE_PAINKILLER]) + if(health_deficiency >= 40) //Still in enough pain for it to be significant? + . += (health_deficiency / 25) //VOREStation Edit End if(can_feel_pain()) if(halloss >= 10) . += (halloss / 10) //halloss shouldn't slow you down if you can't even feel it @@ -42,8 +46,8 @@ var/mob/living/carbon/human/H = M if(H.size_multiplier > L.size_multiplier) . += 1 - if(H.weight > L.weight) - . += 1 + //if(H.weight > L.weight) weight should not have mechanical impact + //. += 1 //VOREstation end if(istype(buckled, /obj/structure/bed/chair/wheelchair)) diff --git a/code/modules/mob/living/carbon/human/human_species.dm b/code/modules/mob/living/carbon/human/human_species.dm index 43225a6d34..7350d093e4 100644 --- a/code/modules/mob/living/carbon/human/human_species.dm +++ b/code/modules/mob/living/carbon/human/human_species.dm @@ -30,8 +30,8 @@ icon = null icon_state = "" . = ..() - - dress_up() + + dress_up() turntable() /mob/living/carbon/human/dummy/mannequin/autoequip/proc/dress_up() @@ -42,7 +42,7 @@ var/obj/item/clothing/C = I C.species_restricted = null equip_to_appropriate_slot(I) - + if(istype(back, /obj/item/weapon/rig)) var/obj/item/weapon/rig/rig = back rig.toggle_seals(src) @@ -130,6 +130,3 @@ /mob/living/carbon/human/stok/Initialize(var/new_loc) return ..(new_loc, SPECIES_MONKEY_UNATHI) - -/mob/living/carbon/human/event1/Initialize(var/new_loc) - return ..(new_loc, SPECIES_EVENT1) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index ca31301f5b..d2d4821cd9 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1985,8 +1985,10 @@ End Chomp edit */ // increase your body temperature beyond 250C, but it's possible something else (atmos) has heated us up beyond it, // so don't worry about the firestacks at that point. Really, we should be cooling the room down, because it has // to expend energy to heat our body up! But let's not worry about that. - if((bodytemperature + fire_temp_add) > HUMAN_COMBUSTION_TEMP) - return + + // This whole section above is ABSOLUTELY STUPID and makes no sense and this would prevent too-high-heat from even being able to hurt someone. No. We will heat up for as long as needed. + //if((bodytemperature + fire_temp_add) > HUMAN_COMBUSTION_TEMP) + // return bodytemperature += fire_temp_add diff --git a/code/modules/mob/living/carbon/human/species/outsider/replicant.dm b/code/modules/mob/living/carbon/human/species/outsider/replicant.dm index 35aa02d0b2..91d2dbf7e9 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/replicant.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/replicant.dm @@ -73,7 +73,7 @@ blood_color = "#55ff55" species_language = LANGUAGE_SIGN - assisted_langs = list(LANGUAGE_ROOTGLOBAL, LANGUAGE_SOL_COMMON, LANGUAGE_SKRELLIANFAR) + assisted_langs = list(LANGUAGE_ROOTGLOBAL, LANGUAGE_SOL_COMMON) inherent_verbs = list( /mob/living/carbon/human/proc/shapeshifter_select_shape, diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm index df0142a12e..7f4c783815 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm @@ -123,6 +123,7 @@ /datum/species/shadekin/handle_death(var/mob/living/carbon/human/H) spawn(1) + H.release_vore_contents(TRUE, TRUE) //CHOMPEdit - Drop all belly contents on death. for(var/obj/item/W in H) H.drop_from_inventory(W) qdel(H) @@ -343,4 +344,4 @@ new_copy.energy_dark = energy_dark - return new_copy \ No newline at end of file + return new_copy diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index d3d677b753..2d116e98e0 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -75,7 +75,7 @@ // The languages the species can't speak without an assisted organ. // This list is a guess at things that no one other than the parent species should be able to speak - var/list/assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) //VOREStation Edit + var/list/assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) //VOREStation Edit //Soundy emotey things. var/scream_verb_1p = "scream" diff --git a/code/modules/mob/living/carbon/human/species/station/greyYW.dm b/code/modules/mob/living/carbon/human/species/station/greyYW.dm index 9af9993677..b392691a28 100644 --- a/code/modules/mob/living/carbon/human/species/station/greyYW.dm +++ b/code/modules/mob/living/carbon/human/species/station/greyYW.dm @@ -19,7 +19,7 @@ species_language = LANGUAGE_PSIONIC secondary_langs = list(LANGUAGE_PSIONIC) name_language = null // Use the first-name last-name generator rather than a language scrambler - assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) + assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) flesh_color = "#a598ad" blood_color = "#A200FF" brute_mod = 1.25 diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm index 8941847b20..d4419deb43 100644 --- a/code/modules/mob/living/carbon/human/species/station/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm @@ -9,7 +9,7 @@ damage_mask = 'icons/mob/human_races/masks/dam_mask_monkey.dmi' blood_mask = 'icons/mob/human_races/masks/blood_monkey.dmi' language = null - default_language = "Chimpanzee" + default_language = LANGUAGE_ANIMAL greater_form = SPECIES_HUMAN mob_size = MOB_SMALL has_fine_manipulation = 0 @@ -78,7 +78,7 @@ deform = 'icons/mob/human_races/monkeys/r_farwa.dmi' greater_form = SPECIES_TAJ - default_language = "Farwa" + default_language = LANGUAGE_ANIMAL flesh_color = "#AFA59E" base_color = "#333333" tail = "farwatail" @@ -91,7 +91,7 @@ deform = 'icons/mob/human_races/monkeys/r_neaera.dmi' greater_form = SPECIES_SKRELL - default_language = "Neaera" + default_language = LANGUAGE_ANIMAL flesh_color = "#8CD7A3" blood_color = "#1D2CBF" reagent_tag = IS_SKRELL @@ -106,7 +106,7 @@ tail = "stoktail" greater_form = SPECIES_UNATHI - default_language = "Stok" + default_language = LANGUAGE_ANIMAL flesh_color = "#34AF10" base_color = "#066000" reagent_tag = IS_UNATHI diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 50ae8ac2e0..5ff11b6c9c 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -13,7 +13,7 @@ species_language = LANGUAGE_SOL_COMMON secondary_langs = list(LANGUAGE_SOL_COMMON, LANGUAGE_TERMINUS) name_language = null // Use the first-name last-name generator rather than a language scrambler - assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) + assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) min_age = 18 max_age = 130 @@ -398,7 +398,7 @@ taste_sensitivity = TASTE_SENSITIVE num_alternate_languages = 3 secondary_langs = list(LANGUAGE_ZADDAT, LANGUAGE_UNATHI) - assisted_langs = list(LANGUAGE_EAL, LANGUAGE_TERMINUS, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX, LANGUAGE_SOL_COMMON, LANGUAGE_AKHANI, LANGUAGE_SIIK, LANGUAGE_GUTTER) //limited vocal range; can talk Unathi and magical Galcom but not much else + assisted_langs = list(LANGUAGE_EAL, LANGUAGE_TERMINUS, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX, LANGUAGE_SOL_COMMON, LANGUAGE_AKHANI, LANGUAGE_SIIK, LANGUAGE_GUTTER) //limited vocal range; can talk Unathi and magical Galcom but not much else name_language = LANGUAGE_ZADDAT species_language = LANGUAGE_ZADDAT health_hud_intensity = 2.5 diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm index cce13a47ac..f53ff7c588 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm @@ -187,7 +187,7 @@ inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds, /mob/living/proc/shred_limb, /mob/living/carbon/human/proc/tie_hair) - assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) //AEIOU edit: Zorren can speak Terminus unassisted. + assisted_langs = list(LANGUAGE_EAL, LANGUAGE_SKRELLIAN, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) //AEIOU edit: Zorren can speak Terminus unassisted. min_age = 18 max_age = 110 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 01e8fdc87b..aede472f22 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -146,7 +146,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/matrix/M = matrix() var/anim_time = 3 - // CHOMPStation Edit Start: Porting Taur Loafing + // VOREStation Edit Start: Porting Taur Loafing if(tail_style?.can_loaf && resting) // Only call these if we're resting? update_tail_showing() return // No need to do the rest, we return early @@ -155,7 +155,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() update_tail_showing() // return // No need to do the rest, we return early */ - // CHOMPStation Edit End + // VOREStation Edit End //Due to some involuntary means, you're laying now if(lying && !resting && !sleeping) @@ -176,8 +176,8 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() else M.Scale(desired_scale_x, desired_scale_y)//VOREStation Edit M.Translate(0, (vis_height/2)*(desired_scale_y-1)) //VOREStation edit - if(tail_style?.can_loaf) // CHOMPEdit: Taur Loafing - update_tail_showing() // CHOMPEdit: Taur Loafing + if(tail_style?.can_loaf) // VOREStation Edit: Taur Loafing + update_tail_showing() // VOREStation Edit: Taur Loafing layer = MOB_LAYER // Fix for a byond bug where turf entry order no longer matters animate(src, transform = M, time = anim_time) @@ -1256,12 +1256,13 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() //If you have a custom tail selected if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style))) - var/icon/tail_s = new/icon("icon" = tail_style.icon, "icon_state" = (tail_style.can_loaf && resting) ? "[tail_style.icon_state]_loaf" : (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)) // CHOMPEdit: Taur Loafing - pixel_y = (tail_style.can_loaf && resting) ? -tail_style.loaf_offset : 0 //move player down, then taur up, to fit the overlays correctly // CHOMPEdit: Taur Loafing + var/icon/tail_s = new/icon("icon" = tail_style.icon, "icon_state" = (tail_style.can_loaf && resting) ? "[tail_style.icon_state]_loaf" : (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)) // VOREStation Edit: Taur Loafing + if(tail_style.can_loaf && !is_shifted) + pixel_y = (resting) ? -tail_style.loaf_offset : 0 //move player down, then taur up, to fit the overlays correctly // VOREStation Edit: Taur if(tail_style.do_colouration) tail_s.Blend(rgb(src.r_tail, src.g_tail, src.b_tail), tail_style.color_blend_mode) if(tail_style.extra_overlay) - var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = (tail_style?.can_loaf && resting) ? "[tail_style.extra_overlay]_loaf" : tail_style.extra_overlay) // CHOMPEdit: Taur Loafing + var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = (tail_style?.can_loaf && resting) ? "[tail_style.extra_overlay]_loaf" : tail_style.extra_overlay) // VOREStation Edit: Taur Loafing if(wagging && tail_style.ani_state) overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay_w) overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode) @@ -1291,7 +1292,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(istaurtail(tail_style)) var/datum/sprite_accessory/tail/taur/taurtype = tail_style working.pixel_x = -16 - working.pixel_y = (tail_style.can_loaf && resting) ? tail_style.loaf_offset : 0 // CHOMPEdit: Taur Loafing + working.pixel_y = (tail_style.can_loaf && resting) ? tail_style.loaf_offset : 0 // VOREStation Edit: Taur Loafing if(taurtype.can_ride && !riding_datum) riding_datum = new /datum/riding/taur(src) verbs |= /mob/living/carbon/human/proc/taur_mount diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index ca5319313f..a2ce47c2be 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -161,7 +161,6 @@ var/list/ai_verbs_default = list( add_language(LANGUAGE_SIIK, 1) add_language(LANGUAGE_AKHANI, 1) add_language(LANGUAGE_SKRELLIAN, 1) - add_language(LANGUAGE_SKRELLIANFAR, 0) add_language(LANGUAGE_TRADEBAND, 1) add_language(LANGUAGE_GUTTER, 1) add_language(LANGUAGE_EAL, 1) diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 53fa801dd6..9cc6d885d3 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -404,7 +404,7 @@ user.add_language(LANGUAGE_ZADDAT) user.add_language(LANGUAGE_SCHECHI) user.add_language(LANGUAGE_DRUDAKAR) - user.add_language(LANGUAGE_SLAVIC) + user.add_language(LANGUAGE_SLAVIC) //CHOMP reAdd user.add_language(LANGUAGE_BIRDSONG) user.add_language(LANGUAGE_SAGARU) user.add_language(LANGUAGE_CANILUNZT) @@ -413,24 +413,15 @@ user.add_language(LANGUAGE_ENOCHIAN) user.add_language(LANGUAGE_VESPINAE) user.add_language(LANGUAGE_SPACER) - user.add_language(LANGUAGE_CLOWNISH) user.add_language(LANGUAGE_TAVAN) user.add_language(LANGUAGE_ECHOSONG) - user.add_language(LANGUAGE_CHIMPANZEE) - user.add_language(LANGUAGE_NEAERA) - user.add_language(LANGUAGE_STOK) - user.add_language(LANGUAGE_FARWA) user.add_language(LANGUAGE_ROOTLOCAL) user.add_language(LANGUAGE_VOX) - user.add_language(LANGUAGE_SKRELLIANFAR) user.add_language(LANGUAGE_MINBUS) user.add_language(LANGUAGE_ALAI) user.add_language(LANGUAGE_PROMETHEAN) user.add_language(LANGUAGE_GIBBERISH) - user.add_language("Mouse") - user.add_language("Cat") - user.add_language("Bird") - user.add_language("Dog") + user.add_language("Animal") user.add_language("Teppi") else user.remove_language(LANGUAGE_UNATHI) @@ -440,7 +431,7 @@ user.remove_language(LANGUAGE_ZADDAT) user.remove_language(LANGUAGE_SCHECHI) user.remove_language(LANGUAGE_DRUDAKAR) - user.remove_language(LANGUAGE_SLAVIC) + user.remove_language(LANGUAGE_SLAVIC) //CHOMP reAdd user.remove_language(LANGUAGE_BIRDSONG) user.remove_language(LANGUAGE_SAGARU) user.remove_language(LANGUAGE_CANILUNZT) @@ -449,24 +440,15 @@ user.remove_language(LANGUAGE_ENOCHIAN) user.remove_language(LANGUAGE_VESPINAE) user.remove_language(LANGUAGE_SPACER) - user.remove_language(LANGUAGE_CLOWNISH) user.remove_language(LANGUAGE_TAVAN) user.remove_language(LANGUAGE_ECHOSONG) - user.remove_language(LANGUAGE_CHIMPANZEE) - user.remove_language(LANGUAGE_NEAERA) - user.remove_language(LANGUAGE_STOK) - user.remove_language(LANGUAGE_FARWA) user.remove_language(LANGUAGE_ROOTLOCAL) user.remove_language(LANGUAGE_VOX) - user.remove_language(LANGUAGE_SKRELLIANFAR) user.remove_language(LANGUAGE_MINBUS) user.remove_language(LANGUAGE_ALAI) user.remove_language(LANGUAGE_PROMETHEAN) user.remove_language(LANGUAGE_GIBBERISH) - user.remove_language("Mouse") - user.remove_language("Cat") - user.remove_language("Bird") - user.remove_language("Dog") + user.remove_language("Animal") user.remove_language("Teppi") /datum/pai_software/translator/is_active(mob/living/silicon/pai/user) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index a102c803e9..fc80a0b0c3 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -608,7 +608,6 @@ var/global/list/robot_modules = list( LANGUAGE_SIIK = 1, LANGUAGE_AKHANI = 1, LANGUAGE_SKRELLIAN = 1, - LANGUAGE_SKRELLIANFAR = 0, LANGUAGE_ROOTLOCAL = 0, LANGUAGE_TRADEBAND = 1, LANGUAGE_GUTTER = 1, diff --git a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm index d8f7aa8a3a..324e4afabc 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm @@ -10,7 +10,6 @@ LANGUAGE_SIIK = 0, LANGUAGE_AKHANI = 0, LANGUAGE_SKRELLIAN = 0, - LANGUAGE_SKRELLIANFAR = 0, LANGUAGE_ROOTLOCAL = 0, LANGUAGE_GUTTER = 1, LANGUAGE_SCHECHI = 0, diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm index 33d2494884..83910850e3 100644 --- a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm +++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm @@ -25,7 +25,7 @@ softfall = TRUE //Beings made of Hellmarble and powered by the tears of the damned are not concerned with mortal things such as 'gravity'. parachuting = TRUE - has_langs = list(LANGUAGE_GALCOM, LANGUAGE_CULT, LANGUAGE_OCCULT) + has_langs = list(LANGUAGE_GALCOM, LANGUAGE_CULT) has_eye_glow = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm b/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm index e4e58f75dc..4b36fb7b1e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm @@ -39,7 +39,7 @@ "rad" = 0 ) - has_langs = list("Coulrian") + has_langs = list("Animal") /mob/living/simple_mob/animal/passive/honkpet/attack_hand(mob/living/user as mob) if(user.a_intent == I_DISARM) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_ch.dm index 78ef29376b..f65767a892 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_ch.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_ch.dm @@ -18,7 +18,7 @@ has_hands = TRUE seedarkness = FALSE attack_sound = 'sound/misc/demonattack.ogg' - has_langs = list(LANGUAGE_GALCOM,LANGUAGE_DAEMON,LANGUAGE_SHADEKIN,LANGUAGE_CULT,LANGUAGE_OCCULT) + has_langs = list(LANGUAGE_GALCOM,LANGUAGE_DAEMON,LANGUAGE_SHADEKIN,LANGUAGE_CULT) melee_damage_lower = 20 melee_damage_upper = 15 @@ -150,4 +150,4 @@ /mob/living/simple_mob/vore/demon/adjustFireLoss(amount,include_robo = TRUE) amount = 0 - amount src.adjustBruteLoss(amount) - ..() \ No newline at end of file + ..() diff --git a/code/modules/mob/new_player/sprite_accessories_extra_ch.dm b/code/modules/mob/new_player/sprite_accessories_extra_ch.dm index 72af2eb90a..cb65a846f6 100644 --- a/code/modules/mob/new_player/sprite_accessories_extra_ch.dm +++ b/code/modules/mob/new_player/sprite_accessories_extra_ch.dm @@ -1,5 +1,6 @@ /datum/sprite_accessory/marking/ch icon = 'icons/mob/human_races/markings_ch.dmi' + /datum/sprite_accessory/marking/ch/orca_head name = "Orca head" icon_state = "orca_head" @@ -481,4 +482,4 @@ name = "Spots, Outer" icon_state = "spots_extremities" body_parts = list(BP_R_ARM,BP_L_ARM,BP_R_LEG,BP_L_LEG,BP_R_FOOT,BP_L_FOOT) - color_blend_mode = ICON_MULTIPLY \ No newline at end of file + color_blend_mode = ICON_MULTIPLY diff --git a/code/modules/mob/new_player/sprite_accessories_tail.dm b/code/modules/mob/new_player/sprite_accessories_tail.dm index 6d62c1d01f..8428f6170f 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail.dm @@ -25,7 +25,7 @@ var/clip_mask_state = null //Icon state to generate clip mask. Clip mask is used to 'clip' off the lower part of clothing such as jumpsuits & full suits. var/icon/clip_mask = null //Instantiated clip mask of given icon and state - // CHOMPEdit: Taur Loafing + // VOREStation Edit: Taur Loafing var/can_loaf = FALSE var/loaf_offset = 0 diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm index b44ed20cb5..6b310f2848 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm @@ -1176,7 +1176,7 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY ckeys_allowed = list("prettiebyrd") - + /datum/sprite_accessory/tail/altevian name = "Altevian Tail" icon = 'icons/mob/vore/tails_vr.dmi' diff --git a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm index c3196588e6..698c91d051 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm @@ -421,8 +421,8 @@ /// suit_sprites = 'icons/mob/taursuits_drake_vr.dmi' ///Chomp edit suit_sprites = 'icons/mob/taursuits_drake_ch.dmi' icon_sprite_tag = "drake" - can_loaf = TRUE // CHOMPEdit: Taur Loafing - loaf_offset = 6 // CHOMPEdit: Taur Loafing + can_loaf = TRUE // VOREStation Edit: Taur Loafing + loaf_offset = 6 // VOREStation Edit: Taur Loafing /datum/sprite_accessory/tail/taur/ch/fatdrake name = "Drake (Fat Taur dual-color)" @@ -618,4 +618,4 @@ extra_overlay2 = "noodle_markings_2" suit_sprites = 'icons/mob/taursuits_noodle_vr.dmi' clip_mask_state = "taur_clip_mask_noodle" - icon_sprite_tag = "noodle" + icon_sprite_tag = "noodle" \ No newline at end of file diff --git a/code/modules/mob/new_player/sprite_accessories_wing_ch.dm b/code/modules/mob/new_player/sprite_accessories_wing_ch.dm index 48d5d29a39..5034a4f712 100644 --- a/code/modules/mob/new_player/sprite_accessories_wing_ch.dm +++ b/code/modules/mob/new_player/sprite_accessories_wing_ch.dm @@ -23,4 +23,4 @@ icon = 'icons/mob/vore/wings_ch.dmi' icon_state = "snail_shell" do_colouration = 1 - color_blend_mode = ICON_MULTIPLY \ No newline at end of file + color_blend_mode = ICON_MULTIPLY diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 48604444bf..63dc8c6666 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -595,6 +595,8 @@ This function completely restores a damaged organ to perfect condition. return 1 else last_dam = brute_dam + burn_dam + if (number_wounds != 0) + return 1 if(germ_level) return 1 return 0 @@ -731,8 +733,8 @@ Note that amputating the affected organ does in fact remove the infection from t return for(var/datum/wound/W in wounds) - // wounds can disappear after 10 minutes at the earliest - if(W.damage <= 0 && W.created + 10 * 10 * 60 <= world.time) + // wounds used to be able to disappear after 10 minutes at the earliest, for now just remove them as soon as there is no damage + if(W.damage <= 0) wounds -= W continue // let the GC handle the deletion of the wound diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index d35a5aa516..fa93fc43b7 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -131,7 +131,7 @@ var/global/list/limb_icon_cache = list() I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit limb_icon_cache[cache_key] = I mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) - + // VOREStation edit start if(nail_polish) var/icon/I = new(nail_polish.icon, nail_polish.icon_state) diff --git a/code/modules/organs/organ_icon_ch.dm b/code/modules/organs/organ_icon_ch.dm index 7348f5c054..dacba3d4eb 100644 --- a/code/modules/organs/organ_icon_ch.dm +++ b/code/modules/organs/organ_icon_ch.dm @@ -12,7 +12,7 @@ digitigrade = dna.digitigrade if( !model && ( istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot) ) ) //All leg icons go through here now. - + var/gender = "m" if(owner && owner.gender == FEMALE) gender = "f" @@ -43,7 +43,6 @@ mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) else - //Use digi icon if digitigrade, otherwise use regular icon. Ternary operator is based. mob_icon = new /icon(digitigrade ? species.icodigi : species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) @@ -66,7 +65,7 @@ I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit limb_icon_cache[cache_key] = I mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) - + // VOREStation edit start if(nail_polish) var/icon/I = new(nail_polish.icon, nail_polish.icon_state) diff --git a/code/modules/organs/subtypes/skrell.dm b/code/modules/organs/subtypes/skrell.dm index 3ac237c2b5..5f2d494105 100644 --- a/code/modules/organs/subtypes/skrell.dm +++ b/code/modules/organs/subtypes/skrell.dm @@ -25,7 +25,7 @@ /obj/item/organ/internal/voicebox/skrell icon_state = "skrell_larynx" - will_assist_languages = list(LANGUAGE_SKRELLIAN, LANGUAGE_SKRELLIANFAR) + will_assist_languages = list(LANGUAGE_SKRELLIAN) /obj/item/organ/internal/appendix/skrell icon_state = "skrell_appendix" diff --git a/code/modules/paperwork/faxmachine_vr.dm b/code/modules/paperwork/faxmachine_vr.dm index 74dd109368..c43fa96be2 100644 --- a/code/modules/paperwork/faxmachine_vr.dm +++ b/code/modules/paperwork/faxmachine_vr.dm @@ -1,3 +1,5 @@ +var/global/last_fax_role_request + /obj/machinery/photocopier/faxmachine req_one_access = list() @@ -94,6 +96,20 @@ world.TgsTargetedChatBroadcast("FAX: [sanitize(faxname)] / [sanitize(sent.name)] - SENT BY: [sanitize(sender.name)] - FAXID: **[sanitize(faxid)]** [contents]", TRUE) //YW EDIT END +/** + * Call the chat webhook to transmit a notification of a job request + */ +/obj/machinery/photocopier/faxmachine/proc/message_chat_rolerequest(var/font_colour="#006100", var/role_to_ping, var/reason, var/jobname) + if(config.chat_webhook_url) + spawn(0) + var/query_string = "type=rolerequest" + query_string += "&key=[url_encode(config.chat_webhook_key)]" + query_string += "&ping=[url_encode(role_to_ping)]" + query_string += "&color=[url_encode(font_colour)]" + query_string += "&reason=[url_encode(reason)]" + query_string += "&job=[url_encode(jobname)]" + world.Export("[config.chat_webhook_url]?[query_string]") + // // Overrides/additions to stock defines go here, as well as hooks. Sort them by // the object they are overriding. So all /mob/living together, etc. @@ -102,3 +118,84 @@ var/chat_webhook_url = "" // URL of the webhook for sending announcements/faxes to discord chat. var/chat_webhook_key = "" // Shared secret for authenticating to the chat webhook var/fax_export_dir = "data/faxes" // Directory in which to write exported fax HTML files. + + +/obj/machinery/photocopier/faxmachine/verb/request_roles() + set name = "Staff Request Form" + set category = "Object" + set src in oview(1) + + var/mob/living/L = usr + + if(!L || !isturf(L.loc) || !isliving(L)) + return + if(!ishuman(L) && !issilicon(L)) + return + if(L.stat || L.restrained()) + return + if(last_fax_role_request && (world.time - last_fax_role_request < 5 MINUTES)) + to_chat(L, "The global automated relays are still recalibrating. Try again later or relay your request in written form for processing.") + return + + var/confirmation = tgui_alert(L, "Are you sure you want to send automated crew request?", "Confirmation", list("Yes", "No", "Cancel")) + if(confirmation != "Yes") + return + + var/list/jobs = list() + for(var/datum/department/dept as anything in SSjob.get_all_department_datums()) + if(!dept.assignable || dept.centcom_only) + continue + for(var/job in SSjob.get_job_titles_in_department(dept.name)) + var/datum/job/J = SSjob.get_job(job) + if(J.requestable) + jobs |= job + + var/role = tgui_input_list(L, "Pick the job to request.", "Job Request", jobs) + if(!role) + return + + var/datum/job/job_to_request = SSjob.get_job(role) + var/reason = "Unspecified" + var/list/possible_reasons = list("Unspecified", "General duties", "Emergency situation") + possible_reasons += job_to_request.get_request_reasons() + reason = tgui_input_list(L, "Pick request reason.", "Request reason", possible_reasons) + + var/final_conf = tgui_alert(L, "You are about to request [role]. Are you sure?", "Confirmation", list("Yes", "No", "Cancel")) + if(final_conf != "Yes") + return + + var/datum/department/ping_dept = SSjob.get_ping_role(role) + if(!ping_dept) + to_chat(L, "Selected job cannot be requested for \[ERRORDEPTNOTFOUND] reason. Please report this to system administrator.") + return + var/message_color = "#FFFFFF" + var/ping_name = null + switch(ping_dept.name) + if(DEPARTMENT_COMMAND) + ping_name = "Command" + if(DEPARTMENT_SECURITY) + ping_name = "Security" + if(DEPARTMENT_ENGINEERING) + ping_name = "Engineering" + if(DEPARTMENT_MEDICAL) + ping_name = "Medical" + if(DEPARTMENT_RESEARCH) + ping_name = "Research" + if(DEPARTMENT_CARGO) + ping_name = "Supply" + if(DEPARTMENT_CIVILIAN) + ping_name = "Service" + if(DEPARTMENT_PLANET) + ping_name = "Expedition" + if(DEPARTMENT_SYNTHETIC) + ping_name = "Silicon" + //if(DEPARTMENT_TALON) + // ping_name = "Offmap" + if(!ping_name) + to_chat(L, "Selected job cannot be requested for \[ERRORUNKNOWNDEPT] reason. Please report this to system administrator.") + return + message_color = ping_dept.color + + message_chat_rolerequest(message_color, ping_name, reason, role) + last_fax_role_request = world.time + to_chat(L, "Your request was transmitted.") \ No newline at end of file diff --git a/code/modules/random_map/noise/ore.dm b/code/modules/random_map/noise/ore.dm index 5eecf3b3e2..ec6dbae1b1 100644 --- a/code/modules/random_map/noise/ore.dm +++ b/code/modules/random_map/noise/ore.dm @@ -53,7 +53,7 @@ var/current_cell = map[get_map_cell(x,y)] if(current_cell < rare_val) // Surface metals. - T.resources["hematite"] = rand(RESOURCE_MID_MIN, RESOURCE_HIGH_MAX) + T.resources["hematite"] = rand(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX) T.resources["gold"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) T.resources["silver"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) T.resources["uranium"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) @@ -81,17 +81,17 @@ T.resources["lead"] = rand(RESOURCE_LOW_MIN, RESOURCE_MID_MAX) T.resources["hydrogen"] = 0 T.resources["diamond"] = 0 - T.resources["hematite"] = rand(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX) + T.resources["hematite"] = 0 T.resources["marble"] = 0 //T.resources["copper"] = 0 //T.resources["tin"] = rand(RESOURCE_MID_MIN, RESOURCE_MID_MAX) //T.resources["bauxite"] = 0 - T.resources["rutile"] = rand(RESOURCE_LOW_MIN, RESOURCE_MID_MAX) + T.resources["rutile"] = 0 //T.resources["void opal"] = 0 //T.resources["quartz"] = 0 //T.resources["painite"] = 0 else // Deep metals. - T.resources["uranium"] = rand(RESOURCE_MID_MIN, RESOURCE_HIGH_MAX) + T.resources["uranium"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) T.resources["diamond"] = rand(RESOURCE_LOW_MIN, RESOURCE_LOW_MAX) T.resources["verdantium"] = rand(RESOURCE_LOW_MIN, RESOURCE_MID_MAX) T.resources["phoron"] = rand(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX) @@ -99,13 +99,13 @@ T.resources["hydrogen"] = rand(RESOURCE_MID_MIN, RESOURCE_MID_MAX) T.resources["marble"] = rand(RESOURCE_MID_MIN, RESOURCE_HIGH_MAX) T.resources["lead"] = rand(RESOURCE_LOW_MIN, RESOURCE_HIGH_MAX) - T.resources["hematite"] = rand(RESOURCE_HIGH_MIN, RESOURCE_HIGH_MAX) - T.resources["gold"] = rand(RESOURCE_MID_MIN, RESOURCE_HIGH_MAX) - T.resources["silver"] = rand(RESOURCE_MID_MIN, RESOURCE_HIGH_MAX) + T.resources["hematite"] = 0 + T.resources["gold"] = 0 + T.resources["silver"] = 0 //T.resources["copper"] = 0 //T.resources["tin"] = 0 //T.resources["bauxite"] = 0 - T.resources["rutile"] = rand(RESOURCE_MID_MIN, RESOURCE_HIGH_MAX) + T.resources["rutile"] = 0 //T.resources["void opal"] = 0 //T.resources["quartz"] = 0 //T.resources["painite"] = 0 diff --git a/code/modules/research/designs/medical_vr.dm b/code/modules/research/designs/medical_vr.dm index 30641fbed2..aaf9c184e6 100644 --- a/code/modules/research/designs/medical_vr.dm +++ b/code/modules/research/designs/medical_vr.dm @@ -30,6 +30,14 @@ build_path = /obj/item/weapon/reagent_containers/hypospray/science sort_string = "KCAVB" +/datum/design/item/medical/recombobray + name = "recombobulation ray" + desc = "The Type Gamma Medical Recombobulation ray! A mysterious looking ray gun! It works to change people who have had their form significantly altered back into their original forms!" + id = "recombobray" + req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_POWER = 4, TECH_BIO = 5, TECH_BLUESPACE = 4) //Not like these matter. *Glares at circuit printer.* + materials = list(MAT_STEEL = 1000, MAT_GLASS = 2000, MAT_URANIUM = 500, MAT_PHORON = 1500) + build_path = /obj/item/weapon/gun/energy/mouseray/medical + sort_string = "KCAVC" // ML-3M medigun and cells // CH edit - turns ML3M to NERD, removes some overtuned cells. diff --git a/code/modules/tgs/v5/chat_commands.dm b/code/modules/tgs/v5/chat_commands.dm index 12b0baf9d9..e43dfc1c31 100644 --- a/code/modules/tgs/v5/chat_commands.dm +++ b/code/modules/tgs/v5/chat_commands.dm @@ -21,7 +21,7 @@ else active++ - return "Current server status:\n**Web Manifest:** " //CHOMPEdit + return "Current server status:\n**Web Manifest:** \n**Players:** [counts]\n**Active:** [active]\n**Bar Statues:** [afks]\n**Bellied:** [bellied]\n\n**Round Duration:** [roundduration2text()]" //CHOMPEdit /datum/tgs_chat_command/parsetest name = "parsetest" diff --git a/code/modules/vchat/css/ss13styles.css b/code/modules/vchat/css/ss13styles.css index d31d82f986..9e792729be 100644 --- a/code/modules/vchat/css/ss13styles.css +++ b/code/modules/vchat/css/ss13styles.css @@ -90,11 +90,8 @@ body.inverted { .pm .other {color: #0000ff;} /* Admin: Channels */ -<<<<<<< HEAD -======= .mentor {color: #808000;} .mentor_channel {color: #808000; font-weight: bold;} ->>>>>>> 16eeda039c... Merge pull request #13503 from lm40/master .mod_channel {color: #735638; font-weight: bold;} .mod_channel .admin {color: #b82e00; font-weight: bold;} .admin_channel {color: #9611D4; font-weight: bold;} diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 7aa908ab35..96bd26fec5 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -935,62 +935,62 @@ var/help = " Press enter twice to separate messages. '%pred' will be replaced with your name. '%prey' will be replaced with the prey's name. '%belly' will be replaced with your belly's name. '%count' will be replaced with the number of anything in your belly. '%countprey' will be replaced with the number of living prey in your belly." switch(params["msgtype"]) if("dmp") - var/new_message = tgui_input_text(user,"These are sent to prey when they expire. Write them in 2nd person ('you feel X'). Avoid using %prey in this type."+help,"Digest Message (to prey)",host.vore_selected.get_messages("dmp"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey when they expire. Write them in 2nd person ('you feel X'). Avoid using %prey in this type."+help,"Digest Message (to prey)",host.vore_selected.get_messages("dmp"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"dmp") if("dmo") - var/new_message = tgui_input_text(user,"These are sent to you when prey expires in you. Write them in 2nd person ('you feel X'). Avoid using %pred in this type."+help,"Digest Message (to you)",host.vore_selected.get_messages("dmo"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to you when prey expires in you. Write them in 2nd person ('you feel X'). Avoid using %pred in this type."+help,"Digest Message (to you)",host.vore_selected.get_messages("dmo"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"dmo") if("amp") - var/new_message = tgui_input_text(user,"These are sent to prey when their absorption finishes. Write them in 2nd person ('you feel X'). Avoid using %prey in this type. %count will not work for this type, and %countprey will only count absorbed victims."+help,"Digest Message (to prey)",host.vore_selected.get_messages("amp"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey when their absorption finishes. Write them in 2nd person ('you feel X'). Avoid using %prey in this type. %count will not work for this type, and %countprey will only count absorbed victims."+help,"Digest Message (to prey)",host.vore_selected.get_messages("amp"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"amp") if("amo") - var/new_message = tgui_input_text(user,"These are sent to you when prey's absorption finishes. Write them in 2nd person ('you feel X'). Avoid using %pred in this type. %count will not work for this type, and %countprey will only count absorbed victims."+help,"Digest Message (to you)",host.vore_selected.get_messages("amo"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to you when prey's absorption finishes. Write them in 2nd person ('you feel X'). Avoid using %pred in this type. %count will not work for this type, and %countprey will only count absorbed victims."+help,"Digest Message (to you)",host.vore_selected.get_messages("amo"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"amo") if("uamp") - var/new_message = tgui_input_text(user,"These are sent to prey when their unnabsorption finishes. Write them in 2nd person ('you feel X'). Avoid using %prey in this type. %count will not work for this type, and %countprey will only count absorbed victims."+help,"Digest Message (to prey)",host.vore_selected.get_messages("uamp"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey when their unnabsorption finishes. Write them in 2nd person ('you feel X'). Avoid using %prey in this type. %count will not work for this type, and %countprey will only count absorbed victims."+help,"Digest Message (to prey)",host.vore_selected.get_messages("uamp"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"uamp") if("uamo") - var/new_message = tgui_input_text(user,"These are sent to you when prey's unabsorption finishes. Write them in 2nd person ('you feel X'). Avoid using %pred in this type. %count will not work for this type, and %countprey will only count absorbed victims."+help,"Digest Message (to you)",host.vore_selected.get_messages("uamo"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to you when prey's unabsorption finishes. Write them in 2nd person ('you feel X'). Avoid using %pred in this type. %count will not work for this type, and %countprey will only count absorbed victims."+help,"Digest Message (to you)",host.vore_selected.get_messages("uamo"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"uamo") if("smo") - var/new_message = tgui_input_text(user,"These are sent to those nearby when prey struggles. Write them in 3rd person ('X's Y bulges')."+help,"Struggle Message (outside)",host.vore_selected.get_messages("smo"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to those nearby when prey struggles. Write them in 3rd person ('X's Y bulges')."+help,"Struggle Message (outside)",host.vore_selected.get_messages("smo"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"smo") if("smi") - var/new_message = tgui_input_text(user,"These are sent to prey when they struggle. Write them in 2nd person ('you feel X'). Avoid using %prey in this type."+help,"Struggle Message (inside)",host.vore_selected.get_messages("smi"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey when they struggle. Write them in 2nd person ('you feel X'). Avoid using %prey in this type."+help,"Struggle Message (inside)",host.vore_selected.get_messages("smi"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"smi") if("asmo") - var/new_message = tgui_input_text(user,"These are sent to those nearby when absorbed prey struggles. Write them in 3rd person ('X's Y bulges'). %count will not work for this type, and %countprey will only count absorbed victims."+help,"Struggle Message (outside)",host.vore_selected.get_messages("asmo"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to those nearby when absorbed prey struggles. Write them in 3rd person ('X's Y bulges'). %count will not work for this type, and %countprey will only count absorbed victims."+help,"Struggle Message (outside)",host.vore_selected.get_messages("asmo"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"asmo") if("asmi") - var/new_message = tgui_input_text(user,"These are sent to absorbed prey when they struggle. Write them in 2nd person ('you feel X'). Avoid using %prey in this type. %count will not work for this type, and %countprey will only count absorbed victims."+help,"Struggle Message (inside)",host.vore_selected.get_messages("asmi"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to absorbed prey when they struggle. Write them in 2nd person ('you feel X'). Avoid using %prey in this type. %count will not work for this type, and %countprey will only count absorbed victims."+help,"Struggle Message (inside)",host.vore_selected.get_messages("asmi"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"asmi") if("em") - var/new_message = tgui_input_text(user,"These are sent to people who examine you when this belly has contents. Write them in 3rd person ('Their %belly is bulging')."+help,"Examine Message (when full)",host.vore_selected.get_messages("em"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to people who examine you when this belly has contents. Write them in 3rd person ('Their %belly is bulging')."+help,"Examine Message (when full)",host.vore_selected.get_messages("em"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"em") if("ema") - var/new_message = tgui_input_text(user,"These are sent to people who examine you when this belly has absorbed victims. Write them in 3rd person ('Their %belly is larger'). %count will not work for this type, and %countprey will only count absorbed victims."+help,"Examine Message (with absorbed victims)",host.vore_selected.get_messages("ema"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to people who examine you when this belly has absorbed victims. Write them in 3rd person ('Their %belly is larger'). %count will not work for this type, and %countprey will only count absorbed victims."+help,"Examine Message (with absorbed victims)",host.vore_selected.get_messages("ema"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"ema") @@ -1003,7 +1003,7 @@ if("Clear") host.nutrition_messages[index] = "" if("Edit") - var/new_message = tgui_input_text(user, "Input a message", "Input", host.nutrition_messages[index], multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user, "Input a message", "Input", host.nutrition_messages[index], multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.nutrition_messages[index] = new_message @@ -1016,62 +1016,62 @@ if("Clear") host.weight_messages[index] = "" if("Edit") - var/new_message = tgui_input_text(user, "Input a message", "Input", host.weight_messages[index], multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user, "Input a message", "Input", host.weight_messages[index], multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.weight_messages[index] = new_message if("im_digest") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are on Digest mode. Write them in 2nd person ('%pred's %belly squishes down on you.')."+help,"Idle Message (Digest)",host.vore_selected.get_messages("im_digest"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are on Digest mode. Write them in 2nd person ('%pred's %belly squishes down on you.')."+help,"Idle Message (Digest)",host.vore_selected.get_messages("im_digest"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_digest") if("im_hold") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are on Hold mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Hold)",host.vore_selected.get_messages("im_hold"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are on Hold mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Hold)",host.vore_selected.get_messages("im_hold"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_hold") if("im_holdabsorbed") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are absorbed. Write them in 2nd person ('%pred's %belly squishes down on you.') %count will not work for this type, and %countprey will only count absorbed victims."+help,"Idle Message (Hold Absorbed)",host.vore_selected.get_messages("im_holdabsorbed"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are absorbed. Write them in 2nd person ('%pred's %belly squishes down on you.') %count will not work for this type, and %countprey will only count absorbed victims."+help,"Idle Message (Hold Absorbed)",host.vore_selected.get_messages("im_holdabsorbed"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_holdabsorbed") if("im_absorb") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are on Absorb mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Absorb)",host.vore_selected.get_messages("im_absorb"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are on Absorb mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Absorb)",host.vore_selected.get_messages("im_absorb"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_absorb") if("im_heal") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are on Heal mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Heal)",host.vore_selected.get_messages("im_heal"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are on Heal mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Heal)",host.vore_selected.get_messages("im_heal"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_heal") if("im_drain") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are on Drain mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Drain)",host.vore_selected.get_messages("im_drain"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are on Drain mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Drain)",host.vore_selected.get_messages("im_drain"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_drain") if("im_steal") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are on Size Steal mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Size Steal)",host.vore_selected.get_messages("im_steal"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are on Size Steal mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Size Steal)",host.vore_selected.get_messages("im_steal"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_steal") if("im_egg") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are on Encase In Egg mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Encase In Egg)",host.vore_selected.get_messages("im_egg"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are on Encase In Egg mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Encase In Egg)",host.vore_selected.get_messages("im_egg"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_egg") if("im_shrink") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are on Shrink mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Shrink)",host.vore_selected.get_messages("im_shrink"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are on Shrink mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Shrink)",host.vore_selected.get_messages("im_shrink"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_shrink") if("im_grow") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are on Grow mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Grow)",host.vore_selected.get_messages("im_grow"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are on Grow mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Grow)",host.vore_selected.get_messages("im_grow"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_grow") if("im_unabsorb") - var/new_message = tgui_input_text(user,"These are sent to prey every minute when you are on Unabsorb mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Unabsorb)",host.vore_selected.get_messages("im_unabsorb"), multiline = TRUE, prevent_enter = TRUE) + var/new_message = sanitize(tgui_input_text(user,"These are sent to prey every minute when you are on Unabsorb mode. Write them in 2nd person ('%pred's %belly squishes down on you.')"+help,"Idle Message (Unabsorb)",host.vore_selected.get_messages("im_unabsorb"), multiline = TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN,0,0,0) if(new_message) host.vore_selected.set_messages(new_message,"im_unabsorb") diff --git a/code/stylesheet.dm b/code/stylesheet.dm index cca8273c1d..e32f3f10d2 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -34,11 +34,8 @@ em {font-style: normal;font-weight: bold;} .pm .other {color: #0000ff;} /* Admin: Channels */ -<<<<<<< HEAD -======= .mentor_channel {color: #808000; font-weight: bold;} .mentor {color: #808000;} ->>>>>>> 16eeda039c... Merge pull request #13503 from lm40/master .mod_channel {color: #735638; font-weight: bold;} .mod_channel .admin {color: #b82e00; font-weight: bold;} .admin_channel {color: #9611D4; font-weight: bold;} diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt index c423c19e38..86bed07082 100644 --- a/config/alienwhitelist.txt +++ b/config/alienwhitelist.txt @@ -32,7 +32,6 @@ pearlprophet - Protean phoenixx0 - Vox rapidvalj - Vox rapidvalj - Common Skrellian -rapidvalj - High Skrellian rikaru19xjenkins - Xenochimera rixunie - Diona rykkastormheart - Xenochimera @@ -48,7 +47,6 @@ storesund97 - Protean sharplight - Protean tastypred - Black-Eyed Shadekin tastypred - Xenochimera -tastypred - Protean timidvi - Diona varonis - Xenochimera verkister - Xenochimera diff --git a/icons/_nanomaps/southern_cross_nanomap_z2.png b/icons/_nanomaps/southern_cross_nanomap_z2.png index 956fad6ac4..7545a6559a 100644 Binary files a/icons/_nanomaps/southern_cross_nanomap_z2.png and b/icons/_nanomaps/southern_cross_nanomap_z2.png differ diff --git a/icons/_nanomaps/southern_cross_nanomap_z3.png b/icons/_nanomaps/southern_cross_nanomap_z3.png index cf35115291..f609628e54 100644 Binary files a/icons/_nanomaps/southern_cross_nanomap_z3.png and b/icons/_nanomaps/southern_cross_nanomap_z3.png differ diff --git a/icons/chattags.dmi b/icons/chattags.dmi index 699f1b53a1..252e7ae78e 100644 Binary files a/icons/chattags.dmi and b/icons/chattags.dmi differ diff --git a/icons/inventory/accessory/item_vr.dmi b/icons/inventory/accessory/item_vr.dmi index b1e6a60a0e..91e3c4e7d6 100644 Binary files a/icons/inventory/accessory/item_vr.dmi and b/icons/inventory/accessory/item_vr.dmi differ diff --git a/icons/inventory/accessory/mob_vr.dmi b/icons/inventory/accessory/mob_vr.dmi index cab7916a32..a738336ba1 100644 Binary files a/icons/inventory/accessory/mob_vr.dmi and b/icons/inventory/accessory/mob_vr.dmi differ diff --git a/icons/inventory/head/item_vr_altevian.dmi b/icons/inventory/head/item_vr_altevian.dmi index 63f3e13437..acedeb864c 100644 Binary files a/icons/inventory/head/item_vr_altevian.dmi and b/icons/inventory/head/item_vr_altevian.dmi differ diff --git a/icons/inventory/uniform/item_vr.dmi b/icons/inventory/uniform/item_vr.dmi index 4e92cd6710..305bdc3efb 100644 Binary files a/icons/inventory/uniform/item_vr.dmi and b/icons/inventory/uniform/item_vr.dmi differ diff --git a/icons/inventory/uniform/mob_vr.dmi b/icons/inventory/uniform/mob_vr.dmi index e4295298d3..f04df19f3e 100644 Binary files a/icons/inventory/uniform/mob_vr.dmi and b/icons/inventory/uniform/mob_vr.dmi differ diff --git a/icons/mob/human_races/markings_ch.dmi b/icons/mob/human_races/markings_ch.dmi index 5cc3d842c4..abff58fe74 100644 Binary files a/icons/mob/human_races/markings_ch.dmi and b/icons/mob/human_races/markings_ch.dmi differ diff --git a/icons/mob/human_races/markings_digi_ch.dmi b/icons/mob/human_races/markings_digi_ch.dmi index 924b4f54dd..dbe633fac4 100644 Binary files a/icons/mob/human_races/markings_digi_ch.dmi and b/icons/mob/human_races/markings_digi_ch.dmi differ diff --git a/icons/mob/human_races/r_blank.dmi b/icons/mob/human_races/r_blank.dmi new file mode 100644 index 0000000000..9b2fb0341d Binary files /dev/null and b/icons/mob/human_races/r_blank.dmi differ diff --git a/icons/mob/vore/tails_ch.dmi b/icons/mob/vore/tails_ch.dmi index b30793a048..ba1c5b6103 100644 Binary files a/icons/mob/vore/tails_ch.dmi and b/icons/mob/vore/tails_ch.dmi differ diff --git a/icons/mob/vore/taurs_ch.dmi b/icons/mob/vore/taurs_ch.dmi index 7e8e01283f..302002993d 100644 Binary files a/icons/mob/vore/taurs_ch.dmi and b/icons/mob/vore/taurs_ch.dmi differ diff --git a/icons/mob/vore/wings_ch.dmi b/icons/mob/vore/wings_ch.dmi index 5b90a078d5..296313cfeb 100644 Binary files a/icons/mob/vore/wings_ch.dmi and b/icons/mob/vore/wings_ch.dmi differ diff --git a/maps/expedition_vr/aerostat/_aerostat.dm b/maps/expedition_vr/aerostat/_aerostat.dm index e4a5d2c528..54ddab176a 100644 --- a/maps/expedition_vr/aerostat/_aerostat.dm +++ b/maps/expedition_vr/aerostat/_aerostat.dm @@ -36,6 +36,81 @@ /datum/random_map/noise/ore/virgo2/check_map_sanity() return 1 //Totally random, but probably beneficial. +/datum/random_map/noise/ore/virgo2/apply_to_turf(var/x,var/y) //Same as normal + Rutile + + var/tx = ((origin_x-1)+x)*chunk_size + var/ty = ((origin_y-1)+y)*chunk_size + + for(var/i=0,i