diff --git a/aurorastation.dme b/aurorastation.dme index 7b923c0d37b..9fe04f41c87 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -2856,7 +2856,6 @@ #include "code\modules\ventcrawl\ventcrawl.dm" #include "code\modules\ventcrawl\ventcrawl_atmospherics.dm" #include "code\modules\ventcrawl\ventcrawl_verb.dm" -#include "code\modules\vision_cone\vision_cone.dm" #include "code\modules\vueui\external.dm" #include "code\modules\vueui\ui.dm" #include "code\modules\vueui\var_monitor.dm" diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 8897c642b50..c0cc156d171 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -19,11 +19,6 @@ var/obj/screen/using var/obj/screen/inventory/inv_box - if(target.can_have_vision_cone) - var/mob/living/carbon/human/H = mymob - H.vision_cone_overlay = new /obj/screen/fov() - hud_elements |= H.vision_cone_overlay - // Draw the various inventory equipment slots. var/has_hidden_gear for(var/gear_slot in hud_data.gear) diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 439a2cc9a78..6c0c59a0eda 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -15,11 +15,6 @@ var/obj/screen/robot_inventory var/mob/living/silicon/robot/r = mymob -//Fov - if(r.can_have_vision_cone) - r.vision_cone_overlay = new /obj/screen/fov() - src.adding += r.vision_cone_overlay - //Radio using = new /obj/screen() using.name = "radio" diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index f56f8114eeb..b901089a575 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -398,14 +398,6 @@ return 1 -/obj/screen/fov - icon = 'icons/mob/vision_cone.dmi' - icon_state = "combat" - name = "" - screen_loc = "SOUTH,WEST" - mouse_opacity = 0 - layer = SCREEN_LAYER - /obj/screen/movement_intent name = "mov_intent" screen_loc = ui_movi diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 25186301e4e..b8f54974b71 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -714,9 +714,6 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. M.toggle_zoom_hud() // If the user has already limited their HUD this avoids them having a HUD when they zoom in M.client.view = viewsize zoom = 1 - if(M.vision_cone_overlay) - var/mob/living/vision_cone_mob = M - vision_cone_mob.hide_cone() var/tilesize = 32 var/viewoffset = tilesize * tileoffset @@ -739,9 +736,6 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. else M.client.view = world.view - if(M.vision_cone_overlay) - var/mob/living/vision_cone_mob = M - vision_cone_mob.update_vision_cone() if(!M.hud_used.hud_shown) M.toggle_zoom_hud() zoom = 0 diff --git a/code/modules/admin/verbs/bluespacetech.dm b/code/modules/admin/verbs/bluespacetech.dm index 71fc4822d5f..15f6cc69930 100644 --- a/code/modules/admin/verbs/bluespacetech.dm +++ b/code/modules/admin/verbs/bluespacetech.dm @@ -124,13 +124,11 @@ feedback_add_details("admin_verb","BST") - bst.verbs |= /mob/living/proc/toggle_vision_cone return 1 /client/proc/bst_post_spawn(mob/living/carbon/human/bst/bst) spark(bst, 3, alldirs) bst.anchored = FALSE - bst.can_have_vision_cone = FALSE /mob/living/carbon/human/bst universal_understand = 1 diff --git a/code/modules/client/preference_setup/global/02_settings.dm b/code/modules/client/preference_setup/global/02_settings.dm index f1f103bb5d3..0c960b1e75a 100644 --- a/code/modules/client/preference_setup/global/02_settings.dm +++ b/code/modules/client/preference_setup/global/02_settings.dm @@ -11,7 +11,6 @@ S["memo_hash"] >> pref.memo_hash S["parallax_speed"] >> pref.parallax_speed S["toggles_secondary"] >> pref.toggles_secondary - S["fov_cone_alpha"] >> pref.fov_cone_alpha /datum/category_item/player_setup_item/player_global/settings/save_preferences(var/savefile/S) S["lastchangelog"] << pref.lastchangelog @@ -22,7 +21,6 @@ S["memo_hash"] << pref.memo_hash S["parallax_speed"] << pref.parallax_speed S["toggles_secondary"] << pref.toggles_secondary - S["fov_cone_alpha"] << pref.fov_cone_alpha /datum/category_item/player_setup_item/player_global/settings/gather_load_query() return list( @@ -85,7 +83,6 @@ pref.memo_hash = sanitize_text(pref.memo_hash, initial(pref.memo_hash)) pref.parallax_speed = sanitize_integer(text2num(pref.parallax_speed), 1, 10, initial(pref.parallax_speed)) pref.toggles_secondary = sanitize_integer(text2num(pref.toggles_secondary), 0, BITFIELDMAX, initial(pref.toggles_secondary)) - pref.fov_cone_alpha = sanitize_integer(text2num(pref.fov_cone_alpha), 0, 255, initial(pref.fov_cone_alpha)) /datum/category_item/player_setup_item/player_global/settings/content(mob/user) var/list/dat = list( @@ -101,13 +98,6 @@ "Static Space: [(pref.toggles_secondary & PARALLAX_IS_STATIC) ? "Yes" : "No"]
" ) - dat += "FOV Cone Alpha: " - if(pref.fov_cone_alpha == initial(pref.fov_cone_alpha)) - dat += "Using Default
" - else - dat += "[pref.fov_cone_alpha] [HTML_RECT(pref.fov_cone_alpha)] - reset
" - - . = dat.Join() /datum/category_item/player_setup_item/player_global/settings/OnTopic(var/href,var/list/href_list, var/mob/user) @@ -126,20 +116,6 @@ pref.toggles_secondary ^= flag return TOPIC_REFRESH - else if(href_list["select_fov_cone_alpha"]) - var/fov_alpha_new = input(user, "Choose a new opacity for the FOV darkness cone.", "Global Preference", pref.fov_cone_alpha) as null|num - if(!fov_alpha_new || !CanUseTopic(user)) - return TOPIC_NOACTION - pref.fov_cone_alpha = fov_alpha_new - return TOPIC_REFRESH - - else if(href_list["reset"]) - switch(href_list["reset"]) - if("fov") - pref.fov_cone_alpha = initial(pref.fov_cone_alpha) - return TOPIC_REFRESH - - return ..() /datum/category_item/player_setup_item/player_global/settings/proc/validate_current_character() diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 2babad02a1d..a41394f69b5 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -87,10 +87,6 @@ var/list/holder_mob_icon_cache = list() mob_container = M mob_container.forceMove(src.loc)//if the holder was placed into a disposal, this should place the animal in the disposal M.reset_view() - if(isliving(M)) - var/mob/living/L = M - L.can_have_vision_cone = TRUE - L.update_vision_cone() M.Released() contained = null @@ -104,10 +100,6 @@ var/list/holder_mob_icon_cache = list() for(var/mob/M in contents) M.forceMove(T) //if the holder was placed into a disposal, this should place the animal in the disposal M.reset_view() - if(isliving(M)) - var/mob/living/L = M - L.can_have_vision_cone = TRUE - L.update_vision_cone() M.Released() contained = null @@ -246,9 +238,6 @@ var/list/holder_mob_icon_cache = list() // Override to add stuff that should happen when scooping /mob/living/proc/post_scoop() - SHOULD_CALL_PARENT(TRUE) - can_have_vision_cone = FALSE - update_vision_cone() return /mob/living/proc/get_holder_location() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7739002bb99..09cea0d5a67 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -28,9 +28,6 @@ name = real_name if(mind) mind.name = real_name - - if(species.have_vision_cone) - can_have_vision_cone = TRUE // Randomize nutrition and hydration. Defines are in __defines/mobs.dm if(max_nutrition > 0) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index ad9f57922f2..c851de2c3f3 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -244,8 +244,6 @@ var/list/character_color_presets var/bodyfall_sound = /decl/sound_category/bodyfall_sound //default, can be used for species specific falling sounds - var/have_vision_cone = TRUE //Vision cone. - var/list/alterable_internal_organs = list(BP_HEART, BP_EYES, BP_LUNGS, BP_LIVER, BP_KIDNEYS, BP_STOMACH, BP_APPENDIX) //what internal organs can be changed in character setup /datum/species/proc/get_eyes(var/mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm index feeda9c2149..547bc397b54 100644 --- a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm +++ b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm @@ -123,8 +123,6 @@ allowed_accents = list(ACCENT_ROOTSONG, ACCENT_VOIDSONG) default_accent = ACCENT_ROOTSONG - have_vision_cone = FALSE - alterable_internal_organs = list() /datum/species/diona/handle_sprint_cost(var/mob/living/carbon/H, var/cost) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 02885d5fdff..365ec07b4f0 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -657,34 +657,6 @@ default behaviour is: for(var/mob/living/carbon/slime/M in view(1,src)) M.UpdateFeed(src) - // Other viewers only need to update their vision for this moving mob, not their entire cone, as they are stationary - for(var/viewer in oviewers(world.view, src)) - var/mob/living/M = viewer - if(M.client && istype(M) && M.can_have_vision_cone) - if(M.client.view != world.view && get_dist(M, src) > M.client.view) - continue - else - var/turf/T = get_turf(M) - var/turf/Ts = get_turf(src) - if(Ts.InConeDirection(T, reverse_direction(M.dir))) - if(!(src in M.client.hidden_mobs)) - if(M.InCone(T, M.dir)) - M.add_to_mobs_hidden_atoms(src) - Ts.show_footsteps(M, T, src) - else - if(src in M.client.hidden_mobs) - M.client.hidden_mobs -= src - for(var/image in M.client.hidden_atoms) - var/image/I = image - if(I.loc == src) - I.override = FALSE - M.client.hidden_atoms -= I - M.client.images -= I - QDEL_IN(I, 1 SECONDS) - break - - update_vision_cone() - /mob/living/verb/resist() set name = "Resist" set category = "IC" @@ -739,8 +711,6 @@ default behaviour is: to_chat(src, "You struggle free of \the [H.loc].") H.forceMove(get_turf(H)) - can_have_vision_cone = initial(can_have_vision_cone) - /mob/living/proc/escape_buckle() if(buckled) buckled.user_unbuckle_mob(src) @@ -799,7 +769,6 @@ default behaviour is: resting = !resting to_chat(src, "You are now [resting ? "resting" : "getting up"].") - update_vision_cone() /mob/living/proc/cannot_use_vents() return "You can't fit into that vent." diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 9abd27e7621..b9def421648 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -51,7 +51,6 @@ var/list/ai_verbs_default = list( anchored = TRUE // -- TLE density = TRUE status_flags = CANSTUN|CANPARALYSE|CANPUSH - can_have_vision_cone = FALSE var/carded // Holopad and holograms diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index a7a1ad456be..ad0688ec3ee 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -110,8 +110,6 @@ light_color = COLOR_BRIGHT_GREEN light_wedge = 45 - can_have_vision_cone = FALSE - /mob/living/silicon/pai/movement_delay() return 0.8 @@ -353,9 +351,6 @@ canmove = TRUE resting = FALSE - can_have_vision_cone = TRUE - check_fov() - /mob/living/silicon/pai/verb/fold_up() set category = "pAI Commands" set name = "Collapse Chassis" @@ -468,9 +463,6 @@ //stop resting resting = 0 - hide_cone() - can_have_vision_cone = initial(can_have_vision_cone) - // If we are being held, handle removing our holder from their inv. var/obj/item/holder/H = loc if(istype(H)) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 3fe783f6f00..aa35c7eb509 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -7,7 +7,6 @@ gender = NEUTER voice_name = "Synthesized Voice" accent = ACCENT_TTS - can_have_vision_cone = TRUE var/list/speech_synthesizer_langs = list() //which languages can be vocalized by the speech synthesizer var/speak_statement = "states" var/speak_exclamation = "declares" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c4d28db511a..e0df211ad1c 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -948,8 +948,6 @@ else if( lying != lying_prev ) update_icon() - update_vision_cone() - return canmove @@ -1348,7 +1346,7 @@ src.throw_icon.icon_state = "act_throw_on" /mob/proc/is_invisible_to(var/mob/viewer) - return (!alpha || !mouse_opacity || viewer.see_invisible < invisibility || (viewer.client && (src in viewer.client.hidden_mobs))) + return (!alpha || !mouse_opacity || viewer.see_invisible < invisibility) //Admin helpers /mob/proc/wind_mob(var/mob/admin) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index d5d899855a0..df93a1cd6d3 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -145,8 +145,6 @@ var/seer = 0 //for cult//Carbon, probably Human var/datum/hud/hud_used = null - var/obj/screen/vision_cone_overlay = null - var/can_have_vision_cone = FALSE var/list/grabbed_by = list( ) var/list/requests = list( ) diff --git a/code/modules/vision_cone/vision_cone.dm b/code/modules/vision_cone/vision_cone.dm deleted file mode 100644 index 9e324a84964..00000000000 --- a/code/modules/vision_cone/vision_cone.dm +++ /dev/null @@ -1,222 +0,0 @@ -/////////////VISION CONE/////////////// -// Vision cone code by Honkertron (for Otuska), Matt and Myazaki. -// This vision cone code allows for mobs and/or items to be blocked out from a player's field of vision. -// This code makes use of the "cone of effect" proc created by Lummox, contributed by Jtgibson. -// -// More info on that here: -// http://www.byond.com/forum/?post=195138 -/////////////////////////////////////// - -/client - var/list/hidden_atoms = list() - var/list/hidden_mobs = list() - -/proc/cone(turf/center, dir, list/list) - . = list() - for(var/turf/T in list) - if(T.InConeDirection(center, dir)) - for(var/mob/M in T.contents) - if(!istype(M, /mob/abstract)) - . += M.InCone(center, dir) - -/turf/proc/InConeDirection(turf/center, dir) - if(get_dist(center, src) == 0 || src == center) return 0 - var/d = get_dir(center, src) - - if(!d || d == dir) return 1 - if(dir & (dir-1)) - return (d & ~dir) ? 0 : 1 - if(!(d & dir)) return 0 - var/dx = abs(x - center.x) - var/dy = abs(y - center.y) - if(dx == dy) return 1 - if(dy > dx) - return (dir & (NORTH|SOUTH)) ? 1 : 0 - return (dir & (EAST|WEST)) ? 1 : 0 - -/mob/living/proc/toggle_vision_cone() - set name = "Toggle Vision Cone" - set category = "OOC" - set desc = "Toggle the ability to have a vision cone" - - can_have_vision_cone = !can_have_vision_cone - check_fov() - -// Should return atoms that are in the cone. -/atom/proc/InCone(turf/center, dir) - SHOULD_CALL_PARENT(TRUE) - return list() - -/mob/dead/InCone(turf/center, dir) - . = ..() - -/mob/InCone(turf/center, dir) - . = ..() | src - -/mob/living/InCone(turf/center, dir) - . = ..() - if(pulling) - . += pulling - -/mob/proc/update_vision_cone() - return - -/mob/living/update_vision_cone() - if(!can_have_vision_cone) - if(vision_cone_overlay) - remove_cone() - return - - for(var/obj/item/item in src) - if(item.zoom) - remove_cone() - return - - var/delay = 1 SECONDS - if(client) - var/image/I = null - for(I in client.hidden_atoms) - I.override = FALSE - QDEL_IN(I, delay) - delay += 1 SECONDS - - check_fov() - client.hidden_atoms.Cut() - client.hidden_mobs.Cut() - - - if(resting || lying) - hide_cone() - return - - vision_cone_overlay.dir = dir - if(vision_cone_overlay.alpha) - var/turf/T = get_turf(src) - for(var/cone_atom in cone(T, reverse_direction(dir), get_rectangle_in_dir(T, client.view + 1, reverse_direction(dir)) & oview(client.view + 1, T))) - add_to_mobs_hidden_atoms(cone_atom) - -/mob/living/proc/add_to_mobs_hidden_atoms(atom/A) - var/image/I - I = image("split", A) - I.override = TRUE - client.images += I - client.hidden_atoms += I - if(ismob(A)) - var/mob/hidden_mob = A - client.hidden_mobs += hidden_mob - if(pulling && (pulling == hidden_mob || pulling == hidden_mob.buckled))//If we're pulling them we don't want them to be invisible, too hard to play like that. - I.override = FALSE - return - for(var/obj/item/grab/G in src) - if(A == G.affecting) - I.override = FALSE - return - for(var/obj/item/grab/G in A) - if(src == G.affecting) - I.override = FALSE - return - -/mob/living/proc/SetFov(var/n) - if(!can_have_vision_cone) - return - - if(!n) - hide_cone() - else - show_cone() - -/mob/living/proc/check_fov() - if(!can_have_vision_cone) - if(client) - for(var/hidden in client.hidden_atoms) - var/image/I = hidden - client.images -= I - client.hidden_atoms.Cut() - client.hidden_mobs.Cut() - remove_cone() - return - - if(isnull(vision_cone_overlay)) - vision_cone_overlay = new /obj/screen/fov() - client.screen |= vision_cone_overlay - - if(resting || lying || client.eye != client.mob) - vision_cone_overlay.alpha = 0 - return - - else if(vision_cone_overlay) - show_cone() - else - hide_cone() - -//Making these generic procs so you can call them anywhere. -/mob/living/proc/show_cone() - if(!can_have_vision_cone) - return - - if(vision_cone_overlay) - vision_cone_overlay.alpha = client.prefs.fov_cone_alpha - -/mob/living/proc/hide_cone() - if(vision_cone_overlay) - vision_cone_overlay.alpha = 0 - -/mob/living/proc/remove_cone() - if(vision_cone_overlay) - client.screen -= vision_cone_overlay - -/mob/living/set_dir(var/new_dir, ignore_facing_dir = FALSE) - . = ..() - if(.) - update_vision_cone() - -// Rotates a rectangle around a center turf -/proc/get_rectangle_in_dir(var/turf/T, var/length, var/dir) - var/matrix/M = new - var/matrix/N = new - M.Turn(dir2angle(dir)) - N.Turn((dir2angle(dir)+180) % 360) - . = block(\ - locate(T.x + (M.a+M.b) * length + 0.5*(M.a + M.b - 1), T.y + (M.d+M.e) * length + 0.5*(M.d + M.e - 1), T.z),\ - locate(T.x + N.a * length + 0.5*(M.a + M.b - 1), T.y + N.d * length + 0.5*(M.d + M.e - 1), T.z)\ - ) - -#define ALWAYS_FOOTSTEP_DISTANCE 2 -#define MAX_FOOTSTEP_DISTANCE 5 -#define RIPPLE_POSITION_BOUNDS 8 -#define RIPPLE_START_RADIUS 10 -#define RIPPLE_END_RADIUS 2 -#define RIPPLE_START_SIZE 0 -#define RIPPLE_END_SIZE 16 - -/turf/proc/show_footsteps(var/mob/viewer, var/turf/Tviewer, var/mob/M) - var/dist = get_dist(src, Tviewer) - if(src == Tviewer) - return - if(dist > MAX_FOOTSTEP_DISTANCE || prob(100*max(dist-ALWAYS_FOOTSTEP_DISTANCE,0) / MAX_FOOTSTEP_DISTANCE)) - return - if(isdeaf(viewer)) - return - if(viewer.stat || M.stat || M.lying) - return - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.is_noisy) - return - - var/image/marker = image(icon, src, icon_state, layer = layer) - marker.overlays = overlays.Copy() - marker.override = TRUE - marker.filters += filter(type = "ripple", x=rand(-RIPPLE_POSITION_BOUNDS, RIPPLE_POSITION_BOUNDS), y=rand(-RIPPLE_POSITION_BOUNDS, RIPPLE_POSITION_BOUNDS), radius = RIPPLE_START_RADIUS, size = RIPPLE_START_SIZE, falloff = 0) - - viewer.client.images += marker - addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, marker), 1.5 SECONDS, TIMER_CLIENT_TIME) - animate(marker.filters[marker.filters.len], time = 1.5 SECONDS, radius = RIPPLE_END_RADIUS, size = RIPPLE_END_SIZE) - -#undef ALWAYS_FOOTSTEP_DISTANCE -#undef MAX_FOOTSTEP_DISTANCE -#undef RIPPLE_POSITION_BOUNDS -#undef RIPPLE_START_RADIUS -#undef RIPPLE_END_RADIUS -#undef RIPPLE_START_SIZE -#undef RIPPLE_END_SIZE \ No newline at end of file diff --git a/html/changelogs/remove_vision_cones.yml b/html/changelogs/remove_vision_cones.yml new file mode 100644 index 00000000000..5fcddf8e842 --- /dev/null +++ b/html/changelogs/remove_vision_cones.yml @@ -0,0 +1,41 @@ +################################ +# 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 +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: mikomyazaki + +# 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, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscdel: "Vision cones have been removed. Thank you to everyone that provided feedback while we tried out this feature!" \ No newline at end of file diff --git a/icons/mob/vision_cone.dmi b/icons/mob/vision_cone.dmi deleted file mode 100644 index 953c0bbdbb9..00000000000 Binary files a/icons/mob/vision_cone.dmi and /dev/null differ