Add math and classes to install

This commit is contained in:
Sky Johnson 2024-12-21 17:46:29 -06:00
parent c689f37afc
commit 247d5dc461
2 changed files with 39 additions and 9 deletions

View File

@ -174,6 +174,35 @@ function second()
$page .= table_status_msg($query === true, 'Drops', 'populate');
$query = db()->exec(<<<SQL
CREATE TABLE classes (
'id' INTEGER PRIMARY KEY AUTOINCREMENT,
'name' TEXT NOT NULL,
'lore' TEXT NOT NULL,
'exp_rate' INTEGER NOT NULL DEFAULT 3,
'base_hp' INTEGER NOT NULL DEFAULT 15,
'base_mp' INTEGER NOT NULL DEFAULT 10,
'base_str' INTEGER NOT NULL DEFAULT 1,
'base_dex' INTEGER NOT NULL DEFAULT 1,
'hp_rate' INTEGER NOT NULL DEFAULT 2,
'mp_rate' INTEGER NOT NULL DEFAULT 2,
'str_rate' INTEGER NOT NULL DEFAULT 2,
'dex_rate' INTEGER NOT NULL DEFAULT 2,
);
SQL);
$page .= table_status_msg($query === true, 'Classes', 'create');
$query = db()->exec(<<<SQL
INSERT INTO classes VALUES
(1, 'Adventurer', '', 3, 15, 10, 4, 4, 2, 2, 2, 2),
(2, 'Mage', '', 1, 10, 15, 1, 7, 1, 3, 1, 2),
(2, 'Warrior', '', 2, 20, 5, 7, 1, 3, 1, 3, 1),
(3, 'Paladin', '', 5, 15, 15, 5, 5, 2, 2, 2, 2);
SQL);
$page .= table_status_msg($query === true, 'Classes', 'populate');
$query = db()->exec(<<<SQL
CREATE TABLE levels (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
@ -576,6 +605,7 @@ function second()
`latitude` INTEGER NOT NULL default 0,
`longitude` INTEGER NOT NULL default 0,
`charclass` INTEGER NOT NULL default 0,
'class_id' INTEGER NOT NULL DEFAULT 1,
`currentaction` TEXT NOT NULL default 'In Town',
`currentfight` INTEGER NOT NULL default 0,
`currentmonster` INTEGER NOT NULL default 0,

View File

@ -9,7 +9,7 @@ namespace Math;
/**
* Calculates the ***total*** EXP required at a particular level in order to level up.
*/
function calculate_exp(int $level, int $growthRate): int
function calculate_exp(int $level, int $growth_rate): int
{
if ($level < 1) throw new \InvalidArgumentException("Level must be 1 or greater");
@ -21,9 +21,9 @@ function calculate_exp(int $level, int $growthRate): int
// 4 = Slow
// 5 = Fluctuating
if ($growthRate < 0 || $growthRate > 5) throw new \InvalidArgumentException("Growth rate must be between 0 and 5");
if ($growth_rate < 0 || $growth_rate > 5) throw new \InvalidArgumentException("Growth rate must be between 0 and 5");
return match($growthRate) {
return match($growth_rate) {
0 => calculate_erratic_exp($level),
1 => (4 * pow($level, 3)) / 5,
2 => pow($level, 3),
@ -71,9 +71,9 @@ function calculate_points(int $base_points, int $level, int $mode = 2): int
if ($level < 1) throw new \InvalidArgumentException("Level must be 1 or greater");
$growth_multiplier = match($mode) {
1 => 0.75,
2 => 1.0,
3 => 1.5,
1 => 0.15,
2 => 0.3,
3 => 0.6,
default => throw new \InvalidArgumentException("Invalid mode. Use 1 (weak), 2 (normal), or 3 (strong)")
};
@ -88,9 +88,9 @@ function calculate_stat(int $base_stat, int $level, int $mode = 2): int
if ($level < 1) throw new \InvalidArgumentException("Level must be 1 or greater");
$growth_multiplier = match($mode) {
1 => 0.75,
2 => 1.0,
3 => 1.5,
1 => 0.15,
2 => 0.3,
3 => 0.6,
default => throw new \InvalidArgumentException("Invalid mode. Use 1 (weak), 2 (normal), or 3 (strong)")
};