This commit is contained in:
aozhiwei 2020-07-29 19:40:57 +08:00
parent 18de7c6deb
commit c8618d3dea
4 changed files with 45 additions and 9 deletions

View File

@ -132,6 +132,7 @@ enum BuffEffectType_e
kBET_Terminator = 13, //终结者模式 kBET_Terminator = 13, //终结者模式
kBET_PlayShotAni = 14, //播放射击动画 kBET_PlayShotAni = 14, //播放射击动画
kBET_Vertigo = 15, //眩晕 kBET_Vertigo = 15, //眩晕
kBET_DecHp = 16, //扣血
kBET_End kBET_End
}; };

View File

@ -1901,7 +1901,19 @@ void Human::_UpdateSpecMove()
} }
} }
if (move_end) { if (move_end) {
if (GetBuffByEffectId(kBET_JumpTo)) { Buff* buff = GetBuffByEffectId(kBET_JumpTo);
if (buff) {
if (buff->skill_meta == skill_meta_ &&
!skill_meta_->phases.empty()) {
std::set<Entity*> target_list;
metatable::Skill* mutable_skill_meta = (metatable::Skill*)skill_meta_->i;
float old_skill_distance = skill_meta_->i->skill_distance();
mutable_skill_meta->set_skill_distance(skill_meta_->phases[0].param1.GetDouble());
SelectSkillTargets(GetPos(), target_list);
mutable_skill_meta->set_skill_distance(old_skill_distance);
TriggerBuff(target_list, kBTT_SkillHit);
}
RemoveBuffByEffectId(kBET_JumpTo); RemoveBuffByEffectId(kBET_JumpTo);
} }
if (GetBuffByEffectId(kBET_BePull)) { if (GetBuffByEffectId(kBET_BePull)) {
@ -2747,21 +2759,21 @@ void Human::TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type)
case kBuffTargetSelf: //自己 case kBuffTargetSelf: //自己
{ {
if (hum == this) { if (hum == this) {
hum->AddBuff(this, buff_meta, GetSkillLv()); hum->AddBuff(this, buff_meta, GetSkillLv(), skill_meta_);
} }
} }
break; break;
case kBuffTargetFriendly: //友军 case kBuffTargetFriendly: //友军
{ {
if (hum->team_id == team_id) { if (hum->team_id == team_id) {
hum->AddBuff(this, buff_meta, GetSkillLv()); hum->AddBuff(this, buff_meta, GetSkillLv(), skill_meta_);
} }
} }
break; break;
case kBuffTargetEnemy: //敌军 case kBuffTargetEnemy: //敌军
{ {
if (hum->team_id != team_id) { if (hum->team_id != team_id) {
hum->AddBuff(this, buff_meta, GetSkillLv()); hum->AddBuff(this, buff_meta, GetSkillLv(), skill_meta_);
} }
} }
break; break;
@ -2779,7 +2791,10 @@ void Human::TriggerBuff(std::set<Entity*>& target_list, BuffTriggerType_e trigge
} }
} }
void Human::AddBuff(Human* caster, MetaData::Buff* buff_meta, int skill_lv) void Human::AddBuff(Human* caster,
MetaData::Buff* buff_meta,
int skill_lv,
MetaData::Skill* buff_skill_meta)
{ {
if (GetBuffById(buff_meta->i->buff_id())) { if (GetBuffById(buff_meta->i->buff_id())) {
return; return;
@ -2808,7 +2823,7 @@ void Human::AddBuff(Human* caster, MetaData::Buff* buff_meta, int skill_lv)
buff->skill_lv = skill_lv; buff->skill_lv = skill_lv;
buff->owner = this; buff->owner = this;
buff->meta = buff_meta; buff->meta = buff_meta;
//buff->skill_meta buff->skill_meta = buff_skill_meta;
buff->add_frameno = room->GetFrameNo(); buff->add_frameno = room->GetFrameNo();
buff->xtimer_attacher.xtimer = &room->xtimer; buff->xtimer_attacher.xtimer = &room->xtimer;
buff_effect_[buff->meta->i->buff_effect()] = buff; buff_effect_[buff->meta->i->buff_effect()] = buff;
@ -2994,6 +3009,23 @@ void Human::ProcBuffEffect(Human* caster, Buff* buff)
} }
break; break;
case kBET_Vertigo:
{
int i = 0;
}
break;
case kBET_DecHp:
{
#if 0
float def = hum->ability.def * (1 + hum->GetBuffAttrRate(kHAT_Def)) +
hum->GetBuffAttrAbs(kHAT_Def);
#endif
DecHP(buff->meta->param1,
caster->GetEntityUniId(),
caster->name,
0);
}
break;
default: default:
{ {
} }

View File

@ -249,7 +249,10 @@ class Human : public MoveableEntity
float GetSkillAtkAdd(int skill_id); float GetSkillAtkAdd(int skill_id);
void TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type); void TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type);
void TriggerBuff(std::set<Entity*>& target_list, BuffTriggerType_e trigger_type); void TriggerBuff(std::set<Entity*>& target_list, BuffTriggerType_e trigger_type);
void AddBuff(Human* caster, MetaData::Buff* buff_meta, int skill_lv); void AddBuff(Human* caster,
MetaData::Buff* buff_meta,
int skill_lv,
MetaData::Skill* buff_skill_meta = nullptr);
void RemoveBuffById(int buff_id); void RemoveBuffById(int buff_id);
void RemoveBuffByEffectId(int buff_effect_id); void RemoveBuffByEffectId(int buff_effect_id);
void ClearBuffList(); void ClearBuffList();

View File

@ -1988,7 +1988,7 @@ long long Room::GetGasInactiveTime()
if (f8::IsTestEnv()) { if (f8::IsTestEnv()) {
return MetaMgr::Instance()->zbmode_gas_inactive_time + 10000; return MetaMgr::Instance()->zbmode_gas_inactive_time + 10000;
} else { } else {
return 5; return 5 + 100;
} }
#else #else
return MetaMgr::Instance()->zbmode_gas_inactive_time; return MetaMgr::Instance()->zbmode_gas_inactive_time;
@ -2662,7 +2662,7 @@ void Room::AddPlayerPostProc(Player* hum)
} }
if (GetRoomMode() == kZombieMode) { if (GetRoomMode() == kZombieMode) {
#if 1 #if 1
hum->ChangeToRace(kZombieRace, 2); hum->ChangeToRace(kZombieRace, 3);
#else #else
hum->ChangeToRace(kHumanRace, 1); hum->ChangeToRace(kHumanRace, 1);
#endif #endif