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