forked from mirror/openmw-tes3mp
Merge branch 'openmw-30'
This commit is contained in:
commit
8f5acf4741
3 changed files with 114 additions and 34 deletions
|
@ -427,7 +427,7 @@ IF(NOT WIN32 AND NOT APPLE)
|
||||||
INSTALL(FILES "${OpenMW_BINARY_DIR}/transparency-overrides.cfg" DESTINATION "${SYSCONFDIR}" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
|
INSTALL(FILES "${OpenMW_BINARY_DIR}/transparency-overrides.cfg" DESTINATION "${SYSCONFDIR}" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
|
||||||
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "${SYSCONFDIR}" RENAME "openmw.cfg" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
|
INSTALL(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" DESTINATION "${SYSCONFDIR}" RENAME "openmw.cfg" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "openmw")
|
||||||
IF(BUILD_OPENCS)
|
IF(BUILD_OPENCS)
|
||||||
INSTALL(FILES "${OpenMW_BINARY_DIR}/opencs.cfg" DESTINATION "${SYSCONFDIR}" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "opencs")
|
INSTALL(FILES "${OpenMW_BINARY_DIR}/opencs.ini" DESTINATION "${SYSCONFDIR}" PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ COMPONENT "opencs")
|
||||||
ENDIF(BUILD_OPENCS)
|
ENDIF(BUILD_OPENCS)
|
||||||
|
|
||||||
# Install resources
|
# Install resources
|
||||||
|
@ -456,7 +456,7 @@ if(WIN32)
|
||||||
ENDIF(BUILD_MWINIIMPORTER)
|
ENDIF(BUILD_MWINIIMPORTER)
|
||||||
IF(BUILD_OPENCS)
|
IF(BUILD_OPENCS)
|
||||||
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/opencs.exe" DESTINATION ".")
|
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/Release/opencs.exe" DESTINATION ".")
|
||||||
INSTALL(FILES "${OpenMW_BINARY_DIR}/opencs.cfg" DESTINATION ".")
|
INSTALL(FILES "${OpenMW_BINARY_DIR}/opencs.ini" DESTINATION ".")
|
||||||
ENDIF(BUILD_OPENCS)
|
ENDIF(BUILD_OPENCS)
|
||||||
|
|
||||||
INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/resources" DESTINATION ".")
|
INSTALL(DIRECTORY "${OpenMW_BINARY_DIR}/resources" DESTINATION ".")
|
||||||
|
@ -663,7 +663,7 @@ if (APPLE)
|
||||||
install(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" RENAME "openmw.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
|
install(FILES "${OpenMW_BINARY_DIR}/openmw.cfg.install" RENAME "openmw.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
|
||||||
install(FILES "${OpenMW_BINARY_DIR}/settings-default.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
|
install(FILES "${OpenMW_BINARY_DIR}/settings-default.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
|
||||||
install(FILES "${OpenMW_BINARY_DIR}/transparency-overrides.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
|
install(FILES "${OpenMW_BINARY_DIR}/transparency-overrides.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
|
||||||
install(FILES "${OpenMW_BINARY_DIR}/opencs.cfg" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
|
install(FILES "${OpenMW_BINARY_DIR}/opencs.ini" DESTINATION "${INSTALL_SUBDIR}" COMPONENT Runtime)
|
||||||
|
|
||||||
set(CPACK_GENERATOR "DragNDrop")
|
set(CPACK_GENERATOR "DragNDrop")
|
||||||
set(CPACK_PACKAGE_VERSION ${OPENMW_VERSION})
|
set(CPACK_PACKAGE_VERSION ${OPENMW_VERSION})
|
||||||
|
|
|
@ -167,7 +167,7 @@ namespace MWMechanics
|
||||||
mCombatMove = false;
|
mCombatMove = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actor.getClass().getMovementSettings(actor) = mMovement;
|
actor.getClass().getMovementSettings(actor) = mMovement;
|
||||||
actor.getClass().getMovementSettings(actor).mRotation[0] = 0;
|
actor.getClass().getMovementSettings(actor).mRotation[0] = 0;
|
||||||
actor.getClass().getMovementSettings(actor).mRotation[2] = 0;
|
actor.getClass().getMovementSettings(actor).mRotation[2] = 0;
|
||||||
|
@ -176,7 +176,7 @@ namespace MWMechanics
|
||||||
{
|
{
|
||||||
if(zTurn(actor, Ogre::Degree(mMovement.mRotation[2]))) mMovement.mRotation[2] = 0;
|
if(zTurn(actor, Ogre::Degree(mMovement.mRotation[2]))) mMovement.mRotation[2] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mMovement.mRotation[0] != 0)
|
if(mMovement.mRotation[0] != 0)
|
||||||
{
|
{
|
||||||
if(smoothTurn(actor, Ogre::Degree(mMovement.mRotation[0]), 0)) mMovement.mRotation[0] = 0;
|
if(smoothTurn(actor, Ogre::Degree(mMovement.mRotation[0]), 0)) mMovement.mRotation[0] = 0;
|
||||||
|
@ -193,7 +193,7 @@ namespace MWMechanics
|
||||||
}
|
}
|
||||||
|
|
||||||
//Update with period = tReaction
|
//Update with period = tReaction
|
||||||
|
|
||||||
mTimerReact = 0;
|
mTimerReact = 0;
|
||||||
|
|
||||||
bool cellChange = mCell && (actor.getCell() != mCell);
|
bool cellChange = mCell && (actor.getCell() != mCell);
|
||||||
|
@ -286,7 +286,7 @@ namespace MWMechanics
|
||||||
*
|
*
|
||||||
* - Distance where attack using the actor's weapon is possible:
|
* - Distance where attack using the actor's weapon is possible:
|
||||||
* longer for ranged weapons (obviously?) vs. melee weapons
|
* longer for ranged weapons (obviously?) vs. melee weapons
|
||||||
* - Determined by weapon's reach parameter; hardcoded value
|
* - Determined by weapon's reach parameter; hardcoded value
|
||||||
* for ranged weapon and for creatures
|
* for ranged weapon and for creatures
|
||||||
* - Once within this distance mFollowTarget is triggered
|
* - Once within this distance mFollowTarget is triggered
|
||||||
*
|
*
|
||||||
|
@ -322,15 +322,15 @@ namespace MWMechanics
|
||||||
rangeAttack = weapRange;
|
rangeAttack = weapRange;
|
||||||
rangeFollow = 300;
|
rangeFollow = 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
ESM::Position pos = actor.getRefData().getPosition();
|
ESM::Position pos = actor.getRefData().getPosition();
|
||||||
Ogre::Vector3 vActorPos(pos.pos);
|
Ogre::Vector3 vActorPos(pos.pos);
|
||||||
Ogre::Vector3 vTargetPos(mTarget.getRefData().getPosition().pos);
|
Ogre::Vector3 vTargetPos(mTarget.getRefData().getPosition().pos);
|
||||||
Ogre::Vector3 vDirToTarget = vTargetPos - vActorPos;
|
Ogre::Vector3 vDirToTarget = vTargetPos - vActorPos;
|
||||||
|
|
||||||
bool isStuck = false;
|
bool isStuck = false;
|
||||||
float speed = 0.0f;
|
float speed = 0.0f;
|
||||||
if(mMovement.mPosition[1] && (Ogre::Vector3(mLastPos.pos) - vActorPos).length() < (speed = actorCls.getSpeed(actor)) / 10.0f)
|
if(mMovement.mPosition[1] && (Ogre::Vector3(mLastPos.pos) - vActorPos).length() < (speed = actorCls.getSpeed(actor)) / 10.0f)
|
||||||
isStuck = true;
|
isStuck = true;
|
||||||
|
|
||||||
mLastPos = pos;
|
mLastPos = pos;
|
||||||
|
@ -401,7 +401,7 @@ namespace MWMechanics
|
||||||
if(mReadyToAttack) isStuck = false;
|
if(mReadyToAttack) isStuck = false;
|
||||||
|
|
||||||
// check if shortcut is available
|
// check if shortcut is available
|
||||||
if(!isStuck
|
if(!isStuck
|
||||||
&& (!mForceNoShortcut
|
&& (!mForceNoShortcut
|
||||||
|| (Ogre::Vector3(mShortcutFailPos.pos) - vActorPos).length() >= PATHFIND_SHORTCUT_RETRY_DIST)
|
|| (Ogre::Vector3(mShortcutFailPos.pos) - vActorPos).length() >= PATHFIND_SHORTCUT_RETRY_DIST)
|
||||||
&& inLOS)
|
&& inLOS)
|
||||||
|
@ -458,7 +458,7 @@ namespace MWMechanics
|
||||||
{
|
{
|
||||||
if(!mPathFinder.getPath().empty())
|
if(!mPathFinder.getPath().empty())
|
||||||
mMovement.mRotation[2] = mPathFinder.getZAngleToNext(pos.pos[0], pos.pos[1]);
|
mMovement.mRotation[2] = mPathFinder.getZAngleToNext(pos.pos[0], pos.pos[1]);
|
||||||
else
|
else
|
||||||
mMovement.mRotation[2] = getZAngleToDir(vDirToTarget, distToTarget);
|
mMovement.mRotation[2] = getZAngleToDir(vDirToTarget, distToTarget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -501,12 +501,12 @@ namespace MWMechanics
|
||||||
// coded at 250ms or 1/4 second
|
// coded at 250ms or 1/4 second
|
||||||
//
|
//
|
||||||
// TODO: Add a parameter to vary DURATION_SAME_SPOT?
|
// TODO: Add a parameter to vary DURATION_SAME_SPOT?
|
||||||
|
MWWorld::CellStore *cell = actor.getCell();
|
||||||
if((distToTarget > rangeAttack || mFollowTarget) &&
|
if((distToTarget > rangeAttack || mFollowTarget) &&
|
||||||
mObstacleCheck.check(actor, tReaction)) // check if evasive action needed
|
mObstacleCheck.check(actor, tReaction)) // check if evasive action needed
|
||||||
{
|
{
|
||||||
// first check if we're walking into a door
|
// first check if we're walking into a door
|
||||||
mDoorCheckDuration += 1.0f; // add time taken for obstacle check
|
mDoorCheckDuration += 1.0f; // add time taken for obstacle check
|
||||||
MWWorld::CellStore *cell = actor.getCell();
|
|
||||||
if(mDoorCheckDuration >= DOOR_CHECK_INTERVAL && !cell->getCell()->isExterior())
|
if(mDoorCheckDuration >= DOOR_CHECK_INTERVAL && !cell->getCell()->isExterior())
|
||||||
{
|
{
|
||||||
mDoorCheckDuration = 0;
|
mDoorCheckDuration = 0;
|
||||||
|
@ -546,28 +546,26 @@ namespace MWMechanics
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::LiveCellRef<ESM::Door>& ref = *mDoorIter;
|
if(!cell->getCell()->isExterior() && !mDoors.mList.empty())
|
||||||
float minSqr = 1.6 * 1.6 * MIN_DIST_TO_DOOR_SQUARED; // for legibility
|
|
||||||
// TODO: add reaction to checking open doors
|
|
||||||
if(mBackOffDoor &&
|
|
||||||
vActorPos.squaredDistance(Ogre::Vector3(ref.mRef.mPos.pos)) < minSqr)
|
|
||||||
{
|
{
|
||||||
mMovement.mPosition[1] = -0.2; // back off, but slowly
|
MWWorld::LiveCellRef<ESM::Door>& ref = *mDoorIter;
|
||||||
|
float minSqr = 1.6 * 1.6 * MIN_DIST_TO_DOOR_SQUARED; // for legibility
|
||||||
|
// TODO: add reaction to checking open doors
|
||||||
|
if(mBackOffDoor &&
|
||||||
|
vActorPos.squaredDistance(Ogre::Vector3(ref.mRef.mPos.pos)) < minSqr)
|
||||||
|
{
|
||||||
|
mMovement.mPosition[1] = -0.2; // back off, but slowly
|
||||||
|
}
|
||||||
|
else if(mBackOffDoor &&
|
||||||
|
mDoorIter != mDoors.mList.end() &&
|
||||||
|
ref.mData.getLocalRotation().rot[2] >= 1)
|
||||||
|
{
|
||||||
|
mDoorIter = mDoors.mList.end();
|
||||||
|
mBackOffDoor = false;
|
||||||
|
//std::cout<<"open door id \""<<ref.mRef.mRefID<<"\""<<std::endl;
|
||||||
|
mMovement.mPosition[1] = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(mBackOffDoor &&
|
|
||||||
mDoorIter != mDoors.mList.end() &&
|
|
||||||
ref.mData.getLocalRotation().rot[2] >= 1)
|
|
||||||
{
|
|
||||||
mDoorIter = mDoors.mList.end();
|
|
||||||
mBackOffDoor = false;
|
|
||||||
//std::cout<<"open door id \""<<ref.mRef.mRefID<<"\""<<std::endl;
|
|
||||||
mMovement.mPosition[1] = 1;
|
|
||||||
}
|
|
||||||
// these lines break ranged combat distance keeping
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// mMovement.mPosition[1] = 1; // FIXME: oscillation?
|
|
||||||
//}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -577,7 +575,7 @@ namespace MWMechanics
|
||||||
Ogre::Vector3 newPathTarget = Ogre::Vector3(mTarget.getRefData().getPosition().pos);
|
Ogre::Vector3 newPathTarget = Ogre::Vector3(mTarget.getRefData().getPosition().pos);
|
||||||
|
|
||||||
float dist;
|
float dist;
|
||||||
|
|
||||||
if(!mPathFinder.getPath().empty())
|
if(!mPathFinder.getPath().empty())
|
||||||
{
|
{
|
||||||
ESM::Pathgrid::Point lastPt = mPathFinder.getPath().back();
|
ESM::Pathgrid::Point lastPt = mPathFinder.getPath().back();
|
||||||
|
|
82
readme.txt
82
readme.txt
|
@ -96,6 +96,88 @@ Allowed options:
|
||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
|
0.30.0
|
||||||
|
|
||||||
|
Bug #416: Extreme shaking can occur during cell transitions while moving
|
||||||
|
Bug #1003: Province Cyrodiil: Ogre Exception in Stirk
|
||||||
|
Bug #1071: Crash when given a non-existent content file
|
||||||
|
Bug #1080: OpenMW allows resting/using a bed while in combat
|
||||||
|
Bug #1097: Wrong punishment for stealing in Census and Excise Office at the start of a new game
|
||||||
|
Bug #1098: Unlocked evidence chests should get locked after new evidence is put into them
|
||||||
|
Bug #1099: NPCs that you attacked still fight you after you went to jail/paid your fine
|
||||||
|
Bug #1100: Taking items from a corpse is considered stealing
|
||||||
|
Bug #1126: Some creatures can't get close enough to attack
|
||||||
|
Bug #1144: Killed creatures seem to die again each time player transitions indoors/outdoors
|
||||||
|
Bug #1181: loading a saved game does not reset the player control status
|
||||||
|
Bug #1185: Collision issues in Addamasartus
|
||||||
|
Bug #1187: Athyn Sarethi mission, rescuing varvur sarethi from the doesnt end the mission
|
||||||
|
Bug #1189: Crash when entering interior cell "Gnisis, Arvs-Drelen"
|
||||||
|
Bug #1191: Picking up papers without inventory in new game
|
||||||
|
Bug #1195: NPCs do not equip torches in certain interiors
|
||||||
|
Bug #1197: mouse wheel makes things scroll too fast
|
||||||
|
Bug #1200: door blocked by monsters
|
||||||
|
Bug #1201: item's magical charges are only refreshed when they are used
|
||||||
|
Bug #1203: Scribs do not defend themselves
|
||||||
|
Bug #1204: creatures life is not empty when they are dead
|
||||||
|
Bug #1205: armor experience does not progress when hits are taken
|
||||||
|
Bug #1206: blood particules always red. Undeads and mechanicals should have a different one.
|
||||||
|
Bug #1209: Tarhiel never falls
|
||||||
|
Bug #1210: journal adding script is ran again after having saved/loaded
|
||||||
|
Bug #1224: Names of custom classes are not properly handled in save games
|
||||||
|
Bug #1227: Editor: Fixed case handling for broken localised versions of Morrowind.esm
|
||||||
|
Bug #1235: Indoors walk stutter
|
||||||
|
Bug #1236: Aborting intro movie brings up the menu
|
||||||
|
Bug #1239: NPCs get stuck when walking past each other
|
||||||
|
Bug #1240: BTB - Settings 14.1 and Health Bar.
|
||||||
|
Bug #1241: BTB - Character and Khajiit Prejudice
|
||||||
|
Bug #1248: GUI Weapon icon is changed to hand-to-hand after save load
|
||||||
|
Bug #1254: Guild ranks do not show in dialogue
|
||||||
|
Bug #1255: When opening a container and selecting "Take All", the screen flashes blue
|
||||||
|
Bug #1260: Level Up menu doesn't show image when using a custom class
|
||||||
|
Bug #1265: Quit Menu Has Misaligned Buttons
|
||||||
|
Bug #1270: Active weapon icon is not updated when weapon is repaired
|
||||||
|
Bug #1271: NPC Stuck in hovering "Jumping" animation
|
||||||
|
Bug #1272: Crash when attempting to load Big City esm file.
|
||||||
|
Bug #1276: Editor: Dropping a region into the filter of a cell subview fails
|
||||||
|
Bug #1286: Dialogue topic list clips with window frame
|
||||||
|
Bug #1291: Saved game: store faction membership
|
||||||
|
Bug #1293: Pluginless Khajiit Head Pack by ashiraniir makes OpenMW close.
|
||||||
|
Bug #1294: Pasting in console adds text to end, not at cursor
|
||||||
|
Bug #1295: Conversation loop when asking about "specific place" in Vivec
|
||||||
|
Bug #1296: Caius doesn't leave at start of quest "Mehra Milo and the Lost Prophecies"
|
||||||
|
Bug #1297: Saved game: map markers
|
||||||
|
Bug #1302: ring_keley script causes vector::_M_range_check exception
|
||||||
|
Bug #1309: Bug on "You violated the law" dialog
|
||||||
|
Bug #1319: Creatures sometimes rendered incorrectly
|
||||||
|
Feature #50: Ranged Combat
|
||||||
|
Feature #58: Sneaking Skill
|
||||||
|
Feature #73: Crime and Punishment
|
||||||
|
Feature #135: Editor: OGRE integration
|
||||||
|
Feature #541: Editor: Dialogue Sub-Views
|
||||||
|
Feature #853: Editor: Rework User Settings
|
||||||
|
Feature #944: Editor: lighting modes
|
||||||
|
Feature #945: Editor: Camera navigation mode
|
||||||
|
Feature #953: Trader gold
|
||||||
|
Feature #1140: AI: summoned creatures
|
||||||
|
Feature #1142: AI follow: Run stance
|
||||||
|
Feature #1154: Not all NPCs get aggressive when one is attacked
|
||||||
|
Feature #1169: Terrain threading
|
||||||
|
Feature #1172: Loading screen and progress bars during saved/loading game
|
||||||
|
Feature #1173: Saved Game: include weather state
|
||||||
|
Feature #1207: Class creation form does not remember
|
||||||
|
Feature #1220: Editor: Preview Subview
|
||||||
|
Feature #1223: Saved Game: Local Variables
|
||||||
|
Feature #1229: Quicksave, quickload, autosave
|
||||||
|
Feature #1230: Deleting saves
|
||||||
|
Feature #1233: Bribe gold is placed into NPCs inventory
|
||||||
|
Feature #1252: Saved Game: quick key bindings
|
||||||
|
Feature #1273: Editor: Region Map context menu
|
||||||
|
Feature #1274: Editor: Region Map drag & drop
|
||||||
|
Feature #1275: Editor: Scene subview drop
|
||||||
|
Feature #1282: Non-faction member crime recognition.
|
||||||
|
Feature #1289: NPCs return to default position
|
||||||
|
Task #941: Remove unused cmake files
|
||||||
|
|
||||||
0.29.0
|
0.29.0
|
||||||
|
|
||||||
Bug #556: Video soundtrack not played when music volume is set to zero
|
Bug #556: Video soundtrack not played when music volume is set to zero
|
||||||
|
|
Loading…
Reference in a new issue