diff --git a/_build_dependencies.sh b/_build_dependencies.sh index b481c560f49e..058f897b55b6 100644 --- a/_build_dependencies.sh +++ b/_build_dependencies.sh @@ -6,11 +6,11 @@ export NODE_VERSION=20 # Stable Byond Major export STABLE_BYOND_MAJOR=515 # Stable Byond Minor -export STABLE_BYOND_MINOR=1628 +export STABLE_BYOND_MINOR=1630 # Beta Byond Major export BETA_BYOND_MAJOR=515 # Beta Byond Minor -export BETA_BYOND_MINOR=1628 +export BETA_BYOND_MINOR=1630 # Python version for mapmerge and other tools export PYTHON_VERSION=3.11.6 # RUSTG version diff --git a/code/__DEFINES/access_defines.dm b/code/__DEFINES/access_defines.dm index d70c203f562c..ea67634a1bab 100644 --- a/code/__DEFINES/access_defines.dm +++ b/code/__DEFINES/access_defines.dm @@ -65,7 +65,6 @@ #define ACCESS_XENOARCH 65 #define ACCESS_PARAMEDIC 66 #define ACCESS_BLUESHIELD 67 -#define ACCESS_SALVAGE_CAPTAIN 69 // Salvage ship captain's quarters // #define ACCESS_MECHANIC 70 // AA07 2021-10-02 - Removed: Kept for history sake // #define ACCESS_PILOT 71 // AA07 2021-10-02 - Removed: Kept for history sake #define ACCESS_NTREP 73 diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm deleted file mode 100644 index 8b137891791f..000000000000 --- a/code/__DEFINES/antagonists.dm +++ /dev/null @@ -1 +0,0 @@ - diff --git a/code/__DEFINES/tools_defines.dm b/code/__DEFINES/tools_defines.dm index 70af463f7ddb..dff98f4bda19 100644 --- a/code/__DEFINES/tools_defines.dm +++ b/code/__DEFINES/tools_defines.dm @@ -43,7 +43,7 @@ GLOBAL_LIST_INIT(surgery_tool_behaviors, list( //Wirecutter messages #define WIRECUTTER_SNIP_MESSAGE user.visible_message("[user] cuts the wires from [src]!", "You cut the wires from [src]!", "You hear snipping.") -#define WIRECUTTER_ATTEMPT_DISMANTLE_MESSAGE user.visible_message("[user] begins cutting [src] apart... ", "You begin cutting [src] apart...", "You hear snipping.") +#define WIRECUTTER_ATTEMPT_DISMANTLE_MESSAGE user.visible_message("[user] begins cutting [src] apart...", "You begin cutting [src] apart...", "You hear snipping.") #define WIRECUTTER_DISMANTLE_SUCCESS_MESSAGE user.visible_message("[user] cuts [src] apart!", "You cut [src] apart!", "You hear snipping.") //Welder messages and other stuff diff --git a/code/_onclick/click_override.dm b/code/_onclick/click_override.dm index c53bbb3d2f8e..d17ef01694fd 100644 --- a/code/_onclick/click_override.dm +++ b/code/_onclick/click_override.dm @@ -38,8 +38,8 @@ /datum/middleClickOverride/badminClicker/onClick(atom/A, mob/living/user) var/atom/movable/newObject = new summon_path newObject.loc = get_turf(A) - to_chat(user, "You release the power you had stored up, summoning \a [newObject.name]! ") - usr.loc.visible_message("[user] waves [user.p_their()] hand and summons \a [newObject.name]") + to_chat(user, "You release the power you had stored up, summoning \a [newObject.name]!") + usr.loc.visible_message("[user] waves [user.p_their()] hand and summons \a [newObject.name]!") ..() /datum/middleClickOverride/shock_implant diff --git a/code/controllers/subsystem/SSjobs.dm b/code/controllers/subsystem/SSjobs.dm index f520b06ae41a..06cee5078925 100644 --- a/code/controllers/subsystem/SSjobs.dm +++ b/code/controllers/subsystem/SSjobs.dm @@ -42,7 +42,7 @@ SUBSYSTEM_DEF(jobs) occupations = list() var/list/all_jobs = subtypesof(/datum/job) if(!all_jobs.len) - to_chat(world, "Error setting up jobs, no job datums found") + to_chat(world, "Error setting up jobs, no job datums found.") return 0 for(var/J in all_jobs) diff --git a/code/controllers/subsystem/tickets/tickets.dm b/code/controllers/subsystem/tickets/tickets.dm index d3310abcaa67..e72f61da2227 100644 --- a/code/controllers/subsystem/tickets/tickets.dm +++ b/code/controllers/subsystem/tickets/tickets.dm @@ -252,14 +252,14 @@ SUBSYSTEM_DEF(tickets) C.man_up(returnClient(N)) T.lastStaffResponse = "Autoresponse: [message_key]" resolveTicket(N) - message_staff("[C] has auto responded to [ticket_owner]\'s adminhelp with: [message_key] ") + message_staff("[C] has auto responded to [ticket_owner]\'s adminhelp with: [message_key]") log_game("[C] has auto responded to [ticket_owner]\'s adminhelp with: [response_phrases[message_key]]") if("Mentorhelp") convert_ticket(T) else SEND_SOUND(returnClient(N), sound('sound/effects/adminhelp.ogg')) to_chat_safe(returnClient(N), "[key_name_hidden(C)] is autoresponding with: [response_phrases[message_key]]")//for this we want the full value of whatever key this is to tell the player so we do response_phrases[message_key] - message_staff("[C] has auto responded to [ticket_owner]\'s adminhelp with: [message_key] ") //we want to use the short named keys for this instead of the full sentence which is why we just do message_key + message_staff("[C] has auto responded to [ticket_owner]\'s adminhelp with: [message_key]") //we want to use the short named keys for this instead of the full sentence which is why we just do message_key T.lastStaffResponse = "Autoresponse: [message_key]" resolveTicket(N) log_game("[C] has auto responded to [ticket_owner]\'s adminhelp with: [response_phrases[message_key]]") diff --git a/code/datums/action.dm b/code/datums/action.dm index 0bdd5c4a0a36..0e6dc66076dc 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -445,7 +445,7 @@ /datum/action/item_action/instrument name = "Use Instrument" - desc = "Use the instrument specified" + desc = "Use the instrument specified." /datum/action/item_action/instrument/Trigger(left_click) if(istype(target, /obj/item/instrument)) @@ -551,7 +551,7 @@ /datum/action/item_action/accessory/herald name = "Mirror Walk" - desc = "Use near a mirror to enter it" + desc = "Use near a mirror to enter it." //Preset for spells /datum/action/spell_action diff --git a/code/datums/dog_fashion.dm b/code/datums/dog_fashion.dm index 1cfaf3d24bf4..64ae1fcc5bb1 100644 --- a/code/datums/dog_fashion.dm +++ b/code/datums/dog_fashion.dm @@ -177,7 +177,7 @@ /datum/dog_fashion/head/sombrero name = "Segnor REAL_NAME" - desc = "You must respect Elder Dogname" + desc = "You must respect Elder Dogname." /datum/dog_fashion/head/sombrero/New(mob/M) ..() @@ -211,7 +211,7 @@ /datum/dog_fashion/head/cone name = "REAL_NAME" - desc = "Omnicone's Chosen Champion" + desc = "Omnicone's Chosen Champion." /datum/dog_fashion/back/hardsuit name = "Space Explorer REAL_NAME" diff --git a/code/datums/emote.dm b/code/datums/emote.dm index 1cb1668e1182..42304b2f8795 100644 --- a/code/datums/emote.dm +++ b/code/datums/emote.dm @@ -531,7 +531,7 @@ return FALSE if(!check_rights(R_ADMIN, FALSE, user)) if(!GLOB.dsay_enabled) - to_chat(user, "Deadchat is globally muted") + to_chat(user, "Deadchat is globally muted.") return FALSE /** diff --git a/code/datums/station_traits/neutral_traits.dm b/code/datums/station_traits/neutral_traits.dm index 1374f9d0616d..91a8cbf084ac 100644 --- a/code/datums/station_traits/neutral_traits.dm +++ b/code/datums/station_traits/neutral_traits.dm @@ -2,14 +2,14 @@ name = "Bananium Shipment" trait_type = STATION_TRAIT_NEUTRAL weight = 5 - report_message = "Rumor has it that the clown planet has been sending support packages to clowns in this system." + report_message = "An unidentified benefactor has dispatched a mysterious shipment to your station's clown. It was reported to smell faintly of bananas." trait_to_give = STATION_TRAIT_BANANIUM_SHIPMENTS /datum/station_trait/bananium_shipment name = "Tranquilite Shipment" trait_type = STATION_TRAIT_NEUTRAL weight = 5 - report_message = "Rumor has it that the mime federation has been sending support packages to mimes in this system." + report_message = "Shipping records show an unmarked crate being delivered to your station's mime." trait_to_give = STATION_TRAIT_TRANQUILITE_SHIPMENTS /datum/station_trait/unique_ai diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index 3288038d4f1c..ccb43e11a816 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -27,6 +27,7 @@ /area/station/security/brig, /area/shuttle, /area/survivalpod, //although survivalpods are off-station, creating one on station no longer protects pods on station from the rad storm + /area/syndicate_depot/core, // exterior of depot still dangerous, gotta be inside /area/ruin, //Let us not completely kill space explorers. /area/station/command/server ) diff --git a/code/game/area/shuttle_areas.dm b/code/game/area/shuttle_areas.dm index be9f5f44fb22..efd45956d8e5 100644 --- a/code/game/area/shuttle_areas.dm +++ b/code/game/area/shuttle_areas.dm @@ -234,63 +234,6 @@ /area/shuttle/research/outpost icon_state = "shuttle" -/area/shuttle/salvage - name = "\improper Salvage Ship" - icon_state = "yellow" - -/area/shuttle/salvage/start - name = "\improper Middle of Nowhere" - icon_state = "yellow" - -/area/shuttle/salvage/arrivals - name = "\improper Space Station Auxiliary Docking" - icon_state = "yellow" - -/area/shuttle/salvage/derelict - name = "\improper Derelict Station" - icon_state = "yellow" - -/area/shuttle/salvage/djstation - name = "\improper Ruskie DJ Station" - icon_state = "yellow" - -/area/shuttle/salvage/north - name = "\improper North of the Station" - icon_state = "yellow" - -/area/shuttle/salvage/east - name = "\improper East of the Station" - icon_state = "yellow" - -/area/shuttle/salvage/south - name = "\improper South of the Station" - icon_state = "yellow" - -/area/shuttle/salvage/commssat - name = "\improper The Communications Satellite" - icon_state = "yellow" - -/area/shuttle/salvage/mining - name = "\improper South-West of the Mining Asteroid" - icon_state = "yellow" - -/area/shuttle/salvage/abandoned_ship - name = "\improper Abandoned Ship" - icon_state = "yellow" - parallax_movedir = WEST - -/area/shuttle/salvage/clown_asteroid - name = "\improper Clown Asteroid" - icon_state = "yellow" - -/area/shuttle/salvage/trading_post - name = "\improper Trading Post" - icon_state = "yellow" - -/area/shuttle/salvage/transit - name = "\improper hyperspace" - icon_state = "shuttle" - /area/shuttle/supply name = "Supply Shuttle" icon_state = "shuttle3" diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 51d8bbc88417..29124ecc5031 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -503,6 +503,7 @@ holder.icon_state = "hudjani" holder.alpha = 130 holder.plane = ABOVE_LIGHTING_PLANE + holder.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I'll just put this somewhere near the end... diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 4627b8d41821..270407751dfe 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -369,7 +369,7 @@ structure_check() searches for nearby cultist structures required for the invoca var/obj/item/melee/cultblade/dagger/D = new(get_turf(src)) if(H.equip_to_slot_if_possible(D, SLOT_HUD_IN_BACKPACK, FALSE, TRUE)) - to_chat(H, "You have a dagger in your backpack. Use it to do [SSticker.cultdat.entity_title1]'s bidding. ") + to_chat(H, "You have a dagger in your backpack. Use it to do [SSticker.cultdat.entity_title1]'s bidding.") else to_chat(H, "There is a dagger on the floor. Use it to do [SSticker.cultdat.entity_title1]'s bidding.") diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index bdac0e91c34d..83ea90eeb2af 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -506,7 +506,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} add_attack_logs(user, L, "Put to sleep with [src]") else L.AdjustDrowsy(2 SECONDS) - to_chat(user, "Sleep inducement works fully only on stunned specimens! ") + to_chat(user, "Sleep inducement works fully only on stunned specimens!") L.visible_message("[user] tried to induce sleep in [L] with [src]!", \ "You suddenly feel drowsy!") diff --git a/code/game/gamemodes/miniantags/demons/slaughter demon/slaughter.dm b/code/game/gamemodes/miniantags/demons/slaughter demon/slaughter.dm index b4436375173c..a1cc1cd7ba2d 100644 --- a/code/game/gamemodes/miniantags/demons/slaughter demon/slaughter.dm +++ b/code/game/gamemodes/miniantags/demons/slaughter demon/slaughter.dm @@ -244,7 +244,7 @@ // Eating a 2nd heart. Gives the ability to drag people into blood and eat them. if(HAS_TRAIT(user, TRAIT_BLOODCRAWL)) - to_chat(user, "You feel differ- CONSUME THEM! ") + to_chat(user, "You feel differ- CONSUME THEM!") ADD_TRAIT(user, TRAIT_BLOODCRAWL_EAT, "bloodcrawl_eat") qdel(src) // Replacing their demon heart with another demon heart is pointless, just delete this one and return. return TRUE diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 886dcdb52614..cd7d7f10575d 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -76,7 +76,7 @@ return if(used) - to_chat(user, " You've already summoned an apprentice or you are in process of summoning one. ") + to_chat(user, "You've already summoned an apprentice or you are in process of summoning one.") return ui_interact(user) @@ -322,6 +322,7 @@ GLOBAL_LIST_EMPTY(multiverse) /obj/item/multisword name = "multiverse sword" desc = "A weapon capable of conquering the universe and beyond. Activate it to summon copies of yourself from others dimensions to fight by your side." + icon = 'icons/obj/energy_melee.dmi' lefthand_file = 'icons/mob/inhands/weapons_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons_righthand.dmi' icon_state = "energy_katana" @@ -707,6 +708,7 @@ GLOBAL_LIST_EMPTY(multiverse) /obj/item/multisword/pike //If We are to be used and spent, let it be for a noble purpose. name = "phantom pike" desc = "A fishing pike that appears to be imbued with a peculiar energy." + icon = 'icons/obj/items.dmi' icon_state = "harpoon" item_state = "harpoon" cooldown_between_uses = 200 //Half the time diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index ab25da432f7b..f6d1716cd718 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -199,7 +199,7 @@ and the memories of your time as their servant with it.") to_chat(M, "Assist [user], your saviour, and get vengeance on those who enslaved you!") else - to_chat(M, "Your soulstone has been exorcised, and you are now bound to obey [user]. ") + to_chat(M, "Your soulstone has been exorcised, and you are now bound to obey [user].") for(var/mob/living/simple_animal/shade/EX in src) EX.holy = TRUE diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 41701ab29314..cdc77fa8ad39 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -144,7 +144,7 @@ return list(ACCESS_SYNDICATE, ACCESS_SYNDICATE_LEADER, ACCESS_SYNDICATE_COMMAND) /proc/get_all_misc_access() - return list(ACCESS_SALVAGE_CAPTAIN, ACCESS_TRADE_SOL, ACCESS_CRATE_CASH, ACCESS_AWAY01) + return list(ACCESS_TRADE_SOL, ACCESS_CRATE_CASH, ACCESS_AWAY01) /proc/get_absolutely_all_accesses() return (get_all_accesses() | get_all_centcom_access() | get_all_syndicate_access() | get_all_misc_access()) diff --git a/code/game/machinery/airlock_control/airlock_controllers.dm b/code/game/machinery/airlock_control/airlock_controllers.dm index 935a7619307a..1a229fb80731 100644 --- a/code/game/machinery/airlock_control/airlock_controllers.dm +++ b/code/game/machinery/airlock_control/airlock_controllers.dm @@ -105,7 +105,7 @@ add_fingerprint(usr) if(!allowed(usr)) - to_chat(usr, "Access denied") + to_chat(usr, "Access denied.") return TRUE switch(action) diff --git a/code/game/machinery/computer/arcade_games/recruiter.dm b/code/game/machinery/computer/arcade_games/recruiter.dm index 44341499fe4e..da0611a9930d 100644 --- a/code/game/machinery/computer/arcade_games/recruiter.dm +++ b/code/game/machinery/computer/arcade_games/recruiter.dm @@ -55,7 +55,7 @@ "Spent 2 years as a freelance journalist", "Known as a hero for keeping stations clean during attacks", "Worked as a bureaucrat for SolGov", "Worked in Donk Corporation's R&D department", "Did work for USSP as an translator", "Took care of Toxins, Xenobiology, Robotics and R&D as a single worker in the Research department", - "Served for 4 years as a soldier of the Prospero Order", "Traveled through various systems as an businessman", + "Served for 4 years as a soldier of the Prospero Order", "Traveled through various systems as a businessman", "Worked as a waiter for one year", "Has previous experience as a cameraman", "Spent years of their life being a janitor at Clown College", "Was given numerous good reviews for delivering cargo requests on time", "Helped old people cross the holostreet", "Has proven ability to read", "Served 4 years in NT navy", diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index f799538d9c0d..399172ace386 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -547,7 +547,7 @@ format_board_name() to_chat(user, "Access protocols set to [console_choice].") else - to_chat(user, "Access Denied") + to_chat(user, "Access Denied.") return return ..() diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 74c9a68c1a9f..70469db1ff34 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -227,17 +227,18 @@ else return 0 -/obj/item/lightreplacer/afterattack(atom/T, mob/U, proximity) +/obj/item/lightreplacer/afterattack(atom/target_turf, mob/U, proximity) . = ..() if(!proximity && !bluespace_toggle) return - if(!isturf(T)) + var/turf/replace_turf = get_turf(target_turf) + if(!istype(replace_turf)) return - if(get_dist(src, T) >= (U.client.maxview() + 2)) // To prevent people from using it over cameras + if(get_dist(src, target_turf) >= (U.client.maxview() + 2)) // To prevent people from using it over cameras return var/used = FALSE - for(var/atom/A in T) + for(var/atom/A in replace_turf) if(!CanUse(U)) break used = TRUE diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 723c11a2c3c8..88a0193628a2 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -3,6 +3,7 @@ CONTAINS: T-RAY DETECTIVE SCANNER HEALTH ANALYZER +ROBOT ANALYZER GAS ANALYZER PLANT ANALYZER REAGENT SCANNER @@ -328,6 +329,129 @@ REAGENT SCANNER origin_tech = "magnets=2;biotech=2" usesound = 'sound/items/deconstruct.ogg' +/obj/item/robotanalyzer + name = "cyborg analyzer" + desc = "A hand-held scanner able to diagnose robotic injuries." + icon = 'icons/obj/device.dmi' + icon_state = "robotanalyzer" + item_state = "analyzer" + flags = CONDUCT + slot_flags = SLOT_FLAG_BELT + throwforce = 3 + w_class = WEIGHT_CLASS_SMALL + throw_speed = 5 + throw_range = 10 + origin_tech = "magnets=1;biotech=1" + +/obj/item/robotanalyzer/attack(mob/living/M, mob/living/user) + if((HAS_TRAIT(user, TRAIT_CLUMSY) || user.getBrainLoss() >= 60) && prob(50)) + var/list/msgs = list() + user.visible_message("[user] has analyzed the floor's components!", "You try to analyze the floor's vitals!") + msgs += "Analyzing Results for The floor:\n\t Overall Status: Unknown" + msgs += "\t Damage Specifics: [0]/Key: Burns/Brute" + msgs += "Chassis Temperature: ???" + to_chat(user, chat_box_healthscan(msgs.Join("
"))) + return + + user.visible_message("[user] has analyzed [M]'s components.", "You have analyzed [M]'s components.") + robot_healthscan(user, M) + add_fingerprint(user) + +/proc/robot_healthscan(mob/user, mob/living/M) + var/scan_type + var/list/msgs = list() + if(isrobot(M)) + scan_type = "robot" + else if(ishuman(M)) + scan_type = "prosthetics" + else if(isAI(M)) + scan_type = "ai" + else + to_chat(user, "You can't analyze non-robotic things!") + return + + switch(scan_type) + if("robot") + var/burn = M.getFireLoss() > 50 ? "[M.getFireLoss()]" : M.getFireLoss() + var/brute = M.getBruteLoss() > 50 ? "[M.getBruteLoss()]" : M.getBruteLoss() + msgs += "Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "fully disabled" : "[M.health]% functional"]" + msgs += "\t Key: Electronics/Brute" + msgs += "\t Damage Specifics: [burn] - [brute]" + if(M.timeofdeath && M.stat == DEAD) + msgs += "Time of disable: [station_time_timestamp("hh:mm:ss", M.timeofdeath)]" + var/mob/living/silicon/robot/H = M + var/list/damaged = H.get_damaged_components(TRUE, TRUE, TRUE) // Get all except the missing ones + var/list/missing = H.get_missing_components() + msgs += "Localized Damage:" + if(!LAZYLEN(damaged) && !LAZYLEN(missing)) + msgs += "\t Components are OK." + else + if(LAZYLEN(damaged)) + for(var/datum/robot_component/org in damaged) + msgs += text("\t []: [][] - [] - [] - []", \ + capitalize(org.name), \ + (org.is_destroyed()) ? "DESTROYED " :"",\ + (org.electronics_damage > 0) ? "[org.electronics_damage]" :0, \ + (org.brute_damage > 0) ? "[org.brute_damage]" :0, \ + (org.toggled) ? "Toggled ON" : "Toggled OFF",\ + (org.powered) ? "Power ON" : "Power OFF") + if(LAZYLEN(missing)) + for(var/datum/robot_component/org in missing) + msgs += "\t [capitalize(org.name)]: MISSING" + + if(H.emagged && prob(5)) + msgs += "\t ERROR: INTERNAL SYSTEMS COMPROMISED" + + if("prosthetics") + var/mob/living/carbon/human/H = M + var/is_ipc = ismachineperson(H) + msgs += "Analyzing Results for [M]: [is_ipc ? "\n\t Overall Status: [H.stat > 1 ? "fully disabled" : "[H.health]% functional"]
" : "
"]" //for the record im sorry + msgs += "\t Key: Electronics/Brute" + msgs += "External prosthetics:" + var/organ_found + if(LAZYLEN(H.internal_organs)) + for(var/obj/item/organ/external/E in H.bodyparts) + if(!E.is_robotic() || (is_ipc && (E.get_damage() == 0))) //Non-IPCs have their cybernetics show up in the scan, even if undamaged + continue + organ_found = TRUE + msgs += "[E.name]: [E.brute_dam] [E.burn_dam]" + if(!organ_found) + msgs += "No prosthetics located." + msgs += "
" + msgs += "Internal prosthetics:" + organ_found = null + if(LAZYLEN(H.internal_organs)) + for(var/obj/item/organ/internal/O in H.internal_organs) + if(!O.is_robotic() || istype(O, /obj/item/organ/internal/cyberimp)) + continue + organ_found = TRUE + msgs += "[capitalize(O.name)]: [O.damage]" + if(!organ_found) + msgs += "No prosthetics located." + msgs += "
" + msgs += "Cybernetic implants:" + organ_found = null + if(LAZYLEN(H.internal_organs)) + for(var/obj/item/organ/internal/cyberimp/I in H.internal_organs) + organ_found = TRUE + msgs += "[capitalize(I.name)]: [I.crit_fail ? "CRITICAL FAILURE" : I.damage]" + if(!organ_found) + msgs += "No implants located." + msgs += "
" + if(is_ipc) + msgs.Add(get_chemscan_results(user, H)) + msgs += "Subject temperature: [round(H.bodytemperature-T0C, 0.01)]°C ([round(H.bodytemperature*1.8-459.67, 0.01)]°F)" + if("ai") + var/mob/living/silicon/ai/A = M + var/burn = A.getFireLoss() > 50 ? "[A.getFireLoss()]" : A.getFireLoss() + var/brute = A.getBruteLoss() > 50 ? "[A.getBruteLoss()]" : A.getBruteLoss() + msgs += "Analyzing Results for [M]:\n\t Overall Status: [A.stat > 1 ? "fully disabled" : "[A.health]% functional"]" + msgs += "\t Key: Electronics/Brute" + msgs += "\t Damage Specifics: [burn] - [brute]" + + to_chat(user, chat_box_healthscan(msgs.Join("
"))) + /obj/item/analyzer name = "analyzer" desc = "A hand-held environmental scanner which reports current gas levels." diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 0449d907f9a0..e4f434a63842 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -20,7 +20,7 @@ icon_state = "[initial(icon_state)]" /obj/item/jammer/attack_self(mob/user) - to_chat(user, "You [active ? "deactivate [src]. It goes quiet with a small click." : "activate [src]. It starts to hum softly."] ") + to_chat(user, "You [active ? "deactivate [src]. It goes quiet with a small click." : "activate [src]. It starts to hum softly."]") active = !active update_icon(UPDATE_ICON_STATE) if(active) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 11d45ad6448e..9a4586be8161 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -351,6 +351,8 @@ var/stackmaterial = round(input(user, "How many sheets do you wish to take out of this stack? (Maximum: [max])") as null|num) if(stackmaterial == null || stackmaterial <= min || stackmaterial > get_amount()) return + if(!Adjacent(user, 1)) + return change_stack(user,stackmaterial) to_chat(user, "You take [stackmaterial] sheets out of the stack.") diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 4f6292496495..20a7660b469e 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -783,7 +783,7 @@ /obj/item/toy/plushie/ipcplushie/attackby(obj/item/B, mob/user, params) if(istype(B, /obj/item/food/snacks/breadslice)) new /obj/item/food/snacks/toast(get_turf(loc)) - to_chat(user, " You insert bread into the toaster. ") + to_chat(user, "You insert bread into the toaster.") playsound(loc, 'sound/machines/ding.ogg', 50, 1) qdel(B) else diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index f9844c0461ca..556839fdb0f0 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -277,7 +277,7 @@ guest_pass.forceMove(get_turf(src)) guest_pass = null else - to_chat(user, "There is no guest pass attached to this ID") + to_chat(user, "There is no guest pass attached to this ID.") /obj/item/card/id/serialize() var/list/data = ..() @@ -717,13 +717,6 @@ name = "Prisoner [random_number]" registered_name = name -/obj/item/card/id/salvage_captain - name = "Captain's ID" - registered_name = "Captain" - icon_state = "centcom" - desc = "Finders, keepers." - access = list(ACCESS_SALVAGE_CAPTAIN) - /obj/item/card/id/medical name = "Medical ID" registered_name = "Medic" diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 9c74fa6f73ce..2ff7a75b2e0d 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -70,7 +70,7 @@ user.visible_message("[user] grins as [user.p_they()] begin[user.p_s()] to put a Bag of Holding into a Bag of Holding!", "You begin to put the Bag of Holding into the Bag of Holding!") if(do_after(user, 30, target=src)) investigate_log("has become a singularity. Caused by [user.key]","singulo") - user.visible_message("[user] erupts in evil laughter as [user.p_they()] put[user.p_s()] the Bag of Holding into another Bag of Holding!", "You can't help but laugh wildly as you put the Bag of Holding into another Bag of Holding, complete darkness surrounding you."," You hear the sound of scientific evil brewing! ") + user.visible_message("[user] erupts in evil laughter as [user.p_they()] put[user.p_s()] the Bag of Holding into another Bag of Holding!", "You can't help but laugh wildly as you put the Bag of Holding into another Bag of Holding, complete darkness surrounding you."," You hear the sound of scientific evil brewing!") qdel(W) var/obj/singularity/singulo = new /obj/singularity(get_turf(user)) singulo.energy = 300 //To give it a small boost diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index c48d21529535..43e323d98307 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -1226,7 +1226,7 @@ /obj/item/storage/box/foam_grenades name = "foam grenades box" desc = "A box full of foam grenades." - icon_state = "flashbang" + icon_state = "flashbang_box" /obj/item/storage/box/foam_grenades/populate_contents() for(var/I in 1 to 7) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index a1ad8350df0a..cce40bd6f9bf 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -56,7 +56,7 @@ visible_message("The locker has been [locked ? null : "un"]locked by [user].") update_icon() else - to_chat(user, "Access Denied") + to_chat(user, "Access Denied.") /obj/structure/closet/secure_closet/closed_item_click(mob/user) togglelock(user) diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index c07464d48ad1..38240e163151 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -115,4 +115,4 @@ if(user) user.dust() dump_contents() - visible_message("[src] shatters!. ") + visible_message("[src] shatters!") diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 8323cfac71a4..ebffc67c1513 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -225,7 +225,7 @@ visible_message("The crate has been [locked ? null : "un"]locked by [user].") update_icon() else - to_chat(user, "Access Denied") + to_chat(user, "Access Denied.") /obj/structure/closet/crate/secure/AltClick(mob/user) if(Adjacent(user) && !opened) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 605b1575d281..5f065f6bf4f7 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -295,14 +295,14 @@ for(var/mob/dead/observer/g in get_ghosts()) if(g.antagHUD) g.antagHUD = FALSE // Disable it on those that have it enabled - to_chat(g, "The Administrators have disabled AntagHUD ") + to_chat(g, "The Administrators have disabled AntagHUD.") GLOB.configuration.general.allow_antag_hud = FALSE to_chat(src, "AntagHUD usage has been disabled") action = "disabled" else for(var/mob/dead/observer/g in get_ghosts()) if(!g.client.holder) // Add the verb back for all non-admin ghosts - to_chat(g, "The Administrators have enabled AntagHUD ")// Notify all observers they can now use AntagHUD + to_chat(g, "The Administrators have enabled AntagHUD.")// Notify all observers they can now use AntagHUD GLOB.configuration.general.allow_antag_hud = TRUE action = "enabled" @@ -330,7 +330,7 @@ else for(var/mob/dead/observer/g in get_ghosts()) to_chat(g, "The administrator has placed restrictions on joining the round if you use AntagHUD") - to_chat(g, "Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions ") + to_chat(g, "Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions.") g.antagHUD = FALSE GLOB.antag_hud_users -= g.ckey action = "placed restrictions" diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index 9af71e5350a9..fe761be29b5f 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -340,7 +340,7 @@ GLOBAL_LIST_EMPTY(antagonists) */ /datum/antagonist/proc/farewell() if(owner && owner.current) - to_chat(owner.current,"You are no longer a [special_role]! ") + to_chat(owner.current,"You are no longer a [special_role]!") /** * Creates a new antagonist team. diff --git a/code/modules/antagonists/changeling/powers/fleshmend.dm b/code/modules/antagonists/changeling/powers/fleshmend.dm index a2d46914432c..b0ee5255b5cd 100644 --- a/code/modules/antagonists/changeling/powers/fleshmend.dm +++ b/code/modules/antagonists/changeling/powers/fleshmend.dm @@ -4,7 +4,7 @@ helptext = "Does not regrow limbs. Partially recovers our blood. Functions while unconscious." button_icon_state = "fleshmend" chemical_cost = 20 - dna_cost = 4 + dna_cost = 5 req_stat = UNCONSCIOUS power_type = CHANGELING_PURCHASABLE_POWER category = /datum/changeling_power_category/defence diff --git a/code/modules/antagonists/revolutionary/datum_revolutionary.dm b/code/modules/antagonists/revolutionary/datum_revolutionary.dm index 1081bf9da443..ed3be5c22cdf 100644 --- a/code/modules/antagonists/revolutionary/datum_revolutionary.dm +++ b/code/modules/antagonists/revolutionary/datum_revolutionary.dm @@ -25,7 +25,7 @@ /datum/antagonist/rev/farewell() if(owner && owner.current) - to_chat(owner.current,"You have been brainwashed! You are no longer a [special_role]! ") + to_chat(owner.current,"You have been brainwashed! You are no longer a [special_role]!") /datum/antagonist/rev/add_owner_to_gamemode() diff --git a/code/modules/antagonists/vampire/vampire_powers/dantalion_powers.dm b/code/modules/antagonists/vampire/vampire_powers/dantalion_powers.dm index b2c6c2db499c..6ebffddb66fc 100644 --- a/code/modules/antagonists/vampire/vampire_powers/dantalion_powers.dm +++ b/code/modules/antagonists/vampire/vampire_powers/dantalion_powers.dm @@ -120,7 +120,7 @@ for(var/mob/M in targets) to_chat(M, "[full_title]: [input]") for(var/mob/M in GLOB.dead_mob_list) - to_chat(M, "[full_title] ([ghost_follow_link(user, ghost=M)]): [input] ") + to_chat(M, "[full_title] ([ghost_follow_link(user, ghost=M)]): [input]") log_say("(DANTALION) [input]", user) user.create_log(SAY_LOG, "(DANTALION) [input]") diff --git a/code/modules/crafting/guncrafting.dm b/code/modules/crafting/guncrafting.dm index 794446de44cc..2b41fbf63bee 100644 --- a/code/modules/crafting/guncrafting.dm +++ b/code/modules/crafting/guncrafting.dm @@ -29,7 +29,7 @@ /obj/item/weaponcrafting/gunkit/nuclear name = "\improper advanced energy gun parts kit" - desc = "A suitcase containing the necessary gun parts to tranform a standard energy gun into an advaned energy gun." + desc = "A suitcase containing the necessary gun parts to transform a standard energy gun into an advanced energy gun." origin_tech = "combat=4;magnets=4;powerstorage=4" outcome = /obj/item/gun/energy/gun/nuclear @@ -53,7 +53,7 @@ /obj/item/weaponcrafting/gunkit/temperature name = "\improper temperature gun parts kit" - desc = "A suitcase containing the necessary gun parts to tranform a standard energy gun into a temperature gun. Fantastic at birthday parties and killing indigenious populations of Ash Walkers." + desc = "A suitcase containing the necessary gun parts to transform a standard energy gun into a temperature gun. Fantastic at birthday parties and killing indigenious populations of Ash Walkers." origin_tech = "combat=4;materials=4;powerstorage=3;magnets=2" outcome = /obj/item/gun/energy/temperature diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index 222525119560..71c296d900bd 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -17,7 +17,7 @@ /obj/structure/fermenting_barrel/examine(mob/user) . = ..() - . += "It is currently [open ? "open, letting you pour liquids in." : "closed, letting you draw liquids from the tap."] " + . += "It is currently [open ? "open, letting you pour liquids in." : "closed, letting you draw liquids from the tap."]" /obj/structure/fermenting_barrel/proc/makeWine(obj/item/food/snacks/grown/G) if(G.reagents) diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 33ea40ed4126..81faa38130b0 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -328,12 +328,14 @@ return FALSE var/stored = get_num_smeltable_alloy(D) var/desired = min(amount, stored, MAX_STACK_SIZE) + if(!desired) + return FALSE materials.use_amount(D.materials, desired) // Spawn the alloy var/result = new D.build_path(src) if(istype(result, /obj/item/stack/sheet)) var/obj/item/stack/sheet/mineral/A = result - A.amount = amount + A.amount = desired unload_mineral(A) else unload_mineral(result) @@ -396,7 +398,11 @@ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/amount_compatible = materials.get_item_material_amount(O) if(amount_compatible) - materials.insert_item(O, sheet_per_ore) + // Prevents duping + if(O.refined_type) + materials.insert_item(O, sheet_per_ore) + else + materials.insert_item(O, 1) // Delete the stack ore_buffer -= O qdel(O) diff --git a/code/modules/mob/living/carbon/human/human_update_status.dm b/code/modules/mob/living/carbon/human/human_update_status.dm index 26972a8ecf2c..0c48d4b5fa1b 100644 --- a/code/modules/mob/living/carbon/human/human_update_status.dm +++ b/code/modules/mob/living/carbon/human/human_update_status.dm @@ -6,7 +6,7 @@ if(dna.species && dna.species.can_revive_by_healing) var/obj/item/organ/internal/brain/B = get_int_organ(/obj/item/organ/internal/brain) if(B) - if((health >= (HEALTH_THRESHOLD_DEAD + HEALTH_THRESHOLD_CRIT) * 0.5) && getBrainLoss() < 120 && !suiciding) + if((health >= (HEALTH_THRESHOLD_DEAD + HEALTH_THRESHOLD_CRIT) * 0.5) && check_vital_organs() && !suiciding) update_revive() create_debug_log("revived from healing, trigger reason: [reason]") diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index 49b7baaf9504..f3f11facad02 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -243,118 +243,3 @@ name = "radio" desc = "A modular, multi-frequency radio used by robots and exosuits to enable communication systems. Comes with built-in subspace receivers." icon_state = "radio" - -// -//Robotic Component Analyzer, basically a health analyzer for robots -// -/obj/item/robotanalyzer - name = "cyborg analyzer" - icon = 'icons/obj/device.dmi' - icon_state = "robotanalyzer" - item_state = "analyzer" - desc = "A hand-held scanner able to diagnose robotic injuries." - flags = CONDUCT - slot_flags = SLOT_FLAG_BELT - throwforce = 3 - w_class = WEIGHT_CLASS_SMALL - throw_speed = 5 - throw_range = 10 - origin_tech = "magnets=1;biotech=1" - var/mode = 1 - -/obj/item/robotanalyzer/attack(mob/living/M as mob, mob/living/user as mob) - if((HAS_TRAIT(user, TRAIT_CLUMSY) || user.getBrainLoss() >= 60) && prob(50)) - var/list/messages = list() - user.visible_message("[user] has analyzed the floor's vitals!", "You try to analyze the floor's vitals!") - messages.Add("Analyzing Results for The floor:\n\t Overall Status: Healthy") - messages.Add("\t Damage Specifics: [0]-[0]-[0]-[0]") - messages.Add("Key: Suffocation/Toxin/Burns/Brute") - messages.Add("Body Temperature: ???") - to_chat(user, chat_box_healthscan(messages.Join("
"))) - return - - user.visible_message("[user] has analyzed [M]'s components.","You have analyzed [M]'s components.") - robot_healthscan(user, M) - add_fingerprint(user) - - -/proc/robot_healthscan(mob/user, mob/living/M) - var/scan_type - if(isrobot(M)) - scan_type = "robot" - else if(ishuman(M)) - scan_type = "prosthetics" - else - to_chat(user, "You can't analyze non-robotic things!") - return - - var/list/messages = list() - switch(scan_type) - if("robot") - var/BU = M.getFireLoss() > 50 ? "[M.getFireLoss()]" : M.getFireLoss() - var/BR = M.getBruteLoss() > 50 ? "[M.getBruteLoss()]" : M.getBruteLoss() - messages.Add("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "fully disabled" : "[M.health]% functional"]") - messages.Add("\t Key: Electronics/Brute") - messages.Add("\t Damage Specifics: [BU] - [BR]") - if(M.timeofdeath && M.stat == DEAD) - messages.Add("Time of Disable: [station_time_timestamp("hh:mm:ss", M.timeofdeath)]") - var/mob/living/silicon/robot/H = M - var/list/damaged = H.get_damaged_components(TRUE, TRUE, TRUE) // Get all except the missing ones - var/list/missing = H.get_missing_components() - messages.Add("Localized Damage:") - if(!LAZYLEN(damaged) && !LAZYLEN(missing)) - messages.Add("\t Components are OK.") - else - if(LAZYLEN(damaged)) - for(var/datum/robot_component/org in damaged) - messages.Add(text("\t []: [][] - [] - [] - []", \ - capitalize(org.name), \ - (org.is_destroyed()) ? "DESTROYED " :"",\ - (org.electronics_damage > 0) ? "[org.electronics_damage]" :0, \ - (org.brute_damage > 0) ? "[org.brute_damage]" :0, \ - (org.toggled) ? "Toggled ON" : "Toggled OFF",\ - (org.powered) ? "Power ON" : "Power OFF"),1) - if(LAZYLEN(missing)) - for(var/datum/robot_component/org in missing) - messages.Add("\t [capitalize(org.name)]: MISSING") - - if(H.emagged && prob(5)) - messages.Add("\t ERROR: INTERNAL SYSTEMS COMPROMISED") - - if("prosthetics") - var/mob/living/carbon/human/H = M - messages.Add("Analyzing Results for \the [H]:") - messages.Add("Key: Electronics/Brute") - - to_chat(user, "External prosthetics:") - var/organ_found - if(LAZYLEN(H.internal_organs)) - for(var/obj/item/organ/external/E in H.bodyparts) - if(!E.is_robotic()) - continue - organ_found = TRUE - messages.Add("[E.name]: [E.brute_dam] [E.burn_dam]") - if(!organ_found) - messages.Add("No prosthetics located.") - messages.Add("
") - messages.Add("Internal prosthetics:") - organ_found = null - if(LAZYLEN(H.internal_organs)) - for(var/obj/item/organ/internal/O in H.internal_organs) - if(!O.is_robotic() || istype(O, /obj/item/organ/internal/cyberimp)) - continue - organ_found = TRUE - messages.Add("[capitalize(O.name)]: [O.damage]") - if(!organ_found) - messages.Add("No prosthetics located.") - messages.Add("
") - messages.Add("Cybernetic implants:") - organ_found = null - if(LAZYLEN(H.internal_organs)) - for(var/obj/item/organ/internal/cyberimp/I in H.internal_organs) - organ_found = TRUE - messages.Add("[capitalize(I.name)]: [I.crit_fail ? "CRITICAL FAILURE" : I.damage]") - if(!organ_found) - messages.Add("No implants located.") - - to_chat(user, chat_box_healthscan(messages.Join("
"))) diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index a2a20770c767..8ce9afac83e4 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -4,7 +4,7 @@ /mob/living/simple_animal/hostile/hivebot name = "Hivebot" - desc = "A small robot" + desc = "A small robot." icon = 'icons/mob/hivebot.dmi' icon_state = "basic" icon_living = "basic" diff --git a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm index ea3714913e5c..0c674ca45282 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/hivelord.dm @@ -30,7 +30,7 @@ retreat_distance = 3 minimum_distance = 3 pass_flags = PASSTABLE - loot = list(/obj/item/organ/internal/regenerative_core) + butcher_results = list(/obj/item/organ/internal/regenerative_core = 1) var/brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood /mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(the_target) @@ -172,6 +172,7 @@ throw_message = "bounces harmlessly off of" crusher_loot = /obj/item/crusher_trophy/legion_skull loot = list(/obj/item/organ/internal/regenerative_core/legion) + butcher_results = null brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion del_on_death = TRUE stat_attack = UNCONSCIOUS diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm index 0b36601101e7..2e35b5994676 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm @@ -51,7 +51,7 @@ user.do_attack_animation(src) if(O.force) if(prob(melee_block_chance)) - visible_message("[src] blocks [O] with its shield! ") + visible_message("[src] blocks [O] with its shield!") else var/damage = O.force if(O.damtype == STAMINA) @@ -60,11 +60,11 @@ visible_message("[src] is unharmed by [O]!") return adjustHealth(damage) - visible_message("[src] has been attacked with [O] by [user]. ") + visible_message("[src] has been attacked with [O] by [user].") playsound(loc, O.hitsound, 25, 1, -1) else to_chat(usr, "This weapon is ineffective, it does no damage.") - visible_message("[user] gently taps [src] with [O]. ") + visible_message("[user] gently taps [src] with [O].") /mob/living/simple_animal/hostile/syndicate/melee/bullet_act(obj/item/projectile/Proj) diff --git a/code/modules/power/apc/apc.dm b/code/modules/power/apc/apc.dm index fadf8593c894..91239fcf9cbc 100644 --- a/code/modules/power/apc/apc.dm +++ b/code/modules/power/apc/apc.dm @@ -346,7 +346,7 @@ else if(istype(W, /obj/item/mounted/frame/apc_frame) && opened) if(!(stat & BROKEN || opened == APC_COVER_OFF || obj_integrity < max_integrity)) // There is nothing to repair - to_chat(user, "You found no reason for repairing this APC") + to_chat(user, "You found no reason for repairing this APC.") return if(!(stat & BROKEN) && opened == APC_COVER_OFF) // Cover is the only thing broken, we do not need to remove elctronicks to replace cover user.visible_message("[user.name] replaces missing APC's cover.",\ diff --git a/code/modules/power/engines/supermatter/supermatter.dm b/code/modules/power/engines/supermatter/supermatter.dm index d96ea9196e10..5a61d0724b8d 100644 --- a/code/modules/power/engines/supermatter/supermatter.dm +++ b/code/modules/power/engines/supermatter/supermatter.dm @@ -964,7 +964,7 @@ l_power = 3, l_color = SUPERMATTER_SINGULARITY_LIGHT_COLOUR, ) - if(!combined_gas > MOLE_PENALTY_THRESHOLD || !get_integrity() < SUPERMATTER_DANGER_PERCENT) + if(!combined_gas > MOLE_PENALTY_THRESHOLD || get_integrity() > SUPERMATTER_DANGER_PERCENT) for(var/obj/D in darkness_effects) qdel(D) return @@ -975,7 +975,7 @@ l_range = 4 + darkness_aoe, l_power = -1 - darkness_strength, l_color = "#ddd6cf") - if(!length(darkness_effects) && moveable) //Don't do this on movable sms oh god. Ideally don't do this at all, but hey, that's lightning for you + if(!length(darkness_effects) && !moveable) //Don't do this on movable sms oh god. Ideally don't do this at all, but hey, that's lightning for you darkness_effects += new /obj/effect/abstract(locate(x-3,y+3,z)) darkness_effects += new /obj/effect/abstract(locate(x+3,y+3,z)) darkness_effects += new /obj/effect/abstract(locate(x-3,y-3,z)) @@ -1226,7 +1226,7 @@ /datum/supermatter_event/sierra_tier = 1) var/datum/supermatter_event/event = pick(subtypesof(pickweight(events))) - if(istype(event, /datum/supermatter_event/sierra_tier) && has_run_sclass) + if(ispath(event, /datum/supermatter_event/sierra_tier) && has_run_sclass) make_next_event_time() return // We're only gonna have one s-class per round, take a break engineers run_event(event) diff --git a/code/modules/projectiles/projectile/magic_projectiles.dm b/code/modules/projectiles/projectile/magic_projectiles.dm index ae210e6a0147..5a8f424c85e6 100644 --- a/code/modules/projectiles/projectile/magic_projectiles.dm +++ b/code/modules/projectiles/projectile/magic_projectiles.dm @@ -311,7 +311,6 @@ damage_type = BURN /obj/item/projectile/magic/animate/Bump(atom/change) - ..() if(isitem(change) || isstructure(change) && !is_type_in_list(change, GLOB.protected_objects)) if(istype(change, /obj/structure/closet/statue)) for(var/mob/living/carbon/human/H in change.contents) @@ -336,6 +335,7 @@ // Change our allegiance! var/mob/living/simple_animal/hostile/mimic/copy/C = change C.ChangeOwner(firer) + return ..() /obj/item/projectile/magic/slipping name = "magical banana" diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 4231ecd31dbc..1dc73578f316 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -571,7 +571,7 @@ /obj/item/v1_arm_shell name = "vortex feedback arm implant frame" - desc = "An implant awaiting installation of a vortex anomaly core" + desc = "An implant awaiting installation of a vortex anomaly core." icon_state = "v1_arm" /obj/item/v1_arm_shell/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm index 5d7fb4d2bb57..d1d53dbb77a7 100644 --- a/code/modules/surgery/organs/augments_eyes.dm +++ b/code/modules/surgery/organs/augments_eyes.dm @@ -1,6 +1,6 @@ /obj/item/organ/internal/cyberimp/eyes name = "cybernetic eyes" - desc = "artificial photoreceptors with specialized functionality" + desc = "artificial photoreceptors with specialized functionality." icon_state = "eye_implant" implant_overlay = "eye_implant_overlay" slot = "eye_sight" diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index c5fa8032c335..ae39f0a84616 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -1,6 +1,6 @@ /obj/item/organ/internal/cyberimp name = "cybernetic implant" - desc = "a state-of-the-art implant that improves a baseline's functionality" + desc = "a state-of-the-art implant that improves a baseline's functionality." status = ORGAN_ROBOT var/implant_color = "#FFFFFF" var/implant_overlay @@ -21,7 +21,7 @@ /obj/item/organ/internal/cyberimp/brain name = "cybernetic brain implant" - desc = "injectors of extra sub-routines for the brain" + desc = "injectors of extra sub-routines for the brain." icon_state = "brain_implant" implant_overlay = "brain_implant_overlay" parent_organ = "head" @@ -204,7 +204,7 @@ /obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened/compatible name = "Hardened Neural Jumpstarter implant" - desc = "A military-grade version of the standard implant, for NT's more elite forces. This one is compatible with the CNS Rebooter implant" + desc = "A military-grade version of the standard implant, for NT's more elite forces. This one is compatible with the CNS Rebooter implant." slot = "brain_antisleep" emp_proof = TRUE @@ -309,7 +309,7 @@ //[[[[CHEST]]]] /obj/item/organ/internal/cyberimp/chest name = "cybernetic torso implant" - desc = "implants for the organs in your torso" + desc = "implants for the organs in your torso." icon_state = "chest_implant" implant_overlay = "chest_implant_overlay" parent_organ = "chest" diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index aec0dcb6c1e1..700232bf3fe4 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -213,7 +213,7 @@ /obj/item/organ/internal/eyes/cybernetic/eyesofgod //no occuline allowed name = "\improper Eyes of the Gods" - desc = "Two eyes said to belong to the gods. But such vision comes at a price" + desc = "Two eyes said to belong to the gods. But such vision comes at a price." icon_state = "eyesofgod" eye_color = "#58a5ec" see_in_dark = 8 diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index f744c86a1225..84683029ab1b 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -359,11 +359,11 @@ else if(emp_resistant) // IPC limbs switch(severity) if(1) - // 5.28 (9 * 0.66 burn_mod) burn damage, 65.34 damage with 11 limbs. - receive_damage(0, 9) + // 5.9 burn damage, 64.9 damage with 11 limbs. + receive_damage(0, 5.9) if(2) - // 3.63 (5 * 0.66 burn_mod) burn damage, 39.93 damage with 11 limbs. - receive_damage(0, 5.5) + // 3.63 burn damage, 39.93 damage with 11 limbs. + receive_damage(0, 3.63) else // Basic prosthetic limbs switch(severity) if(1) diff --git a/code/modules/surgery/organs/organ_helpers.dm b/code/modules/surgery/organs/organ_helpers.dm index 6eaa4154e297..13c68ed9c4e7 100644 --- a/code/modules/surgery/organs/organ_helpers.dm +++ b/code/modules/surgery/organs/organ_helpers.dm @@ -107,4 +107,9 @@ .++ if(affecting.body_part == LEG_LEFT) .++ - +///Returns true if all the mob's vital organs are functional, otherwise returns false +/mob/living/carbon/human/proc/check_vital_organs() + for(var/obj/item/organ/internal/organ in internal_organs) + if(organ.vital && (organ.damage >= organ.max_damage)) + return FALSE + return TRUE diff --git a/code/modules/surgery/organs/robolimbs.dm b/code/modules/surgery/organs/robolimbs.dm index 8f53727e6971..d8037ad8066d 100644 --- a/code/modules/surgery/organs/robolimbs.dm +++ b/code/modules/surgery/organs/robolimbs.dm @@ -123,7 +123,7 @@ GLOBAL_DATUM(basic_robolimb, /datum/robolimb) /datum/robolimb/shellguard company = "Shellguard Munitions Standard Series" - desc = "This limb features exposed robust steel and paint to match Shellguards motifs" + desc = "This limb features exposed robust steel and paint to match Shellguards motifs." icon = 'icons/mob/human_races/cyberlimbs/shellguard/shellguard_main.dmi' has_subtypes = 1 diff --git a/code/modules/surgery/organs/skeleton_organs.dm b/code/modules/surgery/organs/skeleton_organs.dm index 7ccbb2c69f26..b1a6329b013f 100644 --- a/code/modules/surgery/organs/skeleton_organs.dm +++ b/code/modules/surgery/organs/skeleton_organs.dm @@ -36,15 +36,15 @@ /obj/item/skeleton/r_leg name = "skeleton right leg" - desc = "a skeleton right leg" + desc = "a skeleton right leg." icon_state = "r_leg" /obj/item/skeleton/l_foot name = "skeleton left foot" - desc = "a skeleton left foot" + desc = "a skeleton left foot." icon_state = "l_foot" /obj/item/skeleton/l_leg name = "skeleton left leg" - desc = "a skeleton left leg" + desc = "a skeleton left leg." icon_state = "l_leg" diff --git a/code/modules/surgery/organs/subtypes/drask_organs.dm b/code/modules/surgery/organs/subtypes/drask_organs.dm index 201c05b83e30..4d94b9e84d83 100644 --- a/code/modules/surgery/organs/subtypes/drask_organs.dm +++ b/code/modules/surgery/organs/subtypes/drask_organs.dm @@ -25,5 +25,5 @@ /obj/item/organ/internal/eyes/drask name = "drask eyeballs" icon = 'icons/obj/species_organs/drask.dmi' - desc = "Drask eyes. They look even stranger disembodied" + desc = "Drask eyes. They look even stranger disembodied." see_in_dark = 5 diff --git a/code/modules/surgery/organs/subtypes/grey_organs.dm b/code/modules/surgery/organs/subtypes/grey_organs.dm index 3dfe9f77c688..132a79faae0c 100644 --- a/code/modules/surgery/organs/subtypes/grey_organs.dm +++ b/code/modules/surgery/organs/subtypes/grey_organs.dm @@ -1,11 +1,11 @@ /obj/item/organ/internal/liver/grey name = "grey liver" - desc = "A small, odd looking liver" + desc = "A small, odd looking liver." icon = 'icons/obj/species_organs/grey.dmi' alcohol_intensity = 1.6 /obj/item/organ/internal/brain/grey - desc = "A large brain" + desc = "A large brain." icon = 'icons/obj/species_organs/grey.dmi' icon_state = "brain2" mmi_icon = 'icons/obj/species_organs/grey.dmi' @@ -21,7 +21,7 @@ /obj/item/organ/internal/eyes/grey name = "grey eyeballs" - desc = "They still look creepy and emotionless" + desc = "They still look creepy and emotionless." icon = 'icons/obj/species_organs/grey.dmi' see_in_dark = 5 diff --git a/code/modules/surgery/organs/subtypes/skrell_organs.dm b/code/modules/surgery/organs/subtypes/skrell_organs.dm index 09dd526c9b56..de58d05a866f 100644 --- a/code/modules/surgery/organs/subtypes/skrell_organs.dm +++ b/code/modules/surgery/organs/subtypes/skrell_organs.dm @@ -87,7 +87,7 @@ /obj/item/organ/internal/heart/skrell name = "skrell heart" - desc = "A stream lined heart" + desc = "A stream lined heart." icon = 'icons/obj/species_organs/skrell.dmi' /obj/item/organ/internal/brain/skrell diff --git a/code/modules/surgery/organs/subtypes/unathi_organs.dm b/code/modules/surgery/organs/subtypes/unathi_organs.dm index 13857d77ab23..c0887844d784 100644 --- a/code/modules/surgery/organs/subtypes/unathi_organs.dm +++ b/code/modules/surgery/organs/subtypes/unathi_organs.dm @@ -1,7 +1,7 @@ /obj/item/organ/internal/liver/unathi name = "unathi liver" icon = 'icons/obj/species_organs/unathi.dmi' - desc = "A large looking liver" + desc = "A large looking liver." alcohol_intensity = 0.8 /obj/item/organ/internal/eyes/unathi @@ -11,7 +11,7 @@ /obj/item/organ/internal/heart/unathi name = "unathi heart" - desc = "A large looking heart" + desc = "A large looking heart." icon = 'icons/obj/species_organs/unathi.dmi' /obj/item/organ/internal/brain/unathi diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index a809ec7ed82b..745e4220646a 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -491,7 +491,7 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby")) log_game("[key_name(owner)] has said '[log_message]' with a Voice of God, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].") /obj/item/organ/internal/vocal_cords/colossus/wizard - desc = "They carry the voice of an ancient god. This one is enchanted to implant it into yourself when used in hand" + desc = "They carry the voice of an ancient god. This one is enchanted to implant it into yourself when used in hand." /obj/item/organ/internal/vocal_cords/colossus/wizard/attack_self(mob/living/user) user.drop_item() diff --git a/html/create_object.html b/html/create_object.html index 49af318f6f0e..bcc0f71a270b 100644 --- a/html/create_object.html +++ b/html/create_object.html @@ -65,4 +65,10 @@ populateList(filtered); } + + function quickSpawn() { + document.spawner.submit(); + } + + document.getElementById('object_list').ondblclick = quickSpawn; diff --git a/paradise.dme b/paradise.dme index d9377a3c8509..bb26fe9f3eaf 100644 --- a/paradise.dme +++ b/paradise.dme @@ -33,7 +33,6 @@ #include "code\__DEFINES\access_defines.dm" #include "code\__DEFINES\admin_defines.dm" #include "code\__DEFINES\announce_defines.dm" -#include "code\__DEFINES\antagonists.dm" #include "code\__DEFINES\armour.dm" #include "code\__DEFINES\asset_defines.dm" #include "code\__DEFINES\atmospherics_defines.dm" diff --git a/tgui/bin/tgui b/tgui/bin/tgui index 863eb91c464b..30e59c052133 100755 --- a/tgui/bin/tgui +++ b/tgui/bin/tgui @@ -109,7 +109,6 @@ task-validate-build() { cd "${base_dir}" local diff diff="$(git diff --text public/*)" - echo ${diff} if [[ -n ${diff} ]]; then echo "Error: our build differs from the build committed into git." echo "Please rebuild tgui." diff --git a/tgui/bin/tgui_.ps1 b/tgui/bin/tgui_.ps1 index 6658aeb0cdd3..c310007a70a6 100644 --- a/tgui/bin/tgui_.ps1 +++ b/tgui/bin/tgui_.ps1 @@ -96,7 +96,6 @@ function task-clean { ## Validates current build against the build stored in git function task-validate-build { $diff = git diff --text public/* - Write-Output $diff if ($diff) { Write-Output "Error: our build differs from the build committed into git." Write-Output "Please rebuild tgui."