完成技能表读取

This commit is contained in:
aozhiwei 2019-07-06 09:26:42 +08:00
parent 88307527d6
commit d5cf643107
6 changed files with 11 additions and 63 deletions

View File

@ -62,12 +62,14 @@ void Bullet::OnHit(std::set<Entity*>& objects)
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
player->stats.damage_amount_out += finaly_dmg;
hum->DecHP(finaly_dmg, player->entity_uniid, player->name, gun_meta->i->id());
#if 0
if (a8::HasBitFlag(hum->status, HS_ReflectDamage) && hum->skill_meta) {
float reflect_dmg = finaly_dmg * hum->skill_meta->value1;
if (reflect_dmg > 1.0f) {
player->DecHP(reflect_dmg, hum->entity_uniid, hum->name, gun_meta->i->id());
}
}
#endif
}
}
break;

View File

@ -639,6 +639,7 @@ bool Human::HasNoDownedTeammate()
void Human::DoSkill()
{
#if 0
if (skill_meta && skill_meta->i->condition() == SC_Active) {
int passed_time = (room->frame_no - last_use_skill_frameno_) * FRAME_RATE_MS;
int skill_left_time = std::max(0, skill_meta->last_time * 1000 - passed_time);
@ -812,6 +813,7 @@ void Human::DoSkill()
last_use_skill_frameno_ = room->frame_no;
}
}
#endif
}
void Human::FindLocation()
@ -1113,59 +1115,11 @@ void Human::FillBodyState(::google::protobuf::RepeatedPtrField<::cs::MFBodyState
state->set_left_time(left_time);
state->set_lasting_time(anodyne_max_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->last_time * 1000 - passed_time));
state->set_lasting_time(skill_meta->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->last_time * 1000 - passed_time));
state->set_lasting_time(skill_meta->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->last_time * 1000 - passed_time));
state->set_lasting_time(skill_meta->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->last_time * 1000 - passed_time));
state->set_lasting_time(skill_meta->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->last_time * 1000 - passed_time));
state->set_lasting_time(skill_meta->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->last_time * 1000 - passed_time));
state->set_lasting_time(skill_meta->last_time * 1000);
}
if (a8::HasBitFlag(status, HS_SummonHero) && skill_meta) {
int passed_time = (room->frame_no - summon_hero_frameno_) * FRAME_RATE_MS;
cs::MFBodyState* state = states->Add();
state->set_state_type(HS_SummonHero);
state->set_left_time(std::max(0, skill_meta->last_time * 1000 - passed_time));
state->set_lasting_time(skill_meta->last_time * 1000);
}
}
void Human::SummonHero()
{
#if 0
Hero* hero = room->CreateHero(this);
if (hero) {
summon_hero_frameno_ = room->frame_no;
@ -1193,6 +1147,7 @@ void Human::SummonHero()
need_sync_active_player = true;
BroadcastFullState();
}
#endif
}
void Human::AddObserver(Human* observer)

View File

@ -355,10 +355,6 @@ namespace MetaData
void Skill::Init()
{
value1 = a8::XValue(i->value1()).GetDouble();
value2 = a8::XValue(i->value2()).GetDouble();
area = a8::XValue(i->area()).GetDouble();
last_time = a8::XValue(i->last_time()).GetInt();
}
void Dress::Init()

View File

@ -126,10 +126,6 @@ namespace MetaData
const metatable::Skill* i = nullptr;
void Init();
float value1 = 0.0f;
float value2 = 0.0f;
float area = 0.0f;
int last_time = 0;
};
struct Dress

View File

@ -134,7 +134,7 @@ message MFPlayerPart
optional float max_health = 5; //undefined
optional float health = 6; //undefined
repeated MFBuff add_buff_list = 7; //buff列表
repeated MFBuff remove_buff_list = 8; //buff列表
repeated int32 remove_buff_list = 8; //buff列表
}
//-

View File

@ -111,11 +111,10 @@ message Robot
message Skill
{
optional int32 id = 1;
optional int32 type = 2;
optional int32 condition = 3;
optional string value1 = 4;
optional string value2 = 5;
optional string area = 6;
optional int32 release_type = 2;
optional int32 skill_effect_id = 3;
optional string value = 4;
optional string value_up = 6;
optional int32 cd_time = 7;
optional string last_time = 8;
}