This is a simple fix for the overpotting bug (if you use a potion that restores more HP than you have, you die).
1). Open Inventory.cpp
2). Find this code:
3). Replace it with this code:
4). Re-compile
5). ???
6). PROFIT!
The server should run fine. Post any problems here.
1). Open Inventory.cpp
2). Find this code:
Code:
if(Drops::consumes[itemid].hp>0){
player->setHP(player->getHP()+Drops::consumes[itemid].hp);
}
if(Drops::consumes[itemid].mp>0){
player->setMP(player->getMP()+Drops::consumes[itemid].mp);
}
if(Drops::consumes[itemid].hpr>0){
player->setHP(player->getHP()+Drops::consumes[itemid].hpr*player->getMHP()/100);
}
if(Drops::consumes[itemid].mpr>0){
player->setMP(player->getMP()+Drops::consumes[itemid].mpr*player->getMMP()/100);
}
Code:
if(Drops::consumes[itemid].hp>0){
int o = player->getHP()+Drops::consumes[itemid].hp;
int h = player->getMHP();
if(player->getHP() == h)
player->setHP(player->getMHP());
else if(o>h)
player->setHP(player->getMHP());
else
player->setHP(player->getHP()+Drops::consumes[itemid].hp);
}
if(Drops::consumes[itemid].mp>0){
int o = player->getMP()+Drops::consumes[itemid].mp;
int h = player->getMMP();
if(player->getMP() == h)
player->setMP(player->getMMP());
else if(o>h)
player->setMP(player->getMMP());
else
player->setMP(player->getMP()+Drops::consumes[itemid].mp);
}
if(Drops::consumes[itemid].hpr>0){
int o = player->getHP()+Drops::consumes[itemid].hpr*player->getMHP()/100;
int h = player->getMHP();
if(player->getHP() == h)
player->setHP(player->getMHP());
else if(o>h)
player->setHP(player->getMHP());
else
player->setHP(player->getHP()+Drops::consumes[itemid].hpr*player->getMHP()/100);
}
if(Drops::consumes[itemid].mpr>0){
int o = player->getMP()+Drops::consumes[itemid].mpr*player->getMMP()/100;
int h = player->getMMP();
if(player->getMP() == h)
player->setMP(player->getMMP());
else if(o>h)
player->setMP(player->getMMP());
else
player->setMP(player->getMP()+Drops::consumes[itemid].mpr*player->getMMP()/100);
}
5). ???
6). PROFIT!
The server should run fine. Post any problems here.