Commit Graph
916 Commits
Author SHA1 Message Date
Trihedraf 7baaa3c35e Fix monster health to +100 for NM and +200 for Hell instead of +1 and +3 (#5987) 2023-04-16 19:26:16 +02:00
Eric Robinson 81e3c7abaa Remove fixed bugfix comments, apply golem fix 2023-04-13 21:18:04 +02:00
Gleb Mazovetskiy 957bd03b98 Remove FMT_COMPILE in "cold" places
Removes most `FMT_COMPILE` calls.
`FMT_COMPILE` results in better performance but larger code size.

Removes `FMT_COMPILE` calls for places that are called infrequently,
i.e. not on every frame.

RG-99 binary size reduced by ~4 KiB.
2023-03-12 19:29:35 +01:00
obligaron 63b04045f2 MP: Send delta message for lachdanans death 2023-03-04 12:37:25 +01:00
obligaron 6a5210e14a Multiplayer: Enable Lachdanan Quest 2023-02-25 02:48:58 +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
obligaron 76528246d7 Multiplayer: Enable Zhar the Mad Quest (#5823) 2023-02-19 22:06:08 +01:00
obligaron 31b0f2147a Multiplayer: Enable Gharbad the Week Quest 2023-02-19 14:13:06 +01:00
Gleb Mazovetskiy e67ea9b006 Make MissilesData const
Instead of temporarily modifying `MissileData` around certain calls,
pass the arguments from the outside.
2023-02-15 10:47:08 +00:00
Gleb Mazovetskiy 98294e0ad5 Optimize MissileData: 32 bytes -> 24
23 bytes used, 1 spare byte in the padding.
2023-02-07 08:08:04 +01:00
KPhoenix d813f13700 enum spell_id -> enum class SpellID 2023-02-05 10:24:58 +00:00
Gleb Mazovetskiy 0a6a8e8aa0 Clean up missile data access
Replace enum static casts with `GetMissile(Sprite)Data`.
2023-02-03 14:37:44 +00:00
KPhoenix 7947b99511 Implement new enum class 2023-02-03 05:05:12 +01:00
staphen 620a86b007 Change default monster missile damage to zero 2023-02-03 02:38:50 +01:00
Eric Robinson 30c1991039 enum _mai_id -> enum class MonsterAIID (#5683) 2023-01-28 00:10:15 +01:00
c99f7cf644 Floating numbers (#5639)
Co-authored-by: qndel <[email protected]>
Co-authored-by: Stephen C. Wills <[email protected]>
2023-01-22 07:20:10 +01:00
KPhoenix 8db521727d enum missile_id -> enum class MissileID
Changes `enum missile_id` to `enum class MissileID`
2023-01-18 17:17:25 +00:00
Anders Jenbo 0c5fd01067 Change missile_resistance into class DamageType 2023-01-12 11:03:07 +01:00
ephphatha 9da76e0003 Update CheckReflect to return applied damage
Instead of modifying the damage value by reference
2022-12-31 22:42:58 +01:00
KPhoenix a22389613d Remove No Monster Heal from Fire Arrows 2022-12-31 22:13:58 +01:00
Gleb Mazovetskiy 36c4a89f3e Clean up a few position types 2022-12-16 10:22:19 +01:00
Gleb Mazovetskiy 6654a26345 IsPlayerMinion: Faster check
Debug profile cost: 2.5% -> 1.5%

This should be as robust as the other check. If not, we have a bug
elsewhere.
2022-12-16 10:22:19 +01:00
Gleb Mazovetskiy 3910c2e56a UpdateEnemy: Swap the M_Talker check
The `otherMonster.talkMsg != TEXT_NONE` check is a lot cheaper and is
almost always false.

This eliminates the M_Talker cost from the debug profile.
2022-12-16 10:22:19 +01:00
Gleb Mazovetskiy 9a1587060d Use real CalculateSoundPosition with NOSOUND
Fixes big-endian tests, which currently build with `-DNOSOUND`
to reduce build time.
2022-12-09 11:09:05 +00: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
KPhoenix e7ffa882e6 Minor cleanup for MonsterAttackPlayer() (#5444) 2022-11-23 03:26:42 +01:00
obligaron 0aa3831e32 Multiplayer: Enable Ogden's Sign Quest 2022-11-22 15:29:04 +01:00
obligaron d2d96f988c Make TalktoMonster multiplayer compatible 2022-11-22 15:29:04 +01:00
obligaron f8705c51a2 Make skeleton king's lair multiplayer compatible 2022-11-14 06:58:56 +01:00
obligaron 5fe20e3d32 Make Lazarus quest map multiplayer compatible 2022-11-11 03:27:37 +01:00
obligaron 5f63060c28 Add FindUniqueMonster 2022-11-11 03:27:37 +01:00
Gleb Mazovetskiy 6dca019de2 Use function_ref instead of function
`function_ref` is a lightweight function pointer,
whereas `std::function` always involves a heap allocation.
2022-11-02 11:46:15 +00: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
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
Gleb Mazovetskiy d1e9f51c68 monster.{h,cpp}: Minor refactor
1. Extract some common code into functions.
2. Avoid some overly long lines.
2022-10-03 06:46:16 +02:00
Mikołaj Piróg 4cff046ba9 Replace toHitSpecial member with a function & fix wrong arguments being passed (#5337) 2022-09-18 17:26:23 +02:00
Mikołaj Piróg 5e340d3261 Replace level member with a member function in monster (#5336) 2022-09-17 11:39:44 +02:00
qndel 21f67eaadd use array size instead of sizeof math 2022-09-13 19:59:29 +02:00
qndel f132d4a13a fix golem detection (#5342) 2022-09-13 18:45:52 +02:00
obligaron a2ec22667f Use AnimationInfo::isLastFrame in more places 2022-09-04 18:00:16 +02:00
zaid-ismail031 b0c9a8024e Refactor missiles.cpp to use Direction enum instead of magic Point/Displacement constants. 2022-08-30 21:25:44 +02:00
Mikołaj Piróg 32b3333bfb Exp overflow fix (#5070) 2022-08-28 17:35:58 +02:00
Anders Jenbo f8dca40427 Merge branch 'master' of https://github.com/diasurgical/devilution 2022-08-27 02:41:28 +02:00
Gleb Mazovetskiy 188dc79f6e Make Players a vector 2022-08-26 13:22:04 +09: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
qndel aa65d27e5c break hidden invis on death 2022-08-18 20:33:14 +02:00
qndel 2c6bd410c2 increase pDiabloKillLevel variable in singleplayer on diablo kill 2022-08-08 20:14:19 +02:00
qndel ef5a4de227 typos + code cleanup 2022-08-07 20:28:43 +02:00
staphen f9e01f25c4 Consistently send network messages when monsters are damaged 2022-08-07 03:34:57 +02:00