#include "../ScriptObject.h" #define ACTION_ATTUNE 0x13 #define ACTION_TELEPORT 0x4 #define AetheryteBaseId 0x50000 #define AETHERYTE_MENU_AETHERNET 1 #define AETHERYTE_MENU_HOUSING 2 #define AETHERYTE_MENU_HOME_POINT 3 #define AETHERYTE_MENU_FAVORITE_POINT 4 #define AETHERYTE_MENU_FAVORITE_POINT_SECURITY_TOKEN 5 class Aetheryte : public QuestScript { public: Aetheryte() : QuestScript( "Aetheryte", 0x50000 ) {} virtual void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) { if( player.isAetheryteRegistered( eventId & 0xFFFF ) ) { player.eventPlay( eventId, 0, 1, []( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2, uint16_t param3 ) { if( param1 == 256 ) // set homepoint { player.setHomepoint( eventId & 0xFFFF ); player.sendQuestMessage( eventId, 2, 0xEA, 0, 0 ); } else if( param1 == 512 ) // aethernet access { if( param2 == 2 ) // register favored destination { } else if( param2 == 0xC3E1 ) // register free destination { } else if( param2 == 4 ) { player.teleport( param3, 2 ); } } } ); } else { player.eventActionStart( eventId, ACTION_ATTUNE, []( Entity::Player& player, uint32_t eventId, uint64_t additional ) { player.registerAetheryte( eventId & 0xFFFF ); if( player.isActionLearned( ACTION_TELEPORT ) ) { player.sendQuestMessage( eventId, 0, 2, 0, 0 ); } else { player.sendQuestMessage( eventId, 0, 1, 1, 0 ); player.learnAction( ACTION_TELEPORT ); } }, [] ( Entity::Player& ply, uint32_t evntId, uint64_t additional ) {}, 0 ); } } }; EXPORT_SCRIPTOBJECT( Aetheryte )