1
This commit is contained in:
parent
85328929c9
commit
c78f325412
@ -105,6 +105,22 @@ static void InternalCreateBullet(BulletInfo& bullet_info)
|
||||
bullet_info.bullet_born_pos,
|
||||
bullet_info.bullet_dir,
|
||||
bullet_info.fly_distance);
|
||||
if (bullet_uniid && bullet_info.trace_target_uniid) {
|
||||
Entity* entity = c->room->GetEntityByUniId(bullet_uniid);
|
||||
if (entity->GetEntityType() == ET_Bullet) {
|
||||
Bullet* bullet = (Bullet*)bullet;
|
||||
Entity* target = c->room->GetEntityByUniId(bullet_info.trace_target_uniid);
|
||||
if (target->IsCreature(c->room)) {
|
||||
float finaly_dmg = ((Creature*)target)->GetBattleContext()->CalcDmg((Creature*)target, bullet);
|
||||
c->AddTraceBullet(
|
||||
bullet_uniid,
|
||||
bullet_info.trace_target_uniid,
|
||||
bullet_info.weapon_meta->i->id(),
|
||||
finaly_dmg
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
BulletInfo* info_copy = new BulletInfo();
|
||||
*info_copy = bullet_info;
|
||||
@ -3556,7 +3572,7 @@ void Creature::AutoNavigation(a8::Vec2 target_pos, float speed)
|
||||
}
|
||||
|
||||
|
||||
void Creature::AddTraceBullet(int bullet_uniid, int target_uniid, float dmg)
|
||||
void Creature::AddTraceBullet(int bullet_uniid, int target_uniid, int gun_id, float dmg)
|
||||
{
|
||||
trace_bullet_hash_[bullet_uniid] = std::make_tuple(target_uniid, dmg);
|
||||
trace_bullet_hash_[bullet_uniid] = std::make_tuple(target_uniid, gun_id, dmg);
|
||||
}
|
||||
|
@ -276,7 +276,7 @@ class Creature : public MoveableEntity
|
||||
float GetAttrRate(int attr_id);
|
||||
void RecalcDtoAttr();
|
||||
void AutoNavigation(a8::Vec2 target_pos, float speed);
|
||||
void AddTraceBullet(int bullet_uniid, int target_uniid, float dmg);
|
||||
void AddTraceBullet(int bullet_uniid, int target_uniid, int gun_id, float dmg);
|
||||
|
||||
protected:
|
||||
virtual void OnBuffRemove(Buff& buff);
|
||||
@ -322,7 +322,8 @@ protected:
|
||||
long long last_follow_move_frameno_ = 0;
|
||||
int follow_target_last_chg_move_dir_times_ = -1;
|
||||
xtimer_list* follow_target_timer_ = nullptr;
|
||||
std::map<int, std::tuple<int, float>> trace_bullet_hash_;
|
||||
//target_uniid, gun_id, dmg
|
||||
std::map<int, std::tuple<int, int, float>> trace_bullet_hash_;
|
||||
|
||||
private:
|
||||
CreatureWeakPtr weak_ptr_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user