1
This commit is contained in:
parent
222106daac
commit
fe8ac7eeac
@ -10,6 +10,23 @@
|
|||||||
|
|
||||||
void MarkTagBuff::Activate()
|
void MarkTagBuff::Activate()
|
||||||
{
|
{
|
||||||
|
switch (meta->_int_buff_param1) {
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
owner->SetBuffTag(meta->_int_buff_param2, meta->_int_buff_param3);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
owner->IncBuffTag(meta->_int_buff_param2, meta->_int_buff_param3);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
owner->UnSetBuffTag(meta->_int_buff_param2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MarkTagBuff::Deactivate()
|
void MarkTagBuff::Deactivate()
|
||||||
|
@ -171,6 +171,47 @@ int Creature::AddBuff(Creature* caster,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (buff_meta->buff_effect() == kBET_CondTag) {
|
||||||
|
switch (buff_meta->_int_buff_param1) {
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
if (!(GetBuffTag(buff_meta->_int_buff_param2) >
|
||||||
|
buff_meta->_int_buff_param3)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
if (!(GetBuffTag(buff_meta->_int_buff_param2) <
|
||||||
|
buff_meta->_int_buff_param3)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
if (!(GetBuffTag(buff_meta->_int_buff_param2) ==
|
||||||
|
buff_meta->_int_buff_param3)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
if (!(GetBuffTag(buff_meta->_int_buff_param2) !=
|
||||||
|
buff_meta->_int_buff_param3)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (buff_meta->no_immune()) {
|
if (buff_meta->no_immune()) {
|
||||||
no_check_immune = 1;
|
no_check_immune = 1;
|
||||||
}
|
}
|
||||||
@ -2818,3 +2859,29 @@ void Creature::RemoveSkillObstacle(const mt::Skill* skill_meta)
|
|||||||
ob.Get()->Destory();
|
ob.Get()->Destory();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Creature::SetBuffTag(int tag, int val)
|
||||||
|
{
|
||||||
|
buff_tags_[tag] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Creature::GetBuffTag(int tag)
|
||||||
|
{
|
||||||
|
auto itr = buff_tags_.find(tag);
|
||||||
|
return itr != buff_tags_.end() ? itr->second : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Creature::IncBuffTag(int tag, int val)
|
||||||
|
{
|
||||||
|
auto itr = buff_tags_.find(tag);
|
||||||
|
if (itr != buff_tags_.end()) {
|
||||||
|
itr->second += val;
|
||||||
|
} else {
|
||||||
|
buff_tags_[tag] = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Creature::UnSetBuffTag(int tag)
|
||||||
|
{
|
||||||
|
buff_tags_.erase(tag);
|
||||||
|
}
|
||||||
|
@ -321,6 +321,10 @@ class Creature : public MoveableEntity
|
|||||||
void MarkSyncActivePlayer(const char* file, int line, const char* func);
|
void MarkSyncActivePlayer(const char* file, int line, const char* func);
|
||||||
void CheckBulletHitHoldShield(IBullet* bullet, bool& eat);
|
void CheckBulletHitHoldShield(IBullet* bullet, bool& eat);
|
||||||
void RemoveSkillObstacle(const mt::Skill* skill_meta);
|
void RemoveSkillObstacle(const mt::Skill* skill_meta);
|
||||||
|
void SetBuffTag(int tag, int val);
|
||||||
|
int GetBuffTag(int tag);
|
||||||
|
void IncBuffTag(int tag, int val);
|
||||||
|
void UnSetBuffTag(int tag);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void OnBuffRemove(Buff& buff);
|
virtual void OnBuffRemove(Buff& buff);
|
||||||
@ -388,6 +392,7 @@ private:
|
|||||||
a8::XTimerWp auto_switch_weapon_timer_;
|
a8::XTimerWp auto_switch_weapon_timer_;
|
||||||
a8::XTimerWp reload_delay_timer_;
|
a8::XTimerWp reload_delay_timer_;
|
||||||
int follow_times_ = 0;
|
int follow_times_ = 0;
|
||||||
|
std::map<int, int> buff_tags_;
|
||||||
|
|
||||||
int disable_move_dir_times_ = 0;
|
int disable_move_dir_times_ = 0;
|
||||||
int disable_attack_dir_times_ = 0;
|
int disable_attack_dir_times_ = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user