1
This commit is contained in:
parent
f9b538bea6
commit
f86482d2eb
@ -321,3 +321,35 @@ int Ability::GetSpeedRuduceTimes()
|
|||||||
{
|
{
|
||||||
return speed_ruduce_times_;
|
return speed_ruduce_times_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Ability::IncDisableShotTimes()
|
||||||
|
{
|
||||||
|
++disable_shot_times_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Ability::DecDisableShotTimes()
|
||||||
|
{
|
||||||
|
--disable_shot_times_;
|
||||||
|
disable_shot_times_ = std::max(0, disable_shot_times_);
|
||||||
|
}
|
||||||
|
|
||||||
|
int Ability::GetDisableShotTimes()
|
||||||
|
{
|
||||||
|
return disable_shot_times_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Ability::IncDisableUseSkillTimes()
|
||||||
|
{
|
||||||
|
++disable_useskill_times_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Ability::DecDisableUseSkillTimes()
|
||||||
|
{
|
||||||
|
--disable_useskill_times_;
|
||||||
|
disable_useskill_times_ = std::max(0, disable_useskill_times_);
|
||||||
|
}
|
||||||
|
|
||||||
|
int Ability::GetDisableUseSkillTimes()
|
||||||
|
{
|
||||||
|
return disable_useskill_times_;
|
||||||
|
}
|
||||||
|
@ -53,6 +53,14 @@ class Ability
|
|||||||
bool CanImmune(int tag);
|
bool CanImmune(int tag);
|
||||||
bool CanImmune(const std::set<int>& tags);
|
bool CanImmune(const std::set<int>& tags);
|
||||||
|
|
||||||
|
void IncDisableShotTimes();
|
||||||
|
void DecDisableShotTimes();
|
||||||
|
int GetDisableShotTimes();
|
||||||
|
|
||||||
|
void IncDisableUseSkillTimes();
|
||||||
|
void DecDisableUseSkillTimes();
|
||||||
|
int GetDisableUseSkillTimes();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::array<float, kHAT_End> buff_attr_abs_ = {};
|
std::array<float, kHAT_End> buff_attr_abs_ = {};
|
||||||
std::array<float, kHAT_End> buff_attr_rate_ = {};
|
std::array<float, kHAT_End> buff_attr_rate_ = {};
|
||||||
@ -76,6 +84,9 @@ class Ability
|
|||||||
int atk_addition_times_ = 0;
|
int atk_addition_times_ = 0;
|
||||||
float atk_addition_rate_ = 0;
|
float atk_addition_rate_ = 0;
|
||||||
|
|
||||||
|
int disable_shot_times_ = 0;
|
||||||
|
int disable_useskill_times_ = 0;
|
||||||
|
|
||||||
std::map<int, int> immune_tags_;
|
std::map<int, int> immune_tags_;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -192,6 +192,15 @@ int Creature::AddBuff(Creature* caster,
|
|||||||
if (buff->meta->i->lock_move()) {
|
if (buff->meta->i->lock_move()) {
|
||||||
IncDisableMoveTimes();
|
IncDisableMoveTimes();
|
||||||
}
|
}
|
||||||
|
if (buff->meta->i->lock_dir()) {
|
||||||
|
IncDisableAttackDirTimes();
|
||||||
|
}
|
||||||
|
if (buff->meta->i->disable_shot()) {
|
||||||
|
GetAbility()->IncDisableShotTimes();
|
||||||
|
}
|
||||||
|
if (buff->meta->i->disable_useskill()) {
|
||||||
|
GetAbility()->IncDisableUseSkillTimes();
|
||||||
|
}
|
||||||
list_add_tail(&buff->effect_entry, &buff_effect_[buff->meta->i->buff_effect()]);
|
list_add_tail(&buff->effect_entry, &buff_effect_[buff->meta->i->buff_effect()]);
|
||||||
if (buff->meta->i->depend_effect() != 0 &&
|
if (buff->meta->i->depend_effect() != 0 &&
|
||||||
IsValidBuffEffect(buff->meta->i->depend_effect())) {
|
IsValidBuffEffect(buff->meta->i->depend_effect())) {
|
||||||
@ -563,6 +572,15 @@ void Creature::OnBuffRemove(Buff& buff)
|
|||||||
if (buff.meta->i->lock_move()) {
|
if (buff.meta->i->lock_move()) {
|
||||||
DecDisableMoveTimes();
|
DecDisableMoveTimes();
|
||||||
}
|
}
|
||||||
|
if (buff.meta->i->lock_dir()) {
|
||||||
|
DecDisableAttackDirTimes();
|
||||||
|
}
|
||||||
|
if (buff.meta->i->disable_shot()) {
|
||||||
|
GetAbility()->DecDisableShotTimes();
|
||||||
|
}
|
||||||
|
if (buff.meta->i->disable_useskill()) {
|
||||||
|
GetAbility()->DecDisableUseSkillTimes();
|
||||||
|
}
|
||||||
#if 999
|
#if 999
|
||||||
if (buff.meta->i->buff_id() == 8042) {
|
if (buff.meta->i->buff_id() == 8042) {
|
||||||
if (GetAbility()->GetSpeedRuduceTimes() > 0) {
|
if (GetAbility()->GetSpeedRuduceTimes() > 0) {
|
||||||
@ -793,6 +811,9 @@ bool Creature::CanUseSkill(int skill_id)
|
|||||||
if (!skill) {
|
if (!skill) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (GetAbility()->GetDisableUseSkillTimes() > 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (room->GetGasData().GetGasMode() == GasInactive &&
|
if (room->GetGasData().GetGasMode() == GasInactive &&
|
||||||
!MetaMgr::Instance()->prebattle_can_use_skill) {
|
!MetaMgr::Instance()->prebattle_can_use_skill) {
|
||||||
return false;
|
return false;
|
||||||
@ -1819,6 +1840,10 @@ void Creature::Shot(a8::Vec2& target_dir, bool& shot_ok, float fly_distance, int
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (GetAbility()->GetDisableShotTimes() > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (GetCurrWeapon()->weapon_idx != 0 &&
|
if (GetCurrWeapon()->weapon_idx != 0 &&
|
||||||
GetCurrWeapon()->ammo <= 0) {
|
GetCurrWeapon()->ammo <= 0) {
|
||||||
CheckLoadingBullet();
|
CheckLoadingBullet();
|
||||||
|
@ -375,6 +375,9 @@ message Buff
|
|||||||
optional int32 dead_remove = 29;
|
optional int32 dead_remove = 29;
|
||||||
optional int32 no_immune = 30;
|
optional int32 no_immune = 30;
|
||||||
optional int32 lock_move = 31;
|
optional int32 lock_move = 31;
|
||||||
|
optional int32 lock_dir = 34;
|
||||||
|
optional int32 disable_shot = 32;
|
||||||
|
optional int32 disable_useskill = 33;
|
||||||
}
|
}
|
||||||
|
|
||||||
message Drop
|
message Drop
|
||||||
|
Loading…
x
Reference in New Issue
Block a user