100 lines
2.4 KiB
C++
100 lines
2.4 KiB
C++
#pragma once
|
|
|
|
#include "attrdefine.h"
|
|
#include "weakptr.h"
|
|
|
|
class Room;
|
|
class Human;
|
|
class Ability
|
|
{
|
|
public:
|
|
CreatureWeakPtr owner;
|
|
|
|
void Clear();
|
|
float GetAttrAbs(int attr_id);
|
|
float GetAttrRate(int attr_id);
|
|
float GetBuffAttrAbs(int attr_id);
|
|
float GetBuffAttrRate(int attr_id);
|
|
float* GetBuffAttrAbsPtr(int attr_id);
|
|
float* GetBuffAttrRatePtr(int attr_id);
|
|
void AddSpeedAddition(float rate);
|
|
void DelSpeedAddition(float rate);
|
|
float GetSpeedAddition();
|
|
int GetSpeedAdditionTimes();
|
|
|
|
void AddSpeedRuduce(float rate);
|
|
void DelSpeedRuduce(float rate);
|
|
float GetSpeedRuduce();
|
|
int GetSpeedRuduceTimes();
|
|
|
|
void AddDmgRuduce(float rate);
|
|
void DelDmgRuduce(float rate);
|
|
float GetDmgRuduce();
|
|
int GetDmgRuduceTimes();
|
|
|
|
void AddDmgAddition(float rate);
|
|
void DelDmgAddition(float rate);
|
|
float GetDmgAddition();
|
|
int GetDmgAdditionTimes();
|
|
void AddDefAddition(float rate);
|
|
void DelDefAddition(float rate);
|
|
float GetDefAddition();
|
|
int GetDefAdditionTimes();
|
|
|
|
void AddAtkAddition(float rate);
|
|
void DelAtkAddition(float rate);
|
|
float GetAtkAddition();
|
|
int GetAtkAdditionTimes();
|
|
|
|
void IncImmuneTimes(int tag);
|
|
void DecImmuneTimes(int tag);
|
|
bool CanImmune(int tag);
|
|
bool CanImmune(const std::set<int>& tags);
|
|
|
|
void IncDisableShotTimes();
|
|
void DecDisableShotTimes();
|
|
int GetDisableShotTimes();
|
|
|
|
void IncDisableUseSkillTimes();
|
|
void DecDisableUseSkillTimes();
|
|
int GetDisableUseSkillTimes();
|
|
|
|
void SetFixedSpeed(float speed);
|
|
void UnSetFixedSpeed();
|
|
int GetFixedSpeedTimes();
|
|
float GetFixedSped();
|
|
|
|
private:
|
|
std::array<float, kHAT_End> buff_attr_abs_ = {};
|
|
std::array<float, kHAT_End> buff_attr_rate_ = {};
|
|
std::array<int, kHAT_End> buff_attr_flag_ = {};
|
|
|
|
int speed_addition_times_ = 0;
|
|
float speed_addition_rate_ = 0;
|
|
|
|
int speed_ruduce_times_ = 0;
|
|
float speed_ruduce_rate_ = 0;
|
|
|
|
int dmg_ruduce_times_ = 0;
|
|
float dmg_ruduce_rate_ = 0;
|
|
|
|
int dmg_addition_times_ = 0;
|
|
float dmg_addition_rate_ = 0;
|
|
|
|
int def_addition_times_ = 0;
|
|
float def_addition_rate_ = 0;
|
|
|
|
int atk_addition_times_ = 0;
|
|
float atk_addition_rate_ = 0;
|
|
|
|
int disable_shot_times_ = 0;
|
|
int disable_useskill_times_ = 0;
|
|
|
|
std::map<int, int> immune_tags_;
|
|
|
|
int fixed_speed_times_ = 0.0f;
|
|
float fixed_speed_ = 0.0f;
|
|
|
|
friend class PBUtils;
|
|
};
|