This commit is contained in:
aozhiwei 2022-09-21 09:29:14 +08:00
parent c457815907
commit b07f67b0f2
3 changed files with 33 additions and 13 deletions

View File

@ -10,6 +10,7 @@
#include "types.h"
#include "bullet.h"
#include "app.h"
#include "room.h"
#include "attrhelper.h"
@ -55,18 +56,18 @@ public:
return dodge_damage_ruduce_;
}
void Init()
void Init(Creature* c)
{
if (hero_dto) {
DtoInit();
DtoInit(c);
} else {
DefaultInit();
DefaultInit(c);
}
}
private:
void DefaultInit()
void DefaultInit(Creature* c)
{
hp_ = hero_meta->i->hp();
atk_ = hero_meta->i->damage();
@ -75,9 +76,23 @@ private:
crit_atk_ratio_ = hero_meta->i->crit_atk_ratio();
dodge_ = hero_meta->i->miss();
dodge_damage_ruduce_ = hero_meta->i->miss_damage_ruduce();
if (c->room->pve_instance) {
MetaData::NpcStandard* standard_meta = MetaMgr::Instance()->GetNpcStandard
(c->room->pve_instance->pb->gemini_lv());
if (standard_meta) {
hp_ = standard_meta->pb->hp() * hero_meta->i->hp_ratio() *
c->room->pve_instance->GetHpMul(c->room->GetHumanNum());
atk_ = standard_meta->pb->damage() * hero_meta->i->damage_ratio();
def_ = standard_meta->pb->defence() * hero_meta->i->defence_ratio();
} else {
#ifdef DEBUG
abort();
#endif
}
}
}
void DtoInit()
void DtoInit(Creature* c)
{
std::array<float, kHAT_End> base_attr_abs = {0};
std::array<float, kHAT_End> base_attr_rate = {0};
@ -204,18 +219,18 @@ public:
return reload_time_;
}
void Init()
void Init(Creature* c)
{
if (weapon_dto) {
DtoInit();
DtoInit(c);
} else {
DefaultInit();
DefaultInit(c);
}
}
private:
void DefaultInit()
void DefaultInit(Creature* c)
{
atk_ = weapon_meta->i->atk();
crit_atk_ = weapon_meta->i->critical();
@ -225,7 +240,7 @@ private:
reload_time_ = weapon_meta->i->reload_time();
}
void DtoInit()
void DtoInit(Creature* c)
{
std::array<float, kHAT_End> base_attr_abs = {0};
std::array<float, kHAT_End> base_attr_rate = {0};
@ -635,12 +650,12 @@ void BattleDataContext::Init(Creature* c)
if (!hero_ability_->hero_uniid_) {
hero_ability_->hero_uniid_ = App::Instance()->AllocTempHeroUniId();
}
hero_ability_->Init();
hero_ability_->Init(c);
if (weapon1_ability_) {
weapon1_ability_->Init();
weapon1_ability_->Init(c);
}
if (weapon2_ability_) {
weapon2_ability_->Init();
weapon2_ability_->Init(c);
}
}

View File

@ -575,6 +575,7 @@ message MFBullet
optional int32 gun_id = 10; //id
optional float fly_distance = 11; //
optional int32 bullet_uniid = 12; //id
optional int32 trace_target_uniid = 13; //0uniid
}
//

View File

@ -256,6 +256,10 @@ message Player
optional int32 skill1list = 60;
optional int32 skill2list = 61;
optional int32 skill3list = 62;
optional float hp_ratio = 63;
optional float damage_ratio = 64;
optional float defence_ratio = 65;
}
message Robot