Commit Graph
96 Commits
Author SHA1 Message Date
Anders Jenbo 4db65d94de Add glow to Crypt lava tiles 2023-04-24 14:20:06 +02:00
Anders Jenbo 828a52dc6d Clean up ProcessLightsList() 2023-04-22 17:14:19 +02:00
Anders Jenbo e969a8ad01 Invert player to vision relation 2023-04-21 21:25:19 +02:00
Anders Jenbo 382212b98c Remove DisableLighting from release builds 2023-04-21 21:25:19 +02:00
Anders Jenbo 779f16280c Consistently use uint8_t for lighting values 2023-04-18 23:53:04 +02:00
obligaron 1a150ed193 Multiplayer: Ensure monster hitpoints are calculated reproducable in quest/set-maps (#5958)
* Always use the same seed for generating set/quest maps

* Use setlvltype for loading quest/set-map (instead of leveltype)

* Ensure dungeon flags are reset when loading a quest/set-map
2023-04-09 02:32:52 +02:00
obligaron 4cdd7ff2d9 Replace ReturnLevel/LevelTyp/LvlPosition 2023-03-12 19:30:57 +01:00
obligaron f4b2fee532 Transform Lazarus portal position to world space earlier 2023-03-12 19:30:57 +01:00
obligaron 44de539afb Introduce CronerStoneStruct::isAvailable() 2023-03-02 01:23:59 +01:00
obligaronandqndel 3a31539c7e Multiplayer: Enable Warlord of Blood Quest
Update Source/quests.h

Co-authored-by: qndel <[email protected]>
2023-02-20 21:30:50 +01:00
Gleb Mazovetskiy 09d7f99c32 Optimize IsTileSafe
Add dungeon flags for Fire/Lightning Wall and use them to check if the
monster considers the tile safe.
2022-12-09 05:00:14 +01:00
Gleb Mazovetskiy 38e37e0d53 Fix warnings/errors with -funsigned-char 2022-12-05 07:52:13 +01:00
Gleb Mazovetskiy 79b330825d dun_render: Avoid Invalid tile type
1. Do not call `RenderTile` with invalid values to begin with.
2. Move mask selection out of `RenderTile`.
2022-12-05 01:32:29 +01:00
obligaron f8705c51a2 Make skeleton king's lair multiplayer compatible 2022-11-14 06:58:56 +01:00
obligaron d0978672e9 Make Poisoned Water Supply quest multiplayer compatible 2022-11-11 03:27:37 +01:00
obligaron 5a45ee4eba Update diablo pentagram when quest state changes 2022-11-11 03:27:37 +01:00
obligaron 9a1bf42519 Always set lazarus portal position 2022-11-11 03:27:37 +01:00
obligaron 5fe20e3d32 Make Lazarus quest map multiplayer compatible 2022-11-11 03:27:37 +01:00
staphen 21bd760bfa Bypass CMD_PUTITEM when triggering CMD_OPENHIVE or CMD_OPENGRAVE 2022-10-25 07:14:03 +02:00
Gleb Mazovetskiy 0f6a4be8ab trigs.cpp: Fix build error 2022-10-16 12:43:58 +01:00
Gleb Mazovetskiy b5f788cb33 trigs.cpp: Optimize & clean up the data structures
1. Use appropriate types.
2. Do not use an end marker for static arrays (their length is known).
2022-10-16 03:53:26 +01:00
Gleb Mazovetskiy 6d7d95c5da drlg_l2: Use WorldTilePosition for Room/HallNode 2022-10-16 03:53:26 +01:00
Gleb Mazovetskiy 759ca7f055 WorldTileRectangle/Size
Adds a custom sized type for the world tile rectagle.

This allows us to better express intent.
It also allows us to make certain globals smaller, e.g. `THEME_LOC`.
2022-10-16 03:53:26 +01:00
obligaron 795a43dd89 Add Arena Support 2022-10-14 16:25:30 +02:00
obligaron 496689bb87 Fix incorrect SOLData for L1 arched/pillar Pieces (BlockLight and BlockMissile is missing) 2022-10-11 22:24:48 +02:00
Gleb Mazovetskiy 41f43ea3f5 Support unpacked MPQs from devilutionx-mpq-tools
https://github.com/diasurgical/devilutionx-mpq-tools produces an unpacked MPQ
with all the graphics converted to CLX and the unused files removed.
This is primarily useful on RAM-constrained platforms, such as PS2,
because it eliminates the MPQ overhead.

Adds a build option to load from such unpacked directories instead of the MPQ.

These directories are searched for in the same locations
where the MPQs would be searched for otherwise.

Example directory layout:

* /usr/local/share/diasurgical/devilutionx/diabdat/ -- unpacked and converted diabdat.mpq
* /usr/local/share/diasurgical/devilutionx/hellfire/ -- unpacked and converted hellfire MPQs (all of them merged into 1 directory)
* /usr/local/share/diasurgical/devilutionx/fonts/ -- unpacked fonts.mpq
* /usr/local/share/diasurgical/devilutionx/pl/ -- unpacked pl.mpq

These directory structure is produced by calling `unpack_and_minify_mpq`
2022-10-11 18:00:57 +01:00
ephphatha 22adb0a93f Use counter to track number of candidates considered in TFit_Obj5 2022-10-03 14:02:42 +02:00
obligaron 9ee325e537 TFit_Obj5: Fix theme room generation when only last skipped candidate was valid 2022-10-03 06:22:44 +02:00
obligaron 69338e1733 Fix poison water entrace position 2022-10-02 19:34:34 +02:00
Anders Jenbo 715926e751 Fix single room cathedral with quest piece (#5321) 2022-10-02 13:00:49 +00:00
staphen 8b6db3a678 Get rid of panelstr, pnumlines, and ClearPanel() 2022-10-02 08:51:24 +02:00
obligaron 7ad5a45905 Fix warp position offset and adjust some spawn positions (#5364) 2022-09-25 02:20:35 +02:00
Anders Jenbo 58c8c021f8 Clean up ConnectHall 2022-09-17 02:59:35 +02:00
ephphatha 29f65a92bb Return direct from switch in all cases of CheckThemeReqs 2022-09-15 23:37:42 +02:00
ephphatha 9c245f8ec4 Expand anonymous namespace in themes.cpp 2022-09-15 23:37:42 +02:00
ephphatha 08acd4aac0 Tidy up T_FitObj5 2022-09-15 23:37:42 +02:00
ephphatha 6656c74842 Use 0 as a default for non-random object placement tests 2022-09-15 23:37:42 +02:00
Anders Jenbo e348fa3b1e Implement town map 2022-09-12 08:09:17 +02:00
obligaron 054930256c Fix skeleton kings lair spawn position 2022-09-10 04:40:00 +02:00
Anders Jenbo f8dca40427 Merge branch 'master' of https://github.com/diasurgical/devilution 2022-08-27 02:41:28 +02:00
obligaron f8a3212fba Fix incorrect SOLData for L1 Piece 27 (BlockMissile is missing) 2022-08-21 10:38:48 +02:00
Gleb Mazovetskiy 6327e713e0 Lowercase all file paths
We want to be able to use unpacked MPQs on low-end platforms
(PS2/rg99/etc).

This is tricky on case-sensitive filesystems. Avoids case issues by
lowercasing all paths in the code (then we'll just need lowercased
listfiles).
2022-08-20 23:49:23 +01:00
obligaron a410e989bf Remove ScrollInfo 2022-08-03 21:25:21 +02:00
Gleb Mazovetskiy 961866e1c4 CLX: A new graphics format
The format is almost identical to CL2, except it uses the frame header
to store frame width and height instead of 5 32-line offsets.

This means we always have access to frame dimensions, so we can use it
as an on-disk format for our graphics as well.

Additionally, we may be able to optimize the rendering even more
in the future now that we have guaranteed knowledge of frame dimensions.
2022-08-03 02:38:55 +02:00
Anders Jenbo efe6b18900 Move two basic crypt setpices in to dun files 2022-08-01 01:15:02 +02:00
galaxyhaxz b42c731ae5 Fix broken dirt tile in cathedral/crypt 2022-07-30 19:37:56 +02:00
ephphatha 0ce76a3f13 Add Object lookup method to mimic map::at() 2022-07-28 12:47:13 +02:00
ephphatha cdcccef47a Return pointer from AddObject
This allows removing the immediate lookup for call sites which need further initialisation.
2022-07-28 12:47:13 +02:00
Andrew James b56907672f Add Bitset2d::count() and use it when counting set Dungeonmask tiles (#5083)
Added comments and renamed other functions to give context why this is different to the use in drlg_l1
2022-07-22 11:18:29 +02:00
Andrew James 2786a65e7b Tidy up ActivateSkeleton and take monster by reference (#5080)
* Take reference in OperateSarcophagus
* Use monster reference instead of pointer in ActivateSkeleton
* Clean up ActivateSkeleton
2022-07-21 18:58:27 +02:00