Files
2022-10-26 12:25:11 +08:00

44 lines
1.4 KiB
C++

#pragma once
#ifndef GAMESERVER_INTENSIFY_SUMMON_H
#define GAMESERVER_INTENSIFY_SUMMON_H
#include <functional>
#include "AbilityStatus.h"
#include "SummonManager.h"
#include "SkillAttrCalculator.h"
//==================================================================================================
class NPC;
// ¼Òȯ¼ö °­È­
class IntensifySummon : public AbilityStatus
{
public:
struct ChangeSummonAttr;
//
IntensifySummon();
virtual ~IntensifySummon();
//
virtual void Start();
virtual void Execute();
virtual void End();
// CHANGES: f110622.4L, when the Adrenaline status is activating, it is just fail
// to call the ApplyAdrenaline in InitSummoned
// because at that point in time, the summoned can't find in its list.
// the below method support attributes application for the each summoned
// in the same reason as above.
// the release attributes operation is invoked by this object::End()
void ApplyAttributes(NPC* const summoned);
private:
void ApplyAtrributesForAllSummoned(bool applied);
// data fields...
// NOTE: f110808.5L, the start and end timestamp of the adrenaline status have
// mismatched summoner attributes. this data structure is used to complete stacked option changes.
nsSkill::AdrenalineConfiguration applied_data_;
//
__DISABLE_COPY(IntensifySummon);
};
#endif //GAMESERVER_INTENSIFY_SUMMON_H