mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-12-16 13:08:31 +00:00
Public release of the DLU server code!
Have fun!
This commit is contained in:
157
dScripts/NjMonastryBossInstance.h
Normal file
157
dScripts/NjMonastryBossInstance.h
Normal file
@@ -0,0 +1,157 @@
|
||||
#pragma once
|
||||
#include "ActivityManager.h"
|
||||
|
||||
enum FrakjawEnemies {
|
||||
BoneWolf = 16191,
|
||||
BlackSmith = 14007,
|
||||
Marksman = 14008,
|
||||
Commando = 14009,
|
||||
MadScientist = 16511
|
||||
};
|
||||
|
||||
enum FrakjawLots : LOT {
|
||||
ChestLOT = 16486,
|
||||
LedgedFrakjawLOT = 16289,
|
||||
LowerFrakjawLOT = 16048,
|
||||
CounterWeightLOT = 16141
|
||||
};
|
||||
|
||||
struct FrakjawWaveEnemy {
|
||||
LOT lot;
|
||||
uint32_t largeNumber;
|
||||
uint32_t smallNumber;
|
||||
};
|
||||
|
||||
class NjMonastryBossInstance : public ActivityManager {
|
||||
public:
|
||||
void OnStartup(Entity* self) override;
|
||||
void OnPlayerLoaded(Entity* self, Entity* player) override;
|
||||
void OnPlayerExit(Entity* self, Entity* player) override;
|
||||
void OnActivityTimerDone(Entity *self, const std::string &name) override;
|
||||
private:
|
||||
void StartFight(Entity* self);
|
||||
void WaveOver(Entity* self);
|
||||
void FightOver(Entity* self);
|
||||
void SummonWave(Entity* self, Entity* frakjaw);
|
||||
void LowerFrakjaw(Entity* self, Entity* frakjaw);
|
||||
void LowerFrakjawSummon(Entity* self, Entity* frakjaw);
|
||||
void RemovePoison(Entity* self);
|
||||
static void SpawnOnNetwork(Entity* self, const LOT& toSpawn, const uint32_t& numberToSpawn, const std::string& spawnerName);
|
||||
static void TeleportPlayer(Entity* player, uint32_t position);
|
||||
|
||||
// Event handlers for anything spawned by the main spawner
|
||||
void HandleLedgedFrakjawSpawned(Entity* self, Entity* ledgedFrakjaw);
|
||||
void HandleCounterWeightSpawned(Entity* self, Entity* counterWeight);
|
||||
void HandleLowerFrakjawSpawned(Entity* self, Entity* lowerFrakjaw);
|
||||
void HandleWaveEnemySpawned(Entity* self, Entity* waveEnemy);
|
||||
void HandleWaveEnemyDied(Entity* self, Entity* waveEnemy);
|
||||
void HandleLowerFrakjawHit(Entity* self, Entity* lowerFrakjaw, Entity* attacker);
|
||||
void HandleLowerFrakjawDied(Entity* self, Entity* lowerFrakjaw);
|
||||
|
||||
const std::vector<std::vector<FrakjawWaveEnemy>> m_Waves = {
|
||||
// Wave 1
|
||||
{
|
||||
{ FrakjawEnemies::Marksman, 2, 1},
|
||||
{ FrakjawEnemies::BlackSmith, 4, 3},
|
||||
{ FrakjawEnemies::Commando, 2, 1},
|
||||
{ FrakjawEnemies::MadScientist, 1, 0},
|
||||
},
|
||||
|
||||
// Wave 2
|
||||
{
|
||||
{ FrakjawEnemies::BoneWolf, 1, 0},
|
||||
{ FrakjawEnemies::BlackSmith, 2, 2},
|
||||
{ FrakjawEnemies::Marksman, 2, 1},
|
||||
{ FrakjawEnemies::MadScientist, 1, 1},
|
||||
},
|
||||
|
||||
// Wave 3
|
||||
{
|
||||
{ FrakjawEnemies::BoneWolf, 2, 1},
|
||||
{ FrakjawEnemies::Marksman, 2, 1},
|
||||
{ FrakjawEnemies::Commando, 2, 2},
|
||||
{ FrakjawEnemies::MadScientist, 1, 0},
|
||||
},
|
||||
|
||||
// Wave 4
|
||||
{
|
||||
{ FrakjawEnemies::BlackSmith, 2, 2},
|
||||
{ FrakjawEnemies::BoneWolf, 1, 1},
|
||||
{ FrakjawEnemies::Commando, 3, 1},
|
||||
{ FrakjawEnemies::Marksman, 2, 0},
|
||||
},
|
||||
|
||||
// Wave 5
|
||||
{
|
||||
{ FrakjawEnemies::MadScientist, 1, 0},
|
||||
{ FrakjawEnemies::BoneWolf, 2, 0},
|
||||
{ FrakjawEnemies::Commando, 3, 0},
|
||||
{ FrakjawEnemies::Marksman, 2, 0},
|
||||
}
|
||||
};
|
||||
|
||||
const int32_t PoisonBuff = 60;
|
||||
|
||||
// Variables
|
||||
const std::u16string TotalPlayersLoadedVariable = u"TotalPlayersLoaded";
|
||||
const std::u16string LargeTeamVariable = u"LargeTeam";
|
||||
const std::u16string FightStartedVariable = u"FightStarted";
|
||||
const std::u16string LedgeFrakjawVariable = u"LedgeFrakjaw";
|
||||
const std::u16string LowerFrakjawVariable = u"LowerFrakjaw";
|
||||
const std::u16string WaveNumberVariable = u"WaveNumber";
|
||||
const std::u16string OnLastWaveVarbiale = u"OnLastWave";
|
||||
const std::u16string TrashMobsAliveVariable = u"TrashMobsAlive";
|
||||
const std::u16string TotalAliveInWaveVariable = u"TotalAliveInWave";
|
||||
|
||||
// Timers
|
||||
const char TimerSplitChar = '+';
|
||||
const std::string WaitingForPlayersTimer = "WaitingForPlayers";
|
||||
const std::string SpawnWaveTimer = "SpawnWave";
|
||||
const std::string SpawnNextWaveTimer = "SpawnNextWave";
|
||||
const std::string UnstunTimer = "Unstun+";
|
||||
const std::string FrakjawSpawnInTimer = "LowerFrakjawSpawnIn+";
|
||||
const std::string WaveOverTimer = "WaveOverTimer";
|
||||
const std::string FightOverTimer = "FightOver";
|
||||
const std::string LowerFrakjawCamTimer = "StartLowerFrakjawCam";
|
||||
const std::string SpawnCounterWeightTimer = "SpawnQB";
|
||||
const std::string SpawnRailTimer = "SpawnRailQB";
|
||||
const std::string SpawnLowerFrakjawTimer = "SpawnLowerFrakjaw";
|
||||
|
||||
// Groups
|
||||
const std::string ChestSpawnpointGroup = "ChestSpawnPoint";
|
||||
|
||||
// Spawner network names
|
||||
const std::string LedgeFrakjawSpawner = "LedgeFrakjaw";
|
||||
const std::string LowerFrakjawSpawner = "LowerFrakjaw";
|
||||
const std::string BaseEnemiesSpawner = "EnemySpawnPoints_";
|
||||
const std::string CounterweightSpawner = "Counterweights";
|
||||
const std::string FireRailSpawner = "FireRailActivatorQB";
|
||||
const std::string ExtraRocks = "ExtraRocks";
|
||||
|
||||
// Cinematics
|
||||
const std::string LedgeFrakSummon = "FrakjawSummoning";
|
||||
const std::string BaseCounterweightQB = "CounterweightQB";
|
||||
const std::string BaseCounterweightSpawn = "CWQBSpawn";
|
||||
const std::string BottomFrakSummon = "BottomFrakjawSummoning";
|
||||
const std::string BottomFrakSpawn = "BottomFrakjawSpawning";
|
||||
const std::string TreasureChestSpawning = "TreasureChestSpawning";
|
||||
const std::string FireRailSpawn = "RailQBSpawn";
|
||||
|
||||
// Notifications
|
||||
const std::u16string StopMusicNotification = u"StopMusic";
|
||||
const std::u16string StartMusicNotification = u"StartMusic";
|
||||
const std::u16string FlashMusicNotification = u"FlashMusic";
|
||||
const std::u16string PlayCinematicNotification = u"PlayCinematic";
|
||||
const std::u16string EndCinematicNotification = u"EndCinematic";
|
||||
|
||||
// Animations
|
||||
const std::u16string SummonAnimation = u"summon";
|
||||
const std::u16string TeleportOutAnimation = u"teleport-out";
|
||||
const std::u16string TeleportInAnimation = u"teleport-in";
|
||||
const std::u16string StunnedAnimation = u"stunned";
|
||||
|
||||
// Audio cues
|
||||
const std::string AudioWaveAudio = "Monastery_Frakjaw_Battle_";
|
||||
const std::string BattleOverAudio = "Monastery_Frakjaw_Battle_Win";
|
||||
const std::string CounterSmashAudio = "{d76d7b9d-9dc2-4e52-a315-69b25ef521ca}";
|
||||
};
|
||||
Reference in New Issue
Block a user