This commit is contained in:
aozhiwei 2023-03-27 21:12:41 +08:00
parent ac8bb968bf
commit d26cd19ac7
3 changed files with 18 additions and 9 deletions

View File

@ -424,25 +424,34 @@ void BattleDataContext::GetHeroLvQuality(long long& hero_uniid, int& hero_lv, in
} }
} }
void BattleDataContext::GetWeaponLvQuality(long long& weapon_uniid, int& weapon_lv, int& quality) void BattleDataContext::GetWeaponLvQuality(long long weapon_uniid, int& weapon_lv, int& quality)
{ {
weapon_uniid = 0;
weapon_lv = 1; weapon_lv = 1;
quality = 1; quality = 1;
if (owner_.Get()->IsPlayer()) { if (owner_.Get()->IsPlayer()) {
if (weapon1_ability_) { if (weapon1_ability_ && weapon_uniid == weapon_dto1->Get("gun_uniid", 0).GetInt64()) {
weapon_uniid = weapon_dto1->Get("gun_uniid", 0).GetInt64();
weapon_lv = weapon_dto1->Get("gun_lv", 0).GetInt(); weapon_lv = weapon_dto1->Get("gun_lv", 0).GetInt();
quality = weapon_dto1->Get("quality", 0).GetInt(); quality = weapon_dto1->Get("quality", 0).GetInt();
} }
if (weapon2_ability_) { if (weapon2_ability_ && weapon_uniid == weapon_dto2->Get("gun_uniid", 0).GetInt64()) {
weapon_uniid = weapon_dto2->Get("gun_uniid", 0).GetInt64();
weapon_lv = weapon_dto2->Get("gun_lv", 0).GetInt(); weapon_lv = weapon_dto2->Get("gun_lv", 0).GetInt();
quality = weapon_dto2->Get("quality", 0).GetInt(); quality = weapon_dto2->Get("quality", 0).GetInt();
} }
} }
} }
int BattleDataContext::GetWeaponMaxLv()
{
int max_weapon_lv = 1;
if (weapon1_ability_) {
max_weapon_lv = std::max(max_weapon_lv, weapon_dto1->Get("gun_lv", 0).GetInt());
}
if (weapon2_ability_) {
max_weapon_lv = std::max(max_weapon_lv, weapon_dto2->Get("gun_lv", 0).GetInt());
}
return std::max(1, max_weapon_lv);
}
void BattleDataContext::CalcBattleStat(struct PlayerStats* stats) void BattleDataContext::CalcBattleStat(struct PlayerStats* stats)
{ {
if (!owner_.Get()->IsPlayer()) { if (!owner_.Get()->IsPlayer()) {

View File

@ -42,7 +42,8 @@ struct BattleDataContext
BattleDataContext(); BattleDataContext();
void GetHeroLvQuality(long long& hero_uniid, int& hero_lv, int& quality); void GetHeroLvQuality(long long& hero_uniid, int& hero_lv, int& quality);
void GetWeaponLvQuality(long long& weapon_uniid, int& weapon_lv, int& quality); void GetWeaponLvQuality(long long weapon_uniid, int& weapon_lv, int& quality);
int GetWeaponMaxLv();
void ParseResult(a8::XObject& obj); void ParseResult(a8::XObject& obj);

View File

@ -285,10 +285,9 @@ void Weapon::ToPB(Creature* c, cs::MFWeapon* pb_obj)
pb_obj->set_weapon_uniid(a8::XValue(weapon_uniid).GetString()); pb_obj->set_weapon_uniid(a8::XValue(weapon_uniid).GetString());
pb_obj->set_weapon_id(weapon_id); pb_obj->set_weapon_id(weapon_id);
if (weapon_uniid && weapon_lv == 0) { if (weapon_uniid && weapon_lv == 0) {
long long p_weapon_uniid = 0;
int p_weapon_lv = 1; int p_weapon_lv = 1;
int p_quality = 1; int p_quality = 1;
c->GetBattleContext()->GetWeaponLvQuality(p_weapon_uniid, p_weapon_lv, p_quality); c->GetBattleContext()->GetWeaponLvQuality(weapon_uniid, p_weapon_lv, p_quality);
weapon_lv = p_weapon_lv; weapon_lv = p_weapon_lv;
} }
pb_obj->set_weapon_lv(std::max(1, weapon_lv)); pb_obj->set_weapon_lv(std::max(1, weapon_lv));