Commit Graph

16493 Commits (03d377ec541de18d2b892e48f062cec70dfc0d70)

Author SHA1 Message Date
David Cernat 31a9b77f34 [Client] Reset hitPosition in MechanicsHelper::resetAttack() 6 years ago
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.
6 years ago
David Cernat c9ad411dd3 [Client] Fix logic for setting applyProjectileEnchantment in attack sync 6 years ago
David Cernat 8012d0d7b7 [General] Include hit position in PlayerAttack and ActorAttack packets 6 years ago
David Cernat dcd4478028 [Client] Always stop sending weather updates when moving to an interior 6 years ago
David Cernat 113002ca19 [Client] Return early when processing actors that can't be initialized 6 years ago
Koncord 48f4792bc1 [Server] Add GetMaxPlayers, GetPort and HasPassword functions to API 6 years ago
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.
6 years ago
David Cernat 9e58cc82bd [Server] Set minimum updateRate when communicating with master server 6 years ago
David Cernat d1fa57ac14 [General] Switch to new official master server port when using old one 6 years ago
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.
6 years ago
David Cernat 75a64a69c7 [Server] Add GetInventoryChangesAction() script function
Additionally, fix a typo in the description of GetSpellBookChangesAction()
6 years ago
David Cernat 45b011452e [Client] Combine methods for sending spell packets into a single one 6 years ago
David Cernat 140e0ed52c [Client] Also clear aiActors when clearing ActorList 6 years ago
David Cernat aed4ca2fd2 [Client] Allow use of baseId for more record types
Additionally, don't allow new enchantment records to be created if they have no effects, to avoid a crash.
6 years ago
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
6 years ago
David Cernat 7efee0e968 [Client] Fix GCC build 6 years ago
David Cernat 5bd2244898 [Client] Uninitialize DedicatedActors instantly in some situations
When LocalActors briefly become DedicatedActors as the result of a server script, the DedicatedActors are immediately uninitialized to avoid bugs like them jumping in place or rotating slightly.

Additionally, the playing of animations and sounds received in packets for DedicatedActors is no longer done during their next update, but is instead done instantly when the packets are received.
6 years ago
David Cernat 5fd4113978 [General] Implement sending of ActorSpeech packets from server scripts 6 years ago
David Cernat 338efdb705 [General] Fix issues with MechanicsHelper::getItemPtrFromStore() 6 years ago
David Cernat aec0c5bd49 [Server] Make capitalization consistent for AI-related script functions 6 years ago
David Cernat 9598212aad [Client] Don't add bound items to inventory as a result of item packets
Additionally, don't include bound items when sending PlayerInventory packets.
6 years ago
David Cernat a3b9274365 [Client] Make it possible to check if an item ID belongs to a bound item 6 years ago
David Cernat a1933e7bc2 [Client] Don't declare variable twice in LocalPlayer's setEquipment()
The variable equipmentItem is identical to currentItem, so it should not have been added in commit 58a6a8c3bc

