From e548e148e51113fb375ad1ab3a8e4e58a0bfd609 Mon Sep 17 00:00:00 2001 From: Mordred Date: Sun, 25 Feb 2018 01:23:40 +0100 Subject: [PATCH] Simplified syntax for eobj registering, added test script for thousand maws --- .../sapphire_zone/Event/EventHelper.cpp | 3 +- .../Network/Handlers/ActionHandler.cpp | 3 +- .../dungeon/TheThousandMawsOfTotoRak.cpp | 33 +++++++++++++++++++ .../Scripts/instances/trials/TheNavel.cpp | 9 ++--- src/servers/sapphire_zone/Zone/Zone.cpp | 7 ++++ src/servers/sapphire_zone/Zone/Zone.h | 3 ++ 6 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 src/servers/sapphire_zone/Script/Scripts/instances/dungeon/TheThousandMawsOfTotoRak.cpp diff --git a/src/servers/sapphire_zone/Event/EventHelper.cpp b/src/servers/sapphire_zone/Event/EventHelper.cpp index 54dd0750..1993a881 100644 --- a/src/servers/sapphire_zone/Event/EventHelper.cpp +++ b/src/servers/sapphire_zone/Event/EventHelper.cpp @@ -59,7 +59,8 @@ std::string Core::Event::getEventName( uint32_t eventId ) auto contentInfo = g_exdDataGen.get< Core::Data::InstanceContent >( eventId & 0xFFFF ); std::string name = contentInfo->name; - name.erase( boost::remove_if( name, boost::is_any_of( "_ '()[]" ) ), name.end() ); + name.erase( boost::remove_if( name, boost::is_any_of( "★_ '()[]-\x1a\x1\x2\x1f\x1\x3.:" ) ), name.end() ); + name[0] = toupper( name[0] ); return name; } diff --git a/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp index 0b4fee82..00cc62d0 100644 --- a/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp @@ -251,9 +251,8 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in player.getCurrentZone()->onInitDirector( player ); break; } - case ClientTrigger::EnterTerritoryEventFinished: + case ClientTrigger::EnterTerritoryEventFinished:// this may still be something else. I think i have seen it elsewhere { - g_log.debug( "[DOOOOOOOOOOOOOOOOOOOOOOONE]" ); player.setOnEnterEventDone( true ); break; } diff --git a/src/servers/sapphire_zone/Script/Scripts/instances/dungeon/TheThousandMawsOfTotoRak.cpp b/src/servers/sapphire_zone/Script/Scripts/instances/dungeon/TheThousandMawsOfTotoRak.cpp new file mode 100644 index 00000000..037db112 --- /dev/null +++ b/src/servers/sapphire_zone/Script/Scripts/instances/dungeon/TheThousandMawsOfTotoRak.cpp @@ -0,0 +1,33 @@ +#include +#include + +class TheThousandMawsOfTotoRak : public InstanceContentScript +{ +public: + TheThousandMawsOfTotoRak() : InstanceContentScript( 1 ) + { } + + void onInit( InstanceContentPtr instance ) override + { + instance->registerEObj( "Exit", EXIT_OBJECT, 0, EXIT_OBJECT_STATE, { 237, -39, -144 } ); + instance->registerEObj( "Entrance", START_CIRCLE, START_CIRCLE_MAPLINK, START_CIRCLE_STATE, { -322, 12, -78 } ); + } + + void onUpdate( InstanceContentPtr instance, uint32_t currTime ) override + { + + } + + void onEnterTerritory( Entity::Player &player, uint32_t eventId, uint16_t param1, uint16_t param2 ) override + { + + } + +private: + static constexpr auto EXIT_OBJECT = 2000683; + static constexpr auto EXIT_OBJECT_STATE = 4; + + static constexpr auto START_CIRCLE = 2000182; + static constexpr auto START_CIRCLE_MAPLINK = 4127435; + static constexpr auto START_CIRCLE_STATE = 5; +}; \ No newline at end of file diff --git a/src/servers/sapphire_zone/Script/Scripts/instances/trials/TheNavel.cpp b/src/servers/sapphire_zone/Script/Scripts/instances/trials/TheNavel.cpp index b5a5a83a..1e12dd48 100644 --- a/src/servers/sapphire_zone/Script/Scripts/instances/trials/TheNavel.cpp +++ b/src/servers/sapphire_zone/Script/Scripts/instances/trials/TheNavel.cpp @@ -9,13 +9,8 @@ public: void onInit( InstanceContentPtr instance ) override { - Common::FFXIVARR_POSITION3 pos = { 0, 0, -10 }; - auto exit = Entity::make_EventObject( EXIT_OBJECT, 0, EXIT_OBJECT_STATE, pos, "Exit" ); - instance->registerEObj( exit ); - - Common::FFXIVARR_POSITION3 pos1 = { 0, 0, 24 }; - auto start = Entity::make_EventObject( START_CIRCLE, START_CIRCLE_MAPLINK, START_CIRCLE_STATE, pos1, "Entrance" ); - instance->registerEObj( start ); + instance->registerEObj( "Exit", EXIT_OBJECT, 0, EXIT_OBJECT_STATE, { 0, 0, -10 } ); + instance->registerEObj( "Entrance", START_CIRCLE, START_CIRCLE_MAPLINK, START_CIRCLE_STATE, { 0, 0, 24 } ); } void onUpdate( InstanceContentPtr instance, uint32_t currTime ) override diff --git a/src/servers/sapphire_zone/Zone/Zone.cpp b/src/servers/sapphire_zone/Zone/Zone.cpp index ff016078..b679ce83 100644 --- a/src/servers/sapphire_zone/Zone/Zone.cpp +++ b/src/servers/sapphire_zone/Zone/Zone.cpp @@ -716,3 +716,10 @@ uint32_t Core::Zone::getNextEObjId() { return ++m_nextEObjId; } + +void Core::Zone::registerEObj( const std::string &name, uint32_t objectId, uint32_t mapLink, uint8_t state, + FFXIVARR_POSITION3 pos ) +{ + auto eObj = Entity::make_EventObject( objectId, mapLink, state, pos, name ); + registerEObj( eObj ); +} diff --git a/src/servers/sapphire_zone/Zone/Zone.h b/src/servers/sapphire_zone/Zone/Zone.h index c90290f6..048421c7 100644 --- a/src/servers/sapphire_zone/Zone/Zone.h +++ b/src/servers/sapphire_zone/Zone/Zone.h @@ -108,6 +108,9 @@ public: void updateSessions( bool changedWeather ); + void registerEObj( const std::string& name, uint32_t objectId, uint32_t mapLink, + uint8_t state, Common::FFXIVARR_POSITION3 pos ); + void registerEObj( Entity::EventObjectPtr object ); Entity::EventObjectPtr getEObj( uint32_t objId ); void updateEObj( Entity::EventObjectPtr object );