CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.64k stars 4.18k forks source link

Bug/exploit - line of sight - zlevels #30300

Closed AdonaiJr closed 4 years ago

AdonaiJr commented 5 years ago

Describe the bug
You can see what's below/above you, when wielding a spear or ranged weapon in fire mode.

To Reproduce
Steps to reproduce the behavior:

  1. Spawn a ranged weapon or spear.
  2. Press f to start targeting something (it's not necessary to have a real target in range).
  3. Press "<" or ">" for free vision.

If you do this besides a LAB, it's even more obvious that you shouldn't be seeing other zlevels.

Also, in the screenshots, observe that zlevels is changing.

Expected behavior
I found this bug when trying to change targets while in target mode.

Screenshots
1 2 3 4

Versions and configuration(please complete the following information):

Additional context
Add any other context about the problem here.
E.g. A link to a savegame that allows the issue to be reproduced.

HeadstrongCatgirl commented 5 years ago

29945 is kind of related, but that one is more about targeting priority rather than the ability to see.

ThomasLinkin commented 5 years ago

So you meant was you were able to AIM, not just SEE? That's normal,since we are talking of ranged weapon.

Night-Pryanik commented 5 years ago

you shouldn't be seeing other zlevels.

Wrong. Imagine yourself sitting on a roof and looking down on the ground level.

The question is: have you explored this lab previously? It's an exploit only if you've never been to this lab before yet the game allows you to look what's inside of it. If it's an already explored lab, then it's working as intended.

ThomasLinkin commented 5 years ago

oh,i thought the lab wasn't explored. well then it IS a bug. a big one at that.

free-coffee commented 5 years ago

Can confirm for ubuntu/curses with using the x/lookaround action. It allows looking one z-level up/down only, and happens with ant-hills as well.

Night-Pryanik commented 5 years ago

Can't confirm on latest experimental as of October 11, 2019, Windows 10 x64, tiles. Looking up or down doesn't allow you to see something that you haven't seen prior to that.

изображение

изображение

HeadstrongCatgirl commented 5 years ago

Screenshot_20191011_123818 Screenshot_20191011_123958 0.D-8418-g126c27ba3e, ubuntu 18.04.

free-coffee commented 5 years ago

I'm afraid i didn't test properly: the behaivior can be achieved by teleporting into solid rock. On the anthilll that is what i saw. The build was a previous one - on 0.D-8343-gc09cd976aa/ubuntu 18.04/curses i see the bug if directly below you is a solid wall adjecent to an open area. Then wen looking around below you can look into the area.

kevingranade commented 4 years ago

Ok I'm poking around in the code a bit, and it looks like something in the vicinity of game::draw_ter() and/or map::draw() is getting confused about the difference between the level the player is on and the layer being drawn.

AlexMooney commented 4 years ago

I've reproduced this by generating a new world, spawning a 4x4 and a roadmap, then driving up to a lab entrance and e'x'amining and looking down 4 levels. You can only see the areas which are already illuminated. I suspect the difficulty in reproducing this is because you have to happen to look at a bright place below you.

My config.json file ```json [ { "info": "Set a default character name that will be used instead of a random name on character creation.", "default": "Default: ", "name": "DEF_CHAR_NAME", "value": "" }, { "info": "Enable item auto pickup. Change pickup rules with the Auto Pickup Manager.", "default": "Default: False", "name": "AUTO_PICKUP", "value": "true" }, { "info": "If true, will enable to pickup items one tile around to the player. You can assign No Auto Pickup zones with the Zones Manager 'Y' key for e.g. your homebase.", "default": "Default: False", "name": "AUTO_PICKUP_ADJACENT", "value": "true" }, { "info": "Auto pickup items with weight less than or equal to [option] * 50 grams. You must also set the small items option. '0' disables this option", "default": "Default: 0 - Min: 0, Max: 20", "name": "AUTO_PICKUP_WEIGHT_LIMIT", "value": "0" }, { "info": "Auto pickup items with volume less than or equal to [option] * 50 milliliters. You must also set the light items option. '0' disables this option", "default": "Default: 0 - Min: 0, Max: 20", "name": "AUTO_PICKUP_VOL_LIMIT", "value": "0" }, { "info": "Auto pickup is disabled as long as you can see monsters nearby. This is affected by 'Safe Mode proximity distance'.", "default": "Default: False", "name": "AUTO_PICKUP_SAFEMODE", "value": "true" }, { "info": "If false, you will not see messages about items, you step on, within no auto pickup zones.", "default": "Default: True", "name": "NO_AUTO_PICKUP_ZONES_LIST_ITEMS", "value": "true" }, { "info": "If true, enables configured auto features below. Disabled as long as any enemy monster is seen.", "default": "Default: False", "name": "AUTO_FEATURES", "value": "false" }, { "info": "Action to perform when 'Auto pulp or butcher' is enabled. Pulp: Pulp corpses you stand on. - Pulp Adjacent: Also pulp corpses adjacent from you. - Butcher: Butcher corpses you stand on.", "default": "Default: off - Values: off, pulp, pulp_adjacent, butcher", "name": "AUTO_PULP_BUTCHER", "value": "pulp_adjacent" }, { "info": "If true, enables automatic use of wielded pickaxes and jackhammers whenever trying to move into mineable terrain.", "default": "Default: False", "name": "AUTO_MINING", "value": "false" }, { "info": "Action to perform when 'Auto foraging' is enabled. Bushes: Only forage bushes. - Trees: Only forage trees. - Everything: Forage bushes, trees, and everything else including flowers, cattails etc.", "default": "Default: off - Values: off, bushes, trees, both", "name": "AUTO_FORAGING", "value": "bushes" }, { "info": "If false, will cause player to drop new items that cause them to exceed the weight limit.", "default": "Default: False", "name": "DANGEROUS_PICKUPS", "value": "false" }, { "info": "If true, the player will not be prevented from moving into known hazardous tiles while running.", "default": "Default: False", "name": "DANGEROUS_RUNNING", "value": "false" }, { "info": "If true, will hold the game and display a warning if a hostile monster/npc is approaching.", "default": "Default: True", "name": "SAFEMODE", "value": "true" }, { "info": "If safe mode is enabled, distance to hostiles at which safe mode should show a warning. 0 = Max player view distance.", "default": "Default: 0 - Min: 0, Max: 60", "name": "SAFEMODEPROXIMITY", "value": "25" }, { "info": "When true, safe mode will alert you of hostiles while you are driving a vehicle.", "default": "Default: False", "name": "SAFEMODEVEH", "value": "false" }, { "info": "If true, safe mode will automatically reactivate after a certain number of turns. See option 'Turns to auto reactivate safe mode.'", "default": "Default: False", "name": "AUTOSAFEMODE", "value": "true" }, { "info": "Number of turns after which safe mode is reactivated. Will only reactivate if no hostiles are in 'Safe mode proximity distance.'", "default": "Default: 50 - Min: 1, Max: 600", "name": "AUTOSAFEMODETURNS", "value": "50" }, { "info": "Number of turns an ignored monster stays ignored after it is no longer seen. 0 disables this option and monsters are permanently ignored.", "default": "Default: 200 - Min: 0, Max: 3600", "name": "SAFEMODEIGNORETURNS", "value": "200" }, { "info": "If enabled, monsters will take periodic gameplay turns. This value is the delay between each turn, in seconds. Works best with Safe Mode disabled. 0 = disabled.", "default": "Default: 0.00 - Min: 0.00, Max: 10.00", "name": "TURN_DURATION", "value": "0.00" }, { "info": "If true, game will periodically save the map. Autosaves occur based on in-game turns or real-time minutes, whichever is larger.", "default": "Default: True", "name": "AUTOSAVE", "value": "true" }, { "info": "Number of game turns between autosaves", "default": "Default: 50 - Min: 10, Max: 1000", "name": "AUTOSAVE_TURNS", "value": "500" }, { "info": "Number of real time minutes between autosaves", "default": "Default: 5 - Min: 0, Max: 127", "name": "AUTOSAVE_MINUTES", "value": "1" }, { "info": "If true, automatically sets notes", "default": "Default: False", "name": "AUTO_NOTES", "value": "true" }, { "info": "If true, automatically sets notes on places that have stairs that go up or down", "default": "Default: False", "name": "AUTO_NOTES_STAIRS", "value": "true" }, { "info": "If true, automatically sets notes on places that contain various map extras", "default": "Default: False", "name": "AUTO_NOTES_MAP_EXTRAS", "value": "true" }, { "info": "If true, the game will calculate range in a realistic way: light sources will be circles, diagonal movement will cover more ground and take longer. If disabled, everything is square: moving to the northwest corner of a building takes as long as moving to the north wall.", "default": "Default: True", "name": "CIRCLEDIST", "value": "true" }, { "info": "Set to drop empty containers after use. No: Don't drop any. - Watertight: All except watertight containers. - All: Drop all containers.", "default": "Default: no - Values: no, watertight, all", "name": "DROP_EMPTY", "value": "no" }, { "info": "Always: Always start deathcam. Ask: Query upon death. Never: Never show deathcam.", "default": "Default: ask - Values: always, ask, never", "name": "DEATHCAM", "value": "always" }, { "info": "Radius around the cursor to search in the map UI. Setting very high may be slow.", "default": "Default: 100 - Min: 10, Max: 4000", "name": "MAP_UI_SEARCH_RADIUS", "value": "2000" }, { "info": "If true, music and sound are enabled.", "default": "Default: True", "name": "SOUND_ENABLED", "value": "true" }, { "info": "Choose the soundpack you want to use. Requires restart.", "default": "Default: basic - Values: basic, CO.AG SoundPack, CO.AG SoundPack, @'s soundpack#Viewing name of the soundpack", "name": "SOUNDPACKS", "value": "@'s soundpack#Viewing name of the soundpack" }, { "info": "Adjust the volume of the music being played in the background.", "default": "Default: 100 - Min: 0, Max: 128", "name": "MUSIC_VOLUME", "value": "60" }, { "info": "Adjust the volume of sound effects being played by the game.", "default": "Default: 100 - Min: 0, Max: 128", "name": "SOUND_EFFECT_VOLUME", "value": "80" }, { "info": "Adjust the volume of ambient sounds being played by the game.", "default": "Default: 100 - Min: 0, Max: 128", "name": "AMBIENT_SOUND_VOLUME", "value": "60" }, { "info": "Switch Language.", "default": "Default: - Values: en, de, es_AR, es_ES, fr, hu, ja, ko, pl, ru, zh_CN, zh_TW", "name": "USE_LANG", "value": "" }, { "info": "Switch between Celsius, Fahrenheit and Kelvin.", "default": "Default: fahrenheit - Values: fahrenheit, celsius, kelvin", "name": "USE_CELSIUS", "value": "celsius" }, { "info": "Switch between mph, km/h and tiles/turn.", "default": "Default: mph - Values: mph, km/h, t/t", "name": "USE_METRIC_SPEEDS", "value": "mph" }, { "info": "Switch between kg and lbs.", "default": "Default: lbs - Values: lbs, kg", "name": "USE_METRIC_WEIGHTS", "value": "kg" }, { "info": "Switch between the Cup ( c ), Liter ( L ) or Quart ( qt ).", "default": "Default: l - Values: c, l, qt", "name": "VOLUME_UNITS", "value": "l" }, { "info": "12h: AM/PM, e.g. 7:31 AM - Military: 24h Military, e.g. 0731 - 24h: Normal 24h, e.g. 7:31", "default": "Default: 12h - Values: 12h, military, 24h", "name": "24_HOUR", "value": "12h" }, { "info": "If true, Y/N prompts are case-sensitive and y and n are not accepted.", "default": "Default: True", "name": "FORCE_CAPITAL_YN", "value": "true" }, { "info": "If true, automatically follow the crosshair when firing/throwing.", "default": "Default: False", "name": "SNAP_TO_TARGET", "value": "false" }, { "info": "If true, will query before disassembling items while butchering.", "default": "Default: True", "name": "QUERY_DISASSEMBLE", "value": "true" }, { "info": "If true, will query before removing a keybinding from a hotkey.", "default": "Default: True", "name": "QUERY_KEYBIND_REMOVAL", "value": "true" }, { "info": "If true, will close the advanced inventory when the move all items command is used.", "default": "Default: False", "name": "CLOSE_ADV_INV", "value": "false" }, { "info": "Open default advanced inventory layout instead of last opened layout", "default": "Default: False", "name": "OPEN_DEFAULT_ADV_INV", "value": "false" }, { "info": "If true, actions ( like \"Read\", \"Smoke\", \"Wrap tighter\" ) will be displayed next to the corresponding items.", "default": "Default: True", "name": "INV_USE_ACTION_NAMES", "value": "true" }, { "info": "Allows diagonal movement with cursor keys using CTRL and SHIFT modifiers. Diagonal movement action keys are taken from keybindings, so you need these to be configured.", "default": "Default: none - Values: none, mode1, mode2, mode3", "name": "DIAG_MOVE_WITH_MODIFIERS_MODE", "value": "none" }, { "info": "If true, vehicle parts will change color if they are armor plated", "default": "Default: True", "name": "VEHICLE_ARMOR_COLOR", "value": "true" }, { "info": "If true, view will automatically shift towards the driving direction", "default": "Default: True", "name": "DRIVING_VIEW_OFFSET", "value": "true" }, { "info": "If true, when controlling a vehicle, a white 'X' ( in curses version ) or a crosshair ( in tiles version ) at distance 10 from the center will display its current facing.", "default": "Default: True", "name": "VEHICLE_DIR_INDICATOR", "value": "true" }, { "info": "If true, when driving a vehicle in reverse, steering should also reverse like real life.", "default": "Default: False", "name": "REVERSE_STEERING", "value": "true" }, { "info": "Switch between sidebar on the left or on the right side. Requires restart.", "default": "Default: right - Values: left, right", "name": "SIDEBAR_POSITION", "value": "right" }, { "info": "If true, adds an extra space between sidebar panels.", "default": "Default: False", "name": "SIDEBAR_SPACERS", "value": "false" }, { "info": "Where new log messages should show.", "default": "Default: new_bottom - Values: new_top, new_bottom", "name": "LOG_FLOW", "value": "new_bottom" }, { "info": "Number of turns after which a message will be removed from the sidebar log. '0' disables this option.", "default": "Default: 0 - Min: 0, Max: 1000", "name": "MESSAGE_TTL", "value": "0" }, { "info": "Number of turns during which similar messages are hidden. '0' disables this option.", "default": "Default: 0 - Min: 0, Max: 1000", "name": "MESSAGE_COOLDOWN", "value": "0" }, { "info": "If true, pressing a key with no set function will not display a notice in the chat log.", "default": "Default: False", "name": "NO_UNKNOWN_COMMAND_MSG", "value": "false" }, { "info": "Switch between pickup panel being left, right, or overlapping the sidebar.", "default": "Default: left - Values: left, right, overlapping", "name": "PICKUP_POSITION", "value": "left" }, { "info": "How should confidence and steadiness be communicated to the player.", "default": "Default: bars - Values: numbers, bars", "name": "ACCURACY_DISPLAY", "value": "bars" }, { "info": "Morale display style in sidebar.", "default": "Default: vertical - Values: vertical, horizontal", "name": "MORALE_STYLE", "value": "vertical" }, { "info": "If true, Advanced Inventory Manager menu will fit full screen, otherwise it will leave sidebar visible.", "default": "Default: False", "name": "AIM_WIDTH", "value": "false" }, { "info": "Move view by how many squares per keypress.", "default": "Default: 1 - Min: 1, Max: 50", "name": "MOVE_VIEW_OFFSET", "value": "5" }, { "info": "With Fast Scroll option enabled, shift view on the overmap and while looking around by this many squares per keypress.", "default": "Default: 5 - Min: 1, Max: 50", "name": "FAST_SCROLL_OFFSET", "value": "5" }, { "info": "If true, menus will start scrolling in the center of the list, and keep the list centered.", "default": "Default: True", "name": "MENU_SCROLL", "value": "true" }, { "info": "Centered or to edge, shift the view toward the selected item if it is outside of your current viewport.", "default": "Default: centered - Values: false, centered, edge", "name": "SHIFT_LIST_ITEM_VIEW", "value": "centered" }, { "info": "Enabled: automatically assign letters to any carried items that lack them. Disabled: do not auto-assign letters. Favorites: only auto-assign letters to favorited items.", "default": "Default: favorites - Values: disabled, enabled, favorites", "name": "AUTO_INV_ASSIGN", "value": "favorites" }, { "info": "If true, show item health bars instead of reinforced, scratched etc. text.", "default": "Default: True", "name": "ITEM_HEALTH_BAR", "value": "true" }, { "info": "If true, show item symbols in inventory and pick up menu.", "default": "Default: False", "name": "ITEM_SYMBOLS", "value": "true" }, { "info": "Enable input from joystick.", "default": "Default: True", "name": "ENABLE_JOYSTICK", "value": "false" }, { "info": "Show: Cursor is always shown. Hide: Cursor is hidden. HideKB: Cursor is hidden on keyboard input and unhidden on mouse movement.", "default": "Default: show - Values: show, hide, hidekb", "name": "HIDE_CURSOR", "value": "hidekb" }, { "info": "Edge scrolling with the mouse.", "default": "Default: Normal", "name": "EDGE_SCROLL", "value": "30" }, { "info": "If true, will display enabled animations.", "default": "Default: True", "name": "ANIMATIONS", "value": "true" }, { "info": "If true, will display weather animations.", "default": "Default: True", "name": "ANIMATION_RAIN", "value": "true" }, { "info": "If true, will display animations for projectiles like bullets, arrows, and thrown items.", "default": "Default: True", "name": "ANIMATION_PROJECTILES", "value": "true" }, { "info": "If true, will display scrolling combat text animations.", "default": "Default: True", "name": "ANIMATION_SCT", "value": "true" }, { "info": "If true, will display scrolling combat text with Unicode font.", "default": "Default: True", "name": "ANIMATION_SCT_USE_FONT", "value": "true" }, { "info": "The amount of time to pause between animation frames in ms.", "default": "Default: 10 - Min: 0, Max: 100", "name": "ANIMATION_DELAY", "value": "10" }, { "info": "If true, forces the game to redraw at least once per turn.", "default": "Default: True", "name": "FORCE_REDRAW", "value": "true" }, { "info": "Set the size of the terminal along the X axis. Requires restart.", "default": "Default: 80 - Min: 80, Max: 960", "name": "TERMINAL_X", "value": "240" }, { "info": "Set the size of the terminal along the Y axis. Requires restart.", "default": "Default: 24 - Min: 24, Max: 270", "name": "TERMINAL_Y", "value": "85" }, { "info": "If true, fonts will look better.", "default": "Default: False", "name": "FONT_BLENDING", "value": "true" }, { "info": "Set the font width. Requires restart.", "default": "Default: 8 - Min: 8, Max: 100", "name": "FONT_WIDTH", "value": "16" }, { "info": "Set the font height. Requires restart.", "default": "Default: 16 - Min: 8, Max: 100", "name": "FONT_HEIGHT", "value": "24" }, { "info": "Set the font size. Requires restart.", "default": "Default: 16 - Min: 8, Max: 100", "name": "FONT_SIZE", "value": "24" }, { "info": "Set the map font width. Requires restart.", "default": "Default: 8 - Min: 8, Max: 100", "name": "MAP_FONT_WIDTH", "value": "16" }, { "info": "Set the map font height. Requires restart.", "default": "Default: 16 - Min: 8, Max: 100", "name": "MAP_FONT_HEIGHT", "value": "24" }, { "info": "Set the map font size. Requires restart.", "default": "Default: 16 - Min: 8, Max: 100", "name": "MAP_FONT_SIZE", "value": "24" }, { "info": "Set the overmap font width. Requires restart.", "default": "Default: 8 - Min: 8, Max: 100", "name": "OVERMAP_FONT_WIDTH", "value": "24" }, { "info": "Set the overmap font height. Requires restart.", "default": "Default: 16 - Min: 8, Max: 100", "name": "OVERMAP_FONT_HEIGHT", "value": "24" }, { "info": "Set the overmap font size. Requires restart.", "default": "Default: 16 - Min: 8, Max: 100", "name": "OVERMAP_FONT_SIZE", "value": "24" }, { "info": "Use SDL ASCII line drawing routine instead of Unicode Line Drawing characters. Use this option when your selected font doesn't contain necessary glyphs.", "default": "Default: True", "name": "USE_DRAW_ASCII_LINES_ROUTINE", "value": "true" }, { "info": "If true, replaces some TTF rendered text with tiles.", "default": "Default: True", "name": "USE_TILES", "value": "true" }, { "info": "Choose the tileset you want to use.", "default": "Default: retrodays - Values: ASCIITiles, ChestHole16, HitButton_iso, hoder, MSX++DEAD_PEOPLE, UNDEAD_PEOPLE, retrodays, MSX++DEAD_PEOPLE, UNDEAD_PEOPLE", "name": "TILES", "value": "UNDEAD_PEOPLE" }, { "info": "Specified the mode in which the memory map is drawn. Requires restart.", "default": "Default: color_pixel_sepia - Values: color_pixel_darken, color_pixel_sepia", "name": "MEMORY_MAP_MODE", "value": "color_pixel_darken" }, { "info": "If true, shows the pixel-detail minimap in game after the save is loaded. Use the 'Toggle Pixel Minimap' action key to change its visibility during gameplay.", "default": "Default: True", "name": "PIXEL_MINIMAP", "value": "true" }, { "info": "Specified the mode in which the minimap drawn.", "default": "Default: dots - Values: solid, squares, dots", "name": "PIXEL_MINIMAP_MODE", "value": "solid" }, { "info": "Overall brightness of pixel-detail minimap.", "default": "Default: 100 - Min: 10, Max: 300", "name": "PIXEL_MINIMAP_BRIGHTNESS", "value": "100" }, { "info": "Height of pixel-detail minimap, measured in terminal rows. Set to 0 for default spacing.", "default": "Default: 0 - Min: 0, Max: 100", "name": "PIXEL_MINIMAP_HEIGHT", "value": "0" }, { "info": "Scale pixel minimap to fit its surroundings. May produce crappy results, especially in modes other than \"Solid\".", "default": "Default: False", "name": "PIXEL_MINIMAP_SCALE_TO_FIT", "value": "true" }, { "info": "Preserves the square shape of tiles shown on the pixel minimap.", "default": "Default: True", "name": "PIXEL_MINIMAP_RATIO", "value": "true" }, { "info": "Controls how big the creature beacons are. Value is in minimap tiles.", "default": "Default: 2 - Min: 1, Max: 4", "name": "PIXEL_MINIMAP_BEACON_SIZE", "value": "2" }, { "info": "Controls how fast the hostile creature beacons blink on the pixel minimap. Value is multiplied by 200 ms. Set to 0 to disable.", "default": "Default: 10 - Min: 0, Max: 50", "name": "PIXEL_MINIMAP_BLINK", "value": "3" }, { "info": "Sets which video display will be used to show the game. Requires restart.", "default": "Default: 0: DELL P2715Q 27\"", "name": "DISPLAY", "value": "0" }, { "info": "Starts Cataclysm in one of the fullscreen modes. Requires restart.", "default": "Default: windowedbl - Values: no, fullscreen, windowedbl", "name": "FULLSCREEN", "value": "no" }, { "info": "Set which renderer to use. Requires restart.", "default": "Default: software - Values: software, opengl, opengles2", "name": "RENDERER", "value": "opengles2" }, { "info": "Use hardware acceleration for the framebuffer when using software rendering. Requires restart.", "default": "Default: False", "name": "FRAMEBUFFER_ACCEL", "value": "false" }, { "info": "If true, tries to use color modulated textures to speed-up ASCII drawing. Requires restart.", "default": "Default: False", "name": "USE_COLOR_MODULATED_TEXTURES", "value": "false" }, { "info": "Sets the scaling mode, 'none' ( default ) displays at the game's native resolution, 'nearest' uses low-quality but fast scaling, and 'linear' provides high-quality scaling.", "default": "Default: none - Values: none, nearest, linear", "name": "SCALING_MODE", "value": "linear" }, { "info": "Factor by which to scale the display. Requires restart.", "default": "Default: 1 - Values: 1, 2, 4", "name": "SCALING_FACTOR", "value": "1" }, { "info": "Determines the scope, which is known in the beginning of the game.", "default": "Default: 15 - Min: 3, Max: 20", "name": "DISTANCE_INITIAL_VISIBILITY", "value": "15" }, { "info": "Initial points available to spend on stats on character generation.", "default": "Default: 6 - Min: 0, Max: 1000", "name": "INITIAL_STAT_POINTS", "value": "6" }, { "info": "Initial points available to spend on traits on character generation.", "default": "Default: 0 - Min: 0, Max: 1000", "name": "INITIAL_TRAIT_POINTS", "value": "0" }, { "info": "Initial points available to spend on skills on character generation.", "default": "Default: 2 - Min: 0, Max: 1000", "name": "INITIAL_SKILL_POINTS", "value": "2" }, { "info": "Maximum trait points available for character generation.", "default": "Default: 12 - Min: 0, Max: 1000", "name": "MAX_TRAIT_POINTS", "value": "12" }, { "info": "Scales experience gained from practicing skills and reading books. 0.5 is half as fast as default, 2.0 is twice as fast, 0.0 disables skill training except for NPC training.", "default": "Default: 1.00 - Min: 0.00, Max: 100.00", "name": "SKILL_TRAINING_SPEED", "value": "1.00" }, { "info": "Set the level of skill rust. Vanilla: Vanilla Cataclysm - Capped: Capped at skill levels 2 - Int: Intelligence dependent - IntCap: Intelligence dependent, capped - Off: None at all.", "default": "Default: off - Values: vanilla, capped, int, intcap, off", "name": "SKILL_RUST", "value": "off" }, { "info": "If false, vision is limited to current z-level. If true and the world is in z-level mode, the vision will extend beyond current z-level. Currently very bugged!", "default": "Default: False", "name": "FOV_3D", "value": "false" }, { "info": "How many levels up and down the experimental 3D field of vision reaches. (This many levels up, this many levels down.) 3D vision of the full height of the world can slow the game down a lot. Seeing fewer Z-levels is faster.", "default": "Default: 4 - Min: 0, Max: 21", "name": "FOV_3D_Z_RANGE", "value": "4" }, { "info": "If true, file path names are going to be transcoded from system encoding to UTF-8 when reading and will be transcoded back when writing. Mainly for CJK Windows users.", "default": "Default: True", "name": "ENCODING_CONV", "value": "true" }, { "info": "Handling of game world when last character dies.", "default": "Default: keep - Values: keep, reset, delete, query", "name": "WORLD_END", "value": "reset" }, { "info": "A number determining how large cities are. 0 disables cities, roads and any scenario requiring a city start.", "default": "Default: 8 - Min: 0, Max: 16", "name": "CITY_SIZE", "value": "8" }, { "info": "A number determining how far apart cities are. Warning, small numbers lead to very slow mapgen.", "default": "Default: 4 - Min: 0, Max: 8", "name": "CITY_SPACING", "value": "4" }, { "info": "A scaling factor that determines density of monster spawns.", "default": "Default: 1.00 - Min: 0.00, Max: 50.00", "name": "SPAWN_DENSITY", "value": "1.00" }, { "info": "A scaling factor that determines how often creatures spawn from rotting material.", "default": "Default: 100 - Min: 0, Max: 1000", "name": "CARRION_SPAWNRATE", "value": "100%" }, { "info": "A scaling factor that determines density of item spawns.", "default": "Default: 1.00 - Min: 0.01, Max: 10.00", "name": "ITEM_SPAWNRATE", "value": "1.00" }, { "info": "A scaling factor that determines density of dynamic NPC spawns.", "default": "Default: 0.10 - Min: 0.00, Max: 100.00", "name": "NPC_DENSITY", "value": "0.10" }, { "info": "A scaling factor that determines the time between monster upgrades. A higher number means slower evolution. Set to 0.00 to turn off monster upgrades.", "default": "Default: 4.00 - Min: 0.00, Max: 100.00", "name": "MONSTER_UPGRADE_FACTOR", "value": "4.00" }, { "info": "Determines the movement rate of monsters. A higher value increases monster speed and a lower reduces it. Requires world reset.", "default": "Default: 100 - Min: 1, Max: 1000", "name": "MONSTER_SPEED", "value": "100%" }, { "info": "Determines how much damage monsters can take. A higher value makes monsters more resilient and a lower makes them more flimsy. Requires world reset.", "default": "Default: 100 - Min: 1, Max: 1000", "name": "MONSTER_RESILIENCE", "value": "100%" }, { "info": "( WIP feature ) Determines terrain, shops, plants, and more.", "default": "Default: default - Values: default, desert_test", "name": "DEFAULT_REGION", "value": "default" }, { "info": "Initial starting time of day on character generation.", "default": "Default: 8 - Min: 0, Max: 23", "name": "INITIAL_TIME", "value": "8" }, { "info": "How many days into the year the cataclysm occurred. Day 0 is Spring 1. Can be overridden by scenarios. This does not advance food rot or monster evolution.", "default": "Default: 60 - Min: 0, Max: 999", "name": "INITIAL_DAY", "value": "30" }, { "info": "How many days after the cataclysm the player spawns. Day 0 is the day of the cataclysm. Can be overridden by scenarios. Increasing this will cause food rot and monster evolution to advance.", "default": "Default: 0 - Min: 0, Max: 9999", "name": "SPAWN_DELAY", "value": "0" }, { "info": "Season length, in days. Warning: Very little other than the duration of seasons scales with this value, so adjusting it may cause nonsensical results.", "default": "Default: 91 - Min: 14, Max: 127", "name": "SEASON_LENGTH", "value": "91" }, { "info": "Sets the time of construction in percents. '50' is two times faster than default, '200' is two times longer. '0' automatically scales construction time to match the world's season length.", "default": "Default: 100 - Min: 0, Max: 1000", "name": "CONSTRUCTION_SCALING", "value": "100" }, { "info": "Keep the initial season for ever.", "default": "Default: False", "name": "ETERNAL_SEASON", "value": "false" }, { "info": "Emulation of zombie hordes. Zombie spawn points wander around cities and may go to noise. Must reset world directory after changing for it to take effect.", "default": "Default: False", "name": "WANDER_SPAWNS", "value": "false" }, { "info": "If true, spawn zombies at shelters. Makes the starting game a lot harder.", "default": "Default: False", "name": "BLACK_ROAD", "value": "false" }, { "info": "If true, static NPCs will spawn at pre-defined locations. Requires world reset.", "default": "Default: True", "name": "STATIC_NPC", "value": "true" }, { "info": "Determines whether starting NPCs should spawn, and if they do, how exactly.", "default": "Default: scenario - Values: never, always, scenario", "name": "STARTING_NPC", "value": "scenario" }, { "info": "If true, the game will randomly spawn NPCs during gameplay.", "default": "Default: False", "name": "RANDOM_NPC", "value": "true" }, { "info": "If true, radiation causes the player to mutate.", "default": "Default: True", "name": "RAD_MUTATION", "value": "true" }, { "info": "If true, experimental z-level maps will be enabled. Turn this off if you experience excessive slowdown.", "default": "Default: True", "name": "ZLEVELS", "value": "true" }, { "info": "If true, downstairs will be placed directly above upstairs, even if this results in uglier maps.", "default": "Default: False", "name": "ALIGN_STAIRS", "value": "false" }, { "info": "Allowed point pools for character generation.", "default": "Default: any - Values: any, multi_pool, no_freeform", "name": "CHARACTER_POINT_POOLS", "value": "no_freeform" } ] ```
Screenshots on ground level and 4 levels down ![Screenshot from 2019-12-16 15-08-17](https://user-images.githubusercontent.com/8269566/70950613-0399c580-2016-11ea-850f-e506024deaee.png) ![Screenshot from 2019-12-16 15-08-23](https://user-images.githubusercontent.com/8269566/70950616-072d4c80-2016-11ea-8c18-dc2ed638715e.png)
Zoomed out screenshots after moving East ![Screenshot from 2019-12-16 15-10-17](https://user-images.githubusercontent.com/8269566/70950692-33e16400-2016-11ea-9ec8-2df6e17a8630.png) ![Screenshot from 2019-12-16 15-10-22](https://user-images.githubusercontent.com/8269566/70950699-35ab2780-2016-11ea-8b48-fe716bd3c798.png)
kevingranade commented 4 years ago

The pertinent options are probably Z_levels ON Z-vision OFF I was pretty sure I tested with that, but maybe not.

kevingranade commented 4 years ago

Ok this turns out to be super simple. If you turn the 3D vision option off, the game becomes completely incapable of properly drawing other z-levels, so the answer is not to try.

What's happening is the game is drawing the map "as if the player were on that level", which is of course completely wrong. When the game has 3D vision enabled, it maintains a map of what the player can see at all times on all levels, so it just applies the vision map for a particular level and everything works as intended.