Addditionally, use a more descriptive variable name than "a" for item Ptrs.
6 years ago
Marc Zinnschlag 1cfc1f9bdb Merged pull request #1666 6 years ago
Marc Zinnschlag 0aedb3aada Merged puil request #1808 6 years ago
Marc Zinnschlag 24212d58e8 Merged pull request #1861 6 years ago
Andrei Kortunov cde95979d0 Fix combat engagement for creatures 6 years ago
David Cernat 5d66a9bb66 [Client] Fix path to MechanicsHelper in ProcessorPlayerItemUse 6 years ago
David Cernat 8df08c7d10 [General] Implement PlayerItemUse packet
Players can no longer unilaterally use items on themselves in their inventory. When they try to use an item, they send a PlayerItemUse packet to the server with the item's details. A serverside script can then check the item and either send the packet back to make the item use go through or drop it.
6 years ago
Andrei Kortunov 780648b584 Do not reset idle animations if we do not have ammo 6 years ago
Andrei Kortunov df577babe9 Increase priority of 1st-person weapon animations to avoid issues with animation blending 6 years ago
Andrei Kortunov 71bcc11ba5 Apply only crossbow reload animation to upper body 6 years ago
Andrei Kortunov a0d0e5d2db Give jumping animations higher priority than movement ones 6 years ago
Andrei Kortunov 6a03aa6fdb Reduce jittering during turning animations for player 6 years ago
Andrei Kortunov cd92014533 Do not touch GUI modes when taking screenshots (bug #4528) 6 years ago
Marc Zinnschlag fe19d8ff35 Merged pull request #1857 6 years ago
Marc Zinnschlag a2a57cf694 Merged pull request #1858 6 years ago
Marc Zinnschlag 0f510011b3 Merged pull request #1852 6 years ago
Andrei Kortunov 126b2fdd42 Use the isPlayer variable to do not check if the current actor is player every time 6 years ago
Andrei Kortunov 51af729305 Do not use headtracking in the 1st-person view (bug #4573) 6 years ago
Andrei Kortunov 6202b4eca9 Do not touch GUI modes when taking screenshots (bug #4528) 6 years ago
Capostrophic e9e9c0dd6b Fix guild guide fast travelling to exteriors time 6 years ago
Andrei Kortunov b7859b3fa9 Cap underwater view distance (bug #4565) 6 years ago
Capostrophic bcd9cc4baa Check the actor cell instead of the destination cell in fast travel price logic 6 years ago
Marc Zinnschlag b75b5d139a Merged pull request #1845 6 years ago
Marc Zinnschlag 7a93d118d2 Merged pull request #1846 6 years ago
Capostrophic 7087bad580 Use special behavior for all topics with reserved names (bug #4557) 6 years ago
Andrei Kortunov 1f4dd3b393 Make partial binary search case insensitive, as it supposed to be (bug #4558) 6 years ago
David Cernat 888e1dfff8 [General] Allow setting of AI fight & dynamic stats in record packets
Additionally, allow the setting of the Autocalc flag for an NPC record based on an existing record.
6 years ago
Andrei Kortunov b0f2e00e7f Make forcegreeting a non-op for non-actor objects (bug #4553) 6 years ago
Koncord d03722b3f4 [Browser] Rework browser for improved stability & clarity
(cherry picked from commits 5c79e7106f, 57353cdfff, 15723adb9a, 01a5196a92, ed75563a94, 3839a2dcfd, 1fd16ba69c, 66283943c5, ba8613a179, 5b8f4f3e92, 35b771b19e, 043eb224e2, 05fac2f67d)
6 years ago
Marc Zinnschlag 452a706047 Merged pull request #1837 6 years ago
Marc Zinnschlag b6a919a2d1 Merged pull request #1838 6 years ago
Marc Zinnschlag 99c03d55f0 Merged pull request #1841 6 years ago
Marc Zinnschlag 2a621fedd1 Merged pull request #1842 6 years ago
Capostrophic d15dcaff68
Don't adjust weapon rating according to weapon condition twice 6 years ago
David Cernat 6498bcb22b [Server] Add script functions for getting player draw & sneak states 7 years ago
Andrei Kortunov e2519226aa Move boost include 7 years ago
Andrei Kortunov eeffe2e557 Check if item model exists inside drag and drop functions 7 years ago
Andrei Kortunov c2a175c2e0 Move crash catcher wrapper to separate file 7 years ago
Capostrophic 725a9323c4
Merge branch 'master' into sound 7 years ago
Capostrophic 4c7f3cf626
Merge branch 'master' into weaponpriority 7 years ago
Marc Zinnschlag 4d280add81 Merged pull request #1843 7 years ago
Marc Zinnschlag d7718aae9b Merged pull request #1840 7 years ago
Marc Zinnschlag eb5f558f6f Merged pull request #1839 7 years ago
Andrei Kortunov 712c9995db Rename mIsScripted variable because its name is ambiguous 7 years ago
Andrei Kortunov c454f1bdad Use log file for editor (feature #4012) 7 years ago
Capostrophic 9d85b7c2d3
Use the actual damage for deducting weapon rating 7 years ago
Capostrophic 73d5496711
Revert addition change 7 years ago
Capostrophic 16af1a6c1c Replace 0 sound range values separately 7 years ago
Capostrophic 3ac030d75a
Handle explicit calls before handling quotes 7 years ago
Capostrophic 80f3bd9f86 Don't apply iWereWolfFleeMod to creatures 7 years ago
Capostrophic fa6c205e5d Make tab autocompletion work with explicit reference calls 7 years ago
Capostrophic bec47dfb7c Make ranged weapon bonus a distance-dependent multiplier 7 years ago
Capostrophic 382b68a081
Combat AI: take the actual hit chance in account when rating weapon 7 years ago
Andrei Kortunov 12144de8ed Initialize missing variables 7 years ago
Andrei Kortunov c0bed0fde2 Handle case when index < 0 7 years ago
Andrei Kortunov 770d86f9bd Initialize cubeSize variable for 360 degrees screenshots correctly 7 years ago
Andrei Kortunov a08048da4e Avoid dereference after null check 7 years ago
Capostrophic ab29f9e13f Add permanent barter disposition change option (feature #3103) 7 years ago
Marc Zinnschlag 1c13256456 Merged pull request #1829 7 years ago
Marc Zinnschlag 0e75e3816a Merged pull request #1830 7 years ago
Marc Zinnschlag 0c507b74bc Merge pull request #1832 7 years ago
Marc Zinnschlag 7c7af1da61 Merged pull request #1834 7 years ago
Capostrophic 4d48ede6f1 Add two missing gameplay settings to Advanced tab 7 years ago
Capostrophic be2e7e9e09 Make casting caster-linked on-self effects no-op (bug #4378) 7 years ago
Andrei Kortunov 5b92910829 Limit difficulty scaling, as mentioned in docs 7 years ago
Marc Zinnschlag aac580da6b Merged pull request #1828 7 years ago
Marc Zinnschlag 20d4e27f82 Merged pull request #1821 7 years ago
Andrei Kortunov c07cc0dc40 Reset animation state after weapon unequipping 7 years ago
Andrei Kortunov 0f2c3ecb17 Rescale player avatar (bug #4539) 7 years ago
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.
7 years ago
Capostrophic c79f96d0d2 Implement ranged crits (feature #3703) 7 years ago
Andrei Kortunov 1d463d129d Finish AiTarget package, if destination is blocked by other actor 7 years ago
Andrei Kortunov 75835c8326 Prevent NPC from chosing farther pathgrid node 7 years ago
Marc Zinnschlag 9e6cba09a6 Merged pull request #1827 7 years ago
Marc Zinnschlag 84de55fb46 Merged puil request #1824 7 years ago
Marc Zinnschlag 78121c1774 Merged pull request #1823 7 years ago
Marc Zinnschlag 3ba9229f47 Merged pull request #1815 7 years ago
Capostrophic 9c8e284ead Fix quick key activation delay code (regression #4536) 7 years ago
Capostrophic 84a871cac7 Actually enable is_pod test 7 years ago
Andrei Kortunov 6d5d0039ec Make sure we apply OT_Murder only once 7 years ago
Andrei Kortunov bc82dbbd1b Do not try to find missing animated collision shape again and again 7 years ago
Andrei Kortunov 2d4ec86b8d Provide launcher icons 7 years ago
David Cernat 2332423527 [Client] Fix extra qualification error in CellRef when compiling w/ GCC 7 years ago
David Cernat 7136329a94 [Client] Add World::updatePtrsWithRefId() method
This makes it possible to "reload" the Ptrs in active cells when changes happen to the ESM record that they are based on. In practice, the old Ptrs are deleted, their RefNums and MpNums are blanked out, and new Ptrs are created that use the same RefNum and MpNum as before.

The above has required me to also add a method called setRefNum() to CellRef to allow setting a RefNum on the fly.

There may be a more elegant implementation available for updatePtrsWithRefIds(), but it requires additional research.
7 years ago
Andrei Kortunov 28a02ac93b Use file selection dialogue result (bug #4524) 7 years ago
Marc Zinnschlag b7c159e5b6 Merged pull request #1816 7 years ago
Marc Zinnschlag c508938674 Merged pull request #1817 7 years ago
Marc Zinnschlag bbb22643e8 Merge remote-tracking branch 'capostrophic/warning' 7 years ago
David Cernat 9497c7f6f2 [Client] Add back mistakenly removed setting of mpNums for spawns 7 years ago
David Cernat 25fcd09780 [Client] Add doesNpcExist() method to RecordHelper 7 years ago
David Cernat 7995466e3c [Client] Check validity of refIds in ObjectSpawn packets
This reverts c7bcf70c32 because it provides a better solution to the problem solved there, while solving another related problem as well.
7 years ago
David Cernat 8d286657d4 [Client] Update messages when unilaterally creating custom objects 7 years ago
Capostrophic f7887ab05f
Fix MSVC C4456 warning: declaration of 'stats' hides previous local declaration 7 years ago
David Cernat c7bcf70c32 [Client] Ignore ObjectSpawn packets trying to spawn non-actors 7 years ago
David Cernat d93b67ef21 [General] Sync soul refIds for items and add related script functions 7 years ago
David Cernat f52364e05c [Client] Always create new references for new creature disguises
Previously, attempts to reuse the same reference for multiple creature disguises led to movement animation issues, as well as a dynamic_cast error in Creature::getInventoryStore() that made a DedicatedPlayer vanish completely when they first lost their creature disguise, then disguised themselves as a creature that could not hold weapons and then disguised themselves as a creature that could hold weapons.
7 years ago
David Cernat 60bc7447d9 [Client] Rework RecordHelper and add methods for other record types
The usage of const_cast has been replaced with usage of MWWorld::getModifiableStore() and ESMStore::overrideRecord()

Methods whose names started with "update" now start with "override", for consistency with ESMStore's overrideRecord()

New methods have been added for "overriding" enchantment, potion and spell records, which actually leads to them being created with their already set refIds if they haven't been created yet, as per the description of ESMStore::overrideRecord(): "Insert a record with set ID, and allow it to override a pre-existing static record."

Usage of RecordHelper methods has been updated in DedicatedPlayer.
7 years ago
Capostrophic 51d369d4da Add resumeGame method 7 years ago
David Cernat 4e78642273 [Client] Add getModifiableStore() to MWWorld 7 years ago
David Cernat d778bc3b8a [Server] Turn readWorldstate and writeWorldstate into static variables 7 years ago
David Cernat b4802e4201 [General] Use Time struct for time in BaseWorldstate 7 years ago
Andrei Kortunov 23d917df9c Do not use magic numbers in capacity calculations 7 years ago
David Cernat a4b588d1b5 [General] Add optional timestamps to journal entries in PlayerJournal 7 years ago
Capostrophic cac2bc768e
Fix NPC "can't teach more" message (bug #4494) 7 years ago
David Cernat b79221efcc [Server] Rename variable i into index in ActorFunctions 7 years ago
David Cernat 8fbed1f808 [General] Remove custom data from PlayerSpellbook packet
It has never made sense to have custom spell data in PlayerSpellbook packets, so it has been removed.
7 years ago
David Cernat 2e0b6e4e3e [Server] Rename variable i into index in script function arguments
Additionally, rename i into index in LangLua.
7 years ago
David Cernat 65de028e0d
Merge pull request #462 from OpenMW/master
Add OpenMW commits up to 23 Jul 2018
7 years ago
David Cernat 74fa1d0f01 [Client] Fix manual setting of inertial force
Actors who are on the ground have their inertial force ignored, so they are now made to not be regarded as being on the ground in World::setInertialForce()
7 years ago
David Cernat b69e6b96e6 [Client] Use verbose logging level for LocalActor debug 7 years ago
David Cernat 36ac2d9de4 [Client] Set packetOrigin for all ObjectList packets sent 7 years ago
David Cernat 692ee01340 [Client] Add ScriptController w/ contextType-to-packetOrigin method 7 years ago
David Cernat 63a86f145d [Client] Record type of each InterpreterContext for later checking 7 years ago
David Cernat d4a84ac34a [Server] Update script function descriptions for ObjectList origin 7 years ago
David Cernat 3dc2d1b214 [General] Add packetOrigin and originClientScript to ObjectList packets
Additionally, add script functions for getting the packetOrigin and originClientScript of received ObjectList packets.
7 years ago
David Cernat b891acd46e [Client] Send Container packets when items are added/removed via scripts
Additionally, disable unilateral addition and removal of items on clients, and expect the server to reply back with an approved addition or removal.
7 years ago
David Cernat 2189ea1a63 [Client] Clean up sending of Container packets 7 years ago
David Cernat 8c0b75d9f4 [Client] Limit PlayerEquipment packets sent by recharging enchantments 7 years ago
David Cernat 18f8725d33 [Client] Remove tab character that somehow made its way into a comment 7 years ago
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.
7 years ago
Marc Zinnschlag ddd5cbd17c Initialise lock state of newly opened subviews (fixes issue #4520) 7 years ago
David Cernat 3944c8aec6 [Client] Ignore WorldRegionAuthority packets that have an empty region 7 years ago
David Cernat 99e64bdcd7 [Client] Remove unused localWeather variable from Worldstate 7 years ago
David Cernat cd1fc590a7 [Client] Differentiate itemPtr from actor Ptr in DedicatedPlayer method
This fixes a mistake from 8f7da49152
7 years ago
David Cernat 5466092582 [Client] Reduce log level for actor cell changes 7 years ago
David Cernat 20e0100706 [General] Rework Attack packets and add synchronization for item magic 7 years ago
David Cernat 0f0e8b7c08 [Client] Adjust log levels used for weather and global map 7 years ago