From ccfd2b4f559a5d8f1e8d71daf203a245f2538d70 Mon Sep 17 00:00:00 2001 From: slawkens Date: Sat, 3 Feb 2024 20:54:09 +0100 Subject: [PATCH] Rename creatures to monsters --- CHANGELOG.md | 2 +- system/compat/base.php | 5 +- system/functions.php | 21 ++--- system/migrations/40.php | 1 + system/pages/creatures.php | 86 ------------------- system/pages/monsters.php | 86 +++++++++++++++++++ system/routes.php | 2 +- system/src/DataLoader.php | 6 +- system/src/{Creatures.php => Monsters.php} | 2 +- system/template.php | 2 +- .../{creature.html.twig => monster.html.twig} | 64 +++++++------- ...ml.twig => monsters.back_button.html.twig} | 6 +- ...creatures.html.twig => monsters.html.twig} | 52 +++++------ 13 files changed, 170 insertions(+), 165 deletions(-) delete mode 100644 system/pages/creatures.php create mode 100644 system/pages/monsters.php rename system/src/{Creatures.php => Monsters.php} (99%) rename system/templates/{creature.html.twig => monster.html.twig} (60%) rename system/templates/{creatures.back_button.html.twig => monsters.back_button.html.twig} (52%) rename system/templates/{creatures.html.twig => monsters.html.twig} (54%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ec16043..cc04b286 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,7 +57,7 @@ Minimum PHP version for this release is 8.1. * Highscores * frags works for TFS 1.x * cached - * creatures + * Monsters * moved pages to Twig: * experience stages * update player_deaths entries on name change diff --git a/system/compat/base.php b/system/compat/base.php index 1a606be3..d29c9f3a 100644 --- a/system/compat/base.php +++ b/system/compat/base.php @@ -74,4 +74,7 @@ function fieldExist($field, $table) global $db; return $db->hasColumn($table, $field); } -?> + +function getCreatureImgPath($creature): string { + return getMonsterImgPath($creature); +} diff --git a/system/functions.php b/system/functions.php index 6bd383dd..308919b8 100644 --- a/system/functions.php +++ b/system/functions.php @@ -105,7 +105,7 @@ function getPlayerLink($name, $generate = true): string function getMonsterLink($name, $generate = true): string { - $url = BASE_URL . (setting('core.friendly_urls') ? '' : 'index.php/') . 'creatures/' . urlencode($name); + $url = BASE_URL . (setting('core.friendly_urls') ? '' : 'index.php/') . 'monsters/' . urlencode($name); if(!$generate) return $url; return generateLink($url, $name); @@ -1559,18 +1559,19 @@ function right($str, $length) { return substr($str, -$length); } -function getCreatureImgPath($creature){ - $creature_path = setting('core.monsters_images_url'); - $creature_gfx_name = trim(strtolower($creature)) . setting('core.monsters_images_extension'); - if (!file_exists($creature_path . $creature_gfx_name)) { - $creature_gfx_name = str_replace(" ", "", $creature_gfx_name); - if (file_exists($creature_path . $creature_gfx_name)) { - return $creature_path . $creature_gfx_name; +function getMonsterImgPath($monster): string +{ + $monster_path = setting('core.monsters_images_url'); + $monster_gfx_name = trim(strtolower($monster)) . setting('core.monsters_images_extension'); + if (!file_exists($monster_path . $monster_gfx_name)) { + $monster_gfx_name = str_replace(" ", "", $monster_gfx_name); + if (file_exists($monster_path . $monster_gfx_name)) { + return $monster_path . $monster_gfx_name; } else { - return $creature_path . 'nophoto.png'; + return $monster_path . 'nophoto.png'; } } else { - return $creature_path . $creature_gfx_name; + return $monster_path . $monster_gfx_name; } } diff --git a/system/migrations/40.php b/system/migrations/40.php index 3287a6d0..7a7eb310 100644 --- a/system/migrations/40.php +++ b/system/migrations/40.php @@ -9,3 +9,4 @@ Menu::where('link', 'lastkills')->update(['link' => 'last-kills']); Menu::where('link', 'serverInfo')->update(['link' => 'server-info']); Menu::where('link', 'experienceStages')->update(['link' => 'exp-stages']); Menu::where('link', 'experienceTable')->update(['link' => 'exp-table']); +Menu::where('link', 'creatures')->update(['link' => 'monsters']); diff --git a/system/pages/creatures.php b/system/pages/creatures.php deleted file mode 100644 index adafa037..00000000 --- a/system/pages/creatures.php +++ /dev/null @@ -1,86 +0,0 @@ - - * @author Slawkens - * @author Lee - * @copyright 2020 MyAAC - * @link https://my-aac.org - */ - -use MyAAC\Models\Monster; - -defined('MYAAC') or die('Direct access not allowed!'); -$title = 'Creatures'; - -if (empty($_REQUEST['name'])) { - // display list of monsters - $preview = setting('core.monsters_images_preview'); - $creatures = Monster::where('hide', '!=', 1)->when(!empty($_REQUEST['boss']), function ($query) { - $query->where('rewardboss', 1); - })->get()->toArray(); - - if ($preview) { - foreach($creatures as $key => &$creature) - { - $creature['img_link'] = getCreatureImgPath($creature['name']); - } - } - - $twig->display('creatures.html.twig', array( - 'creatures' => $creatures, - 'preview' => $preview - )); - - return; -} - -// display monster -$creature_name = urldecode(stripslashes(ucwords(strtolower($_REQUEST['name'])))); -$creature = Monster::where('hide', '!=', 1)->where('name', $creature_name)->first()->toArray(); - -if (isset($creature['name'])) { - function sort_by_chance($a, $b) - { - if ($a['chance'] == $b['chance']) { - return 0; - } - return ($a['chance'] > $b['chance']) ? -1 : 1; - } - - $title = $creature['name'] . " - Creatures"; - - $creature['img_link']= getCreatureImgPath($creature_name); - - $voices = json_decode($creature['voices'], true); - $summons = json_decode($creature['summons'], true); - $elements = json_decode($creature['elements'], true); - $immunities = json_decode($creature['immunities'], true); - $loot = json_decode($creature['loot'], true); - usort($loot, 'sort_by_chance'); - - foreach ($loot as &$item) { - $item['name'] = getItemNameById($item['id']); - $item['rarity_chance'] = round($item['chance'] / 1000, 2); - $item['rarity'] = getItemRarity($item['chance']); - $item['tooltip'] = ucfirst($item['name']) . '
Chance: ' . $item['rarity'] . (setting('core.monsters_loot_percentage') ? ' ('. $item['rarity_chance'] .'%)' : '') . '
Max count: ' . $item['count']; - } - - $creature['loot'] = isset($loot) ? $loot : null; - $creature['voices'] = isset($voices) ? $voices : null; - $creature['summons'] = isset($summons) ? $summons : null; - $creature['elements'] = isset($elements) ? $elements : null; - $creature['immunities'] = isset($immunities) ? $immunities : null; - - $twig->display('creature.html.twig', array( - 'creature' => $creature, - )); - -} else { - echo "Creature with name " . $creature_name . " doesn't exist."; -} - -// back button -$twig->display('creatures.back_button.html.twig'); diff --git a/system/pages/monsters.php b/system/pages/monsters.php new file mode 100644 index 00000000..17252438 --- /dev/null +++ b/system/pages/monsters.php @@ -0,0 +1,86 @@ + + * @author Slawkens + * @author Lee + * @copyright 2020 MyAAC + * @link https://my-aac.org + */ + +use MyAAC\Models\Monster; + +defined('MYAAC') or die('Direct access not allowed!'); +$title = 'Monsters'; + +if (empty($_REQUEST['name'])) { + // display list of monsters + $preview = setting('core.monsters_images_preview'); + $monsters = Monster::where('hide', '!=', 1)->when(!empty($_REQUEST['boss']), function ($query) { + $query->where('rewardboss', 1); + })->get()->toArray(); + + if ($preview) { + foreach($monsters as $key => &$monster) + { + $monster['img_link'] = getMonsterImgPath($monster['name']); + } + } + + $twig->display('monsters.html.twig', array( + 'monsters' => $monsters, + 'preview' => $preview + )); + + return; +} + +// display monster +$monster_name = urldecode(stripslashes(ucwords(strtolower($_REQUEST['name'])))); +$monster = Monster::where('hide', '!=', 1)->where('name', $monster_name)->first()->toArray(); + +if (isset($monster['name'])) { + function sort_by_chance($a, $b) + { + if ($a['chance'] == $b['chance']) { + return 0; + } + return ($a['chance'] > $b['chance']) ? -1 : 1; + } + + $title = $monster['name'] . " - Monsters"; + + $monster['img_link']= getMonsterImgPath($monster_name); + + $voices = json_decode($monster['voices'], true); + $summons = json_decode($monster['summons'], true); + $elements = json_decode($monster['elements'], true); + $immunities = json_decode($monster['immunities'], true); + $loot = json_decode($monster['loot'], true); + usort($loot, 'sort_by_chance'); + + foreach ($loot as &$item) { + $item['name'] = getItemNameById($item['id']); + $item['rarity_chance'] = round($item['chance'] / 1000, 2); + $item['rarity'] = getItemRarity($item['chance']); + $item['tooltip'] = ucfirst($item['name']) . '
Chance: ' . $item['rarity'] . (setting('core.monsters_loot_percentage') ? ' ('. $item['rarity_chance'] .'%)' : '') . '
Max count: ' . $item['count']; + } + + $monster['loot'] = $loot ?? null; + $monster['voices'] = $voices ?? null; + $monster['summons'] = $summons ?? null; + $monster['elements'] = $elements ?? null; + $monster['immunities'] = $immunities ?? null; + + $twig->display('monster.html.twig', array( + 'monster' => $monster, + )); + +} else { + echo "Monster with name " . $monster_name . " doesn't exist."; +} + +// back button +$twig->display('monsters.back_button.html.twig'); diff --git a/system/routes.php b/system/routes.php index 3bb2a0df..35516b3e 100644 --- a/system/routes.php +++ b/system/routes.php @@ -33,7 +33,7 @@ return [ ['GET', 'bans/{page:int}[/]', 'bans.php'], [['GET', 'POST'], 'characters[/{name:string}]', 'characters.php'], ['GET', 'changelog[/{page:int}]', 'changelog.php'], - [['GET', 'POST'], 'creatures[/{name:string}]', 'creatures.php'], + [['GET', 'POST'], 'monsters[/{name:string}]', 'monsters.php'], [['GET', 'POST'], 'faq[/{action:string}]', 'faq.php'], diff --git a/system/src/DataLoader.php b/system/src/DataLoader.php index cfe9d502..df2ba6e9 100644 --- a/system/src/DataLoader.php +++ b/system/src/DataLoader.php @@ -46,16 +46,16 @@ class DataLoader self::$startTime = microtime(true); - if(Creatures::loadFromXML()) { + if(Monsters::loadFromXML()) { success(self::$locale['step_database_loaded_monsters'] . self::getLoadedTime()); - if(Creatures::getMonstersList()->hasErrors()) { + if(Monsters::getMonstersList()->hasErrors()) { self::$locale['step_database_error_monsters'] = str_replace('$LOG$', 'system/logs/error.log', self::$locale['step_database_error_monsters']); warning(self::$locale['step_database_error_monsters']); } } else { - error(Creatures::getLastError()); + error(Monsters::getLastError()); } self::$startTime = microtime(true); diff --git a/system/src/Creatures.php b/system/src/Monsters.php similarity index 99% rename from system/src/Creatures.php rename to system/src/Monsters.php index 0e888eab..82100073 100644 --- a/system/src/Creatures.php +++ b/system/src/Monsters.php @@ -13,7 +13,7 @@ namespace MyAAC; use MyAAC\Models\Monster; -class Creatures { +class Monsters { /** * @var \OTS_MonstersList */ diff --git a/system/template.php b/system/template.php index 8b419295..8ecb045b 100644 --- a/system/template.php +++ b/system/template.php @@ -114,7 +114,7 @@ $template['link_account_logout'] = getLink('account/logout'); $template['link_news_archive'] = getLink('news/archive'); -$links = array('news', 'changelog', 'rules', 'downloads', 'characters', 'online', 'highscores', 'powergamers', 'lastkills' => 'last-kills', 'houses', 'guilds', 'wars', 'polls', 'bans', 'team', 'creatures', 'spells', 'commands', 'exp-stages', 'freeHouses', 'serverInfo', 'exp-table', 'faq', 'points', 'gifts', 'bugtracker', 'gallery'); +$links = array('news', 'changelog', 'rules', 'downloads', 'characters', 'online', 'highscores', 'powergamers', 'lastkills' => 'last-kills', 'houses', 'guilds', 'wars', 'polls', 'bans', 'team', 'creatures' => 'monsters', 'monsters', 'spells', 'commands', 'exp-stages', 'freeHouses', 'serverInfo', 'exp-table', 'faq', 'points', 'gifts', 'bugtracker', 'gallery'); foreach($links as $key => $value) { $key = is_string($key) ? $key : $value; $template['link_' . $key] = getLink($value); diff --git a/system/templates/creature.html.twig b/system/templates/monster.html.twig similarity index 60% rename from system/templates/creature.html.twig rename to system/templates/monster.html.twig index 18828e0c..b55a892d 100644 --- a/system/templates/creature.html.twig +++ b/system/templates/monster.html.twig @@ -1,7 +1,7 @@