1
This commit is contained in:
parent
4abe8e7f8b
commit
f56448e17a
@ -2454,15 +2454,6 @@ void Creature::WinExp(int win_exp)
|
|||||||
hero_exp_ = 0;
|
hero_exp_ = 0;
|
||||||
GenLevelAttr();
|
GenLevelAttr();
|
||||||
}
|
}
|
||||||
if (hero_grow_meta_->levelExp() <= 0) {
|
|
||||||
hero_exp_ = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (hero_grow_meta_->IsFullLevel()) {
|
|
||||||
hero_exp_ = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
hero_exp_ = std::max(hero_exp_ + add_exp, hero_grow_meta_->levelExp() - 1);
|
|
||||||
if (GetHeroLevel() > old_level) {
|
if (GetHeroLevel() > old_level) {
|
||||||
room->frame_event.AddPropChgEx
|
room->frame_event.AddPropChgEx
|
||||||
(
|
(
|
||||||
@ -2474,6 +2465,15 @@ void Creature::WinExp(int win_exp)
|
|||||||
0,
|
0,
|
||||||
false);
|
false);
|
||||||
}
|
}
|
||||||
|
if (hero_grow_meta_->levelExp() <= 0) {
|
||||||
|
hero_exp_ = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (hero_grow_meta_->IsFullLevel()) {
|
||||||
|
hero_exp_ = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
hero_exp_ = std::min(hero_exp_ + add_exp, hero_grow_meta_->levelExp() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Creature::RecalcDtoAttr()
|
void Creature::RecalcDtoAttr()
|
||||||
|
@ -1581,14 +1581,20 @@ void Human::OnDie()
|
|||||||
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||||
{
|
{
|
||||||
Creature* killer = room->GetCreatureByUniId(stats->killer_id);
|
Creature* killer = room->GetCreatureByUniId(stats->killer_id);
|
||||||
if (killer && GetHeroGrowMeta() && killer->IsHuman() &&
|
if (killer && GetHeroGrowMeta() &&
|
||||||
GetHeroGrowMeta()->lootExp() > 0) {
|
GetHeroGrowMeta()->lootExp() > 0) {
|
||||||
killer->WinExp(GetHeroGrowMeta()->lootExp() * mt::Param::s().battle_gain_exp_rate_killer);
|
Human* real_killer = nullptr;
|
||||||
killer->AsHuman()->GetTeam()->TraverseMembers
|
if (killer->IsHuman()) {
|
||||||
|
real_killer = killer->AsHuman();
|
||||||
|
} else if (killer->IsHero() && killer->master.Get() && killer->master.Get()->IsHuman()) {
|
||||||
|
real_killer = killer->master.Get()->AsHuman();
|
||||||
|
}
|
||||||
|
real_killer->WinExp(GetHeroGrowMeta()->lootExp() * mt::Param::s().battle_gain_exp_rate_killer);
|
||||||
|
real_killer->AsHuman()->GetTeam()->TraverseMembers
|
||||||
(
|
(
|
||||||
[this, killer] (Human* hum) -> bool
|
[this, real_killer] (Human* hum) -> bool
|
||||||
{
|
{
|
||||||
if (killer != hum) {
|
if (real_killer != hum) {
|
||||||
if (GetPos().Distance2D2(hum->GetPos().ToGlmVec3()) <
|
if (GetPos().Distance2D2(hum->GetPos().ToGlmVec3()) <
|
||||||
mt::Param::s().battle_gain_exp_radium) {
|
mt::Param::s().battle_gain_exp_radium) {
|
||||||
hum->WinExp(GetHeroGrowMeta()->lootExp() *
|
hum->WinExp(GetHeroGrowMeta()->lootExp() *
|
||||||
|
Loading…
x
Reference in New Issue
Block a user