mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-26 22:37:45 +00:00
Merge branch 'ThreePointOh' of https://github.com/SapphireServer/Sapphire into threepointoh
This commit is contained in:
commit
00ecce8406
111 changed files with 3777 additions and 2247 deletions
48
deps/datReader/Exd/Structs.h
vendored
48
deps/datReader/Exd/Structs.h
vendored
|
@ -658,6 +658,12 @@ namespace Component::Excel
|
||||||
int8_t padding0[2];
|
int8_t padding0[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct WeatherRate
|
||||||
|
{
|
||||||
|
int32_t WeatherId[8];
|
||||||
|
uint8_t Rate[8];
|
||||||
|
};
|
||||||
|
|
||||||
/* 195172 */
|
/* 195172 */
|
||||||
struct Aetheryte
|
struct Aetheryte
|
||||||
{
|
{
|
||||||
|
@ -695,8 +701,8 @@ namespace Component::Excel
|
||||||
uint8_t BattalionMode;
|
uint8_t BattalionMode;
|
||||||
uint8_t ExclusiveType;
|
uint8_t ExclusiveType;
|
||||||
uint8_t IntendedUse;
|
uint8_t IntendedUse;
|
||||||
|
uint8_t WeatherRate;
|
||||||
uint8_t Breath;
|
uint8_t Breath;
|
||||||
uint8_t Unknown;
|
|
||||||
uint8_t Resident;
|
uint8_t Resident;
|
||||||
uint8_t Unknown1;
|
uint8_t Unknown1;
|
||||||
uint8_t Unknown2;
|
uint8_t Unknown2;
|
||||||
|
@ -1119,7 +1125,6 @@ namespace Component::Excel
|
||||||
int8_t CNT;
|
int8_t CNT;
|
||||||
int8_t GEN;
|
int8_t GEN;
|
||||||
int8_t DEF;
|
int8_t DEF;
|
||||||
int8_t padding0[2];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 201018 */
|
/* 201018 */
|
||||||
|
@ -1141,14 +1146,6 @@ namespace Component::Excel
|
||||||
float RotateSpeed_WOW;
|
float RotateSpeed_WOW;
|
||||||
float RotateSpeed_AutoRun;
|
float RotateSpeed_AutoRun;
|
||||||
float RotateSpeed_LockOn;
|
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 Model;
|
||||||
int32_t EquipHead;
|
int32_t EquipHead;
|
||||||
int32_t EquipBody;
|
int32_t EquipBody;
|
||||||
|
@ -1157,19 +1154,12 @@ namespace Component::Excel
|
||||||
uint16_t BGM;
|
uint16_t BGM;
|
||||||
uint16_t Icon;
|
uint16_t Icon;
|
||||||
uint16_t Action[2];
|
uint16_t Action[2];
|
||||||
uint8_t ExitMoveDist;
|
uint16_t unknown[2];
|
||||||
uint8_t ExitMoveSpeed;
|
uint8_t unknown2[6];
|
||||||
uint8_t UIPriority;
|
|
||||||
uint8_t RadiusRate;
|
uint8_t RadiusRate;
|
||||||
uint8_t BaseMotionSpeed_Run;
|
uint8_t unknown3[3];
|
||||||
uint8_t BaseMotionSpeed_Walk;
|
int8_t MountOrder;
|
||||||
uint8_t LinkNum;
|
uint8_t unknown4 : 4;
|
||||||
int8_t SaveIndex;
|
|
||||||
uint8_t padding1 : 5;
|
|
||||||
uint8_t ExHotbarEnableConfig : 1;
|
|
||||||
uint8_t IsFloat : 1;
|
|
||||||
uint8_t IsEmote : 1;
|
|
||||||
int8_t padding2[3];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 201019 */
|
/* 201019 */
|
||||||
|
@ -1818,14 +1808,14 @@ namespace Component::Excel
|
||||||
uint8_t Event;
|
uint8_t Event;
|
||||||
uint8_t ConditionType;
|
uint8_t ConditionType;
|
||||||
uint8_t ConditionOperator;
|
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 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 */
|
/* 264322 */
|
||||||
|
|
2
deps/datReaderPs3/Exd/Structs.h
vendored
2
deps/datReaderPs3/Exd/Structs.h
vendored
|
@ -653,8 +653,8 @@ namespace Component::Excel::Ps3
|
||||||
struct Aetheryte
|
struct Aetheryte
|
||||||
{
|
{
|
||||||
AetheryteTextStruct Text;
|
AetheryteTextStruct Text;
|
||||||
|
uint32_t EventHandler;
|
||||||
uint32_t PopRange[4];
|
uint32_t PopRange[4];
|
||||||
int32_t EventHandler;
|
|
||||||
uint16_t TelepoName;
|
uint16_t TelepoName;
|
||||||
uint16_t TransferName;
|
uint16_t TransferName;
|
||||||
uint16_t TerritoryType;
|
uint16_t TerritoryType;
|
||||||
|
|
|
@ -517,17 +517,6 @@ CREATE TABLE `uniqueiddata` (
|
||||||
PRIMARY KEY(`NextId`)
|
PRIMARY KEY(`NextId`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) 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` (
|
CREATE TABLE `landplaceditems` (
|
||||||
`ItemId` INT(20) UNSIGNED NOT NULL,
|
`ItemId` INT(20) UNSIGNED NOT NULL,
|
||||||
`PosX` FLOAT NOT NULL,
|
`PosX` FLOAT NOT NULL,
|
||||||
|
|
|
@ -506,7 +506,13 @@ namespace Sapphire::Common
|
||||||
Return = 1,
|
Return = 1,
|
||||||
Teleport = 4,
|
Teleport = 4,
|
||||||
GearSets = 6,
|
GearSets = 6,
|
||||||
|
MateriaMelding = 11,
|
||||||
|
AdvancedMateriaMelding = 12,
|
||||||
|
MateriaAssimilating = 13,
|
||||||
|
Dye = 14,
|
||||||
|
Glamour = 15,
|
||||||
HuntingLog = 21,
|
HuntingLog = 21,
|
||||||
|
Desynth = 95
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ContainerType : uint16_t
|
enum ContainerType : uint16_t
|
||||||
|
@ -893,6 +899,7 @@ namespace Sapphire::Common
|
||||||
KeyItemAction = 1,
|
KeyItemAction = 1,
|
||||||
ItemActionVFX = 852,
|
ItemActionVFX = 852,
|
||||||
ItemActionVFX2 = 944,
|
ItemActionVFX2 = 944,
|
||||||
|
ItemActionMount = 1322,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ActionEffectDisplayType : uint8_t
|
enum ActionEffectDisplayType : uint8_t
|
||||||
|
|
|
@ -475,30 +475,32 @@ enum class OnlineStatus : uint8_t
|
||||||
Offline = 10,
|
Offline = 10,
|
||||||
Busy = 11,
|
Busy = 11,
|
||||||
PvP = 12,
|
PvP = 12,
|
||||||
ViewingCutscene = 13,
|
PlayingTripleTriad = 13,
|
||||||
UsingaChocoboPorter = 14,
|
ViewingCutscene = 14,
|
||||||
AwayfromKeyboard = 15,
|
UsingaChocoboPorter = 15,
|
||||||
LookingforRepairs = 16,
|
AwayfromKeyboard = 16,
|
||||||
LookingtoRepair = 17,
|
LookingforRepairs = 17,
|
||||||
LookingtoMeldMateria = 18,
|
LookingtoRepair = 18,
|
||||||
LookingforParty = 19,
|
LookingtoMeldMateria = 19,
|
||||||
//Missing = 20
|
LookingforParty = 20,
|
||||||
WaitingforDutyFinder = 21,
|
//Missing = 21
|
||||||
RecruitingPartyMembers = 22,
|
WaitingforDutyFinder = 22,
|
||||||
AllianceLeader = 23,
|
RecruitingPartyMembers = 23,
|
||||||
AlliancePartyLeader = 24,
|
NewAdventurer = 24,
|
||||||
AlliancePartyMember = 25,
|
AllianceLeader = 25,
|
||||||
PartyLeader = 26,
|
AlliancePartyLeader = 26,
|
||||||
PartyMember = 27,
|
AlliancePartyMember = 27,
|
||||||
AnotherWorld = 28,
|
PartyLeader = 28,
|
||||||
SharingDuty = 29,
|
PartyMember = 29,
|
||||||
SimilarDuty = 30,
|
AnotherWorld = 30,
|
||||||
InDuty = 31,
|
SharingDuty = 31,
|
||||||
TrialAdventurer = 32,
|
SimilarDuty = 32,
|
||||||
NewAdventurer = 33,
|
InDuty = 33,
|
||||||
FreeCompany = 34,
|
TrialAdventurer = 34,
|
||||||
GrandCompany = 35,
|
|
||||||
Online = 36,
|
FreeCompany = 35,
|
||||||
|
GrandCompany = 36,
|
||||||
|
Online = 37,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
@ -512,8 +514,6 @@ enum class Race : uint8_t
|
||||||
Miqote = 4,
|
Miqote = 4,
|
||||||
Roegadyn = 5,
|
Roegadyn = 5,
|
||||||
AuRa = 6,
|
AuRa = 6,
|
||||||
Hrothgar = 7,
|
|
||||||
Viera = 8,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
@ -548,8 +548,6 @@ enum class Town : uint8_t
|
||||||
Gridania = 2,
|
Gridania = 2,
|
||||||
Uldah = 3,
|
Uldah = 3,
|
||||||
Ishgard = 4,
|
Ishgard = 4,
|
||||||
Kugane = 7,
|
|
||||||
TheCrystarium = 10,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
@ -612,81 +610,6 @@ enum class Weather : uint8_t
|
||||||
RoyalLevin = 53,
|
RoyalLevin = 53,
|
||||||
Hyperelectricity = 54,
|
Hyperelectricity = 54,
|
||||||
RoyalLevin1 = 55,
|
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,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -64,7 +64,7 @@ namespace Sapphire::Network::ActorControl
|
||||||
SpawnEffect = 0x25,
|
SpawnEffect = 0x25,
|
||||||
ToggleInvisible = 0x26,
|
ToggleInvisible = 0x26,
|
||||||
|
|
||||||
ToggleActionUnlock = 0x29,
|
SetSystemActionUnlocked = 0x29,
|
||||||
|
|
||||||
UpdateUiExp = 0x2B,
|
UpdateUiExp = 0x2B,
|
||||||
SetFallDamage = 0x2D,
|
SetFallDamage = 0x2D,
|
||||||
|
@ -278,6 +278,12 @@ namespace Sapphire::Network::ActorControl
|
||||||
*/
|
*/
|
||||||
SetMountSpeed = 0x39F,
|
SetMountSpeed = 0x39F,
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* param1 = mount ID
|
||||||
|
* param2 = unlock/lock (1/0)
|
||||||
|
*/
|
||||||
|
SetMountBitmask = 0x387,
|
||||||
|
|
||||||
Dismount = 0x3A1, // updated 4.5
|
Dismount = 0x3A1, // updated 4.5
|
||||||
|
|
||||||
// Duty Recorder
|
// Duty Recorder
|
||||||
|
|
|
@ -45,6 +45,8 @@ namespace Sapphire::Network::Packets
|
||||||
RegionInfo = 0x0069,
|
RegionInfo = 0x0069,
|
||||||
|
|
||||||
MoveTerritory = 0x006A,
|
MoveTerritory = 0x006A,
|
||||||
|
MoveInstance = 0x006B,
|
||||||
|
|
||||||
SetPSNId = 0x0073,
|
SetPSNId = 0x0073,
|
||||||
SetBillingTime = 0x0075,
|
SetBillingTime = 0x0075,
|
||||||
|
|
||||||
|
@ -387,7 +389,6 @@ namespace Sapphire::Network::Packets
|
||||||
NpcSpawn = 0x00B3, // updated 5.21 hotfix
|
NpcSpawn = 0x00B3, // updated 5.21 hotfix
|
||||||
InventoryActionAck = 0x01B2, // updated 5.21 hotfix
|
InventoryActionAck = 0x01B2, // updated 5.21 hotfix
|
||||||
UpdateInventorySlot = 0x0213, // updated 5.21 hotfix
|
UpdateInventorySlot = 0x0213, // updated 5.21 hotfix
|
||||||
PrepareZoning = 0x00B6, // updated 5.21 hotfix
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -334,6 +334,18 @@ struct FFXIVIpcPingHandler : FFXIVIpcBasePacket< Sync >
|
||||||
ZoneProtoUpClientPos position;
|
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 >
|
struct FFXIVIpcFindContent : FFXIVIpcBasePacket< FindContent >
|
||||||
{
|
{
|
||||||
uint16_t territoryType;
|
uint16_t territoryType;
|
||||||
|
|
|
@ -1664,6 +1664,17 @@ namespace Sapphire::Network::Packets::WorldPackets::Server
|
||||||
char worldName[32];
|
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];
|
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
|
* Structural representation of the packet sent by the server
|
||||||
|
|
|
@ -139,7 +139,7 @@ float Util::trunc( float value, uint8_t digitsToRemain )
|
||||||
if( digitsToRemain == 0 )
|
if( digitsToRemain == 0 )
|
||||||
return std::floor( value );
|
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;
|
return std::floor( value * factor ) / factor;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ public:
|
||||||
if( !action.getSourceChara()->isPlayer() )
|
if( !action.getSourceChara()->isPlayer() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
action.getSourceChara()->getAsPlayer()->returnToHomepoint();
|
action.getSourceChara()->getAsPlayer()->teleport( action.getSourceChara()->getAsPlayer()->getHomepoint(), 3 );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,7 @@ public:
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
eventMgr().sendEventNotice( player, eventId, 0, 1, 1, 0 );
|
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 )
|
[]( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
||||||
|
|
|
@ -22,7 +22,7 @@ public:
|
||||||
|
|
||||||
void inner( Entity::Player& player, const Event::SceneResult& result )
|
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, 1310721, 0 );
|
||||||
eventMgr().eventFinish( player, getId(), 1 );
|
eventMgr().eventFinish( player, getId(), 1 );
|
||||||
|
@ -59,24 +59,24 @@ public:
|
||||||
{
|
{
|
||||||
eventMgr().playScene( player, 1310721, 0, HIDE_HOTBAR, { 1, 341 },
|
eventMgr().playScene( player, 1310721, 0, HIDE_HOTBAR, { 1, 341 },
|
||||||
std::bind( &WarpTaxi::inner, this, std::placeholders::_1, std::placeholders::_2 ) );
|
std::bind( &WarpTaxi::inner, this, std::placeholders::_1, std::placeholders::_2 ) );
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void inner2( Entity::Player& player, uint64_t actorId )
|
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 )
|
[this, actorId]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
eventMgr().eventStart( player, actorId, 1310721, Event::EventHandler::Nest, 1, 0 );
|
eventMgr().eventStart( player, actorId, 1310721, Event::EventHandler::Nest, 1, 0 );
|
||||||
|
|
||||||
eventMgr().playScene( player, 1310721, 0, HIDE_HOTBAR, { 1, 341 },
|
eventMgr().playScene( player, 1310721, 0, HIDE_HOTBAR, { 1, 341 },
|
||||||
std::bind( &WarpTaxi::inner, this, std::placeholders::_1, std::placeholders::_2 ) );
|
std::bind( &WarpTaxi::inner, this, std::placeholders::_1, std::placeholders::_2 ) );
|
||||||
} );
|
} );*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
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 );
|
auto warp = exdData.getRow< Component::Excel::Warp >( eventId );
|
||||||
if( !warp )
|
if( !warp )
|
||||||
|
@ -85,7 +85,7 @@ public:
|
||||||
// EXD TODO: Not sure Warpcondition is correct here
|
// EXD TODO: Not sure Warpcondition is correct here
|
||||||
eventMgr().eventStart( player, actorId, warp->data().WarpCondition, Event::EventHandler::Nest, 0, 0,
|
eventMgr().eventStart( player, actorId, warp->data().WarpCondition, Event::EventHandler::Nest, 0, 0,
|
||||||
std::bind( &WarpTaxi::inner2, this, std::placeholders::_1, std::placeholders::_2 ) );
|
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 );*/
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,41 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,36 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,36 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,40 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,40 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,44 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,44 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,38 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,38 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,37 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,37 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,53 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,53 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,42 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,42 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,53 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,53 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,51 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,51 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,46 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,46 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,51 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,51 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,106 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,109 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -1,133 +0,0 @@
|
||||||
#include <ScriptObject.h>
|
|
||||||
#include <Territory/InstanceContent.h>
|
|
||||||
|
|
||||||
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 );
|
|
|
@ -201,7 +201,7 @@ public:
|
||||||
{
|
{
|
||||||
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
||||||
player.registerAetheryte( 2 );
|
player.registerAetheryte( 2 );
|
||||||
player.learnAction( Common::UnlockEntry::Return );
|
player.setSystemActionUnlocked( Common::UnlockEntry::Return );
|
||||||
|
|
||||||
Scene00051( quest, player );
|
Scene00051( quest, player );
|
||||||
};
|
};
|
||||||
|
|
|
@ -79,7 +79,7 @@ public:
|
||||||
{
|
{
|
||||||
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
||||||
player.registerAetheryte( 2 );
|
player.registerAetheryte( 2 );
|
||||||
player.learnAction( Common::UnlockEntry::Return );
|
player.setSystemActionUnlocked( Common::UnlockEntry::Return );
|
||||||
Scene00051( quest, player );
|
Scene00051( quest, player );
|
||||||
},
|
},
|
||||||
nullptr, quest.getId() );
|
nullptr, quest.getId() );
|
||||||
|
|
|
@ -82,7 +82,7 @@ public:
|
||||||
{
|
{
|
||||||
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
||||||
player.registerAetheryte( 2 );
|
player.registerAetheryte( 2 );
|
||||||
player.learnAction( Common::UnlockEntry::Return );
|
player.setSystemActionUnlocked( Common::UnlockEntry::Return );
|
||||||
Scene00051( quest, player );
|
Scene00051( quest, player );
|
||||||
},
|
},
|
||||||
nullptr, quest.getId() );
|
nullptr, quest.getId() );
|
||||||
|
|
|
@ -91,7 +91,7 @@ private:
|
||||||
if( !pQuest )
|
if( !pQuest )
|
||||||
return;
|
return;
|
||||||
pQuest->setSeq( SEQ_FINISH );
|
pQuest->setSeq( SEQ_FINISH );
|
||||||
player.prepareZoning( player.getTerritoryTypeId(), true, 1, 0 );
|
//player.prepareZoning( player.getTerritoryTypeId(), true, 1, 0 );
|
||||||
player.changePosition( 9, 40, 14, 2 );
|
player.changePosition( 9, 40, 14, 2 );
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
|
@ -58,7 +58,7 @@ public:
|
||||||
{
|
{
|
||||||
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
||||||
player.registerAetheryte( 2 );
|
player.registerAetheryte( 2 );
|
||||||
player.learnAction( Common::UnlockEntry::Return );
|
player.setSystemActionUnlocked( Common::UnlockEntry::Return );
|
||||||
Scene00002( player );
|
Scene00002( player );
|
||||||
},
|
},
|
||||||
nullptr, getId() );
|
nullptr, getId() );
|
||||||
|
|
|
@ -72,7 +72,7 @@ public:
|
||||||
{
|
{
|
||||||
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
||||||
player.registerAetheryte( 2 );
|
player.registerAetheryte( 2 );
|
||||||
player.learnAction( Common::UnlockEntry::Return );
|
player.setSystemActionUnlocked( Common::UnlockEntry::Return );
|
||||||
Scene00002( player );
|
Scene00002( player );
|
||||||
},
|
},
|
||||||
nullptr, getId() );
|
nullptr, getId() );
|
||||||
|
|
|
@ -90,7 +90,7 @@ public:
|
||||||
{
|
{
|
||||||
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
||||||
player.registerAetheryte( 2 );
|
player.registerAetheryte( 2 );
|
||||||
player.learnAction( Common::UnlockEntry::Return );
|
player.setSystemActionUnlocked( Common::UnlockEntry::Return );
|
||||||
Scene00001( quest, player );
|
Scene00001( quest, player );
|
||||||
},
|
},
|
||||||
nullptr, getId() );
|
nullptr, getId() );
|
||||||
|
|
|
@ -90,7 +90,7 @@ public:
|
||||||
{
|
{
|
||||||
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
||||||
player.registerAetheryte( 2 );
|
player.registerAetheryte( 2 );
|
||||||
player.learnAction( Common::UnlockEntry::Return );
|
player.setSystemActionUnlocked( Common::UnlockEntry::Return );
|
||||||
Scene00001( player );
|
Scene00001( player );
|
||||||
},
|
},
|
||||||
nullptr, getId() );
|
nullptr, getId() );
|
||||||
|
|
|
@ -90,7 +90,7 @@ public:
|
||||||
{
|
{
|
||||||
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
eventMgr().sendEventNotice( player, 0x050002, 0, 1, 0, 0 );
|
||||||
player.registerAetheryte( 2 );
|
player.registerAetheryte( 2 );
|
||||||
player.learnAction( Common::UnlockEntry::Return );
|
player.setSystemActionUnlocked( Common::UnlockEntry::Return );
|
||||||
Scene00001( player );
|
Scene00001( player );
|
||||||
},
|
},
|
||||||
nullptr, getId() );
|
nullptr, getId() );
|
||||||
|
|
|
@ -205,7 +205,7 @@ private:
|
||||||
|
|
||||||
if( result.getResult( 0 ) == 1 )
|
if( result.getResult( 0 ) == 1 )
|
||||||
{
|
{
|
||||||
player.learnAction( Sapphire::Common::UnlockEntry::HuntingLog );
|
player.setSystemActionUnlocked( Sapphire::Common::UnlockEntry::HuntingLog );
|
||||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -558,7 +558,6 @@ private:
|
||||||
|
|
||||||
if( result.getResult( 0 ) == 1 )
|
if( result.getResult( 0 ) == 1 )
|
||||||
{
|
{
|
||||||
//if( player.giveQuestRewards( getId(), result.getResult(1)) )
|
|
||||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -619,7 +619,6 @@ private:
|
||||||
{
|
{
|
||||||
if( result.getResult( 0 ) == 1 )
|
if( result.getResult( 0 ) == 1 )
|
||||||
{
|
{
|
||||||
//if (player.giveQuestRewards(getId(), result.getResult(1)))
|
|
||||||
player.finishQuest( getId(), result.getResult( 1 ) );
|
player.finishQuest( getId(), result.getResult( 1 ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -549,7 +549,9 @@ private:
|
||||||
{
|
{
|
||||||
if( result.getResult( 0 ) == 1 )
|
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 );
|
quest.setSeq( Seq5 );
|
||||||
|
|
||||||
/*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
|
/*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Service.h>
|
#include <Service.h>
|
||||||
//Temporrary because QuestBattles are broken
|
|
||||||
#include "Manager/PlayerMgr.h"
|
|
||||||
|
|
||||||
// Quest Script: ClsArc004_00070
|
// Quest Script: ClsArc004_00070
|
||||||
// Quest Name: To Catch a Poacher
|
// Quest Name: To Catch a Poacher
|
||||||
|
@ -77,7 +75,7 @@ public:
|
||||||
{
|
{
|
||||||
case Actor0:
|
case Actor0:
|
||||||
{
|
{
|
||||||
if( !player.hasQuest( getId() ) )
|
if( quest.getSeq() == Seq0 )
|
||||||
Scene00000( quest, player );
|
Scene00000( quest, player );
|
||||||
else if( quest.getSeq() == SeqFinish )
|
else if( quest.getSeq() == SeqFinish )
|
||||||
Scene00021( quest, player );
|
Scene00021( quest, player );
|
||||||
|
@ -398,9 +396,13 @@ private:
|
||||||
{
|
{
|
||||||
if( result.getResult( 0 ) == 1 )
|
if( result.getResult( 0 ) == 1 )
|
||||||
{
|
{
|
||||||
//QuestBattle weirdness, Plus not being able to talk to that NPC, so we have to skip Seq5 entirely
|
//TODO: QuestBattles are broken
|
||||||
Sapphire::World::Manager::PlayerMgr::sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." );
|
playerMgr().sendUrgent( player, "QuestBattle content is currently broken. The fight has been skipped for you." );
|
||||||
quest.setSeq( SeqFinish );
|
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();
|
/*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Service.h>
|
#include <Service.h>
|
||||||
//Temporrary because QuestBattles are broken
|
|
||||||
#include "Manager/PlayerMgr.h"
|
|
||||||
|
|
||||||
// Quest Script: ClsArc005_00071
|
// Quest Script: ClsArc005_00071
|
||||||
// Quest Name: Homecoming
|
// Quest Name: Homecoming
|
||||||
|
@ -203,6 +201,7 @@ private:
|
||||||
|
|
||||||
void Scene00005Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
|
void Scene00005Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
|
||||||
{
|
{
|
||||||
|
eventMgr().sendEventNotice( player, getId(), 2, 0 );
|
||||||
quest.setSeq( Seq4 );
|
quest.setSeq( Seq4 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,9 +228,10 @@ private:
|
||||||
{
|
{
|
||||||
if( result.getResult( 0 ) == 1 )
|
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 );
|
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();
|
/*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
|
||||||
|
|
||||||
eventMgr().eventFinish( player, result.eventId, 0 );
|
eventMgr().eventFinish( player, result.eventId, 0 );
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Service.h>
|
#include <Service.h>
|
||||||
//Temporrary because QuestBattles are broken
|
|
||||||
#include "Manager/PlayerMgr.h"
|
|
||||||
|
|
||||||
// Quest Script: ClsArc006_00076
|
// Quest Script: ClsArc006_00076
|
||||||
// Quest Name: The One that Got Away
|
// Quest Name: The One that Got Away
|
||||||
|
@ -189,9 +187,10 @@ private:
|
||||||
{
|
{
|
||||||
if( result.getResult( 0 ) == 1 )
|
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 );
|
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();
|
/*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
|
||||||
|
|
||||||
eventMgr().eventFinish(player, result.eventId, 0);
|
eventMgr().eventFinish(player, result.eventId, 0);
|
||||||
|
@ -298,9 +297,10 @@ private:
|
||||||
{
|
{
|
||||||
if( result.getResult( 0 ) == 1 )
|
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 );
|
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();
|
/*auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref();
|
||||||
|
|
||||||
eventMgr().eventFinish(player, result.eventId, 0);
|
eventMgr().eventFinish(player, result.eventId, 0);
|
||||||
|
|
|
@ -141,6 +141,7 @@ private:
|
||||||
quest.setUI8AL( 0 );
|
quest.setUI8AL( 0 );
|
||||||
quest.setUI8BH( 0 );
|
quest.setUI8BH( 0 );
|
||||||
quest.setUI8BL( 0 );
|
quest.setUI8BL( 0 );
|
||||||
|
eventMgr().sendEventNotice( player, getId(), 3, 0 );
|
||||||
quest.setSeq( SeqFinish );
|
quest.setSeq( SeqFinish );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -239,6 +239,7 @@ private:
|
||||||
|
|
||||||
void Scene00001Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
|
void Scene00001Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
|
||||||
{
|
{
|
||||||
|
eventMgr().sendEventNotice( player, getId(), 1, 0 );
|
||||||
quest.setSeq( Seq2 );
|
quest.setSeq( Seq2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -531,6 +532,7 @@ private:
|
||||||
|
|
||||||
void Scene00026Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
|
void Scene00026Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
|
||||||
{
|
{
|
||||||
|
eventMgr().sendEventNotice( player, getId(), 2, 0 );
|
||||||
quest.setSeq( Seq4 );
|
quest.setSeq( Seq4 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -565,6 +567,7 @@ private:
|
||||||
|
|
||||||
void Scene00029Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
|
void Scene00029Return( World::Quest &quest, Entity::Player &player, const Event::SceneResult &result )
|
||||||
{
|
{
|
||||||
|
eventMgr().sendEventNotice( player, getId(), 5, 0 );
|
||||||
quest.setSeq( SeqFinish );
|
quest.setSeq( SeqFinish );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
201
src/scripts/quest/classquest/CNJ/ClsCnj000.cpp
Normal file
201
src/scripts/quest/classquest/CNJ/ClsCnj000.cpp
Normal file
|
@ -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 <root>/scripts/
|
||||||
|
|
||||||
|
#include "Manager/EventMgr.h"
|
||||||
|
#include <Actor/Player.h>
|
||||||
|
#include <ScriptObject.h>
|
||||||
|
#include <Service.h>
|
||||||
|
|
||||||
|
// 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 );
|
207
src/scripts/quest/classquest/CNJ/ClsCnj001.cpp
Normal file
207
src/scripts/quest/classquest/CNJ/ClsCnj001.cpp
Normal file
|
@ -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 <root>/scripts/
|
||||||
|
|
||||||
|
#include "Manager/EventMgr.h"
|
||||||
|
#include <Actor/Player.h>
|
||||||
|
#include <ScriptObject.h>
|
||||||
|
#include <Service.h>
|
||||||
|
|
||||||
|
#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 );
|
291
src/scripts/quest/classquest/CNJ/ClsCnj002.cpp
Normal file
291
src/scripts/quest/classquest/CNJ/ClsCnj002.cpp
Normal file
|
@ -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 <root>/scripts/
|
||||||
|
|
||||||
|
#include "Manager/EventMgr.h"
|
||||||
|
#include <Actor/Player.h>
|
||||||
|
#include <ScriptObject.h>
|
||||||
|
#include <Service.h>
|
||||||
|
|
||||||
|
#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 );
|
690
src/scripts/quest/classquest/CNJ/ClsCnj003.cpp
Normal file
690
src/scripts/quest/classquest/CNJ/ClsCnj003.cpp
Normal file
|
@ -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 <root>/scripts/
|
||||||
|
|
||||||
|
#include "Manager/EventMgr.h"
|
||||||
|
#include <Actor/Player.h>
|
||||||
|
#include <ScriptObject.h>
|
||||||
|
#include <Service.h>
|
||||||
|
|
||||||
|
|
||||||
|
#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 );
|
387
src/scripts/quest/classquest/CNJ/ClsCnj004.cpp
Normal file
387
src/scripts/quest/classquest/CNJ/ClsCnj004.cpp
Normal file
|
@ -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 <root>/scripts/
|
||||||
|
|
||||||
|
#include "Manager/EventMgr.h"
|
||||||
|
#include <Actor/Player.h>
|
||||||
|
#include <ScriptObject.h>
|
||||||
|
#include <Service.h>
|
||||||
|
|
||||||
|
|
||||||
|
#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 );
|
657
src/scripts/quest/classquest/CNJ/ClsCnj005.cpp
Normal file
657
src/scripts/quest/classquest/CNJ/ClsCnj005.cpp
Normal file
|
@ -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 <root>/scripts/
|
||||||
|
|
||||||
|
#include "Manager/EventMgr.h"
|
||||||
|
#include "Manager/TerritoryMgr.h"
|
||||||
|
#include <Actor/Player.h>
|
||||||
|
#include <ScriptObject.h>
|
||||||
|
#include <Service.h>
|
||||||
|
|
||||||
|
// 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 );
|
567
src/scripts/quest/classquest/CNJ/ClsCnj006.cpp
Normal file
567
src/scripts/quest/classquest/CNJ/ClsCnj006.cpp
Normal file
|
@ -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 <root>/scripts/
|
||||||
|
|
||||||
|
#include "Manager/EventMgr.h"
|
||||||
|
#include <Actor/Player.h>
|
||||||
|
#include <ScriptObject.h>
|
||||||
|
#include <Service.h>
|
||||||
|
|
||||||
|
|
||||||
|
#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 );
|
|
@ -251,7 +251,7 @@ bool Action::Action::update()
|
||||||
|
|
||||||
player->setLastActionTick( tickCount );
|
player->setLastActionTick( tickCount );
|
||||||
uint32_t delayMs = 100 - lastTickMs;
|
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 ) );
|
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 )
|
if( m_pTarget == nullptr && m_targetId != 0 )
|
||||||
{
|
{
|
||||||
// try to search for the target actor
|
// 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 )
|
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 the cast if target died
|
interrupt();
|
||||||
setInterrupted( Common::ActionInterruptType::RegularInterrupt );
|
return true;
|
||||||
interrupt();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -51,6 +51,13 @@ void ItemAction::execute()
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case Common::ItemActionType::ItemActionMount:
|
||||||
|
{
|
||||||
|
handleMountItem();
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,4 +79,12 @@ void ItemAction::handleVFXItem()
|
||||||
effectPacket->addTargetEffect( effect, static_cast< uint64_t >( getSourceChara()->getId() ) );
|
effectPacket->addTargetEffect( effect, static_cast< uint64_t >( getSourceChara()->getId() ) );
|
||||||
|
|
||||||
m_pSource->sendToInRangeSet( effectPacket, true );
|
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 );
|
||||||
}
|
}
|
|
@ -27,6 +27,8 @@ namespace Sapphire::World::Action
|
||||||
private:
|
private:
|
||||||
void handleVFXItem();
|
void handleVFXItem();
|
||||||
|
|
||||||
|
void handleMountItem();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr< Component::Excel::ExcelStruct< Component::Excel::ItemAction > > m_itemAction;
|
std::shared_ptr< Component::Excel::ExcelStruct< Component::Excel::ItemAction > > m_itemAction;
|
||||||
|
|
||||||
|
|
|
@ -427,7 +427,6 @@ bool Sapphire::Entity::BNpc::moveTo( const Entity::Chara& targetChara )
|
||||||
|
|
||||||
void Sapphire::Entity::BNpc::sendPositionUpdate()
|
void Sapphire::Entity::BNpc::sendPositionUpdate()
|
||||||
{
|
{
|
||||||
uint8_t unk1 = 0x3a;
|
|
||||||
uint8_t animationType = 2;
|
uint8_t animationType = 2;
|
||||||
|
|
||||||
if( m_state == BNpcState::Combat || m_state == BNpcState::Retreat )
|
if( m_state == BNpcState::Combat || m_state == BNpcState::Retreat )
|
||||||
|
@ -468,7 +467,7 @@ Sapphire::Entity::CharaPtr Sapphire::Entity::BNpc::hateListGetHighest()
|
||||||
return nullptr;
|
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 >();
|
auto hateEntry = std::make_shared< HateListEntry >();
|
||||||
hateEntry->m_hateAmount = static_cast< uint32_t >( hateAmount );
|
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 )
|
if( listEntry->m_pChara == pChara )
|
||||||
{
|
{
|
||||||
|
@ -499,9 +498,9 @@ void Sapphire::Entity::BNpc::hateListUpdate( Sapphire::Entity::CharaPtr pChara,
|
||||||
m_hateList.insert( hateEntry );
|
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 )
|
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 )
|
for( auto& listEntry : m_hateList )
|
||||||
{
|
{
|
||||||
|
@ -527,7 +536,7 @@ bool Sapphire::Entity::BNpc::hateListHasActor( Sapphire::Entity::CharaPtr pChara
|
||||||
return false;
|
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& pRNGMgr = Common::Service< World::Manager::RNGMgr >::ref();
|
||||||
auto variation = static_cast< uint32_t >( pRNGMgr.getRandGenerator< float >( 500, 1000 ).next() );
|
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 ) )
|
if( !hateListHasActor( pChara ) )
|
||||||
hateListRemove( pChara );
|
hateListRemove( pChara );
|
||||||
|
@ -765,6 +774,10 @@ void Sapphire::Entity::BNpc::onDeath()
|
||||||
m_timeOfDeath = Util::getTimeSeconds();
|
m_timeOfDeath = Util::getTimeSeconds();
|
||||||
setOwner( nullptr );
|
setOwner( nullptr );
|
||||||
|
|
||||||
|
|
||||||
|
auto& exdData = Common::Service< Data::ExdData >::ref();
|
||||||
|
auto paramGrowthInfo = exdData.getRow< Component::Excel::ParamGrow >( m_level );
|
||||||
|
|
||||||
for( auto& pHateEntry : m_hateList )
|
for( auto& pHateEntry : m_hateList )
|
||||||
{
|
{
|
||||||
// TODO: handle drops
|
// TODO: handle drops
|
||||||
|
@ -773,6 +786,7 @@ void Sapphire::Entity::BNpc::onDeath()
|
||||||
{
|
{
|
||||||
auto& playerMgr = Common::Service< World::Manager::PlayerMgr >::ref();
|
auto& playerMgr = Common::Service< World::Manager::PlayerMgr >::ref();
|
||||||
playerMgr.onMobKill( *pPlayer, static_cast< uint16_t >( m_bNpcNameId ), getLayoutId() );
|
playerMgr.onMobKill( *pPlayer, static_cast< uint16_t >( m_bNpcNameId ), getLayoutId() );
|
||||||
|
pPlayer->gainExp( paramGrowthInfo->data().BaseExp );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hateListClear();
|
hateListClear();
|
||||||
|
@ -843,7 +857,7 @@ void Sapphire::Entity::BNpc::checkAggro()
|
||||||
if( levelDiff >= 10 )
|
if( levelDiff >= 10 )
|
||||||
range = 0.f;
|
range = 0.f;
|
||||||
else
|
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,
|
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;
|
m_pOwner = m_pChara;
|
||||||
if( m_pChara != nullptr )
|
if( m_pChara != nullptr )
|
||||||
|
@ -943,8 +957,8 @@ void Sapphire::Entity::BNpc::autoAttack( CharaPtr pTarget )
|
||||||
|
|
||||||
void Sapphire::Entity::BNpc::calculateStats()
|
void Sapphire::Entity::BNpc::calculateStats()
|
||||||
{
|
{
|
||||||
uint8_t level = getLevel();
|
auto level = getLevel();
|
||||||
uint8_t job = static_cast< uint8_t >( getClass() );
|
auto job = static_cast< uint8_t >( getClass() );
|
||||||
|
|
||||||
auto& exdData = Common::Service< Data::ExdData >::ref();
|
auto& exdData = Common::Service< Data::ExdData >::ref();
|
||||||
|
|
||||||
|
|
|
@ -87,6 +87,8 @@ namespace Sapphire::Entity
|
||||||
|
|
||||||
uint8_t getAggressionMode() const;
|
uint8_t getAggressionMode() const;
|
||||||
|
|
||||||
|
uint32_t getTriggerOwnerId() const;
|
||||||
|
void setTriggerOwnerId( uint32_t triggerOwnerId );
|
||||||
|
|
||||||
float getNaviTargetReachedDistance() const;
|
float getNaviTargetReachedDistance() const;
|
||||||
|
|
||||||
|
@ -102,13 +104,13 @@ namespace Sapphire::Entity
|
||||||
|
|
||||||
void hateListClear();
|
void hateListClear();
|
||||||
CharaPtr hateListGetHighest();
|
CharaPtr hateListGetHighest();
|
||||||
void hateListAdd( CharaPtr pChara, int32_t hateAmount );
|
void hateListAdd( const CharaPtr& pChara, int32_t hateAmount );
|
||||||
void hateListUpdate( CharaPtr pChara, int32_t hateAmount );
|
void hateListUpdate( const CharaPtr& pChara, int32_t hateAmount );
|
||||||
void hateListRemove( CharaPtr pChara );
|
void hateListRemove( const CharaPtr& pChara );
|
||||||
bool hateListHasActor( CharaPtr pChara );
|
bool hateListHasActor( const CharaPtr& pChara );
|
||||||
|
|
||||||
void aggro( CharaPtr pChara );
|
void aggro( const CharaPtr& pChara );
|
||||||
void deaggro( CharaPtr pChara );
|
void deaggro( const CharaPtr& pChara );
|
||||||
|
|
||||||
void update( uint64_t tickCount ) override;
|
void update( uint64_t tickCount ) override;
|
||||||
void onTick() override;
|
void onTick() override;
|
||||||
|
@ -126,7 +128,7 @@ namespace Sapphire::Entity
|
||||||
|
|
||||||
void checkAggro();
|
void checkAggro();
|
||||||
|
|
||||||
void setOwner( CharaPtr m_pChara );
|
void setOwner( const CharaPtr& m_pChara );
|
||||||
|
|
||||||
void setLevelId( uint32_t levelId );
|
void setLevelId( uint32_t levelId );
|
||||||
uint32_t getLevelId() const;
|
uint32_t getLevelId() const;
|
||||||
|
@ -159,6 +161,7 @@ namespace Sapphire::Entity
|
||||||
uint32_t m_rank;
|
uint32_t m_rank;
|
||||||
uint32_t m_boundInstanceId;
|
uint32_t m_boundInstanceId;
|
||||||
uint32_t m_layoutId;
|
uint32_t m_layoutId;
|
||||||
|
uint32_t m_triggerOwnerId;
|
||||||
|
|
||||||
uint32_t m_flags;
|
uint32_t m_flags;
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include "Manager/PartyMgr.h"
|
#include "Manager/PartyMgr.h"
|
||||||
|
|
||||||
#include "Territory/Territory.h"
|
#include "Territory/Territory.h"
|
||||||
#include "Territory/ZonePosition.h"
|
|
||||||
#include "Territory/InstanceContent.h"
|
#include "Territory/InstanceContent.h"
|
||||||
#include "Territory/InstanceObjectCache.h"
|
#include "Territory/InstanceObjectCache.h"
|
||||||
#include "Territory/Land.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 );
|
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()
|
void Sapphire::Entity::Player::calculateStats()
|
||||||
{
|
{
|
||||||
uint8_t tribe = getLookAt( Common::CharaLook::Tribe );
|
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.
|
// TODO: this should be simplified and a type created in server_common/common.h.
|
||||||
if( type == 1 ) // teleport
|
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 ) );
|
sendToInRangeSet( makeActorControl( getId(), ActorDespawnEffect, 0x04 ) );
|
||||||
setZoningType( Common::ZoneingType::Teleport );
|
setZoningType( Common::ZoneingType::Teleport );
|
||||||
}
|
}
|
||||||
else if( type == 2 ) // aethernet
|
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 ) );
|
sendToInRangeSet( makeActorControl( getId(), ActorDespawnEffect, 0x04 ) );
|
||||||
setZoningType( Common::ZoneingType::Teleport );
|
setZoningType( Common::ZoneingType::Teleport );
|
||||||
}
|
}
|
||||||
else if( type == 3 ) // return
|
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 ) );
|
sendToInRangeSet( makeActorControl( getId(), ActorDespawnEffect, 0x03 ) );
|
||||||
setZoningType( Common::ZoneingType::Return );
|
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 )
|
void Sapphire::Entity::Player::forceZoneing( uint32_t zoneId )
|
||||||
{
|
{
|
||||||
m_queuedZoneing = std::make_shared< QueuedZoning >( zoneId, getPos(), Util::getTimeMs(), 0.f );
|
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 )
|
bool Sapphire::Entity::Player::setInstance( const TerritoryPtr& instance, Common::FFXIVARR_POSITION3 pos )
|
||||||
|
@ -576,18 +509,10 @@ bool Sapphire::Entity::Player::exitInstance()
|
||||||
resetHp();
|
resetHp();
|
||||||
resetMp();
|
resetMp();
|
||||||
|
|
||||||
// check if housing zone
|
TerritoryPtr pTeri = teriMgr.getTerritoryByGuId( m_prevTerritoryId );
|
||||||
if( teriMgr.isHousingTerritory( m_prevTerritoryTypeId ) )
|
|
||||||
{
|
if( !teriMgr.movePlayer( pTeri, *this ) )
|
||||||
if( !teriMgr.movePlayer( teriMgr.getZoneByLandSetId( m_prevTerritoryId ), *this ) )
|
return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
auto pPrevZone = teriMgr.getZoneByTerritoryTypeId( m_prevTerritoryTypeId );
|
|
||||||
if( !teriMgr.movePlayer( pPrevZone, *this ) )
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_pos = m_prevPos;
|
m_pos = m_prevPos;
|
||||||
m_rot = m_prevRot;
|
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 );
|
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;
|
uint16_t index;
|
||||||
uint8_t value;
|
uint8_t value;
|
||||||
|
@ -761,7 +686,7 @@ void Sapphire::Entity::Player::learnAction( Common::UnlockEntry unlockId )
|
||||||
|
|
||||||
m_unlocks[ index ] |= value;
|
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 )
|
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;
|
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()
|
Sapphire::Entity::Player::MountList& Sapphire::Entity::Player::getMountGuideBitmask()
|
||||||
{
|
{
|
||||||
return m_mountGuide;
|
return m_mountGuide;
|
||||||
|
@ -1275,7 +1213,22 @@ void Sapphire::Entity::Player::performZoning( uint16_t zoneId, const Common::FFX
|
||||||
m_territoryTypeId = zoneId;
|
m_territoryTypeId = zoneId;
|
||||||
m_bMarkedForZoning = true;
|
m_bMarkedForZoning = true;
|
||||||
setRot( rotation );
|
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
|
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 )
|
void Sapphire::Entity::Player::setMaxGearSets( uint8_t amount )
|
||||||
{
|
{
|
||||||
|
if( amount == 1 )
|
||||||
|
amount = 5;
|
||||||
|
|
||||||
m_equippedMannequin = amount;
|
m_equippedMannequin = amount;
|
||||||
|
|
||||||
queuePacket( makeActorControlSelf( getId(), SetMaxGearSets, m_equippedMannequin ) );
|
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 );
|
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();
|
auto& exdData = Common::Service< Data::ExdData >::ref();
|
||||||
|
|
||||||
|
@ -1700,11 +1656,9 @@ void Sapphire::Entity::Player::sendTitleList()
|
||||||
queuePacket( titleListPacket );
|
queuePacket( titleListPacket );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void Sapphire::Entity::Player::sendZoneInPackets( uint32_t param1, bool shouldSetStatus = false )
|
||||||
Sapphire::Entity::Player::sendZoneInPackets( uint32_t param1, uint32_t param2 = 0, uint32_t param3 = 0, uint32_t param4 = 0,
|
|
||||||
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 ) );
|
auto SetStatusPacket = makeActorControl( getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) );
|
||||||
|
|
||||||
if( !getGmInvis() )
|
if( !getGmInvis() )
|
||||||
|
@ -1728,7 +1682,7 @@ void Sapphire::Entity::Player::finishZoning()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ZoneingType::Teleport:
|
case ZoneingType::Teleport:
|
||||||
sendZoneInPackets( 0x01, 0, 0, 110 );
|
sendZoneInPackets( 0x01 );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ZoneingType::Return:
|
case ZoneingType::Return:
|
||||||
|
@ -1739,10 +1693,10 @@ void Sapphire::Entity::Player::finishZoning()
|
||||||
resetHp();
|
resetHp();
|
||||||
resetMp();
|
resetMp();
|
||||||
setStatus( Common::ActorStatus::Idle );
|
setStatus( Common::ActorStatus::Idle );
|
||||||
sendZoneInPackets( 0x01, 0x01, 0, 111, true );
|
sendZoneInPackets( 0x01, true );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sendZoneInPackets( 0x01, 0x00, 0, 111 );
|
sendZoneInPackets( 0x01 );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -302,15 +302,6 @@ namespace Sapphire::Entity
|
||||||
/*! return current online status depending on current state / activity */
|
/*! return current online status depending on current state / activity */
|
||||||
Common::OnlineStatus getOnlineStatus() const;
|
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 */
|
/*! sets the players instance & initiates zoning process */
|
||||||
bool setInstance( const Sapphire::TerritoryPtr& instance, Sapphire::Common::FFXIVARR_POSITION3 pos );
|
bool setInstance( const Sapphire::TerritoryPtr& instance, Sapphire::Common::FFXIVARR_POSITION3 pos );
|
||||||
|
|
||||||
|
@ -322,9 +313,6 @@ namespace Sapphire::Entity
|
||||||
|
|
||||||
void forceZoneing( uint32_t zoneId );
|
void forceZoneing( uint32_t zoneId );
|
||||||
|
|
||||||
/*! return player to preset homepoint */
|
|
||||||
void returnToHomepoint();
|
|
||||||
|
|
||||||
/*! change position, sends update too */
|
/*! change position, sends update too */
|
||||||
void changePosition( float x, float y, float z, float o );
|
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 setDyeingInfo( uint32_t itemToDyeContainer, uint32_t itemToDyeSlot, uint32_t dyeBagContainer, uint32_t dyeBagSlot );
|
||||||
void dyeItemFromDyeingInfo();
|
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) */
|
/*! get player's title list (available titles) */
|
||||||
TitleList& getTitleList();
|
TitleList& getTitleList();
|
||||||
|
|
||||||
|
@ -411,7 +396,7 @@ namespace Sapphire::Entity
|
||||||
/*! mount the specified setMount and send the packets */
|
/*! mount the specified setMount and send the packets */
|
||||||
void setMount( uint32_t mountId );
|
void setMount( uint32_t mountId );
|
||||||
|
|
||||||
void setCompanion( uint16_t id );
|
void setCompanion( uint8_t id );
|
||||||
|
|
||||||
uint8_t getCurrentCompanion() const;
|
uint8_t getCurrentCompanion() const;
|
||||||
|
|
||||||
|
@ -465,7 +450,7 @@ namespace Sapphire::Entity
|
||||||
void updateHowtosSeen( uint32_t howToId );
|
void updateHowtosSeen( uint32_t howToId );
|
||||||
|
|
||||||
/*! learn an action / update the unlock bitmask. */
|
/*! learn an action / update the unlock bitmask. */
|
||||||
void learnAction( Common::UnlockEntry unlockId );
|
void setSystemActionUnlocked( Common::UnlockEntry unlockId );
|
||||||
|
|
||||||
/*! learn a song / update the unlock bitmask. */
|
/*! learn a song / update the unlock bitmask. */
|
||||||
void learnSong( uint8_t songId, uint32_t itemId );
|
void learnSong( uint8_t songId, uint32_t itemId );
|
||||||
|
@ -479,6 +464,9 @@ namespace Sapphire::Entity
|
||||||
/*! return a const pointer to the orchestrion bitmask array */
|
/*! return a const pointer to the orchestrion bitmask array */
|
||||||
const OrchestrionList& getOrchestrionBitmask() const;
|
const OrchestrionList& getOrchestrionBitmask() const;
|
||||||
|
|
||||||
|
/*! unlock a mount */
|
||||||
|
void unlockMount( uint32_t mountId );
|
||||||
|
|
||||||
/*! return a const pointer to the setMount guide bitmask array */
|
/*! return a const pointer to the setMount guide bitmask array */
|
||||||
MountList& getMountGuideBitmask();
|
MountList& getMountGuideBitmask();
|
||||||
|
|
||||||
|
@ -598,7 +586,7 @@ namespace Sapphire::Entity
|
||||||
/*! return true if the player is marked for zoning */
|
/*! return true if the player is marked for zoning */
|
||||||
bool isMarkedForZoning() const;
|
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();
|
void finishZoning();
|
||||||
|
|
||||||
|
@ -964,7 +952,7 @@ namespace Sapphire::Entity
|
||||||
// content finder info
|
// content finder info
|
||||||
uint32_t m_cfPenaltyUntil{}; // unix time
|
uint32_t m_cfPenaltyUntil{}; // unix time
|
||||||
|
|
||||||
uint16_t m_companionId{};
|
uint8_t m_companionId{};
|
||||||
uint32_t m_mount;
|
uint32_t m_mount;
|
||||||
uint32_t m_emoteMode;
|
uint32_t m_emoteMode;
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ void Sapphire::Entity::Player::updateQuest( const World::Quest& quest )
|
||||||
m_quests[ index ] = quest;
|
m_quests[ index ] = quest;
|
||||||
questMgr.onUpdateQuest( *this, index );
|
questMgr.onUpdateQuest( *this, index );
|
||||||
}
|
}
|
||||||
else
|
else if( quest.getSeq() != 0 )
|
||||||
addQuest( quest );
|
addQuest( quest );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,8 @@ file( GLOB SERVER_SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
Territory/Housing/*.cpp
|
Territory/Housing/*.cpp
|
||||||
Util/*.cpp
|
Util/*.cpp
|
||||||
Navi/*.cpp
|
Navi/*.cpp
|
||||||
Quest/*.cpp)
|
Task/*.cpp
|
||||||
|
Quest/*.cpp )
|
||||||
|
|
||||||
add_executable( world ${SERVER_SOURCE_FILES} )
|
add_executable( world ${SERVER_SOURCE_FILES} )
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,6 @@ TYPE_FORWARD( InstanceContent );
|
||||||
TYPE_FORWARD( QuestBattle );
|
TYPE_FORWARD( QuestBattle );
|
||||||
TYPE_FORWARD( Item );
|
TYPE_FORWARD( Item );
|
||||||
TYPE_FORWARD( ItemContainer );
|
TYPE_FORWARD( ItemContainer );
|
||||||
TYPE_FORWARD( ZonePosition );
|
|
||||||
TYPE_FORWARD( Land );
|
TYPE_FORWARD( Land );
|
||||||
TYPE_FORWARD( Linkshell );
|
TYPE_FORWARD( Linkshell );
|
||||||
|
|
||||||
|
@ -34,6 +33,7 @@ namespace World
|
||||||
{
|
{
|
||||||
TYPE_FORWARD( Session );
|
TYPE_FORWARD( Session );
|
||||||
TYPE_FORWARD( Quest );
|
TYPE_FORWARD( Quest );
|
||||||
|
TYPE_FORWARD( Task );
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace World::Navi
|
namespace World::Navi
|
||||||
|
|
|
@ -49,7 +49,7 @@ const uint64_t World::Manager::ChatChannelMgr::createChatChannel( Common::ChatCh
|
||||||
return cId.ChannelID;
|
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 ) )
|
if( !isChannelValid( channelId ) )
|
||||||
{
|
{
|
||||||
|
@ -71,7 +71,7 @@ void World::Manager::ChatChannelMgr::addPlayerToChannel( uint64_t channelId, Ent
|
||||||
m_channels[ channelId ].emplace_back( player.getAsPlayer() );
|
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 ) )
|
if( !isChannelValid( channelId ) )
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,8 +30,8 @@ namespace Sapphire::World::Manager
|
||||||
|
|
||||||
const uint64_t createChatChannel( Common::ChatChannelType type );
|
const uint64_t createChatChannel( Common::ChatChannelType type );
|
||||||
|
|
||||||
void addPlayerToChannel( uint64_t channelId, Entity::Player& player );
|
void addToChannel( uint64_t channelId, Entity::Player& player );
|
||||||
void removePlayerFromChannel( 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 );
|
void sendMessageToChannel( uint64_t channelId, Entity::Player& sender, const std::string& message );
|
||||||
|
|
||||||
|
|
|
@ -472,6 +472,47 @@ void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player&
|
||||||
pSession->getZoneConnection()->queueOutPacket( actorControl );
|
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);
|
/*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 ) );
|
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;
|
uint32_t id;
|
||||||
|
|
||||||
sscanf( params.c_str(), "%d", &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")
|
else if ( subCommand == "effect")
|
||||||
{
|
{
|
||||||
|
|
|
@ -73,7 +73,7 @@ std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId )
|
||||||
case Event::EventHandler::EventHandlerType::Aetheryte:
|
case Event::EventHandler::EventHandlerType::Aetheryte:
|
||||||
{
|
{
|
||||||
auto aetherInfo = exdData.getRow< Component::Excel::Aetheryte >( eventId & 0xFFFF );
|
auto aetherInfo = exdData.getRow< Component::Excel::Aetheryte >( eventId & 0xFFFF );
|
||||||
if( !aetherInfo->data().Telepo )
|
if( aetherInfo->data().Telepo )
|
||||||
return "Aetheryte";
|
return "Aetheryte";
|
||||||
return "Aethernet";
|
return "Aethernet";
|
||||||
}
|
}
|
||||||
|
|
|
@ -285,27 +285,24 @@ uint64_t Sapphire::World::Manager::HousingMgr::getNextHouseId()
|
||||||
return pQR->getUInt64( 1 ) + 1;
|
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;
|
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 )
|
Sapphire::LandPtr Sapphire::World::Manager::HousingMgr::getLandByOwnerId( uint64_t id )
|
||||||
{
|
{
|
||||||
|
|
||||||
auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref();
|
auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref();
|
||||||
auto res = db.query( "SELECT LandSetId, LandId FROM land WHERE OwnerId = " + std::to_string( id ) );
|
auto res = db.query( "SELECT LandSetId, LandId FROM land WHERE OwnerId = " + std::to_string( id ) );
|
||||||
|
|
||||||
if( !res->next() )
|
if( !res->next() )
|
||||||
return nullptr;
|
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 )
|
if( !hZone )
|
||||||
return nullptr;
|
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 ) );
|
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 landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
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 )
|
if( !hZone )
|
||||||
return;
|
return;
|
||||||
|
@ -356,8 +356,10 @@ void Sapphire::World::Manager::HousingMgr::sendLandSignFree( Entity::Player& pla
|
||||||
auto& server = Common::Service< World::WorldServer >::ref();
|
auto& server = Common::Service< World::WorldServer >::ref();
|
||||||
player.setActiveLand( static_cast< uint8_t >( ident.landId ), static_cast< uint8_t >( ident.wardNum ) );
|
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 landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
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 )
|
if( !hZone )
|
||||||
return;
|
return;
|
||||||
|
@ -479,7 +481,10 @@ void Sapphire::World::Manager::HousingMgr::sendWardLandInfo( Entity::Player& pla
|
||||||
auto pSession = server.getSession( player.getCharacterId() );
|
auto pSession = server.getSession( player.getCharacterId() );
|
||||||
|
|
||||||
auto landSetId = toLandSetId( territoryTypeId, wardId );
|
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 )
|
if( !hZone )
|
||||||
return;
|
return;
|
||||||
|
@ -492,7 +497,6 @@ void Sapphire::World::Manager::HousingMgr::sendWardLandInfo( Entity::Player& pla
|
||||||
wardInfoPacket->data().LandSetId.worldId = 67;
|
wardInfoPacket->data().LandSetId.worldId = 67;
|
||||||
|
|
||||||
for( int i = 0; i < 30; i++ )
|
for( int i = 0; i < 30; i++ )
|
||||||
for( int i = 0; i < 60; i++ )
|
|
||||||
{
|
{
|
||||||
auto land = hZone->getLand( i );
|
auto land = hZone->getLand( i );
|
||||||
assert( land );
|
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 )
|
void Sapphire::World::Manager::HousingMgr::sendEstateGreeting( Entity::Player& player, const Common::LandIdent ident )
|
||||||
{
|
{
|
||||||
auto& server = Common::Service< World::WorldServer >::ref();
|
auto& server = Common::Service< World::WorldServer >::ref();
|
||||||
auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) );
|
auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
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 )
|
if( !hZone )
|
||||||
return;
|
return;
|
||||||
|
@ -690,8 +696,7 @@ void Sapphire::World::Manager::HousingMgr::buildPresetEstate( Entity::Player& pl
|
||||||
|
|
||||||
// create house
|
// create house
|
||||||
auto ident = pLand->getLandIdent();
|
auto ident = pLand->getLandIdent();
|
||||||
auto house = make_House( getNextHouseId(), pLand->getLandSetId(), ident,
|
auto house = make_House( getNextHouseId(), pLand->getLandSetId(), ident, "Estate #" + std::to_string( ident.landId + 1 ), "" );
|
||||||
"Estate #" + std::to_string( ident.landId + 1 ), "" );
|
|
||||||
|
|
||||||
pLand->setHouse( house );
|
pLand->setHouse( house );
|
||||||
|
|
||||||
|
@ -732,8 +737,10 @@ void Sapphire::World::Manager::HousingMgr::requestEstateRename( Entity::Player&
|
||||||
auto& server = Common::Service< World::WorldServer >::ref();
|
auto& server = Common::Service< World::WorldServer >::ref();
|
||||||
auto pSession = server.getSession( player.getCharacterId() );
|
auto pSession = server.getSession( player.getCharacterId() );
|
||||||
|
|
||||||
auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) );
|
auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
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 )
|
if( !hZone )
|
||||||
return;
|
return;
|
||||||
|
@ -757,8 +764,10 @@ void Sapphire::World::Manager::HousingMgr::requestEstateEditGreeting( Entity::Pl
|
||||||
auto& server = Common::Service< World::WorldServer >::ref();
|
auto& server = Common::Service< World::WorldServer >::ref();
|
||||||
auto pSession = server.getSession( player.getCharacterId() );
|
auto pSession = server.getSession( player.getCharacterId() );
|
||||||
|
|
||||||
auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) );
|
auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
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 )
|
if( !hZone )
|
||||||
return;
|
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 )
|
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 landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
auto zone = getHousingZoneByLandSetId( landSetId );
|
auto teriMgr = Common::Service< TerritoryMgr >::ref();
|
||||||
|
auto pTeri = teriMgr.getTerritoryByGuId( landSetId );
|
||||||
|
auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri );
|
||||||
|
|
||||||
if( !zone )
|
if( !hZone )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto land = zone->getLand( static_cast< uint8_t >( ident.landId ) );
|
auto land = hZone->getLand( static_cast< uint8_t >( ident.landId ) );
|
||||||
if( !land )
|
if( !land )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -809,8 +820,10 @@ void Sapphire::World::Manager::HousingMgr::requestEstateEditGuestAccess( Entity:
|
||||||
auto& server = Common::Service< World::WorldServer >::ref();
|
auto& server = Common::Service< World::WorldServer >::ref();
|
||||||
auto pSession = server.getSession( player.getCharacterId() );
|
auto pSession = server.getSession( player.getCharacterId() );
|
||||||
|
|
||||||
auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) );
|
auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
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 )
|
if( !hZone )
|
||||||
return;
|
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
|
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.worldId = static_cast< int16_t >( param11 >> 16 );
|
||||||
ident.territoryTypeId = static_cast< int16_t >( param11 & 0xFFFF );
|
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 ident = internalZone->getLandIdent();
|
||||||
|
|
||||||
auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) );
|
auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
auto exteriorZone = getHousingZoneByLandSetId( landSetId );
|
auto teriMgr = Common::Service< TerritoryMgr >::ref();
|
||||||
|
auto pTeri = teriMgr.getTerritoryByGuId( landSetId );
|
||||||
|
auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri );
|
||||||
|
|
||||||
if( !exteriorZone )
|
if( !hZone )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
targetLand = exteriorZone->getLand( static_cast< uint8_t >( ident.landId ) );
|
targetLand = hZone->getLand( static_cast< uint8_t >( ident.landId ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1012,9 +1027,13 @@ void Sapphire::World::Manager::HousingMgr::reqPlaceHousingItem( Sapphire::Entity
|
||||||
// todo: this whole process is retarded and needs to be fixed
|
// todo: this whole process is retarded and needs to be fixed
|
||||||
// perhaps maintain a list of estates by ident inside housingmgr?
|
// perhaps maintain a list of estates by ident inside housingmgr?
|
||||||
auto ident = zone->getLandIdent();
|
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?
|
// wtf?
|
||||||
else
|
else
|
||||||
|
@ -1084,9 +1103,13 @@ void Sapphire::World::Manager::HousingMgr::reqPlaceItemInStore( Sapphire::Entity
|
||||||
// todo: this whole process is retarded and needs to be fixed
|
// todo: this whole process is retarded and needs to be fixed
|
||||||
// perhaps maintain a list of estates by ident inside housingmgr?
|
// perhaps maintain a list of estates by ident inside housingmgr?
|
||||||
auto ident = zone->getLandIdent();
|
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 ) )
|
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,
|
void Sapphire::World::Manager::HousingMgr::reqMoveHousingItem( Entity::Player& player, Common::LandIdent ident,
|
||||||
uint8_t slot, Common::FFXIVARR_POSITION3 pos, float rot )
|
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 landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
auto 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 );
|
||||||
|
auto land = hZone->getLand( static_cast< uint8_t >( ident.landId ) );
|
||||||
|
|
||||||
if( !land )
|
if( !land )
|
||||||
return;
|
return;
|
||||||
|
@ -1278,7 +1305,6 @@ void Sapphire::World::Manager::HousingMgr::reqMoveHousingItem( Entity::Player& p
|
||||||
if( !hasPermission( player, *land, 0 ) )
|
if( !hasPermission( player, *land, 0 ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref();
|
|
||||||
auto pZone = teriMgr.getTerritoryByGuId( player.getTerritoryId() );
|
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
|
// 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 );
|
containerId = m_internalPlacedItemContainers.at( containerIdx );
|
||||||
}
|
}
|
||||||
catch( const std::out_of_range& ex )
|
catch( const std::out_of_range& )
|
||||||
{
|
{
|
||||||
return false;
|
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 ) )
|
if( auto terri = std::dynamic_pointer_cast< Territory::Housing::HousingInteriorTerritory >( pZone ) )
|
||||||
{
|
{
|
||||||
auto ident = terri->getLandIdent();
|
auto ident = terri->getLandIdent();
|
||||||
auto landSet = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) );
|
auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
auto 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 );
|
||||||
|
|
||||||
|
auto land = hZone->getLand( static_cast< uint8_t >( ident.landId ) );
|
||||||
|
|
||||||
if( !land )
|
if( !land )
|
||||||
return;
|
return;
|
||||||
|
@ -1635,8 +1666,12 @@ void Sapphire::World::Manager::HousingMgr::reqEstateInteriorRemodel( Sapphire::E
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto ident = terri->getLandIdent();
|
auto ident = terri->getLandIdent();
|
||||||
auto landSet = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) );
|
auto landSetId = toLandSetId( ident.territoryTypeId, ident.wardNum );
|
||||||
auto land = getHousingZoneByLandSetId( landSet )->getLand( static_cast< uint8_t >( ident.landId ) );
|
|
||||||
|
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 )
|
if( !land )
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -71,8 +71,7 @@ namespace Sapphire::World::Manager
|
||||||
|
|
||||||
bool init();
|
bool init();
|
||||||
|
|
||||||
uint32_t toLandSetId( uint16_t territoryTypeId, uint8_t wardId ) const;
|
uint32_t toLandSetId( int16_t territoryTypeId, int16_t wardId ) const;
|
||||||
Sapphire::Data::HousingZonePtr getHousingZoneByLandSetId( uint32_t id );
|
|
||||||
Sapphire::LandPtr getLandByOwnerId( uint64_t id );
|
Sapphire::LandPtr getLandByOwnerId( uint64_t id );
|
||||||
|
|
||||||
void sendLandSignOwned( Entity::Player& player, const Common::LandIdent ident );
|
void sendLandSignOwned( Entity::Player& player, const Common::LandIdent ident );
|
||||||
|
|
|
@ -168,7 +168,7 @@ Sapphire::LinkshellPtr Sapphire::World::Manager::LinkshellMgr::createLinkshell(
|
||||||
|
|
||||||
auto& chatChannelMgr = Common::Service< Manager::ChatChannelMgr >::ref();
|
auto& chatChannelMgr = Common::Service< Manager::ChatChannelMgr >::ref();
|
||||||
auto chatChannelId = chatChannelMgr.createChatChannel( Common::ChatChannelType::LinkshellChat );
|
auto chatChannelId = chatChannelMgr.createChatChannel( Common::ChatChannelType::LinkshellChat );
|
||||||
chatChannelMgr.addPlayerToChannel( chatChannelId, player );
|
chatChannelMgr.addToChannel( chatChannelId, player );
|
||||||
|
|
||||||
uint64_t masterId = player.getCharacterId();
|
uint64_t masterId = player.getCharacterId();
|
||||||
|
|
||||||
|
@ -305,7 +305,7 @@ void LinkshellMgr::kickPlayer( Entity::Player& sourcePlayer, Entity::Player& kic
|
||||||
lsPtr->getName(), kickedPlayer.getName() );
|
lsPtr->getName(), kickedPlayer.getName() );
|
||||||
|
|
||||||
server.queueForPlayer( sourcePlayer.getCharacterId(), linkshellKickResult1 );
|
server.queueForPlayer( sourcePlayer.getCharacterId(), linkshellKickResult1 );
|
||||||
chatChannelMgr.removePlayerFromChannel( lsPtr->getChatChannel(), kickedPlayer );
|
chatChannelMgr.removeFromChannel( lsPtr->getChatChannel(), kickedPlayer );
|
||||||
}
|
}
|
||||||
|
|
||||||
void LinkshellMgr::sendLinkshellList( Entity::Player& player )
|
void LinkshellMgr::sendLinkshellList( Entity::Player& player )
|
||||||
|
@ -355,7 +355,7 @@ void LinkshellMgr::leaveLinkshell( uint64_t lsId, uint64_t characterId )
|
||||||
lsPtr->removeMember( characterId );
|
lsPtr->removeMember( characterId );
|
||||||
writeLinkshell( lsId );
|
writeLinkshell( lsId );
|
||||||
|
|
||||||
chatChannelMgr.removePlayerFromChannel( lsPtr->getChatChannel(), *leavingPlayer );
|
chatChannelMgr.removeFromChannel( lsPtr->getChatChannel(), *leavingPlayer );
|
||||||
sendLinkshellList( *leavingPlayer );
|
sendLinkshellList( *leavingPlayer );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,7 +372,7 @@ void LinkshellMgr::joinLinkshell( uint64_t lsId, uint64_t characterId )
|
||||||
lsPtr->removeInvite( characterId );
|
lsPtr->removeInvite( characterId );
|
||||||
writeLinkshell( lsId );
|
writeLinkshell( lsId );
|
||||||
|
|
||||||
chatChannelMgr.addPlayerToChannel( lsPtr->getChatChannel(), *joiningPlayer );
|
chatChannelMgr.addToChannel( lsPtr->getChatChannel(), *joiningPlayer );
|
||||||
|
|
||||||
sendLinkshellList( *joiningPlayer );
|
sendLinkshellList( *joiningPlayer );
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,8 +59,8 @@ void Sapphire::World::Manager::PartyMgr::onJoin( uint32_t joinerId, uint32_t inv
|
||||||
invitingPlayer.setPartyId( partyId );
|
invitingPlayer.setPartyId( partyId );
|
||||||
invitingPlayer.addOnlineStatus( Common::OnlineStatus::PartyLeader );
|
invitingPlayer.addOnlineStatus( Common::OnlineStatus::PartyLeader );
|
||||||
|
|
||||||
ccMgr.addPlayerToChannel( party->ChatChannel, invitingPlayer );
|
ccMgr.addToChannel( party->ChatChannel, invitingPlayer );
|
||||||
ccMgr.addPlayerToChannel( party->ChatChannel, inviteePlayer );
|
ccMgr.addToChannel( party->ChatChannel, inviteePlayer );
|
||||||
|
|
||||||
party->MemberId.push_back( invitingPlayer.getId() );
|
party->MemberId.push_back( invitingPlayer.getId() );
|
||||||
party->MemberId.push_back( inviteePlayer.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.setPartyId( partyId );
|
||||||
inviteePlayer.addOnlineStatus( Common::OnlineStatus::PartyMember );
|
inviteePlayer.addOnlineStatus( Common::OnlineStatus::PartyMember );
|
||||||
|
|
||||||
ccMgr.addPlayerToChannel( party->ChatChannel, inviteePlayer );
|
ccMgr.addToChannel( party->ChatChannel, inviteePlayer );
|
||||||
|
|
||||||
party->MemberId.push_back( inviteePlayer.getId() );
|
party->MemberId.push_back( inviteePlayer.getId() );
|
||||||
party->PartyCount++;
|
party->PartyCount++;
|
||||||
|
@ -440,6 +440,6 @@ void Sapphire::World::Manager::PartyMgr::removeMember( Sapphire::World::Manager:
|
||||||
{
|
{
|
||||||
auto& ccMgr = Common::Service< World::Manager::ChatChannelMgr >::ref();
|
auto& ccMgr = Common::Service< World::Manager::ChatChannelMgr >::ref();
|
||||||
pMember->setPartyId( 0 );
|
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() );
|
party.MemberId.erase( std::remove( party.MemberId.begin(), party.MemberId.end(), pMember->getId() ), party.MemberId.end() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
#include <Exd/ExdData.h>
|
#include <Exd/ExdData.h>
|
||||||
|
|
||||||
#include <Territory/ZonePosition.h>
|
|
||||||
#include <Territory/Territory.h>
|
#include <Territory/Territory.h>
|
||||||
|
|
||||||
#include <Manager/TerritoryMgr.h>
|
#include <Manager/TerritoryMgr.h>
|
||||||
|
@ -30,6 +29,7 @@
|
||||||
#include "Network/PacketWrappers/HudParamPacket.h"
|
#include "Network/PacketWrappers/HudParamPacket.h"
|
||||||
|
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
#include "Territory/InstanceObjectCache.h"
|
||||||
|
|
||||||
using namespace Sapphire::World::Manager;
|
using namespace Sapphire::World::Manager;
|
||||||
using namespace Sapphire::Network::Packets;
|
using namespace Sapphire::Network::Packets;
|
||||||
|
@ -37,61 +37,6 @@ using namespace Sapphire::Network::Packets::WorldPackets::Server;
|
||||||
using namespace Sapphire::Network::ActorControl;
|
using namespace Sapphire::Network::ActorControl;
|
||||||
using namespace Sapphire::Common;
|
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 )
|
void PlayerMgr::onOnlineStatusChanged( Sapphire::Entity::Player& player, bool updateProfile )
|
||||||
{
|
{
|
||||||
auto& server = Common::Service< World::WorldServer >::ref();
|
auto& server = Common::Service< World::WorldServer >::ref();
|
||||||
|
|
|
@ -10,8 +10,6 @@ class PlayerMgr
|
||||||
public:
|
public:
|
||||||
PlayerMgr() = default;
|
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 onOnlineStatusChanged( Sapphire::Entity::Player& player, bool updateProfile = true );
|
||||||
|
|
||||||
void onEquipDisplayFlagsChanged( Sapphire::Entity::Player& player );
|
void onEquipDisplayFlagsChanged( Sapphire::Entity::Player& player );
|
||||||
|
|
34
src/world/Manager/TaskMgr.cpp
Normal file
34
src/world/Manager/TaskMgr.cpp
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#include <Logging/Logger.h>
|
||||||
|
#include <Service.h>
|
||||||
|
|
||||||
|
#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 );
|
||||||
|
}
|
|
@ -3,9 +3,12 @@
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <ForwardsZone.h>
|
#include <ForwardsZone.h>
|
||||||
|
#include <Util/Util.h>
|
||||||
|
|
||||||
namespace Sapphire::World::Manager
|
namespace Sapphire::World::Manager
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
struct QueuedWarp
|
struct QueuedWarp
|
||||||
{
|
{
|
||||||
Common::WarpType m_warpType;
|
Common::WarpType m_warpType;
|
||||||
|
@ -13,7 +16,8 @@ namespace Sapphire::World::Manager
|
||||||
uint16_t m_targetZoneId;
|
uint16_t m_targetZoneId;
|
||||||
Common::FFXIVARR_POSITION3 m_targetPosition;
|
Common::FFXIVARR_POSITION3 m_targetPosition;
|
||||||
float m_targetRotation;
|
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,
|
QueuedWarp( uint64_t characterId, Common::WarpType warpType, uint16_t targetZoneId,
|
||||||
const Common::FFXIVARR_POSITION3& targetPosition, float targetRotation, uint64_t delayTime ) :
|
const Common::FFXIVARR_POSITION3& targetPosition, float targetRotation, uint64_t delayTime ) :
|
||||||
|
@ -22,25 +26,25 @@ namespace Sapphire::World::Manager
|
||||||
m_targetZoneId( targetZoneId ),
|
m_targetZoneId( targetZoneId ),
|
||||||
m_targetPosition( targetPosition ),
|
m_targetPosition( targetPosition ),
|
||||||
m_targetRotation( targetRotation ),
|
m_targetRotation( targetRotation ),
|
||||||
m_delayTime( delayTime ),
|
m_delayTimeMs( delayTime ),
|
||||||
|
m_timeQueuedMs( Common::Util::getTimeMs() )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class WarpMgr
|
class TaskMgr
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WarpMgr() = default;
|
TaskMgr() = default;
|
||||||
|
|
||||||
// queue a new warp process to be executed when the delaytime (ms) expired
|
// queue a new warp process to be executed when the delaytime (ms) expired
|
||||||
void queueWarp( uint64_t characterId, Common::WarpType warpType, uint16_t targetZoneId,
|
void queueTask( const TaskPtr& pTask );
|
||||||
const Common::FFXIVARR_POSITION3& targetPosition, float targetRotation, uint64_t delayTime );
|
|
||||||
|
|
||||||
void update( uint64_t tickCount );
|
void update( uint64_t tickCount );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint64_t m_lastTick;
|
uint64_t m_lastTick{};
|
||||||
std::vector< std::shared_ptr< QueuedWarp > > m_warpQueue;
|
std::vector< TaskPtr > m_taskList;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
#include "Actor/Player.h"
|
#include "Actor/Player.h"
|
||||||
|
|
||||||
#include "Territory/Territory.h"
|
#include "Territory/Territory.h"
|
||||||
#include "Territory/ZonePosition.h"
|
|
||||||
#include "Territory/InstanceContent.h"
|
#include "Territory/InstanceContent.h"
|
||||||
#include "Territory/QuestBattle.h"
|
#include "Territory/QuestBattle.h"
|
||||||
#include "TerritoryMgr.h"
|
#include "TerritoryMgr.h"
|
||||||
|
@ -46,17 +45,6 @@ void Sapphire::World::Manager::TerritoryMgr::loadTerritoryTypeDetailCache()
|
||||||
m_territoryTypeDetailCacheMap[ id ] = teri1;
|
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
|
bool Sapphire::World::Manager::TerritoryMgr::isValidTerritory( uint32_t territoryTypeId ) const
|
||||||
|
@ -69,7 +57,6 @@ bool Sapphire::World::Manager::TerritoryMgr::init()
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
loadTerritoryTypeDetailCache();
|
loadTerritoryTypeDetailCache();
|
||||||
loadTerritoryPositionMap();
|
|
||||||
|
|
||||||
createDefaultTerritories();
|
createDefaultTerritories();
|
||||||
createHousingTerritories();
|
createHousingTerritories();
|
||||||
|
@ -196,30 +183,32 @@ bool Sapphire::World::Manager::TerritoryMgr::createDefaultTerritories()
|
||||||
{
|
{
|
||||||
auto territoryTypeId = territory.first;
|
auto territoryTypeId = territory.first;
|
||||||
auto territoryInfo = territory.second;
|
auto territoryInfo = territory.second;
|
||||||
|
auto& territoryData = territoryInfo->data();
|
||||||
|
|
||||||
// if the zone has no name set
|
// if the zone has no name set
|
||||||
if( territoryInfo->getString( territoryInfo->data().Name ).empty() )
|
if( territoryInfo->getString( territoryData.Name ).empty() )
|
||||||
continue;
|
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 ) )
|
if( !pPlaceName || pPlaceName->getString( pPlaceName->data().Text.SGL ).empty() || !isDefaultTerritory( territoryTypeId ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
uint32_t guid = getNextInstanceId();
|
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();
|
pZone->init();
|
||||||
|
|
||||||
std::string bgPath = territoryInfo->getString( territoryInfo->data().LVB );
|
std::string bgPath = territoryInfo->getString( territoryData.LVB );
|
||||||
|
|
||||||
bool hasNaviMesh = pZone->getNaviProvider() != nullptr;
|
bool hasNaviMesh = pZone->getNaviProvider() != nullptr;
|
||||||
|
|
||||||
Logger::info( "{0}\t{1}\t{2}\t{3:<10}\t{4}\t{5}\t{6}",
|
Logger::info( "{0}\t{1}\t{2}\t{3:<10}\t{4}\t{5}\t{6}",
|
||||||
territoryTypeId,
|
territoryTypeId,
|
||||||
guid,
|
guid,
|
||||||
territoryInfo->data().IntendedUse,
|
territoryData.IntendedUse,
|
||||||
territoryInfo->getString( territoryInfo->data().Name ),
|
territoryInfo->getString( territoryData.Name ),
|
||||||
( isPrivateTerritory( territoryTypeId ) ? "PRIVATE" : "PUBLIC" ),
|
( isPrivateTerritory( territoryTypeId ) ? "PRIVATE" : "PUBLIC" ),
|
||||||
hasNaviMesh ? "NAVI" : "",
|
hasNaviMesh ? "NAVI" : "",
|
||||||
pPlaceName->getString( pPlaceName->data().Text.SGL ) );
|
pPlaceName->getString( pPlaceName->data().Text.SGL ) );
|
||||||
|
@ -256,24 +245,23 @@ bool Sapphire::World::Manager::TerritoryMgr::createHousingTerritories()
|
||||||
|
|
||||||
for( wardNum = 0; wardNum < wardMaxNum; wardNum++ )
|
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}",
|
Logger::info( "{0}\t{1}\t{2}\t{3:<10}\tHOUSING\t\t{4}#{5}",
|
||||||
territoryTypeId,
|
territoryTypeId,
|
||||||
guid,
|
pHousingZone->getLandSetId(),
|
||||||
territoryInfo->data().IntendedUse,
|
territoryInfo->data().IntendedUse,
|
||||||
territoryInfo->getString( territoryInfo->data().Name ),
|
territoryInfo->getString( territoryInfo->data().Name ),
|
||||||
pPlaceName->getString( pPlaceName->data().Text.SGL ),
|
pPlaceName->getString( pPlaceName->data().Text.SGL ),
|
||||||
wardNum );
|
wardNum );
|
||||||
|
|
||||||
auto pHousingZone = make_HousingZone( wardNum, territoryTypeId, guid, territoryInfo->getString( territoryInfo->data().Name ), pPlaceName->getString( pPlaceName->data().Text.SGL ) );
|
|
||||||
pHousingZone->init();
|
|
||||||
|
|
||||||
InstanceIdToTerritoryPtrMap instanceMap;
|
InstanceIdToTerritoryPtrMap instanceMap;
|
||||||
instanceMap[ guid ] = pHousingZone;
|
instanceMap[ pHousingZone->getLandSetId() ] = pHousingZone;
|
||||||
m_guIdToTerritoryPtrMap[ guid ] = pHousingZone;
|
m_guIdToTerritoryPtrMap[ pHousingZone->getLandSetId() ] = pHousingZone;
|
||||||
m_territoryTypeIdToInstanceGuidMap[ territoryTypeId ][ guid ] = pHousingZone;
|
m_territoryTypeIdToInstanceGuidMap[ territoryTypeId ][ pHousingZone->getLandSetId() ] = pHousingZone;
|
||||||
m_landSetIdToTerritoryPtrMap[ pHousingZone->getLandSetId() ] = pHousingZone;
|
|
||||||
m_territorySet.insert( { pHousingZone } );
|
m_territorySet.insert( { pHousingZone } );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -298,9 +286,10 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createTerritoryIn
|
||||||
if( !pTeri || !pPlaceName )
|
if( !pTeri || !pPlaceName )
|
||||||
return nullptr;
|
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();
|
pZone->init();
|
||||||
|
|
||||||
m_guIdToTerritoryPtrMap[ pZone->getGuId() ] = pZone;
|
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 )
|
Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createQuestBattle( uint32_t questBattleId )
|
||||||
{
|
{
|
||||||
|
|
||||||
auto& exdData = Common::Service< Data::ExdData >::ref();
|
auto& exdData = Common::Service< Data::ExdData >::ref();
|
||||||
|
|
||||||
auto pQuestBattleInfo = exdData.getRow< Component::Excel::QuestBattle >( questBattleId );
|
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() )
|
if( !pQuestInfo || pQuestInfo->getString( pQuestInfo->data().Text.Name ).empty() )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
uint16_t teriId = 0;
|
for( auto& teriId : exdData.getIdList< Component::Excel::TerritoryType >() )
|
||||||
for( auto& id : exdData.getIdList< Component::Excel::TerritoryType >() )
|
|
||||||
{
|
{
|
||||||
|
|
||||||
auto pTeri = exdData.getRow< Component::Excel::TerritoryType >( id );
|
auto pTeri = exdData.getRow< Component::Excel::TerritoryType >( teriId );
|
||||||
if( !pTeri )
|
if( !pTeri || pTeri->data().QuestBattle != questBattleId )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if( pTeri->data().QuestBattle == questBattleId )
|
if( !isInstanceContentTerritory( teriId ) )
|
||||||
{
|
return nullptr;
|
||||||
teriId = id;
|
|
||||||
if( !isInstanceContentTerritory( teriId ) )
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
Logger::debug( "Starting instance for QuestBattle id: {0} ({1})",
|
auto questName = pQuestInfo->getString( pQuestInfo->data().Text.Name );
|
||||||
questBattleId, pQuestInfo->getString( pQuestInfo->data().Text.Name ) );
|
Logger::debug( "Starting instance for QuestBattle id: {0} ({1})", questBattleId, questName );
|
||||||
|
|
||||||
auto instanceId = getNextInstanceId();
|
auto instanceId = getNextInstanceId();
|
||||||
auto pZone = make_QuestBattle( pQuestBattleInfo, teriId, instanceId,
|
auto pZone = make_QuestBattle( pQuestBattleInfo, teriId, instanceId,
|
||||||
pTeri->getString( pTeri->data().Name ),
|
pTeri->getString( pTeri->data().Name ), questName, questBattleId );
|
||||||
pQuestInfo->getString( pQuestInfo->data().Text.Name ), questBattleId );
|
pZone->init();
|
||||||
pZone->init();
|
|
||||||
|
|
||||||
m_questBattleIdToInstanceMap[ questBattleId ][ pZone->getGuId() ] = pZone;
|
m_questBattleIdToInstanceMap[ questBattleId ][ pZone->getGuId() ] = pZone;
|
||||||
m_guIdToTerritoryPtrMap[ pZone->getGuId() ] = pZone;
|
m_guIdToTerritoryPtrMap[ pZone->getGuId() ] = pZone;
|
||||||
m_instanceZoneSet.insert( 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& exdData = Common::Service< Data::ExdData >::ref();
|
||||||
|
|
||||||
auto pInstanceContent = exdData.getRow< Component::Excel::InstanceContent >( instanceContentId );
|
auto pInstanceContent = exdData.getRow< Component::Excel::InstanceContent >( instanceContentId );
|
||||||
if( !pInstanceContent )
|
if( !pInstanceContent || !isInstanceContentTerritory( pInstanceContent->data().TerritoryType ) )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
if( !isInstanceContentTerritory( pInstanceContent->data().TerritoryType ) )
|
auto& instanceContentData = pInstanceContent->data();
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
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() )
|
if( !pTeri || name.empty() )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
Logger::debug( "Starting instance for InstanceContent id: {0} ({1})", instanceContentId, name );
|
Logger::debug( "Starting instance for InstanceContent id: {0} ({1})", instanceContentId, name );
|
||||||
|
|
||||||
auto pZone = make_InstanceContent( pInstanceContent, pInstanceContent->data().TerritoryType, getNextInstanceId(),
|
auto pZone = make_InstanceContent( pInstanceContent, instanceContentData.TerritoryType, getNextInstanceId(), " ", name, instanceContentId );
|
||||||
" ", name, instanceContentId );
|
|
||||||
pZone->init();
|
pZone->init();
|
||||||
|
|
||||||
m_instanceContentIdToInstanceMap[ instanceContentId ][ pZone->getGuId() ] = pZone;
|
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& housingMgr = Common::Service< Manager::HousingMgr >::ref();
|
||||||
|
|
||||||
auto parentZone = std::dynamic_pointer_cast< HousingZone >(
|
auto parentZone = std::dynamic_pointer_cast< HousingZone >(
|
||||||
getZoneByLandSetId( housingMgr.toLandSetId( static_cast< uint16_t >( landIdent.territoryTypeId ),
|
getTerritoryByGuId( housingMgr.toLandSetId( landIdent.territoryTypeId, landIdent.wardNum ) ) );
|
||||||
static_cast< uint8_t >( landIdent.wardNum ) ) ) );
|
|
||||||
|
|
||||||
if( !parentZone )
|
if( !parentZone )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
auto land = parentZone->getLand( landIdent.landId );
|
auto land = parentZone->getLand( static_cast< uint8_t >( landIdent.landId ) );
|
||||||
if( !land )
|
if( !land )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
|
@ -451,7 +430,7 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::findOrCreateHousi
|
||||||
if( !terriInfo )
|
if( !terriInfo )
|
||||||
return nullptr;
|
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 ),
|
getNextInstanceId(), terriInfo->getString( terriInfo->data().Name ),
|
||||||
house->getHouseName() );
|
house->getHouseName() );
|
||||||
|
|
||||||
|
@ -471,7 +450,6 @@ bool Sapphire::World::Manager::TerritoryMgr::removeTerritoryInstance( uint32_t g
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
m_guIdToTerritoryPtrMap.erase( pZone->getGuId() );
|
m_guIdToTerritoryPtrMap.erase( pZone->getGuId() );
|
||||||
|
|
||||||
m_instanceZoneSet.erase( pZone );
|
m_instanceZoneSet.erase( pZone );
|
||||||
m_territorySet.erase( pZone );
|
m_territorySet.erase( pZone );
|
||||||
|
|
||||||
|
@ -495,36 +473,6 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::getTerritoryByGuI
|
||||||
return it->second;
|
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
|
Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::getZoneByTerritoryTypeId( uint32_t territoryTypeId ) const
|
||||||
{
|
{
|
||||||
auto zoneMap = m_territoryTypeIdToInstanceGuidMap.find( territoryTypeId );
|
auto zoneMap = m_territoryTypeIdToInstanceGuidMap.find( territoryTypeId );
|
||||||
|
@ -535,27 +483,18 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::getZoneByTerritor
|
||||||
return zoneMap->second.begin()->second;
|
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 )
|
void Sapphire::World::Manager::TerritoryMgr::updateTerritoryInstances( uint64_t tickCount )
|
||||||
{
|
{
|
||||||
|
|
||||||
for( auto& zone : m_territorySet )
|
for( auto& zone : m_territorySet )
|
||||||
{
|
{
|
||||||
zone->update( tickCount );
|
zone->update( tickCount );
|
||||||
}
|
}
|
||||||
|
|
||||||
for( auto& zone : m_instanceZoneSet )
|
for( auto& zone : m_instanceZoneSet )
|
||||||
{
|
{
|
||||||
zone->update( tickCount );
|
zone->update( tickCount );
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove internal house zones with nobody in them
|
// remove internal house zones with nobody in them
|
||||||
for( auto it = m_landIdentToTerritoryPtrMap.begin(); it != m_landIdentToTerritoryPtrMap.end(); )
|
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.initSpawnIdQueue();
|
||||||
|
|
||||||
player.setTerritoryTypeId( pZone->getTerritoryTypeId() );
|
player.setTerritoryTypeId( pZone->getTerritoryTypeId() );
|
||||||
|
player.setTerritoryId( pZone->getGuId() );
|
||||||
if( isHousingTerritory( pZone->getTerritoryTypeId() ) )
|
|
||||||
{
|
|
||||||
auto pHousing = std::dynamic_pointer_cast< HousingZone >( pZone );
|
|
||||||
if( pHousing )
|
|
||||||
player.setTerritoryId( pHousing->getLandSetId() );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.setTerritoryId( pZone->getGuId() );
|
|
||||||
}
|
|
||||||
|
|
||||||
bool playerLoaded = player.isLoadingComplete();
|
bool playerLoaded = player.isLoadingComplete();
|
||||||
|
|
||||||
|
@ -731,7 +660,7 @@ void Sapphire::World::Manager::TerritoryMgr::createAndJoinQuestBattle( Entity::P
|
||||||
if( !qb )
|
if( !qb )
|
||||||
return;
|
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 ) )
|
else if( isInternalEstateTerritory( zoneId ) )
|
||||||
{
|
{
|
||||||
// todo: this needs to go to the area just outside of the plot door
|
// 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();
|
zoneId = player.getPrevTerritoryTypeId();
|
||||||
auto prevPos = player.getPrevPos();
|
auto prevPos = player.getPrevPos();
|
||||||
|
@ -769,7 +698,7 @@ bool Sapphire::World::Manager::TerritoryMgr::joinWorld( Sapphire::Entity::Player
|
||||||
}
|
}
|
||||||
else if( isHousingTerritory( zoneId ) )
|
else if( isHousingTerritory( zoneId ) )
|
||||||
{
|
{
|
||||||
pCurrZone = getZoneByLandSetId( player.getTerritoryId() );
|
pCurrZone = getTerritoryByGuId( player.getTerritoryId() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -70,9 +70,6 @@ namespace Sapphire::World::Manager
|
||||||
/*! caches TerritoryType details into m_territoryTypeMap */
|
/*! caches TerritoryType details into m_territoryTypeMap */
|
||||||
void loadTerritoryTypeDetailCache();
|
void loadTerritoryTypeDetailCache();
|
||||||
|
|
||||||
/*! List of positions for zonelines */
|
|
||||||
void loadTerritoryPositionMap();
|
|
||||||
|
|
||||||
bool joinWorld( Entity::Player& player );
|
bool joinWorld( Entity::Player& player );
|
||||||
|
|
||||||
/*! returns true if the given territoryTypeId is in fact a valid zone
|
/*! 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 */
|
/*! loop for processing territory logic, iterating all existing instances */
|
||||||
void updateTerritoryInstances( uint64_t tickCount );
|
void updateTerritoryInstances( uint64_t tickCount );
|
||||||
|
|
||||||
/*! returns a ZonePositionPtr if found, else nullptr */
|
|
||||||
ZonePositionPtr getTerritoryPosition( uint32_t territoryPositionId ) const;
|
|
||||||
|
|
||||||
/*! returns a default Zone by territoryTypeId
|
/*! returns a default Zone by territoryTypeId
|
||||||
TODO: Mind multiple instances?! */
|
TODO: Mind multiple instances?! */
|
||||||
TerritoryPtr getZoneByTerritoryTypeId( uint32_t territoryTypeId ) const;
|
TerritoryPtr getZoneByTerritoryTypeId( uint32_t territoryTypeId ) const;
|
||||||
|
|
||||||
/*! returns a Zone by landSetId */
|
|
||||||
TerritoryPtr getZoneByLandSetId( uint32_t landSetId ) const;
|
|
||||||
|
|
||||||
bool movePlayer( const TerritoryPtr&, Entity::Player& player );
|
bool movePlayer( const TerritoryPtr&, Entity::Player& player );
|
||||||
|
|
||||||
/*! returns an instancePtr if the player is still bound to an isntance */
|
/*! returns an instancePtr if the player is still bound to an isntance */
|
||||||
|
@ -164,13 +155,11 @@ namespace Sapphire::World::Manager
|
||||||
private:
|
private:
|
||||||
using TerritoryTypeDetailCache = std::unordered_map< uint16_t, std::shared_ptr< Component::Excel::ExcelStruct< Component::Excel::TerritoryType > > >;
|
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 InstanceIdToTerritoryPtrMap = std::unordered_map< uint32_t, TerritoryPtr >;
|
||||||
using LandSetIdToTerritoryPtrMap = std::unordered_map< uint32_t, TerritoryPtr >;
|
|
||||||
using TerritoryTypeIdToInstanceMap = std::unordered_map< uint16_t, InstanceIdToTerritoryPtrMap >;
|
using TerritoryTypeIdToInstanceMap = std::unordered_map< uint16_t, InstanceIdToTerritoryPtrMap >;
|
||||||
using InstanceContentIdToInstanceMap = std::unordered_map< uint16_t, InstanceIdToTerritoryPtrMap >;
|
using InstanceContentIdToInstanceMap = std::unordered_map< uint16_t, InstanceIdToTerritoryPtrMap >;
|
||||||
using QuestBattleIdToInstanceMap = std::unordered_map< uint16_t, InstanceIdToTerritoryPtrMap >;
|
using QuestBattleIdToInstanceMap = std::unordered_map< uint16_t, InstanceIdToTerritoryPtrMap >;
|
||||||
using QuestBattleIdToContentFinderCondMap = std::unordered_map< uint16_t, uint16_t >;
|
using QuestBattleIdToContentFinderCondMap = std::unordered_map< uint16_t, uint16_t >;
|
||||||
using PlayerIdToInstanceIdMap = std::unordered_map< uint32_t, uint32_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 InstanceIdList = std::vector< uint32_t >;
|
||||||
using LandIdentToTerritoryPtrMap = std::unordered_map< uint64_t, TerritoryPtr >;
|
using LandIdentToTerritoryPtrMap = std::unordered_map< uint64_t, TerritoryPtr >;
|
||||||
|
|
||||||
|
@ -180,9 +169,6 @@ namespace Sapphire::World::Manager
|
||||||
/*! map holding actual instances of default territories */
|
/*! map holding actual instances of default territories */
|
||||||
TerritoryTypeIdToInstanceMap m_territoryTypeIdToInstanceGuidMap;
|
TerritoryTypeIdToInstanceMap m_territoryTypeIdToInstanceGuidMap;
|
||||||
|
|
||||||
/*! map holding actual instances of default territories */
|
|
||||||
LandSetIdToTerritoryPtrMap m_landSetIdToTerritoryPtrMap;
|
|
||||||
|
|
||||||
/*! map holding actual instances of InstanceContent */
|
/*! map holding actual instances of InstanceContent */
|
||||||
InstanceContentIdToInstanceMap m_instanceContentIdToInstanceMap;
|
InstanceContentIdToInstanceMap m_instanceContentIdToInstanceMap;
|
||||||
|
|
||||||
|
@ -192,9 +178,6 @@ namespace Sapphire::World::Manager
|
||||||
/*! flat map for easier lookup of instances by guid */
|
/*! flat map for easier lookup of instances by guid */
|
||||||
InstanceIdToTerritoryPtrMap m_guIdToTerritoryPtrMap;
|
InstanceIdToTerritoryPtrMap m_guIdToTerritoryPtrMap;
|
||||||
|
|
||||||
/*! map holding positions for zonelines */
|
|
||||||
PositionMap m_territoryPositionMap;
|
|
||||||
|
|
||||||
/*! map storing playerIds to instanceIds, used for instanceContent */
|
/*! map storing playerIds to instanceIds, used for instanceContent */
|
||||||
PlayerIdToInstanceIdMap m_playerIdToInstanceMap;
|
PlayerIdToInstanceIdMap m_playerIdToInstanceMap;
|
||||||
|
|
||||||
|
|
|
@ -481,7 +481,7 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::
|
||||||
m_pSession = session;
|
m_pSession = session;
|
||||||
|
|
||||||
auto pe = std::make_shared< FFXIVRawPacket >( 0x07, 0x18, 0, 0 );
|
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();
|
*reinterpret_cast< unsigned int* >( &pe->data()[ 4 ] ) = Common::Util::getTimeSeconds();
|
||||||
sendSinglePacket( pe );
|
sendSinglePacket( pe );
|
||||||
|
|
||||||
|
@ -490,6 +490,11 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::
|
||||||
{
|
{
|
||||||
auto pe1 = std::make_shared< FFXIVRawPacket >( 0x02, 0x38, 0, 0 );
|
auto pe1 = std::make_shared< FFXIVRawPacket >( 0x02, 0x38, 0, 0 );
|
||||||
*reinterpret_cast< unsigned int* >( &pe1->data()[ 0 ] ) = entityId;
|
*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 );
|
sendSinglePacket( pe1 );
|
||||||
Logger::info( "[{0}] Setting session for world connection", id );
|
Logger::info( "[{0}] Setting session for world connection", id );
|
||||||
session->setZoneConnection( pCon );
|
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 );
|
auto pe4 = std::make_shared< FFXIVRawPacket >( 0x08, 0x18, 0, 0 );
|
||||||
*reinterpret_cast< unsigned int* >( &pe4->data()[ 0 ] ) = id;
|
*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 );
|
sendSinglePacket( pe4 );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -86,6 +86,7 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR
|
||||||
|
|
||||||
auto& server = Common::Service< World::WorldServer >::ref();
|
auto& server = Common::Service< World::WorldServer >::ref();
|
||||||
auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref();
|
auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref();
|
||||||
|
auto& exdData = Common::Service< Data::ExdData >::ref();
|
||||||
|
|
||||||
const auto packet = ZoneChannelPacket< FFXIVIpcGmCommand >( inPacket );
|
const auto packet = ZoneChannelPacket< FFXIVIpcGmCommand >( inPacket );
|
||||||
const auto commandId = packet.data().Id;
|
const auto commandId = packet.data().Id;
|
||||||
|
@ -193,9 +194,9 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR
|
||||||
case GmCommand::Call:
|
case GmCommand::Call:
|
||||||
{
|
{
|
||||||
if( targetPlayer->getTerritoryTypeId() != player.getTerritoryTypeId() )
|
if( targetPlayer->getTerritoryTypeId() != player.getTerritoryTypeId() )
|
||||||
targetPlayer->setZone( player.getTerritoryTypeId() );
|
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() );
|
targetPlayer->changePosition( player.getPos().x, player.getPos().y, player.getPos().z, player.getRot() );
|
||||||
PlayerMgr::sendServerNotice( player, "Calling {0}", targetPlayer->getName() );
|
PlayerMgr::sendServerNotice( player, "Calling {0}", targetPlayer->getName() );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -485,7 +486,7 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.setInstance( instance );
|
player.setInstance( instance, { 0, 0, 0 } );
|
||||||
}
|
}
|
||||||
else if( !teriMgr.isValidTerritory( param1 ) )
|
else if( !teriMgr.isValidTerritory( param1 ) )
|
||||||
{
|
{
|
||||||
|
@ -508,8 +509,6 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR
|
||||||
|
|
||||||
bool doTeleport = false;
|
bool doTeleport = false;
|
||||||
uint16_t teleport;
|
uint16_t teleport;
|
||||||
|
|
||||||
auto& exdData = Common::Service< Data::ExdData >::ref();
|
|
||||||
auto idList = exdData.getIdList< Component::Excel::Aetheryte >();
|
auto idList = exdData.getIdList< Component::Excel::Aetheryte >();
|
||||||
|
|
||||||
for( auto i : idList )
|
for( auto i : idList )
|
||||||
|
@ -517,19 +516,15 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR
|
||||||
auto data = exdData.getRow< Component::Excel::Aetheryte >( i );
|
auto data = exdData.getRow< Component::Excel::Aetheryte >( i );
|
||||||
|
|
||||||
if( !data )
|
if( !data )
|
||||||
{
|
|
||||||
continue;
|
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 )
|
if( doTeleport )
|
||||||
{
|
{
|
||||||
|
@ -646,7 +641,7 @@ void Sapphire::Network::GameConnection::gmCommandNameHandler( const Packets::FFX
|
||||||
targetPlayer->resetHp();
|
targetPlayer->resetHp();
|
||||||
targetPlayer->resetMp();
|
targetPlayer->resetMp();
|
||||||
targetPlayer->setStatus( Common::ActorStatus::Idle );
|
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 );
|
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:
|
case GmCommand::Jump:
|
||||||
{
|
{
|
||||||
player.prepareZoning( targetPlayer->getTerritoryTypeId(), true, 1, 0 );
|
|
||||||
if( pPlayerTerri->getAsInstanceContent() )
|
|
||||||
{
|
|
||||||
player.exitInstance();
|
|
||||||
}
|
|
||||||
if( targetPlayer->getTerritoryId() != player.getTerritoryId() )
|
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
|
// Checks if the target player is in an InstanceContent to avoid binding to a Territory or PublicContent
|
||||||
auto pInstanceContent = pTargetActorTerri->getAsInstanceContent();
|
auto pInstanceContent = pTargetActorTerri->getAsInstanceContent();
|
||||||
if( pInstanceContent )
|
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
|
// 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() );
|
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() );
|
else
|
||||||
player.sendZoneInPackets( 0x00, 0x00, 0, 0, false );
|
{
|
||||||
|
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() );
|
PlayerMgr::sendServerNotice( player, "Jumping to {0}", targetPlayer->getName() );
|
||||||
break;
|
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." );
|
PlayerMgr::sendUrgent( player, "You are unable to call a player while bound to a battle instance." );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
targetPlayer->prepareZoning( player.getTerritoryTypeId(), true, 1, 0 );
|
|
||||||
if( pTargetActorTerri->getAsInstanceContent() )
|
|
||||||
{
|
|
||||||
targetPlayer->exitInstance();
|
|
||||||
}
|
|
||||||
if( targetPlayer->getTerritoryId() != player.getTerritoryId() )
|
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() );
|
else
|
||||||
targetPlayer->sendZoneInPackets( 0x00, 0x00, 0, 0, false );
|
{
|
||||||
|
targetPlayer->changePosition( player.getPos().x, player.getPos().y, player.getPos().z, player.getRot() );
|
||||||
|
targetPlayer->sendZoneInPackets( 0x00, false );
|
||||||
|
}
|
||||||
|
|
||||||
PlayerMgr::sendServerNotice( player, "Calling {0}", targetPlayer->getName() );
|
PlayerMgr::sendServerNotice( player, "Calling {0}", targetPlayer->getName() );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "Network/PacketWrappers/PlayerSetupPacket.h"
|
#include "Network/PacketWrappers/PlayerSetupPacket.h"
|
||||||
|
|
||||||
#include "Manager/HousingMgr.h"
|
#include "Manager/HousingMgr.h"
|
||||||
|
#include "Manager/TerritoryMgr.h"
|
||||||
|
|
||||||
#include "Action/Action.h"
|
#include "Action/Action.h"
|
||||||
|
|
||||||
|
@ -41,14 +42,17 @@ void Sapphire::Network::GameConnection::landRenameHandler( const Packets::FFXIVA
|
||||||
const auto packet = ZoneChannelPacket< Client::FFXIVIpcHousingHouseName >( inPacket );
|
const auto packet = ZoneChannelPacket< Client::FFXIVIpcHousingHouseName >( inPacket );
|
||||||
|
|
||||||
auto& housingMgr = Common::Service< HousingMgr >::ref();
|
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 );
|
auto pTeri = teriMgr.getTerritoryByGuId( landSetId );
|
||||||
if( !pZone )
|
auto hZone = std::dynamic_pointer_cast< HousingZone >( pTeri );
|
||||||
|
|
||||||
|
if( !hZone )
|
||||||
return;
|
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 )
|
if( !pLand )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -237,10 +237,10 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_
|
||||||
{
|
{
|
||||||
case ResurrectType::RaiseSpell:
|
case ResurrectType::RaiseSpell:
|
||||||
// todo: handle raise case (set position to raiser, apply weakness status, set hp/mp/tp as well as packet)
|
// 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;
|
break;
|
||||||
case ResurrectType::Return:
|
case ResurrectType::Return:
|
||||||
player.returnToHomepoint();
|
player.teleport( player.getHomepoint(), 3 );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
#include "Territory/Territory.h"
|
#include "Territory/Territory.h"
|
||||||
#include "Territory/HousingZone.h"
|
#include "Territory/HousingZone.h"
|
||||||
#include "Territory/Land.h"
|
#include "Territory/Land.h"
|
||||||
#include "Territory/ZonePosition.h"
|
|
||||||
#include "Territory/House.h"
|
#include "Territory/House.h"
|
||||||
#include "Territory/InstanceObjectCache.h"
|
#include "Territory/InstanceObjectCache.h"
|
||||||
|
|
||||||
|
@ -165,7 +164,7 @@ void Sapphire::Network::GameConnection::joinChatChannelHandler( const Packets::F
|
||||||
if( !chatChannelMgr.isChannelValid( joinChannelPacket.data().ChannelID ) )
|
if( !chatChannelMgr.isChannelValid( joinChannelPacket.data().ChannelID ) )
|
||||||
return Logger::warn( "Failed to join chat channel - Invalid chat channel specified!" );
|
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() );
|
auto chatChannelResultPacket = makeZonePacket< FFXIVIpcChatChannelResult >( player.getId() );
|
||||||
|
|
||||||
|
@ -340,7 +339,8 @@ void Sapphire::Network::GameConnection::zoneJumpHandler( const Packets::FFXIVARR
|
||||||
pPopRange->header.transform.rotation.z,
|
pPopRange->header.transform.rotation.z,
|
||||||
rotation );
|
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() );
|
auto moveTerritoryPacket = makeZonePacket< FFXIVIpcMoveTerritory >( player.getId() );
|
||||||
moveTerritoryPacket->data().index = -1;
|
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 )
|
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();
|
auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref();
|
||||||
// init handler means this is a login procedure
|
// init handler means this is a login procedure
|
||||||
player.setIsLogin( true );
|
player.setIsLogin( true );
|
||||||
|
|
|
@ -61,7 +61,7 @@ namespace Sapphire::Network::Packets::WorldPackets::Server
|
||||||
m_data.MainTarget = bnpc.getTargetId();
|
m_data.MainTarget = bnpc.getTargetId();
|
||||||
// no idea ... m_data.spawnerId = Common::INVALID_GAME_OBJECT_ID64;
|
// no idea ... m_data.spawnerId = Common::INVALID_GAME_OBJECT_ID64;
|
||||||
m_data.ParentId = Common::INVALID_GAME_OBJECT_ID;
|
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.ChannelingTarget = Common::INVALID_GAME_OBJECT_ID;
|
||||||
m_data.OwnerId = Common::INVALID_GAME_OBJECT_ID;
|
m_data.OwnerId = Common::INVALID_GAME_OBJECT_ID;
|
||||||
|
|
||||||
|
|
|
@ -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 )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 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,
|
virtual void onEventHandlerTradeReturn( Sapphire::Entity::Player& player, uint32_t eventId, uint16_t subEvent, uint16_t param,
|
||||||
uint32_t catalogId );
|
uint32_t catalogId );
|
||||||
|
|
|
@ -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 )
|
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 );
|
const auto eventType = static_cast< uint16_t >( eventId >> 16 );
|
||||||
if( !script )
|
auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref();
|
||||||
return false;
|
|
||||||
script->onWithinRange( player, eventId, param1, x, y, z );
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Sapphire::Scripting::ScriptMgr::onOutsideRange( Entity::Player& player, uint32_t eventId, uint32_t param1, float x, float y, float z )
|
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 );
|
const auto eventType = static_cast< uint16_t >( eventId >> 16 );
|
||||||
if( !script )
|
auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref();
|
||||||
return false;
|
|
||||||
script->onOutsideRange( player, eventId, param1, x, y, z );
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -295,7 +339,10 @@ bool Sapphire::Scripting::ScriptMgr::onEmote( Entity::Player& player, uint64_t a
|
||||||
{
|
{
|
||||||
auto idx = player.getQuestIndex( eventId );
|
auto idx = player.getQuestIndex( eventId );
|
||||||
auto& quest = player.getQuestByIndex( idx );
|
auto& quest = player.getQuestByIndex( idx );
|
||||||
|
World::Quest preQ = quest;
|
||||||
script->onEmote( quest, actor, emoteId, player );
|
script->onEmote( quest, actor, emoteId, player );
|
||||||
|
if( quest != preQ )
|
||||||
|
player.updateQuest( quest );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
20
src/world/Task/Task.cpp
Normal file
20
src/world/Task/Task.cpp
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#include <cstdint>
|
||||||
|
#include <Util/Util.h>
|
||||||
|
#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;
|
||||||
|
}
|
27
src/world/Task/Task.h
Normal file
27
src/world/Task/Task.h
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <string>
|
||||||
|
#include <ForwardsZone.h>
|
||||||
|
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue