1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-16 12:49:56 +00:00
Commit graph

3002 commits

Author SHA1 Message Date
Capostrophic
54bd7b2dcf Implement getItemNormalizedHealth() method and use it 2018-10-25 15:45:31 +03:00
Capostrophic
67de61e1fb Avoid item condition and charge zero divisions 2018-10-24 19:06:55 +03:00
Andrei Kortunov
d7d9050d4a Force actor to the 'weapon equipped' state if the weapon disappeared in the middle of attack (bug #4646) 2018-10-18 11:42:03 +04:00
Bret Curtis
e406c5ff81
Merge pull request #1946 from akortunov/backupfix
Combat AI: check for obstacle before back up
2018-10-16 21:47:21 +02:00
David Cernat
bfd7c83c4d [Client] Fix backwards logic when setting type for AI attacks 2018-10-16 21:18:41 +03:00
elsid
03d4ce5e49
Log find path exception with level verbose, add more info to message 2018-10-15 23:25:42 +03:00
Capostrophic
6ef7be3fd3 Re-enable using soundgen land for creatures 2018-10-14 20:18:17 +03:00
Andrei Kortunov
ca07e3a364 Check for obstacle before back up (bug #4656) 2018-10-14 12:22:43 +04:00
elsid
e57504ae7c
Lower log level 2018-10-13 22:22:15 +03:00
elsid
7c5bedc35a
Reset shorcutting if actor can't move by z-axis on reaction time
If actor was shortcutting because it was swimming, then when it started
walking it still be shortcutting, but there will be no new path, because
shortcut path builds only for actor able moving by z-axis and pathfinder
path only for not shortcutting actor.
2018-10-13 22:16:34 +03:00
elsid
92b34e8bb4
Check whether can actor move along z-axis in separate function 2018-10-13 22:16:34 +03:00
elsid
bbd82a743a
Use different tolerance for path point and destination 2018-10-13 22:16:34 +03:00
elsid
ab090108cb
Assign world to local variable once per function 2018-10-13 22:16:34 +03:00
elsid
27a74725f1
Use osg::Vec3f 2018-10-13 22:16:34 +03:00
elsid
346e9e3141
Add off mesh connections for doors without teleport 2018-10-13 22:16:33 +03:00
elsid
661da42bd2
Build path by navigator 2018-10-13 22:16:33 +03:00
elsid
d02beae5a8
Find path for actors according to their abilities to swim and walk 2018-10-13 22:16:33 +03:00
elsid
dc09674362
Add command and settings option to enable actors paths render 2018-10-13 22:16:32 +03:00
elsid
fafba8ea0c
Use recastnavigation to find path 2018-10-13 22:16:25 +03:00
elsid
4fe764c3a5
Update and check for complete Pathfinder path by different methods 2018-10-13 22:16:24 +03:00
elsid
b6dd2119a6
Make Pathfinder constructor inline 2018-10-13 22:16:24 +03:00
elsid
92f52287bf
Make PathFinder::ClearPath inline 2018-10-13 22:16:24 +03:00
elsid
3655f19373
Set PathFinder::mCell to nullptr when clear path 2018-10-13 22:16:23 +03:00
elsid
85bbf9d034
Clear path without check for empty 2018-10-13 22:16:23 +03:00
elsid
ca3d0594b3
Do not store pointer to Pathgrid in PathFinder 2018-10-13 22:16:23 +03:00
elsid
3565d92e11
Make PathFinder::getPathCell inline 2018-10-13 22:16:23 +03:00
elsid
2ad3543088
Fix constant style 2018-10-13 22:16:23 +03:00
elsid
f9c651bdf3
Add const 2018-10-13 22:16:23 +03:00
elsid
2c464bd682
Evade obstacles after set rotation 2018-10-13 22:16:22 +03:00
elsid
eb10add0c4
Remove unused parameters 2018-10-13 22:16:22 +03:00
elsid
66e5a4d591
Remove useless variable 2018-10-13 22:16:22 +03:00
elsid
1a95b7a154
Remove duplicate zTurn call 2018-10-13 22:16:22 +03:00
elsid
d0bc1b75e8
Remove unused parameters 2018-10-13 22:16:22 +03:00
elsid
63b3a70ca8
Remove useless else 2018-10-13 22:16:22 +03:00
elsid
c9f3064cbd
Update ObstacleCheck once per frame 2018-10-13 22:16:22 +03:00
elsid
ad027d13fa
Remove unused 2018-10-13 22:16:21 +03:00
elsid
6d89241178
Check is path completed by osg::Vec3f position 2018-10-13 22:16:21 +03:00
elsid
2c6daa74a9
Simplify PathFinder::checkPathCompleted 2018-10-13 22:16:21 +03:00
elsid
6411c1955d
Fix indent 2018-10-13 22:16:21 +03:00
elsid
d3667945c5
Remove unused functions 2018-10-13 22:16:21 +03:00
elsid
31340a212a
Fix functions name style 2018-10-13 22:16:21 +03:00
elsid
2f424f6be2
Store aStarSearch result to deque 2018-10-13 22:16:20 +03:00
elsid
9b3756f8bc
Store path points in deque 2018-10-13 22:16:20 +03:00
elsid
925d909fea
Use rbegin 2018-10-13 22:16:20 +03:00
elsid
fbaa525c6f
Fix warning 2018-10-13 22:16:20 +03:00
elsid
4d868bec92
Use osg::Vec3f to store path nodes in Pathfinder 2018-10-13 22:16:20 +03:00
elsid
33dfe284bd
Mark local variables const which one does not change 2018-10-13 22:16:20 +03:00
elsid
0cfdf0c7b6
Remove unused virtual 2018-10-13 22:16:20 +03:00
Marc Zinnschlag
2d87d1d9d2 Merged pull request #1959 2018-10-10 15:05:29 +02:00
Marc Zinnschlag
38a3632be7 Merged pull request #1960 2018-10-10 14:56:51 +02:00
Andrei Kortunov
5617bb3f0c Improve pitch factor handling for crossbow animations (bug #4672) 2018-10-09 11:35:28 +04:00
Andrei Kortunov
e06f0b797a Replace all NULLs to nullptr 2018-10-09 10:21:12 +04:00
Capostrophic
09aecb955c getSkill usage cleanup (bug #4671) 2018-10-08 17:06:30 +03:00
Bret Curtis
585313a71f
Merge pull request #1953 from Capostrophic/animation
Fix first person swimming animations
2018-10-06 14:24:48 +02:00
Capostrophic
34e45efac3 Fix first person swimming animations 2018-10-05 17:29:49 +03:00
Marc Zinnschlag
b410d87aae Merged pull request #1952 2018-10-03 13:19:28 +02:00
Andrei Kortunov
07ccc5abdb Remove non-looping effects after rest 2018-10-01 21:57:13 +04:00
Marc Zinnschlag
33044add97 Merged pull request #1938 2018-09-28 11:31:45 +02:00
Marc Zinnschlag
5fa9b32e76 Merged pull request #1937 2018-09-27 11:06:21 +02:00
Capostrophic
ba2fd8b795 Rename reflected absorb spells setting and add it to Advanced tab 2018-09-26 21:21:03 +03:00
Andrei Kortunov
8af021d729 Restore dynamic stats for actors in inactive cells (bug #1875) 2018-09-26 07:46:28 +04:00
Capostrophic
d2cad229f8 Ugly hack: don't reset player idle and movement animations in first person view 2018-09-25 17:09:54 +03:00
Capostrophic
77fb4d6dd2 Make sure the idle animations are reset while jumping 2018-09-24 19:30:02 +03:00
Capostrophic
56ef11b023 Reset sneak and swim idle animations when moving 2018-09-24 19:30:02 +03:00
Capostrophic
713330351b Experimental animation regression fixes
Don't unnecessarily start movement and jump animations from loop start
Don't play movement animation until jumping animation finishes
2018-09-24 19:30:02 +03:00
Marc Zinnschlag
6ce6108eb4 Merged pull request #1932 2018-09-24 11:57:08 +02:00
David Cernat
995d20348f [General] Always use correct ranged weapon & ammo for ranged attack sync
Previously, the player's currently selected weapon was being used in ranged attacks as in the original melee-oriented attack sync, which meant that shooting one type of projectile and then equipping another while the old projectile was still in the air turned the old projectile into the new projectile upon impact.

Additionally, avoid running most of the code in MechanicsHelper::assignAttackTarget() for non-hitting melee and ranged attacks.
2018-09-23 02:30:31 +03:00
Andrei Kortunov
cd60d4fdf0 Store character controller in the variable make code less bulk 2018-09-22 21:13:00 +04:00
Andrei Kortunov
2ac2d01432 Optimize drowning state update 2018-09-22 21:12:56 +04:00
Andrei Kortunov
90d35aaa8f Handle current health level during levelup (bug #4649) 2018-09-22 07:48:47 +04:00
Andrei Kortunov
1634284739 Cache player's position outside of loops 2018-09-21 22:39:47 +04:00
Andrei Kortunov
b9346798c6 Optimize combat music update 2018-09-21 22:34:18 +04:00
Andrei Kortunov
fb484c6fde Optimize AI loop a bit 2018-09-21 19:02:28 +04:00
Marc Zinnschlag
7be9f2ca45 Merged pull request #1891 2018-09-21 11:38:19 +02:00
Andrei Kortunov
bdd9eba2b8 Use C++ limits instead of C ones 2018-09-20 16:02:26 +04:00
Andrei Kortunov
276b7830a9 Mass potion creation (feature #4642) 2018-09-20 15:45:14 +04:00
Marc Zinnschlag
3761aaadfd Merged pull request #1928 2018-09-20 13:31:56 +02:00
Marc Zinnschlag
29bc5cbecf Merged pull request #1925 2018-09-20 13:14:55 +02:00
Andrei Kortunov
6f4f6a155f Combat AI: take ranged weapon speed in account 2018-09-19 12:23:24 +04:00
David Cernat
b5f46ada73 [General] Synchronize projectile speed for ranged attacks
This is done by including the final attackStrength used for ranged attacks in packets and then applying it in WeaponAnimation::releaseArrow() on other clients.
2018-09-18 01:13:48 +03:00
Andrei Kortunov
70ed8fd1a9 Use constants instead of widely used magic numbers (task #4645) 2018-09-17 19:22:50 +04:00
Bret Curtis
07be9ae8ac
Merge pull request #1926 from akortunov/warnfix
Fix MSVC warning about possibly uninitialized movestate variable
2018-09-17 17:10:25 +02:00
Andrei Kortunov
9c8fc0557a Fix MSVC warning about possibly uninitialized movestate variable 2018-09-17 14:45:16 +04:00
David Cernat
7281f9fc42 [Client] Prevent unilateral paralysis of dedicated players & actors
This is a temporary workaround until active effect synchronization is implemented.
2018-09-16 15:34:57 +03:00
Andrei Kortunov
ae1c054635 Make GetPCJumping return true only when jumping (bug #4641) 2018-09-16 11:58:01 +04:00
David Cernat
9d2dc96a2e [Client] Use RANGED type for ranged attacks that haven't hit a target 2018-09-14 13:23:43 +03:00
Marc Zinnschlag
ea053d9f47 Merged pull request #1881 2018-09-14 11:43:11 +02:00
Marc Zinnschlag
6100e34051 Merged pull request #1912 2018-09-12 12:04:49 +02:00
Andrei Kortunov
0136f0552b Do not update mIdleState directly 2018-09-11 22:24:44 +04:00
Andrei Kortunov
929d78d6a3 Randomize attacks for non-bipedal creatures with Weapon flag 2018-09-11 22:24:44 +04:00
Andrei Kortunov
0440c11ccd Fix swim crossbow animations 2018-09-11 22:24:44 +04:00
David Cernat
fcd31bf4a6 [General] Fix problems with the synchronization of ranged attacks
Projectile hits now send Attack packets with RANGED attacks, and their success or failure is now synchronized.

Strike enchantments no longer require a valid victim to be synchronized.

Additional debug messages have been added for attacks.
2018-09-11 11:56:45 +03:00
Andrei Kortunov
e5a81b1f99 Fix some issues, found by Coverity Scan 2018-09-10 16:35:27 +04:00
David Cernat
7d221509cd [Client] Move item magic hook to correct location
Previously, synchronization for strike enchantments was partially broken because it triggered the sending of ITEM_MAGIC attack packets, which are only supposed to be sent when a spell is cast from a magical inventory item.
2018-09-10 12:02:21 +03:00
David Cernat
c9ad411dd3 [Client] Fix logic for setting applyProjectileEnchantment in attack sync 2018-09-09 22:33:48 +03:00
Evil Eye
6705e5aae4 forget about the setting till #2887 is implemented at least 2018-09-08 11:21:43 +02:00
Evil Eye
bbcdfd4078 Implements vanilla's off-by-one error, fixing #4611 2018-09-06 21:49:50 +02:00
Capostrophic
9408876b58 Utilize AI GMSTs for priority rating (feature #4632)
Fix on-target effect rating calculation
2018-09-06 17:39:37 +03:00
Capostrophic
d758b573e2 Fix erroneous assumption that ranged weaponry has speed
Restrict speed mult to melee weaponry
2018-09-01 12:13:18 +03:00
Capostrophic
ceb6121b33 Better checks for enemy incapacitation 2018-09-01 12:13:18 +03:00
Capostrophic
2965373ed6 Avoid potential zero division 2018-09-01 12:13:18 +03:00
Capostrophic
e66be02e2e Account for enemy armor rating in weapon rating 2018-09-01 12:13:18 +03:00
Capostrophic
fa3e45fa7d Slight cleanup 2018-09-01 12:13:18 +03:00
Capostrophic
533b72eff6 Cache weapon type strings 2018-09-01 12:13:18 +03:00
Capostrophic
00c847db19 Make AI Blind, Sound and Silence effect rating more logical 2018-09-01 12:13:18 +03:00
Capostrophic
374e98d665 Make rateWeapon more sensible and account for weapon speed 2018-09-01 12:13:18 +03:00
Marc Zinnschlag
78a84042ad Merged pull request #1901 2018-09-01 11:08:24 +02:00
Marc Zinnschlag
3b01355f27 Merged pull request #1895 2018-09-01 11:06:38 +02:00
Marc Zinnschlag
f2981a81c9 Merged pull request #1900 2018-09-01 11:06:10 +02:00
Capostrophic
7ef6fa9f61 Remove deprecated GMST get* functions 2018-08-29 18:38:12 +03:00
Andrei Kortunov
5d54214acb Optimize combat action iteration 2018-08-29 17:20:34 +04:00
Andrei Kortunov
2cac8b59b1 Use square distance to target 2018-08-29 17:20:32 +04:00
Andrei Kortunov
4c0ef4ddb6 Do not initialize magic schools map every time we access it 2018-08-29 17:20:32 +04:00
Capostrophic
23834b5ed8 Don't apply falling damage twice (bug #4608) 2018-08-29 15:09:03 +03:00
Capostrophic
b8ba9092cb Purge effects from all permanent spells with the same ID 2018-08-29 14:09:43 +03:00
Capostrophic
ed1f8f7be7 Remove effects from all active spells with the same ID 2018-08-29 13:52:03 +03:00
Capostrophic
6c47f95677 Make RemoveSpellEffects affect permanent spells (bug #3920)
Also make it remove the effects but not the spells themselves
2018-08-29 13:52:03 +03:00
Marc Zinnschlag
c280a71b33 Merged pull request #1897 2018-08-29 12:15:05 +02:00
Marc Zinnschlag
57922a272c Merged pull request #1899 2018-08-29 12:13:28 +02:00
Marc Zinnschlag
6fc6fef72e Merged pull request #1892 2018-08-29 12:08:13 +02:00
Capostrophic
7f459f0610 Knockdown and godmode fixes
Make sure an incapacitated player is not able to jump
Cleanup of redundant player and godmode checks in creature class
Make sure the player is not knocked down while in godmode
2018-08-28 16:42:15 +03:00
Capostrophic
079b60c1ea Don't allow actors to use sneaking while flying (bug #4618) 2018-08-28 14:32:03 +03:00
David Cernat
3bd8aa82fe [General] Reduce inventory-sending hooks to just 2 in ContainerStore
Whenever an item is added to or removed from the player's ContainerStore, that player sends a PlayerInventory packet with just that addition or removal.

This eliminates all the unnecessary packet spam related to oversized PlayerInventory packets that had existed in one form or another since the initial implementation of inventory sync in 1b259e2d33

Additionally, move booleans from BasePlayer to LocalPlayer when they are only needed on the client, and make the usage of the isReceivingQuickKeys boolean consistent with the new isReceivingInventory boolean by having them both in the processors of their associated packets.
2018-08-28 05:01:52 +03:00
Andrei Kortunov
d448b802ef Add a small threshold for player turning animations 2018-08-26 22:58:26 +04:00
Andrei Kortunov
60698e6f8a Optimize new magic effects update system 2018-08-26 21:02:14 +04:00
Bret Curtis
78d9787212
Merge pull request #1880 from Capostrophic/landing
Play landing sound manually and ignore land soundgen textkeys (bug #2256)
2018-08-23 08:40:55 +02:00
Capostrophic
f74ebb64af Correct special case soundgen comparisons 2018-08-22 16:36:15 +03:00
Capostrophic
ae0a6a22b3 Move "land" check earlier 2018-08-22 14:47:06 +03:00
Capostrophic
2b45fd84ea Play landing sound manually and ignore land soundgen textkeys (bug #2256) 2018-08-21 19:03:03 +03:00
Capostrophic
910065f38f Make some more optimizations to actor processing loops 2018-08-21 17:02:56 +03:00
Capostrophic
b77d733c3e Fix freeze in getActorsSidingWith 2018-08-21 16:47:29 +03:00
David Cernat
03832f933b [Client] Send only individual items in PlayerInventory packets
For a long time, whenever a PlayerInventory packet was sent, it contained all the items in the player's inventory, because that's how Koncord originally implemented it and I always had too many other priorities to go back and rework it.

From now on, clients only send PlayerInventory packet with the one item added or removed, with the single exception being trading with merchants, where the entire inventory is still sent for the time being.
2018-08-21 10:10:06 +03:00
Capostrophic
74229490e4 Use the correct skill for creature AI weapon hit chance rating 2018-08-20 21:38:57 +03:00
David Cernat
a083439139 Merge pull request #469 from davidcernat/master while resolving conflicts
# Conflicts:
#	apps/openmw/main.cpp
#	apps/openmw/mwbase/world.hpp
#	apps/openmw/mwdialogue/dialoguemanagerimp.cpp
#	apps/openmw/mwmechanics/actors.cpp
#	apps/openmw/mwscript/dialogueextensions.cpp
#	apps/openmw/mwworld/worldimp.hpp
2018-08-20 14:08:44 +03:00
Bret Curtis
3c827da702
Merge branch 'master' into combat_anims 2018-08-19 10:03:39 +02:00
Bret Curtis
3b2781bf89
Merge pull request #1720 from akortunov/playvfx
Rework spell VFX management
2018-08-19 10:00:38 +02:00
Marc Zinnschlag
20c53594de Merged merge request !36 2018-08-18 12:06:35 +02:00
James Carty
4489838ea3 Fix incorrect function call 2018-08-17 22:35:04 +01:00
James Carty
513e99148e Fix function with no return value 2018-08-17 20:18:20 +01:00
Andrei Kortunov
d7ca087f59 AiCast: fix aiming 2018-08-17 12:41:13 +04:00
Andrei Kortunov
31f8bea1dd Rework spell effects management 2018-08-17 12:41:13 +04:00
Marc Zinnschlag
3489951410 Merged pull request #1866 2018-08-17 09:36:44 +02:00
James Carty
43f1c9163c Fix issue in which murder wouldn't be reported after paying fine 2018-08-16 18:58:51 +01:00
Andrei Kortunov
16edac8c47 Fix incorrect 'preparing' word spelling 2018-08-16 17:47:06 +04:00
Andrei Kortunov
a73d42e711 Do not stop idle animation in spellcasting stance 2018-08-16 16:56:42 +04:00
Andrei Kortunov
b7a448cf42 Update idle animations after reset of mIdleState (bug #4531) 2018-08-16 16:56:42 +04:00
Andrei Kortunov
3a6c480d41 Do not reset idle animations when turning 2018-08-16 16:56:42 +04:00
Andrei Kortunov
15fa47827b AiCombat: Avoid jittering when aiming in melee 2018-08-16 16:56:42 +04:00
Andrei Kortunov
e444b9581c Do not play min attack -> max attack animation when attack strength is 0 (bug #4591) 2018-08-16 16:56:39 +04:00
Andrei Kortunov
8a48258b1b Fix attack after shoot 2018-08-16 15:51:11 +04:00
Bret Curtis
dcd381049c
Merge pull request #1872 from akortunov/extended_logging
Use new logging system
2018-08-16 11:38:29 +02:00
James Carty
4b0a6074e7 Add comment 2018-08-16 00:29:14 +01:00
James Carty
6889432030 Move code to seperate functions for reusability 2018-08-16 00:26:02 +01:00
Andrei Kortunov
5a4d0cec3a Use new logging system for game itself 2018-08-14 23:05:43 +04:00
Yohaulticetl
7e9ce99062 Made the werewolf check optional 2018-08-14 19:56:40 +02:00
Yohaulticetl
18e51e0e98 Added check for werewolves 2018-08-14 19:44:03 +02:00
Yohaulticetl
d19cbdb652 Factored strength into hand-to-hand combat 2018-08-14 19:44:03 +02:00
Capostrophic
22162dcbda
Replace std::find with std::set::find where applicable 2018-08-14 18:14:43 +03:00
Capostrophic
53599290c3 Make search for followers in getEnemiesNearby recursive 2018-08-14 16:14:48 +03:00
Capostrophic
75bd6e1d28 Make search for allies in actorAttacked recursive 2018-08-14 15:41:34 +03:00
Capostrophic
7029ed0e8d Refactor follower and enemy actor processing
Make another exception for wander packages when finding allies (bug #4304)
2018-08-14 15:36:52 +03:00
Bret Curtis
d25147a930
Merge pull request #1863 from Capostrophic/aiming
Use the correct spell projectile speed GMST in AI aiming (bug #3948)
2018-08-14 10:29:22 +02:00
Bret Curtis
6a32a4aed0
Merge pull request #1810 from akortunov/weaponfix
Use fallbacks for missing weapon animations
2018-08-14 10:29:01 +02:00
Allofich
fd89fa415a Do modifiers for dynamic stats before attributes
(Fixes #4231)
2018-08-13 21:59:27 +09:00
Allofich
2cc1b52baf Drain and fortify fixes for dynamicStats
(Fixes #3049)
2018-08-13 21:59:26 +09:00
Andrei Kortunov
8de3383612 Add zero-duration spells effects to effect list (bug #3533) 2018-08-12 17:25:35 +04:00
Andrei Kortunov
307e0103dc Use fallbacks for missing weapon animations (bug #4470) 2018-08-12 16:14:24 +04:00
David Cernat
a3b9274365 [Client] Make it possible to check if an item ID belongs to a bound item 2018-08-11 16:02:09 +03:00
Capostrophic
3527f3800e Use the correct spell projectile speed GMST in AI aiming 2018-08-10 21:21:21 +03:00
Marc Zinnschlag
1cfc1f9bdb Merged pull request #1666 2018-08-10 12:23:17 +02:00
Marc Zinnschlag
0aedb3aada Merged puil request #1808 2018-08-10 12:22:13 +02:00
Andrei Kortunov
cde95979d0 Fix combat engagement for creatures 2018-08-10 09:29:01 +04:00
Andrei Kortunov
780648b584 Do not reset idle animations if we do not have ammo 2018-08-09 16:39:46 +04:00
Andrei Kortunov
df577babe9 Increase priority of 1st-person weapon animations to avoid issues with animation blending 2018-08-09 16:39:20 +04:00
Andrei Kortunov
71bcc11ba5 Apply only crossbow reload animation to upper body 2018-08-09 16:37:08 +04:00
Andrei Kortunov
a0d0e5d2db Give jumping animations higher priority than movement ones 2018-08-09 16:19:03 +04:00
Andrei Kortunov
6a03aa6fdb Reduce jittering during turning animations for player 2018-08-09 16:19:00 +04:00
Andrei Kortunov
126b2fdd42 Use the isPlayer variable to do not check if the current actor is player every time 2018-08-09 11:16:19 +04:00
Andrei Kortunov
51af729305 Do not use headtracking in the 1st-person view (bug #4573) 2018-08-08 23:29:03 +04:00
Capostrophic
d15dcaff68
Don't adjust weapon rating according to weapon condition twice 2018-08-03 19:22:58 +03:00
Capostrophic
4c7f3cf626
Merge branch 'master' into weaponpriority 2018-08-03 14:07:11 +03:00
Marc Zinnschlag
4d280add81 Merged pull request #1843 2018-08-03 12:56:17 +02:00
Andrei Kortunov
712c9995db Rename mIsScripted variable because its name is ambiguous 2018-08-03 12:01:31 +04:00
Capostrophic
9d85b7c2d3
Use the actual damage for deducting weapon rating 2018-08-02 15:20:07 +03:00
Capostrophic
73d5496711
Revert addition change 2018-08-02 13:01:23 +03:00
Capostrophic
80f3bd9f86 Don't apply iWereWolfFleeMod to creatures 2018-08-02 08:36:15 +03:00
Capostrophic
bec47dfb7c Make ranged weapon bonus a distance-dependent multiplier 2018-08-01 19:57:05 +03:00
Capostrophic
382b68a081
Combat AI: take the actual hit chance in account when rating weapon 2018-08-01 19:27:19 +03:00
Marc Zinnschlag
1c13256456 Merged pull request #1829 2018-08-01 16:17:37 +02:00
Marc Zinnschlag
0c507b74bc Merge pull request #1832 2018-08-01 16:13:59 +02:00
Capostrophic
be2e7e9e09 Make casting caster-linked on-self effects no-op (bug #4378) 2018-08-01 02:41:57 +03:00
Andrei Kortunov
5b92910829 Limit difficulty scaling, as mentioned in docs 2018-07-31 21:14:16 +04:00
Andrei Kortunov
c07cc0dc40 Reset animation state after weapon unequipping 2018-07-30 22:24:25 +04:00
David Cernat
b57807407a [General] Implement RecordDynamic packet, part 1
Spell, potion, enchantment, creature, NPC, armor, book, clothing, miscellaneous and weapon record data can now be sent in a RecordDynamic packet. Additionally, the packets include data related to associated magical effects (for spells, potions and enchantments), data related to default inventory contents (for creatures and NPCs) and data related to body parts affected (for armor and clothing).

The server now has associated script functions for setting most of the details of the above, with the main exception being individual creature and NPC stats.

Records can either be created entirely from scratch or can use an existing record (set via the baseId variable) as a starting point for their values. In the latter case, only the values that are specifically set override the starting values. Creature and NPC records also have an inventoryBaseId that can be used on top of the baseId to base their inventories on another existing record.

The client's RecordHelper class has been heavily expanded to allow for the above mentioned functionality.

When players create spells, potions and enchantments as part of regular gameplay, they send RecordDynamic packets that provide the server with the complete details of the records that should be created. When they create enchantments, they also provide the server with armor, book, clothing and weapon records corresponding to the items they've enchanted.

This functionality added by this packet was originally supposed to be exclusive to the rewrite, but I've gone ahead and tried to provide it for the pre-rewrite in a way that can mostly be reused for the rewrite.
2018-07-30 10:56:26 +03:00
Capostrophic
c79f96d0d2 Implement ranged crits (feature #3703) 2018-07-29 19:42:44 +03:00
Andrei Kortunov
1d463d129d Finish AiTarget package, if destination is blocked by other actor 2018-07-29 19:41:31 +04:00
Andrei Kortunov
75835c8326 Prevent NPC from chosing farther pathgrid node 2018-07-29 18:18:05 +04:00
Andrei Kortunov
6d5d0039ec Make sure we apply OT_Murder only once 2018-07-28 20:45:33 +04:00
David Cernat
d93b67ef21 [General] Sync soul refIds for items and add related script functions 2018-07-26 22:37:04 +03:00
David Cernat
36ac2d9de4 [Client] Set packetOrigin for all ObjectList packets sent 2018-07-23 01:39:43 +03:00
David Cernat
038757b91a [General] Temporarily revert to original rotation animation sync
I originally added rotation animation sync as part of commit 068a45be87. Unfortunately, it meant the PlayerPosition packets were now twice as large as they had been before, which was less than ideal for such a frequently sent packet, which is why Koncord switched to a more optimized approach in commits 5f30dfd5db and d67db1a9bd.

Recently, there have since been some rotation animation problems in OpenMW, which have broken the way Koncord's approach looks. My original approach still looks somewhat okay, so I'm switching back to it until we can figure out how to reuse it under the current circumstances.
2018-07-21 19:27:36 +03:00
David Cernat
20e0100706 [General] Rework Attack packets and add synchronization for item magic 2018-07-21 14:41:27 +03:00
David Cernat
21d5bb4d4e
Merge pull request #460 from OpenMW/master
Add 0.7.0 commits up to 20 Jul 2018
2018-07-21 05:59:57 +03:00
Marc Zinnschlag
78a2725169 Merged pull request #1806 2018-07-17 12:42:41 +02:00
Andrei Kortunov
38fa4e0a8a Do not play un-equipping animation when we switch to hand-to-hand 2018-07-17 14:10:04 +04:00
Andrei Kortunov
30716344f2 Fix possible division by zero in the fatigue calculation (bug #4510) 2018-07-16 13:24:12 +04:00
David Cernat
3649cf553f [General] Rename PlayerKillCount into WorldKillCount
This should clarify the real meaning of the packet and its associated event.

The event itself has been renamed from OnPlayerKillCount to OnWorldKillCount.
2018-07-15 05:34:59 +03:00
David Cernat
6ebe09375f [General] Implement ObjectActivate packet & associated script functions 2018-07-15 03:16:04 +03:00
David Cernat
6cb5ac6e63 Merge pull request #457 from OpenMW/master while resolving conflicts
Conflicts:
	CMakeLists.txt
	apps/openmw/engine.cpp
	apps/openmw/main.cpp
	apps/openmw/mwgui/windowmanagerimp.cpp
	apps/openmw/mwmechanics/character.cpp
	components/CMakeLists.txt
2018-07-14 03:57:05 +03:00
Andrei Kortunov
3d1daaebab Rework manual spellcasting (e.g. via scripts) 2018-07-12 16:24:25 +04:00
Capostrophic
5cb9dc9d12 Use SpellTurnLeft/TurnRight animation groups 2018-07-10 22:19:56 +03:00
Andrei Kortunov
1c35e20fcc Use 1h animations as fallback for crossbows 2018-07-10 17:02:51 +04:00
Andrei Kortunov
75dcbea365 Apply weapon reload animations only for upper body 2018-07-10 17:00:48 +04:00
David Cernat
c984fc0881 [Client] Allow AiActivate to be used with specific Ptrs, not just refIds 2018-07-10 08:21:24 +03:00
David Cernat
b86155dc11 [Client] Allow AiFollow package to have infinite distance when desired 2018-07-10 01:40:57 +03:00
David Cernat
5043fb4246 [Client] Disable clientside disarming of traps 2018-07-08 02:38:10 +03:00
David Cernat
f3892d697b [Client] Disable clientside locking and unlocking of objects 2018-07-08 00:06:01 +03:00
David Cernat
e3e1cfc549 [Client] Add forgotten comparison in crimeTime and deathTime check 2018-07-06 20:49:08 +03:00
David Cernat
4b30a44816 [Client] Compare crimeTime and deathTime when NPCs forgive player crimes
Previously, all crime witnesses stopped being hostile to a respawning player for as long as the player's diedSinceArrestAttempt was true. That meant that, in an area with no guards to arrest the player, crime witnesses did not enage in combat with the player at all ever again until diedSinceArrestAttempt became false.

This commit makes it so the time of the last crime is recorded for each witness, and that is then compared with the time of the LocalPlayer's last death for a one-time crime forgiveness during that player's current life.

This is essentially a gameplay adjustment for "singleplayer with respawns," and will have to be reworked to make sense for every player in multiplayer, though that requires reworking the crime system as a whole and is thus on hold.
2018-07-06 14:17:54 +03:00
Marc Zinnschlag
d9de8ccb5b Merged pull request #1781 2018-07-06 11:55:45 +02:00
Capostrophic
9abfabb065
Ensure forward-compatibility of death animations in old saves (fixes #4274) 2018-07-05 22:49:40 +03:00
David Cernat
c075496748 [General] Replace deathReason in death packets with a killer variable
Add serverside script functions for determining the killers of both players and actors.

Use unsigned ints for script functions returning an object or actor's refNumIndex or mpNum.

Remove updateDeadState() from LocalPlayer and make its code part of updateStatsDynamic() for simplicity.
2018-07-05 22:24:51 +03:00
Capostrophic
faf3e9ba5a Make spellcasting stance transition more smooth (fixes #4358)
If a movement animation was identical to the previous one that was played, restart it from the point the previous animation ended
2018-07-05 01:57:34 +03:00
David Cernat
76731f5def [Client] Don't remove SummonKeys with actorIds of -1
This prevents summon duplication caused by a SummonKey sometimes being deleted immediately after being created, before the server can send back an ObjectSpawn packet spawning a creature that can be attached to the SummonKey.
2018-07-05 01:11:45 +03:00
David Cernat
a236ffc4be Merge pull request #456 from OpenMW/master while resolving conflicts
# Conflicts:
#	.travis.yml
#	README.md
#	apps/openmw/mwgui/quickkeysmenu.cpp
#	apps/openmw/mwmechanics/actors.cpp
#	apps/openmw/mwmechanics/combat.cpp
2018-07-04 01:52:29 +03:00
Koncord
53346e2663 [Client] Return 0 if effect not found 2018-07-03 03:43:38 +08:00
David Cernat
8ce225b1cc [Client] Use the casters of damage-dealing spells as death reasons 2018-07-02 00:42:32 +03:00
David Cernat
958b220835 [General] Send summon duration to server in ObjectSpawn packets 2018-07-01 00:43:29 +03:00
Capostrophic
bccba24c40 Make unarmed creature attacks not affect armor condition (fixes #2455) 2018-06-29 20:18:28 +03:00
Andrei Kortunov
5455490ad2 Avoid fall-through in spell selection 2018-06-28 11:12:48 +04:00
Andrei Kortunov
ec73011617 Clean temporary storage if we assign new AI package (bug #4464) 2018-06-27 12:52:43 +04:00
Andrei Kortunov
ee45f54b53 Refactor AiTemporaryStorage usage 2018-06-27 12:48:34 +04:00
Andrei Kortunov
3c7ab976c3 Ignore movement from scripted animations (bug #4475) 2018-06-27 08:22:45 +04:00
Andrei Kortunov
c9756cee4c Fast-forward death animation to end if death animation was finished earlier (regression #4468) 2018-06-20 12:37:58 +04:00
Capostrophic
6c23caadd7 Fix crash when a target in a different cell is (un)locked 2018-06-19 20:43:18 +03:00
Capostrophic
0c4fa55f16 Make Open spells casted by anything trigger player crime event (fixes #4461) 2018-06-19 17:04:38 +03:00
Andrei Kortunov
5fd3ec1035 Implement unlockable locks with 'lock 0' console command 2018-06-19 14:17:33 +04:00
Marc Zinnschlag
a8ad530db9 Merged pull request #1749 2018-06-19 11:33:08 +02:00
Marc Zinnschlag
2a52ade219 Merged pull request #1760 2018-06-19 11:26:41 +02:00
Andrei Kortunov
e08b0d3070 Ignore lights without CanCarry flags when NPC selects torch (bug #4457) 2018-06-16 17:34:49 +04:00
Andrei Kortunov
9c3da41130 Add murder bounty when a player follower commits murder (bug #2852) 2018-06-15 14:31:09 +04:00
Marc Zinnschlag
2b35c5efd7 Merge remote-tracking branch 'upstream/master' 2018-06-13 18:13:15 +02:00
Marc Zinnschlag
aea481eacb Merged pull request #1753 2018-06-13 18:12:38 +02:00
Andrei Kortunov
61c968d550 Ignore broken items when search for replacement (bug #4453) 2018-06-13 18:39:02 +04:00
Andrei Kortunov
81b78a82e8 AI: try to open doors every AI_REACTION_TIME seconds (bug #4454) 2018-06-13 17:47:32 +04:00
Bret Curtis
3e4dc31e39
Merge branch 'master' into fatigue 2018-06-13 10:04:32 +02:00
Andrei Kortunov
9c45cc7e48 Use player reference instead of pointer 2018-06-12 22:05:00 +04:00
Andrei Kortunov
f299be8158 Play scripted animations even if SkipAnim is used 2018-06-12 16:07:36 +04:00
Andrei Kortunov
25bb7c1826 Make 'PlayGroup idle' to cancel scripted animations 2018-06-12 14:04:03 +04:00
Andrei Kortunov
0e441d48ac Give scripted animations highest priority (bug #4286) 2018-06-12 12:55:28 +04:00