Экран отряда: подсказка не закрывает статы, имена не режутся
Подсказка вставала НИЖЕ курсора и ложилась ровно на строки характеристик - те самые, которые объясняет: игрок наводил на броню, чтобы понять, откуда 28%, и подсказка закрывала строку ARMOR. Теперь она встаёт выше курсора, там пусто. Ячейка схрона была 52 пикселя: в неё не влезало даже слово BATTERY, и половина имён обрезалась на середине. Шесть колонок вместо восьми - читаемость важнее двух лишних ячеек, прокрутка и так есть. Сумка вне вылазки честно подписана RAID ONLY: она принадлежит забегу и очищается при сборке этажа, а молчащий отказ читается как поломка. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
9d715a9c3a
commit
da670af6dc
@ -1,9 +1,10 @@
|
||||
# Открытая арена с четырьмя опорами. Здесь работает решатель огневых позиций:
|
||||
# места хватает, и отряд обязан разойтись по линиям, а не сбиться в кучу.
|
||||
#
|
||||
# Опоры стали ОДНОРЯДНЫМИ вместо блоков 2x2, а сама арена сузилась до 12: блок
|
||||
# отнимал у центра столько пола, что пятеро вставали в него впритык и переставали
|
||||
# расходиться. Укрытие нужно, чтобы за него зайти, а не чтобы об него спотыкаться.
|
||||
# Опоры отодвинуты В УГЛЫ и стали однорядными. Причина не в красоте: строй из
|
||||
# пяти занимает поперёк почти четыре тайла, и опора, стоявшая у самого прохода,
|
||||
# ловила крайнего бойца намертво — упереться в неё он мог, а обойти нет.
|
||||
# Полоса пола между дверями противоположных стен обязана быть шире строя.
|
||||
name arena
|
||||
size 12 12
|
||||
weight 3
|
||||
@ -12,20 +13,20 @@ start 0
|
||||
depth 1 0
|
||||
tiles
|
||||
####+++#####
|
||||
#..........#
|
||||
#..........#
|
||||
#..##..##..#
|
||||
#.#......#.#
|
||||
#.#......#.#
|
||||
#..........#
|
||||
+..........+
|
||||
+..........+
|
||||
+..........+
|
||||
#..........#
|
||||
#..##..##..#
|
||||
#..........#
|
||||
#.#......#.#
|
||||
#.#......#.#
|
||||
####+++#####
|
||||
spawn 4 4 0.90 shambler:4 rusher:3 spitter:2
|
||||
spawn 9 4 0.85 shambler:4 rusher:3
|
||||
spawn 4 5 0.90 shambler:4 rusher:3 spitter:2
|
||||
spawn 8 5 0.85 shambler:4 rusher:3
|
||||
spawn 4 7 0.85 shambler:3 rusher:2 brute:1
|
||||
spawn 9 7 0.90 shambler:4 spitter:2
|
||||
spawn 8 7 0.90 shambler:4 spitter:2
|
||||
spawn 6 1 0.40 crate:2 barrel:1
|
||||
spawn 7 10 0.40 crate:1 locker:1
|
||||
spawn 6 10 0.40 crate:1 locker:1
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
# Казарма: ряды перегородок и сквозной проход посередине. Твари выходят
|
||||
# Казарма: койки по нишам вдоль стен, середина сквозная. Твари выходят
|
||||
# из-за переборок сбоку, а не в лоб, — строй приходится разворачивать на ходу.
|
||||
#
|
||||
# Перегородок стало вдвое меньше, а проход посередине — в три ряда. Прежние пять
|
||||
# рядов по два тайла резали комнату на щели шириной в тело: сбоку выходить было
|
||||
# откуда, а разворачиваться в ответ уже негде.
|
||||
# Прежние пять рядов переборок резали казарму на щели шириной в тело: сбоку
|
||||
# выходить было откуда, а разворачиваться в ответ уже негде. Ниши остались
|
||||
# ровно там, где не мешают проходу от двери до двери.
|
||||
name barracks
|
||||
size 12 9
|
||||
weight 2
|
||||
@ -12,13 +12,13 @@ start 0
|
||||
depth 2 0
|
||||
tiles
|
||||
####+++#####
|
||||
#.#......#.#
|
||||
#..........#
|
||||
#..##..##..#
|
||||
+..........+
|
||||
+..........+
|
||||
+..........+
|
||||
#..##..##..#
|
||||
#..........#
|
||||
#.#......#.#
|
||||
####+++#####
|
||||
spawn 4 1 0.75 shambler:3 rusher:2
|
||||
spawn 8 1 0.60 spitter:2 shambler:1
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
# Перекрёсток. Рукава шириной три тайла — ровно как коридоры между комнатами:
|
||||
# правило «не стрелять сквозь своих» упирается в геометрию, и отряд вытягивается
|
||||
# в колонну, но не встаёт в ней намертво.
|
||||
# Перекрёсток. Рукава шириной пять тайлов: правило «не стрелять сквозь своих»
|
||||
# упирается в геометрию, и отряд вытягивается в колонну.
|
||||
#
|
||||
# Середина расширена до четырёх рядов: перекрёсток — единственное место, где
|
||||
# колонна имеет право снова стать строем, и на трёх рядах она этого не успевала.
|
||||
# Пять, а не три: строй из пяти занимает поперёк почти четыре тайла, и в рукаве
|
||||
# шириной три крайние бойцы упирались в его же стены на входе. Комната обязана
|
||||
# СЖИМАТЬ строй, а не запирать его.
|
||||
name corridor_x
|
||||
size 12 12
|
||||
weight 3
|
||||
@ -12,18 +12,18 @@ start 0
|
||||
depth 1 0
|
||||
tiles
|
||||
####+++#####
|
||||
####...#####
|
||||
####...#####
|
||||
####...#####
|
||||
###.....####
|
||||
###.....####
|
||||
#..........#
|
||||
+..........+
|
||||
+..........+
|
||||
+..........+
|
||||
#..........#
|
||||
####...#####
|
||||
####...#####
|
||||
####...#####
|
||||
#..........#
|
||||
###.....####
|
||||
###.....####
|
||||
####+++#####
|
||||
spawn 6 2 0.60 rusher:3 lurker:1
|
||||
spawn 6 10 0.60 rusher:3 lurker:1
|
||||
spawn 2 6 0.50 shambler:2 spitter:1
|
||||
spawn 10 6 0.50 shambler:2 spitter:1
|
||||
spawn 5 1 0.60 rusher:3 lurker:1
|
||||
spawn 5 10 0.60 rusher:3 lurker:1
|
||||
spawn 2 5 0.50 shambler:2 spitter:1
|
||||
spawn 9 5 0.50 shambler:2 spitter:1
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
# Стартовая: просторно, светло по планировке и почти пусто.
|
||||
# Отряд обязан успеть собраться в строй до первой твари.
|
||||
#
|
||||
# Поперёк комнаты идёт сплошная полоса пола в три ряда, и опор осталось по одной
|
||||
# на угол. Первое, что отряд делает после высадки, — разворачивается; делать это
|
||||
# должно быть где, иначе первые секунды каждого этажа уходят на распутывание строя.
|
||||
# Пусто здесь не от лени. Отряд высаживается в центре и первым делом
|
||||
# разворачивается; разворот из пяти тел не помещается между двумя тумбами,
|
||||
# и первые секунды каждого этажа уходили на распутывание строя.
|
||||
name hall_start
|
||||
size 12 10
|
||||
weight 2
|
||||
@ -12,14 +12,14 @@ start 1
|
||||
depth 1 0
|
||||
tiles
|
||||
####+++#####
|
||||
#.#......#.#
|
||||
#..........#
|
||||
#..........#
|
||||
#..#....#..#
|
||||
+..........+
|
||||
+..........+
|
||||
+..........+
|
||||
#..#....#..#
|
||||
#..........#
|
||||
#.#......#.#
|
||||
####+++#####
|
||||
spawn 2 2 0.50 crate:2 barrel:1
|
||||
spawn 9 7 0.40 barrel:1 locker:1
|
||||
spawn 4 1 0.50 crate:2 barrel:1
|
||||
spawn 7 8 0.40 barrel:1 locker:1
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
# Гнездо: глухое ядро посередине и кольцо вокруг него. Линий огня почти нет,
|
||||
# зато клинку есть где работать — сектор упирается в стену, а не в союзника.
|
||||
# Гнездо: выводковые камеры по углам, середина открыта. Линий огня почти нет —
|
||||
# они упираются в углы, — зато клинку есть где работать.
|
||||
#
|
||||
# Кольцо теперь в три тайла со всех сторон, а перегородок внутри него нет вовсе.
|
||||
# Прежние два вложенных кольца давали проходы шириной в одну клетку: отряд не
|
||||
# обходил ядро, он в нём застревал, и «нет линий огня» превращалось в «нет игры».
|
||||
# Кольцевые перегородки посередине пришлось убрать: между ними оставались
|
||||
# проходы в одну клетку, и отряд не обходил гнездо, а вставал в нём. Тесноту
|
||||
# теперь делает не ширина прохода, а то, что тварей выпускают со всех четырёх
|
||||
# сторон сразу.
|
||||
name nest
|
||||
size 12 12
|
||||
weight 2
|
||||
@ -12,18 +13,18 @@ start 0
|
||||
depth 4 0
|
||||
tiles
|
||||
####+++#####
|
||||
##.......###
|
||||
##.......###
|
||||
#..........#
|
||||
#..........#
|
||||
#..........#
|
||||
#...####...#
|
||||
+...####...+
|
||||
+...####...+
|
||||
+..........+
|
||||
+..........+
|
||||
+..........+
|
||||
#..........#
|
||||
#..........#
|
||||
#..........#
|
||||
###.......##
|
||||
###.......##
|
||||
####+++#####
|
||||
spawn 5 1 0.85 shambler:3 brute:1
|
||||
spawn 2 5 0.80 lurker:2 rusher:2
|
||||
spawn 9 5 0.80 lurker:2 rusher:2
|
||||
spawn 3 5 0.80 lurker:2 rusher:2
|
||||
spawn 8 5 0.80 lurker:2 rusher:2
|
||||
spawn 6 10 0.85 shambler:3 spitter:2
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
# Яма: колодец посередине с единственным входом снизу. Громилу в нём
|
||||
# приходится разбирать вдвоём, а круг его удара достаёт обоих.
|
||||
# Яма: колодец в дальнем углу, а не посередине. Громилу в нём приходится
|
||||
# разбирать вдвоём, а круг его удара достаёт обоих.
|
||||
#
|
||||
# Колодец сузился до двух тайлов, зато обход вокруг него стал трёхрядным. Смысл
|
||||
# комнаты в том, что В КОЛОДЦЕ тесно, а не в том, что тесно везде: раньше отряд
|
||||
# вставал ещё на подходе и до ямы просто не доходил.
|
||||
# Посередине колодец стоять не может: он перегораживал бы проход от двери к
|
||||
# двери, и строй упирался бы в его стенку всей шириной. В углу он делает ровно
|
||||
# то же самое — заставляет лезть в тесноту, — но лезть туда решает игрок.
|
||||
name pit
|
||||
size 12 12
|
||||
weight 2
|
||||
@ -12,19 +12,19 @@ start 0
|
||||
depth 6 0
|
||||
tiles
|
||||
####+++#####
|
||||
#.#......#.#
|
||||
#.#......#.#
|
||||
#..........#
|
||||
+..........+
|
||||
+..........+
|
||||
+..........+
|
||||
#..........#
|
||||
#..........#
|
||||
#..........#
|
||||
#...####...#
|
||||
+...#..#...+
|
||||
+...#..#...+
|
||||
+...#..#...+
|
||||
#..........#
|
||||
#..........#
|
||||
#..........#
|
||||
#.#.....#..#
|
||||
#.#.....#..#
|
||||
####+++#####
|
||||
spawn 5 6 0.95 brute:3 shambler:2
|
||||
spawn 2 4 0.70 spitter:2 rusher:2
|
||||
spawn 9 4 0.70 spitter:2 rusher:2
|
||||
spawn 6 10 0.60 shambler:3 lurker:1
|
||||
spawn 2 9 0.40 barrel:2 crate:1
|
||||
spawn 9 10 0.95 brute:3 shambler:2
|
||||
spawn 2 5 0.70 spitter:2 rusher:2
|
||||
spawn 9 5 0.70 spitter:2 rusher:2
|
||||
spawn 6 8 0.60 shambler:3 lurker:1
|
||||
spawn 5 1 0.40 barrel:2 crate:1
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
# Склад: обстановки много, тварей мало. Место, где игрок узнаёт, что хлам
|
||||
# ломается, — и тратит на это магазин, которого потом не хватит.
|
||||
#
|
||||
# Стеллаж стал одним глухим блоком посередине, а обход вокруг него — трёхрядным.
|
||||
# Прежняя двойная рамка оставляла по краям щели в один тайл: отряд входил на
|
||||
# склад и не мог из него выйти иначе как гуськом.
|
||||
# Стеллажи стоят вдоль стен, а не двойной рамкой посередине: рамка оставляла по
|
||||
# краям щели в один тайл, и отряд входил на склад, а выходил из него гуськом.
|
||||
name storage
|
||||
size 12 10
|
||||
weight 2
|
||||
@ -12,16 +11,16 @@ start 0
|
||||
depth 1 0
|
||||
tiles
|
||||
####+++#####
|
||||
#.#......#.#
|
||||
#.#......#.#
|
||||
#..........#
|
||||
#..........#
|
||||
#...####...#
|
||||
+...####...+
|
||||
+...####...+
|
||||
+..........+
|
||||
+..........+
|
||||
+..........+
|
||||
#..........#
|
||||
#..........#
|
||||
#.#......#.#
|
||||
####+++#####
|
||||
spawn 2 4 0.90 crate:4 barrel:3 locker:2
|
||||
spawn 9 4 0.85 crate:3 barrel:2
|
||||
spawn 5 7 0.70 barrel:2 locker:2
|
||||
spawn 1 1 0.45 shambler:2 lurker:1
|
||||
spawn 4 1 0.90 crate:4 barrel:3 locker:2
|
||||
spawn 8 1 0.85 crate:3 barrel:2
|
||||
spawn 4 8 0.70 barrel:2 locker:2
|
||||
spawn 1 4 0.45 shambler:2 lurker:1
|
||||
|
||||
@ -1,27 +1,27 @@
|
||||
# Схрон: тесная комната с глухим сейфом посередине. Хват здесь опаснее всего —
|
||||
# вырванного из строя бойца в такой тесноте нечем прикрыть.
|
||||
# Схрон: самая маленькая комната набора. Хват здесь опаснее всего — вырванного
|
||||
# из строя бойца в такой тесноте нечем прикрыть.
|
||||
#
|
||||
# Тесно тут за счёт РАЗМЕРА комнаты, а не за счёт щелей: камера в камере давала
|
||||
# обходы шириной в одну клетку, и отряд не столько рисковал, сколько стоял.
|
||||
# Обход теперь трёхрядный, а схрон всё равно самая маленькая комната набора.
|
||||
# Тесно тут за счёт РАЗМЕРА, а не за счёт щелей: камера в камере давала обходы
|
||||
# шириной в одну клетку, и отряд в схроне не рисковал, а стоял.
|
||||
name vault
|
||||
size 10 10
|
||||
size 11 11
|
||||
weight 1
|
||||
theme 3
|
||||
start 0
|
||||
depth 8 0
|
||||
tiles
|
||||
####+++###
|
||||
#........#
|
||||
#........#
|
||||
#........#
|
||||
+...##...+
|
||||
+...##...+
|
||||
+...##...+
|
||||
#........#
|
||||
#........#
|
||||
####+++###
|
||||
spawn 7 5 0.90 lurker:3 brute:1
|
||||
spawn 1 1 0.55 rusher:2 shambler:1
|
||||
spawn 8 8 0.55 spitter:2
|
||||
spawn 4 8 0.40 locker:2 crate:1
|
||||
####+++####
|
||||
#.#.....#.#
|
||||
#.#.....#.#
|
||||
#.........#
|
||||
+.........+
|
||||
+.........+
|
||||
+.........+
|
||||
#.........#
|
||||
#.#.....#.#
|
||||
#.#.....#.#
|
||||
####+++####
|
||||
spawn 5 5 0.90 lurker:3 brute:1
|
||||
spawn 4 1 0.55 rusher:2 shambler:1
|
||||
spawn 6 9 0.55 spitter:2
|
||||
spawn 4 9 0.40 locker:2 crate:1
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
# Ряд камер. Ниши по бокам: в них удобно стоять и невозможно отступать.
|
||||
#
|
||||
# Ниш стало меньше, а проход между рядами — трёхрядным: ниша должна быть местом,
|
||||
# КУДА зашли, а не единственным местом, где помещается тело.
|
||||
# Ниш стало вдвое меньше, и стоят они у самых стен. Прежний частокол оставлял
|
||||
# между камерами проходы в одну клетку: ниша должна быть местом, КУДА зашли,
|
||||
# а не единственным местом, где помещается тело.
|
||||
name cells
|
||||
size 12 9
|
||||
weight 3
|
||||
@ -9,14 +10,14 @@ theme 0
|
||||
depth 1 0
|
||||
tiles
|
||||
####+++#####
|
||||
#.#......#.#
|
||||
#..........#
|
||||
#.#.#..#.#.#
|
||||
+..........+
|
||||
+..........+
|
||||
+..........+
|
||||
#.#.#..#.#.#
|
||||
#..........#
|
||||
#.#......#.#
|
||||
####+++#####
|
||||
spawn 2 1 0.65 rusher:3 shambler:2
|
||||
spawn 10 7 0.65 rusher:3 shambler:2
|
||||
spawn 4 1 0.65 rusher:3 shambler:2
|
||||
spawn 8 7 0.65 rusher:3 shambler:2
|
||||
spawn 6 4 0.40 bandage:2 knife:1 rifle:1
|
||||
|
||||
@ -1,12 +1,11 @@
|
||||
# Зев. Открытая арена с ядром посередине: единственное место в наборе, где
|
||||
# отряд может встать кругом.
|
||||
# Зев. Открытая арена: единственное место в наборе, где отряд может встать
|
||||
# кругом, — а встать кругом впятером нельзя нигде, где проход уже четырёх тайлов.
|
||||
#
|
||||
# У ядра ДВА прохода, север и юг. Глухая коробка посередине выглядит на сетке
|
||||
# так же, но точка спавна внутри неё недостижима: тварь не дойдёт до отряда и
|
||||
# не будет убита, и этаж тихо станет легче. Ровно это и ловит --check.
|
||||
#
|
||||
# Кольцо вокруг ядра — три тайла со всех сторон: встать кругом впятером нельзя
|
||||
# в обходе шириной в два тела, там можно только выстроиться в очередь.
|
||||
# Ядро посередине пришлось убрать не ради простора, а ради проходимости: оно
|
||||
# стояло ровно на линии между дверями и ловило строй всей шириной. Урок, ради
|
||||
# которого его когда-то рисовали, остался в силе: точка спавна в глухой коробке
|
||||
# недостижима, тварь до отряда не дойдёт, и этаж тихо станет легче. Ровно это
|
||||
# и ловит --check.
|
||||
name maw
|
||||
size 12 11
|
||||
weight 2
|
||||
@ -14,17 +13,17 @@ theme 2
|
||||
depth 3 0
|
||||
tiles
|
||||
####+++#####
|
||||
#.#......#.#
|
||||
#.#......#.#
|
||||
#..........#
|
||||
+..........+
|
||||
+..........+
|
||||
+..........+
|
||||
#..........#
|
||||
#..........#
|
||||
#...#..#...#
|
||||
+...#..#...+
|
||||
+...#..#...+
|
||||
+...#..#...+
|
||||
#...#..#...#
|
||||
#..........#
|
||||
#.#......#.#
|
||||
#.#......#.#
|
||||
####+++#####
|
||||
spawn 6 5 0.85 brute:3 lurker:2
|
||||
spawn 1 1 0.60 spitter:2 rusher:2
|
||||
spawn 10 9 0.60 spitter:2 rusher:2
|
||||
spawn 10 1 0.45 shotgun:1 plate:1 cleaver:1
|
||||
spawn 4 1 0.60 spitter:2 rusher:2
|
||||
spawn 8 9 0.60 spitter:2 rusher:2
|
||||
spawn 8 1 0.45 shotgun:1 plate:1 cleaver:1
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
# Стартовая HOLLOW. Тесная и короткая: вид сверху показывает всю комнату
|
||||
# сразу, и просторный зал первого этажа не оставил бы ничего на потом.
|
||||
#
|
||||
# Тесная — по размеру, а не по проходам. От четырёх опор осталась одна: отряд
|
||||
# высаживается сюда всем составом и первым делом разворачивается, а разворот
|
||||
# между четырьмя тумбами упирался в них, а не в стены.
|
||||
# Тесная — по РАЗМЕРУ, а не по проходам. Четыре тумбы посередине стояли ровно
|
||||
# там, где отряд разворачивается после высадки, и разворот в них упирался.
|
||||
name mouth
|
||||
size 11 9
|
||||
weight 2
|
||||
@ -12,13 +11,13 @@ start 1
|
||||
depth 1 0
|
||||
tiles
|
||||
####+++####
|
||||
#.........#
|
||||
#.#.....#.#
|
||||
#.........#
|
||||
+.........+
|
||||
+....#....+
|
||||
+.........+
|
||||
+.........+
|
||||
#.........#
|
||||
#.........#
|
||||
#.#.....#.#
|
||||
####+++####
|
||||
spawn 2 1 0.45 barrel:1
|
||||
spawn 8 7 0.45 barrel:1
|
||||
spawn 4 1 0.45 barrel:1
|
||||
spawn 6 7 0.45 barrel:1
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
# Колодец. Узкий и длинный: строй здесь не развернуть, и это единственное,
|
||||
# что комната делает.
|
||||
#
|
||||
# «Не развернуть» — это пять тайлов в ширину против трёх рядов строя, а не щель
|
||||
# в одну клетку. Перемычки теперь поджимают колодец с БОКОВ до трёх тайлов, а не
|
||||
# перекрывают его посередине: отряд проходит с трудом, но проходит.
|
||||
# «Не развернуть» — это пять тайлов в ширину против четырёх, которые занимает
|
||||
# строй, а не щель в одну клетку. Перемычки поперёк колодца убраны: они не
|
||||
# сжимали отряд, они его останавливали.
|
||||
name shaft
|
||||
size 7 12
|
||||
weight 2
|
||||
@ -13,11 +13,11 @@ tiles
|
||||
##+++##
|
||||
#.....#
|
||||
#.....#
|
||||
##...##
|
||||
#.....#
|
||||
+.....+
|
||||
+.....+
|
||||
+.....+
|
||||
##...##
|
||||
#.....#
|
||||
#.....#
|
||||
#.....#
|
||||
#.....#
|
||||
|
||||
@ -151,8 +151,11 @@ constexpr int SQ_HINT_Y = 250, SQ_HINT_STEP = 10;
|
||||
// Схрон: то, что лежит на базе между вылазками. Двумя рядами во всю ширину
|
||||
// внизу, а не колонкой сбоку: в схроне десятки предметов, и подпись каждого
|
||||
// должна читаться — иначе выбор снаряжения превращается в перебор иконок.
|
||||
constexpr int SQ_STASH_X = 22, SQ_STASH_Y = 208, SQ_STASH_W = 52, SQ_STASH_H = 18;
|
||||
constexpr int SQ_STASH_GX = 4, SQ_STASH_GY = 3, SQ_STASH_COLS = 8, SQ_STASH_ROWS = 2;
|
||||
// Ячейка схрона шире, а колонок меньше: в 52 пикселя не влезало даже слово
|
||||
// BATTERY, и половина имён обрезалась на середине. Читаемость важнее, чем ещё
|
||||
// две ячейки в ряду: прокрутка есть, а угадывать вещь по обрубку — нет.
|
||||
constexpr int SQ_STASH_X = 16, SQ_STASH_Y = 206, SQ_STASH_W = 74, SQ_STASH_H = 18;
|
||||
constexpr int SQ_STASH_GX = 4, SQ_STASH_GY = 3, SQ_STASH_COLS = 6, SQ_STASH_ROWS = 2;
|
||||
constexpr int SQ_STASH_CELLS = SQ_STASH_COLS * SQ_STASH_ROWS;
|
||||
|
||||
// Мастерская. Слева схрон той же сеткой, что и на экране отряда (привычка
|
||||
@ -385,9 +388,16 @@ void DrawTip(const Layout& l, const Tip& t, int mx, int my)
|
||||
int wide = 0;
|
||||
for (int i = 0; i < t.count; ++i) wide = std::max(wide, TextW(l, t.lines[i], 8));
|
||||
|
||||
UiRect box{mx + 8, my + 8, wide + pad * 2, t.count * step + pad * 2 - 2};
|
||||
// Подсказка не должна вылезать за кадр: у края экрана она переезжает на
|
||||
// другую сторону курсора, а не обрезается.
|
||||
// Подсказка встаёт ВЫШЕ курсора, а не ниже.
|
||||
//
|
||||
// Ниже она ложилась ровно на строки характеристик — те самые, которые
|
||||
// объясняет: игрок наводил на броню, чтобы понять, откуда 28%, и подсказка
|
||||
// закрывала строку ARMOR. Сверху под ней только пустое место.
|
||||
UiRect box{mx + 8, my - 6 - (t.count * step + pad * 2 - 2), wide + pad * 2,
|
||||
t.count * step + pad * 2 - 2};
|
||||
|
||||
// И не должна вылезать за кадр: у края экрана она переезжает на другую
|
||||
// сторону курсора, а не обрезается.
|
||||
if (box.x + box.w > INTERNAL_W - 2) box.x = mx - 8 - box.w;
|
||||
if (box.y + box.h > INTERNAL_H - 2) box.y = INTERNAL_H - 2 - box.h;
|
||||
if (box.x < 2) box.x = 2;
|
||||
@ -545,11 +555,13 @@ void BuildWidgets(const Ui& ui, const Game& game, const Layout& l, Widgets& out)
|
||||
}
|
||||
|
||||
// Сумка ОБЩАЯ: она не зависит от выбранного бойца, и переложить
|
||||
// из неё может любой (sim/items.h).
|
||||
// из неё может любой (sim/items.h). Вне вылазки она недоступна:
|
||||
// сумка принадлежит забегу и очищается при сборке этажа.
|
||||
for (int s = 0; s < SQUAD_BAG_SLOTS; ++s)
|
||||
{
|
||||
Widget& w = out.Add(UiPart::BAG, s, BagRect(s));
|
||||
w.item = game.squad.bag.slots[s];
|
||||
w.enabled = ui.started;
|
||||
}
|
||||
|
||||
// Строки характеристик тоже наводимы. Читать «SPEED 95%» и гадать,
|
||||
@ -1364,7 +1376,10 @@ void DrawSquadScreen(const Layout& l, const Game& game, const Ui& ui, const Widg
|
||||
}
|
||||
}
|
||||
|
||||
Text(l, "BAG", SQ_BAG_X, SQ_BAG_Y - 14, 10, COL_TEXT);
|
||||
// Подпись честно говорит, почему сумка не берёт вещи вне забега. Молчащий
|
||||
// отказ читается как поломка — а это правило: сумка принадлежит вылазке.
|
||||
if (ui.started) Text(l, "BAG", SQ_BAG_X, SQ_BAG_Y - 14, 10, COL_TEXT);
|
||||
else Text(l, "BAG - RAID ONLY", SQ_BAG_X, SQ_BAG_Y - 14, 8, COL_DEAD);
|
||||
|
||||
if (game.profile)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user