mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-29 03:26:38 +00:00 
			
		
		
		
	bug fix
This commit is contained in:
		
							parent
							
								
									9353f4d14f
								
							
						
					
					
						commit
						2537384c50
					
				
					 2 changed files with 54 additions and 95 deletions
				
			
		|  | @ -22,6 +22,9 @@ namespace MWMechanics | |||
|     { | ||||
|         const MWWorld::Ptr target = MWBase::Environment::get().getWorld()->getPlayer().getPlayer();//MWBase::Environment::get().getWorld()->getPtr(mTargetId, false);
 | ||||
| 
 | ||||
|         if(actor.getTypeName() == typeid(ESM::NPC).name()) | ||||
|         { | ||||
| 
 | ||||
|             MWMechanics::DrawState_ state = MWWorld::Class::get(actor).getNpcStats(actor).getDrawState(); | ||||
|             if (state == MWMechanics::DrawState_Spell || state == MWMechanics::DrawState_Nothing) | ||||
|                 MWWorld::Class::get(actor).getNpcStats(actor).setDrawState(MWMechanics::DrawState_Weapon);     | ||||
|  | @ -56,21 +59,22 @@ namespace MWMechanics | |||
| 
 | ||||
|             mPathFinder.buildPath(start, dest, pathgrid, xCell, yCell, true); | ||||
| 
 | ||||
|         if(mPathFinder.checkPathCompleted(pos.pos[0],pos.pos[1],pos.pos[2])) | ||||
|         { | ||||
|             MWWorld::Class::get(actor).getMovementSettings(actor).mPosition[1] = 0; | ||||
|         } | ||||
|             mPathFinder.checkPathCompleted(pos.pos[0],pos.pos[1],pos.pos[2]) | ||||
| 
 | ||||
|             float zAngle = mPathFinder.getZAngleToNext(pos.pos[0], pos.pos[1]); | ||||
|             std::cout << zAngle; | ||||
|             MWBase::Environment::get().getWorld()->rotateObject(actor, 0, 0, zAngle, false); | ||||
|             MWWorld::Class::get(actor).getMovementSettings(actor).mPosition[1] = 1; | ||||
|              | ||||
|         if(dest.mX - start.mX < 100) | ||||
|         { | ||||
|             //MWWorld::Class::get(actor).getCreatureStats(actor).setAttackingOrSpell(false);
 | ||||
|         } | ||||
|             float range = 100; | ||||
| 
 | ||||
|             if((dest.mX - start.mX)*(dest.mX - start.mX)+(dest.mY - start.mY)*(dest.mY - start.mY)+(dest.mZ - start.mZ)*(dest.mZ - start.mZ) | ||||
|                 < range*range) | ||||
|             { | ||||
|                 MWWorld::Class::get(actor).getMovementSettings(actor).mPosition[1] = 0; | ||||
|                 //MWWorld::Class::get(actor).getCreatureStats(actor).setAttackingOrSpell(!MWWorld::Class::get(actor).getCreatureStats(actor).getAttackingOrSpell());
 | ||||
|             } | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -68,57 +68,12 @@ void MWMechanics::AiSequence::execute (const MWWorld::Ptr& actor) | |||
|     { | ||||
|         if(mCombat) | ||||
|         { | ||||
|             //mCombatPackage->execute(actor);
 | ||||
|             mCombatPackage->execute(actor); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             //mCombat = true;
 | ||||
|             //mCombatPackage = new AiCombat("player");
 | ||||
| 
 | ||||
|             /*if(actor != MWBase::Environment::get().getWorld()->getPlayer().getPlayer())
 | ||||
|             { | ||||
|             MWMechanics::DrawState_ state = MWWorld::Class::get(actor).getNpcStats(actor).getDrawState(); | ||||
|             if (state == MWMechanics::DrawState_Spell || state == MWMechanics::DrawState_Nothing) | ||||
|             MWWorld::Class::get(actor).getNpcStats(actor).setDrawState(MWMechanics::DrawState_Weapon);     | ||||
|             MWWorld::Class::get(actor).getCreatureStats(actor).setAttackingOrSpell(true); | ||||
| 
 | ||||
|             MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer(); | ||||
|             ESM::Position pos = actor.getRefData().getPosition(); | ||||
|             const ESM::Pathgrid *pathgrid = | ||||
|             MWBase::Environment::get().getWorld()->getStore().get<ESM::Pathgrid>().search(*actor.getCell()->mCell); | ||||
| 
 | ||||
|             int cellX = actor.getCell()->mCell->mData.mX; | ||||
|             int cellY = actor.getCell()->mCell->mData.mY; | ||||
|             float xCell = 0; | ||||
|             float yCell = 0; | ||||
| 
 | ||||
|             if (actor.getCell()->mCell->isExterior()) | ||||
|             { | ||||
|             xCell = actor.getCell()->mCell->mData.mX * ESM::Land::REAL_SIZE; | ||||
|             yCell = actor.getCell()->mCell->mData.mY * ESM::Land::REAL_SIZE; | ||||
|             } | ||||
| 
 | ||||
|             ESM::Pathgrid::Point dest; | ||||
|             dest.mX = player.getRefData().getPosition().pos[0]; | ||||
|             dest.mY = player.getRefData().getPosition().pos[1]; | ||||
|             dest.mZ = player.getRefData().getPosition().pos[2]; | ||||
| 
 | ||||
|             ESM::Pathgrid::Point start; | ||||
|             start.mX = pos.pos[0]; | ||||
|             start.mY = pos.pos[1]; | ||||
|             start.mZ = pos.pos[2]; | ||||
| 
 | ||||
|             PathFinder mPathFinder; | ||||
|             mPathFinder.buildPath(start, dest, pathgrid, xCell, yCell, true); | ||||
|             float zAngle = mPathFinder.getZAngleToNext(pos.pos[0], pos.pos[1]); | ||||
|             MWBase::Environment::get().getWorld()->rotateObject(actor, 0, 0, zAngle, false); | ||||
|             MWWorld::Class::get(actor).getMovementSettings(actor).mPosition[1] = 1; | ||||
| 
 | ||||
|             if(dest.mX - start.mX < 100) | ||||
|             { | ||||
|             MWWorld::Class::get(actor).getCreatureStats(actor).setAttackingOrSpell(false); | ||||
|             } | ||||
|             }*/ | ||||
|             mCombat = true; | ||||
|             mCombatPackage = new AiCombat("player"); | ||||
|             if (!mPackages.empty()) | ||||
|             { | ||||
|                 if (mPackages.front()->execute (actor)) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue