技能ok
This commit is contained in:
parent
8e849aff5b
commit
88b497d5de
@ -83,70 +83,7 @@ void Human::FillMFObjectFull(cs::MFObjectFull* full_data)
|
|||||||
#endif
|
#endif
|
||||||
p->set_vip(vip);
|
p->set_vip(vip);
|
||||||
p->set_sdmg(sdmg);
|
p->set_sdmg(sdmg);
|
||||||
if (pain_killer_timer) {
|
FillBodyState(p->mutable_states());
|
||||||
int passed_time = (room->frame_no - pain_killer_frameno) * FRAME_RATE_MS;
|
|
||||||
int left_time = std::max(0, pain_killer_lastingtime * 1000 - passed_time);
|
|
||||||
int anodyne_max_time = MetaMgr::Instance()->GetSysParamAsInt("anodyne_max_time");
|
|
||||||
left_time = std::min(left_time, anodyne_max_time * 1000);
|
|
||||||
|
|
||||||
cs::MFBodyState* state = p->add_states();
|
|
||||||
state->set_state_type(1);
|
|
||||||
state->set_left_time(left_time);
|
|
||||||
state->set_lasting_time(anodyne_max_time * 1000);
|
|
||||||
}
|
|
||||||
if (a8::HasBitFlag(status, HS_Fly)) {
|
|
||||||
cs::MFBodyState* state = p->add_states();
|
|
||||||
state->set_state_type(2);
|
|
||||||
}
|
|
||||||
if (a8::HasBitFlag(status, HS_Jump)) {
|
|
||||||
int passed_time = (room->frame_no - jump_frameno) * FRAME_RATE_MS;
|
|
||||||
cs::MFBodyState* state = p->add_states();
|
|
||||||
state->set_state_type(3);
|
|
||||||
state->set_left_time(std::max(0, MetaMgr::Instance()->jump_time * 1000 - passed_time));
|
|
||||||
state->set_lasting_time(MetaMgr::Instance()->jump_time * 1000);
|
|
||||||
}
|
|
||||||
if (a8::HasBitFlag(status, HS_Hide) && skill_meta) {
|
|
||||||
int passed_time = (room->frame_no - hide_frameno_) * FRAME_RATE_MS;
|
|
||||||
cs::MFBodyState* state = p->add_states();
|
|
||||||
state->set_state_type(HS_Hide);
|
|
||||||
state->set_left_time(std::max(0, skill_meta->i->cd_time() * 1000 - passed_time));
|
|
||||||
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
|
||||||
}
|
|
||||||
if (a8::HasBitFlag(status, HS_Accelerate) && skill_meta) {
|
|
||||||
int passed_time = (room->frame_no - accelerate_frameno_) * FRAME_RATE_MS;
|
|
||||||
cs::MFBodyState* state = p->add_states();
|
|
||||||
state->set_state_type(HS_Accelerate);
|
|
||||||
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
|
||||||
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
|
||||||
}
|
|
||||||
if (a8::HasBitFlag(status, HS_DamageAdd) && skill_meta) {
|
|
||||||
int passed_time = (room->frame_no - damageadd_frameno_) * FRAME_RATE_MS;
|
|
||||||
cs::MFBodyState* state = p->add_states();
|
|
||||||
state->set_state_type(HS_DamageAdd);
|
|
||||||
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
|
||||||
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
|
||||||
}
|
|
||||||
if (a8::HasBitFlag(status, HS_DefAdd) && skill_meta) {
|
|
||||||
int passed_time = (room->frame_no - defadd_frameno_) * FRAME_RATE_MS;
|
|
||||||
cs::MFBodyState* state = p->add_states();
|
|
||||||
state->set_state_type(HS_DefAdd);
|
|
||||||
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
|
||||||
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
|
||||||
}
|
|
||||||
if (a8::HasBitFlag(status, HS_RecoverHP) && skill_meta) {
|
|
||||||
int passed_time = (room->frame_no - recover_hp_frameno_) * FRAME_RATE_MS;
|
|
||||||
cs::MFBodyState* state = p->add_states();
|
|
||||||
state->set_state_type(HS_RecoverHP);
|
|
||||||
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
|
||||||
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
|
||||||
}
|
|
||||||
if (a8::HasBitFlag(status, HS_ReflectDamage) && skill_meta) {
|
|
||||||
int passed_time = (room->frame_no - reflect_damage_frameno_) * FRAME_RATE_MS;
|
|
||||||
cs::MFBodyState* state = p->add_states();
|
|
||||||
state->set_state_type(HS_ReflectDamage);
|
|
||||||
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
|
||||||
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ColliderComponent* Human::GetBoxBound()
|
ColliderComponent* Human::GetBoxBound()
|
||||||
@ -993,17 +930,6 @@ void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data)
|
|||||||
for (auto& num : inventory_) {
|
for (auto& num : inventory_) {
|
||||||
player_data->add_inventory(num);
|
player_data->add_inventory(num);
|
||||||
}
|
}
|
||||||
if (pain_killer_timer) {
|
|
||||||
int passed_time = (room->frame_no - pain_killer_frameno) * FRAME_RATE_MS;
|
|
||||||
int left_time = std::max(0, pain_killer_lastingtime * 1000 - passed_time);
|
|
||||||
int anodyne_max_time = MetaMgr::Instance()->GetSysParamAsInt("anodyne_max_time");
|
|
||||||
left_time = std::min(left_time, anodyne_max_time * 1000);
|
|
||||||
|
|
||||||
cs::MFBodyState* p = player_data->add_states();
|
|
||||||
p->set_state_type(1);
|
|
||||||
p->set_left_time(left_time);
|
|
||||||
p->set_lasting_time(anodyne_max_time * 1000);
|
|
||||||
}
|
|
||||||
player_data->set_energy_shield(energy_shield);
|
player_data->set_energy_shield(energy_shield);
|
||||||
#if 1
|
#if 1
|
||||||
{
|
{
|
||||||
@ -1018,6 +944,7 @@ void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data)
|
|||||||
player_data->set_skill_cd_time(skill_meta->i->last_time() * 1000);
|
player_data->set_skill_cd_time(skill_meta->i->last_time() * 1000);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
FillBodyState(player_data->mutable_states());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::FillMFGasData(cs::MFGasData* gas_data)
|
void Human::FillMFGasData(cs::MFGasData* gas_data)
|
||||||
@ -1113,3 +1040,71 @@ void Human::RecoverHp(int inc_hp)
|
|||||||
health = std::max(health, GetMaxHP());
|
health = std::max(health, GetMaxHP());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Human::FillBodyState(::google::protobuf::RepeatedPtrField<::cs::MFBodyState>* states)
|
||||||
|
{
|
||||||
|
if (pain_killer_timer) {
|
||||||
|
int passed_time = (room->frame_no - pain_killer_frameno) * FRAME_RATE_MS;
|
||||||
|
int left_time = std::max(0, pain_killer_lastingtime * 1000 - passed_time);
|
||||||
|
int anodyne_max_time = MetaMgr::Instance()->GetSysParamAsInt("anodyne_max_time");
|
||||||
|
left_time = std::min(left_time, anodyne_max_time * 1000);
|
||||||
|
|
||||||
|
cs::MFBodyState* state = states->Add();
|
||||||
|
state->set_state_type(1);
|
||||||
|
state->set_left_time(left_time);
|
||||||
|
state->set_lasting_time(anodyne_max_time * 1000);
|
||||||
|
}
|
||||||
|
if (a8::HasBitFlag(status, HS_Fly)) {
|
||||||
|
cs::MFBodyState* state = states->Add();
|
||||||
|
state->set_state_type(2);
|
||||||
|
}
|
||||||
|
if (a8::HasBitFlag(status, HS_Jump)) {
|
||||||
|
int passed_time = (room->frame_no - jump_frameno) * FRAME_RATE_MS;
|
||||||
|
cs::MFBodyState* state = states->Add();
|
||||||
|
state->set_state_type(3);
|
||||||
|
state->set_left_time(std::max(0, MetaMgr::Instance()->jump_time * 1000 - passed_time));
|
||||||
|
state->set_lasting_time(MetaMgr::Instance()->jump_time * 1000);
|
||||||
|
}
|
||||||
|
if (a8::HasBitFlag(status, HS_Hide) && skill_meta) {
|
||||||
|
int passed_time = (room->frame_no - hide_frameno_) * FRAME_RATE_MS;
|
||||||
|
cs::MFBodyState* state = states->Add();
|
||||||
|
state->set_state_type(HS_Hide);
|
||||||
|
state->set_left_time(std::max(0, skill_meta->i->cd_time() * 1000 - passed_time));
|
||||||
|
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
||||||
|
}
|
||||||
|
if (a8::HasBitFlag(status, HS_Accelerate) && skill_meta) {
|
||||||
|
int passed_time = (room->frame_no - accelerate_frameno_) * FRAME_RATE_MS;
|
||||||
|
cs::MFBodyState* state = states->Add();
|
||||||
|
state->set_state_type(HS_Accelerate);
|
||||||
|
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
||||||
|
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
||||||
|
}
|
||||||
|
if (a8::HasBitFlag(status, HS_DamageAdd) && skill_meta) {
|
||||||
|
int passed_time = (room->frame_no - damageadd_frameno_) * FRAME_RATE_MS;
|
||||||
|
cs::MFBodyState* state = states->Add();
|
||||||
|
state->set_state_type(HS_DamageAdd);
|
||||||
|
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
||||||
|
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
||||||
|
}
|
||||||
|
if (a8::HasBitFlag(status, HS_DefAdd) && skill_meta) {
|
||||||
|
int passed_time = (room->frame_no - defadd_frameno_) * FRAME_RATE_MS;
|
||||||
|
cs::MFBodyState* state = states->Add();
|
||||||
|
state->set_state_type(HS_DefAdd);
|
||||||
|
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
||||||
|
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
||||||
|
}
|
||||||
|
if (a8::HasBitFlag(status, HS_RecoverHP) && skill_meta) {
|
||||||
|
int passed_time = (room->frame_no - recover_hp_frameno_) * FRAME_RATE_MS;
|
||||||
|
cs::MFBodyState* state = states->Add();
|
||||||
|
state->set_state_type(HS_RecoverHP);
|
||||||
|
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
||||||
|
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
||||||
|
}
|
||||||
|
if (a8::HasBitFlag(status, HS_ReflectDamage) && skill_meta) {
|
||||||
|
int passed_time = (room->frame_no - reflect_damage_frameno_) * FRAME_RATE_MS;
|
||||||
|
cs::MFBodyState* state = states->Add();
|
||||||
|
state->set_state_type(HS_ReflectDamage);
|
||||||
|
state->set_left_time(std::max(0, skill_meta->i->last_time() * 1000 - passed_time));
|
||||||
|
state->set_lasting_time(skill_meta->i->last_time() * 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -149,6 +149,7 @@ class Human : public Entity
|
|||||||
void DecInventory(int slot_id, int num);
|
void DecInventory(int slot_id, int num);
|
||||||
int GetVolume(int slot_id);
|
int GetVolume(int slot_id);
|
||||||
void RecoverHp(int inc_hp);
|
void RecoverHp(int inc_hp);
|
||||||
|
void FillBodyState(::google::protobuf::RepeatedPtrField<::cs::MFBodyState>* states);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
long long last_shot_frameno_ = 0;
|
long long last_shot_frameno_ = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user