Commit Graph

22153 Commits (0.7.0)
 

Author SHA1 Message Date
Andrei Kortunov c07cc0dc40 Reset animation state after weapon unequipping 6 years ago
Andrei Kortunov 469bb29621 Do not try to handle shape controllers as node controllers 6 years ago
Andrei Kortunov 0f2c3ecb17 Rescale player avatar (bug #4539) 6 years ago
David Cernat 8c40010c87 [General] Add missing inventoryBaseId to creatures in RecordDynamic 6 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.
6 years ago
Capostrophic c79f96d0d2 Implement ranged crits (feature #3703) 6 years ago
Andrei Kortunov 1d463d129d Finish AiTarget package, if destination is blocked by other actor 6 years ago
Andrei Kortunov 75835c8326 Prevent NPC from chosing farther pathgrid node 6 years ago
Marc Zinnschlag 9e6cba09a6 Merged pull request #1827 6 years ago
Marc Zinnschlag 84de55fb46 Merged puil request #1824 6 years ago
Marc Zinnschlag 78121c1774 Merged pull request #1823 6 years ago
Marc Zinnschlag 3ba9229f47 Merged pull request #1815 6 years ago
Capostrophic 9c8e284ead Fix quick key activation delay code (regression #4536) 6 years ago
Capostrophic 84a871cac7 Actually enable is_pod test 6 years ago
Andrei Kortunov 6d5d0039ec Make sure we apply OT_Murder only once 6 years ago
Andrei Kortunov bc82dbbd1b Do not try to find missing animated collision shape again and again 6 years ago
Andrei Kortunov 7e0df01c83 Do not optimize animated shapes (bug #3950) 6 years ago
Andrei Kortunov 2d4ec86b8d Provide launcher icons 6 years ago
Marc Zinnschlag 29a1899045 Merged pull request #1819 6 years ago
David Cernat 2dbf3893c0 [General] Compress item refIds in PlayerEquipment packets 6 years ago
David Cernat 2332423527 [Client] Fix extra qualification error in CellRef when compiling w/ GCC 6 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.
6 years ago
Andrei Kortunov 28a02ac93b Use file selection dialogue result (bug #4524) 6 years ago
Marc Zinnschlag b7c159e5b6 Merged pull request #1816 6 years ago
Marc Zinnschlag c508938674 Merged pull request #1817 6 years ago
Marc Zinnschlag bbb22643e8 Merge remote-tracking branch 'capostrophic/warning' 6 years ago
David Cernat 9497c7f6f2 [Client] Add back mistakenly removed setting of mpNums for spawns 6 years ago
David Cernat 25fcd09780 [Client] Add doesNpcExist() method to RecordHelper 6 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.
6 years ago
David Cernat 8d286657d4 [Client] Update messages when unilaterally creating custom objects 6 years ago
Capostrophic f7887ab05f
Fix MSVC C4456 warning: declaration of 'stats' hides previous local declaration 6 years ago
David Cernat c7bcf70c32 [Client] Ignore ObjectSpawn packets trying to spawn non-actors 6 years ago
David Cernat d93b67ef21 [General] Sync soul refIds for items and add related script functions 6 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.
6 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.
6 years ago
Capostrophic 51d369d4da Add resumeGame method 6 years ago
David Cernat 4e78642273 [Client] Add getModifiableStore() to MWWorld 6 years ago
David Cernat d778bc3b8a [Server] Turn readWorldstate and writeWorldstate into static variables 6 years ago
David Cernat c3ff273a22 [General] Add getVectorSize() and resetVector() to Utils 6 years ago
David Cernat b4802e4201 [General] Use Time struct for time in BaseWorldstate 6 years ago
Andrei Kortunov 23d917df9c Do not use magic numbers in capacity calculations 6 years ago
David Cernat a4b588d1b5 [General] Add optional timestamps to journal entries in PlayerJournal 6 years ago
Capostrophic e55f49be45
Fix issue 4494 number 6 years ago
Capostrophic cac2bc768e
Fix NPC "can't teach more" message (bug #4494) 6 years ago
David Cernat ea8a41160c [General] Make ActorAttack packet consistent with PlayerAttack
Additionally, fix a typo in PlayerAttack where a boolean argument was outside of the parentheses it should have been in.
6 years ago
David Cernat b79221efcc [Server] Rename variable i into index in ActorFunctions 6 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.
6 years ago
David Cernat 2e0b6e4e3e [Server] Rename variable i into index in script function arguments
Additionally, rename i into index in LangLua.
6 years ago
David Cernat 65de028e0d
Merge pull request #462 from OpenMW/master
Add OpenMW commits up to 23 Jul 2018
6 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()
6 years ago