Commit graph

2636 commits

Author SHA1 Message Date
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
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
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
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