1
This commit is contained in:
parent
70b296e21f
commit
06c3a6cd80
@ -23,7 +23,6 @@ void Bullet::Initialize()
|
|||||||
{
|
{
|
||||||
Entity::Initialize();
|
Entity::Initialize();
|
||||||
RecalcSelfCollider();
|
RecalcSelfCollider();
|
||||||
skill_meta = MetaMgr::Instance()->GetSkill(skill_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bullet::Update(int delta_time)
|
void Bullet::Update(int delta_time)
|
||||||
@ -67,7 +66,9 @@ void Bullet::OnHit(std::set<Entity*>& objects)
|
|||||||
master->stats.damage_amount_out += finaly_dmg;
|
master->stats.damage_amount_out += finaly_dmg;
|
||||||
hum->OnHit();
|
hum->OnHit();
|
||||||
if (!hum->HasBuffEffect(BET_Invincible)) {
|
if (!hum->HasBuffEffect(BET_Invincible)) {
|
||||||
// hum->OnSkillHit(skill_meta);
|
if (skill_id != 0) {
|
||||||
|
master->TriggerOneObjectBuff(hum, BTT_SkillHit);
|
||||||
|
}
|
||||||
hum->DecHP(finaly_dmg, master->entity_uniid, master->name, meta->i->id());
|
hum->DecHP(finaly_dmg, master->entity_uniid, master->name, meta->i->id());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,6 @@ class Bullet : public Entity
|
|||||||
a8::Vec2 born_dir;
|
a8::Vec2 born_dir;
|
||||||
float fly_distance = 0.0f;
|
float fly_distance = 0.0f;
|
||||||
int skill_id = 0;
|
int skill_id = 0;
|
||||||
MetaData::Skill* skill_meta = nullptr;
|
|
||||||
|
|
||||||
Bullet();
|
Bullet();
|
||||||
virtual ~Bullet() override;
|
virtual ~Bullet() override;
|
||||||
|
@ -557,7 +557,7 @@ void Human::DoSkill()
|
|||||||
std::set<Entity*> target_list;
|
std::set<Entity*> target_list;
|
||||||
skill_target_pos = hum->pos;
|
skill_target_pos = hum->pos;
|
||||||
SelectSkillTargets(hum->pos, target_list);
|
SelectSkillTargets(hum->pos, target_list);
|
||||||
TriggerBuff(skill_meta_, target_list, BTT_UseSkill);
|
TriggerBuff(target_list, BTT_UseSkill);
|
||||||
if (!skill_meta_->phases.empty() && skill_meta_->phases[0].time_offset <= 0) {
|
if (!skill_meta_->phases.empty() && skill_meta_->phases[0].time_offset <= 0) {
|
||||||
UpdateSkill();
|
UpdateSkill();
|
||||||
}
|
}
|
||||||
@ -1067,17 +1067,15 @@ int Human::GetSkillCd()
|
|||||||
return skill_meta_ ? skill_meta_->i->skill_cd() * 1000 : 0;
|
return skill_meta_ ? skill_meta_->i->skill_cd() * 1000 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::TriggerBuff(MetaData::Skill* sender_skill_meta,
|
void Human::TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type)
|
||||||
std::set<Entity*>& target_list, BuffTriggerType_e trigger_type)
|
|
||||||
{
|
{
|
||||||
auto itr = sender_skill_meta->trigger_type_buffs.find(trigger_type);
|
if (target->entity_type != ET_Player) {
|
||||||
if (itr != sender_skill_meta->trigger_type_buffs.end()) {
|
return;
|
||||||
for (MetaData::Buff* buff_meta : itr->second) {
|
|
||||||
for (Entity* entity : target_list) {
|
|
||||||
if (entity->entity_type != ET_Player) {
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
Human* hum = (Human*)entity;
|
Human* hum = (Human*)target;
|
||||||
|
auto itr = skill_meta_->trigger_type_buffs.find(trigger_type);
|
||||||
|
if (itr != skill_meta_->trigger_type_buffs.end()) {
|
||||||
|
for (MetaData::Buff* buff_meta : itr->second) {
|
||||||
switch (buff_meta->i->buff_target()) {
|
switch (buff_meta->i->buff_target()) {
|
||||||
case kBuffTargetSelf: //自己
|
case kBuffTargetSelf: //自己
|
||||||
{
|
{
|
||||||
@ -1095,18 +1093,22 @@ void Human::TriggerBuff(MetaData::Skill* sender_skill_meta,
|
|||||||
break;
|
break;
|
||||||
case kBuffTargetEnemy: //敌军
|
case kBuffTargetEnemy: //敌军
|
||||||
{
|
{
|
||||||
if (sender_skill_meta->i->skill_id() == 41008) {
|
|
||||||
hum->AddBuff(buff_meta);
|
|
||||||
} else {
|
|
||||||
if (hum->team_id != team_id) {
|
if (hum->team_id != team_id) {
|
||||||
hum->AddBuff(buff_meta);
|
hum->AddBuff(buff_meta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}//end for target_list
|
}
|
||||||
}//end for buff_list
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Human::TriggerBuff(std::set<Entity*>& target_list, BuffTriggerType_e trigger_type)
|
||||||
|
{
|
||||||
|
for (Entity* entity : target_list) {
|
||||||
|
TriggerOneObjectBuff(entity, trigger_type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1515,7 +1517,7 @@ void Human::_UpdateAssaultMove()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TriggerBuff(skill_meta_, target_list, BTT_SkillHit);
|
TriggerBuff(target_list, BTT_SkillHit);
|
||||||
room->frame_event.AddExplosion(0, pos, 2);
|
room->frame_event.AddExplosion(0, pos, 2);
|
||||||
room->grid_service.MoveHuman(this);
|
room->grid_service.MoveHuman(this);
|
||||||
}
|
}
|
||||||
|
@ -175,8 +175,8 @@ class Human : public Entity
|
|||||||
int TankLv();
|
int TankLv();
|
||||||
int GetSkillLeftTime();
|
int GetSkillLeftTime();
|
||||||
int GetSkillCd();
|
int GetSkillCd();
|
||||||
void TriggerBuff(MetaData::Skill* sender_skill_meta,
|
void TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type);
|
||||||
std::set<Entity*>& target_list, BuffTriggerType_e trigger_type);
|
void TriggerBuff(std::set<Entity*>& target_list, BuffTriggerType_e trigger_type);
|
||||||
void AddBuff(MetaData::Buff* buff_meta);
|
void AddBuff(MetaData::Buff* buff_meta);
|
||||||
void RemoveBuffById(int buff_id);
|
void RemoveBuffById(int buff_id);
|
||||||
void RemoveBuffByEffectId(int buff_effect_id);
|
void RemoveBuffByEffectId(int buff_effect_id);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user