This commit is contained in:
aozhiwei 2022-09-21 13:25:46 +08:00
parent 127b6bee74
commit 0b3fead2a3
2 changed files with 20 additions and 6 deletions

View File

@ -38,6 +38,7 @@ struct BulletInfo
int delay_time = 0;
int recoil_force = 0;
int invincible_buff_uniid = 0;
int trace_target_uniid = 0;
};
static void InternalCreateBullet(BulletInfo& bullet_info)
@ -132,14 +133,14 @@ static void InternalCreateBullet(BulletInfo& bullet_info)
void InternalShot(Creature* c,
MetaData::Equip* weapon_meta,
MetaData::Equip* bullet_meta,
int skill_id,
MetaData::Skill* skill_meta,
float fly_distance,
bool is_tank_skin,
long long weapon_uniid)
{
if (weapon_meta->i->_inventory_slot() == IS_TRAP ||
weapon_meta->i->_inventory_slot() == IS_MINE) {
if (skill_id == 0) {
if (!skill_meta) {
c->room->frame_event.AddShot(c->GetWeakPtrRef());
}
if (weapon_meta->i->cast_time() > 0) {
@ -175,7 +176,7 @@ void InternalShot(Creature* c,
return;
}
}
if (skill_id == 0) {
if (!skill_meta) {
c->room->frame_event.AddShot(c->GetWeakPtrRef());
}
int invincible_buff_uniid = 0;
@ -345,6 +346,14 @@ void InternalShot(Creature* c,
bullet_info.delay_time = std::get<3>(tuple);
bullet_info.recoil_force = std::get<4>(tuple);
bullet_info.invincible_buff_uniid = invincible_buff_uniid;
if (skill_meta &&
(skill_meta->GetMagicId() == MAGIC_AXXF ||
skill_meta->GetMagicId() == MAGIC_HJHX)) {
bullet_info.trace_target_uniid = c->GetSkillTargetId();
#ifdef DEBUG
a8::XPrintf("bullet trace_target_uniid:%d\n", {c->GetSkillTargetId()});
#endif
}
InternalCreateBullet(bullet_info);
}
}
@ -1197,7 +1206,7 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase)
this,
weapon_meta,
bullet_meta,
CurrentSkill() ? CurrentSkill()->meta->i->skill_id() : 0,
CurrentSkill() ? CurrentSkill()->meta : nullptr,
target_distance,
false,
0);
@ -1218,7 +1227,7 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase)
this,
weapon_meta,
bullet_meta,
CurrentSkill() ? CurrentSkill()->meta->i->skill_id() : 0,
CurrentSkill() ? CurrentSkill()->meta : nullptr,
target_distance,
false,
0);
@ -1245,11 +1254,15 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase)
if (CurrentSkill()->GetMinorType() == SMT_NONE) {
int buff_id = phase->param3.GetInt();
TryAddBuff(this, buff_id);
#ifdef DEBUG
a8::XPrintf("old_pos:%f,%f", {GetPos().x, GetPos().y});
#endif
_UpdateMove(phase->param1.GetInt());
a8::Vec2 pre_dir = old_dir;
a8::Vec2 pre_pos = old_pos;
#ifdef DEBUG
a8::XPrintf("new_pos:%f,%f", {GetPos().x, GetPos().y});
#endif
CurrentSkill()->AddMinorMode
(
SMT_BLINK,

View File

@ -146,6 +146,7 @@ class Creature : public MoveableEntity
void FillSkillList(::google::protobuf::RepeatedPtrField< cs::MFSkill >* pb_skill_list);
void TriggerBuff(Skill* skill, std::set<Creature*>& target_list, BuffTriggerType_e trigger_type);
Skill* GetSkill(int skill_id);
int GetSkillTargetId() { return skill_target_id_; };
void AddSkill(int skill_id);
void ClearSkill();
void AddPassiveSkill(int skill_id);
@ -357,7 +358,7 @@ private:
void InternalShot(Creature* sender,
MetaData::Equip* weapon_meta,
MetaData::Equip* bullet_meta,
int skill_id,
MetaData::Skill* skill_meta,
float fly_distance,
bool is_tank_skin,
long long weapon_uniid);