1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-30 21:32:42 +00:00

265 Commits

Author SHA1 Message Date
Evil Eye
bdc6119b31 Bring attack voice lines in line with research
Only play them when starting combat when not in combat or not in combat
with one of the target's allies.
Don't play them when casting spells whose first effect isn't ranged.
2024-01-25 19:36:41 +01:00
elsid
903299ce50
Avoid recomputing navigator flags when getting area costs 2024-01-06 02:39:42 +01:00
Evil Eye
e63933efa6 Use NAM9 for stack count 2023-12-31 17:12:46 +00:00
Alexei Kotov
ee5ca066fd Allow talking with fleeing creatures (bug #7631) 2023-10-22 16:18:52 +03:00
Alexei Kotov
440851ff48 Rewrite melee hit target selection (bug #3438) 2023-09-19 22:31:45 +03:00
elsid
5abbc56bf2
Use proper cell size for ESM4 cells in CoordinateConverter 2023-08-13 02:24:22 +02:00
elsid
b4868c6094
Filter evade directions by supported animations
To avoid trying those which will not lead to any actor movement due to absent
animation.
2023-07-22 17:30:40 +02:00
Elias Howell
bf8fafa79a fixed some typos and spelling errors 2023-05-09 20:07:08 -04:00
Petr Mikheev
f1beaa7b8c Put ESMStore to Environment 2023-04-20 21:45:49 +02:00
Evil Eye
584f112a7b Decouple PathgridGraph generation from cell 2023-04-10 15:45:58 +02:00
florent.teppe
084207af64 Avoids a lot a special cases for ESM3 vs ESM4 cells. 2023-02-04 23:25:06 +01:00
florent.teppe
531e55e04c Better handling of the esm3 vs esm4 cell problem
Common attribute are in one structure that has two constructors, one for ESM3 vs ESM4 Cell
Mood part of MWWorld::Cell
2023-01-27 13:39:39 +01:00
florent.teppe
0018bcf7de Should make cellvariant safer to use.
Hopefully clang tidy agrees.
2023-01-26 22:37:32 +01:00
florent.teppe
562e129bd0 encapsulations of esm3 cell and esm4 cells. 2023-01-26 22:37:31 +01:00
Evil Eye
358fa98bd3 End combat when the target is outside the active grid 2023-01-15 17:08:57 +01:00
fteppe
125b21de20 Initial commit: In ESM structures, replace the string members that are RefIds to other records, to a new strong type
The strong type is actually just a string underneath, but this will help in the future to have a distinction so it's easier to search and replace when we use an integer ID

Slowly going through all the changes to make, still hundreds of errors

a lot of functions/structures use std::string or stringview to designate an ID. So it takes time

Continues slowly replacing ids. There are technically more and more compilation errors

I have good hope that there is a point where the amount of errors will dramatically go down as all the main functions use the ESM::RefId type

Continue moving forward, changes to the stores

slowly moving along

Starting to see the fruit of those changes.

still many many error, but more and more Irun into a situation where a function is sandwiched between two functions that use the RefId type.

More replacements. Things are starting to get easier

I can see more and more often the issue is that the function is awaiting a RefId, but is given a string
there is less need to go down functions and to fix a long list of them.

Still moving forward, and for the first time error count is going down!

Good pace, not sure about topics though, mId and mName are actually the same thing and are used interchangeably

Cells are back to using string for the name, haven't fixed everything yet. Many other changes

Under the bar of 400 compilation errors.

more good progress <100 compile errors!

More progress

Game settings store can use string for find, it was a bit absurd how every use of it required to create refId from string

some more progress on other fronts

Mostly game settings clean

one error opened a lot of other errors. Down to 18, but more will prbably appear

only link errors left??

Fixed link errors

OpenMW compiles, and launches, with some issues, but still!
2022-12-27 19:15:54 +01:00
Petr Mikheev
313df72be0 Remove raycasting functions from MWWorld::World 2022-11-13 15:35:26 +01:00
clang-format-bot
ddb0522bbf
Apply clang-format to code base 2022-09-22 21:35:26 +03:00
elsid
a66c095ec3
Cleanup openmw class and mechanics includes 2022-08-19 15:46:39 +02:00
Alexei Kotov
ff5a042f5b Remove cooldown for ranged back up (bug #5129) 2022-08-15 03:51:16 +03:00
Alexei Kotov
3e34d5e9f2 Rewrite attack animation logic (bug #4127) 2022-08-11 15:55:26 +03:00
Evil Eye
55134d1e31 Use string_view in the CharacterController 2022-07-26 17:23:00 +02:00
elsid
1a12c453d6
Support different agent collision shape type for pathfinding
Actors may have different collision shapes. Currently there are axis-aligned
bounding boxes and rotating bounding boxes. With AABB it's required to use
bounding cylinder for navmesh agent to avoid providing paths where actor can't
pass. But for rotating bounding boxes cylinder with diameter equal to the front
face width should be used to not reduce of available paths. For example rats
have rotating bounding box as collision shape because of the difference between
front and side faces width.

* Add agent bounds to navmesh tile db cache key. This is required to distinguish
  tiles for agents with different bounds.
* Increase navmesh version because navmesh tile db cache key and data has changed.
* Move navmesh version to the code to avoid misconfiguration by users.
* Fix all places where wrong half extents were used for pathfinding.
2022-06-21 12:57:32 +02:00
Alexei Kotov
97d4206a3d Improve CharacterController const-correctness
C++ Core Guidelines Con. 2
2022-06-11 02:08:43 +03:00
Evil Eye
3c83117e99 Replace new with make_unique in openmw 2022-05-29 13:24:48 +02:00
Matt
56a1505885 Cache the target for ai packages instead of looking for it every frame 2022-04-17 17:15:00 +00:00
elsid
ec3674b40a
Use unique_ptr instead of shared_ptr
for MWWorld::Action, ProjectileManager and ESSImport::Converter.

shared_ptr has additional cost of reference counter and requires additional
allocation when constructed as shared_ptr<T>(new T).
2022-04-08 16:12:36 +02:00
ζeh Matt
08fae7be6e
Pass the prng from world where appropriate 2022-03-21 17:49:42 +02:00
psi29a
ceae2d664d Merge branch 'refactor/stdlist' into 'master'
Use std::vector instead of std::list for some functions

See merge request OpenMW/openmw!1699
2022-02-28 07:40:21 +00:00
ζeh Matt
eca405e5c7
Use std::vector instead of std::list 2022-02-25 04:02:21 +02:00
elsid
595c2e0a8e
Use unique_ptr to manage AiPackage lifetime 2022-02-23 00:39:30 +01:00
uramer
c31dedb89c Implement Yaw, Pitch and Use (attack / cast spell) in Lua self.controls 2022-02-01 18:47:20 +00:00
Bret Curtis
d1fb854521 move most of the files from esm to esm3, keep common code in esm; this is make space for a future with esm4
esm typo

esm typo
2022-01-23 17:04:48 +01:00
Alexei Kotov
0c11175da1 Merge branch 'combat_aiming' into 'master'
Finish turning before attacking

Closes #3488

See merge request OpenMW/openmw!1358
2021-11-07 11:25:05 +00:00
Langerz82
303082f6b4 Finish turning before attacking 2021-11-06 17:44:29 +01:00
elsid
9f808fbe3a
Move findPath-like navigator functions into a separate header 2021-11-06 00:34:06 +01:00
elsid
d36595e09e
Make sure PathFinder::getClosestPoint is not called with failing precondition
Pathgrid should be not nullptr and points should be not empty.
2021-09-23 01:48:54 +02:00
elsid
fea4fb6e69
Make AiPursue path destination to be as close as possible to target
Even when target is not reachable actor will try to run there either because
target navmesh polygon is selected within extended area or because partial path
is built to the closest possible polygon.
2021-08-18 23:44:36 +02:00
Alexei Dobrohotov
e3bb45fd61 Merge branch 'minor_aicombat' into 'master'
Minor optimization in aicombat.cpp

See merge request OpenMW/openmw!737

(cherry picked from commit f1d19035cccfff2523faad0d4e4d96cd3ddae2e6)

bbbfc520 Minor optimization in aicombat.cpp
237b34a6 Fix style
a14911cb Fix indentation
2021-04-26 07:10:41 +00:00
Andrei Kortunov
0cadc97fb3 Fix double -> float conversions 2021-04-19 15:36:58 +04:00
Andrei Kortunov
f308dde254 Clean up MSVC warnings 2021-04-17 12:14:50 +04:00
Andrei Kortunov
59720aea9a Restore old aiming for melee combat 2021-04-07 12:07:03 +04:00
elsid
675c0ab72f
Apply uniform random deviation to AI reaction timer
This allows to distribute AI reaction calls over time.

Before this change actors appearing at the same frame will react in the same
frame over and over because AI reaction period is constant. It creates a
non-uniform CPU usage over frames. If a single frame has too many AI reactions
it may cause stuttering when there are too many actors on a scene for current
system.

Another concern is a synchronization of actions between creatures and NPC.
They start to go or hit at the same frame that is unnatural.
2021-03-20 14:47:54 +01:00
elsid
8dba61f7ae
Use navmesh raycast to find reachable position around target 2021-02-14 04:14:22 +01:00
elsid
becccf3b5e
Make actor flee from a combat when cannot reach a target 2021-02-12 22:58:53 +01:00
Petr Mikheev
15078f5b3c Fix #5630 "NPCs momentarily turn when the player character is moving backwards during combat" 2020-10-10 23:06:43 +02:00
Petr Mikheev
79a72e4b44 Slightly modify aicombat to make it more difficult to get around an enemy. The difference is visible only if turning is slow (i.e. if smooth movement enabled). 2020-09-22 22:50:44 +02:00
elsid
b7c1c52439
Adjust actor rotation when flee by axis x
Otherwise Cliff Racers can go underwater.
2020-07-13 20:08:37 +02:00
elsid
c4cd3b2c4f
Add pathgrid to navmesh as off mesh connection 2020-06-12 21:04:02 +02:00
elsid
5b34ef224b
Replace AiPackage virtual methods by options 2020-06-06 12:00:17 +02:00