1
This commit is contained in:
parent
127b6bee74
commit
0b3fead2a3
@ -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,
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user