1
This commit is contained in:
parent
71eb285168
commit
8bd4750ecb
@ -1129,7 +1129,7 @@ void Creature::Initialize()
|
|||||||
[this] (int event, const a8::Args* args) mutable
|
[this] (int event, const a8::Args* args) mutable
|
||||||
{
|
{
|
||||||
if (a8::TIMER_EXEC_EVENT == event) {
|
if (a8::TIMER_EXEC_EVENT == event) {
|
||||||
if (!dead && !poisoning && !downed) {
|
if (!dead && !poisoning && !downed && !HasBuffEffect(kBET_Dive)) {
|
||||||
if (GetHP() + 1 < GetMaxHP()) {
|
if (GetHP() + 1 < GetMaxHP()) {
|
||||||
AddHp(GetMaxHP() * mt::Param::s().nature_recover_hp_rate);
|
AddHp(GetMaxHP() * mt::Param::s().nature_recover_hp_rate);
|
||||||
TryAddBuff(this, kRecoverHpEffectBuffId);
|
TryAddBuff(this, kRecoverHpEffectBuffId);
|
||||||
|
@ -196,7 +196,11 @@ void FrameMaker::SerializeNewObjects(cs::SMUpdate* msg, Room* room, Human* hum,
|
|||||||
}
|
}
|
||||||
if (e != hum &&
|
if (e != hum &&
|
||||||
e->GetEntityType() == ET_Player &&
|
e->GetEntityType() == ET_Player &&
|
||||||
((Human*)e)->HasBuffEffect(kBET_Fly)){
|
((Human*)e)->HasBuffEffect(kBET_Fly) &&
|
||||||
|
((Human*)e)->IsOb()){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (e->IsCreature(room) && ((Creature*)e)->IsOb()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
bool sync = false;
|
bool sync = false;
|
||||||
|
@ -404,6 +404,7 @@ behaviac::EBTStatus HeroAgent::SearchEnemy(float range)
|
|||||||
if (!c->dead &&
|
if (!c->dead &&
|
||||||
!a8::HasBitFlag(c->status, CS_Disable) &&
|
!a8::HasBitFlag(c->status, CS_Disable) &&
|
||||||
!c->HasBuffEffect(kBET_Hide) &&
|
!c->HasBuffEffect(kBET_Hide) &&
|
||||||
|
!c->HasBuffEffect(kBET_Dive) &&
|
||||||
!c->HasBuffEffect(kBET_Invincible) &&
|
!c->HasBuffEffect(kBET_Invincible) &&
|
||||||
c->team_id != myself->team_id &&
|
c->team_id != myself->team_id &&
|
||||||
!c->IsCar() &&
|
!c->IsCar() &&
|
||||||
@ -454,6 +455,7 @@ behaviac::EBTStatus HeroAgent::TrySearchEnemy(float range, int min_interval, int
|
|||||||
if (!c->dead &&
|
if (!c->dead &&
|
||||||
!a8::HasBitFlag(c->status, CS_Disable) &&
|
!a8::HasBitFlag(c->status, CS_Disable) &&
|
||||||
!c->HasBuffEffect(kBET_Hide) &&
|
!c->HasBuffEffect(kBET_Hide) &&
|
||||||
|
!c->HasBuffEffect(kBET_Dive) &&
|
||||||
!c->HasBuffEffect(kBET_Invincible) &&
|
!c->HasBuffEffect(kBET_Invincible) &&
|
||||||
c->team_id != myself->team_id &&
|
c->team_id != myself->team_id &&
|
||||||
!c->IsCar() &&
|
!c->IsCar() &&
|
||||||
|
@ -131,7 +131,8 @@ static void Human_FillBodyState(Human* self, ::google::protobuf::RepeatedPtrFiel
|
|||||||
static Player* InternalCreatePlayer(std::shared_ptr<CustomBattle> p,
|
static Player* InternalCreatePlayer(std::shared_ptr<CustomBattle> p,
|
||||||
std::shared_ptr<CustomMember> m,
|
std::shared_ptr<CustomMember> m,
|
||||||
std::shared_ptr<Team> room_team,
|
std::shared_ptr<Team> room_team,
|
||||||
cs::CMJoin& join_msg)
|
cs::CMJoin& join_msg,
|
||||||
|
std::function<void (Player*)> on_preadd = nullptr)
|
||||||
{
|
{
|
||||||
Player* hum = p->GetRoom()->NewPlayer();
|
Player* hum = p->GetRoom()->NewPlayer();
|
||||||
//hum->ip_saddr = ip_saddr;
|
//hum->ip_saddr = ip_saddr;
|
||||||
@ -174,6 +175,9 @@ static Player* InternalCreatePlayer(std::shared_ptr<CustomBattle> p,
|
|||||||
hum->GetNetData()->GetHeroLvQuality(hero_uniid, hero_lv, quality);
|
hum->GetNetData()->GetHeroLvQuality(hero_uniid, hero_lv, quality);
|
||||||
hum->hero_uniid = hero_uniid;
|
hum->hero_uniid = hero_uniid;
|
||||||
}
|
}
|
||||||
|
if (on_preadd) {
|
||||||
|
on_preadd(hum);
|
||||||
|
}
|
||||||
p->GetRoom()->AddPlayer(hum, nullptr, true);
|
p->GetRoom()->AddPlayer(hum, nullptr, true);
|
||||||
hum->ProcSkillList();
|
hum->ProcSkillList();
|
||||||
hum->SetHP(hum->GetNetData()->GetMaxHP());
|
hum->SetHP(hum->GetNetData()->GetMaxHP());
|
||||||
@ -2638,9 +2642,12 @@ int Room::InitWithCustomBattle(long ip_saddr, int socket_handle, std::shared_ptr
|
|||||||
(
|
(
|
||||||
[join_msg, p, new_team] (std::shared_ptr<CustomMember> m) mutable -> bool
|
[join_msg, p, new_team] (std::shared_ptr<CustomMember> m) mutable -> bool
|
||||||
{
|
{
|
||||||
Player* hum = InternalCreatePlayer(p, m, new_team, join_msg);
|
Player* hum = InternalCreatePlayer(p, m, new_team, join_msg,
|
||||||
a8::SetBitFlag(hum->status, CS_IsOb);
|
[p] (Player* hum)
|
||||||
p->GetRoom()->GetRoomOb()->AddOb(hum);
|
{
|
||||||
|
a8::SetBitFlag(hum->status, CS_IsOb);
|
||||||
|
p->GetRoom()->GetRoomOb()->AddOb(hum);
|
||||||
|
});
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1019,7 +1019,12 @@ Human* Room::GetWatchWarTarget(Human* hum)
|
|||||||
std::vector<Human*> players;
|
std::vector<Human*> players;
|
||||||
std::vector<Human*> humans;
|
std::vector<Human*> humans;
|
||||||
for (auto& pair : human_hash_) {
|
for (auto& pair : human_hash_) {
|
||||||
if (pair.first != hum->GetUniId() && !pair.second->dead && !a8::HasBitFlag(pair.second->status, CS_Disable)) {
|
if (pair.first != hum->GetUniId() &&
|
||||||
|
!pair.second->dead &&
|
||||||
|
!a8::HasBitFlag(pair.second->status, CS_Disable)) {
|
||||||
|
if (pair.second->IsOb()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (pair.second->IsPlayer()) {
|
if (pair.second->IsPlayer()) {
|
||||||
players.push_back(pair.second);
|
players.push_back(pair.second);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user