diff --git a/deps/datReader/Exd/Structs.h b/deps/datReader/Exd/Structs.h index 688eb16e..3eb20130 100644 --- a/deps/datReader/Exd/Structs.h +++ b/deps/datReader/Exd/Structs.h @@ -658,6 +658,12 @@ namespace Component::Excel int8_t padding0[2]; }; + struct WeatherRate + { + int32_t WeatherId[8]; + uint8_t Rate[8]; + }; + /* 195172 */ struct Aetheryte { @@ -695,8 +701,8 @@ namespace Component::Excel uint8_t BattalionMode; uint8_t ExclusiveType; uint8_t IntendedUse; + uint8_t WeatherRate; uint8_t Breath; - uint8_t Unknown; uint8_t Resident; uint8_t Unknown1; uint8_t Unknown2; @@ -1119,7 +1125,6 @@ namespace Component::Excel int8_t CNT; int8_t GEN; int8_t DEF; - int8_t padding0[2]; }; /* 201018 */ @@ -1141,14 +1146,6 @@ namespace Component::Excel float RotateSpeed_WOW; float RotateSpeed_AutoRun; float RotateSpeed_LockOn; - float RotateAccel_FFXIVRun; - float RotateAccel_FFXIVWalk; - float RotateAccel_LockOn; - float BattleMoveSpeed_Run; - float BattleMoveSpeed_RunLR; - float BattleMoveSpeed_Back; - float ScaleMale[6]; - float ScaleFemale[6]; int32_t Model; int32_t EquipHead; int32_t EquipBody; @@ -1157,19 +1154,12 @@ namespace Component::Excel uint16_t BGM; uint16_t Icon; uint16_t Action[2]; - uint8_t ExitMoveDist; - uint8_t ExitMoveSpeed; - uint8_t UIPriority; + uint16_t unknown[2]; + uint8_t unknown2[6]; uint8_t RadiusRate; - uint8_t BaseMotionSpeed_Run; - uint8_t BaseMotionSpeed_Walk; - uint8_t LinkNum; - int8_t SaveIndex; - uint8_t padding1 : 5; - uint8_t ExHotbarEnableConfig : 1; - uint8_t IsFloat : 1; - uint8_t IsEmote : 1; - int8_t padding2[3]; + uint8_t unknown3[3]; + int8_t MountOrder; + uint8_t unknown4 : 4; }; /* 201019 */ @@ -1818,14 +1808,14 @@ namespace Component::Excel uint8_t Event; uint8_t ConditionType; uint8_t ConditionOperator; - uint8_t VisibleCallback : 1; - uint8_t ConditionCallback : 1; - uint8_t BehaviorCallback : 1; - uint8_t ItemCallback : 1; - uint8_t TargetingPossibleCallback : 1; - uint8_t QualifiedCallback : 1; - uint8_t AnnounceCallback : 1; uint8_t AcceptCallback : 1; + uint8_t AnnounceCallback : 1; + uint8_t QualifiedCallback : 1; + uint8_t TargetingPossibleCallback : 1; + uint8_t ItemCallback : 1; + uint8_t BehaviorCallback : 1; + uint8_t ConditionCallback : 1; + uint8_t VisibleCallback : 1; }; /* 264322 */ diff --git a/deps/datReaderPs3/Exd/Structs.h b/deps/datReaderPs3/Exd/Structs.h index 03a46f7a..8602ce38 100644 --- a/deps/datReaderPs3/Exd/Structs.h +++ b/deps/datReaderPs3/Exd/Structs.h @@ -653,8 +653,8 @@ namespace Component::Excel::Ps3 struct Aetheryte { AetheryteTextStruct Text; + uint32_t EventHandler; uint32_t PopRange[4]; - int32_t EventHandler; uint16_t TelepoName; uint16_t TransferName; uint16_t TerritoryType; diff --git a/sql/schema/schema.sql b/sql/schema/schema.sql index aca5718b..b0a5c6e7 100644 --- a/sql/schema/schema.sql +++ b/sql/schema/schema.sql @@ -517,17 +517,6 @@ CREATE TABLE `uniqueiddata` ( PRIMARY KEY(`NextId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -CREATE TABLE `zonepositions` ( - `id` int(11) NOT NULL, - `target_zone_id` int(11) NOT NULL, - `pos_x` float NOT NULL, - `pos_y` float NOT NULL, - `pos_z` float NOT NULL, - `pos_o` float NOT NULL, - `radius` int(11) NOT NULL DEFAULT '2', - PRIMARY KEY(`id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; - CREATE TABLE `landplaceditems` ( `ItemId` INT(20) UNSIGNED NOT NULL, `PosX` FLOAT NOT NULL, diff --git a/src/common/Common.h b/src/common/Common.h index 5a6efcdc..5375c46c 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -506,7 +506,13 @@ namespace Sapphire::Common Return = 1, Teleport = 4, GearSets = 6, + MateriaMelding = 11, + AdvancedMateriaMelding = 12, + MateriaAssimilating = 13, + Dye = 14, + Glamour = 15, HuntingLog = 21, + Desynth = 95 }; enum ContainerType : uint16_t @@ -893,6 +899,7 @@ namespace Sapphire::Common KeyItemAction = 1, ItemActionVFX = 852, ItemActionVFX2 = 944, + ItemActionMount = 1322, }; enum ActionEffectDisplayType : uint8_t diff --git a/src/common/CommonGen.h b/src/common/CommonGen.h index c93a77ea..5ccefb40 100644 --- a/src/common/CommonGen.h +++ b/src/common/CommonGen.h @@ -475,30 +475,32 @@ enum class OnlineStatus : uint8_t Offline = 10, Busy = 11, PvP = 12, - ViewingCutscene = 13, - UsingaChocoboPorter = 14, - AwayfromKeyboard = 15, - LookingforRepairs = 16, - LookingtoRepair = 17, - LookingtoMeldMateria = 18, - LookingforParty = 19, - //Missing = 20 - WaitingforDutyFinder = 21, - RecruitingPartyMembers = 22, - AllianceLeader = 23, - AlliancePartyLeader = 24, - AlliancePartyMember = 25, - PartyLeader = 26, - PartyMember = 27, - AnotherWorld = 28, - SharingDuty = 29, - SimilarDuty = 30, - InDuty = 31, - TrialAdventurer = 32, - NewAdventurer = 33, - FreeCompany = 34, - GrandCompany = 35, - Online = 36, + PlayingTripleTriad = 13, + ViewingCutscene = 14, + UsingaChocoboPorter = 15, + AwayfromKeyboard = 16, + LookingforRepairs = 17, + LookingtoRepair = 18, + LookingtoMeldMateria = 19, + LookingforParty = 20, + //Missing = 21 + WaitingforDutyFinder = 22, + RecruitingPartyMembers = 23, + NewAdventurer = 24, + AllianceLeader = 25, + AlliancePartyLeader = 26, + AlliancePartyMember = 27, + PartyLeader = 28, + PartyMember = 29, + AnotherWorld = 30, + SharingDuty = 31, + SimilarDuty = 32, + InDuty = 33, + TrialAdventurer = 34, + + FreeCompany = 35, + GrandCompany = 36, + Online = 37, }; /////////////////////////////////////////////////////////// @@ -512,8 +514,6 @@ enum class Race : uint8_t Miqote = 4, Roegadyn = 5, AuRa = 6, - Hrothgar = 7, - Viera = 8, }; /////////////////////////////////////////////////////////// @@ -548,8 +548,6 @@ enum class Town : uint8_t Gridania = 2, Uldah = 3, Ishgard = 4, - Kugane = 7, - TheCrystarium = 10, }; /////////////////////////////////////////////////////////// @@ -612,81 +610,6 @@ enum class Weather : uint8_t RoyalLevin = 53, Hyperelectricity = 54, RoyalLevin1 = 55, - Oppression5 = 56, - Thunder1 = 57, - Thunder2 = 58, - CutScene = 59, - Multiplicity = 60, - Multiplicity1 = 61, - Rain1 = 62, - FairSkies7 = 63, - Rain2 = 64, - FairSkies8 = 65, - Dragonstorms = 66, - Dragonstorms1 = 67, - Subterrain = 68, - Concordance = 69, - Concordance1 = 70, - BeyondTime = 71, - BeyondTime1 = 72, - BeyondTime2 = 73, - DemonicInfinity = 74, - DemonicInfinity1 = 75, - DemonicInfinity2 = 76, - DimensionalDisruption = 77, - DimensionalDisruption1 = 78, - DimensionalDisruption2 = 79, - Revelstorms = 80, - Revelstorms1 = 81, - EternalBliss = 82, - EternalBliss1 = 83, - Wyrmstorms = 84, - Wyrmstorms1 = 85, - Revelstorms2 = 86, - Quicklevin = 87, - Thunder3 = 88, - DimensionalDisruption3 = 89, - FairSkies9 = 90, - ClearSkies1 = 91, - WhiteCyclones = 92, - WhiteCyclones1 = 93, - WhiteCyclones2 = 94, - Ultimania = 95, - WhiteCyclones3 = 96, - Moonlight = 97, - Moonlight1 = 98, - Moonlight2 = 99, - Moonlight3 = 100, - FairSkies10 = 101, - Scarlet = 102, - Scarlet1 = 103, - Scarlet2 = 104, - FairSkies11 = 105, - FairSkies12 = 106, - FairSkies13 = 107, - FairSkies14 = 108, - Flames = 109, - Tsunamis = 110, - Cyclones = 111, - Geostorms = 112, - TrueBlue = 113, - TrueBlue1 = 114, - TrueBlue2 = 115, - UmbralTurbulence = 116, - TrueBlue3 = 117, - EverlastingLight = 118, - Gales2 = 119, - Termination = 120, - Termination1 = 121, - Dreams = 122, - Dreams1 = 123, - Dreams2 = 124, - Brilliance = 125, - Brilliance1 = 126, - Termination2 = 127, - Termination3 = 128, - EverlastingLight1 = 129, - Termination4 = 131, }; /////////////////////////////////////////////////////////// diff --git a/src/common/Network/CommonActorControl.h b/src/common/Network/CommonActorControl.h index 638d6415..1b0629c9 100644 --- a/src/common/Network/CommonActorControl.h +++ b/src/common/Network/CommonActorControl.h @@ -64,7 +64,7 @@ namespace Sapphire::Network::ActorControl SpawnEffect = 0x25, ToggleInvisible = 0x26, - ToggleActionUnlock = 0x29, + SetSystemActionUnlocked = 0x29, UpdateUiExp = 0x2B, SetFallDamage = 0x2D, @@ -278,6 +278,12 @@ namespace Sapphire::Network::ActorControl */ SetMountSpeed = 0x39F, + /*! + * param1 = mount ID + * param2 = unlock/lock (1/0) + */ + SetMountBitmask = 0x387, + Dismount = 0x3A1, // updated 4.5 // Duty Recorder diff --git a/src/common/Network/PacketDef/ServerIpcs.h b/src/common/Network/PacketDef/ServerIpcs.h index cffd73c1..29424c3e 100644 --- a/src/common/Network/PacketDef/ServerIpcs.h +++ b/src/common/Network/PacketDef/ServerIpcs.h @@ -45,6 +45,8 @@ namespace Sapphire::Network::Packets RegionInfo = 0x0069, MoveTerritory = 0x006A, + MoveInstance = 0x006B, + SetPSNId = 0x0073, SetBillingTime = 0x0075, @@ -387,7 +389,6 @@ namespace Sapphire::Network::Packets NpcSpawn = 0x00B3, // updated 5.21 hotfix InventoryActionAck = 0x01B2, // updated 5.21 hotfix UpdateInventorySlot = 0x0213, // updated 5.21 hotfix - PrepareZoning = 0x00B6, // updated 5.21 hotfix }; } diff --git a/src/common/Network/PacketDef/Zone/ClientZoneDef.h b/src/common/Network/PacketDef/Zone/ClientZoneDef.h index 9815aa2e..15463019 100644 --- a/src/common/Network/PacketDef/Zone/ClientZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ClientZoneDef.h @@ -334,6 +334,18 @@ struct FFXIVIpcPingHandler : FFXIVIpcBasePacket< Sync > ZoneProtoUpClientPos position; }; +struct FFXIVIpcLoginHandler : FFXIVIpcBasePacket< Login > +{ + uint32_t clientTimeValue; + uint32_t arg2; + uint64_t arg3; + uint64_t arg4; + int32_t contentFinderStatus; + int32_t contentFinderFlags; + char name[32]; + char arg1[48]; +}; + struct FFXIVIpcFindContent : FFXIVIpcBasePacket< FindContent > { uint16_t territoryType; diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 0047e6c4..1430bdd5 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1664,6 +1664,17 @@ namespace Sapphire::Network::Packets::WorldPackets::Server char worldName[32]; }; + struct FFXIVIpcMoveInstance : FFXIVIpcBasePacket< MoveInstance > + { + uint64_t characterId; + uint32_t entityId; + uint16_t worldId; + uint16_t worldId1; + uint64_t unknown1; + uint64_t unknown2; + //TODO... TO BE MAPPED + }; + /** * */ @@ -1690,23 +1701,6 @@ namespace Sapphire::Network::Packets::WorldPackets::Server struct DailyQuest dailyQuestArray[6]; }; - /** - * Structural representation of the packet sent by the server - * prepare zoning, showing screenmessage - */ - struct FFXIVIpcPrepareZoning : FFXIVIpcBasePacket< PrepareZoning > - { - uint32_t logMessage; - uint16_t targetZone; - uint16_t animation; - uint8_t param4; - uint8_t hideChar; - uint8_t fadeOut; - uint8_t param7; - uint8_t fadeOutTime; - uint8_t unknown; // this changes whether or not the destination zone's name displays during the loading screen. Seems to always be 9 (=hidden) when going to an instance and certain zones, 0 otherwise. - uint16_t padding; - }; /** * Structural representation of the packet sent by the server diff --git a/src/common/Util/UtilMath.cpp b/src/common/Util/UtilMath.cpp index b2255bac..6a162d64 100644 --- a/src/common/Util/UtilMath.cpp +++ b/src/common/Util/UtilMath.cpp @@ -139,7 +139,7 @@ float Util::trunc( float value, uint8_t digitsToRemain ) if( digitsToRemain == 0 ) return std::floor( value ); - float factor = std::pow( 10, digitsToRemain ); + auto factor = static_cast< float >( std::pow( 10.f, digitsToRemain ) ); return std::floor( value * factor ) / factor; } diff --git a/src/scripts/action/common/ActionReturn6.cpp b/src/scripts/action/common/ActionReturn6.cpp index aedb0a38..539ba1a0 100644 --- a/src/scripts/action/common/ActionReturn6.cpp +++ b/src/scripts/action/common/ActionReturn6.cpp @@ -17,7 +17,7 @@ public: if( !action.getSourceChara()->isPlayer() ) return; - action.getSourceChara()->getAsPlayer()->returnToHomepoint(); + action.getSourceChara()->getAsPlayer()->teleport( action.getSourceChara()->getAsPlayer()->getHomepoint(), 3 ); } }; diff --git a/src/scripts/common/aethernet/Aetheryte.cpp b/src/scripts/common/aethernet/Aetheryte.cpp index 43739430..e6828929 100644 --- a/src/scripts/common/aethernet/Aetheryte.cpp +++ b/src/scripts/common/aethernet/Aetheryte.cpp @@ -101,7 +101,7 @@ public: else { eventMgr().sendEventNotice( player, eventId, 0, 1, 1, 0 ); - player.learnAction( Common::UnlockEntry::Teleport ); + player.setSystemActionUnlocked( Common::UnlockEntry::Teleport ); } }, []( Entity::Player& player, uint32_t eventId, uint64_t additional ) diff --git a/src/scripts/common/warptaxi/WarpTaxi.cpp b/src/scripts/common/warptaxi/WarpTaxi.cpp index 7d9f835e..f849dc2a 100644 --- a/src/scripts/common/warptaxi/WarpTaxi.cpp +++ b/src/scripts/common/warptaxi/WarpTaxi.cpp @@ -22,7 +22,7 @@ public: void inner( Entity::Player& player, const Event::SceneResult& result ) { - if( result.numOfResults == 1 ) // exit +/* if( result.numOfResults == 1 ) // exit { eventMgr().eventFinish( player, 1310721, 0 ); eventMgr().eventFinish( player, getId(), 1 ); @@ -59,24 +59,24 @@ public: { eventMgr().playScene( player, 1310721, 0, HIDE_HOTBAR, { 1, 341 }, std::bind( &WarpTaxi::inner, this, std::placeholders::_1, std::placeholders::_2 ) ); - } + }*/ } void inner2( Entity::Player& player, uint64_t actorId ) { - eventMgr().playScene( player, getId(), 0, HIDE_HOTBAR, { 32529 }, + /* eventMgr().playScene( player, getId(), 0, HIDE_HOTBAR, { 32529 }, [this, actorId]( Entity::Player& player, const Event::SceneResult& result ) { eventMgr().eventStart( player, actorId, 1310721, Event::EventHandler::Nest, 1, 0 ); eventMgr().playScene( player, 1310721, 0, HIDE_HOTBAR, { 1, 341 }, std::bind( &WarpTaxi::inner, this, std::placeholders::_1, std::placeholders::_2 ) ); - } ); + } );*/ } void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto& exdData = Common::Service< Sapphire::Data::ExdData >::ref(); +/* auto& exdData = Common::Service< Sapphire::Data::ExdData >::ref(); auto warp = exdData.getRow< Component::Excel::Warp >( eventId ); if( !warp ) @@ -85,7 +85,7 @@ public: // EXD TODO: Not sure Warpcondition is correct here eventMgr().eventStart( player, actorId, warp->data().WarpCondition, Event::EventHandler::Nest, 0, 0, std::bind( &WarpTaxi::inner2, this, std::placeholders::_1, std::placeholders::_2 ) ); - eventMgr().playScene( player, warp->data().WarpCondition, 0, HIDE_HOTBAR, { 7 }, nullptr ); + eventMgr().playScene( player, warp->data().WarpCondition, 0, HIDE_HOTBAR, { 7 }, nullptr );*/ } }; diff --git a/src/scripts/instances/raids/AlphascapeV10.cpp b/src/scripts/instances/raids/AlphascapeV10.cpp deleted file mode 100644 index 28ac27be..00000000 --- a/src/scripts/instances/raids/AlphascapeV10.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class AlphascapeV10 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - AlphascapeV10() : - Sapphire::ScriptAPI::InstanceContentScript( 30069 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 7575331, 4, { 96.398201f, 0.000000f, 100.555702f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 7575332, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2007457, 7575333, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2007457, 7575334, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2007457, 7586460, 4, { 101.415100f, -0.000000f, 101.219002f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2007457, 7574103, 5, { 105.000000f, 0.000000f, 115.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 100.000000f, 0.000000f, 85.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 7575443, 4, { 100.300003f, 0.000000f, 100.300003f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( AlphascapeV10 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/AlphascapeV10Savage.cpp b/src/scripts/instances/raids/AlphascapeV10Savage.cpp deleted file mode 100644 index b1a36d8d..00000000 --- a/src/scripts/instances/raids/AlphascapeV10Savage.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class AlphascapeV10Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - AlphascapeV10Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30073 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 7575331, 4, { 96.398201f, 0.000000f, 100.555702f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 7575332, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2007457, 7575333, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2007457, 7575334, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2007457, 7586460, 4, { 101.415100f, -0.000000f, 101.219002f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2007457, 7574103, 5, { 105.000000f, 0.000000f, 115.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 100.000000f, 0.000000f, 85.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 7575443, 4, { 100.300003f, 0.000000f, 100.300003f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( AlphascapeV10Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/AlphascapeV20.cpp b/src/scripts/instances/raids/AlphascapeV20.cpp deleted file mode 100644 index 6e59e502..00000000 --- a/src/scripts/instances/raids/AlphascapeV20.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class AlphascapeV20 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - AlphascapeV20() : - Sapphire::ScriptAPI::InstanceContentScript( 30070 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 7684588, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2000182, 7581179, 5, { 100.000000f, 0.000000f, 115.000000f }, 1.000000f, -0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 100.000000f, 0.000000f, 85.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( AlphascapeV20 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/AlphascapeV20Savage.cpp b/src/scripts/instances/raids/AlphascapeV20Savage.cpp deleted file mode 100644 index d623839a..00000000 --- a/src/scripts/instances/raids/AlphascapeV20Savage.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class AlphascapeV20Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - AlphascapeV20Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30074 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 7684588, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2000182, 7581179, 5, { 100.000000f, 0.000000f, 115.000000f }, 1.000000f, -0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 100.000000f, 0.000000f, 85.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( AlphascapeV20Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/AlphascapeV30.cpp b/src/scripts/instances/raids/AlphascapeV30.cpp deleted file mode 100644 index be25bae7..00000000 --- a/src/scripts/instances/raids/AlphascapeV30.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class AlphascapeV30 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - AlphascapeV30() : - Sapphire::ScriptAPI::InstanceContentScript( 30071 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2009609, 0, 4, { 92.761772f, 0.000000f, 106.354897f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2009610, 0, 4, { 93.034180f, -0.015320f, 106.645302f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_2", 2007457, 7604877, 4, { 103.128403f, 0.000000f, 107.047600f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2007457, 7624116, 4, { 105.371498f, 0.000000f, 104.860802f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2009653, 0, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2007457, 7593474, 5, { 104.466499f, 0.000000f, 114.605797f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 100.000000f, 0.000000f, 85.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( AlphascapeV30 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/AlphascapeV30Savage.cpp b/src/scripts/instances/raids/AlphascapeV30Savage.cpp deleted file mode 100644 index 148902e5..00000000 --- a/src/scripts/instances/raids/AlphascapeV30Savage.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class AlphascapeV30Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - AlphascapeV30Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30075 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2009609, 0, 4, { 92.761772f, 0.000000f, 106.354897f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2009610, 0, 4, { 93.034180f, -0.015320f, 106.645302f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_2", 2007457, 7604877, 4, { 103.128403f, 0.000000f, 107.047600f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2007457, 7624116, 4, { 105.371498f, 0.000000f, 104.860802f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2009653, 0, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2007457, 7593474, 5, { 104.466499f, 0.000000f, 114.605797f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 100.000000f, 0.000000f, 85.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( AlphascapeV30Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/AlphascapeV40.cpp b/src/scripts/instances/raids/AlphascapeV40.cpp deleted file mode 100644 index d2db0c14..00000000 --- a/src/scripts/instances/raids/AlphascapeV40.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class AlphascapeV40 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - AlphascapeV40() : - Sapphire::ScriptAPI::InstanceContentScript( 30072 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 7570953, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 7624865, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2007457, 7624868, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2007457, 7624869, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2007457, 7624870, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 7624871, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2007457, 7624872, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_7", 2007457, 7624873, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_8", 2007457, 7672994, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2000182, 7581279, 5, { 100.000000f, 0.000000f, 115.000000f }, 1.000000f, -0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 100.000000f, 0.000000f, 84.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( AlphascapeV40 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/AlphascapeV40Savage.cpp b/src/scripts/instances/raids/AlphascapeV40Savage.cpp deleted file mode 100644 index 278bdc75..00000000 --- a/src/scripts/instances/raids/AlphascapeV40Savage.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class AlphascapeV40Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - AlphascapeV40Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30076 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 7570953, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 7624865, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2007457, 7624868, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2007457, 7624869, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2007457, 7624870, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 7624871, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2007457, 7624872, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_7", 2007457, 7624873, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_8", 2007457, 7672994, 4, { 100.000000f, 0.000000f, 100.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2000182, 7581279, 5, { 100.000000f, 0.000000f, 115.000000f }, 1.000000f, -0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 100.000000f, 0.000000f, 84.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( AlphascapeV40Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/DeltascapeV10.cpp b/src/scripts/instances/raids/DeltascapeV10.cpp deleted file mode 100644 index 6e1e33fc..00000000 --- a/src/scripts/instances/raids/DeltascapeV10.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class DeltascapeV10 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - DeltascapeV10() : - Sapphire::ScriptAPI::InstanceContentScript( 30049 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 6791878, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 6885561, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_2", 2007457, 6852121, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "Entrance", 2000182, 6910535, 5, { 0.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -16.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( DeltascapeV10 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/DeltascapeV10Savage.cpp b/src/scripts/instances/raids/DeltascapeV10Savage.cpp deleted file mode 100644 index d078b33c..00000000 --- a/src/scripts/instances/raids/DeltascapeV10Savage.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class DeltascapeV10Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - DeltascapeV10Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30053 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 6791878, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 6885561, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_2", 2007457, 6852121, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "Entrance", 2000182, 6910535, 5, { 0.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -16.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( DeltascapeV10Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/DeltascapeV20.cpp b/src/scripts/instances/raids/DeltascapeV20.cpp deleted file mode 100644 index e1d38780..00000000 --- a/src/scripts/instances/raids/DeltascapeV20.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class DeltascapeV20 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - DeltascapeV20() : - Sapphire::ScriptAPI::InstanceContentScript( 30050 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2008482, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 6872632, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "Entrance", 2000182, 6910926, 5, { 0.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -16.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( DeltascapeV20 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/DeltascapeV20Savage.cpp b/src/scripts/instances/raids/DeltascapeV20Savage.cpp deleted file mode 100644 index ecc5dd8f..00000000 --- a/src/scripts/instances/raids/DeltascapeV20Savage.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class DeltascapeV20Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - DeltascapeV20Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30054 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2008482, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 6872632, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "Entrance", 2000182, 6910926, 5, { 0.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -16.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( DeltascapeV20Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/DeltascapeV30.cpp b/src/scripts/instances/raids/DeltascapeV30.cpp deleted file mode 100644 index 57afdc5e..00000000 --- a/src/scripts/instances/raids/DeltascapeV30.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class DeltascapeV30 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - DeltascapeV30() : - Sapphire::ScriptAPI::InstanceContentScript( 30051 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "Matterrelocationdevice", 2008501, 6913059, 4, { 230.975693f, 231.836197f, -19.028080f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_0", 2007457, 6792212, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 6847573, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2007457, 6848219, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3o4_a1_mto01", 2007457, 6953156, 4, { 250.000000f, 250.995605f, 0.000000f }, 1.000000f, -0.000000f ); - // States -> mete_hide (id: 19) mete_pre (id: 20) mete_phase_1 (id: 21) mete_phase_2 (id: 22) mete_phase_3 (id: 23) mete_phase_4 (id: 24) mete_fade (id: 25) mete_phase_5 (id: 26) - instance.registerEObj( "unknown_3", 2007457, 6929138, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2007457, 6847577, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 6853325, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2007457, 6853774, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_7", 2007457, 6846630, 4, { -15.000000f, 0.000001f, 15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_8", 2007457, 6846632, 4, { -5.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_9", 2007457, 6846634, 4, { 5.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_10", 2007457, 6846637, 4, { 15.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_11", 2007457, 6846642, 4, { -15.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_12", 2007457, 6846643, 4, { -5.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_13", 2007457, 6846644, 4, { 5.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_14", 2007457, 6846645, 4, { 15.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2000182, 6912959, 5, { 0.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -10.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( DeltascapeV30 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/DeltascapeV30Savage.cpp b/src/scripts/instances/raids/DeltascapeV30Savage.cpp deleted file mode 100644 index 805b003f..00000000 --- a/src/scripts/instances/raids/DeltascapeV30Savage.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class DeltascapeV30Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - DeltascapeV30Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30055 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "Matterrelocationdevice", 2008501, 6913059, 4, { 230.975693f, 231.836197f, -19.028080f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_0", 2007457, 6792212, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 6847573, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2007457, 6848219, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3o4_a1_mto01", 2007457, 6953156, 4, { 250.000000f, 250.995605f, 0.000000f }, 1.000000f, -0.000000f ); - // States -> mete_hide (id: 19) mete_pre (id: 20) mete_phase_1 (id: 21) mete_phase_2 (id: 22) mete_phase_3 (id: 23) mete_phase_4 (id: 24) mete_fade (id: 25) mete_phase_5 (id: 26) - instance.registerEObj( "unknown_3", 2007457, 6929138, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2007457, 6847577, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 6853325, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2007457, 6853774, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_7", 2007457, 6846630, 4, { -15.000000f, 0.000001f, 15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_8", 2007457, 6846632, 4, { -5.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_9", 2007457, 6846634, 4, { 5.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_10", 2007457, 6846637, 4, { 15.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_11", 2007457, 6846642, 4, { -15.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_12", 2007457, 6846643, 4, { -5.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_13", 2007457, 6846644, 4, { 5.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_14", 2007457, 6846645, 4, { 15.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2000182, 6912959, 5, { 0.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -10.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( DeltascapeV30Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/DeltascapeV40.cpp b/src/scripts/instances/raids/DeltascapeV40.cpp deleted file mode 100644 index c2699501..00000000 --- a/src/scripts/instances/raids/DeltascapeV40.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class DeltascapeV40 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - DeltascapeV40() : - Sapphire::ScriptAPI::InstanceContentScript( 30052 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 6925502, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 6925503, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2007457, 6925504, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2007457, 6936015, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2007457, 6865650, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 6872744, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2008483, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -17.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2000182, 6914211, 5, { 0.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( DeltascapeV40 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/DeltascapeV40Savage.cpp b/src/scripts/instances/raids/DeltascapeV40Savage.cpp deleted file mode 100644 index 9aaf42c2..00000000 --- a/src/scripts/instances/raids/DeltascapeV40Savage.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class DeltascapeV40Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - DeltascapeV40Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30056 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 6925502, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 6925503, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2007457, 6925504, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2007457, 6936015, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2007457, 6865650, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 6872744, 4, { 0.000000f, 0.000000f, 0.038952f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2008483, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -17.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2000182, 6914211, 5, { 0.000000f, 0.000000f, 15.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( DeltascapeV40Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/SigmascapeV10.cpp b/src/scripts/instances/raids/SigmascapeV10.cpp deleted file mode 100644 index 87fe1625..00000000 --- a/src/scripts/instances/raids/SigmascapeV10.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class SigmascapeV10 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - SigmascapeV10() : - Sapphire::ScriptAPI::InstanceContentScript( 30059 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "sgbg_z3o7_a0_ghr01", 2007457, 7230603, 4, { -6.335131f, 0.049939f, -10.559780f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3o7_a0_ghr01_1", 2007457, 7230604, 4, { -5.699108f, 0.049922f, -2.387848f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3o7_a0_ghr01_2", 2007457, 7230605, 4, { -6.369749f, 0.050002f, 7.711805f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3o7_a0_ghr01_3", 2007457, 7230606, 4, { -6.234384f, 0.050004f, 17.721371f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b1256", 2009408, 7231049, 4, { -3.117226f, 0.050002f, 9.861297f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3o7_b1346", 2009409, 7231069, 4, { -25.851500f, 16.520651f, 22.008921f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_0", 2007457, 7274404, 4, { -22.963020f, -2.647718f, 8.151876f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3o7_b1359", 2007457, 7297633, 4, { -30.500000f, 0.552600f, 43.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2009384, 0, 4, { 220.569107f, -108.812103f, 5.081238f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream", 2009400, 7231089, 4, { 144.482300f, -110.000000f, -71.090813f }, 0.991760f, 0.000046f ); - instance.registerEObj( "Aetherialstream_1", 2009401, 7231090, 4, { 144.468994f, -110.000000f, -23.514120f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_2", 2009402, 7231091, 4, { 144.456100f, -110.000000f, 23.836590f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_3", 2009403, 7231092, 4, { 144.470901f, -110.000000f, 71.062202f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_4", 2009404, 7231093, 4, { 215.991302f, -110.000000f, -71.152832f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_5", 2009405, 7231096, 4, { 215.991302f, -110.000000f, -23.514160f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_6", 2009406, 7231097, 4, { 215.991302f, -110.000000f, 23.880310f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_7", 2009407, 7231098, 4, { 215.991302f, -110.000000f, 71.061279f }, 0.991760f, 0.000048f ); - instance.registerEObj( "sgvf_z3o7_b1359_1", 2007457, 7297634, 4, { 178.511902f, -110.002403f, -0.198364f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Entrance", 2007457, 7181869, 5, { -3.537696f, 0.000001f, 18.750830f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.076233f, -0.015320f, -9.170715f }, 0.991760f, 0.000048f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( SigmascapeV10 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/SigmascapeV10Savage.cpp b/src/scripts/instances/raids/SigmascapeV10Savage.cpp deleted file mode 100644 index e4e07d31..00000000 --- a/src/scripts/instances/raids/SigmascapeV10Savage.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class SigmascapeV10Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - SigmascapeV10Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30063 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "sgbg_z3o7_a0_ghr01", 2007457, 7230603, 4, { -6.335131f, 0.049939f, -10.559780f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3o7_a0_ghr01_1", 2007457, 7230604, 4, { -5.699108f, 0.049922f, -2.387848f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3o7_a0_ghr01_2", 2007457, 7230605, 4, { -6.369749f, 0.050002f, 7.711805f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3o7_a0_ghr01_3", 2007457, 7230606, 4, { -6.234384f, 0.050004f, 17.721371f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b1256", 2009408, 7231049, 4, { -3.117226f, 0.050002f, 9.861297f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3o7_b1346", 2009409, 7231069, 4, { -25.851500f, 16.520651f, 22.008921f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_0", 2007457, 7274404, 4, { -22.963020f, -2.647718f, 8.151876f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3o7_b1359", 2007457, 7297633, 4, { -30.500000f, 0.552600f, 43.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2009384, 0, 4, { 220.569107f, -108.812103f, 5.081238f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream", 2009400, 7231089, 4, { 144.482300f, -110.000000f, -71.090813f }, 0.991760f, 0.000046f ); - instance.registerEObj( "Aetherialstream_1", 2009401, 7231090, 4, { 144.468994f, -110.000000f, -23.514120f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_2", 2009402, 7231091, 4, { 144.456100f, -110.000000f, 23.836590f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_3", 2009403, 7231092, 4, { 144.470901f, -110.000000f, 71.062202f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_4", 2009404, 7231093, 4, { 215.991302f, -110.000000f, -71.152832f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_5", 2009405, 7231096, 4, { 215.991302f, -110.000000f, -23.514160f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_6", 2009406, 7231097, 4, { 215.991302f, -110.000000f, 23.880310f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Aetherialstream_7", 2009407, 7231098, 4, { 215.991302f, -110.000000f, 71.061279f }, 0.991760f, 0.000048f ); - instance.registerEObj( "sgvf_z3o7_b1359_1", 2007457, 7297634, 4, { 178.511902f, -110.002403f, -0.198364f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Entrance", 2007457, 7181869, 5, { -3.537696f, 0.000001f, 18.750830f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.076233f, -0.015320f, -9.170715f }, 0.991760f, 0.000048f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( SigmascapeV10Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/SigmascapeV20.cpp b/src/scripts/instances/raids/SigmascapeV20.cpp deleted file mode 100644 index c4f95c7e..00000000 --- a/src/scripts/instances/raids/SigmascapeV20.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class SigmascapeV20 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - SigmascapeV20() : - Sapphire::ScriptAPI::InstanceContentScript( 30060 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 7244294, 4, { -6.511937f, 0.003125f, -4.958800f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 7181375, 4, { 12.476670f, -0.015002f, 6.948618f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_2", 2007457, 7181377, 4, { 12.570220f, -0.015320f, -9.693607f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_3", 2007457, 7329867, 4, { -4.318359f, -0.015320f, 5.722107f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_4", 2007457, 7187344, 4, { -1.960858f, 0.001128f, 0.319698f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 7174526, 4, { -6.872698f, 0.004465f, 1.843464f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2007457, 7174523, 4, { 11.220570f, 0.054783f, -1.564175f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_7", 2007457, 7174518, 4, { 8.520967f, 0.009985f, -8.679861f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_8", 2007457, 7174519, 4, { 9.028366f, 0.055644f, 3.513119f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_9", 2007457, 7180548, 4, { 2.311234f, 0.003611f, 3.656348f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_10", 2007457, 7244420, 4, { 2.385169f, 0.003358f, 3.242888f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_11", 2007457, 7181938, 4, { 15.676980f, 0.010429f, -11.942520f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_12", 2007457, 7181940, 4, { 16.526520f, 0.010429f, 11.441620f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_13", 2007457, 7181939, 4, { -16.083740f, 0.010429f, 11.147680f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_14", 2007457, 7181937, 4, { -16.250851f, -0.015320f, -11.795230f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Entrance", 2000182, 7179724, 5, { -1.443299f, 0.007087f, 6.836350f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -11.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_15", 2007457, 7171885, 4, { 4.955309f, 0.000000f, -52.142441f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( SigmascapeV20 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/SigmascapeV20Savage.cpp b/src/scripts/instances/raids/SigmascapeV20Savage.cpp deleted file mode 100644 index 6fea178c..00000000 --- a/src/scripts/instances/raids/SigmascapeV20Savage.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class SigmascapeV20Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - SigmascapeV20Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30064 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2007457, 7244294, 4, { -6.511937f, 0.003125f, -4.958800f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2007457, 7181375, 4, { 12.476670f, -0.015002f, 6.948618f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_2", 2007457, 7181377, 4, { 12.570220f, -0.015320f, -9.693607f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_3", 2007457, 7329867, 4, { -4.318359f, -0.015320f, 5.722107f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_4", 2007457, 7187344, 4, { -1.960858f, 0.001128f, 0.319698f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 7174526, 4, { -6.872698f, 0.004465f, 1.843464f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2007457, 7174523, 4, { 11.220570f, 0.054783f, -1.564175f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_7", 2007457, 7174518, 4, { 8.520967f, 0.009985f, -8.679861f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_8", 2007457, 7174519, 4, { 9.028366f, 0.055644f, 3.513119f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_9", 2007457, 7180548, 4, { 2.311234f, 0.003611f, 3.656348f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_10", 2007457, 7244420, 4, { 2.385169f, 0.003358f, 3.242888f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_11", 2007457, 7181938, 4, { 15.676980f, 0.010429f, -11.942520f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_12", 2007457, 7181940, 4, { 16.526520f, 0.010429f, 11.441620f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_13", 2007457, 7181939, 4, { -16.083740f, 0.010429f, 11.147680f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_14", 2007457, 7181937, 4, { -16.250851f, -0.015320f, -11.795230f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Entrance", 2000182, 7179724, 5, { -1.443299f, 0.007087f, 6.836350f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -11.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_15", 2007457, 7171885, 4, { 4.955309f, 0.000000f, -52.142441f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( SigmascapeV20Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/SigmascapeV30.cpp b/src/scripts/instances/raids/SigmascapeV30.cpp deleted file mode 100644 index 2305ea66..00000000 --- a/src/scripts/instances/raids/SigmascapeV30.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class SigmascapeV30 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - SigmascapeV30() : - Sapphire::ScriptAPI::InstanceContentScript( 30061 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "Entrance", 2000182, 7174192, 5, { -0.028109f, 0.000000f, 12.665810f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_0", 2009292, 7185733, 4, { -7.736383f, 3.268075f, -35.776291f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2009293, 7185734, 4, { 10.155860f, 3.268075f, -35.738319f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2009294, 0, 4, { 18.075230f, 0.000000f, -16.894060f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2009295, 0, 4, { 15.384740f, 0.000000f, -8.198026f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2009296, 0, 4, { 17.399639f, 0.000000f, -8.148316f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2009297, 0, 4, { 10.133680f, 0.000000f, -9.799342f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2009298, 0, 4, { 12.524550f, 0.000000f, -0.314495f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_7", 2009299, 0, 4, { 4.409851f, -0.015320f, -0.839294f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_8", 2009300, 0, 4, { 10.240340f, 0.000000f, 2.827696f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_9", 2009301, 0, 4, { 12.606230f, 0.000000f, 7.149309f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_10", 2009302, 7178404, 4, { 0.616980f, 0.000000f, 0.677854f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( SigmascapeV30 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/SigmascapeV30Savage.cpp b/src/scripts/instances/raids/SigmascapeV30Savage.cpp deleted file mode 100644 index 4ff275a8..00000000 --- a/src/scripts/instances/raids/SigmascapeV30Savage.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class SigmascapeV30Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - SigmascapeV30Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30065 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "Entrance", 2000182, 7174192, 5, { -0.028109f, 0.000000f, 12.665810f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_0", 2009292, 7185733, 4, { -7.736383f, 3.268075f, -35.776291f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2009293, 7185734, 4, { 10.155860f, 3.268075f, -35.738319f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2009294, 0, 4, { 18.075230f, 0.000000f, -16.894060f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2009295, 0, 4, { 15.384740f, 0.000000f, -8.198026f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_4", 2009296, 0, 4, { 17.399639f, 0.000000f, -8.148316f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2009297, 0, 4, { 10.133680f, 0.000000f, -9.799342f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2009298, 0, 4, { 12.524550f, 0.000000f, -0.314495f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_7", 2009299, 0, 4, { 4.409851f, -0.015320f, -0.839294f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_8", 2009300, 0, 4, { 10.240340f, 0.000000f, 2.827696f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_9", 2009301, 0, 4, { 12.606230f, 0.000000f, 7.149309f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_10", 2009302, 7178404, 4, { 0.616980f, 0.000000f, 0.677854f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( SigmascapeV30Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/SigmascapeV40.cpp b/src/scripts/instances/raids/SigmascapeV40.cpp deleted file mode 100644 index e67b4eeb..00000000 --- a/src/scripts/instances/raids/SigmascapeV40.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class SigmascapeV40 : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - SigmascapeV40() : - Sapphire::ScriptAPI::InstanceContentScript( 30062 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "sgbg_z3oa_a0_gmc01", 2007457, 7307403, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_0", 2008982, 0, 4, { -0.015320f, -0.015320f, -0.015320f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_1", 2008978, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2008979, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2008980, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_4", 2008981, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_5", 2008976, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_6", 2008977, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "sgvf_z3oa_b1351", 2007457, 7296769, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_7", 2000051, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_8", 2000052, 0, 4, { 0.000000f, 0.000000f, -5.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_9", 2008626, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_10", 2008627, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_11", 2008629, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_12", 2008630, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_13", 2006821, 0, 4, { -0.015320f, -0.015320f, -0.015320f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Entrance", 2000182, 7181990, 5, { 0.000000f, 0.000000f, 14.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -16.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( SigmascapeV40 ); \ No newline at end of file diff --git a/src/scripts/instances/raids/SigmascapeV40Savage.cpp b/src/scripts/instances/raids/SigmascapeV40Savage.cpp deleted file mode 100644 index 17bbaa75..00000000 --- a/src/scripts/instances/raids/SigmascapeV40Savage.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class SigmascapeV40Savage : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - SigmascapeV40Savage() : - Sapphire::ScriptAPI::InstanceContentScript( 30066 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "sgbg_z3oa_a0_gmc01", 2007457, 7307403, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_0", 2008982, 0, 4, { -0.015320f, -0.015320f, -0.015320f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_1", 2008978, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2008979, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_3", 2008980, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_4", 2008981, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_5", 2008976, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_6", 2008977, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "sgvf_z3oa_b1351", 2007457, 7296769, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_7", 2000051, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_8", 2000052, 0, 4, { 0.000000f, 0.000000f, -5.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_9", 2008626, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_10", 2008627, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_11", 2008629, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_12", 2008630, 0, 4, { 0.000000f, 0.000000f, 0.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_13", 2006821, 0, 4, { -0.015320f, -0.015320f, -0.015320f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Entrance", 2000182, 7181990, 5, { 0.000000f, 0.000000f, 14.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -16.000000f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( SigmascapeV40Savage ); \ No newline at end of file diff --git a/src/scripts/instances/raids/TheOrbonneMonastery.cpp b/src/scripts/instances/raids/TheOrbonneMonastery.cpp deleted file mode 100644 index c09bcd30..00000000 --- a/src/scripts/instances/raids/TheOrbonneMonastery.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class TheOrbonneMonastery : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - TheOrbonneMonastery() : - Sapphire::ScriptAPI::InstanceContentScript( 30077 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "sgvf_w_lvd_b0250", 2007457, 7725374, 4, { 599.697021f, 0.000000f, 384.788696f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_0", 2007791, 0, 4, { 600.046814f, 0.000000f, 384.120605f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2009696, 0, 4, { 581.460022f, 0.000000f, 283.458313f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2002735, 0, 4, { 599.877808f, -31.021669f, -23.567789f }, 0.991760f, 0.000048f ); - instance.registerEObj( "sgvf_w_lvd_b0118", 2007457, 7742069, 4, { 599.994080f, -31.000000f, -20.984110f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgbg_z3r3_a2_swrd1", 2007457, 7746896, 4, { 589.026978f, -31.000000f, -64.958076f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3r3_a2_swrd1_1", 2007457, 7746909, 4, { 609.340027f, -31.000000f, -43.261929f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3r3_a2_shld1", 2007457, 7746912, 4, { 608.816589f, -31.000000f, -67.144180f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3r3_a2_shld1_1", 2007457, 7746914, 4, { 592.940430f, -31.000000f, -41.502899f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0118_1", 2007457, 7749814, 4, { 605.816284f, -31.000000f, -87.291206f }, 0.991760f, 0.000048f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgvf_z3r3_b1616", 2007457, 7842482, 4, { 600.000000f, -30.000000f, -54.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3r3_a2_swrd1_2", 2007457, 7844508, 4, { 300.000000f, 0.000000f, -50.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3r3_a2_shld3", 2007457, 7845647, 4, { 600.000000f, -31.000000f, -49.000000f }, 1.000000f, 0.000000f ); - // States -> enable (id: 18) enable_a (id: 19) disable (id: 20) disable_a (id: 21) loop (id: 23) - instance.registerEObj( "sgbg_z3r3_a2_shld3_1", 2007457, 7845648, 4, { 600.000000f, -31.000000f, -29.000000f }, 1.000000f, -0.000000f ); - // States -> enable (id: 18) enable_a (id: 19) disable (id: 20) disable_a (id: 21) loop (id: 23) - instance.registerEObj( "sgbg_z3r3_a2_shld3_2", 2007457, 7845649, 4, { 592.929016f, -31.000000f, -31.928900f }, 1.000000f, -0.000000f ); - // States -> enable (id: 18) enable_a (id: 19) disable (id: 20) disable_a (id: 21) loop (id: 23) - instance.registerEObj( "sgbg_z3r3_a2_shld3_3", 2007457, 7845650, 4, { 607.070984f, -31.000000f, -31.928900f }, 1.000000f, -0.000000f ); - // States -> enable (id: 18) enable_a (id: 19) disable (id: 20) disable_a (id: 21) loop (id: 23) - instance.registerEObj( "sgbg_z3r3_a2_shld3_4", 2007457, 7845651, 4, { 594.642517f, -31.000000f, -26.065701f }, 1.000000f, -0.000000f ); - // States -> enable (id: 18) enable_a (id: 19) disable (id: 20) disable_a (id: 21) loop (id: 23) - instance.registerEObj( "sgbg_z3r3_a2_shld3_5", 2007457, 7845652, 4, { 605.357483f, -31.000000f, -26.065701f }, 1.000000f, -0.000000f ); - // States -> enable (id: 18) enable_a (id: 19) disable (id: 20) disable_a (id: 21) loop (id: 23) - instance.registerEObj( "sgbg_z3r3_a2_shld3_6", 2007457, 7845653, 4, { 587.065674f, -31.000000f, -33.642399f }, 1.000000f, -0.000000f ); - // States -> enable (id: 18) enable_a (id: 19) disable (id: 20) disable_a (id: 21) loop (id: 23) - instance.registerEObj( "sgbg_z3r3_a2_shld3_7", 2007457, 7845654, 4, { 612.934326f, -31.000000f, -33.642399f }, 1.000000f, -0.000000f ); - // States -> enable (id: 18) enable_a (id: 19) disable (id: 20) disable_a (id: 21) loop (id: 23) - instance.registerEObj( "unknown_3", 2007791, 0, 4, { -600.000000f, -600.000000f, -545.500000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0250_1", 2007457, 7740888, 4, { -606.228577f, -600.000000f, -543.124695f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_4", 2007457, 7741247, 4, { -611.437622f, -602.000000f, -586.861023f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2009684, 0, 4, { -613.782715f, -602.000000f, -582.841614f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2009685, 0, 4, { -611.078125f, -602.014221f, -583.093018f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_7", 2009681, 0, 4, { 600.000000f, -600.000000f, -630.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_8", 2009682, 0, 4, { 600.000000f, -600.000000f, -600.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_9", 2009683, 0, 4, { 605.004822f, -600.000000f, -594.049011f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_10", 2007457, 7718602, 4, { 600.000000f, -600.000000f, -600.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_11", 2007457, 7718606, 4, { 600.000000f, -600.000000f, -600.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_12", 2007457, 7718605, 4, { 600.000000f, -600.000000f, -605.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_13", 2007457, 7739045, 4, { 600.000000f, -600.000000f, -620.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_14", 2009697, 0, 4, { 599.816895f, -600.000000f, -610.040405f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_15", 2009698, 0, 4, { 593.438599f, -600.000000f, -600.488281f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_16", 2009699, 0, 4, { 605.523682f, -600.000000f, -596.581970f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_17", 2009700, 0, 4, { 600.000000f, -600.000000f, -600.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_18", 2002735, 0, 4, { -600.000000f, -624.000000f, -779.170715f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0118_2", 2002872, 7826278, 4, { -600.000000f, -624.000000f, -779.051880f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgvf_z3r1_b1258", 2009735, 7790960, 4, { 600.000000f, 0.000000f, 388.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1258_1", 2009736, 7790961, 4, { 600.000000f, 0.000000f, 258.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1258_2", 2009737, 7790972, 4, { -599.687073f, -599.483093f, -542.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1258_3", 2009738, 7790976, 4, { -600.000000f, -602.000000f, -623.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_19", 2002735, 0, 4, { 504.093506f, -27.491249f, 699.526611f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0118_3", 2007457, 7791941, 4, { 503.957397f, -27.061510f, 699.645325f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgvf_w_lvd_b0118_4", 2007457, 7792069, 4, { 503.000000f, -25.234091f, 659.863281f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_20", 2002735, 0, 4, { -645.511597f, -587.562500f, -431.000000f }, 1.000000f, -1.570796f ); - instance.registerEObj( "sgvf_w_lvd_b0118_5", 2007457, 7792412, 4, { -646.396729f, -587.562500f, -431.310394f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgvf_w_lvd_b0118_6", 2007457, 7792413, 4, { -606.465515f, -587.562500f, -431.000000f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "Teleportationcrystal", 2009717, 7790245, 4, { 494.000000f, -36.900440f, 764.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_1", 2009718, 7790248, 4, { 595.000000f, -2.896687f, 404.905212f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_2", 2009719, 7790262, 4, { 597.404175f, -31.000000f, -16.571730f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_3", 2009720, 7790602, 4, { -650.538818f, -588.000000f, -436.780487f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_4", 2009721, 7790603, 4, { -604.447327f, -599.975830f, -519.493408f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Teleportationcrystal_5", 2009722, 7790604, 4, { -604.814819f, -624.000000f, -771.833679f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0286", 2007457, 7724970, 4, { 500.022797f, -38.986820f, 782.467285f }, 0.991760f, 0.000048f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 600.027710f, -600.000000f, -620.645081f }, 1.000000f, 0.000000f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( TheOrbonneMonastery ); \ No newline at end of file diff --git a/src/scripts/instances/raids/TheRidoranaLighthouse.cpp b/src/scripts/instances/raids/TheRidoranaLighthouse.cpp deleted file mode 100644 index 51781840..00000000 --- a/src/scripts/instances/raids/TheRidoranaLighthouse.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class TheRidoranaLighthouse : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - TheRidoranaLighthouse() : - Sapphire::ScriptAPI::InstanceContentScript( 30068 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "sgvf_w_lvd_b0118", 2007457, 7377897, 4, { -200.000305f, 5.000000f, 101.000000f }, 1.000000f, -0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_0", 2007791, 0, 4, { -200.000305f, 5.000000f, 101.000000f }, 0.880000f, -0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0118_1", 2007457, 7377900, 4, { -200.000107f, 4.999996f, 30.600080f }, 1.000000f, -0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_1", 2009485, 0, 4, { -211.062103f, 5.000000f, 63.169151f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r2_b1409", 2007457, 7379112, 4, { -210.250793f, 5.000000f, 72.932854f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2002735, 0, 4, { -200.002106f, 584.000000f, -510.574188f }, 1.000000f, -0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0118_2", 2007457, 7388431, 4, { -200.002106f, 584.000000f, -509.807709f }, 1.000000f, -0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_3", 2009508, 0, 4, { -200.000000f, 584.000000f, -541.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_4", 2009509, 0, 4, { -200.000000f, 584.000000f, -541.000000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0118_3", 2007457, 7448801, 4, { -200.002106f, 584.000000f, -570.796204f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgvf_w_lvd_b0118_4", 2007457, 7387054, 4, { 800.000000f, -968.000000f, -110.439796f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgvf_w_lvd_b0118_5", 2007457, 7387076, 4, { 800.000000f, -968.000000f, -171.377106f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_5", 2007457, 7387494, 4, { 777.444885f, -440.500000f, 812.995483f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_6", 2007457, 7387496, 4, { 800.000000f, -440.500000f, 774.175781f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_7", 2007457, 7387498, 4, { 822.724609f, -440.500000f, 812.995483f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_8", 2007457, 7370829, 4, { 800.000000f, -968.000000f, -141.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_9", 2007457, 7401445, 4, { 800.000000f, -440.000000f, 800.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r2_b1444", 2007457, 7409377, 4, { 800.000000f, -968.000000f, -141.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_10", 2002735, 0, 4, { 800.000000f, -968.000000f, -109.954399f }, 1.200000f, -0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0118_6", 2007457, 7380261, 4, { 799.984619f, -815.518372f, -369.771912f }, 0.991760f, 0.000048f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_11", 2002735, 0, 4, { 800.000000f, -815.500000f, -370.055695f }, 1.000000f, -0.000000f ); - instance.registerEObj( "Entrance", 2000182, 7359055, 5, { -181.813400f, 14.312280f, 237.000000f }, 1.000000f, 0.000000f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 800.146179f, -815.500000f, -417.868286f }, 0.991760f, 0.000048f ); - instance.registerEObj( "sgbg_col_wall_02", 2007457, 7447710, 4, { -200.061096f, 12.985350f, -21.103331f }, 0.991760f, 0.000048f ); - // States -> col_on (id: 24) col_off (id: 25) - instance.registerEObj( "Ancientclockworkdevice", 2009544, 7334375, 4, { -269.105011f, 122.000000f, -438.046509f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_12", 2007457, 7404715, 4, { -268.778900f, 123.000000f, -449.397705f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_13", 2007457, 7447787, 4, { -269.825287f, 278.980713f, -520.805725f }, 0.991760f, 0.000048f ); - instance.registerEObj( "sgbg_col_wall_02_1", 2007457, 7447840, 4, { -226.977997f, 429.983887f, -438.986786f }, 0.991760f, 0.000048f ); - // States -> col_on (id: 24) col_off (id: 25) - instance.registerEObj( "unknown_14", 2007457, 7447789, 4, { -199.398300f, 432.999908f, -475.179199f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Ancientclockworkdevice_1", 2009545, 7371810, 4, { -199.628098f, 584.000000f, -585.090027f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_15", 2007457, 7404716, 4, { -199.364105f, 584.999817f, -599.228027f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Ancientclockworkdevice_2", 2009546, 7377745, 4, { 837.565613f, -984.000000f, 96.709007f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Ancientclockworkdevice_3", 2009547, 7377746, 4, { 772.549072f, -979.951721f, -38.537811f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_col_wall_02_2", 2007457, 7447954, 4, { 840.023987f, -984.000000f, 103.811798f }, 1.000000f, 0.000000f ); - // States -> col_on (id: 24) col_off (id: 25) - instance.registerEObj( "sgbg_col_wall_02_3", 2007457, 7447962, 4, { 770.034485f, -979.851624f, -46.041550f }, 1.000000f, 0.000000f ); - // States -> col_on (id: 24) col_off (id: 25) - instance.registerEObj( "unknown_16", 2007457, 7447790, 4, { 800.592407f, -967.000000f, -202.262695f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3r1_a4_stn03", 2007457, 7450744, 4, { 798.167419f, -815.500000f, -404.830505f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Ancientengraving", 2009579, 0, 4, { -194.500000f, 15.000000f, -19.750000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Crudescrawling", 2009580, 0, 4, { 835.500000f, -986.500000f, 68.750000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "Crudescrawling_1", 2009581, 0, 4, { 764.500000f, -983.000000f, -16.250000f }, 1.000000f, -0.000000f ); - instance.registerEObj( "Teleportationcrystal", 2009534, 7359613, 4, { -187.989700f, 14.788980f, 218.822296f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_1", 2009535, 7359705, 4, { -204.159302f, 112.000000f, -395.631805f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_2", 2009536, 7359716, 4, { -251.343994f, 428.000000f, -517.234192f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_3", 2009537, 7359767, 4, { -203.934204f, 582.000122f, -493.438599f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_4", 2009538, 7359772, 4, { 844.205322f, -988.006409f, 73.136467f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Teleportationcrystal_5", 2009539, 7359776, 4, { 767.945312f, -968.000000f, 90.974548f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_6", 2009540, 7359779, 4, { 795.302795f, -972.000000f, -95.739433f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_7", 2009541, 7359782, 4, { 792.833984f, -806.109985f, -299.344299f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_17", 2002735, 0, 4, { 769.949524f, -964.000000f, 77.562500f }, 0.700000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0118_7", 2007457, 7407058, 4, { 769.975586f, -964.000000f, 76.127197f }, 0.991760f, 0.000048f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgbg_col_wall_02_4", 2007457, 7445782, 4, { 770.168579f, -964.019226f, 37.949100f }, 0.991760f, 0.000048f ); - // States -> col_on (id: 24) col_off (id: 25) - instance.registerEObj( "unknown_18", 2007457, 7409325, 4, { 761.133728f, -964.000000f, 38.468330f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_19", 2007457, 7409326, 4, { 766.931396f, -964.000000f, 38.589489f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_20", 2007457, 7409327, 4, { 772.973328f, -964.000000f, 38.480419f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_21", 2007457, 7409328, 4, { 779.146301f, -964.000000f, 38.587101f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_22", 2007457, 7407517, 4, { 751.235291f, -964.000000f, 66.028107f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_23", 2007457, 7408156, 4, { 751.337280f, -964.000000f, 59.946270f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_24", 2007457, 7409322, 4, { 751.462219f, -964.000000f, 53.939960f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_25", 2007457, 7409323, 4, { 751.451477f, -964.000000f, 47.949421f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_26", 2007457, 7409332, 4, { 788.401917f, -963.999878f, 65.974800f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_27", 2007457, 7409331, 4, { 788.503784f, -963.999878f, 59.892960f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_28", 2007457, 7409330, 4, { 788.601318f, -964.019226f, 53.879639f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_29", 2007457, 7409329, 4, { 788.618225f, -964.000000f, 47.896111f }, 0.991760f, 0.000048f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( TheRidoranaLighthouse ); \ No newline at end of file diff --git a/src/scripts/instances/raids/TheRoyalCityofRabanastre.cpp b/src/scripts/instances/raids/TheRoyalCityofRabanastre.cpp deleted file mode 100644 index 9ea78eb9..00000000 --- a/src/scripts/instances/raids/TheRoyalCityofRabanastre.cpp +++ /dev/null @@ -1,133 +0,0 @@ -#include -#include - -using namespace Sapphire; - -class TheRoyalCityofRabanastre : - public Sapphire::ScriptAPI::InstanceContentScript -{ -public: - TheRoyalCityofRabanastre() : - Sapphire::ScriptAPI::InstanceContentScript( 30058 ) - { } - - void onInit( InstanceContent& instance ) override - { - instance.registerEObj( "unknown_0", 2002735, 0, 4, { -319.173004f, 9.994568f, 320.515686f }, 0.991760f, 0.000048f ); - instance.registerEObj( "sgvf_w_lvd_b0118", 2007457, 7069100, 4, { -319.896515f, 10.000000f, 325.206085f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgvf_z3r1_b1269", 2007457, 7075766, 4, { -320.000000f, 1.230700f, 221.199997f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1269_1", 2007457, 7075769, 4, { -320.351501f, 1.230694f, 262.307892f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1269_2", 2007457, 7075770, 4, { -346.200012f, 1.229800f, 238.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_1", 2009060, 0, 4, { -311.306702f, 1.230747f, 242.805496f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_2", 2009061, 0, 4, { -316.517914f, 1.205444f, 246.509399f }, 0.991760f, 0.000048f ); - instance.registerEObj( "sgvf_w_lvd_b0118_1", 2007457, 7069107, 4, { -319.661407f, 10.000000f, -11.625690f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_3", 2009055, 0, 4, { -336.110504f, 9.964111f, -51.682369f }, 1.000000f, -0.000000f ); - instance.registerEObj( "unknown_4", 2009057, 0, 4, { -306.355408f, 9.964111f, -48.539001f }, 1.000000f, -0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0118_2", 2007457, 7075611, 4, { -320.081390f, 10.000000f, -69.048653f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgbg_z3r1_a2_lc01a", 2007457, 7075799, 4, { -320.000702f, 10.000000f, -56.500000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3r1_a2_lc01a_1", 2007457, 7075800, 4, { -310.799988f, 10.000000f, -41.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3r1_a2_lc01a_2", 2007457, 7075801, 4, { -329.200012f, 10.000000f, -41.000000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_5", 2007457, 7076220, 4, { -315.688690f, 10.000000f, -47.888401f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_btl_b0527", 2007457, 7075820, 4, { -316.520996f, 10.000000f, -31.534470f }, 1.000000f, 0.000000f ); - // States -> hadokyu_off_a (id: 7) hadokyu_on_a (id: 8) hadokyu_on_b (id: 9) hadokyu_on_c (id: 10) - instance.registerEObj( "unknown_6", 2007457, 7077538, 4, { -338.909393f, 10.000000f, -32.073681f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_7", 2007791, 0, 4, { -319.963013f, 10.052400f, -16.952101f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_8", 2009242, 0, 4, { -332.255402f, 10.108630f, -33.994350f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0250", 2007457, 7080565, 4, { 106.000000f, -694.000000f, -128.399994f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_9", 2007791, 0, 4, { 106.000000f, -694.000000f, -128.399994f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_btl_b1275", 2007457, 7082088, 4, { 108.221199f, -694.000000f, -208.120697f }, 1.000000f, 0.000000f ); - // States -> cd_off (id: 3) cd_omen (id: 4) cd_omen_anim (id: 5) cd_on (id: 6) cd_on_anim (id: 7) cd_off_anim (id: 8) - instance.registerEObj( "sgvf_w_btl_b1275_1", 2007457, 7082089, 4, { 121.728897f, -694.000000f, -183.748199f }, 1.000000f, 0.000000f ); - // States -> cd_off (id: 3) cd_omen (id: 4) cd_omen_anim (id: 5) cd_on (id: 6) cd_on_anim (id: 7) cd_off_anim (id: 8) - instance.registerEObj( "sgvf_w_btl_b1275_2", 2007457, 7082090, 4, { 94.008781f, -694.000000f, -182.456207f }, 1.000000f, 0.000000f ); - // States -> cd_off (id: 3) cd_omen (id: 4) cd_omen_anim (id: 5) cd_on (id: 6) cd_on_anim (id: 7) cd_off_anim (id: 8) - instance.registerEObj( "Darkcircle", 2009076, 0, 4, { 83.147507f, -694.000000f, -193.267899f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_1", 2009203, 0, 4, { 83.057159f, -694.000000f, -182.946304f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_2", 2009204, 0, 4, { 89.546783f, -694.000000f, -172.278000f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_3", 2009205, 0, 4, { 96.837830f, -694.000000f, -165.190094f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_4", 2009206, 0, 4, { 105.990601f, -694.000000f, -164.696304f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_5", 2009207, 0, 4, { 117.216599f, -694.000000f, -169.060196f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_6", 2009208, 0, 4, { 125.204498f, -694.000000f, -175.811493f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_7", 2009209, 0, 4, { 130.969604f, -694.000000f, -185.265594f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_8", 2009210, 0, 4, { 130.999893f, -694.000000f, -195.328003f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_9", 2009211, 0, 4, { 124.798302f, -694.000000f, -204.280807f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_10", 2009212, 0, 4, { 114.994301f, -694.000000f, -210.576996f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Darkcircle_11", 2009213, 0, 4, { 103.221703f, -694.000000f, -213.151794f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0250_1", 2007457, 7079402, 4, { 104.478500f, -679.000000f, -322.819489f }, 0.991760f, 0.000048f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "unknown_10", 2007791, 0, 4, { 106.449997f, -679.000000f, -328.250000f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_11", 2009068, 0, 4, { 97.794479f, -679.000000f, -387.672394f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_12", 2009069, 0, 4, { 101.213097f, -679.000000f, -388.533600f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_13", 2009070, 0, 4, { 104.362602f, -679.000000f, -388.768097f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1284", 2007457, 7081152, 4, { 101.446701f, -679.000000f, -398.626587f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1278", 2007457, 7081153, 4, { 114.988701f, -679.000000f, -399.119598f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1277", 2007457, 7081154, 4, { 105.230202f, -679.000000f, -389.831512f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgbg_z3r1_a4_stn03", 2007457, 7151392, 4, { 105.983803f, -679.025024f, -386.058899f }, 1.000000f, -0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1258", 2009221, 7094307, 4, { -323.781189f, 9.994568f, 322.467499f }, 0.991760f, 0.000048f ); - instance.registerEObj( "sgvf_z3r1_b1258_1", 2009222, 7094363, 4, { -325.789886f, 1.230697f, 217.839005f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_14", 2007457, 7041438, 4, { -274.571594f, 2.310245f, 37.022179f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Waterwaygatelever", 2009184, 7080218, 4, { 338.918091f, -262.287415f, 267.698608f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Waterwaygatelever_1", 2009186, 7080217, 4, { 337.924988f, -322.267212f, 299.494385f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Waterwaygatelever_2", 2009188, 7080216, 4, { 338.580200f, -292.267212f, 331.283905f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_15", 2007457, 7080221, 4, { 323.797211f, -262.267395f, 275.364105f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_16", 2007457, 7080220, 4, { 324.137909f, -322.267303f, 308.012604f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_17", 2007457, 7080219, 4, { 325.866394f, -292.267212f, 339.968201f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_18", 2007457, 7080213, 4, { 205.647507f, -374.000092f, 339.617889f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_19", 2007457, 7080215, 4, { 164.959000f, -374.000092f, 324.108002f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Passagecontrols", 2009200, 0, 4, { 189.533096f, -373.602295f, 305.302490f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Passagecontrols_1", 2009201, 0, 4, { 162.416901f, -373.621887f, 283.383911f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Passagecontrols_2", 2009202, 0, 4, { 167.371002f, -373.190186f, 332.672913f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Scratchedlettering", 2009271, 0, 4, { 272.859009f, -490.182709f, 293.584595f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Scratchedlettering_1", 2009272, 0, 4, { 212.923599f, -491.264191f, 290.957306f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Scratchedlettering_2", 2009273, 0, 4, { 211.674301f, -491.485199f, 242.033600f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Skypiratesscrawlings", 2009435, 0, 4, { 222.766403f, -333.455414f, 360.799591f }, 0.991760f, 0.000048f ); - instance.registerEObj( "sgvf_z3r1_b1258_2", 2009223, 7102857, 4, { 101.048698f, -694.000000f, -122.909698f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1258_3", 2009224, 7102858, 4, { 99.562241f, -694.000000f, -216.590393f }, 1.000000f, 0.000000f ); - instance.registerEObj( "sgvf_z3r1_b1258_4", 2009225, 7102860, 4, { 99.290398f, -679.011230f, -323.639587f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_20", 2009190, 0, 4, { -298.663086f, -4.197479f, 44.907139f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_21", 2009191, 0, 4, { -301.684296f, -4.350000f, 41.550209f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_22", 2009192, 0, 4, { -304.369995f, -4.219625f, 44.113739f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_23", 2009193, 0, 4, { -316.182190f, -4.226807f, 42.099609f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_24", 2009194, 0, 4, { -319.364990f, -4.219666f, 44.197979f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_25", 2009195, 0, 4, { -322.700989f, -4.219666f, 42.268631f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_26", 2009196, 0, 4, { -331.298615f, -4.379395f, 42.587891f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_27", 2009197, 0, 4, { -334.136810f, -4.379395f, 39.322510f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_28", 2009198, 0, 4, { -337.097107f, -4.379391f, 41.112068f }, 0.991760f, 0.000048f ); - instance.registerEObj( "unknown_29", 2009199, 0, 4, { -320.000000f, 19.928169f, -182.845596f }, 1.000000f, 0.000000f ); - instance.registerEObj( "unknown_30", 2002735, 0, 4, { -320.106812f, 19.946039f, -144.699493f }, 1.750000f, 0.000000f ); - instance.registerEObj( "sgvf_w_lvd_b0118_3", 2007457, 7099082, 4, { -320.132294f, 19.899990f, -145.586395f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "sgvf_w_lvd_b0118_4", 2007457, 7099092, 4, { -319.884003f, 19.900000f, -202.859207f }, 1.000000f, 0.000000f ); - // States -> vf_bextwall_on (id: 3) vf_bextwall_of (id: 4) - instance.registerEObj( "Teleportationcrystal", 2009176, 7102798, 4, { -326.309998f, 5.729747f, 406.047699f }, 0.991760f, 0.000048f ); - instance.registerEObj( "Teleportationcrystal_1", 2009177, 7102799, 4, { -326.251099f, 9.753006f, 115.489799f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_2", 2009178, 7102800, 4, { -326.389801f, 10.000000f, -10.478860f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_3", 2009179, 7102801, 4, { -312.818115f, 19.899851f, -141.350296f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_4", 2009180, 7102802, 4, { 439.169189f, -229.561905f, 292.789886f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_5", 2009181, 7102803, 4, { 133.837006f, -374.000092f, 311.904785f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_6", 2009182, 7102804, 4, { 114.414299f, -694.000000f, -113.204399f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Teleportationcrystal_7", 2009183, 7102805, 4, { 97.279610f, -679.000000f, -305.258087f }, 1.000000f, 0.000000f ); - instance.registerEObj( "Entrance", 2000182, 7069095, 5, { -328.378906f, 0.730057f, 439.144012f }, 0.991760f, 0.000048f ); - // States -> vf_lock_on (id: 11) vf_lock_of (id: 12) - instance.registerEObj( "Exit", 2000139, 0, 4, { 106.318901f, -679.000000f, -398.354614f }, 0.991760f, 0.000048f ); - - } - - void onUpdate( InstanceContent& instance, uint64_t tickCount ) override - { - - } - - void onEnterTerritory( InstanceContent& instance, Entity::Player& player, uint32_t eventId, uint16_t param1, - uint16_t param2 ) override - { - - } - -}; - -EXPOSE_SCRIPT( TheRoyalCityofRabanastre ); \ No newline at end of file diff --git a/src/scripts/quest/ManFst002.cpp b/src/scripts/quest/ManFst002.cpp index 08eff52f..96efe03b 100644 --- a/src/scripts/quest/ManFst002.cpp +++ b/src/scripts/quest/ManFst002.cpp @@ -201,7 +201,7 @@ public: { eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 ); player.registerAetheryte( 2 ); - player.learnAction( Common::UnlockEntry::Return ); + player.setSystemActionUnlocked( Common::UnlockEntry::Return ); Scene00051( quest, player ); }; diff --git a/src/scripts/quest/ManFst003.cpp b/src/scripts/quest/ManFst003.cpp index c38ec9ed..68d3ad16 100644 --- a/src/scripts/quest/ManFst003.cpp +++ b/src/scripts/quest/ManFst003.cpp @@ -79,7 +79,7 @@ public: { eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 ); player.registerAetheryte( 2 ); - player.learnAction( Common::UnlockEntry::Return ); + player.setSystemActionUnlocked( Common::UnlockEntry::Return ); Scene00051( quest, player ); }, nullptr, quest.getId() ); diff --git a/src/scripts/quest/ManFst004.cpp b/src/scripts/quest/ManFst004.cpp index bab3cedd..0f1086c6 100644 --- a/src/scripts/quest/ManFst004.cpp +++ b/src/scripts/quest/ManFst004.cpp @@ -82,7 +82,7 @@ public: { eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 ); player.registerAetheryte( 2 ); - player.learnAction( Common::UnlockEntry::Return ); + player.setSystemActionUnlocked( Common::UnlockEntry::Return ); Scene00051( quest, player ); }, nullptr, quest.getId() ); diff --git a/src/scripts/quest/ManSea001.cpp b/src/scripts/quest/ManSea001.cpp index 710c845e..749960a1 100644 --- a/src/scripts/quest/ManSea001.cpp +++ b/src/scripts/quest/ManSea001.cpp @@ -91,7 +91,7 @@ private: if( !pQuest ) return; pQuest->setSeq( SEQ_FINISH ); - player.prepareZoning( player.getTerritoryTypeId(), true, 1, 0 ); + //player.prepareZoning( player.getTerritoryTypeId(), true, 1, 0 ); player.changePosition( 9, 40, 14, 2 ); } } ); diff --git a/src/scripts/quest/ManSea002.cpp b/src/scripts/quest/ManSea002.cpp index a960b0b7..207f1570 100644 --- a/src/scripts/quest/ManSea002.cpp +++ b/src/scripts/quest/ManSea002.cpp @@ -58,7 +58,7 @@ public: { eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 ); player.registerAetheryte( 2 ); - player.learnAction( Common::UnlockEntry::Return ); + player.setSystemActionUnlocked( Common::UnlockEntry::Return ); Scene00002( player ); }, nullptr, getId() ); diff --git a/src/scripts/quest/ManSea003.cpp b/src/scripts/quest/ManSea003.cpp index ef598e34..a8fd5d8c 100644 --- a/src/scripts/quest/ManSea003.cpp +++ b/src/scripts/quest/ManSea003.cpp @@ -72,7 +72,7 @@ public: { eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 ); player.registerAetheryte( 2 ); - player.learnAction( Common::UnlockEntry::Return ); + player.setSystemActionUnlocked( Common::UnlockEntry::Return ); Scene00002( player ); }, nullptr, getId() ); diff --git a/src/scripts/quest/ManWil002.cpp b/src/scripts/quest/ManWil002.cpp index 0b2b4728..53fc973e 100644 --- a/src/scripts/quest/ManWil002.cpp +++ b/src/scripts/quest/ManWil002.cpp @@ -90,7 +90,7 @@ public: { eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 ); player.registerAetheryte( 2 ); - player.learnAction( Common::UnlockEntry::Return ); + player.setSystemActionUnlocked( Common::UnlockEntry::Return ); Scene00001( quest, player ); }, nullptr, getId() ); diff --git a/src/scripts/quest/ManWil003.cpp b/src/scripts/quest/ManWil003.cpp index 8bc1ecbb..c9ac7123 100644 --- a/src/scripts/quest/ManWil003.cpp +++ b/src/scripts/quest/ManWil003.cpp @@ -90,7 +90,7 @@ public: { eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 ); player.registerAetheryte( 2 ); - player.learnAction( Common::UnlockEntry::Return ); + player.setSystemActionUnlocked( Common::UnlockEntry::Return ); Scene00001( player ); }, nullptr, getId() ); diff --git a/src/scripts/quest/ManWil004.cpp b/src/scripts/quest/ManWil004.cpp index 45cb045d..78b8d22c 100644 --- a/src/scripts/quest/ManWil004.cpp +++ b/src/scripts/quest/ManWil004.cpp @@ -90,7 +90,7 @@ public: { eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 ); player.registerAetheryte( 2 ); - player.learnAction( Common::UnlockEntry::Return ); + player.setSystemActionUnlocked( Common::UnlockEntry::Return ); Scene00001( player ); }, nullptr, getId() ); diff --git a/src/scripts/quest/classquest/ARC/ClsArc000.cpp b/src/scripts/quest/classquest/ARC/ClsArc000.cpp index 2f2e8892..9a75c32c 100644 --- a/src/scripts/quest/classquest/ARC/ClsArc000.cpp +++ b/src/scripts/quest/classquest/ARC/ClsArc000.cpp @@ -205,7 +205,7 @@ private: if( result.getResult( 0 ) == 1 ) { - player.learnAction( Sapphire::Common::UnlockEntry::HuntingLog ); + player.setSystemActionUnlocked( Sapphire::Common::UnlockEntry::HuntingLog ); player.finishQuest( getId(), result.getResult( 1 ) ); } } diff --git a/src/scripts/quest/classquest/ARC/ClsArc001.cpp b/src/scripts/quest/classquest/ARC/ClsArc001.cpp index d71d3e30..11649044 100644 --- a/src/scripts/quest/classquest/ARC/ClsArc001.cpp +++ b/src/scripts/quest/classquest/ARC/ClsArc001.cpp @@ -558,7 +558,6 @@ private: if( result.getResult( 0 ) == 1 ) { - //if( player.giveQuestRewards( getId(), result.getResult(1)) ) player.finishQuest( getId(), result.getResult( 1 ) ); } } diff --git a/src/scripts/quest/classquest/ARC/ClsArc002.cpp b/src/scripts/quest/classquest/ARC/ClsArc002.cpp index 6b0361c3..8fc83fd7 100644 --- a/src/scripts/quest/classquest/ARC/ClsArc002.cpp +++ b/src/scripts/quest/classquest/ARC/ClsArc002.cpp @@ -619,7 +619,6 @@ private: { if( result.getResult( 0 ) == 1 ) { - //if (player.giveQuestRewards(getId(), result.getResult(1))) player.finishQuest( getId(), result.getResult( 1 ) ); } } diff --git a/src/scripts/quest/classquest/ARC/ClsArc003.cpp b/src/scripts/quest/classquest/ARC/ClsArc003.cpp index 3b6152fa..636650c6 100644 --- a/src/scripts/quest/classquest/ARC/ClsArc003.cpp +++ b/src/scripts/quest/classquest/ARC/ClsArc003.cpp @@ -549,7 +549,9 @@ private: { if( result.getResult( 0 ) == 1 ) { - //Broken QuestBattle + //TODO: QuestBattle + playerMgr().sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); + eventMgr().sendEventNotice( player, getId(), 3, 0 ); quest.setSeq( Seq5 ); /*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); diff --git a/src/scripts/quest/classquest/ARC/ClsArc004.cpp b/src/scripts/quest/classquest/ARC/ClsArc004.cpp index 86e7ed5c..0bac94dc 100644 --- a/src/scripts/quest/classquest/ARC/ClsArc004.cpp +++ b/src/scripts/quest/classquest/ARC/ClsArc004.cpp @@ -7,8 +7,6 @@ #include #include #include -//Temporrary because QuestBattles are broken -#include "Manager/PlayerMgr.h" // Quest Script: ClsArc004_00070 // Quest Name: To Catch a Poacher @@ -77,7 +75,7 @@ public: { case Actor0: { - if( !player.hasQuest( getId() ) ) + if( quest.getSeq() == Seq0 ) Scene00000( quest, player ); else if( quest.getSeq() == SeqFinish ) Scene00021( quest, player ); @@ -398,9 +396,13 @@ private: { if( result.getResult( 0 ) == 1 ) { - //QuestBattle weirdness, Plus not being able to talk to that NPC, so we have to skip Seq5 entirely - Sapphire::World::Manager::PlayerMgr::sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); - quest.setSeq( SeqFinish ); + //TODO: QuestBattles are broken + playerMgr().sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); + eventMgr().sendEventNotice( player, getId(), 3, 0 ); + quest.setSeq( Seq5 ); + quest.setBitFlag8( 1, false ); + quest.setBitFlag8( 2, false ); + quest.setBitFlag8( 3, false ); /*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); diff --git a/src/scripts/quest/classquest/ARC/ClsArc005.cpp b/src/scripts/quest/classquest/ARC/ClsArc005.cpp index 8f0f3752..064fc35e 100644 --- a/src/scripts/quest/classquest/ARC/ClsArc005.cpp +++ b/src/scripts/quest/classquest/ARC/ClsArc005.cpp @@ -7,8 +7,6 @@ #include #include #include -//Temporrary because QuestBattles are broken -#include "Manager/PlayerMgr.h" // Quest Script: ClsArc005_00071 // Quest Name: Homecoming @@ -203,6 +201,7 @@ private: void Scene00005Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result ) { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); quest.setSeq( Seq4 ); } @@ -229,9 +228,10 @@ private: { if( result.getResult( 0 ) == 1 ) { - //Questbattles be broken + //TODO: Questbattles be broken + playerMgr().sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); + eventMgr().sendEventNotice( player, getId(), 3, 0 ); quest.setSeq( SeqFinish ); - Sapphire::World::Manager::PlayerMgr::sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); /*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); eventMgr().eventFinish( player, result.eventId, 0 ); diff --git a/src/scripts/quest/classquest/ARC/ClsArc006.cpp b/src/scripts/quest/classquest/ARC/ClsArc006.cpp index ae315a07..0780f0c4 100644 --- a/src/scripts/quest/classquest/ARC/ClsArc006.cpp +++ b/src/scripts/quest/classquest/ARC/ClsArc006.cpp @@ -7,8 +7,6 @@ #include #include #include -//Temporrary because QuestBattles are broken -#include "Manager/PlayerMgr.h" // Quest Script: ClsArc006_00076 // Quest Name: The One that Got Away @@ -189,9 +187,10 @@ private: { if( result.getResult( 0 ) == 1 ) { - //QuestBattles don't work atm + //TODO: QuestBattles don't work atm + playerMgr().sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); + eventMgr().sendEventNotice( player, getId(), 2, 0 ); quest.setSeq( Seq2 ); - Sapphire::World::Manager::PlayerMgr::sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); /*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); eventMgr().eventFinish(player, result.eventId, 0); @@ -298,9 +297,10 @@ private: { if( result.getResult( 0 ) == 1 ) { - //QuestBattles don't work atm + //TODO: QuestBattles don't work atm + playerMgr().sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); + eventMgr().sendEventNotice( player, getId(), 3, 0 ); quest.setSeq( SeqFinish ); - Sapphire::World::Manager::PlayerMgr::sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); /*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); eventMgr().eventFinish(player, result.eventId, 0); diff --git a/src/scripts/quest/classquest/ARC/ClsArc100.cpp b/src/scripts/quest/classquest/ARC/ClsArc100.cpp index 3777df19..4437e9e4 100644 --- a/src/scripts/quest/classquest/ARC/ClsArc100.cpp +++ b/src/scripts/quest/classquest/ARC/ClsArc100.cpp @@ -141,6 +141,7 @@ private: quest.setUI8AL( 0 ); quest.setUI8BH( 0 ); quest.setUI8BL( 0 ); + eventMgr().sendEventNotice( player, getId(), 3, 0 ); quest.setSeq( SeqFinish ); } } diff --git a/src/scripts/quest/classquest/ARC/ClsArc997.cpp b/src/scripts/quest/classquest/ARC/ClsArc997.cpp index 74af9486..818b88cc 100644 --- a/src/scripts/quest/classquest/ARC/ClsArc997.cpp +++ b/src/scripts/quest/classquest/ARC/ClsArc997.cpp @@ -239,6 +239,7 @@ private: void Scene00001Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result ) { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); quest.setSeq( Seq2 ); } @@ -531,6 +532,7 @@ private: void Scene00026Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result ) { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); quest.setSeq( Seq4 ); } @@ -565,6 +567,7 @@ private: void Scene00029Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result ) { + eventMgr().sendEventNotice( player, getId(), 5, 0 ); quest.setSeq( SeqFinish ); } diff --git a/src/scripts/quest/classquest/CNJ/ClsCnj000.cpp b/src/scripts/quest/classquest/CNJ/ClsCnj000.cpp new file mode 100644 index 00000000..73a2a6e7 --- /dev/null +++ b/src/scripts/quest/classquest/CNJ/ClsCnj000.cpp @@ -0,0 +1,201 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +// Quest Script: ClsCnj000_00022 +// Quest Name: Way of the Conjurer (CNJ starter version) +// Quest ID: 65558 +// Start NPC: 1000323 +// End NPC: 1000692 + +using namespace Sapphire; + +class ClsCnj000 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // UI8AL + // UI8BH + // UI8BL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000692 + /// Countable Num: 3 Seq: 2 Event: 5 Listener: 37 + /// Countable Num: 3 Seq: 2 Event: 5 Listener: 49 + /// Countable Num: 3 Seq: 2 Event: 5 Listener: 47 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000692 + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + Seq2 = 2, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000323; + static constexpr auto Actor1 = 1000692; + static constexpr auto Enemy0 = 37;//Ground Squirrel + static constexpr auto Enemy1 = 49;//Little Ladybug + static constexpr auto Enemy2 = 47;//Foest Funguar + static constexpr auto LogmessageMonsterNotePageUnlock = 1009; + static constexpr auto Seq0Actor0 = 0; + static constexpr auto Seq1Actor1 = 1; + static constexpr auto Seq3Actor1 = 2; + static constexpr auto UnlockImageMonsterNote = 32; + +public: + ClsCnj000() : Sapphire::ScriptAPI::QuestScript( 65558 ){}; + ~ClsCnj000() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + Scene00000( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00001( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00002( quest, player ); + break; + } + } + } + + void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Sapphire::Entity::Player& player ) override + { + if( nameId != Enemy0 && nameId != Enemy1 && nameId != Enemy2 ) + return; + + + auto currentKC37 = quest.getUI8AL() + 1; + auto currentKC49 = quest.getUI8BH() + 1; + auto currentKC47 = quest.getUI8BL() + 1; + + switch( nameId ) + { + case Enemy0: + { + if( currentKC37 >= 3 ) + { + quest.setUI8AL( currentKC37 ); + checkQuestCompletion( quest, player ); + eventMgr().sendEventNotice( player, getId(), 1, 2, currentKC37, 3 ); + } + else if( currentKC37 < 3 ) + { + quest.setUI8AL( currentKC37 ); + eventMgr().sendEventNotice( player, getId(), 1, 2, currentKC37, 3 ); + } + + break; + } + case Enemy1: + { + if( currentKC49 <= 3 ) + { + quest.setUI8BH( currentKC49 ); + checkQuestCompletion( quest, player ); + eventMgr().sendEventNotice( player, getId(), 2, 2, currentKC49, 3 ); + } + break; + } + case Enemy2: + { + if( currentKC47 >= 3 ) + { + quest.setUI8BL( currentKC47 ); + checkQuestCompletion( quest, player ); + eventMgr().sendEventNotice( player, getId(), 3, 2, currentKC47, 3 ); + } + else if( currentKC47 < 3 ) + { + quest.setUI8BL( currentKC47 ); + eventMgr().sendEventNotice( player, getId(), 3, 2, currentKC47, 3 ); + } + + break; + } + } + } + +private: + void checkQuestCompletion( World::Quest& quest, Entity::Player& player ) + { + auto currentKC37 = quest.getUI8AL(); + auto currentKC49 = quest.getUI8BH(); + auto currentKC47 = quest.getUI8BL(); + + if( currentKC37 == 3 && currentKC49 == 3 && currentKC47 == 3 ) + { + quest.setUI8AL( 0 ); + quest.setUI8BH( 0 ); + quest.setUI8BL( 0 ); + quest.setSeq( SeqFinish ); + } + } + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ClsCnj000::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + quest.setSeq( Seq1 ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, FADE_OUT | HIDE_UI, bindSceneReturn( &ClsCnj000::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )//Said yes in the cutscene + { + quest.setSeq( Seq2 ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &ClsCnj000::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId() ); + } + } +}; + +EXPOSE_SCRIPT( ClsCnj000 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/CNJ/ClsCnj001.cpp b/src/scripts/quest/classquest/CNJ/ClsCnj001.cpp new file mode 100644 index 00000000..9749ee46 --- /dev/null +++ b/src/scripts/quest/classquest/CNJ/ClsCnj001.cpp @@ -0,0 +1,207 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +#include "Actor/BNpc.h" +#include "Manager/TerritoryMgr.h" +#include "Territory/Territory.h" + +// Quest Script: ClsCnj001_00048 +// Quest Name: Trial by Earth +// Quest ID: 65584 +// Start NPC: 1000692 +// End NPC: 1000692 + +using namespace Sapphire; + +class ClsCnj001 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + // UI8BH + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000764 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 2000883 + /// Countable Num: 1 Seq: 3 Event: 5 Listener: 294 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000764 + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + Seq2 = 2, + Seq3 = 3, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000692; //E-Sumi-Yan + static constexpr auto Actor1 = 1000764; //Nolanel + static constexpr auto Enemy0 = 2320919; //Tainted Earth Sprite + static constexpr auto Eobject0 = 2000883;//Corrupted Soil + static constexpr auto EventActionSearch = 1; + static constexpr auto NqPoint001 = 4; + static constexpr auto Seq0Actor0 = 0; + static constexpr auto Seq1Actor1 = 1; + static constexpr auto Seq2Eobject0 = 2; + static constexpr auto Seq2Eobject0Eventactionno = 99; + static constexpr auto Seq2Eobject0Eventactionok = 100; + static constexpr auto Seq3Actor1 = 3; + static constexpr auto Seq4Actor0 = 4; + +public: + ClsCnj001() : Sapphire::ScriptAPI::QuestScript( 65584 ){}; + ~ClsCnj001() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00004( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00001( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00003( quest, player ); + break; + } + case Eobject0: + { + if( quest.getSeq() == Seq2 ) + Scene00100( quest, player ); + } + } + } + + void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Sapphire::Entity::Player& player ) override + { + switch( entityId ) + { + case Enemy0: + { + quest.setBitFlag8( 1, false ); + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + break; + } + } + } + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ClsCnj001::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + quest.setSeq( Seq1 ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsCnj001::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &ClsCnj001::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, bindSceneReturn( &ClsCnj001::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &ClsCnj001::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00099( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &ClsCnj001::Scene00099Return ) ); + } + + void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00100( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &ClsCnj001::Scene00100Return ) ); + } + + void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + auto teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy0, 1220 /*Find the right value*/, Common::BNpcType::Enemy ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + + quest.setBitFlag8( 1, true ); + } +}; + +EXPOSE_SCRIPT( ClsCnj001 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/CNJ/ClsCnj002.cpp b/src/scripts/quest/classquest/CNJ/ClsCnj002.cpp new file mode 100644 index 00000000..f7406e0b --- /dev/null +++ b/src/scripts/quest/classquest/CNJ/ClsCnj002.cpp @@ -0,0 +1,291 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + +#include "Actor/BNpc.h" +#include "Manager/TerritoryMgr.h" +#include "Territory/Territory.h" +// Quest Script: ClsCnj002_00091 +// Quest Name: Trial by Wind +// Quest ID: 65627 +// Start NPC: 1000692 +// End NPC: 1000692 + +using namespace Sapphire; + +class ClsCnj002 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1000767 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 2000885 + /// Countable Num: 1 Seq: 3 Event: 5 Listener: 295 + /// Countable Num: 1 Seq: 4 Event: 1 Listener: 1000767 + /// Countable Num: 1 Seq: 5 Event: 1 Listener: 2000887 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1000767 + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + Seq2 = 2, + Seq3 = 3, + Seq4 = 4, + Seq5 = 5, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000692; //E-Sumi-Yan (Guildmaster) + static constexpr auto Actor1 = 1000767; //Wulfiue + static constexpr auto Enemy0 = 3768148; //Honeybee Swarm + static constexpr auto Eobject0 = 2000885;//Destination (Seq2) + static constexpr auto Eobject1 = 2000887;//Corrupted Air + static constexpr auto EventActionSearch = 1; + static constexpr auto LocActor0 = 1003003; + static constexpr auto LocActor1 = 1000693; + static constexpr auto LocFace1 = 617; + static constexpr auto LocFace2 = 611; + static constexpr auto LocFace3 = 604; + static constexpr auto LocPosActor0 = 1170797; + static constexpr auto Questbattle0 = 54; + static constexpr auto Territorytype0 = 289; + static constexpr auto UnlockImageClassCange = 22; + static constexpr auto UnlockImageGearSet = 29; + +public: + ClsCnj002() : Sapphire::ScriptAPI::QuestScript( 65627 ){}; + ~ClsCnj002() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00010( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == Seq3 ) + Scene00006( quest, player ); + else if( quest.getSeq() == Seq5 ) + Scene00009( quest, player ); + break; + } + case Eobject0: + { + if( quest.getSeq() == Seq2 ) + { + eventMgr().eventActionStart( + player, getId(), 0x01, + [ & ]( Entity::Player& player, uint32_t eventId, uint64_t additional ) { + Scene00004( quest, player ); + }, + nullptr, 0 ); + } + break; + } + case Eobject1: + { + if( quest.getSeq() == Seq4 ) + { + eventMgr().sendEventNotice( player, getId(), 3, 0 ); + playerMgr().sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); + quest.setSeq( Seq5 ); + //Actually calling Scene00008 causes the screen to fade before the return is called, softlocking the player without this solution. + /* eventMgr().eventActionStart( + player, getId(), 0x03, + [ & ]( Entity::Player &player, uint32_t eventId, uint64_t additional ) { + Scene00008( quest, player ); + }, + nullptr, 0 );*/ + } + break; + } + } + } + + void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Sapphire::Entity::Player& player ) override + { + switch( entityId ) + { + case Enemy0: + { + quest.setBitFlag8( 1, false ); + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + break; + } + } + } + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ClsCnj002::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &ClsCnj002::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsCnj002::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &ClsCnj002::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &ClsCnj002::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + auto teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy0, 1220 /*Find the right value*/, Common::BNpcType::Enemy ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + quest.setBitFlag8( 1, true ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &ClsCnj002::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, NONE, bindSceneReturn( &ClsCnj002::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setSeq( Seq4 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, NONE, bindSceneReturn( &ClsCnj002::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, NONE, bindSceneReturn( &ClsCnj002::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + //TODO: Quest Battle + if( result.getResult( 0 ) == 1 ) + { + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, HIDE_HOTBAR, bindSceneReturn( &ClsCnj002::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 4, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00010( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 10, FADE_OUT | HIDE_UI, bindSceneReturn( &ClsCnj002::Scene00010Return ) ); + } + + void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } +}; + +EXPOSE_SCRIPT( ClsCnj002 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/CNJ/ClsCnj003.cpp b/src/scripts/quest/classquest/CNJ/ClsCnj003.cpp new file mode 100644 index 00000000..3e0eb2df --- /dev/null +++ b/src/scripts/quest/classquest/CNJ/ClsCnj003.cpp @@ -0,0 +1,690 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + + +#include "Actor/BNpc.h" +#include "Manager/TerritoryMgr.h" +#include "Territory/Territory.h" + +// Quest Script: ClsCnj003_00092 +// Quest Name: Trial by Water +// Quest ID: 65628 +// Start NPC: 1000692 +// End NPC: 1000692 + +using namespace Sapphire; + +class ClsCnj003 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag24 + // BitFlag8 + // UI8AH + // UI8AL + // UI8BH + // UI8BL + // UI8CH + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 2000889 + /// Countable Num: 1 Seq: 2 Event: 8 Listener: 2000889 + /// Countable Num: 1 Seq: 3 Event: 5 Listener: 297 + /// Countable Num: 1 Seq: 4 Event: 1 Listener: 1000561 + /// Countable Num: 1 Seq: 5 Event: 1 Listener: 1000619 + /// Countable Num: 1 Seq: 6 Event: 1 Listener: 1003001 + /// Countable Num: 1 Seq: 7 Event: 18 Listener: 1003001 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1003000 + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + Seq2 = 2, + Seq3 = 3, + Seq4 = 4, + Seq5 = 5, + Seq6 = 6, + Seq7 = 7, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Action0 = 120; + static constexpr auto Actor0 = 1000692;//E-Sumi-Yan + static constexpr auto Actor1 = 1000561;//Joacin + static constexpr auto Actor2 = 1000619;//Anuid + static constexpr auto Actor3 = 1003001;//Wounded Wood Wailer + static constexpr auto Actor4 = 1003000; + static constexpr auto Actor5 = 1003057;//Harried Healer + static constexpr auto Actor6 = 1001213;//Gods' Quiver Bow + static constexpr auto Actor7 = 1002960;//Sylphie (pre-QuestBattle) + static constexpr auto Actor8 = 1006154; + static constexpr auto Actor9 = 1006155; + static constexpr auto Actor10 = 1006156; + static constexpr auto Actor11 = 1006152; + static constexpr auto Actor12 = 1006153; + static constexpr auto Actor13 = 1006157; + static constexpr auto Actor14 = 1006158; + static constexpr auto Actor15 = 1006159; + static constexpr auto Actor16 = 1006160; + static constexpr auto Actor17 = 1006161; + static constexpr auto Actor18 = 1003006; //Sylphie (post-QuestBattle) + static constexpr auto Enemy0 = 3799227; //Tainted Water Sprite + static constexpr auto Eobject0 = 2000889;//Corrupted Water + static constexpr auto Eobject1 = 2001838; + static constexpr auto Eventrange0 = 4195892; + static constexpr auto EventActionSearch = 1; + static constexpr auto Item0 = 2000121;//Pristine Water? UI8BH + static constexpr auto LocAction0 = 995; + static constexpr auto LocActor0 = 1000569; + static constexpr auto LocActor1 = 1000693; + static constexpr auto LocFace1 = 611; + static constexpr auto LocFace2 = 620; + static constexpr auto LocFace3 = 612; + static constexpr auto LocPosActor0 = 1170797; + static constexpr auto LocVfx = 241; + static constexpr auto LocWs = 134; + static constexpr auto NqPoint001 = 8; + static constexpr auto NqPoint002 = 9; + static constexpr auto Questbattle0 = 16; + static constexpr auto Territorytype0 = 234; + +public: + ClsCnj003() : Sapphire::ScriptAPI::QuestScript( 65628 ){}; + ~ClsCnj003() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00036( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq2 ) + Scene00007( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq3 ) + Scene00008( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == Seq4 ) + Scene00009( quest, player ); + else if( quest.getSeq() == Seq5 ) + Scene00010( quest, player ); + break; + } + case Actor4: + { + break; + } + case Actor5: + { + if( quest.getSeq() == Seq4 ) + Scene00013( quest, player ); + else if( quest.getSeq() == Seq5 ) + Scene00014( quest, player ); + else if( quest.getSeq() == Seq6 ) + Scene00021( quest, player ); + break; + } + case Actor6: + { + if( quest.getSeq() == Seq6 ) + Scene00017( quest, player );//34 is a dupe? + break; + } + case Actor7: + { + if( quest.getSeq() == Seq6 ) + Scene00018( quest, player ); + break; + } + case Actor8: + { + break; + } + case Actor9: + { + break; + } + case Actor10: + { + break; + } + case Actor11: + { + break; + } + case Actor12: + { + break; + } + case Actor13: + { + break; + } + case Actor14: + { + break; + } + case Actor15: + { + break; + } + case Actor16: + { + break; + } + case Actor17: + { + break; + } + case Actor18: + { + if( quest.getSeq() == Seq7 ) + Scene00035( quest, player ); + break; + } + case Eobject0: + { + //Opens key-item inventory + Scene00001( quest, player ); + break; + } + } + } + + void onEventItem( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + auto actor = eventMgr().mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Eobject0 ) + { + Scene00002( quest, player ); + } + } + + void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Sapphire::Entity::Player& player ) override + { + if( entityId != Enemy0 ) + return; + else if( entityId == Enemy0 && quest.getSeq() == Seq1 ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setUI8BH( 0 ); + quest.setSeq( Seq2 ); + } + } + + void onEObjHit( World::Quest& quest, Sapphire::Entity::Player& player, uint64_t actorId, uint32_t actionId ) override + { + auto actor = eventMgr().mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + + if( actor == Actor3 && actionId == Action0 ) + { + eventMgr().sendEventNotice( player, getId(), 3, 0 ); + quest.setSeq( Seq5 ); + } + } + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ClsCnj003::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &ClsCnj003::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setUI8BH( 1 ); + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsCnj003::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + auto teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy0, 319 /*Find the right value*/, Common::BNpcType::Enemy ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &ClsCnj003::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &ClsCnj003::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &ClsCnj003::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, NONE, bindSceneReturn( &ClsCnj003::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, FADE_OUT | HIDE_UI | CONDITION_CUTSCENE, bindSceneReturn( &ClsCnj003::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, NONE, bindSceneReturn( &ClsCnj003::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setSeq( Seq4 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, NONE, bindSceneReturn( &ClsCnj003::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00010( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 10, NONE, bindSceneReturn( &ClsCnj003::Scene00010Return ) ); + } + + void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00011( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 11, NONE, bindSceneReturn( &ClsCnj003::Scene00011Return ) ); + } + + void Scene00011Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00012( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 12, NONE, bindSceneReturn( &ClsCnj003::Scene00012Return ) ); + } + + void Scene00012Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00013( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 13, NONE, bindSceneReturn( &ClsCnj003::Scene00013Return ) ); + } + + void Scene00013Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00014( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 14, HIDE_HOTBAR, bindSceneReturn( &ClsCnj003::Scene00014Return ) ); + } + + void Scene00014Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 4, 0 ); + quest.setSeq( Seq6 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00015( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 15, NONE, bindSceneReturn( &ClsCnj003::Scene00015Return ) ); + } + + void Scene00015Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00016( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 16, NONE, bindSceneReturn( &ClsCnj003::Scene00016Return ) ); + } + + void Scene00016Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00017( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 17, HIDE_HOTBAR, bindSceneReturn( &ClsCnj003::Scene00017Return ) ); + } + + void Scene00017Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + //TODO: QuestBattle + playerMgr().sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); + eventMgr().sendEventNotice( player, getId(), 5, 0 ); + quest.setSeq( Seq7 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00018( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 18, NONE, bindSceneReturn( &ClsCnj003::Scene00018Return ) ); + } + + void Scene00018Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00019( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 19, NONE, bindSceneReturn( &ClsCnj003::Scene00019Return ) ); + } + + void Scene00019Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00020( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 20, NONE, bindSceneReturn( &ClsCnj003::Scene00020Return ) ); + } + + void Scene00020Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00021( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 21, NONE, bindSceneReturn( &ClsCnj003::Scene00021Return ) ); + } + + void Scene00021Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00022( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 22, NONE, bindSceneReturn( &ClsCnj003::Scene00022Return ) ); + } + + void Scene00022Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00023( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 23, NONE, bindSceneReturn( &ClsCnj003::Scene00023Return ) ); + } + + void Scene00023Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00024( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 24, NONE, bindSceneReturn( &ClsCnj003::Scene00024Return ) ); + } + + void Scene00024Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00025( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 25, NONE, bindSceneReturn( &ClsCnj003::Scene00025Return ) ); + } + + void Scene00025Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00026( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 26, NONE, bindSceneReturn( &ClsCnj003::Scene00026Return ) ); + } + + void Scene00026Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00027( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 27, NONE, bindSceneReturn( &ClsCnj003::Scene00027Return ) ); + } + + void Scene00027Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00028( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 28, NONE, bindSceneReturn( &ClsCnj003::Scene00028Return ) ); + } + + void Scene00028Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00029( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 29, NONE, bindSceneReturn( &ClsCnj003::Scene00029Return ) ); + } + + void Scene00029Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00030( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 30, NONE, bindSceneReturn( &ClsCnj003::Scene00030Return ) ); + } + + void Scene00030Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00031( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 31, NONE, bindSceneReturn( &ClsCnj003::Scene00031Return ) ); + } + + void Scene00031Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00032( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 32, NONE, bindSceneReturn( &ClsCnj003::Scene00032Return ) ); + } + + void Scene00032Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00033( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 33, NONE, bindSceneReturn( &ClsCnj003::Scene00033Return ) ); + } + + void Scene00033Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00034( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 34, NONE, bindSceneReturn( &ClsCnj003::Scene00034Return ) ); + } + + void Scene00034Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00035( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 35, HIDE_HOTBAR, bindSceneReturn( &ClsCnj003::Scene00035Return ) ); + } + + void Scene00035Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 6, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00036( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 36, FADE_OUT | HIDE_UI | CONDITION_CUTSCENE, bindSceneReturn( &ClsCnj003::Scene00036Return ) ); + } + + void Scene00036Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } +}; + +EXPOSE_SCRIPT( ClsCnj003 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/CNJ/ClsCnj004.cpp b/src/scripts/quest/classquest/CNJ/ClsCnj004.cpp new file mode 100644 index 00000000..f13a31e2 --- /dev/null +++ b/src/scripts/quest/classquest/CNJ/ClsCnj004.cpp @@ -0,0 +1,387 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + + +#include "Actor/BNpc.h" +#include "Manager/TerritoryMgr.h" +#include "Territory/Territory.h" + +// Quest Script: ClsCnj004_00093 +// Quest Name: Sylphie's Trials +// Quest ID: 65629 +// Start NPC: 1000692 +// End NPC: 1000692 + +using namespace Sapphire; + +class ClsCnj004 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + // UI8BH + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 2000891 + /// Countable Num: 1 Seq: 2 Event: 5 Listener: 294 + /// Countable Num: 1 Seq: 3 Event: 1 Listener: 1002961 + /// Countable Num: 1 Seq: 4 Event: 1 Listener: 1002961 + /// Countable Num: 1 Seq: 5 Event: 1 Listener: 2000893 + /// Countable Num: 1 Seq: 6 Event: 5 Listener: 299 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1002962 + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + Seq2 = 2, + Seq3 = 3, + Seq4 = 4, + Seq5 = 5, + Seq6 = 6, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000692;//E-Sumi-Yan + static constexpr auto Actor1 = 1002961;//Sylphie (Seq1/Seq2) + static constexpr auto Actor2 = 1002962;//Sylphie (Seq3/Seq4) + static constexpr auto Actor3 = 1002963;//Sylphie (Seq5/Seq6) + static constexpr auto Enemy0 = 3878392; + static constexpr auto Enemy1 = 3796339; + static constexpr auto Enemy2 = 3876177; + static constexpr auto Eobject0 = 2000891;//Corrupted Soil + static constexpr auto Eobject1 = 2000893;//Corrupted Air + static constexpr auto Eobject2 = 2000895;//Corrupted Water + static constexpr auto EventActionSearch = 1; + static constexpr auto LocActor0 = 1003003; + static constexpr auto LocActor1 = 1000693; + static constexpr auto LocPosActor0 = 1170797; + static constexpr auto Seq0Actor0 = 0; + static constexpr auto Seq1Actor1 = 2; + static constexpr auto Seq1Eobject0 = 1; + static constexpr auto Seq1Eobject0Eventactionno = 99; + static constexpr auto Seq1Eobject0Eventactionok = 100; + static constexpr auto Seq2Actor1 = 3; + static constexpr auto Seq3Actor2 = 5; + static constexpr auto Seq3Eobject1 = 4; + static constexpr auto Seq3Eobject1Eventactionno = 97; + static constexpr auto Seq3Eobject1Eventactionok = 98; + static constexpr auto Seq4Actor2 = 6; + static constexpr auto Seq5Actor3 = 8; + static constexpr auto Seq5Eobject2 = 7; + static constexpr auto Seq5Eobject2Eventactionno = 95; + static constexpr auto Seq5Eobject2Eventactionok = 96; + static constexpr auto Seq6Actor3 = 9; + static constexpr auto Seq7Actor0 = 10; + +public: + ClsCnj004() : Sapphire::ScriptAPI::QuestScript( 65629 ){}; + ~ClsCnj004() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00010( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00003( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq3 ) + Scene00005( quest, player ); + else if( quest.getSeq() == Seq4 ) + Scene00006( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == Seq5 ) + Scene00008( quest, player ); + else if( quest.getSeq() == Seq6 ) + Scene00009( quest, player ); + break; + } + case Eobject0: + { + if( quest.getSeq() == Seq1 ) + Scene00096( quest, player ); + break; + } + case Eobject1: + { + if( quest.getSeq() == Seq3 ) + Scene00098( quest, player ); + break; + } + case Eobject2: + { + if( quest.getSeq() == Seq5 ) + Scene00100( quest, player ); + break; + } + } + } + + void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Sapphire::Entity::Player& player ) override + { + if( quest.getSeq() == Seq1 && entityId == Enemy0 ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + } + else if( quest.getSeq() == Seq3 && entityId == Enemy1 ) + { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setSeq( Seq4 ); + } + else if( quest.getSeq() == Seq5 && entityId == Enemy2 ) + { + eventMgr().sendEventNotice( player, getId(), 4, 0 ); + quest.setSeq( Seq6 ); + } + } + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ClsCnj004::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, NONE, bindSceneReturn( &ClsCnj004::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsCnj004::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsCnj004::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &ClsCnj004::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, HIDE_HOTBAR, bindSceneReturn( &ClsCnj004::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ClsCnj004::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 3, 0 ); + quest.setSeq( Seq5 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, NONE, bindSceneReturn( &ClsCnj004::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, HIDE_HOTBAR, bindSceneReturn( &ClsCnj004::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, HIDE_HOTBAR, bindSceneReturn( &ClsCnj004::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 5, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00010( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 10, FADE_OUT | HIDE_UI | CONDITION_CUTSCENE, bindSceneReturn( &ClsCnj004::Scene00010Return ) ); + } + + void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00095( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 95, NONE, bindSceneReturn( &ClsCnj004::Scene00095Return ) ); + } + + void Scene00095Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00096( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 96, NONE, bindSceneReturn( &ClsCnj004::Scene00096Return ) ); + } + + void Scene00096Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + auto teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy0, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00097( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 97, NONE, bindSceneReturn( &ClsCnj004::Scene00097Return ) ); + } + + void Scene00097Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00098( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 98, NONE, bindSceneReturn( &ClsCnj004::Scene00098Return ) ); + } + + void Scene00098Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + auto teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy1, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00099( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 99, NONE, bindSceneReturn( &ClsCnj004::Scene00099Return ) ); + } + + void Scene00099Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00100( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 100, NONE, bindSceneReturn( &ClsCnj004::Scene00100Return ) ); + } + + void Scene00100Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + auto teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy2, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + } +}; + +EXPOSE_SCRIPT( ClsCnj004 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/CNJ/ClsCnj005.cpp b/src/scripts/quest/classquest/CNJ/ClsCnj005.cpp new file mode 100644 index 00000000..b3f9f2f8 --- /dev/null +++ b/src/scripts/quest/classquest/CNJ/ClsCnj005.cpp @@ -0,0 +1,657 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include "Manager/TerritoryMgr.h" +#include +#include +#include + +// Quest Script: ClsCnj005_00440 +// Quest Name: Like Mother, Like Daughter +// Quest ID: 65976 +// Start NPC: 1000692 +// End NPC: 1000692 + +using namespace Sapphire; + +class ClsCnj005 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag16 + // BitFlag8 + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 1008149 + /// Countable Num: 1 Seq: 2 Event: 1 Listener: 1008147 + /// Countable Num: 1 Seq: 3 Event: 1 Listener: 1008148 + /// Countable Num: 1 Seq: 4 Event: 1 Listener: 1008146 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1008147 + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + Seq2 = 2, + Seq3 = 3, + Seq4 = 4, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000692;//E-Sumi-Yan + static constexpr auto Actor1 = 1008149;//Wulfiue (Seq1/Seq2) + static constexpr auto Actor2 = 1008147;//Nolanel (Seq1/Seq2) + static constexpr auto Actor3 = 1008148;//Joacin (Seq1/Seq2) + static constexpr auto Actor4 = 1008146;//Sylphie (Seq2) + static constexpr auto Actor5 = 1008150;//Sylphie (Seq3) + static constexpr auto Actor6 = 1008151; + static constexpr auto Actor7 = 1008152; + static constexpr auto Actor8 = 1008153; + static constexpr auto Actor9 = 1008154; + static constexpr auto Actor10 = 1008155; + static constexpr auto Actor11 = 1008156; + static constexpr auto Actor12 = 1008157;//Sylphie (Seq4/SeqFinish) + static constexpr auto Actor13 = 1008158;//Nolanel (Seq4/SeqFinish) + static constexpr auto Actor14 = 1008159;//Joacin (Seq4/SeqFinish) + static constexpr auto Actor15 = 1008160;//Wulfiue (Seq4/SeqFinish) + static constexpr auto Eobject0 = 2002552; + static constexpr auto Eobject1 = 2002551; + static constexpr auto Eobject2 = 2002553; + static constexpr auto EventActionSearch = 1; + static constexpr auto LocAction1 = 1005; + static constexpr auto LocActor0 = 1003003; + static constexpr auto LocActor1 = 1000693; + static constexpr auto LocFace0 = 604; + static constexpr auto LocFace1 = 611; + static constexpr auto LocFace2 = 605; + static constexpr auto LocFace3 = 619; + static constexpr auto LocFace4 = 617; + static constexpr auto LocPosActor0 = 1170797; + static constexpr auto LocPosCam1 = 4326305; + static constexpr auto Questbattle0 = 56; + static constexpr auto Territorytype0 = 291; + +public: + ClsCnj005() : Sapphire::ScriptAPI::QuestScript( 65976 ){}; + ~ClsCnj005() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00031( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00002( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00008( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq1 ) + Scene00003( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00006( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == Seq1 ) + Scene00004( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00007( quest, player ); + break; + } + case Actor4: + { + if( quest.getSeq() == Seq2 ) + Scene00005( quest, player ); + break; + } + case Actor5: + { + if( quest.getSeq() == Seq3 ) + { + //TODO: Selecting "Procede" causes the game to fade out, so if we don't send the player to an instance it soft-locks them. + //Scene00011( quest, player ); + playerMgr().sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setSeq( Seq4 ); + } + break; + } + case Actor6: + { + break; + } + case Actor7: + { + break; + } + case Actor8: + { + break; + } + case Actor9: + { + break; + } + case Actor10: + { + break; + } + case Actor11: + { + break; + } + case Actor12: + { + if( quest.getSeq() == Seq4 ) + Scene00024( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00035( quest, player ); + break; + } + case Actor13: + { + if( quest.getSeq() == Seq4 ) + Scene00028( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00036( quest, player ); + break; + } + case Actor14: + { + if( quest.getSeq() == Seq4 ) + Scene00029( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00037( quest, player ); + break; + } + case Actor15: + { + if( quest.getSeq() == Seq4 ) + Scene00030( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00038( quest, player ); + break; + } + } + } + + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, NONE, bindSceneReturn( &ClsCnj005::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, FADE_OUT | HIDE_UI | CONDITION_CUTSCENE, bindSceneReturn( &ClsCnj005::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, NONE, bindSceneReturn( &ClsCnj005::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00010( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 10, NONE, bindSceneReturn( &ClsCnj005::Scene00010Return ) ); + } + + void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00011( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 11, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00011Return ) ); + } + + void Scene00011Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )//selected "Procede" + { + //TODO: QuestBattle content + + /* auto pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + + eventMgr().eventFinish( player, result.eventId, 0 ); + pTeriMgr.createAndJoinQuestBattle( player, Questbattle0 );*/ + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00012( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 12, NONE, bindSceneReturn( &ClsCnj005::Scene00012Return ) ); + } + + void Scene00012Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00013( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 13, NONE, bindSceneReturn( &ClsCnj005::Scene00013Return ) ); + } + + void Scene00013Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00014( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 14, NONE, bindSceneReturn( &ClsCnj005::Scene00014Return ) ); + } + + void Scene00014Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00015( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 15, NONE, bindSceneReturn( &ClsCnj005::Scene00015Return ) ); + } + + void Scene00015Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00016( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 16, NONE, bindSceneReturn( &ClsCnj005::Scene00016Return ) ); + } + + void Scene00016Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00017( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 17, NONE, bindSceneReturn( &ClsCnj005::Scene00017Return ) ); + } + + void Scene00017Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00018( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 18, NONE, bindSceneReturn( &ClsCnj005::Scene00018Return ) ); + } + + void Scene00018Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00019( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 19, NONE, bindSceneReturn( &ClsCnj005::Scene00019Return ) ); + } + + void Scene00019Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00020( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 20, NONE, bindSceneReturn( &ClsCnj005::Scene00020Return ) ); + } + + void Scene00020Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00021( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 21, NONE, bindSceneReturn( &ClsCnj005::Scene00021Return ) ); + } + + void Scene00021Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00022( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 22, NONE, bindSceneReturn( &ClsCnj005::Scene00022Return ) ); + } + + void Scene00022Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00023( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 23, NONE, bindSceneReturn( &ClsCnj005::Scene00023Return ) ); + } + + void Scene00023Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00024( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 24, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00024Return ) ); + } + + void Scene00024Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 3, 0 ); + quest.setSeq( SeqFinish ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00025( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 25, NONE, bindSceneReturn( &ClsCnj005::Scene00025Return ) ); + } + + void Scene00025Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00026( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 26, NONE, bindSceneReturn( &ClsCnj005::Scene00026Return ) ); + } + + void Scene00026Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00027( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 27, NONE, bindSceneReturn( &ClsCnj005::Scene00027Return ) ); + } + + void Scene00027Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00028( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 28, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00028Return ) ); + } + + void Scene00028Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00029( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 29, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00029Return ) ); + } + + void Scene00029Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00030( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 30, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00030Return ) ); + } + + void Scene00030Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00031( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 31, FADE_OUT | HIDE_UI | CONDITION_CUTSCENE, bindSceneReturn( &ClsCnj005::Scene00031Return ) ); + } + + void Scene00031Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00032( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 32, NONE, bindSceneReturn( &ClsCnj005::Scene00032Return ) ); + } + + void Scene00032Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00033( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 33, NONE, bindSceneReturn( &ClsCnj005::Scene00033Return ) ); + } + + void Scene00033Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00034( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 34, NONE, bindSceneReturn( &ClsCnj005::Scene00034Return ) ); + } + + void Scene00034Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00035( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 35, NONE, bindSceneReturn( &ClsCnj005::Scene00035Return ) ); + } + + void Scene00035Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00036( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 36, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00036Return ) ); + } + + void Scene00036Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00037( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 37, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00037Return ) ); + } + + void Scene00037Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00038( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 38, HIDE_HOTBAR, bindSceneReturn( &ClsCnj005::Scene00038Return ) ); + } + + void Scene00038Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } +}; + +EXPOSE_SCRIPT( ClsCnj005 ); \ No newline at end of file diff --git a/src/scripts/quest/classquest/CNJ/ClsCnj006.cpp b/src/scripts/quest/classquest/CNJ/ClsCnj006.cpp new file mode 100644 index 00000000..ab34206a --- /dev/null +++ b/src/scripts/quest/classquest/CNJ/ClsCnj006.cpp @@ -0,0 +1,567 @@ +// This is an automatically generated C++ script template +// Content needs to be added by hand to make it function +// In order for this script to be loaded, move it to the correct folder in /scripts/ + +#include "Manager/EventMgr.h" +#include +#include +#include + + +#include "Actor/BNpc.h" +#include "Manager/TerritoryMgr.h" +#include "Territory/Territory.h" + +// Quest Script: ClsCnj006_00441 +// Quest Name: In Nature's Embrace +// Quest ID: 65977 +// Start NPC: 1000692 +// End NPC: 1000692 + +using namespace Sapphire; + +class ClsCnj006 : public Sapphire::ScriptAPI::QuestScript +{ +private: + // Basic quest information + // Quest vars / flags used + // BitFlag8 + // UI8AL + + /// Countable Num: 1 Seq: 1 Event: 1 Listener: 2000899 + /// Countable Num: 1 Seq: 2 Event: 5 Listener: 294 + /// Countable Num: 1 Seq: 3 Event: 1 Listener: 1002965 + /// Countable Num: 1 Seq: 4 Event: 1 Listener: 1002965 + /// Countable Num: 1 Seq: 5 Event: 1 Listener: 2000901 + /// Countable Num: 1 Seq: 6 Event: 5 Listener: 294 + /// Countable Num: 1 Seq: 7 Event: 1 Listener: 1002966 + /// Countable Num: 1 Seq: 255 Event: 1 Listener: 1002966 + // Steps in this quest ( 0 is before accepting, + // 1 is first, 255 means ready for turning it in + enum Sequence : uint8_t + { + Seq0 = 0, + Seq1 = 1, + Seq2 = 2, + Seq3 = 3, + Seq4 = 4, + Seq5 = 5, + Seq6 = 6, + Seq7 = 7, + SeqFinish = 255, + }; + + // Entities found in the script data of the quest + static constexpr auto Actor0 = 1000692;//E-Sumi-Yan + static constexpr auto Actor1 = 1002965;//Sylphie (Seq1/Seq2) + static constexpr auto Actor2 = 1002966;//Sylphie (Seq3/Seq4) + static constexpr auto Actor3 = 1002967;//Sylphie (Seq5/Seq6) + static constexpr auto Actor4 = 1002968;//Sylphie (Seq7) + static constexpr auto Enemy0 = 3876178; + static constexpr auto Enemy1 = 3876179; + static constexpr auto Enemy2 = 3876180; + static constexpr auto Eobject0 = 2000899;//Corrupted Soil (Seq1) + static constexpr auto Eobject1 = 2000901;//Corrupted Soil (Seq3) + static constexpr auto Eobject2 = 2000906;//Corrupted Soil (Seq5) + static constexpr auto Eobject3 = 2001839; + static constexpr auto EventActionSearch = 1; + static constexpr auto LocAction0 = 995; + static constexpr auto LocActor0 = 1003003; + static constexpr auto LocActor1 = 1000693; + static constexpr auto LocPosActor0 = 1170797; + static constexpr auto LocVfx = 241; + static constexpr auto LocWs = 135; + static constexpr auto NqPoint001 = 19; + static constexpr auto NqPoint002 = 20; + static constexpr auto Questbattle0 = 17; + static constexpr auto Seq0Actor0Lq = 90; + static constexpr auto Territorytype0 = 235; + +public: + ClsCnj006() : Sapphire::ScriptAPI::QuestScript( 65977 ){}; + ~ClsCnj006() = default; + + ////////////////////////////////////////////////////////////////////// + // Event Handlers + void onTalk( World::Quest& quest, Entity::Player& player, uint64_t actorId ) override + { + switch( actorId ) + { + case Actor0: + { + if( quest.getSeq() == Seq0 ) + Scene00000( quest, player ); + else if( quest.getSeq() == SeqFinish ) + Scene00029( quest, player ); + break; + } + case Actor1: + { + if( quest.getSeq() == Seq1 ) + Scene00008( quest, player ); + else if( quest.getSeq() == Seq2 ) + Scene00009( quest, player ); + break; + } + case Actor2: + { + if( quest.getSeq() == Seq3 ) + Scene00016( quest, player ); + else if( quest.getSeq() == Seq4 ) + Scene00017( quest, player ); + break; + } + case Actor3: + { + if( quest.getSeq() == Seq5 ) + Scene00024( quest, player ); + else if( quest.getSeq() == Seq6 ) + Scene00025( quest, player ); + break; + } + case Actor4: + { + if( quest.getSeq() == Seq7 ) + { + //TODO: Selecting "Procede" causes the game to fade out, so if we don't send the player to an instance it soft-locks them. + //Scene00026( quest, player ); + playerMgr().sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." ); + eventMgr().sendEventNotice( player, getId(), 6, 0 ); + quest.setSeq( SeqFinish ); + } + break; + } + case Eobject0: + { + if( quest.getSeq() == Seq1 ) + Scene00003( quest, player ); + break; + } + case Eobject1: + { + if( quest.getSeq() == Seq3 ) + Scene00011( quest, player ); + break; + } + case Eobject2: + { + if( quest.getSeq() == Seq5 ) + Scene00019( quest, player ); + break; + } + } + } + + void onBNpcKill( World::Quest& quest, uint16_t nameId, uint32_t entityId, Sapphire::Entity::Player& player ) override + { + switch( entityId ) + { + case Enemy0: + { + if( quest.getSeq() == Seq1 ) + { + eventMgr().sendEventNotice( player, getId(), 0, 0 ); + quest.setSeq( Seq2 ); + quest.setBitFlag8( 1, false ); + } + break; + } + case Enemy1: + { + if( quest.getSeq() == Seq3 ) + { + eventMgr().sendEventNotice( player, getId(), 2, 0 ); + quest.setSeq( Seq4 ); + quest.setBitFlag8( 1, false ); + } + break; + } + case Enemy2: + { + if( quest.getSeq() == Seq5 ) + { + eventMgr().sendEventNotice( player, getId(), 4, 0 ); + quest.setSeq( Seq6 ); + quest.setBitFlag8( 1, false ); + } + break; + } + } + } + +private: + ////////////////////////////////////////////////////////////////////// + // Available Scenes in this quest, not necessarly all are used + ////////////////////////////////////////////////////////////////////// + + void Scene00000( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ClsCnj006::Scene00000Return ) ); + } + + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 )// accept quest + { + Scene00001( quest, player ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00001( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 1, FADE_OUT | HIDE_UI | CONDITION_CUTSCENE, bindSceneReturn( &ClsCnj006::Scene00001Return ) ); + } + + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setSeq( Seq1 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00002( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 2, NONE, bindSceneReturn( &ClsCnj006::Scene00002Return ) ); + } + + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00003( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 3, NONE, bindSceneReturn( &ClsCnj006::Scene00003Return ) ); + } + + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + auto teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy0, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + quest.setBitFlag8( 1, true ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00004( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 4, NONE, bindSceneReturn( &ClsCnj006::Scene00004Return ) ); + } + + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, NONE, bindSceneReturn( &ClsCnj006::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, NONE, bindSceneReturn( &ClsCnj006::Scene00006Return ) ); + } + + void Scene00006Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, NONE, bindSceneReturn( &ClsCnj006::Scene00007Return ) ); + } + + void Scene00007Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, NONE, bindSceneReturn( &ClsCnj006::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00009( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 9, NONE, bindSceneReturn( &ClsCnj006::Scene00009Return ) ); + } + + void Scene00009Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 1, 0 ); + quest.setSeq( Seq3 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00010( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 10, NONE, bindSceneReturn( &ClsCnj006::Scene00010Return ) ); + } + + void Scene00010Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00011( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 11, NONE, bindSceneReturn( &ClsCnj006::Scene00011Return ) ); + } + + void Scene00011Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + auto teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy1, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + quest.setBitFlag8( 1, true ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00012( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 12, NONE, bindSceneReturn( &ClsCnj006::Scene00012Return ) ); + } + + void Scene00012Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00013( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 13, NONE, bindSceneReturn( &ClsCnj006::Scene00013Return ) ); + } + + void Scene00013Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00014( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 14, NONE, bindSceneReturn( &ClsCnj006::Scene00014Return ) ); + } + + void Scene00014Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00015( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 15, NONE, bindSceneReturn( &ClsCnj006::Scene00015Return ) ); + } + + void Scene00015Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00016( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 16, NONE, bindSceneReturn( &ClsCnj006::Scene00016Return ) ); + } + + void Scene00016Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00017( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 17, NONE, bindSceneReturn( &ClsCnj006::Scene00017Return ) ); + } + + void Scene00017Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 3, 0 ); + quest.setSeq( Seq5 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00018( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 18, NONE, bindSceneReturn( &ClsCnj006::Scene00018Return ) ); + } + + void Scene00018Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00019( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 19, NONE, bindSceneReturn( &ClsCnj006::Scene00019Return ) ); + } + + void Scene00019Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + auto teriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + auto instance = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); + auto enemy = instance->createBNpcFromInstanceId( Enemy2, 413 /*TODO: Find the right value*/, Common::BNpcType::Enemy ); + enemy->hateListAdd( player.getAsPlayer(), 1 ); + + quest.setBitFlag8( 1, true ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00020( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 20, NONE, bindSceneReturn( &ClsCnj006::Scene00020Return ) ); + } + + void Scene00020Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00021( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 21, NONE, bindSceneReturn( &ClsCnj006::Scene00021Return ) ); + } + + void Scene00021Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00022( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 22, NONE, bindSceneReturn( &ClsCnj006::Scene00022Return ) ); + } + + void Scene00022Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00023( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 23, NONE, bindSceneReturn( &ClsCnj006::Scene00023Return ) ); + } + + void Scene00023Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00024( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 24, NONE, bindSceneReturn( &ClsCnj006::Scene00024Return ) ); + } + + void Scene00024Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00025( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 25, NONE, bindSceneReturn( &ClsCnj006::Scene00025Return ) ); + } + + void Scene00025Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + eventMgr().sendEventNotice( player, getId(), 5, 0 ); + quest.setSeq( Seq7 ); + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00026( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 26, NONE, bindSceneReturn( &ClsCnj006::Scene00026Return ) ); + } + + void Scene00026Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + { + //TODO: QuestBattle content + + auto pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + + eventMgr().eventFinish( player, result.eventId, 0 ); + pTeriMgr.createAndJoinQuestBattle( player, Questbattle0 ); + } + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00027( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 27, NONE, bindSceneReturn( &ClsCnj006::Scene00027Return ) ); + } + + void Scene00027Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00028( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 28, NONE, bindSceneReturn( &ClsCnj006::Scene00028Return ) ); + } + + void Scene00028Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + } + + ////////////////////////////////////////////////////////////////////// + + void Scene00029( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 29, FADE_OUT | HIDE_UI | CONDITION_CUTSCENE, bindSceneReturn( &ClsCnj006::Scene00029Return ) ); + } + + void Scene00029Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + + if( result.getResult( 0 ) == 1 ) + { + player.finishQuest( getId(), result.getResult( 1 ) ); + } + } +}; + +EXPOSE_SCRIPT( ClsCnj006 ); \ No newline at end of file diff --git a/src/world/Action/Action.cpp b/src/world/Action/Action.cpp index 91c1ebed..205130ab 100644 --- a/src/world/Action/Action.cpp +++ b/src/world/Action/Action.cpp @@ -251,7 +251,7 @@ bool Action::Action::update() player->setLastActionTick( tickCount ); uint32_t delayMs = 100 - lastTickMs; - castTime = ( m_castTimeMs + delayMs ); //subtract 500ms before the client begin to request actions while casting + castTime = ( m_castTimeMs + delayMs ); m_castTimeRestMs = static_cast< uint64_t >( m_castTimeMs ) - std::difftime( static_cast< time_t >( tickCount ), static_cast< time_t >( m_startTime ) ); } @@ -264,7 +264,7 @@ bool Action::Action::update() if( m_pTarget == nullptr && m_targetId != 0 ) { // try to search for the target actor - for( auto actor : m_pSource->getInRangeActors( true ) ) + for( const auto& actor : m_pSource->getInRangeActors( true ) ) { if( actor->getId() == m_targetId ) { @@ -274,15 +274,12 @@ bool Action::Action::update() } } - if( m_pTarget != nullptr ) + if( m_pTarget != nullptr && !m_pTarget->isAlive() ) { - if( !m_pTarget->isAlive() ) - { - // interrupt the cast if target died - setInterrupted( Common::ActionInterruptType::RegularInterrupt ); - interrupt(); - return true; - } + // interrupt the cast if target died + setInterrupted( Common::ActionInterruptType::RegularInterrupt ); + interrupt(); + return true; } return false; diff --git a/src/world/Action/ItemAction.cpp b/src/world/Action/ItemAction.cpp index 89d57a26..15edc483 100644 --- a/src/world/Action/ItemAction.cpp +++ b/src/world/Action/ItemAction.cpp @@ -51,6 +51,13 @@ void ItemAction::execute() break; } + + case Common::ItemActionType::ItemActionMount: + { + handleMountItem(); + + break; + } } } @@ -72,4 +79,12 @@ void ItemAction::handleVFXItem() effectPacket->addTargetEffect( effect, static_cast< uint64_t >( getSourceChara()->getId() ) ); m_pSource->sendToInRangeSet( effectPacket, true ); +} + +void ItemAction::handleMountItem() +{ + auto player = getSourceChara()->getAsPlayer(); + + player->unlockMount( m_itemAction->data().Calcu0Arg[ 0 ] ); + player->dropInventoryItem ( static_cast< Common::InventoryType >( m_itemSourceContainer ), m_itemSourceSlot ); } \ No newline at end of file diff --git a/src/world/Action/ItemAction.h b/src/world/Action/ItemAction.h index a3b60faa..d4a3d394 100644 --- a/src/world/Action/ItemAction.h +++ b/src/world/Action/ItemAction.h @@ -27,6 +27,8 @@ namespace Sapphire::World::Action private: void handleVFXItem(); + void handleMountItem(); + private: std::shared_ptr< Component::Excel::ExcelStruct< Component::Excel::ItemAction > > m_itemAction; diff --git a/src/world/Actor/BNpc.cpp b/src/world/Actor/BNpc.cpp index 627cc8c8..b5210dfb 100644 --- a/src/world/Actor/BNpc.cpp +++ b/src/world/Actor/BNpc.cpp @@ -427,7 +427,6 @@ bool Sapphire::Entity::BNpc::moveTo( const Entity::Chara& targetChara ) void Sapphire::Entity::BNpc::sendPositionUpdate() { - uint8_t unk1 = 0x3a; uint8_t animationType = 2; if( m_state == BNpcState::Combat || m_state == BNpcState::Retreat ) @@ -468,7 +467,7 @@ Sapphire::Entity::CharaPtr Sapphire::Entity::BNpc::hateListGetHighest() return nullptr; } -void Sapphire::Entity::BNpc::hateListAdd( Sapphire::Entity::CharaPtr pChara, int32_t hateAmount ) +void Sapphire::Entity::BNpc::hateListAdd( const Sapphire::Entity::CharaPtr& pChara, int32_t hateAmount ) { auto hateEntry = std::make_shared< HateListEntry >(); hateEntry->m_hateAmount = static_cast< uint32_t >( hateAmount ); @@ -482,9 +481,9 @@ void Sapphire::Entity::BNpc::hateListAdd( Sapphire::Entity::CharaPtr pChara, int } } -void Sapphire::Entity::BNpc::hateListUpdate( Sapphire::Entity::CharaPtr pChara, int32_t hateAmount ) +void Sapphire::Entity::BNpc::hateListUpdate( const Sapphire::Entity::CharaPtr& pChara, int32_t hateAmount ) { - for( auto listEntry : m_hateList ) + for( const auto& listEntry : m_hateList ) { if( listEntry->m_pChara == pChara ) { @@ -499,9 +498,9 @@ void Sapphire::Entity::BNpc::hateListUpdate( Sapphire::Entity::CharaPtr pChara, m_hateList.insert( hateEntry ); } -void Sapphire::Entity::BNpc::hateListRemove( Sapphire::Entity::CharaPtr pChara ) +void Sapphire::Entity::BNpc::hateListRemove( const Sapphire::Entity::CharaPtr& pChara ) { - for( auto listEntry : m_hateList ) + for( const auto& listEntry : m_hateList ) { if( listEntry->m_pChara == pChara ) { @@ -517,7 +516,17 @@ void Sapphire::Entity::BNpc::hateListRemove( Sapphire::Entity::CharaPtr pChara ) } } -bool Sapphire::Entity::BNpc::hateListHasActor( Sapphire::Entity::CharaPtr pChara ) +uint32_t Sapphire::Entity::BNpc::getTriggerOwnerId() const +{ + return m_triggerOwnerId; +} + +void Sapphire::Entity::BNpc::setTriggerOwnerId( uint32_t triggerOwnerId ) +{ + m_triggerOwnerId = triggerOwnerId; +} + +bool Sapphire::Entity::BNpc::hateListHasActor( const Sapphire::Entity::CharaPtr& pChara ) { for( auto& listEntry : m_hateList ) { @@ -527,7 +536,7 @@ bool Sapphire::Entity::BNpc::hateListHasActor( Sapphire::Entity::CharaPtr pChara return false; } -void Sapphire::Entity::BNpc::aggro( Sapphire::Entity::CharaPtr pChara ) +void Sapphire::Entity::BNpc::aggro( const Sapphire::Entity::CharaPtr& pChara ) { auto& pRNGMgr = Common::Service< World::Manager::RNGMgr >::ref(); auto variation = static_cast< uint32_t >( pRNGMgr.getRandGenerator< float >( 500, 1000 ).next() ); @@ -550,7 +559,7 @@ void Sapphire::Entity::BNpc::aggro( Sapphire::Entity::CharaPtr pChara ) } -void Sapphire::Entity::BNpc::deaggro( Sapphire::Entity::CharaPtr pChara ) +void Sapphire::Entity::BNpc::deaggro( const Sapphire::Entity::CharaPtr& pChara ) { if( !hateListHasActor( pChara ) ) hateListRemove( pChara ); @@ -765,6 +774,10 @@ void Sapphire::Entity::BNpc::onDeath() m_timeOfDeath = Util::getTimeSeconds(); setOwner( nullptr ); + + auto& exdData = Common::Service< Data::ExdData >::ref(); + auto paramGrowthInfo = exdData.getRow< Component::Excel::ParamGrow >( m_level ); + for( auto& pHateEntry : m_hateList ) { // TODO: handle drops @@ -773,6 +786,7 @@ void Sapphire::Entity::BNpc::onDeath() { auto& playerMgr = Common::Service< World::Manager::PlayerMgr >::ref(); playerMgr.onMobKill( *pPlayer, static_cast< uint16_t >( m_bNpcNameId ), getLayoutId() ); + pPlayer->gainExp( paramGrowthInfo->data().BaseExp ); } } hateListClear(); @@ -843,7 +857,7 @@ void Sapphire::Entity::BNpc::checkAggro() if( levelDiff >= 10 ) range = 0.f; else - range = std::max< float >( 0.f, range - std::pow( 1.53f, levelDiff * 0.6f ) ); + range = std::max< float >( 0.f, range - std::pow( 1.53f, static_cast< float >( levelDiff ) * 0.6f ) ); } auto distance = Util::distance( getPos().x, getPos().y, getPos().z, @@ -858,7 +872,7 @@ void Sapphire::Entity::BNpc::checkAggro() } } -void Sapphire::Entity::BNpc::setOwner( Sapphire::Entity::CharaPtr m_pChara ) +void Sapphire::Entity::BNpc::setOwner( const Sapphire::Entity::CharaPtr& m_pChara ) { m_pOwner = m_pChara; if( m_pChara != nullptr ) @@ -943,8 +957,8 @@ void Sapphire::Entity::BNpc::autoAttack( CharaPtr pTarget ) void Sapphire::Entity::BNpc::calculateStats() { - uint8_t level = getLevel(); - uint8_t job = static_cast< uint8_t >( getClass() ); + auto level = getLevel(); + auto job = static_cast< uint8_t >( getClass() ); auto& exdData = Common::Service< Data::ExdData >::ref(); diff --git a/src/world/Actor/BNpc.h b/src/world/Actor/BNpc.h index 6e22c976..636dc73d 100644 --- a/src/world/Actor/BNpc.h +++ b/src/world/Actor/BNpc.h @@ -87,6 +87,8 @@ namespace Sapphire::Entity uint8_t getAggressionMode() const; + uint32_t getTriggerOwnerId() const; + void setTriggerOwnerId( uint32_t triggerOwnerId ); float getNaviTargetReachedDistance() const; @@ -102,13 +104,13 @@ namespace Sapphire::Entity void hateListClear(); CharaPtr hateListGetHighest(); - void hateListAdd( CharaPtr pChara, int32_t hateAmount ); - void hateListUpdate( CharaPtr pChara, int32_t hateAmount ); - void hateListRemove( CharaPtr pChara ); - bool hateListHasActor( CharaPtr pChara ); + void hateListAdd( const CharaPtr& pChara, int32_t hateAmount ); + void hateListUpdate( const CharaPtr& pChara, int32_t hateAmount ); + void hateListRemove( const CharaPtr& pChara ); + bool hateListHasActor( const CharaPtr& pChara ); - void aggro( CharaPtr pChara ); - void deaggro( CharaPtr pChara ); + void aggro( const CharaPtr& pChara ); + void deaggro( const CharaPtr& pChara ); void update( uint64_t tickCount ) override; void onTick() override; @@ -126,7 +128,7 @@ namespace Sapphire::Entity void checkAggro(); - void setOwner( CharaPtr m_pChara ); + void setOwner( const CharaPtr& m_pChara ); void setLevelId( uint32_t levelId ); uint32_t getLevelId() const; @@ -159,6 +161,7 @@ namespace Sapphire::Entity uint32_t m_rank; uint32_t m_boundInstanceId; uint32_t m_layoutId; + uint32_t m_triggerOwnerId; uint32_t m_flags; diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index e53d7fb8..6103184d 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -21,7 +21,6 @@ #include "Manager/PartyMgr.h" #include "Territory/Territory.h" -#include "Territory/ZonePosition.h" #include "Territory/InstanceContent.h" #include "Territory/InstanceObjectCache.h" #include "Territory/Land.h" @@ -317,16 +316,6 @@ void Sapphire::Entity::Player::removeOnlineStatus( const std::vector< Common::On Service< World::Manager::PlayerMgr >::ref().onOnlineStatusChanged( *this, false ); } -void Sapphire::Entity::Player::prepareZoning( uint16_t targetZone, bool fadeOut, uint8_t fadeOutTime, uint16_t animation ) -{ - auto preparePacket = makeZonePacket< FFXIVIpcPrepareZoning >( getId() ); - preparePacket->data().targetZone = targetZone; - preparePacket->data().fadeOutTime = fadeOutTime; - preparePacket->data().animation = animation; - preparePacket->data().fadeOut = static_cast< uint8_t >( fadeOut ? 1 : 0 ); - queuePacket( preparePacket ); -} - void Sapphire::Entity::Player::calculateStats() { uint8_t tribe = getLookAt( Common::CharaLook::Tribe ); @@ -456,19 +445,22 @@ void Sapphire::Entity::Player::teleport( uint16_t aetheryteId, uint8_t type ) // TODO: this should be simplified and a type created in server_common/common.h. if( type == 1 ) // teleport { - prepareZoning( data.TerritoryType, true, 1, 0 ); // TODO: Really? + //prepareZoning( data.TerritoryType, true, 1, 0 ); // TODO: Really? + sendToInRangeSet( makeActorControl( getId(), WarpStart, Common::WarpType::WARP_TYPE_TELEPO ), true ); sendToInRangeSet( makeActorControl( getId(), ActorDespawnEffect, 0x04 ) ); setZoningType( Common::ZoneingType::Teleport ); } else if( type == 2 ) // aethernet { - prepareZoning( data.TerritoryType, true, 1, 112 ); + //prepareZoning( data.TerritoryType, true, 1, 112 ); + sendToInRangeSet( makeActorControl( getId(), WarpStart, Common::WarpType::WARP_TYPE_TELEPO ), true ); sendToInRangeSet( makeActorControl( getId(), ActorDespawnEffect, 0x04 ) ); setZoningType( Common::ZoneingType::Teleport ); } else if( type == 3 ) // return { - prepareZoning( data.TerritoryType, true, 1, 111 ); + //prepareZoning( data.TerritoryType, true, 1, 111 ); + sendToInRangeSet( makeActorControl( getId(), WarpStart, Common::WarpType::WARP_TYPE_HOME_POINT ), true ); sendToInRangeSet( makeActorControl( getId(), ActorDespawnEffect, 0x03 ) ); setZoningType( Common::ZoneingType::Return ); } @@ -479,65 +471,6 @@ void Sapphire::Entity::Player::teleport( uint16_t aetheryteId, uint8_t type ) void Sapphire::Entity::Player::forceZoneing( uint32_t zoneId ) { m_queuedZoneing = std::make_shared< QueuedZoning >( zoneId, getPos(), Util::getTimeMs(), 0.f ); - //performZoning( zoneId, Common::ZoneingType::None, getPos() ); -} - -void Sapphire::Entity::Player::returnToHomepoint() -{ - setZoningType( Common::ZoneingType::Return ); - teleport( getHomepoint(), 3 ); -} - -void Sapphire::Entity::Player::setZone( uint32_t zoneId ) -{ - auto& teriMgr = Common::Service< TerritoryMgr >::ref(); - m_onEnterEventDone = false; - - auto pZone = teriMgr.getZoneByTerritoryTypeId( zoneId ); - if( !teriMgr.movePlayer( pZone, *this ) ) - { - // todo: this will require proper handling, for now just return the player to their previous area - m_pos = m_prevPos; - m_rot = m_prevRot; - m_territoryTypeId = m_prevTerritoryTypeId; - - auto pZone1 = teriMgr.getZoneByTerritoryTypeId( m_territoryTypeId ); - if( !teriMgr.movePlayer( pZone1, *this ) ) - return; - } -} - -bool Sapphire::Entity::Player::setInstance( uint32_t instanceContentId ) -{ - m_onEnterEventDone = false; - auto& teriMgr = Common::Service< TerritoryMgr >::ref(); - - auto instance = teriMgr.getTerritoryByGuId( instanceContentId ); - if( !instance ) - return false; - - return setInstance( instance ); -} - -bool Sapphire::Entity::Player::setInstance( const TerritoryPtr& instance ) -{ - m_onEnterEventDone = false; - if( !instance ) - return false; - - auto& teriMgr = Common::Service< TerritoryMgr >::ref(); - - // zoning within the same zone won't cause the prev data to be overwritten - if( instance->getTerritoryTypeId() != m_territoryTypeId ) - { - auto pZone = teriMgr.getTerritoryByGuId( getTerritoryId() ); - m_prevTerritoryTypeId = pZone->getTerritoryTypeId(); - m_prevTerritoryId = getTerritoryId(); - m_prevPos = m_pos; - m_prevRot = m_rot; - } - - return teriMgr.movePlayer( instance, *this ); } bool Sapphire::Entity::Player::setInstance( const TerritoryPtr& instance, Common::FFXIVARR_POSITION3 pos ) @@ -576,18 +509,10 @@ bool Sapphire::Entity::Player::exitInstance() resetHp(); resetMp(); - // check if housing zone - if( teriMgr.isHousingTerritory( m_prevTerritoryTypeId ) ) - { - if( !teriMgr.movePlayer( teriMgr.getZoneByLandSetId( m_prevTerritoryId ), *this ) ) - return false; - } - else - { - auto pPrevZone = teriMgr.getZoneByTerritoryTypeId( m_prevTerritoryTypeId ); - if( !teriMgr.movePlayer( pPrevZone, *this ) ) - return false; - } + TerritoryPtr pTeri = teriMgr.getTerritoryByGuId( m_prevTerritoryId ); + + if( !teriMgr.movePlayer( pTeri, *this ) ) + return false; m_pos = m_prevPos; m_rot = m_prevRot; @@ -752,7 +677,7 @@ void Sapphire::Entity::Player::changePosition( float x, float y, float z, float m_queuedZoneing = std::make_shared< QueuedZoning >( getTerritoryTypeId(), pos, Util::getTimeMs(), o ); } -void Sapphire::Entity::Player::learnAction( Common::UnlockEntry unlockId ) +void Sapphire::Entity::Player::setSystemActionUnlocked( Common::UnlockEntry unlockId ) { uint16_t index; uint8_t value; @@ -761,7 +686,7 @@ void Sapphire::Entity::Player::learnAction( Common::UnlockEntry unlockId ) m_unlocks[ index ] |= value; - queuePacket( makeActorControlSelf( getId(), ToggleActionUnlock, unlock, 1 ) ); + queuePacket( makeActorControlSelf( getId(), SetSystemActionUnlocked, unlock, 1 ) ); } void Sapphire::Entity::Player::learnSong( uint8_t songId, uint32_t itemId ) @@ -1227,6 +1152,19 @@ const Sapphire::Entity::Player::OrchestrionList& Sapphire::Entity::Player::getOr return m_orchestrion; } +void Sapphire::Entity::Player::unlockMount( uint32_t mountId ) +{ + auto& exdData = Common::Service< Data::ExdData >::ref(); + auto mount = exdData.getRow< Component::Excel::Mount >( mountId ); + + if( mount->data().MountOrder == -1 ) + return; + + m_mountGuide[ mount->data().MountOrder / 8 ] |= ( 1 << ( mount->data().MountOrder % 8 ) ); + + queuePacket( makeActorControlSelf( getId(), Network::ActorControl::SetMountBitmask, mount->data().MountOrder, 1 ) ); +} + Sapphire::Entity::Player::MountList& Sapphire::Entity::Player::getMountGuideBitmask() { return m_mountGuide; @@ -1275,7 +1213,22 @@ void Sapphire::Entity::Player::performZoning( uint16_t zoneId, const Common::FFX m_territoryTypeId = zoneId; m_bMarkedForZoning = true; setRot( rotation ); - setZone( zoneId ); + + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); + m_onEnterEventDone = false; + + auto pZone = teriMgr.getZoneByTerritoryTypeId( zoneId ); + if( !teriMgr.movePlayer( pZone, *this ) ) + { + // todo: this will require proper handling, for now just return the player to their previous area + m_pos = m_prevPos; + m_rot = m_prevRot; + m_territoryTypeId = m_prevTerritoryTypeId; + + auto pZone1 = teriMgr.getZoneByTerritoryTypeId( m_territoryTypeId ); + if( !teriMgr.movePlayer( pZone1, *this ) ) + return; + } } bool Sapphire::Entity::Player::isMarkedForZoning() const @@ -1431,6 +1384,9 @@ void Sapphire::Entity::Player::setTitle( uint16_t titleId ) void Sapphire::Entity::Player::setMaxGearSets( uint8_t amount ) { + if( amount == 1 ) + amount = 5; + m_equippedMannequin = amount; queuePacket( makeActorControlSelf( getId(), SetMaxGearSets, m_equippedMannequin ) ); @@ -1458,7 +1414,7 @@ void Sapphire::Entity::Player::setMount( uint32_t mountId ) Service< World::Manager::PlayerMgr >::ref().onMountUpdate( *this, m_mount ); } -void Sapphire::Entity::Player::setCompanion( uint16_t id ) +void Sapphire::Entity::Player::setCompanion( uint8_t id ) { auto& exdData = Common::Service< Data::ExdData >::ref(); @@ -1700,11 +1656,9 @@ void Sapphire::Entity::Player::sendTitleList() queuePacket( titleListPacket ); } -void -Sapphire::Entity::Player::sendZoneInPackets( uint32_t param1, uint32_t param2 = 0, uint32_t param3 = 0, uint32_t param4 = 0, - bool shouldSetStatus = false ) +void Sapphire::Entity::Player::sendZoneInPackets( uint32_t param1, bool shouldSetStatus = false ) { - auto zoneInPacket = makeActorControlSelf( getId(), Appear, param1, param2, param3, param4 ); + auto zoneInPacket = makeActorControlSelf( getId(), Appear, param1, 0, 0, 0 ); auto SetStatusPacket = makeActorControl( getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) ); if( !getGmInvis() ) @@ -1728,7 +1682,7 @@ void Sapphire::Entity::Player::finishZoning() break; case ZoneingType::Teleport: - sendZoneInPackets( 0x01, 0, 0, 110 ); + sendZoneInPackets( 0x01 ); break; case ZoneingType::Return: @@ -1739,10 +1693,10 @@ void Sapphire::Entity::Player::finishZoning() resetHp(); resetMp(); setStatus( Common::ActorStatus::Idle ); - sendZoneInPackets( 0x01, 0x01, 0, 111, true ); + sendZoneInPackets( 0x01, true ); } else - sendZoneInPackets( 0x01, 0x00, 0, 111 ); + sendZoneInPackets( 0x01 ); } break; diff --git a/src/world/Actor/Player.h b/src/world/Actor/Player.h index 12dec010..e1020a1c 100644 --- a/src/world/Actor/Player.h +++ b/src/world/Actor/Player.h @@ -302,15 +302,6 @@ namespace Sapphire::Entity /*! return current online status depending on current state / activity */ Common::OnlineStatus getOnlineStatus() const; - /*! sets the players zone, initiating a zoning process */ - void setZone( uint32_t zoneId ); - - /*! sets the players instance & initiates zoning process */ - bool setInstance( uint32_t instanceContentId ); - - /*! sets the players instance & initiates zoning process */ - bool setInstance( const TerritoryPtr& instance ); - /*! sets the players instance & initiates zoning process */ bool setInstance( const Sapphire::TerritoryPtr& instance, Sapphire::Common::FFXIVARR_POSITION3 pos ); @@ -322,9 +313,6 @@ namespace Sapphire::Entity void forceZoneing( uint32_t zoneId ); - /*! return player to preset homepoint */ - void returnToHomepoint(); - /*! change position, sends update too */ void changePosition( float x, float y, float z, float o ); @@ -378,9 +366,6 @@ namespace Sapphire::Entity void setDyeingInfo( uint32_t itemToDyeContainer, uint32_t itemToDyeSlot, uint32_t dyeBagContainer, uint32_t dyeBagSlot ); void dyeItemFromDyeingInfo(); - /*! prepares zoning / fades out the screen */ - void prepareZoning( uint16_t targetZone, bool fadeOut, uint8_t fadeOutTime = 0, uint16_t animation = 0 ); - /*! get player's title list (available titles) */ TitleList& getTitleList(); @@ -411,7 +396,7 @@ namespace Sapphire::Entity /*! mount the specified setMount and send the packets */ void setMount( uint32_t mountId ); - void setCompanion( uint16_t id ); + void setCompanion( uint8_t id ); uint8_t getCurrentCompanion() const; @@ -465,7 +450,7 @@ namespace Sapphire::Entity void updateHowtosSeen( uint32_t howToId ); /*! learn an action / update the unlock bitmask. */ - void learnAction( Common::UnlockEntry unlockId ); + void setSystemActionUnlocked( Common::UnlockEntry unlockId ); /*! learn a song / update the unlock bitmask. */ void learnSong( uint8_t songId, uint32_t itemId ); @@ -479,6 +464,9 @@ namespace Sapphire::Entity /*! return a const pointer to the orchestrion bitmask array */ const OrchestrionList& getOrchestrionBitmask() const; + /*! unlock a mount */ + void unlockMount( uint32_t mountId ); + /*! return a const pointer to the setMount guide bitmask array */ MountList& getMountGuideBitmask(); @@ -598,7 +586,7 @@ namespace Sapphire::Entity /*! return true if the player is marked for zoning */ bool isMarkedForZoning() const; - void sendZoneInPackets( uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4, bool pSetStatus ); + void sendZoneInPackets( uint32_t param1, bool pSetStatus ); void finishZoning(); @@ -964,7 +952,7 @@ namespace Sapphire::Entity // content finder info uint32_t m_cfPenaltyUntil{}; // unix time - uint16_t m_companionId{}; + uint8_t m_companionId{}; uint32_t m_mount; uint32_t m_emoteMode; diff --git a/src/world/Actor/PlayerQuest.cpp b/src/world/Actor/PlayerQuest.cpp index b0be4541..c0409141 100644 --- a/src/world/Actor/PlayerQuest.cpp +++ b/src/world/Actor/PlayerQuest.cpp @@ -90,7 +90,7 @@ void Sapphire::Entity::Player::updateQuest( const World::Quest& quest ) m_quests[ index ] = quest; questMgr.onUpdateQuest( *this, index ); } - else + else if( quest.getSeq() != 0 ) addQuest( quest ); } diff --git a/src/world/CMakeLists.txt b/src/world/CMakeLists.txt index e653c08d..516fa8be 100644 --- a/src/world/CMakeLists.txt +++ b/src/world/CMakeLists.txt @@ -23,7 +23,8 @@ file( GLOB SERVER_SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} Territory/Housing/*.cpp Util/*.cpp Navi/*.cpp - Quest/*.cpp) + Task/*.cpp + Quest/*.cpp ) add_executable( world ${SERVER_SOURCE_FILES} ) diff --git a/src/world/ForwardsZone.h b/src/world/ForwardsZone.h index 311b3265..02e0be69 100644 --- a/src/world/ForwardsZone.h +++ b/src/world/ForwardsZone.h @@ -26,7 +26,6 @@ TYPE_FORWARD( InstanceContent ); TYPE_FORWARD( QuestBattle ); TYPE_FORWARD( Item ); TYPE_FORWARD( ItemContainer ); -TYPE_FORWARD( ZonePosition ); TYPE_FORWARD( Land ); TYPE_FORWARD( Linkshell ); @@ -34,6 +33,7 @@ namespace World { TYPE_FORWARD( Session ); TYPE_FORWARD( Quest ); +TYPE_FORWARD( Task ); } namespace World::Navi diff --git a/src/world/Manager/ChatChannelMgr.cpp b/src/world/Manager/ChatChannelMgr.cpp index 6a472849..4cbe7da2 100644 --- a/src/world/Manager/ChatChannelMgr.cpp +++ b/src/world/Manager/ChatChannelMgr.cpp @@ -49,7 +49,7 @@ const uint64_t World::Manager::ChatChannelMgr::createChatChannel( Common::ChatCh return cId.ChannelID; } -void World::Manager::ChatChannelMgr::addPlayerToChannel( uint64_t channelId, Entity::Player& player ) +void World::Manager::ChatChannelMgr::addToChannel( uint64_t channelId, Entity::Player& player ) { if( !isChannelValid( channelId ) ) { @@ -71,7 +71,7 @@ void World::Manager::ChatChannelMgr::addPlayerToChannel( uint64_t channelId, Ent m_channels[ channelId ].emplace_back( player.getAsPlayer() ); } -void World::Manager::ChatChannelMgr::removePlayerFromChannel( uint64_t channelId, Entity::Player& player ) +void World::Manager::ChatChannelMgr::removeFromChannel( uint64_t channelId, Entity::Player& player ) { if( !isChannelValid( channelId ) ) { diff --git a/src/world/Manager/ChatChannelMgr.h b/src/world/Manager/ChatChannelMgr.h index 55eec282..b7b853b9 100644 --- a/src/world/Manager/ChatChannelMgr.h +++ b/src/world/Manager/ChatChannelMgr.h @@ -30,8 +30,8 @@ namespace Sapphire::World::Manager const uint64_t createChatChannel( Common::ChatChannelType type ); - void addPlayerToChannel( uint64_t channelId, Entity::Player& player ); - void removePlayerFromChannel( uint64_t channelId, Entity::Player& player ); + void addToChannel( uint64_t channelId, Entity::Player& player ); + void removeFromChannel( uint64_t channelId, Entity::Player& player ); void sendMessageToChannel( uint64_t channelId, Entity::Player& sender, const std::string& message ); diff --git a/src/world/Manager/DebugCommandMgr.cpp b/src/world/Manager/DebugCommandMgr.cpp index 145075fb..a2e8a8d0 100644 --- a/src/world/Manager/DebugCommandMgr.cpp +++ b/src/world/Manager/DebugCommandMgr.cpp @@ -472,6 +472,47 @@ void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player& pSession->getZoneConnection()->queueOutPacket( actorControl ); + /*sscanf(params.c_str(), "%x %x %x %x %x %x %x", &opcode, ¶m1, ¶m2, ¶m3, ¶m4, ¶m5, ¶m6, &playerId); + + Network::Packets::Server::ServerNoticePacket noticePacket( player, "Injecting ACTOR_CONTROL " + std::to_string( opcode ) ); + + player.queuePacket( noticePacket ); + + Network::Packets::Server::ActorControlSelfPacket controlPacket( player, opcode, + param1, param2, param3, param4, param5, param6, playerId ); + player.queuePacket( controlPacket );*/ + + } + else if( subCommand == "actrls" ) + { + + // temporary research packet + + uint32_t opcode; + uint32_t param1; + uint32_t param2; + uint32_t param3; + uint32_t param4; + uint32_t param5; + uint32_t param6; + uint32_t playerId; + + sscanf( params.c_str(), "%x %x %x %x %x %x %x %x", &opcode, &playerId, ¶m1, + ¶m2, ¶m3, ¶m4, ¶m5, ¶m6 ); + + PlayerMgr::sendServerNotice( player, "Injecting ACTOR_CONTROL {0}", opcode ); + + auto actorControl = makeZonePacket< FFXIVIpcActorControlSelf >( playerId, playerId ); + actorControl->data().category = static_cast< uint16_t >( opcode ); + actorControl->data().param1 = param1; + actorControl->data().param2 = param2; + actorControl->data().param3 = param3; + actorControl->data().param4 = param4; + actorControl->data().param5 = param5; + actorControl->data().param6 = param6; + pSession->getZoneConnection()->queueOutPacket( actorControl ); + + /*sscanf(params.c_str(), "%x %x %x %x %x %x %x", &opcode, ¶m1, ¶m2, ¶m3, ¶m4, ¶m5, ¶m6, &playerId); Network::Packets::Server::ServerNoticePacket noticePacket( player, "Injecting ACTOR_CONTROL " + std::to_string( opcode ) ); @@ -488,7 +529,7 @@ void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player& uint32_t id; sscanf( params.c_str(), "%d", &id ); - player.learnAction( static_cast< Common::UnlockEntry >( id ) ); + player.setSystemActionUnlocked( static_cast< Common::UnlockEntry >( id ) ); } else if ( subCommand == "effect") { diff --git a/src/world/Manager/EventMgr.cpp b/src/world/Manager/EventMgr.cpp index 2afd9eb8..e3ec0ce3 100644 --- a/src/world/Manager/EventMgr.cpp +++ b/src/world/Manager/EventMgr.cpp @@ -73,7 +73,7 @@ std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId ) case Event::EventHandler::EventHandlerType::Aetheryte: { auto aetherInfo = exdData.getRow< Component::Excel::Aetheryte >( eventId & 0xFFFF ); - if( !aetherInfo->data().Telepo ) + if( aetherInfo->data().Telepo ) return "Aetheryte"; return "Aethernet"; } diff --git a/src/world/Manager/HousingMgr.cpp b/src/world/Manager/HousingMgr.cpp index e417de72..1ff92033 100644 --- a/src/world/Manager/HousingMgr.cpp +++ b/src/world/Manager/HousingMgr.cpp @@ -285,27 +285,24 @@ uint64_t Sapphire::World::Manager::HousingMgr::getNextHouseId() return pQR->getUInt64( 1 ) + 1; } -uint32_t Sapphire::World::Manager::HousingMgr::toLandSetId( uint16_t territoryTypeId, uint8_t wardId ) const +uint32_t Sapphire::World::Manager::HousingMgr::toLandSetId( int16_t territoryTypeId, int16_t wardId ) const { return ( static_cast< uint32_t >( territoryTypeId ) << 16 ) | wardId; } -Sapphire::Data::HousingZonePtr Sapphire::World::Manager::HousingMgr::getHousingZoneByLandSetId( uint32_t id ) -{ - auto& terriMgr = Common::Service< TerritoryMgr >::ref(); - return std::dynamic_pointer_cast< HousingZone >( terriMgr.getZoneByLandSetId( id ) ); -} Sapphire::LandPtr Sapphire::World::Manager::HousingMgr::getLandByOwnerId( uint64_t id ) { + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); auto res = db.query( "SELECT LandSetId, LandId FROM land WHERE OwnerId = " + std::to_string( id ) ); if( !res->next() ) return nullptr; - auto hZone = getHousingZoneByLandSetId( res->getUInt( 1 ) ); - + auto teriMgr = Common::Service< TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( res->getUInt( 1 ) ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); if( !hZone ) return nullptr; @@ -318,8 +315,11 @@ void Sapphire::World::Manager::HousingMgr::sendLandSignOwned( Entity::Player& pl player.setActiveLand( static_cast< uint8_t >( ident.landId ), static_cast< uint8_t >( ident.wardNum ) ); - auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto hZone = getHousingZoneByLandSetId( landSetId ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + + auto teriMgr = Common::Service< TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); if( !hZone ) return; @@ -356,8 +356,10 @@ void Sapphire::World::Manager::HousingMgr::sendLandSignFree( Entity::Player& pla auto& server = Common::Service< World::WorldServer >::ref(); player.setActiveLand( static_cast< uint8_t >( ident.landId ), static_cast< uint8_t >( ident.wardNum ) ); - auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto hZone = getHousingZoneByLandSetId( landSetId ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + auto teriMgr = Common::Service< TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); if( !hZone ) return; @@ -479,7 +481,10 @@ void Sapphire::World::Manager::HousingMgr::sendWardLandInfo( Entity::Player& pla auto pSession = server.getSession( player.getCharacterId() ); auto landSetId = toLandSetId( territoryTypeId, wardId ); - auto hZone = getHousingZoneByLandSetId( landSetId ); + + auto teriMgr = Common::Service< TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); if( !hZone ) return; @@ -492,7 +497,6 @@ void Sapphire::World::Manager::HousingMgr::sendWardLandInfo( Entity::Player& pla wardInfoPacket->data().LandSetId.worldId = 67; for( int i = 0; i < 30; i++ ) - for( int i = 0; i < 60; i++ ) { auto land = hZone->getLand( i ); assert( land ); @@ -541,8 +545,10 @@ void Sapphire::World::Manager::HousingMgr::sendWardLandInfo( Entity::Player& pla void Sapphire::World::Manager::HousingMgr::sendEstateGreeting( Entity::Player& player, const Common::LandIdent ident ) { auto& server = Common::Service< World::WorldServer >::ref(); - auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto hZone = getHousingZoneByLandSetId( landSetId ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + auto teriMgr = Common::Service< TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); if( !hZone ) return; @@ -690,8 +696,7 @@ void Sapphire::World::Manager::HousingMgr::buildPresetEstate( Entity::Player& pl // create house auto ident = pLand->getLandIdent(); - auto house = make_House( getNextHouseId(), pLand->getLandSetId(), ident, - "Estate #" + std::to_string( ident.landId + 1 ), "" ); + auto house = make_House( getNextHouseId(), pLand->getLandSetId(), ident, "Estate #" + std::to_string( ident.landId + 1 ), "" ); pLand->setHouse( house ); @@ -732,8 +737,10 @@ void Sapphire::World::Manager::HousingMgr::requestEstateRename( Entity::Player& auto& server = Common::Service< World::WorldServer >::ref(); auto pSession = server.getSession( player.getCharacterId() ); - auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto hZone = getHousingZoneByLandSetId( landSetId ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + auto teriMgr = Common::Service< TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); if( !hZone ) return; @@ -757,8 +764,10 @@ void Sapphire::World::Manager::HousingMgr::requestEstateEditGreeting( Entity::Pl auto& server = Common::Service< World::WorldServer >::ref(); auto pSession = server.getSession( player.getCharacterId() ); - auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto hZone = getHousingZoneByLandSetId( landSetId ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + auto teriMgr = Common::Service< TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); if( !hZone ) return; @@ -781,13 +790,15 @@ void Sapphire::World::Manager::HousingMgr::requestEstateEditGreeting( Entity::Pl void Sapphire::World::Manager::HousingMgr::updateEstateGreeting( Entity::Player& player, const Common::LandIdent ident, const std::string& greeting ) { - auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto zone = getHousingZoneByLandSetId( landSetId ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + auto teriMgr = Common::Service< TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); - if( !zone ) + if( !hZone ) return; - auto land = zone->getLand( static_cast< uint8_t >( ident.landId ) ); + auto land = hZone->getLand( static_cast< uint8_t >( ident.landId ) ); if( !land ) return; @@ -809,8 +820,10 @@ void Sapphire::World::Manager::HousingMgr::requestEstateEditGuestAccess( Entity: auto& server = Common::Service< World::WorldServer >::ref(); auto pSession = server.getSession( player.getCharacterId() ); - auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto hZone = getHousingZoneByLandSetId( landSetId ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + auto teriMgr = Common::Service< TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); if( !hZone ) return; @@ -831,7 +844,7 @@ void Sapphire::World::Manager::HousingMgr::requestEstateEditGuestAccess( Entity: Sapphire::Common::LandIdent Sapphire::World::Manager::HousingMgr::clientTriggerParamsToLandIdent( uint32_t param11, uint32_t param12, bool use16bits ) const { - Common::LandIdent ident; + Common::LandIdent ident{}; ident.worldId = static_cast< int16_t >( param11 >> 16 ); ident.territoryTypeId = static_cast< int16_t >( param11 & 0xFFFF ); @@ -865,13 +878,15 @@ void Sapphire::World::Manager::HousingMgr::sendEstateInventory( Entity::Player& auto ident = internalZone->getLandIdent(); - auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto exteriorZone = getHousingZoneByLandSetId( landSetId ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + auto teriMgr = Common::Service< TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); - if( !exteriorZone ) + if( !hZone ) return; - targetLand = exteriorZone->getLand( static_cast< uint8_t >( ident.landId ) ); + targetLand = hZone->getLand( static_cast< uint8_t >( ident.landId ) ); } else { @@ -1012,9 +1027,13 @@ void Sapphire::World::Manager::HousingMgr::reqPlaceHousingItem( Sapphire::Entity // todo: this whole process is retarded and needs to be fixed // perhaps maintain a list of estates by ident inside housingmgr? auto ident = zone->getLandIdent(); - auto landSet = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); - land = getHousingZoneByLandSetId( landSet )->getLand( static_cast< uint8_t >( ident.landId ) ); + auto teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); + + land = hZone->getLand( static_cast< uint8_t >( ident.landId ) ); } // wtf? else @@ -1084,9 +1103,13 @@ void Sapphire::World::Manager::HousingMgr::reqPlaceItemInStore( Sapphire::Entity // todo: this whole process is retarded and needs to be fixed // perhaps maintain a list of estates by ident inside housingmgr? auto ident = zone->getLandIdent(); - auto landSet = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); - land = getHousingZoneByLandSetId( landSet )->getLand( static_cast< uint8_t >( ident.landId ) ); + auto teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); + + land = hZone->getLand( static_cast< uint8_t >( ident.landId ) ); } if( !hasPermission( player, *land, 0 ) ) @@ -1269,8 +1292,12 @@ void Sapphire::World::Manager::HousingMgr::sendInternalEstateInventoryBatch( Sap void Sapphire::World::Manager::HousingMgr::reqMoveHousingItem( Entity::Player& player, Common::LandIdent ident, uint8_t slot, Common::FFXIVARR_POSITION3 pos, float rot ) { - auto landSet = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto land = getHousingZoneByLandSetId( landSet )->getLand( static_cast< uint8_t >( ident.landId ) ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + + auto teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); + auto land = hZone->getLand( static_cast< uint8_t >( ident.landId ) ); if( !land ) return; @@ -1278,7 +1305,6 @@ void Sapphire::World::Manager::HousingMgr::reqMoveHousingItem( Entity::Player& p if( !hasPermission( player, *land, 0 ) ) return; - auto teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); auto pZone = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); // todo: what happens when either of these fail? how does the server let the client know that the moment failed @@ -1308,7 +1334,7 @@ bool Sapphire::World::Manager::HousingMgr::moveInternalItem( Entity::Player& pla { containerId = m_internalPlacedItemContainers.at( containerIdx ); } - catch( const std::out_of_range& ex ) + catch( const std::out_of_range& ) { return false; } @@ -1391,8 +1417,13 @@ void Sapphire::World::Manager::HousingMgr::reqRemoveHousingItem( Sapphire::Entit if( auto terri = std::dynamic_pointer_cast< Territory::Housing::HousingInteriorTerritory >( pZone ) ) { auto ident = terri->getLandIdent(); - auto landSet = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto land = getHousingZoneByLandSetId( landSet )->getLand( static_cast< uint8_t >( ident.landId ) ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + + auto teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); + + auto land = hZone->getLand( static_cast< uint8_t >( ident.landId ) ); if( !land ) return; @@ -1635,8 +1666,12 @@ void Sapphire::World::Manager::HousingMgr::reqEstateInteriorRemodel( Sapphire::E return; auto ident = terri->getLandIdent(); - auto landSet = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); - auto land = getHousingZoneByLandSetId( landSet )->getLand( static_cast< uint8_t >( ident.landId ) ); + auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum ); + + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); + + auto land = hZone->getLand( static_cast< uint8_t >( ident.landId ) ); if( !land ) return; diff --git a/src/world/Manager/HousingMgr.h b/src/world/Manager/HousingMgr.h index 324c8cb5..ca147440 100644 --- a/src/world/Manager/HousingMgr.h +++ b/src/world/Manager/HousingMgr.h @@ -71,8 +71,7 @@ namespace Sapphire::World::Manager bool init(); - uint32_t toLandSetId( uint16_t territoryTypeId, uint8_t wardId ) const; - Sapphire::Data::HousingZonePtr getHousingZoneByLandSetId( uint32_t id ); + uint32_t toLandSetId( int16_t territoryTypeId, int16_t wardId ) const; Sapphire::LandPtr getLandByOwnerId( uint64_t id ); void sendLandSignOwned( Entity::Player& player, const Common::LandIdent ident ); diff --git a/src/world/Manager/LinkshellMgr.cpp b/src/world/Manager/LinkshellMgr.cpp index b5f8da54..34af1808 100644 --- a/src/world/Manager/LinkshellMgr.cpp +++ b/src/world/Manager/LinkshellMgr.cpp @@ -168,7 +168,7 @@ Sapphire::LinkshellPtr Sapphire::World::Manager::LinkshellMgr::createLinkshell( auto& chatChannelMgr = Common::Service< Manager::ChatChannelMgr >::ref(); auto chatChannelId = chatChannelMgr.createChatChannel( Common::ChatChannelType::LinkshellChat ); - chatChannelMgr.addPlayerToChannel( chatChannelId, player ); + chatChannelMgr.addToChannel( chatChannelId, player ); uint64_t masterId = player.getCharacterId(); @@ -305,7 +305,7 @@ void LinkshellMgr::kickPlayer( Entity::Player& sourcePlayer, Entity::Player& kic lsPtr->getName(), kickedPlayer.getName() ); server.queueForPlayer( sourcePlayer.getCharacterId(), linkshellKickResult1 ); - chatChannelMgr.removePlayerFromChannel( lsPtr->getChatChannel(), kickedPlayer ); + chatChannelMgr.removeFromChannel( lsPtr->getChatChannel(), kickedPlayer ); } void LinkshellMgr::sendLinkshellList( Entity::Player& player ) @@ -355,7 +355,7 @@ void LinkshellMgr::leaveLinkshell( uint64_t lsId, uint64_t characterId ) lsPtr->removeMember( characterId ); writeLinkshell( lsId ); - chatChannelMgr.removePlayerFromChannel( lsPtr->getChatChannel(), *leavingPlayer ); + chatChannelMgr.removeFromChannel( lsPtr->getChatChannel(), *leavingPlayer ); sendLinkshellList( *leavingPlayer ); } @@ -372,7 +372,7 @@ void LinkshellMgr::joinLinkshell( uint64_t lsId, uint64_t characterId ) lsPtr->removeInvite( characterId ); writeLinkshell( lsId ); - chatChannelMgr.addPlayerToChannel( lsPtr->getChatChannel(), *joiningPlayer ); + chatChannelMgr.addToChannel( lsPtr->getChatChannel(), *joiningPlayer ); sendLinkshellList( *joiningPlayer ); } diff --git a/src/world/Manager/PartyMgr.cpp b/src/world/Manager/PartyMgr.cpp index 24fef682..03ba36bf 100644 --- a/src/world/Manager/PartyMgr.cpp +++ b/src/world/Manager/PartyMgr.cpp @@ -59,8 +59,8 @@ void Sapphire::World::Manager::PartyMgr::onJoin( uint32_t joinerId, uint32_t inv invitingPlayer.setPartyId( partyId ); invitingPlayer.addOnlineStatus( Common::OnlineStatus::PartyLeader ); - ccMgr.addPlayerToChannel( party->ChatChannel, invitingPlayer ); - ccMgr.addPlayerToChannel( party->ChatChannel, inviteePlayer ); + ccMgr.addToChannel( party->ChatChannel, invitingPlayer ); + ccMgr.addToChannel( party->ChatChannel, inviteePlayer ); party->MemberId.push_back( invitingPlayer.getId() ); party->MemberId.push_back( inviteePlayer.getId() ); @@ -75,7 +75,7 @@ void Sapphire::World::Manager::PartyMgr::onJoin( uint32_t joinerId, uint32_t inv inviteePlayer.setPartyId( partyId ); inviteePlayer.addOnlineStatus( Common::OnlineStatus::PartyMember ); - ccMgr.addPlayerToChannel( party->ChatChannel, inviteePlayer ); + ccMgr.addToChannel( party->ChatChannel, inviteePlayer ); party->MemberId.push_back( inviteePlayer.getId() ); party->PartyCount++; @@ -440,6 +440,6 @@ void Sapphire::World::Manager::PartyMgr::removeMember( Sapphire::World::Manager: { auto& ccMgr = Common::Service< World::Manager::ChatChannelMgr >::ref(); pMember->setPartyId( 0 ); - ccMgr.removePlayerFromChannel( party.ChatChannel, *pMember ); + ccMgr.removeFromChannel( party.ChatChannel, *pMember ); party.MemberId.erase( std::remove( party.MemberId.begin(), party.MemberId.end(), pMember->getId() ), party.MemberId.end() ); } diff --git a/src/world/Manager/PlayerMgr.cpp b/src/world/Manager/PlayerMgr.cpp index e1c83661..3efa62b3 100644 --- a/src/world/Manager/PlayerMgr.cpp +++ b/src/world/Manager/PlayerMgr.cpp @@ -4,7 +4,6 @@ #include -#include #include #include @@ -30,6 +29,7 @@ #include "Network/PacketWrappers/HudParamPacket.h" #include +#include "Territory/InstanceObjectCache.h" using namespace Sapphire::World::Manager; using namespace Sapphire::Network::Packets; @@ -37,61 +37,6 @@ using namespace Sapphire::Network::Packets::WorldPackets::Server; using namespace Sapphire::Network::ActorControl; using namespace Sapphire::Common; -void PlayerMgr::movePlayerToLandDestination( Sapphire::Entity::Player& player, uint32_t landId, uint16_t param ) -{ - // check if we have one in the db first - auto& terriMgr = Common::Service< TerritoryMgr >::ref(); - - Sapphire::TerritoryPtr destinationZone; - - auto terriPos = terriMgr.getTerritoryPosition( landId ); - if( terriPos ) - { - // check if its a housing zone, zoning is different here - if( terriMgr.isHousingTerritory( terriPos->getTargetZoneId() ) ) - { - auto& housingMgr = Common::Service< HousingMgr >::ref(); - auto landSetId = housingMgr.toLandSetId( terriPos->getTargetZoneId(), param ); - - auto housingZone = housingMgr.getHousingZoneByLandSetId( landSetId ); - - if( !housingZone ) - return; - - destinationZone = housingZone; - } - else if( terriMgr.isInstanceContentTerritory( terriPos->getTargetZoneId() ) ) - { - // todo: instance dungeon handling - // will need to use setInstance so old pos gets set - return; - } - else - { - // normal zones - destinationZone = terriMgr.getZoneByTerritoryTypeId( terriPos->getTargetZoneId() ); - } - } - else - { - // todo: lookup land.exd and see if it's in there if its not in our db - return; - } - - if( !destinationZone ) - { - PlayerMgr::sendDebug( player, "Unable to find applicable territory for Warp#{0}. " - "Check that it exists inside zonepositions table.", - landId ); - return; - } - - player.setPos( terriPos->getTargetPosition() ); - player.setRot( terriPos->getTargetRotation() ); - - terriMgr.movePlayer( destinationZone, player ); -} - void PlayerMgr::onOnlineStatusChanged( Sapphire::Entity::Player& player, bool updateProfile ) { auto& server = Common::Service< World::WorldServer >::ref(); diff --git a/src/world/Manager/PlayerMgr.h b/src/world/Manager/PlayerMgr.h index ba43c7af..27d2e019 100644 --- a/src/world/Manager/PlayerMgr.h +++ b/src/world/Manager/PlayerMgr.h @@ -10,8 +10,6 @@ class PlayerMgr public: PlayerMgr() = default; - void movePlayerToLandDestination( Sapphire::Entity::Player& player, uint32_t landId, uint16_t param = 0 ); - void onOnlineStatusChanged( Sapphire::Entity::Player& player, bool updateProfile = true ); void onEquipDisplayFlagsChanged( Sapphire::Entity::Player& player ); diff --git a/src/world/Manager/TaskMgr.cpp b/src/world/Manager/TaskMgr.cpp new file mode 100644 index 00000000..70e91a3b --- /dev/null +++ b/src/world/Manager/TaskMgr.cpp @@ -0,0 +1,34 @@ +#include +#include + +#include "TaskMgr.h" +#include "Task/Task.h" + +using namespace Sapphire::World::Manager; +using namespace Sapphire::World; + +void TaskMgr::update( uint64_t tickCount ) +{ + + for( auto it = m_taskList.begin(); it != m_taskList.end(); ) + { + auto pTask = *it; + // is the task ready for execution? + if( ( tickCount - pTask->getQueueTimeMs() ) >= pTask->getDelayTimeMs() ) + { + pTask->execute(); + it = m_taskList.erase( it ); + } + else + ++it; + } + + m_lastTick = tickCount; + +} + +void TaskMgr::queueTask( const TaskPtr& pTask ) +{ + pTask->onQueue(); + m_taskList.push_back( pTask ); +} diff --git a/src/world/Manager/WarpMgr.h b/src/world/Manager/TaskMgr.h similarity index 68% rename from src/world/Manager/WarpMgr.h rename to src/world/Manager/TaskMgr.h index 043a2dcf..c4325489 100644 --- a/src/world/Manager/WarpMgr.h +++ b/src/world/Manager/TaskMgr.h @@ -3,9 +3,12 @@ #include #include #include +#include namespace Sapphire::World::Manager { + + struct QueuedWarp { Common::WarpType m_warpType; @@ -13,7 +16,8 @@ namespace Sapphire::World::Manager uint16_t m_targetZoneId; Common::FFXIVARR_POSITION3 m_targetPosition; float m_targetRotation; - uint64_t m_delayTime; + uint64_t m_delayTimeMs; + uint64_t m_timeQueuedMs; QueuedWarp( uint64_t characterId, Common::WarpType warpType, uint16_t targetZoneId, const Common::FFXIVARR_POSITION3& targetPosition, float targetRotation, uint64_t delayTime ) : @@ -22,25 +26,25 @@ namespace Sapphire::World::Manager m_targetZoneId( targetZoneId ), m_targetPosition( targetPosition ), m_targetRotation( targetRotation ), - m_delayTime( delayTime ), + m_delayTimeMs( delayTime ), + m_timeQueuedMs( Common::Util::getTimeMs() ) { } }; - class WarpMgr + class TaskMgr { public: - WarpMgr() = default; + TaskMgr() = default; // queue a new warp process to be executed when the delaytime (ms) expired - void queueWarp( uint64_t characterId, Common::WarpType warpType, uint16_t targetZoneId, - const Common::FFXIVARR_POSITION3& targetPosition, float targetRotation, uint64_t delayTime ); + void queueTask( const TaskPtr& pTask ); void update( uint64_t tickCount ); private: - uint64_t m_lastTick; - std::vector< std::shared_ptr< QueuedWarp > > m_warpQueue; + uint64_t m_lastTick{}; + std::vector< TaskPtr > m_taskList; }; diff --git a/src/world/Manager/TerritoryMgr.cpp b/src/world/Manager/TerritoryMgr.cpp index 6dfcf9c0..e01f719f 100644 --- a/src/world/Manager/TerritoryMgr.cpp +++ b/src/world/Manager/TerritoryMgr.cpp @@ -11,7 +11,6 @@ #include "Actor/Player.h" #include "Territory/Territory.h" -#include "Territory/ZonePosition.h" #include "Territory/InstanceContent.h" #include "Territory/QuestBattle.h" #include "TerritoryMgr.h" @@ -46,17 +45,6 @@ void Sapphire::World::Manager::TerritoryMgr::loadTerritoryTypeDetailCache() m_territoryTypeDetailCacheMap[ id ] = teri1; } - for( auto id : exdData.getIdList< Component::Excel::InstanceContent >() ) - { - // EXD TODO: how did this work back then... - /* - auto cfc = exdData.get< Sapphire::Data::ContentFinderCondition >( id ); - if( !cfc || cfc->contentLinkType != 5 ) - continue; - - m_questBattleToContentFinderMap[ cfc->content ] = id; - */ - } } bool Sapphire::World::Manager::TerritoryMgr::isValidTerritory( uint32_t territoryTypeId ) const @@ -69,7 +57,6 @@ bool Sapphire::World::Manager::TerritoryMgr::init() try { loadTerritoryTypeDetailCache(); - loadTerritoryPositionMap(); createDefaultTerritories(); createHousingTerritories(); @@ -196,30 +183,32 @@ bool Sapphire::World::Manager::TerritoryMgr::createDefaultTerritories() { auto territoryTypeId = territory.first; auto territoryInfo = territory.second; + auto& territoryData = territoryInfo->data(); // if the zone has no name set - if( territoryInfo->getString( territoryInfo->data().Name ).empty() ) + if( territoryInfo->getString( territoryData.Name ).empty() ) continue; - auto pPlaceName = exdData.getRow< Component::Excel::PlaceName >( territoryInfo->data().Area ); + auto pPlaceName = exdData.getRow< Component::Excel::PlaceName >( territoryData.Area ); if( !pPlaceName || pPlaceName->getString( pPlaceName->data().Text.SGL ).empty() || !isDefaultTerritory( territoryTypeId ) ) continue; uint32_t guid = getNextInstanceId(); - auto pZone = make_Territory( territoryTypeId, guid, territoryInfo->getString( territoryInfo->data().Name ), pPlaceName->getString( pPlaceName->data().Text.SGL ) ); + auto pZone = make_Territory( territoryTypeId, guid, territoryInfo->getString( territoryData.Name ), + pPlaceName->getString( pPlaceName->data().Text.SGL ) ); pZone->init(); - std::string bgPath = territoryInfo->getString( territoryInfo->data().LVB ); + std::string bgPath = territoryInfo->getString( territoryData.LVB ); bool hasNaviMesh = pZone->getNaviProvider() != nullptr; Logger::info( "{0}\t{1}\t{2}\t{3:<10}\t{4}\t{5}\t{6}", territoryTypeId, guid, - territoryInfo->data().IntendedUse, - territoryInfo->getString( territoryInfo->data().Name ), + territoryData.IntendedUse, + territoryInfo->getString( territoryData.Name ), ( isPrivateTerritory( territoryTypeId ) ? "PRIVATE" : "PUBLIC" ), hasNaviMesh ? "NAVI" : "", pPlaceName->getString( pPlaceName->data().Text.SGL ) ); @@ -256,24 +245,23 @@ bool Sapphire::World::Manager::TerritoryMgr::createHousingTerritories() for( wardNum = 0; wardNum < wardMaxNum; wardNum++ ) { - uint32_t guid = getNextInstanceId(); + + auto pHousingZone = make_HousingZone( wardNum, territoryTypeId, territoryInfo->getString( territoryInfo->data().Name ), + pPlaceName->getString( pPlaceName->data().Text.SGL ) ); + pHousingZone->init(); Logger::info( "{0}\t{1}\t{2}\t{3:<10}\tHOUSING\t\t{4}#{5}", territoryTypeId, - guid, + pHousingZone->getLandSetId(), territoryInfo->data().IntendedUse, territoryInfo->getString( territoryInfo->data().Name ), pPlaceName->getString( pPlaceName->data().Text.SGL ), wardNum ); - auto pHousingZone = make_HousingZone( wardNum, territoryTypeId, guid, territoryInfo->getString( territoryInfo->data().Name ), pPlaceName->getString( pPlaceName->data().Text.SGL ) ); - pHousingZone->init(); - InstanceIdToTerritoryPtrMap instanceMap; - instanceMap[ guid ] = pHousingZone; - m_guIdToTerritoryPtrMap[ guid ] = pHousingZone; - m_territoryTypeIdToInstanceGuidMap[ territoryTypeId ][ guid ] = pHousingZone; - m_landSetIdToTerritoryPtrMap[ pHousingZone->getLandSetId() ] = pHousingZone; + instanceMap[ pHousingZone->getLandSetId() ] = pHousingZone; + m_guIdToTerritoryPtrMap[ pHousingZone->getLandSetId() ] = pHousingZone; + m_territoryTypeIdToInstanceGuidMap[ territoryTypeId ][ pHousingZone->getLandSetId() ] = pHousingZone; m_territorySet.insert( { pHousingZone } ); } @@ -298,9 +286,10 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createTerritoryIn if( !pTeri || !pPlaceName ) return nullptr; - Logger::debug( "Starting instance for territory: {0} ({1})", territoryTypeId, pPlaceName->getString( pPlaceName->data().Text.SGL ) ); + auto placeName = pPlaceName->getString( pPlaceName->data().Text.SGL ); + Logger::debug( "Starting instance for territory: {0} ({1})", territoryTypeId, placeName ); - auto pZone = make_Territory( territoryTypeId, getNextInstanceId(), pTeri->getString( pTeri->data().Name ), pPlaceName->getString( pPlaceName->data().Text.SGL ) ); + auto pZone = make_Territory( territoryTypeId, getNextInstanceId(), pTeri->getString( pTeri->data().Name ), placeName ); pZone->init(); m_guIdToTerritoryPtrMap[ pZone->getGuId() ] = pZone; @@ -312,7 +301,6 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createTerritoryIn Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createQuestBattle( uint32_t questBattleId ) { - auto& exdData = Common::Service< Data::ExdData >::ref(); auto pQuestBattleInfo = exdData.getRow< Component::Excel::QuestBattle >( questBattleId ); @@ -323,36 +311,30 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createQuestBattle if( !pQuestInfo || pQuestInfo->getString( pQuestInfo->data().Text.Name ).empty() ) return nullptr; - uint16_t teriId = 0; - for( auto& id : exdData.getIdList< Component::Excel::TerritoryType >() ) + for( auto& teriId : exdData.getIdList< Component::Excel::TerritoryType >() ) { - auto pTeri = exdData.getRow< Component::Excel::TerritoryType >( id ); - if( !pTeri ) + auto pTeri = exdData.getRow< Component::Excel::TerritoryType >( teriId ); + if( !pTeri || pTeri->data().QuestBattle != questBattleId ) continue; - if( pTeri->data().QuestBattle == questBattleId ) - { - teriId = id; - if( !isInstanceContentTerritory( teriId ) ) - return nullptr; + if( !isInstanceContentTerritory( teriId ) ) + return nullptr; - Logger::debug( "Starting instance for QuestBattle id: {0} ({1})", - questBattleId, pQuestInfo->getString( pQuestInfo->data().Text.Name ) ); + auto questName = pQuestInfo->getString( pQuestInfo->data().Text.Name ); + Logger::debug( "Starting instance for QuestBattle id: {0} ({1})", questBattleId, questName ); - auto instanceId = getNextInstanceId(); - auto pZone = make_QuestBattle( pQuestBattleInfo, teriId, instanceId, - pTeri->getString( pTeri->data().Name ), - pQuestInfo->getString( pQuestInfo->data().Text.Name ), questBattleId ); - pZone->init(); + auto instanceId = getNextInstanceId(); + auto pZone = make_QuestBattle( pQuestBattleInfo, teriId, instanceId, + pTeri->getString( pTeri->data().Name ), questName, questBattleId ); + pZone->init(); - m_questBattleIdToInstanceMap[ questBattleId ][ pZone->getGuId() ] = pZone; - m_guIdToTerritoryPtrMap[ pZone->getGuId() ] = pZone; - m_instanceZoneSet.insert( pZone ); + m_questBattleIdToInstanceMap[ questBattleId ][ pZone->getGuId() ] = pZone; + m_guIdToTerritoryPtrMap[ pZone->getGuId() ] = pZone; + m_instanceZoneSet.insert( pZone ); + + return pZone; - return pZone; - break; - } } @@ -365,23 +347,21 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createInstanceCon auto& exdData = Common::Service< Data::ExdData >::ref(); auto pInstanceContent = exdData.getRow< Component::Excel::InstanceContent >( instanceContentId ); - if( !pInstanceContent ) + if( !pInstanceContent || !isInstanceContentTerritory( pInstanceContent->data().TerritoryType ) ) return nullptr; - if( !isInstanceContentTerritory( pInstanceContent->data().TerritoryType ) ) - return nullptr; + auto& instanceContentData = pInstanceContent->data(); - auto pTeri = getTerritoryDetail( pInstanceContent->data().TerritoryType ); + auto pTeri = getTerritoryDetail( instanceContentData.TerritoryType ); - std::string name = pInstanceContent->getString( pInstanceContent->data().Text.Name ); + auto name = pInstanceContent->getString( instanceContentData.Text.Name ); if( !pTeri || name.empty() ) return nullptr; Logger::debug( "Starting instance for InstanceContent id: {0} ({1})", instanceContentId, name ); - auto pZone = make_InstanceContent( pInstanceContent, pInstanceContent->data().TerritoryType, getNextInstanceId(), - " ", name, instanceContentId ); + auto pZone = make_InstanceContent( pInstanceContent, instanceContentData.TerritoryType, getNextInstanceId(), " ", name, instanceContentId ); pZone->init(); m_instanceContentIdToInstanceMap[ instanceContentId ][ pZone->getGuId() ] = pZone; @@ -406,13 +386,12 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::findOrCreateHousi auto& housingMgr = Common::Service< Manager::HousingMgr >::ref(); auto parentZone = std::dynamic_pointer_cast< HousingZone >( - getZoneByLandSetId( housingMgr.toLandSetId( static_cast< uint16_t >( landIdent.territoryTypeId ), - static_cast< uint8_t >( landIdent.wardNum ) ) ) ); + getTerritoryByGuId( housingMgr.toLandSetId( landIdent.territoryTypeId, landIdent.wardNum ) ) ); if( !parentZone ) return nullptr; - auto land = parentZone->getLand( landIdent.landId ); + auto land = parentZone->getLand( static_cast< uint8_t >( landIdent.landId ) ); if( !land ) return nullptr; @@ -451,7 +430,7 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::findOrCreateHousi if( !terriInfo ) return nullptr; - auto zone = World::Territory::Housing::make_HousingInteriorTerritory( landIdent, territoryTypeId, + auto zone = Territory::Housing::make_HousingInteriorTerritory( landIdent, territoryTypeId, getNextInstanceId(), terriInfo->getString( terriInfo->data().Name ), house->getHouseName() ); @@ -471,7 +450,6 @@ bool Sapphire::World::Manager::TerritoryMgr::removeTerritoryInstance( uint32_t g return false; m_guIdToTerritoryPtrMap.erase( pZone->getGuId() ); - m_instanceZoneSet.erase( pZone ); m_territorySet.erase( pZone ); @@ -495,36 +473,6 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::getTerritoryByGuI return it->second; } -void Sapphire::World::Manager::TerritoryMgr::loadTerritoryPositionMap() -{ - auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); - auto pQR = db.query( "SELECT id, target_zone_id, pos_x, pos_y, pos_z, pos_o, radius FROM zonepositions;" ); - - while( pQR->next() ) - { - uint32_t id = pQR->getUInt( 1 ); - uint32_t targetZoneId = pQR->getUInt( 2 ); - Common::FFXIVARR_POSITION3 pos{}; - pos.x = pQR->getFloat( 3 ); - pos.y = pQR->getFloat( 4 ); - pos.z = pQR->getFloat( 5 ); - float posO = pQR->getFloat( 6 ); - uint32_t radius = pQR->getUInt( 7 ); - - m_territoryPositionMap[ id ] = make_ZonePosition( id, targetZoneId, pos, radius, posO ); - } -} - -Sapphire::ZonePositionPtr Sapphire::World::Manager::TerritoryMgr::getTerritoryPosition( uint32_t territoryPositionId ) const -{ - auto it = m_territoryPositionMap.find( territoryPositionId ); - - if( it != m_territoryPositionMap.end() ) - return it->second; - - return nullptr; -} - Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::getZoneByTerritoryTypeId( uint32_t territoryTypeId ) const { auto zoneMap = m_territoryTypeIdToInstanceGuidMap.find( territoryTypeId ); @@ -535,27 +483,18 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::getZoneByTerritor return zoneMap->second.begin()->second; } -Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::getZoneByLandSetId( uint32_t landSetId ) const -{ - auto zoneMap = m_landSetIdToTerritoryPtrMap.find( landSetId ); - if( zoneMap == m_landSetIdToTerritoryPtrMap.end() ) - return nullptr; - - return zoneMap->second; -} void Sapphire::World::Manager::TerritoryMgr::updateTerritoryInstances( uint64_t tickCount ) { + for( auto& zone : m_territorySet ) { zone->update( tickCount ); } - for( auto& zone : m_instanceZoneSet ) { zone->update( tickCount ); } - // remove internal house zones with nobody in them for( auto it = m_landIdentToTerritoryPtrMap.begin(); it != m_landIdentToTerritoryPtrMap.end(); ) { @@ -659,17 +598,7 @@ bool Sapphire::World::Manager::TerritoryMgr::movePlayer( const TerritoryPtr& pZo player.initSpawnIdQueue(); player.setTerritoryTypeId( pZone->getTerritoryTypeId() ); - - if( isHousingTerritory( pZone->getTerritoryTypeId() ) ) - { - auto pHousing = std::dynamic_pointer_cast< HousingZone >( pZone ); - if( pHousing ) - player.setTerritoryId( pHousing->getLandSetId() ); - } - else - { - player.setTerritoryId( pZone->getGuId() ); - } + player.setTerritoryId( pZone->getGuId() ); bool playerLoaded = player.isLoadingComplete(); @@ -731,7 +660,7 @@ void Sapphire::World::Manager::TerritoryMgr::createAndJoinQuestBattle( Entity::P if( !qb ) return; - player.setInstance( qb ); + player.setInstance( qb, { 0, 0, 0 } ); } @@ -760,7 +689,7 @@ bool Sapphire::World::Manager::TerritoryMgr::joinWorld( Sapphire::Entity::Player else if( isInternalEstateTerritory( zoneId ) ) { // todo: this needs to go to the area just outside of the plot door - pCurrZone = getZoneByLandSetId( player.getPrevTerritoryId() ); + pCurrZone = getTerritoryByGuId( player.getPrevTerritoryId() ); zoneId = player.getPrevTerritoryTypeId(); auto prevPos = player.getPrevPos(); @@ -769,7 +698,7 @@ bool Sapphire::World::Manager::TerritoryMgr::joinWorld( Sapphire::Entity::Player } else if( isHousingTerritory( zoneId ) ) { - pCurrZone = getZoneByLandSetId( player.getTerritoryId() ); + pCurrZone = getTerritoryByGuId( player.getTerritoryId() ); } else { diff --git a/src/world/Manager/TerritoryMgr.h b/src/world/Manager/TerritoryMgr.h index f9e70546..031717a2 100644 --- a/src/world/Manager/TerritoryMgr.h +++ b/src/world/Manager/TerritoryMgr.h @@ -70,9 +70,6 @@ namespace Sapphire::World::Manager /*! caches TerritoryType details into m_territoryTypeMap */ void loadTerritoryTypeDetailCache(); - /*! List of positions for zonelines */ - void loadTerritoryPositionMap(); - bool joinWorld( Entity::Player& player ); /*! returns true if the given territoryTypeId is in fact a valid zone @@ -126,16 +123,10 @@ namespace Sapphire::World::Manager /*! loop for processing territory logic, iterating all existing instances */ void updateTerritoryInstances( uint64_t tickCount ); - /*! returns a ZonePositionPtr if found, else nullptr */ - ZonePositionPtr getTerritoryPosition( uint32_t territoryPositionId ) const; - /*! returns a default Zone by territoryTypeId TODO: Mind multiple instances?! */ TerritoryPtr getZoneByTerritoryTypeId( uint32_t territoryTypeId ) const; - /*! returns a Zone by landSetId */ - TerritoryPtr getZoneByLandSetId( uint32_t landSetId ) const; - bool movePlayer( const TerritoryPtr&, Entity::Player& player ); /*! returns an instancePtr if the player is still bound to an isntance */ @@ -164,13 +155,11 @@ namespace Sapphire::World::Manager private: using TerritoryTypeDetailCache = std::unordered_map< uint16_t, std::shared_ptr< Component::Excel::ExcelStruct< Component::Excel::TerritoryType > > >; using InstanceIdToTerritoryPtrMap = std::unordered_map< uint32_t, TerritoryPtr >; - using LandSetIdToTerritoryPtrMap = std::unordered_map< uint32_t, TerritoryPtr >; using TerritoryTypeIdToInstanceMap = std::unordered_map< uint16_t, InstanceIdToTerritoryPtrMap >; using InstanceContentIdToInstanceMap = std::unordered_map< uint16_t, InstanceIdToTerritoryPtrMap >; using QuestBattleIdToInstanceMap = std::unordered_map< uint16_t, InstanceIdToTerritoryPtrMap >; using QuestBattleIdToContentFinderCondMap = std::unordered_map< uint16_t, uint16_t >; using PlayerIdToInstanceIdMap = std::unordered_map< uint32_t, uint32_t >; - using PositionMap = std::unordered_map< int32_t, ZonePositionPtr >; using InstanceIdList = std::vector< uint32_t >; using LandIdentToTerritoryPtrMap = std::unordered_map< uint64_t, TerritoryPtr >; @@ -180,9 +169,6 @@ namespace Sapphire::World::Manager /*! map holding actual instances of default territories */ TerritoryTypeIdToInstanceMap m_territoryTypeIdToInstanceGuidMap; - /*! map holding actual instances of default territories */ - LandSetIdToTerritoryPtrMap m_landSetIdToTerritoryPtrMap; - /*! map holding actual instances of InstanceContent */ InstanceContentIdToInstanceMap m_instanceContentIdToInstanceMap; @@ -192,9 +178,6 @@ namespace Sapphire::World::Manager /*! flat map for easier lookup of instances by guid */ InstanceIdToTerritoryPtrMap m_guIdToTerritoryPtrMap; - /*! map holding positions for zonelines */ - PositionMap m_territoryPositionMap; - /*! map storing playerIds to instanceIds, used for instanceContent */ PlayerIdToInstanceIdMap m_playerIdToInstanceMap; diff --git a/src/world/Network/GameConnection.cpp b/src/world/Network/GameConnection.cpp index a9cfc049..eecf4ea2 100644 --- a/src/world/Network/GameConnection.cpp +++ b/src/world/Network/GameConnection.cpp @@ -481,7 +481,7 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network:: m_pSession = session; auto pe = std::make_shared< FFXIVRawPacket >( 0x07, 0x18, 0, 0 ); - *reinterpret_cast< unsigned int* >( &pe->data()[ 0 ] ) = 0xE0037603; + *reinterpret_cast< unsigned int* >( &pe->data()[ 0 ] ) = 0xE0001027; *reinterpret_cast< unsigned int* >( &pe->data()[ 4 ] ) = Common::Util::getTimeSeconds(); sendSinglePacket( pe ); @@ -490,6 +490,11 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network:: { auto pe1 = std::make_shared< FFXIVRawPacket >( 0x02, 0x38, 0, 0 ); *reinterpret_cast< unsigned int* >( &pe1->data()[ 0 ] ) = entityId; + *reinterpret_cast< unsigned int* >( &pe1->data()[ 0x20 ] ) = entityId; + *reinterpret_cast< unsigned int* >( &pe1->data()[ 0x24 ] ) = Common::Util::getTimeSeconds(); + *reinterpret_cast< unsigned int* >( &pe1->data()[ 0x0C ] ) = Common::Util::getTimeSeconds(); + *reinterpret_cast< unsigned int* >( &pe1->data()[ 0x1C ] ) = Common::Util::getTimeSeconds(); + *reinterpret_cast< unsigned int* >( &pe1->data()[ 0x18 ] ) = Common::Util::getTimeSeconds(); sendSinglePacket( pe1 ); Logger::info( "[{0}] Setting session for world connection", id ); session->setZoneConnection( pCon ); @@ -524,7 +529,7 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network:: auto pe4 = std::make_shared< FFXIVRawPacket >( 0x08, 0x18, 0, 0 ); *reinterpret_cast< unsigned int* >( &pe4->data()[ 0 ] ) = id; - *reinterpret_cast< unsigned int* >( &pe4->data()[ 4 ] ) = timeStamp; + *reinterpret_cast< unsigned int* >( &pe4->data()[ 4 ] ) = Util::getTimeSeconds(); sendSinglePacket( pe4 ); break; diff --git a/src/world/Network/Handlers/GMCommandHandlers.cpp b/src/world/Network/Handlers/GMCommandHandlers.cpp index 0da7c4f6..3bb4b9e5 100644 --- a/src/world/Network/Handlers/GMCommandHandlers.cpp +++ b/src/world/Network/Handlers/GMCommandHandlers.cpp @@ -86,6 +86,7 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR auto& server = Common::Service< World::WorldServer >::ref(); auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); + auto& exdData = Common::Service< Data::ExdData >::ref(); const auto packet = ZoneChannelPacket< FFXIVIpcGmCommand >( inPacket ); const auto commandId = packet.data().Id; @@ -193,9 +194,9 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR case GmCommand::Call: { if( targetPlayer->getTerritoryTypeId() != player.getTerritoryTypeId() ) - targetPlayer->setZone( player.getTerritoryTypeId() ); - - targetPlayer->changePosition( player.getPos().x, player.getPos().y, player.getPos().z, player.getRot() ); + targetPlayer->performZoning( player.getTerritoryTypeId(), { player.getPos().x, player.getPos().y, player.getPos().z }, player.getRot() ); + else + targetPlayer->changePosition( player.getPos().x, player.getPos().y, player.getPos().z, player.getRot() ); PlayerMgr::sendServerNotice( player, "Calling {0}", targetPlayer->getName() ); break; } @@ -485,7 +486,7 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR break; } - player.setInstance( instance ); + player.setInstance( instance, { 0, 0, 0 } ); } else if( !teriMgr.isValidTerritory( param1 ) ) { @@ -508,8 +509,6 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR bool doTeleport = false; uint16_t teleport; - - auto& exdData = Common::Service< Data::ExdData >::ref(); auto idList = exdData.getIdList< Component::Excel::Aetheryte >(); for( auto i : idList ) @@ -517,19 +516,15 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR auto data = exdData.getRow< Component::Excel::Aetheryte >( i ); if( !data ) - { continue; + + if( data->data().TerritoryType == param1 && data->data().Telepo ) + { + doTeleport = true; + teleport = static_cast< uint16_t >( i ); + break; } - if( data->data().TerritoryType == param1 ) - { - //if( data->data().Telepo ) - { - doTeleport = true; - teleport = static_cast< uint16_t >( i ); - break; - } - } } if( doTeleport ) { @@ -646,7 +641,7 @@ void Sapphire::Network::GameConnection::gmCommandNameHandler( const Packets::FFX targetPlayer->resetHp(); targetPlayer->resetMp(); targetPlayer->setStatus( Common::ActorStatus::Idle ); - targetPlayer->sendZoneInPackets( 0x01, 0x01, 0, 113, true ); + targetPlayer->sendZoneInPackets( 0x01, true ); targetPlayer->sendToInRangeSet( makeActorControlSelf( player.getId(), Appear, 0x01, 0x01, 0, 113 ), true ); @@ -658,24 +653,26 @@ void Sapphire::Network::GameConnection::gmCommandNameHandler( const Packets::FFX } case GmCommand::Jump: { - player.prepareZoning( targetPlayer->getTerritoryTypeId(), true, 1, 0 ); - if( pPlayerTerri->getAsInstanceContent() ) - { - player.exitInstance(); - } + if( targetPlayer->getTerritoryId() != player.getTerritoryId() ) { + if( pPlayerTerri->getAsInstanceContent() ) + player.exitInstance(); + // Checks if the target player is in an InstanceContent to avoid binding to a Territory or PublicContent auto pInstanceContent = pTargetActorTerri->getAsInstanceContent(); if( pInstanceContent ) { // Not sure if GMs actually get bound to an instance they jump to on retail. It's mostly here to avoid a crash for now pInstanceContent->bindPlayer( player.getId() ); + player.setInstance( pInstanceContent, { targetActor->getPos().x, targetActor->getPos().y, targetActor->getPos().z } ); } - player.setInstance( targetPlayer->getTerritoryId() ); } - player.changePosition( targetActor->getPos().x, targetActor->getPos().y, targetActor->getPos().z, targetActor->getRot() ); - player.sendZoneInPackets( 0x00, 0x00, 0, 0, false ); + else + { + player.changePosition( targetActor->getPos().x, targetActor->getPos().y, targetActor->getPos().z, targetActor->getRot() ); + player.sendZoneInPackets( 0x00, false ); + } PlayerMgr::sendServerNotice( player, "Jumping to {0}", targetPlayer->getName() ); break; } @@ -687,17 +684,20 @@ void Sapphire::Network::GameConnection::gmCommandNameHandler( const Packets::FFX PlayerMgr::sendUrgent( player, "You are unable to call a player while bound to a battle instance." ); return; } - targetPlayer->prepareZoning( player.getTerritoryTypeId(), true, 1, 0 ); - if( pTargetActorTerri->getAsInstanceContent() ) - { - targetPlayer->exitInstance(); - } + if( targetPlayer->getTerritoryId() != player.getTerritoryId() ) { - targetPlayer->setInstance( player.getTerritoryId() ); + if( pTargetActorTerri->getAsInstanceContent() ) + targetPlayer->exitInstance(); + + targetPlayer->setInstance( pTargetActorTerri->getAsInstanceContent(), { player.getPos().x, player.getPos().y, player.getPos().z } ); } - targetPlayer->changePosition( player.getPos().x, player.getPos().y, player.getPos().z, player.getRot() ); - targetPlayer->sendZoneInPackets( 0x00, 0x00, 0, 0, false ); + else + { + targetPlayer->changePosition( player.getPos().x, player.getPos().y, player.getPos().z, player.getRot() ); + targetPlayer->sendZoneInPackets( 0x00, false ); + } + PlayerMgr::sendServerNotice( player, "Calling {0}", targetPlayer->getName() ); break; } diff --git a/src/world/Network/Handlers/HousingPacketHandlers.cpp b/src/world/Network/Handlers/HousingPacketHandlers.cpp index e393ee08..392206fa 100644 --- a/src/world/Network/Handlers/HousingPacketHandlers.cpp +++ b/src/world/Network/Handlers/HousingPacketHandlers.cpp @@ -20,6 +20,7 @@ #include "Network/PacketWrappers/PlayerSetupPacket.h" #include "Manager/HousingMgr.h" +#include "Manager/TerritoryMgr.h" #include "Action/Action.h" @@ -41,14 +42,17 @@ void Sapphire::Network::GameConnection::landRenameHandler( const Packets::FFXIVA const auto packet = ZoneChannelPacket< Client::FFXIVIpcHousingHouseName >( inPacket ); auto& housingMgr = Common::Service< HousingMgr >::ref(); + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); - auto landSetId = housingMgr.toLandSetId( packet.data().landId.territoryTypeId, static_cast< uint8_t >( packet.data().landId.wardNum ) ); + auto landSetId = housingMgr.toLandSetId( packet.data().landId.territoryTypeId, static_cast< int8_t >( packet.data().landId.wardNum ) ); - auto pZone = housingMgr.getHousingZoneByLandSetId( landSetId ); - if( !pZone ) + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); + + if( !hZone ) return; - auto pLand = pZone->getLand( static_cast< uint8_t >( packet.data().landId.landId ) ); + auto pLand = hZone->getLand( static_cast< uint8_t >( packet.data().landId.landId ) ); if( !pLand ) return; diff --git a/src/world/Network/Handlers/PacketCommandHandler.cpp b/src/world/Network/Handlers/PacketCommandHandler.cpp index a7cf662b..f23bf976 100644 --- a/src/world/Network/Handlers/PacketCommandHandler.cpp +++ b/src/world/Network/Handlers/PacketCommandHandler.cpp @@ -237,10 +237,10 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ { case ResurrectType::RaiseSpell: // todo: handle raise case (set position to raiser, apply weakness status, set hp/mp/tp as well as packet) - player.returnToHomepoint(); + player.teleport( player.getHomepoint(), 3 ); break; case ResurrectType::Return: - player.returnToHomepoint(); + player.teleport( player.getHomepoint(), 3 ); break; default: break; diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index 5918d588..5e12fb22 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -22,7 +22,6 @@ #include "Territory/Territory.h" #include "Territory/HousingZone.h" #include "Territory/Land.h" -#include "Territory/ZonePosition.h" #include "Territory/House.h" #include "Territory/InstanceObjectCache.h" @@ -165,7 +164,7 @@ void Sapphire::Network::GameConnection::joinChatChannelHandler( const Packets::F if( !chatChannelMgr.isChannelValid( joinChannelPacket.data().ChannelID ) ) return Logger::warn( "Failed to join chat channel - Invalid chat channel specified!" ); - chatChannelMgr.addPlayerToChannel( joinChannelPacket.data().ChannelID, player ); + chatChannelMgr.addToChannel( joinChannelPacket.data().ChannelID, player ); auto chatChannelResultPacket = makeZonePacket< FFXIVIpcChatChannelResult >( player.getId() ); @@ -340,7 +339,8 @@ void Sapphire::Network::GameConnection::zoneJumpHandler( const Packets::FFXIVARR pPopRange->header.transform.rotation.z, rotation ); - server.queueForPlayer( player.getCharacterId(), makeActorControlSelf( player.getId(), WarpStart, 0x03, player.getId(), 0x01, targetZone ) ); + server.queueForPlayer( player.getCharacterId(), makeActorControlSelf( player.getId(), WarpStart, + Common::WarpType::WARP_TYPE_EXIT_RANGE, player.getId(), 0x01, targetZone ) ); auto moveTerritoryPacket = makeZonePacket< FFXIVIpcMoveTerritory >( player.getId() ); moveTerritoryPacket->data().index = -1; @@ -390,6 +390,7 @@ void Sapphire::Network::GameConnection::newDiscoveryHandler( const Packets::FFXI void Sapphire::Network::GameConnection::loginHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { + const auto packet = ZoneChannelPacket< Client::FFXIVIpcLoginHandler >( inPacket ); auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); // init handler means this is a login procedure player.setIsLogin( true ); diff --git a/src/world/Network/PacketWrappers/NpcSpawnPacket.h b/src/world/Network/PacketWrappers/NpcSpawnPacket.h index 87bcadd2..8affb2df 100644 --- a/src/world/Network/PacketWrappers/NpcSpawnPacket.h +++ b/src/world/Network/PacketWrappers/NpcSpawnPacket.h @@ -61,7 +61,7 @@ namespace Sapphire::Network::Packets::WorldPackets::Server m_data.MainTarget = bnpc.getTargetId(); // no idea ... m_data.spawnerId = Common::INVALID_GAME_OBJECT_ID64; m_data.ParentId = Common::INVALID_GAME_OBJECT_ID; - m_data.TriggerId = 0; + m_data.TriggerId = bnpc.getTriggerOwnerId(); m_data.ChannelingTarget = Common::INVALID_GAME_OBJECT_ID; m_data.OwnerId = Common::INVALID_GAME_OBJECT_ID; diff --git a/src/world/Script/NativeScriptApi.cpp b/src/world/Script/NativeScriptApi.cpp index 4fd16292..8cfeab68 100644 --- a/src/world/Script/NativeScriptApi.cpp +++ b/src/world/Script/NativeScriptApi.cpp @@ -158,11 +158,11 @@ namespace Sapphire::ScriptAPI { } - void QuestScript::onWithinRange( Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ) + void QuestScript::onWithinRange( World::Quest& quest, Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ) { } - void QuestScript::onOutsideRange( Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ) + void QuestScript::onOutsideRange( World::Quest& quest, Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ) { } diff --git a/src/world/Script/NativeScriptApi.h b/src/world/Script/NativeScriptApi.h index b229801a..9bf38233 100644 --- a/src/world/Script/NativeScriptApi.h +++ b/src/world/Script/NativeScriptApi.h @@ -223,9 +223,9 @@ namespace Sapphire::ScriptAPI virtual void onEnterTerritory( World::Quest& quest, Sapphire::Entity::Player& player, uint16_t param1, uint16_t param2 ); - virtual void onWithinRange( Sapphire::Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ); + virtual void onWithinRange( World::Quest& quest, Sapphire::Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ); - virtual void onOutsideRange( Sapphire::Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ); + virtual void onOutsideRange( World::Quest& quest, Sapphire::Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ); virtual void onEventHandlerTradeReturn( Sapphire::Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param, uint32_t catalogId ); diff --git a/src/world/Script/ScriptMgr.cpp b/src/world/Script/ScriptMgr.cpp index e133a6aa..189d6262 100644 --- a/src/world/Script/ScriptMgr.cpp +++ b/src/world/Script/ScriptMgr.cpp @@ -264,19 +264,63 @@ bool Sapphire::Scripting::ScriptMgr::onEnterTerritory( Entity::Player& player, u bool Sapphire::Scripting::ScriptMgr::onWithinRange( Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ) { - auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( eventId ); - if( !script ) - return false; - script->onWithinRange( player, eventId, param1, x, y, z ); + const auto eventType = static_cast< uint16_t >( eventId >> 16 ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + + if( eventType == Event::EventHandler::EventHandlerType::Quest ) + { + auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::QuestScript >( eventId ); + if( !script ) + return false; + if( player.hasQuest( eventId ) ) + { + auto idx = player.getQuestIndex( eventId ); + auto& quest = player.getQuestByIndex( idx ); + World::Quest preQ = quest; + script->onWithinRange( quest, player, eventId, param1, x, y, z ); + if( quest != preQ ) + player.updateQuest( quest ); + } + } + else + { + auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( eventId ); + if( !script ) + return false; + script->onWithinRange( player, eventId, param1, x, y, z ); + } + return true; } bool Sapphire::Scripting::ScriptMgr::onOutsideRange( Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z ) { - auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( eventId ); - if( !script ) - return false; - script->onOutsideRange( player, eventId, param1, x, y, z ); + const auto eventType = static_cast< uint16_t >( eventId >> 16 ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + + if( eventType == Event::EventHandler::EventHandlerType::Quest ) + { + auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::QuestScript >( eventId ); + if( !script ) + return false; + if( player.hasQuest( eventId ) ) + { + auto idx = player.getQuestIndex( eventId ); + auto& quest = player.getQuestByIndex( idx ); + World::Quest preQ = quest; + script->onOutsideRange( quest, player, eventId, param1, x, y, z ); + if( quest != preQ ) + player.updateQuest( quest ); + } + } + else + { + auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( eventId ); + if( !script ) + return false; + script->onOutsideRange( player, eventId, param1, x, y, z ); + } + return true; } @@ -295,7 +339,10 @@ bool Sapphire::Scripting::ScriptMgr::onEmote( Entity::Player& player, uint64_t a { auto idx = player.getQuestIndex( eventId ); auto& quest = player.getQuestByIndex( idx ); + World::Quest preQ = quest; script->onEmote( quest, actor, emoteId, player ); + if( quest != preQ ) + player.updateQuest( quest ); } } else diff --git a/src/world/Task/Task.cpp b/src/world/Task/Task.cpp new file mode 100644 index 00000000..8ed9504e --- /dev/null +++ b/src/world/Task/Task.cpp @@ -0,0 +1,20 @@ +#include +#include +#include "Task.h" + +Sapphire::World::Task::Task( uint64_t delayTime ) : + m_delayTimeMs( delayTime ), + m_timeQueuedMs( Common::Util::getTimeMs() ) +{ + +} + +uint64_t Sapphire::World::Task::getQueueTimeMs() const +{ + return m_timeQueuedMs; +} + +uint64_t Sapphire::World::Task::getDelayTimeMs() const +{ + return m_delayTimeMs; +} diff --git a/src/world/Task/Task.h b/src/world/Task/Task.h new file mode 100644 index 00000000..7b8dba35 --- /dev/null +++ b/src/world/Task/Task.h @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include + +namespace Sapphire::World +{ + + class Task + { + public: + Task( uint64_t delayTime ); + + uint64_t getQueueTimeMs() const; + uint64_t getDelayTimeMs() const; + + virtual void onQueue() = 0; + virtual void execute() = 0; + virtual std::string toString() = 0; + + protected: + uint64_t m_delayTimeMs; + uint64_t m_timeQueuedMs; + }; + +} diff --git a/src/world/Task/TestTask.cpp b/src/world/Task/TestTask.cpp new file mode 100644 index 00000000..8a6da8f3 --- /dev/null +++ b/src/world/Task/TestTask.cpp @@ -0,0 +1,26 @@ +#include "TestTask.h" + +#include + +using namespace Sapphire::World; + +TestTask::TestTask( uint64_t delayTime ) : Task( delayTime ) +{ +} + +void TestTask::onQueue() +{ + Logger::debug( "Queueing a TestTask!" ); +} + +void TestTask::execute() +{ + Logger::debug( "Executing a TestTask after {}ms", getDelayTimeMs() ); +} + +std::string TestTask::toString() +{ + return "TestTask"; +} + + diff --git a/src/world/Task/TestTask.h b/src/world/Task/TestTask.h new file mode 100644 index 00000000..9d91f6ae --- /dev/null +++ b/src/world/Task/TestTask.h @@ -0,0 +1,21 @@ +#pragma once + +#include +#include +#include +#include "Task.h" + +namespace Sapphire::World +{ + +class TestTask : public Task +{ +public: + TestTask( uint64_t delayTime ); + + void onQueue() override; + void execute() override; + std::string toString() override; +}; + +} diff --git a/src/world/Territory/Housing/HousingInteriorTerritory.cpp b/src/world/Territory/Housing/HousingInteriorTerritory.cpp index 012df150..33c258b3 100644 --- a/src/world/Territory/Housing/HousingInteriorTerritory.cpp +++ b/src/world/Territory/Housing/HousingInteriorTerritory.cpp @@ -14,6 +14,7 @@ #include "Actor/GameObject.h" #include "Actor/EventObject.h" #include "Manager/HousingMgr.h" +#include "Manager/TerritoryMgr.h" #include "WorldServer.h" #include "Territory/Land.h" #include "Territory/House.h" @@ -60,8 +61,13 @@ void Sapphire::World::Territory::Housing::HousingInteriorTerritory::onPlayerZone auto indoorInitPacket = makeZonePacket< FFXIVIpcInterior >( player.getId() ); - auto landSetId = housingMgr.toLandSetId( static_cast< uint16_t >( m_landIdent.territoryTypeId ), static_cast< uint8_t >( m_landIdent.wardNum ) ); - auto pLand = housingMgr.getHousingZoneByLandSetId( landSetId )->getLand( static_cast< uint8_t >( m_landIdent.landId ) ); + auto landSetId = housingMgr.toLandSetId( m_landIdent.territoryTypeId, m_landIdent.wardNum ); + + auto teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); + auto pTeri = teriMgr.getTerritoryByGuId( landSetId ); + auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri ); + auto pLand = hZone->getLand( static_cast< uint8_t >( m_landIdent.landId ) ); + auto pHouse = pLand->getHouse(); for( auto i = 0; i < 10; i++ ) diff --git a/src/world/Territory/HousingZone.cpp b/src/world/Territory/HousingZone.cpp index 557dc7f8..0def7225 100644 --- a/src/world/Territory/HousingZone.cpp +++ b/src/world/Territory/HousingZone.cpp @@ -28,11 +28,10 @@ using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::WorldPackets::Server; using namespace Sapphire::World::Manager; -Sapphire::HousingZone::HousingZone( uint8_t wardNum, uint16_t territoryTypeId, uint32_t guId, +Sapphire::HousingZone::HousingZone( uint8_t wardNum, uint16_t territoryTypeId, const std::string& internalName, const std::string& contentName ) : - Territory( territoryTypeId, guId, internalName, contentName ), + Territory( territoryTypeId, ( static_cast< uint32_t >( territoryTypeId ) << 16 ) | wardNum, internalName, contentName ), m_wardNum( wardNum ), - m_territoryTypeId( territoryTypeId ), m_landSetId( ( static_cast< uint32_t >( territoryTypeId ) << 16 ) | wardNum ) { @@ -129,9 +128,7 @@ bool Sapphire::HousingZone::init() // setup house if( entry.m_houseId ) { - auto house = make_House( entry.m_houseId, m_landSetId, land->getLandIdent(), entry.m_estateName, - entry.m_estateComment ); - + auto house = make_House( entry.m_houseId, m_landSetId, land->getLandIdent(), entry.m_estateName, entry.m_estateComment ); housingMgr.updateHouseModels( house ); land->setHouse( house ); } @@ -185,7 +182,7 @@ void Sapphire::HousingZone::sendLandSet( Entity::Player& player ) landsetInitializePacket->data().LandSetId.landId = m_landSetId; landsetInitializePacket->data().LandSetId.territoryTypeId = m_territoryTypeId; //TODO: get current WorldId - landsetInitializePacket->data().LandSetId.worldId = 67; + landsetInitializePacket->data().LandSetId.worldId = server.getWorldId(); for( uint8_t i = 0, count = 0; i < 30; ++i, ++count ) { diff --git a/src/world/Territory/HousingZone.h b/src/world/Territory/HousingZone.h index 81cd21e7..bb1f7be8 100644 --- a/src/world/Territory/HousingZone.h +++ b/src/world/Territory/HousingZone.h @@ -29,7 +29,6 @@ namespace Sapphire public: HousingZone( uint8_t landSetId, uint16_t territoryTypeId, - uint32_t guId, const std::string& internalName, const std::string& contentName ); @@ -81,7 +80,6 @@ namespace Sapphire LandPtrMap m_landPtrMap; uint8_t m_wardNum; uint32_t m_landSetId; - uint32_t m_territoryTypeId; YardObjectArray m_yardObjects{}; YardObjectArrayBoundsArray m_yardObjectArrayBounds; diff --git a/src/world/Territory/InstanceObjectCache.cpp b/src/world/Territory/InstanceObjectCache.cpp index 602f1489..4da170a9 100644 --- a/src/world/Territory/InstanceObjectCache.cpp +++ b/src/world/Territory/InstanceObjectCache.cpp @@ -92,6 +92,10 @@ Sapphire::InstanceObjectCache::InstanceObjectCache() auto pPopRange = std::reinterpret_pointer_cast< LGB_POP_RANGE_ENTRY >( pEntry ); m_popRangeCache.insert( id, pPopRange ); } + else if( pEntry->getType() == LgbEntryType::SharedGroup6 ) + { + + } } } } diff --git a/src/world/Territory/Territory.cpp b/src/world/Territory/Territory.cpp index 77b4e4f3..632d62fc 100644 --- a/src/world/Territory/Territory.cpp +++ b/src/world/Territory/Territory.cpp @@ -98,22 +98,21 @@ void Sapphire::Territory::loadWeatherRates() auto& exdData = Common::Service< Data::ExdData >::ref(); // EXD TODO: this must be different in 2.3 -/* uint8_t weatherRateId = m_territoryTypeInfo->data().weatherRate > exdData.getWeatherRateIdList().size() ? - uint8_t{ 0 } : m_territoryTypeInfo->weatherRate; + uint8_t weatherRateId = m_territoryTypeInfo->data().WeatherRate > exdData.getIdList< Component::Excel::WeatherRate >().size() ? + uint8_t{ 0 } : m_territoryTypeInfo->data().WeatherRate; uint8_t sumPc = 0; - auto weatherRateFields = exdData.m_WeatherRateDat.get_row( weatherRateId ); - for( size_t i = 0; i < 16; ) + auto weatherRate = exdData.getRow< Component::Excel::WeatherRate >( weatherRateId ); + for( size_t i = 0; i < 8; ++i ) { - int32_t weatherId = std::get< int32_t >( weatherRateFields[ i ] ); + int32_t weatherId = weatherRate->data().WeatherId[ i ]; if( weatherId == 0 ) break; - sumPc += std::get< uint8_t >( weatherRateFields[ i + 1 ] ); + sumPc += weatherRate->data().Rate[ i ]; m_weatherRateMap[ sumPc ] = weatherId; - i += 2; - }*/ + } } Sapphire::Territory::~Territory() = default; @@ -139,6 +138,8 @@ bool Sapphire::Territory::init() Logger::warn( "No navmesh found for TerritoryType#{}", getTerritoryTypeId() ); } + onUpdate( 0 ); + return true; } @@ -201,7 +202,7 @@ Weather Sapphire::Territory::getNextWeather() return Weather::FairSkies; } -void Sapphire::Territory::pushActor( Entity::GameObjectPtr pActor ) +void Sapphire::Territory::pushActor( const Entity::GameObjectPtr& pActor ) { float mx = pActor->getPos().x; float my = pActor->getPos().z; @@ -249,7 +250,7 @@ void Sapphire::Territory::pushActor( Entity::GameObjectPtr pActor ) pPlayer->setAgentId( agentId ); m_playerMap[ pPlayer->getId() ] = pPlayer; - updateCellActivity( cx, cy, 2 ); + updateCellActivity( cx, cy, 1 ); } else if( pActor->isBattleNpc() ) { @@ -260,7 +261,7 @@ void Sapphire::Territory::pushActor( Entity::GameObjectPtr pActor ) pBNpc->setAgentId( agentId ); m_bNpcMap[ pBNpc->getId() ] = pBNpc; - updateCellActivity( cx, cy, 2 ); + updateCellActivity( cx, cy, 1 ); } else if( pActor->isEventObj() ) @@ -271,7 +272,7 @@ void Sapphire::Territory::pushActor( Entity::GameObjectPtr pActor ) } } -void Sapphire::Territory::removeActor( Entity::GameObjectPtr pActor ) +void Sapphire::Territory::removeActor( const Entity::GameObjectPtr& pActor ) { auto cellId = pActor->getCellId(); CellPtr pCell = getCellPtr( cellId.x, cellId.y ); @@ -821,15 +822,12 @@ std::shared_ptr< Component::Excel::ExcelStruct< Component::Excel::TerritoryType void Sapphire::Territory::updateSpawnPoints() { - - auto& RNGMgr = Common::Service< World::Manager::RNGMgr >::ref(); - auto rng = RNGMgr.getRandGenerator< float >( 0.f, PI * 2 ); + auto& server = Common::Service< World::WorldServer >::ref(); for( auto& spawn : m_spawnInfo ) { if( !spawn.bnpcPtr && ( Util::getTimeSeconds() - spawn.timeOfDeath ) > spawn.infoPtr->PopInterval ) { - auto& server = Common::Service< World::WorldServer >::ref(); auto pBNpc = std::make_shared< Entity::BNpc >( getNextActorId(), spawn.infoPtr, shared_from_this() ); pBNpc->init(); spawn.bnpcPtr = pBNpc; @@ -840,7 +838,6 @@ void Sapphire::Territory::updateSpawnPoints() { spawn.timeOfDeath = Util::getTimeSeconds(); spawn.bnpcPtr.reset(); - } } } @@ -850,14 +847,14 @@ uint32_t Sapphire::Territory::getNextEffectSequence() return m_effectCounter++; } -Sapphire::Entity::BNpcPtr Sapphire::Territory::createBNpcFromInstanceId( uint32_t levelId, uint32_t hp, Common::BNpcType bnpcType ) +Sapphire::Entity::BNpcPtr Sapphire::Territory::createBNpcFromInstanceId( uint32_t levelId, uint32_t hp, Common::BNpcType bnpcType, uint32_t triggerOwnerId ) { auto infoPtr = m_bNpcBaseMap.find( levelId ); if( infoPtr == m_bNpcBaseMap.end() ) return nullptr; auto pBNpc = std::make_shared< Entity::BNpc >( getNextActorId(), infoPtr->second, shared_from_this(), hp, bnpcType ); - + pBNpc->setTriggerOwnerId( triggerOwnerId ); pushActor( pBNpc ); return pBNpc; } diff --git a/src/world/Territory/Territory.h b/src/world/Territory/Territory.h index 64b7e7f1..259a0f29 100644 --- a/src/world/Territory/Territory.h +++ b/src/world/Territory/Territory.h @@ -19,9 +19,6 @@ namespace Sapphire { - - class ZonePosition; - using FestivalPair = std::pair< uint16_t, uint16_t >; namespace Data @@ -124,9 +121,9 @@ namespace Sapphire Common::Weather getNextWeather(); - void pushActor( Entity::GameObjectPtr pActor ); + void pushActor( const Entity::GameObjectPtr& pActor ); - void removeActor( Entity::GameObjectPtr pActor ); + void removeActor( const Entity::GameObjectPtr &pActor ); void updateActorPosition( Entity::GameObject& pActor ); @@ -172,7 +169,7 @@ namespace Sapphire void registerEObj( Entity::EventObjectPtr object ); - Entity::BNpcPtr createBNpcFromInstanceId( uint32_t levelId, uint32_t hp, Common::BNpcType bnpcType ); + Entity::BNpcPtr createBNpcFromInstanceId( uint32_t levelId, uint32_t hp, Common::BNpcType bnpcType, uint32_t triggerOwnerId = 0 ); Entity::BNpcPtr getActiveBNpcByInstanceId( uint32_t instanceId ); diff --git a/src/world/Territory/ZonePosition.cpp b/src/world/Territory/ZonePosition.cpp deleted file mode 100644 index 2b017d78..00000000 --- a/src/world/Territory/ZonePosition.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "ZonePosition.h" - -Sapphire::ZonePosition::ZonePosition() - : - m_id( 0 ), m_targetZoneId( 0 ), m_radius( 0 ) -{ -} - -Sapphire::ZonePosition::ZonePosition( uint32_t id, uint32_t targetZoneId, const Common::FFXIVARR_POSITION3& targetPosition, - uint32_t radius, float rotation ) -{ - m_id = id; - m_targetZoneId = targetZoneId; - m_targetPos = targetPosition; - m_radius = radius; - m_rotation = rotation; -} - -Sapphire::ZonePosition::~ZonePosition() -{ -} - -uint32_t Sapphire::ZonePosition::getId() const -{ - return m_id; -} - -uint32_t Sapphire::ZonePosition::getTargetZoneId() const -{ - return m_targetZoneId; -} - -const Sapphire::Common::FFXIVARR_POSITION3& Sapphire::ZonePosition::getTargetPosition() const -{ - return m_targetPos; -} - -float Sapphire::ZonePosition::getTargetRotation() const -{ - return m_rotation; -} - - diff --git a/src/world/Territory/ZonePosition.h b/src/world/Territory/ZonePosition.h deleted file mode 100644 index cdbc887e..00000000 --- a/src/world/Territory/ZonePosition.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef _ZONELINE_H -#define _ZONELINE_H - -#include - -namespace Sapphire { - -class ZonePosition -{ -protected: - uint32_t m_id; - uint32_t m_targetZoneId; - Common::FFXIVARR_POSITION3 m_targetPos; - float m_rotation; - uint32_t m_radius; - -public: - ZonePosition(); - - ZonePosition( uint32_t id, uint32_t targetZoneId, const Common::FFXIVARR_POSITION3& targetPosition, uint32_t radius, - float rotation ); - - virtual ~ZonePosition(); - - uint32_t getId() const; - - uint32_t getTargetZoneId() const; - - const Common::FFXIVARR_POSITION3& getTargetPosition() const; - - float getTargetRotation() const; - -}; - -} -#endif diff --git a/src/world/WorldServer.cpp b/src/world/WorldServer.cpp index 62a0900d..7f4f2b9e 100644 --- a/src/world/WorldServer.cpp +++ b/src/world/WorldServer.cpp @@ -20,6 +20,9 @@ #include "Manager/TerritoryMgr.h" #include "Manager/LinkshellMgr.h" +#include "Manager/TaskMgr.h" + +#include "Task/TestTask.h" #include "Script/ScriptMgr.h" @@ -49,9 +52,10 @@ #include "Territory/InstanceObjectCache.h" +using namespace Sapphire::World; using namespace Sapphire::World::Manager; -Sapphire::World::WorldServer::WorldServer( const std::string& configName ) : +WorldServer::WorldServer( const std::string& configName ) : m_configName( configName ), m_bRunning( true ), m_lastDBPingTime( 0 ), @@ -59,16 +63,16 @@ Sapphire::World::WorldServer::WorldServer( const std::string& configName ) : { } -Sapphire::World::WorldServer::~WorldServer() +WorldServer::~WorldServer() { } -size_t Sapphire::World::WorldServer::getSessionCount() const +size_t WorldServer::getSessionCount() const { return m_sessionMapById.size(); } -bool Sapphire::World::WorldServer::loadSettings( int32_t argc, char* argv[] ) +bool WorldServer::loadSettings( int32_t argc, char* argv[] ) { auto& configMgr = Common::Service< Common::ConfigMgr >::ref(); @@ -119,10 +123,9 @@ bool Sapphire::World::WorldServer::loadSettings( int32_t argc, char* argv[] ) return true; } -void Sapphire::World::WorldServer::run( int32_t argc, char* argv[] ) +void WorldServer::run( int32_t argc, char* argv[] ) { using namespace Sapphire; - using namespace Sapphire::World; Logger::init( "log/world" ); @@ -148,17 +151,6 @@ void Sapphire::World::WorldServer::run( int32_t argc, char* argv[] ) } Common::Service< Data::ExdData >::set( pExdData ); - - auto idList = pExdData->getIdList< Component::Excel::Aetheryte >(); - - for( auto id : idList ) - { - auto aetherInfo = pExdData->getRow< Component::Excel::Aetheryte >( id ); - - Logger::info( "id: {0} bool: {1}, padd: {2}", id, aetherInfo->data().Telepo, aetherInfo->data().padding1 ); - } - - auto pDb = std::make_shared< Db::DbWorkerPool< Db::ZoneDbConnection > >(); Sapphire::Db::DbLoader loader; loader.addDb( *pDb, m_config.global.database ); @@ -199,6 +191,9 @@ void Sapphire::World::WorldServer::run( int32_t argc, char* argv[] ) auto pNaviMgr = std::make_shared< Manager::NaviMgr >(); Common::Service< Manager::NaviMgr >::set( pNaviMgr ); + auto pRNGMgr = std::make_shared< Manager::RNGMgr >(); + Common::Service< Manager::RNGMgr >::set( pRNGMgr ); + Logger::info( "TerritoryMgr: Setting up zones" ); auto pTeriMgr = std::make_shared< Manager::TerritoryMgr >(); auto pHousingMgr = std::make_shared< Manager::HousingMgr >(); @@ -246,12 +241,12 @@ void Sapphire::World::WorldServer::run( int32_t argc, char* argv[] ) auto pInventoryMgr = std::make_shared< Manager::InventoryMgr >(); auto pEventMgr = std::make_shared< Manager::EventMgr >(); auto pItemMgr = std::make_shared< Manager::ItemMgr >(); - auto pRNGMgr = std::make_shared< Manager::RNGMgr >(); auto pQuestMgr = std::make_shared< Manager::QuestMgr >(); auto pPartyMgr = std::make_shared< Manager::PartyMgr >(); auto pFriendMgr = std::make_shared< Manager::FriendListMgr >(); auto pBlacklistMgr = std::make_shared< Manager::BlacklistMgr >(); auto contentFinder = std::make_shared< ContentFinder >(); + auto taskMgr = std::make_shared< Manager::TaskMgr >(); Common::Service< DebugCommandMgr >::set( pDebugCom ); Common::Service< Manager::PlayerMgr >::set( pPlayerMgr ); @@ -259,15 +254,19 @@ void Sapphire::World::WorldServer::run( int32_t argc, char* argv[] ) Common::Service< Manager::InventoryMgr >::set( pInventoryMgr ); Common::Service< Manager::EventMgr >::set( pEventMgr ); Common::Service< Manager::ItemMgr >::set( pItemMgr ); - Common::Service< Manager::RNGMgr >::set( pRNGMgr ); Common::Service< Manager::QuestMgr >::set( pQuestMgr ); Common::Service< Manager::PartyMgr >::set( pPartyMgr ); Common::Service< Manager::FriendListMgr >::set( pFriendMgr ); Common::Service< Manager::BlacklistMgr >::set( pBlacklistMgr ); Common::Service< ContentFinder >::set( contentFinder ); + Common::Service< Manager::TaskMgr >::set( taskMgr ); Logger::info( "World server running on {0}:{1}", m_ip, m_port ); + taskMgr->queueTask( std::make_shared< Sapphire::World::TestTask >( 10000 ) ); + taskMgr->queueTask( std::make_shared< Sapphire::World::TestTask >( 5000 ) ); + taskMgr->queueTask( std::make_shared< Sapphire::World::TestTask >( 2000 ) ); + mainLoop(); for( auto& thread_entry : thread_list ) @@ -277,17 +276,17 @@ void Sapphire::World::WorldServer::run( int32_t argc, char* argv[] ) } -uint16_t Sapphire::World::WorldServer::getWorldId() const +uint16_t WorldServer::getWorldId() const { return m_worldId; } -void Sapphire::World::WorldServer::setWorldId( uint16_t worldId ) +void WorldServer::setWorldId( uint16_t worldId ) { m_worldId = worldId; } -void Sapphire::World::WorldServer::printBanner() const +void WorldServer::printBanner() const { Logger::info( "===========================================================" ); Logger::info( "Sapphire Server Project " ); @@ -297,13 +296,15 @@ void Sapphire::World::WorldServer::printBanner() const Logger::info( "===========================================================" ); } -void Sapphire::World::WorldServer::mainLoop() +void WorldServer::mainLoop() { auto& terriMgr = Common::Service< TerritoryMgr >::ref(); auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); auto& contentFinder = Common::Service< ContentFinder >::ref(); + auto& taskMgr = Common::Service< World::Manager::TaskMgr >::ref(); + while( isRunning() ) { std::this_thread::sleep_for( std::chrono::milliseconds( 50 ) ); @@ -311,19 +312,19 @@ void Sapphire::World::WorldServer::mainLoop() auto currTime = Common::Util::getTimeSeconds(); auto tickCount = Common::Util::getTimeMs(); + taskMgr.update( tickCount ); terriMgr.updateTerritoryInstances( tickCount ); - scriptMgr.update(); - contentFinder.update(); - updateSessions( currTime ); DbKeepAlive( currTime ); + + } } -void Sapphire::World::WorldServer::DbKeepAlive( uint32_t currTime ) +void WorldServer::DbKeepAlive( uint32_t currTime ) { auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); if( currTime - m_lastDBPingTime > 3 ) @@ -333,7 +334,7 @@ void Sapphire::World::WorldServer::DbKeepAlive( uint32_t currTime ) } } -void Sapphire::World::WorldServer::updateSessions( uint32_t currTime ) +void WorldServer::updateSessions( uint32_t currTime ) { std::queue< uint32_t > sessionRemovalQueue; std::lock_guard< std::mutex > lock( m_sessionMutex ); @@ -367,7 +368,7 @@ void Sapphire::World::WorldServer::updateSessions( uint32_t currTime ) } } -bool Sapphire::World::WorldServer::createSession( uint32_t sessionId ) +bool WorldServer::createSession( uint32_t sessionId ) { std::lock_guard< std::mutex > lock( m_sessionMutex ); @@ -397,7 +398,7 @@ bool Sapphire::World::WorldServer::createSession( uint32_t sessionId ) return true; } -void Sapphire::World::WorldServer::removeSession( uint32_t sessionId ) +void WorldServer::removeSession( uint32_t sessionId ) { auto pSession = getSession( sessionId ); if( !pSession ) @@ -408,7 +409,7 @@ void Sapphire::World::WorldServer::removeSession( uint32_t sessionId ) m_sessionMapByCharacterId.erase( pSession->getPlayer()->getCharacterId() ); } -Sapphire::World::SessionPtr Sapphire::World::WorldServer::getSession( uint32_t id ) +SessionPtr WorldServer::getSession( uint32_t id ) { //std::lock_guard lock( m_sessionMutex ); auto it = m_sessionMapById.find( id ); @@ -419,7 +420,7 @@ Sapphire::World::SessionPtr Sapphire::World::WorldServer::getSession( uint32_t i return nullptr; } -Sapphire::World::SessionPtr Sapphire::World::WorldServer::getSession( uint64_t id ) +SessionPtr WorldServer::getSession( uint64_t id ) { //std::lock_guard lock( m_sessionMutex ); auto it = m_sessionMapByCharacterId.find( id ); @@ -430,7 +431,7 @@ Sapphire::World::SessionPtr Sapphire::World::WorldServer::getSession( uint64_t i return nullptr; } -Sapphire::World::SessionPtr Sapphire::World::WorldServer::getSession( const std::string& playerName ) +SessionPtr WorldServer::getSession( const std::string& playerName ) { //std::lock_guard lock( m_sessionMutex ); @@ -442,7 +443,7 @@ Sapphire::World::SessionPtr Sapphire::World::WorldServer::getSession( const std: return nullptr; } -void Sapphire::World::WorldServer::removeSession( const Entity::Player& player ) +void WorldServer::removeSession( const Entity::Player& player ) { auto session = getSession( player.getCharacterId() ); if( session ) @@ -452,16 +453,16 @@ void Sapphire::World::WorldServer::removeSession( const Entity::Player& player ) m_sessionMapByCharacterId.erase( player.getCharacterId() ); } -bool Sapphire::World::WorldServer::isRunning() const +bool WorldServer::isRunning() const { return m_bRunning; } -std::vector< Sapphire::World::SessionPtr > Sapphire::World::WorldServer::searchSessionByName( const std::string& playerName ) +std::vector< SessionPtr > WorldServer::searchSessionByName( const std::string& playerName ) { //std::lock_guard lock( m_sessionMutex ); - std::vector< Sapphire::World::SessionPtr > results{}; + std::vector< SessionPtr > results{}; for( auto it = m_sessionMapByName.begin(); it != m_sessionMapByName.end(); ++it ) { if( it->first.find( playerName ) != std::string::npos ) { @@ -472,7 +473,7 @@ std::vector< Sapphire::World::SessionPtr > Sapphire::World::WorldServer::searchS return results; } -Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::getPlayer( uint32_t entityId ) +Sapphire::Entity::PlayerPtr WorldServer::getPlayer( uint32_t entityId ) { //std::lock_guard lock( m_sessionMutex ); auto it = m_playerMapById.find( entityId ); @@ -484,7 +485,7 @@ Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::getPlayer( uint32_t en return loadPlayer( entityId ); } -Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::getPlayer( uint64_t characterId ) +Sapphire::Entity::PlayerPtr WorldServer::getPlayer( uint64_t characterId ) { //std::lock_guard lock( m_sessionMutex ); auto it = m_playerMapByCharacterId.find( characterId ); @@ -496,7 +497,7 @@ Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::getPlayer( uint64_t ch return loadPlayer( characterId ); } -Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::getPlayer( const std::string& playerName ) +Sapphire::Entity::PlayerPtr WorldServer::getPlayer( const std::string& playerName ) { //std::lock_guard lock( m_sessionMutex ); auto it = m_playerMapByName.find( playerName ); @@ -509,7 +510,7 @@ Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::getPlayer( const std:: } -std::string Sapphire::World::WorldServer::getPlayerNameFromDb( uint64_t characterId, bool forceDbLoad ) +std::string WorldServer::getPlayerNameFromDb( uint64_t characterId, bool forceDbLoad ) { if( !forceDbLoad ) { @@ -530,7 +531,7 @@ std::string Sapphire::World::WorldServer::getPlayerNameFromDb( uint64_t characte return playerName; } -Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::addPlayer( uint64_t characterId ) +Sapphire::Entity::PlayerPtr WorldServer::addPlayer( uint64_t characterId ) { auto pPlayer = Entity::make_Player(); @@ -544,7 +545,7 @@ Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::addPlayer( uint64_t ch return pPlayer; } -Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::loadPlayer( uint32_t entityId ) +Sapphire::Entity::PlayerPtr WorldServer::loadPlayer( uint32_t entityId ) { auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); auto res = db.query( "SELECT CharacterId FROM charainfo WHERE EntityId = " + std::to_string( entityId ) ); @@ -556,12 +557,12 @@ Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::loadPlayer( uint32_t e return addPlayer( characterId ); } -Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::loadPlayer( uint64_t characterId ) +Sapphire::Entity::PlayerPtr WorldServer::loadPlayer( uint64_t characterId ) { return addPlayer( characterId ); } -Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::loadPlayer( const std::string& playerName ) +Sapphire::Entity::PlayerPtr WorldServer::loadPlayer( const std::string& playerName ) { auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); auto res = db.query( "SELECT CharacterId FROM charainfo WHERE Name = " + playerName ); @@ -573,7 +574,7 @@ Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::loadPlayer( const std: return addPlayer( characterId ); } -bool Sapphire::World::WorldServer::loadPlayers() +bool WorldServer::loadPlayers() { auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); auto res = db.query( "SELECT CharacterId FROM charainfo" ); @@ -589,7 +590,7 @@ bool Sapphire::World::WorldServer::loadPlayers() return true; } -Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::syncPlayer( uint64_t characterId ) +Sapphire::Entity::PlayerPtr WorldServer::syncPlayer( uint64_t characterId ) { auto pPlayer = getPlayer( characterId ); if( !pPlayer ) @@ -626,17 +627,17 @@ Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::syncPlayer( uint64_t c return pPlayer; } -std::map< int32_t, Sapphire::World::WorldServer::BNPCMap >& Sapphire::World::WorldServer::getBNpcTeriMap() +std::map< int32_t, WorldServer::BNPCMap >& Sapphire::World::WorldServer::getBNpcTeriMap() { return m_bNpcTerritoryMap; } -Sapphire::Common::Config::WorldConfig& Sapphire::World::WorldServer::getConfig() +Sapphire::Common::Config::WorldConfig& WorldServer::getConfig() { return m_config; } -void Sapphire::World::WorldServer::queueForPlayer( uint64_t characterId, Sapphire::Network::Packets::FFXIVPacketBasePtr pPacket ) +void WorldServer::queueForPlayer( uint64_t characterId, Sapphire::Network::Packets::FFXIVPacketBasePtr pPacket ) { auto pSession = getSession( characterId ); if( !pSession ) @@ -648,7 +649,7 @@ void Sapphire::World::WorldServer::queueForPlayer( uint64_t characterId, Sapphir } -void Sapphire::World::WorldServer::queueForPlayer( uint64_t characterId, std::vector< Sapphire::Network::Packets::FFXIVPacketBasePtr > packets ) +void WorldServer::queueForPlayer( uint64_t characterId, std::vector< Sapphire::Network::Packets::FFXIVPacketBasePtr > packets ) { auto pSession = getSession( characterId ); if( !pSession )