diff --git a/src/servers/Server_Common/Common.h b/src/servers/Server_Common/Common.h index 47551971..37520915 100644 --- a/src/servers/Server_Common/Common.h +++ b/src/servers/Server_Common/Common.h @@ -547,7 +547,6 @@ namespace Core { enum struct PlayerStateFlag : uint8_t { - NoFlag = 0, NoCombat, Combat, Casting, @@ -560,11 +559,10 @@ namespace Core { Occupied3, BoundByDuty, Occupied4, - NewAdventurer, + DuelingArea, TradeOpen, - BrowsingBazaar, + Occupied5, HandlingItems, - Crafting, PreparingToCraft, Gathering, @@ -573,10 +571,9 @@ namespace Core { BetweenAreas, Stealthed, InnRoom, - Jumping, AutoRun, - Occupied5, + Occupied6, BetweenAreas1, SystemError, LoggingOut, @@ -607,7 +604,13 @@ namespace Core { WaitingForRaceOrMatch, WaitingForTripleTriadMatch, InFlight, - WatchingCutscene1 + WatchingCutscene1, + DeepDungeon, + Swimming, + Diving, + RegisteringTripleTriad, + WaitingTripleTriad, + InCrossWorldParty }; diff --git a/src/servers/Server_Zone/EventAction.cpp b/src/servers/Server_Zone/EventAction.cpp index 7f4b427b..7833c86b 100644 --- a/src/servers/Server_Zone/EventAction.cpp +++ b/src/servers/Server_Zone/EventAction.cpp @@ -48,7 +48,7 @@ void Core::Action::EventAction::onStart() m_startTime = Util::getTimeMs(); auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart, - 1, m_id, 0x4000002F ); + 1, m_id, 0x4000004E ); if( m_pSource->isPlayer() ) { diff --git a/src/servers/Server_Zone/Player.cpp b/src/servers/Server_Zone/Player.cpp index 0297a8db..3694b94f 100644 --- a/src/servers/Server_Zone/Player.cpp +++ b/src/servers/Server_Zone/Player.cpp @@ -554,14 +554,14 @@ bool Core::Entity::Player::isNewAdventurer() const void Core::Entity::Player::setNewAdventurer( bool state ) { - if( !state ) - { - unsetStateFlag( PlayerStateFlag::NewAdventurer ); - } - else - { - setStateFlag( PlayerStateFlag::NewAdventurer ); - } + //if( !state ) + //{ + // unsetStateFlag( PlayerStateFlag::NewAdventurer ); + //} + //else + //{ + // setStateFlag( PlayerStateFlag::NewAdventurer ); + //} sendStateFlags(); m_bNewAdventurer = state; setSyncFlag( PlayerSyncFlags::NewAdventurer ); @@ -1014,6 +1014,20 @@ void Core::Entity::Player::setStateFlag( Core::Common::PlayerStateFlag flag ) } +void Core::Entity::Player::setStateFlags( std::vector< Common::PlayerStateFlag > flags ) +{ + for( const auto& flag : flags ) + { + int iFlag = static_cast< uint32_t >( flag ); + + uint16_t index; + uint8_t value; + Util::valueToFlagByteIndexValue( iFlag, value, index ); + + m_stateFlags[index] |= value; + } +} + void Core::Entity::Player::sendStateFlags() { queuePacket( PlayerStateFlagsPacket( getAsPlayer() ) ); diff --git a/src/servers/Server_Zone/Player.h b/src/servers/Server_Zone/Player.h index 1f7d5688..ae5af385 100644 --- a/src/servers/Server_Zone/Player.h +++ b/src/servers/Server_Zone/Player.h @@ -386,6 +386,8 @@ public: const uint8_t* getStateFlags() const; /* set a specified state flag */ void setStateFlag( Common::PlayerStateFlag flag ); + /* set a specified state flag */ + void setStateFlags( std::vector< Common::PlayerStateFlag > flags ); /* check if a specified flag is set */ bool hasStateFlag( Common::PlayerStateFlag flag ) const; /* reset a specified flag */ diff --git a/src/servers/Server_Zone/PlayerSql.cpp b/src/servers/Server_Zone/PlayerSql.cpp index bbd7b1ac..4ed113a9 100644 --- a/src/servers/Server_Zone/PlayerSql.cpp +++ b/src/servers/Server_Zone/PlayerSql.cpp @@ -203,8 +203,8 @@ bool Core::Entity::Player::load( uint32_t charId, Core::SessionPtr pSession ) if( m_hp == 0 ) m_status = ActorStatus::Dead; - if( m_bNewAdventurer ) - setStateFlag( PlayerStateFlag::NewAdventurer ); + // if( m_bNewAdventurer ) + // setStateFlag( PlayerStateFlag::NewAdventurer ); setStateFlag( PlayerStateFlag::BetweenAreas );