diff --git a/admin_skills.php b/admin_skills.php index 9e16974..87bbbe4 100644 --- a/admin_skills.php +++ b/admin_skills.php @@ -17,6 +17,34 @@ if (isset($_POST['pid']) && (int)$_POST['pid'] > 0) { if ($config['TFSVersion'] != 'TFS_10') $status = user_is_online($pid); else $status = user_is_online_10($pid); if (!$status) { + // New player level + $level = (int)$_POST['level']; + + // Fetch stat gain for vocation + $statgain = $config['vocations_gain'][(int)$_POST['vocation']]; + + if ((int)$_POST['vocation'] !== 0) { + // Fetch base level and stats: + $baselevel = $config['level']; + $basehealth = $config['health']; + $basemana = $config['mana']; + $basecap = $config['cap']; + } else { // No vocation stats + // Fetch base level and stats: + $baselevel = $config['level']; + $basehealth = $config['health']; + $basemana = $config['mana']; + $basecap = $config['cap']; + } + + $levelC = $level - $baselevel; + if ($levelC >= 1) { + $newhp = $basehealth + ($statgain['hp'] * $levelC); + $newmp = $basemana + ($statgain['mp'] * $levelC); + $newcap = $basecap + ($statgain['cap'] * $levelC); + } else die("Failed to calibrate skills. Level below $baselevel."); + + // Calibrate hp/mana/cap if ($config['TFSVersion'] != 'TFS_10') { mysql_update("UPDATE `player_skills` SET `value`='". (int)$_POST['fist'] ."' WHERE `player_id`='$pid' AND `skillid`='0' LIMIT 1;"); mysql_update("UPDATE `player_skills` SET `value`='". (int)$_POST['club'] ."' WHERE `player_id`='$pid' AND `skillid`='1' LIMIT 1;"); @@ -26,10 +54,13 @@ mysql_update("UPDATE `player_skills` SET `value`='". (int)$_POST['dist'] ."' WHE mysql_update("UPDATE `player_skills` SET `value`='". (int)$_POST['shield'] ."' WHERE `player_id`='$pid' AND `skillid`='5' LIMIT 1;"); mysql_update("UPDATE `player_skills` SET `value`='". (int)$_POST['fish'] ."' WHERE `player_id`='$pid' AND `skillid`='6' LIMIT 1;"); mysql_update("UPDATE `players` SET `maglevel`='". (int)$_POST['magic'] ."' WHERE `id`='$pid' LIMIT 1;"); -mysql_update("UPDATE `players` SET `level`='". (int)$_POST['level'] ."' WHERE `id`='$pid' LIMIT 1;"); -mysql_update("UPDATE `players` SET `experience`='". level_to_experience((int)$_POST['level']) ."' WHERE `id`='$pid' LIMIT 1;"); +mysql_update("UPDATE `players` SET `vocation`='". (int)$_POST['vocation'] ."' WHERE `id`='$pid' LIMIT 1;"); +mysql_update("UPDATE `players` SET `level`='". $level ."' WHERE `id`='$pid' LIMIT 1;"); +mysql_update("UPDATE `players` SET `experience`='". level_to_experience($level) ."' WHERE `id`='$pid' LIMIT 1;"); +// Update HP/mana/cap accordingly to level & vocation +mysql_update("UPDATE `players` SET `health`='". $newhp ."', `healthmax`='". $newhp ."', `mana`='". $newmp ."', `manamax`='". $newmp ."', `cap`='". $newcap ."' WHERE `id`='$pid' LIMIT 1;"); } else { - mysql_update("UPDATE `players` SET `skill_fist`='". (int)$_POST['fist'] ."', `skill_club`='". (int)$_POST['club'] ."', `skill_sword`='". (int)$_POST['sword'] ."', `skill_axe`='". (int)$_POST['axe'] ."', `skill_dist`='". (int)$_POST['dist'] ."', `skill_shielding`='". (int)$_POST['shield'] ."', `skill_fishing`='". (int)$_POST['fish'] ."', `maglevel`='". (int)$_POST['magic'] ."', `level`='". (int)$_POST['level'] ."', `experience`='". level_to_experience((int)$_POST['level']) ."' WHERE `id`='$pid' LIMIT 1;"); + mysql_update("UPDATE `players` SET `health`='". $newhp ."', `healthmax`='". $newhp ."', `mana`='". $newmp ."', `manamax`='". $newmp ."', `cap`='". $newcap ."', `vocation`='". (int)$_POST['vocation'] ."', `skill_fist`='". (int)$_POST['fist'] ."', `skill_club`='". (int)$_POST['club'] ."', `skill_sword`='". (int)$_POST['sword'] ."', `skill_axe`='". (int)$_POST['axe'] ."', `skill_dist`='". (int)$_POST['dist'] ."', `skill_shielding`='". (int)$_POST['shield'] ."', `skill_fishing`='". (int)$_POST['fish'] ."', `maglevel`='". (int)$_POST['magic'] ."', `level`='". $level ."', `experience`='". level_to_experience($level) ."' WHERE `id`='$pid' LIMIT 1;"); } ?>