diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 756e8e93b5c..21078425c25 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -264,27 +264,33 @@ Proc for attack log creation, because really why not //update our pda and id if we have them on our person var/list/searching = GetAllContents() - var/search_id = 1 - var/search_pda = 1 + var/search_id = TRUE + var/search_pda = TRUE for(var/A in searching) - if( search_id && istype(A,/obj/item/card/id) ) + if(search_id && istype(A, /obj/item/card/id) ) var/obj/item/card/id/ID = A if(ID.registered_name == oldname) ID.registered_name = newname ID.name = "[newname]'s ID Card ([ID.assignment])" - if(!search_pda) break - search_id = 0 + search_id = FALSE - else if(search_pda && istype(A,/obj/item/modular_computer)) + if(!search_pda) + break + + else if(search_pda && istype(A, /obj/item/modular_computer)) var/obj/item/modular_computer/PDA = A if(!PDA.registered_id) continue - if(PDA.registered_id.name == oldname) + + if(PDA.registered_id.registered_name == oldname) PDA.name = "PDA-[newname] ([PDA.registered_id.assignment])" - if(!search_id) break - search_pda = 0 - return 1 + search_pda = FALSE + + if(!search_id) + break + + return TRUE // Generalised helper proc for letting mobs rename themselves /mob/proc/rename_self(var/role, var/allow_numbers=0) diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index c3a074c539a..4d7e1d2ba19 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -47,15 +47,17 @@ if(isnewplayer(M)) continue - if(isghost(M) || (!isdeaf(M) && (GET_Z(M) in (zlevels | SSatlas.current_map.admin_levels)))) + // Due to spam, only print announcements if the ghost is in the matching z-level, OR if it's a Horizon message. + if(isghost(M) || (!isdeaf(M) && ((GET_Z(M) in zlevels) || zlevels == SSatlas.current_map.contact_levels))) var/turf/T = get_turf(M) if(T) to_chat(M, msg) if(message_sound && !isdeaf(M) && (M.client?.prefs.sfx_toggles & ASFX_VOX)) sound_to(M, message_sound) - if(do_newscast) + + if(do_newscast && zlevels == SSatlas.current_map.contact_levels) NewsCast(message, message_title) - if(do_print) + if(do_print && zlevels == SSatlas.current_map.contact_levels) post_comm_message(message_title, message) Log(message, message_title) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 3705a27006b..6cc91d05a2d 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -864,3 +864,11 @@ //is Moved(old_loc, direction, TRUE, momentum_change = FALSE) in tg Moved(old_loc, direction, TRUE) + +/** + * Adds the red drop-shadow filter when pointed to by a mob. + * Override if the atom doesn't play nice with filters. + */ +/atom/movable/proc/add_point_filter() + add_filter("pointglow", 1, list(type = "drop_shadow", x = 0, y = -1, offset = 1, size = 1, color = "#F00")) + addtimer(CALLBACK(src, PROC_REF(remove_filter), "pointglow"), 2 SECONDS) diff --git a/code/game/gamemodes/changeling/helpers/_framework.dm b/code/game/gamemodes/changeling/helpers/_framework.dm index 3c56355fb62..ffb800e54e1 100644 --- a/code/game/gamemodes/changeling/helpers/_framework.dm +++ b/code/game/gamemodes/changeling/helpers/_framework.dm @@ -239,7 +239,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E hairGradient = newGradient //Helper for stingcode -/mob/proc/sting_can_reach(mob/M as mob, sting_range = 1) +/mob/proc/sting_can_reach(mob/M, sting_range = 1) if(M.loc == src.loc) return TRUE //target and source are in the same thing var/target_distance = get_dist(src, M) @@ -250,7 +250,7 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E to_chat(src, SPAN_WARNING("We cannot reach \the [M] with a sting!")) return FALSE //One is inside, the other is outside something. // Maximum queued turfs set to 25; I don't *think* anything raises sting_range above 2, but if it does the 25 may need raising - if(!AStar(src.loc, M.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, max_nodes=25, max_node_depth=sting_range)) //If we can't find a path, fail + if(!AStar(get_turf(src), get_turf(M), /turf/proc/AdjacentTurfsRanged, /turf/proc/Distance, max_nodes = 25, max_node_depth = sting_range)) //If we can't find a path, fail to_chat(src, SPAN_WARNING("We cannot find a path to sting \the [M] by!")) return FALSE return TRUE diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 893ec90c637..415c77170ef 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1313,7 +1313,7 @@ /obj/item/toy/cultsword name = "foam sword" desc = "An arcane weapon wielded by the followers of the hit Saturday morning cartoon \"King Nursee and the Acolytes of Heroism\"." - icon = 'icons/obj/sword.dmi' + icon = 'icons/obj/sword_64.dmi' icon_state = "cultblade" item_state = "cultblade" w_class = WEIGHT_CLASS_BULKY diff --git a/code/game/objects/items/weapons/circuitboards/computer/research.dm b/code/game/objects/items/weapons/circuitboards/computer/research.dm index dba4d00254f..7d14ccdd474 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/research.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/research.dm @@ -6,17 +6,6 @@ name = T_BOARD("R&D control console") build_path = /obj/machinery/computer/rdconsole/core -/obj/item/circuitboard/rdconsole/attackby(obj/item/attacking_item, mob/user) - if(attacking_item.isscrewdriver()) - user.visible_message(SPAN_NOTICE("\The [user] adjusts the jumper on \the [src]'s access protocol pins."), - SPAN_NOTICE("You adjust the jumper on the access protocol pins.")) - - if(src.build_path == /obj/machinery/computer/rdconsole/core) - src.name = T_BOARD("RD Console - Robotics") - src.build_path = /obj/machinery/computer/rdconsole/robotics - to_chat(user, SPAN_NOTICE("Access protocols set to robotics.")) - else - src.name = T_BOARD("RD Console") - src.build_path = /obj/machinery/computer/rdconsole/core - to_chat(user, SPAN_NOTICE("Access protocols set to default.")) - return +/obj/item/circuitboard/robotics_console + name = T_BOARD("robotics control console") + build_path = /obj/machinery/computer/rdconsole/robotics diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm index 3e10ff8f000..7cc7351611c 100644 --- a/code/game/objects/items/weapons/traps.dm +++ b/code/game/objects/items/weapons/traps.dm @@ -265,7 +265,7 @@ //Give a simple message and return if it's not a human if(!ishuman(L)) - L.visible_message(SPAN_DANGER("You step on \the [src]!")) + L.visible_message(SPAN_DANGER("[L] steps on \the [src]!")) return var/mob/living/carbon/human/human = L diff --git a/code/game/turfs/simulated/wall_icon.dm b/code/game/turfs/simulated/wall_icon.dm index b7aec138e39..1d3a095f457 100644 --- a/code/game/turfs/simulated/wall_icon.dm +++ b/code/game/turfs/simulated/wall_icon.dm @@ -103,7 +103,7 @@ damage_image = damage_overlays[overlay] overlays_to_add += damage_image - AddOverlays(overlays_to_add, ATOM_ICON_CACHE_PROTECTED) + AddOverlays(overlays_to_add) UNSETEMPTY(reinforcement_images) QUEUE_SMOOTH(src) if(smoothing_flags & SMOOTH_UNDERLAYS) diff --git a/code/modules/cargo/bounties/chef.dm b/code/modules/cargo/bounties/chef.dm index 7c489a6d7b7..981ce1f16f8 100644 --- a/code/modules/cargo/bounties/chef.dm +++ b/code/modules/cargo/bounties/chef.dm @@ -70,6 +70,7 @@ /obj/item/reagent_containers/food/snacks/plump_pie, /obj/item/reagent_containers/food/snacks/xemeatpie, /obj/item/reagent_containers/food/snacks/cherrypie, + /obj/item/reagent_containers/food/snacks/applepie, /obj/item/reagent_containers/food/snacks/chocolate_rikazu, /obj/item/reagent_containers/food/snacks/fruit_rikazu, /obj/item/reagent_containers/food/snacks/meat_rikazu, diff --git a/code/modules/cargo/random_stock/t1_common.dm b/code/modules/cargo/random_stock/t1_common.dm index 9ccb59c924d..b4639ee5172 100644 --- a/code/modules/cargo/random_stock/t1_common.dm +++ b/code/modules/cargo/random_stock/t1_common.dm @@ -213,7 +213,8 @@ STOCK_ITEM_COMMON(gloves, 3.3) /obj/item/clothing/gloves/fluff, /obj/item/clothing/gloves/swat/bst, /obj/item/clothing/gloves/powerfist, - /obj/item/clothing/gloves/claws + /obj/item/clothing/gloves/claws, + /obj/item/clothing/gloves/chameleon/changeling ) exclusion += typesof(/obj/item/clothing/gloves/rig) exclusion += typesof(/obj/item/clothing/gloves/lightrig) diff --git a/code/modules/mob/abstract/ghost/observer/observer.dm b/code/modules/mob/abstract/ghost/observer/observer.dm index ccf88d7b9e7..c9624bcfbfb 100644 --- a/code/modules/mob/abstract/ghost/observer/observer.dm +++ b/code/modules/mob/abstract/ghost/observer/observer.dm @@ -12,6 +12,7 @@ universal_speak = 1 incorporeal_move = INCORPOREAL_GHOST mob_thinks = FALSE + interaction_flags_atom = INTERACT_ATOM_MOUSEDROP_IGNORE_CHECKS /// If the ghost can re-enter their corpse. var/can_reenter_corpse diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3a99eeadbe6..3a1395510ea 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -430,9 +430,8 @@ addtimer(CALLBACK(src, PROC_REF(end_pointing_effect), pointing_effect), 2 SECONDS) else if(!invisibility) var/atom/movable/M = pointing_at - M.add_filter("pointglow", 1, list(type = "drop_shadow", x = 0, y = -1, offset = 1, size = 1, color = "#F00")) - addtimer(CALLBACK(M, TYPE_PROC_REF(/atom/movable, remove_filter), "pointglow"), 2 SECONDS) - pointing_at.handle_pointed_at(src) + M.add_point_filter() + M.handle_pointed_at(src) SEND_SIGNAL(src, COMSIG_MOB_POINT, pointing_at) return TRUE diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 17e9e1f8920..7352472667e 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -420,7 +420,7 @@ if(spillover > 0) burn = max(burn - spillover, 0) - handle_limb_gibbing(used_weapon, brute_dam, burn_dam) + handle_limb_gibbing(used_weapon, brute, burn) if(brute_dam + brute > min_broken_damage && prob(brute_dam + brute * (1 + blunt))) if(blunt || brute > FRACTURE_AND_TENDON_DAM_THRESHOLD) @@ -513,7 +513,6 @@ //If limb took enough damage, try to cut or tear it off if(owner && loc == owner && !is_stump()) if((limb_flags & ORGAN_CAN_AMPUTATE)) - if((brute_dam + burn_dam) >= (max_damage * GLOB.config.organ_health_multiplier)) var/edge_eligible = FALSE diff --git a/code/modules/power/fusion/core/core_field.dm b/code/modules/power/fusion/core/core_field.dm index 2764884d132..15d7c86d214 100644 --- a/code/modules/power/fusion/core/core_field.dm +++ b/code/modules/power/fusion/core/core_field.dm @@ -588,6 +588,9 @@ AddEnergy(hitting_projectile.damage) update_icon() +/obj/effect/fusion_em_field/add_point_filter() + return + /particles/fusion width = 500 height = 500 diff --git a/code/modules/power/fusion/fusion_particle_catcher.dm b/code/modules/power/fusion/fusion_particle_catcher.dm index a642fb4f88e..d251493b96e 100644 --- a/code/modules/power/fusion/fusion_particle_catcher.dm +++ b/code/modules/power/fusion/fusion_particle_catcher.dm @@ -44,3 +44,6 @@ if(mover?.movement_type & PHASING) return TRUE return ismob(mover) + +/obj/effect/fusion_particle_catcher/add_point_filter() + return diff --git a/code/modules/psionics/abilities/pull.dm b/code/modules/psionics/abilities/pull.dm index 46613fdd373..5c5bd6f3b40 100644 --- a/code/modules/psionics/abilities/pull.dm +++ b/code/modules/psionics/abilities/pull.dm @@ -27,10 +27,14 @@ var/atom/movable/AM = hit_atom var/mob/living/carbon/human/H = user if(isobj(hit_atom) && w_class < WEIGHT_CLASS_GIGANTIC) + var/obj/object = hit_atom + if(object.anchored) + to_chat(user, SPAN_WARNING("That object is bolted down!")) + return if(length(get_line(hit_atom, user))) if(H.put_in_any_hand_if_possible(hit_atom)) return - user.visible_message(SPAN_WARNING("[user] extends [user.get_pronoun("his")] hand at [hit_atom]and pulls!"), SPAN_WARNING("You mimic pulling at [hit_atom]!")) + user.visible_message(SPAN_WARNING("[user] extends [user.get_pronoun("his")] hand at [hit_atom] and pulls!"), SPAN_WARNING("You mimic pulling at [hit_atom]!")) if(ismob(hit_atom)) to_chat(hit_atom, SPAN_WARNING("A psychic force pulls you!")) AM.throw_at(user, 10, 7) diff --git a/code/modules/research/designs/circuit/computer_circuits.dm b/code/modules/research/designs/circuit/computer_circuits.dm index 4448448ef89..c4972eb511e 100644 --- a/code/modules/research/designs/circuit/computer_circuits.dm +++ b/code/modules/research/designs/circuit/computer_circuits.dm @@ -23,6 +23,11 @@ req_tech = list(TECH_DATA = 4) build_path = /obj/item/circuitboard/rdconsole +/datum/design/circuit/computer/robotics_console + name = "Robotics Core Console" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/circuitboard/robotics_console + /datum/design/circuit/computer/comm_monitor name = "Telecommunications Monitoring Console" req_tech = list(TECH_DATA = 3) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 571d6d30806..eb023f25d0b 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -874,6 +874,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, id = 1 req_access = list(ACCESS_ROBOTICS) allow_analyzer = FALSE + circuit = /obj/item/circuitboard/robotics_console /obj/machinery/computer/rdconsole/core name = "core R&D console" diff --git a/html/changelogs/mattatlas-bugfixbonanza.yml b/html/changelogs/mattatlas-bugfixbonanza.yml new file mode 100644 index 00000000000..e5b4ceee62b --- /dev/null +++ b/html/changelogs/mattatlas-bugfixbonanza.yml @@ -0,0 +1,72 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# - (fixes bugs) +# wip +# - (work in progress) +# qol +# - (quality of life) +# soundadd +# - (adds a sound) +# sounddel +# - (removes a sound) +# rscadd +# - (adds a feature) +# rscdel +# - (removes a feature) +# imageadd +# - (adds an image or sprite) +# imagedel +# - (removes an image or sprite) +# spellcheck +# - (fixes spelling or grammar) +# experiment +# - (experimental change) +# balance +# - (balance changes) +# code_imp +# - (misc internal code change) +# refactor +# - (refactors code) +# config +# - (makes a change to the config files) +# admin +# - (makes changes to administrator tools) +# server +# - (miscellaneous changes to server) +################################# + +# Your name. +author: MattAtlas + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Fixed PDAs not being automatically updated by the Force Change Name admin action." + - bugfix: "Announcements from non-Horizon ships drifting into hazards no longer spawn observer chat. You will only get the announcements if you are on the same z-level. The Horizon will still send its announcements globally." + - bugfix: "Offships no longer send newscaster announcements." + - bugfix: "Fixed ling stings not working. Again." + - bugfix: "The robotics core console no longer reverts into a normal R&D console when disassembled and reassembled." + - bugfix: "The robotics core console now has its own circuit that can be made through R&D." + - bugfix: "Fixed the message that simple mobs print when they step on a trap." + - bugfix: "Fixed the foam sword sprite." + - bugfix: "Fixed damaged wall overlays." + - bugfix: "Fixed the INDRA field getting messed up by pointing at it." + - bugfix: "Apple pies now count for the pie bounty." + - bugfix: "Changeling chameleon claws no longer spawn in the warehouse." + - bugfix: "Admin click-drag to possess has been fixed." + - bugfix: "Fixed the minimum damage threshold to delimb. Limbs won't be cut off or gibbed by very small amounts of damage anymore." + - bugfix: "The Pull psionic ability no longer pulls anchored objects."