This commit is contained in:
Nicholas R Magarett 2024-07-13 07:55:50 -07:00
commit fb568564a1
26551 changed files with 46966 additions and 0 deletions

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# Thumb DB Files
*.db
.idea/
config.php
database.json
.vs/
.idea
.vscode/

26
autoloader.php Normal file
View File

@ -0,0 +1,26 @@
<?php
spl_autoload_register(function ($className) {
$directories = [
'Controllers/',
'Definitions/',
'Effect/',
'Entities/',
'Entities/Services/',
'Models/',
'Services/',
'Utility/',
];
$baseDir = __DIR__ . '/src/';
foreach ($directories as $directory) {
$file = $baseDir . $directory . $className . '.php';
if (file_exists($file)) {
require_once $file;
break;
}
}
FileSystem::getInstance()->setRoot(__DIR__);
});

53
config/config.json Normal file
View File

@ -0,0 +1,53 @@
{
"site": {
"title": "Project Aatheria",
"logo": "images/logo.png",
"root_url": "https://alla.aatheria.com/",
"asset_url": "",
"spell_image_path": "images/spells/",
"spell_image_extension": ".png",
"setup": true
},
"session": {
"cookie_httponly": true,
"cookie_lifetime": 0,
"cookie_use_only_cookies": true,
"cookie_secure": true
},
"display": {
"php_debug": true,
"items_per_page": 50,
"allow_quests_npc": true,
"display_named_npcs_info": true,
"display_npc_stats": true,
"display_spawn_group_info": true,
"group_npcs_by_name": true,
"show_npc_drop_chances": true,
"show_npcs_attack_speed": true,
"show_npcs_average_damages": true,
"spawngroup_around_range": 100,
"trackable_npcs_only": false,
"hide_invisible_men": true,
"item_add_chance_to_drop": true,
"discovered_items_only": false,
"item_found_info": true,
"display_task_activities": true,
"display_task_info": true,
"merchants_dont_drop_stuff": true,
"sort_zone_level_list": true,
"use_spell_globals": false,
"legacy_spell_icons": true,
"ignore_zones": [
"load",
"loading",
"load2",
"nektropos",
"arttest",
"apprentice",
"tutorial"
]
},
"setup": {
"complete": true
}
}

View File

@ -0,0 +1,50 @@
{
"site": {
"title": "",
"logo": "images/logo.png",
"root_url": ""
},
"session": {
"cookie_httponly": true,
"cookie_lifetime": 0,
"cookie_use_only_cookies": true,
"cookie_secure": true
},
"display": {
"php_debug": false,
"items_per_page": 50,
"allow_quests_npc": true,
"display_named_npcs_info": true,
"display_npc_stats": true,
"display_spawn_group_info": true,
"group_npcs_by_name": true,
"show_npc_drop_chances": true,
"show_npcs_attack_speed": true,
"show_npcs_average_damages": true,
"spawngroup_around_range": 100,
"trackable_npcs_only": false,
"hide_invisible_men": true,
"item_add_chance_to_drop": true,
"discovered_items_only": false,
"item_found_info": true,
"display_task_activities": true,
"display_task_info": true,
"merchants_dont_drop_stuff": true,
"server_max_level": 70,
"sort_zone_level_list": true,
"use_spell_globals": false,
"use_legacy": true,
"ignore_zones": [
"load",
"loading",
"load2",
"nektropos",
"arttest",
"apprentice",
"tutorial"
]
},
"setup": {
"complete": false
}
}

View File

@ -0,0 +1,16 @@
{
"default": {
"host": "127.0.0.1",
"user": "root",
"password": "",
"database": "peq",
"port": 3306
},
"content": {
"host": "",
"user": "",
"password": "",
"database": "",
"port": 3306
}
}

31
config/tables.json Normal file
View File

@ -0,0 +1,31 @@
{
"accounts": "account",
"characters": "character_data",
"factions": "faction_list",
"forage": "forage",
"ground_spawns": "ground_spawns",
"items": "items",
"loot_drops": "lootdrop",
"loot_drop_entries": "lootdrop_entries",
"loot_tables": "loottable",
"loot_table_entries": "loottable_entries",
"merchant_lists": "merchantlist",
"tasks": "tasks",
"task_activities": "task_activities",
"npc_factions": "npc_faction",
"npc_faction_entries": "npc_faction_entries",
"npc_spell_entries": "npc_spells_entries",
"npc_spells": "npc_spells",
"npcs": "npc_types",
"pets": "pets",
"spawns": "spawn2",
"spawn_entries": "spawnentry",
"spawn_groups": "spawngroup",
"recipes": "tradeskill_recipe",
"recipe_entries": "tradeskill_recipe_entries",
"zones": "zone",
"discovered_items": "discovered_items",
"spell_globals": "spell_globals",
"spells": "spells_new",
"zone_connections": "zone_points"
}

739
includes/constants.php Normal file
View File

@ -0,0 +1,739 @@
<?php
// tables
$accounts_table = "account";
$character_table = "character_data";
$faction_list_table = "faction_list";
$forage_table = "forage";
$ground_spawns_table = "ground_spawns";
$items_table = "items";
$loot_drop_table = "lootdrop";
$loot_drop_entries_table = "lootdrop_entries";
$loot_table = "loottable";
$loot_table_entries = "loottable_entries";
$merchant_list_table = "merchantlist";
$task_table = "tasks";
$task_activities_table = "activities";
$npc_faction_table = "npc_faction";
$faction_entries_table = "npc_faction_entries";
$npc_spells_entries_table = "npc_spells_entries";
$npc_spells_table = "npc_spells";
$npc_types_table = "npc_types";
$pets_table = "pets";
$spawn2_table = "spawn2";
$spawn_entry_table = "spawnentry";
$spawn_group_table = "spawngroup";
$trade_skill_recipe_table = "tradeskill_recipe";
$trade_skill_recipe_entries = "tradeskill_recipe_entries";
$zones_table = "zone";
$discovered_items_table = "discovered_items";
$spell_globals_table = "spell_globals";
$spells_table = "spells_new";
$tasks_table = "tasks";
$activities_table = "activities";
$tbspawnarea = "spawnarea"; // Tool Specific Table
$tbnews = "eqbnews"; // Tool Specific Table
$tbquestitems = "quest_items"; // Tool Specific Table
$tbraces = "races"; // Tool Specific Table
// merchant classes
$dbmerchants = [40, 41, 59, 61, 67, 68, 70];
// factions (factions.h)
$dbfactions = [
1 => "Ally",
2 => "Warmly",
3 => "Kindly",
4 => "Amiably",
5 => "Indifferent",
9 => "Apprehensive",
8 => "Dubious",
7 => "Threatenly",
6 => "Ready to attack",
];
// classes
$dbclasses_names = [
"Warrior",
"Cleric",
"Paladin",
"Ranger",
"Shadowknight",
"Druid",
"Monk",
"Bard",
"Rogue",
"Shaman",
"Necromancer",
"Wizard",
"Magician",
"Enchanter",
"Beastlord",
"Berserker",
];
$dbclasses = [];
$dbclasses[0] = "Warrior";
$dbclasses[1] = "Warrior";
$dbclasses[2] = "Cleric";
$dbclasses[3] = "Paladin";
$dbclasses[4] = "Ranger";
$dbclasses[5] = "Shadown Knight";
$dbclasses[6] = "Druid";
$dbclasses[7] = "Monk";
$dbclasses[8] = "Bard";
$dbclasses[9] = "Rogue";
$dbclasses[10] = "Shaman";
$dbclasses[11] = "Necromancer";
$dbclasses[12] = "Wizard";
$dbclasses[13] = "Magician";
$dbclasses[14] = "Enchanter";
$dbclasses[15] = "Beastlord";
$dbclasses[16] = "Berserker";
$dbclasses[17] = "Banker";
$dbclasses[20] = "GM Warrior";
$dbclasses[21] = "GM Cleric";
$dbclasses[22] = "GM Paladin";
$dbclasses[23] = "GM Ranger";
$dbclasses[24] = "GM Shadown Knight";
$dbclasses[25] = "GM Druid";
$dbclasses[26] = "GM Monk";
$dbclasses[27] = "GM Bard";
$dbclasses[28] = "GM Rogue";
$dbclasses[29] = "GM Shaman";
$dbclasses[30] = "GM Necromancer";
$dbclasses[31] = "GM Wizard";
$dbclasses[32] = "GM Magician";
$dbclasses[33] = "GM Enchanter";
$dbclasses[34] = "GM Beastlord";
$dbclasses[35] = "GM Berserker";
$dbclasses[40] = "Banker";
$dbclasses[41] = "Shopkeeper";
$dbclasses[59] = "Discord Merchant";
$dbclasses[60] = "Adventure Recruiter";
$dbclasses[61] = "Adventure Merchant";
$dbclasses[63] = "Tribute Master";
$dbclasses[64] = "Guild Tribute Master";
$dbclasses[66] = "Guild Bank";
$dbclasses[67] = "Radiant Crystal Merchant";
$dbclasses[68] = "Ebon Crystal Merchant";
$dbclasses[69] = "Fellowships";
$dbclasses[70] = "Alternate Currency Merchant";
$dbclasses[71] = "Mercenary Merchant";
// Slots
$dbslots = [];
$dbslotsid = [];
$dbslots[4194304] = "Power Source";
$dbslots[2097152] = "Ammo";
$dbslots[1048576] = "Waist";
$dbslots[524288] = "Feet";
$dbslots[262144] = "Legs";
$dbslots[131072] = "Chest";
$dbslots[98304] = "Fingers";
$dbslots[65536] = "Finger";
$dbslots[32768] = "Finger";
$dbslots[16384] = "Secondary";
$dbslots[8192] = "Primary";
$dbslots[4096] = "Hands";
$dbslots[2048] = "Range";
$dbslots[1536] = "Wrists";
$dbslots[1024] = "Wrist";
$dbslots[512] = "Wrist";
$dbslots[256] = "Back";
$dbslots[128] = "Arms";
$dbslots[64] = "Shoulders";
$dbslots[32] = "Neck";
$dbslots[18] = "Ears";
$dbslots[16] = "Ear";
$dbslots[8] = "Face";
$dbslots[4] = "Head";
$dbslots[2] = "Ear";
$dbslots[1] = "Charm";
// ItemClasses 2^(class-1)
$dbiclasses = [];
$dbiclasses[65535] = "All classes";
$dbiclasses[32768] = "Berserker";
$dbiclasses[16384] = "Beastlord";
$dbiclasses[8192] = "Enchanter";
$dbiclasses[4096] = "Magician";
$dbiclasses[2048] = "Wizard";
$dbiclasses[1024] = "Necromancer";
$dbiclasses[512] = "Shaman";
$dbiclasses[256] = "Rogue";
$dbiclasses[128] = "Bard";
$dbiclasses[64] = "Monk";
$dbiclasses[32] = "Druid";
$dbiclasses[16] = "Shadow knight";
$dbiclasses[8] = "Ranger";
$dbiclasses[4] = "Paladin";
$dbiclasses[2] = "Cleric";
$dbiclasses[1] = "Warrior";
$db_classes_short = [];
$db_classes_short[65535] = "ALL";
$db_classes_short[32768] = "BER";
$db_classes_short[16384] = "BST";
$db_classes_short[8192] = "ENC";
$db_classes_short[4096] = "MAG";
$db_classes_short[2048] = "WIZ";
$db_classes_short[1024] = "NEC";
$db_classes_short[512] = "SHM";
$db_classes_short[256] = "ROG";
$db_classes_short[128] = "BRD";
$db_classes_short[64] = "MNK";
$db_classes_short[32] = "DRU";
$db_classes_short[16] = "SHD";
$db_classes_short[8] = "RNG";
$db_classes_short[4] = "PAL";
$db_classes_short[2] = "CLR";
$db_classes_short[1] = "WAR";
// races
$dbraces = [];
$dbraces[65535] = "All races";
$dbraces[32768] = "Drakkin";
$dbraces[16384] = "Froglok";
$dbraces[8192] = "Vah Shir";
$dbraces[4096] = "Iksar";
$dbraces[2048] = "Gnome";
$dbraces[1024] = "Halfling";
$dbraces[512] = "Ogre";
$dbraces[256] = "Troll";
$dbraces[128] = "Dwarf";
$dbraces[64] = "Half Elf";
$dbraces[32] = "Dark Elf";
$dbraces[16] = "High Elf";
$dbraces[8] = "Wood Elf";
$dbraces[4] = "Erudite";
$dbraces[2] = "Barbarian";
$dbraces[1] = "Human";
$db_races_short = [];
$db_races_short[65535] = "ALL";
$db_races_short[32768] = "DRK";
$db_races_short[16384] = "FRG";
$db_races_short[8192] = "VAH";
$db_races_short[4096] = "IKS";
$db_races_short[2048] = "GNM";
$db_races_short[1024] = "HFL";
$db_races_short[512] = "OGR";
$db_races_short[256] = "TRL";
$db_races_short[128] = "DWF";
$db_races_short[64] = "HLF";
$db_races_short[32] = "DKE";
$db_races_short[16] = "HEF";
$db_races_short[8] = "WLF";
$db_races_short[4] = "ERU";
$db_races_short[2] = "BAR";
$db_races_short[1] = "HUM";
// skills
$dbskills = [];
$dbskills[0] = '1H_BLUNT';
$dbskills[1] = '1H_SLASHING';
$dbskills[2] = '2H_BLUNT';
$dbskills[3] = '2H_SLASHING';
$dbskills[4] = 'ABJURATION';
$dbskills[5] = 'ALTERATION';
$dbskills[6] = 'APPLY_POISON';
$dbskills[7] = 'ARCHERY';
$dbskills[8] = 'BACKSTAB';
$dbskills[9] = 'BIND_WOUND';
$dbskills[10] = 'BASH';
$dbskills[11] = 'BLOCKSKILL';
$dbskills[12] = 'BRASS_INSTRUMENTS';
$dbskills[13] = 'CHANNELING';
$dbskills[14] = 'CONJURATION';
$dbskills[15] = 'DEFENSE';
$dbskills[16] = 'DISARM';
$dbskills[17] = 'DISARM_TRAPS';
$dbskills[18] = 'DIVINATION';
$dbskills[19] = 'DODGE';
$dbskills[20] = 'DOUBLE_ATTACK';
$dbskills[21] = 'DRAGON_PUNCH';
$dbskills[22] = 'DUEL_WIELD';
$dbskills[23] = 'EAGLE_STRIKE';
$dbskills[24] = 'EVOCATION';
$dbskills[25] = 'FEIGN_DEATH';
$dbskills[26] = 'FLYING_KICK';
$dbskills[27] = 'FORAGE';
$dbskills[28] = 'HAND_TO_HAND';
$dbskills[29] = 'HIDE';
$dbskills[30] = 'KICK';
$dbskills[31] = 'MEDITATE';
$dbskills[32] = 'MEND';
$dbskills[33] = 'OFFENSE';
$dbskills[34] = 'PARRY';
$dbskills[35] = 'PICK_LOCK';
$dbskills[36] = 'PIERCING';
$dbskills[37] = 'RIPOSTE';
$dbskills[38] = 'ROUND_KICK';
$dbskills[39] = 'SAFE_FALL';
$dbskills[40] = 'SENSE_HEADING';
$dbskills[41] = 'SINGING';
$dbskills[42] = 'SNEAK';
$dbskills[43] = 'SPECIALIZE_ABJURE';
$dbskills[44] = 'SPECIALIZE_ALTERATION';
$dbskills[45] = 'SPECIALIZE_CONJURATION';
$dbskills[46] = 'SPECIALIZE_DIVINATION';
$dbskills[47] = 'SPECIALIZE_EVOCATION';
$dbskills[48] = 'PICK_POCKETS';
$dbskills[49] = 'STRINGED_INSTRUMENTS';
$dbskills[50] = 'SWIMMING';
$dbskills[51] = 'THROWING';
$dbskills[52] = 'CLICKY';
$dbskills[53] = 'TRACKING';
$dbskills[54] = 'WIND_INSTRUMENTS';
$dbskills[55] = 'FISHING';
$dbskills[56] = 'POISON_MAKING';
$dbskills[57] = 'TINKERING';
$dbskills[58] = 'RESEARCH';
$dbskills[59] = 'ALCHEMY';
$dbskills[60] = 'BAKING';
$dbskills[61] = 'TAILORING';
$dbskills[62] = 'SENSE_TRAPS';
$dbskills[63] = 'BLACKSMITHING';
$dbskills[64] = 'FLETCHING';
$dbskills[65] = 'BREWING';
$dbskills[66] = 'ALCOHOL_TOLERANCE';
$dbskills[67] = 'BEGGING';
$dbskills[68] = 'JEWELRY_MAKING';
$dbskills[69] = 'POTTERY';
$dbskills[70] = 'PERCUSSION_INSTRUMENTS';
$dbskills[71] = 'INTIMIDATION';
$dbskills[72] = 'BERSERKING';
$dbskills[73] = 'TAUNT';
// spell effects
$dbspelleffects = [];
$dbspelleffects[28] = 'Invisibility versus Undead';
$dbspelleffects[29] = 'Invisibility versus Animals';
$dbspelleffects[30] = 'Frenzy Radius';
$dbspelleffects[31] = 'Mesmerize';
$dbspelleffects[32] = 'Summon Item';
$dbspelleffects[33] = 'Summon Pet:';
$dbspelleffects[35] = 'Increase Disease Counter';
$dbspelleffects[36] = 'Increase Poison Counter';
$dbspelleffects[40] = 'Invunerability';
$dbspelleffects[41] = 'Destroy Target';
$dbspelleffects[42] = 'Shadowstep';
$dbspelleffects[44] = 'Lycanthropy';
$dbspelleffects[46] = 'Increase Fire Resist';
$dbspelleffects[47] = 'Increase Cold Resist';
$dbspelleffects[48] = 'Increase Poison Resist';
$dbspelleffects[49] = 'Increase Disease Resist';
$dbspelleffects[50] = 'Increase Magic Resist';
$dbspelleffects[52] = 'Sense Undead';
$dbspelleffects[53] = 'Sense Summoned';
$dbspelleffects[54] = 'Sense Animals';
$dbspelleffects[55] = 'Increase Absorb Damage';
$dbspelleffects[56] = 'True North';
$dbspelleffects[57] = 'Levitate';
$dbspelleffects[58] = 'Illusion:';
$dbspelleffects[59] = 'Increase Damage Shield';
$dbspelleffects[61] = 'Identify';
$dbspelleffects[63] = 'Memblur';
$dbspelleffects[64] = 'SpinStun';
$dbspelleffects[65] = 'Infravision';
$dbspelleffects[66] = 'Ultravision';
$dbspelleffects[67] = 'Eye Of Zomm';
$dbspelleffects[68] = 'Reclaim Energy';
$dbspelleffects[69] = 'Increase Max Hitpoints';
$dbspelleffects[71] = 'Summon Skeleton Pet:';
$dbspelleffects[73] = 'Bind Sight';
$dbspelleffects[74] = 'Feign Death';
$dbspelleffects[75] = 'Voice Graft';
$dbspelleffects[76] = 'Sentinel';
$dbspelleffects[77] = 'Locate Corpse';
$dbspelleffects[78] = 'Increase Absorb Magic Damage';
$dbspelleffects[79] = 'Increase HP when cast';
$dbspelleffects[81] = 'Resurrect';
$dbspelleffects[82] = 'Summon PC';
$dbspelleffects[83] = 'Teleport';
$dbspelleffects[85] = 'Add Proc:';
$dbspelleffects[86] = 'Reaction Radius';
$dbspelleffects[87] = 'Increase Magnification';
$dbspelleffects[88] = 'Evacuate';
$dbspelleffects[89] = 'Increase Player Size';
$dbspelleffects[90] = 'Cloak';
$dbspelleffects[91] = 'Summon Corpse';
$dbspelleffects[92] = 'Increase hate';
$dbspelleffects[93] = 'Stop Rain';
$dbspelleffects[94] = 'Make Fragile (Delete if combat)';
$dbspelleffects[95] = 'Sacrifice';
$dbspelleffects[96] = 'Silence';
$dbspelleffects[97] = 'Increase Mana Pool';
$dbspelleffects[98] = 'Increase Haste v2';
$dbspelleffects[99] = 'Root';
$dbspelleffects[100] = 'Increase Hitpoints v2';
$dbspelleffects[101] = 'Complete Heal (with duration)';
$dbspelleffects[102] = 'Fearless';
$dbspelleffects[103] = 'Call Pet';
$dbspelleffects[104] = 'Translocate target to their bind point';
$dbspelleffects[105] = 'Anti-Gate';
$dbspelleffects[106] = 'Summon Warder:';
$dbspelleffects[108] = 'Summon Familiar:';
$dbspelleffects[109] = 'Summon Item v2';
$dbspelleffects[111] = 'Increase All Resists';
$dbspelleffects[112] = 'Increase Effective Casting Level';
$dbspelleffects[113] = 'Summon Horse:';
$dbspelleffects[114] = 'Increase Agro Multiplier';
$dbspelleffects[115] = 'Food/Water';
$dbspelleffects[116] = 'Decrease Curse Counter';
$dbspelleffects[117] = 'Make Weapons Magical';
$dbspelleffects[118] = 'Increase Singing Skill';
$dbspelleffects[119] = 'Increase Haste v3';
$dbspelleffects[120] = 'Set Healing Effectiveness';
$dbspelleffects[121] = 'Reverse Damage Shield';
$dbspelleffects[123] = 'Screech';
$dbspelleffects[124] = 'Increase Spell Damage';
$dbspelleffects[125] = 'Increase Spell Healing';
$dbspelleffects[127] = 'Increase Spell Haste';
$dbspelleffects[128] = 'Increase Spell Duration';
$dbspelleffects[129] = 'Increase Spell Range';
$dbspelleffects[130] = 'Decrease Spell/Bash Hate';
$dbspelleffects[131] = 'Decrease Chance of Using Reagent';
$dbspelleffects[132] = 'Decrease Spell Mana Cost';
$dbspelleffects[134] = 'Limit: Max Level';
$dbspelleffects[135] = 'Limit: Resist(Magic allowed)';
$dbspelleffects[136] = 'Limit: Target';
$dbspelleffects[137] = 'Limit: Effect(Hitpoints allowed)';
$dbspelleffects[138] = 'Limit: Spell Type(Detrimental only)';
$dbspelleffects[139] = 'Limit: Spell';
$dbspelleffects[140] = 'Limit: Min Duration';
$dbspelleffects[141] = 'Limit: Instant spells only';
$dbspelleffects[142] = 'LimitMinLevel';
$dbspelleffects[143] = 'Limit: Min Casting Time';
$dbspelleffects[145] = 'Teleport v2';
$dbspelleffects[147] = 'Increase Hitpoints';
$dbspelleffects[148] = 'Block new spell';
$dbspelleffects[149] = 'Stacking: Overwrite existing spell';
$dbspelleffects[150] = 'Death Save - Restore Full Health';
$dbspelleffects[151] = 'Suspend Pet - Lose Buffs and Equipment';
$dbspelleffects[152] = 'Summon Pets:';
$dbspelleffects[153] = 'Balance Party Health';
$dbspelleffects[154] = 'Remove Detrimental';
$dbspelleffects[156] = 'Illusion: Target';
$dbspelleffects[157] = 'Spell-Damage Shield';
$dbspelleffects[158] = 'Increase Chance to Reflect Spell';
$dbspelleffects[159] = 'Decrease Stats';
$dbspelleffects[167] = 'Pet Power Increase';
$dbspelleffects[168] = 'Increase Melee Mitigation';
$dbspelleffects[169] = 'Increase Chance to Critical Hit';
$dbspelleffects[171] = 'CrippBlowChance';
$dbspelleffects[172] = 'Increase Chance to Avoid Melee';
$dbspelleffects[173] = 'Increase Chance to Riposte';
$dbspelleffects[174] = 'Increase Chance to Dodge';
$dbspelleffects[175] = 'Increase Chance to Parry';
$dbspelleffects[176] = 'Increase Chance to Dual Wield';
$dbspelleffects[177] = 'Increase Chance to Double Attack';
$dbspelleffects[178] = 'Lifetap from Weapon Damage';
$dbspelleffects[179] = 'Instrument Modifier';
$dbspelleffects[180] = 'Increase Chance to Resist Spell';
$dbspelleffects[181] = 'Increase Chance to Resist Fear Spell';
$dbspelleffects[182] = 'Hundred Hands Effect';
$dbspelleffects[183] = 'Increase All Skills Skill Check';
$dbspelleffects[184] = 'Increase Chance to Hit With all Skills';
$dbspelleffects[185] = 'Increase All Skills Damage Modifier';
$dbspelleffects[186] = 'Increase All Skills Minimum Damage Modifier';
$dbspelleffects[188] = 'Increase Chance to Block';
$dbspelleffects[192] = 'Increase hate';
$dbspelleffects[194] = 'Fade';
$dbspelleffects[195] = 'Stun Resist';
$dbspelleffects[200] = 'Increase Proc Modifier';
$dbspelleffects[201] = 'Increase Range Proc Modifier';
$dbspelleffects[205] = 'Rampage';
$dbspelleffects[206] = 'Area of Effect Taunt';
$dbspelleffects[216] = 'Increase Accuracy';
$dbspelleffects[227] = 'Reduce Skill Timer';
$dbspelleffects[254] = 'Blank';
$dbspelleffects[266] = 'Increase Attack Chance';
$dbspelleffects[273] = 'Increase Critical Dot Chance';
$dbspelleffects[289] = 'Improved Spell Effect: ';
$dbspelleffects[294] = 'Increase Critial Spell Chance';
$dbspelleffects[299] = 'Wake the Dead';
$dbspelleffects[311] = 'Limit: Combat Skills Not Allowed';
$dbspelleffects[314] = 'Fixed Duration Invisbility (not documented on Lucy)';
$dbspelleffects[323] = 'Add Defensive Proc:';
$dbspelleffects[330] = 'Critical Damage Mob';
// spell targets
$dbspelltargets = [];
$dbspelltargets[1] = "";
$dbspelltargets[2] = "Area of effect over the caster";
$dbspelltargets[3] = "Group teleport";
$dbspelltargets[4] = "Area of effect around the caster";
$dbspelltargets[5] = "Single target";
$dbspelltargets[6] = "Self only";
$dbspelltargets[8] = "Area of effect around the target";
$dbspelltargets[9] = "Animal";
$dbspelltargets[10] = "Undead only";
$dbspelltargets[11] = "Summoned beings";
$dbspelltargets[13] = "Tap";
$dbspelltargets[14] = "Caster's pet";
$dbspelltargets[15] = "Target's corpse";
$dbspelltargets[16] = "Plant";
$dbspelltargets[17] = "Giant";
$dbspelltargets[18] = "Dragon";
$dbspelltargets[24] = "Area of effect on undeads";
$dbspelltargets[36] = "Area - PC Only";
$dbspelltargets[40] = "Friendly area of effect";
$dbspelltargets[41] = "Group";
// item skills
$dbiskills = [];
$dbiskills[0] = "One Hand Slash";
$dbiskills[1] = "Two Hands Slash";
$dbiskills[2] = "Piercing";
$dbiskills[3] = "One Hand Blunt";
$dbiskills[4] = "Two Hands Blunt";
$dbiskills[45] = "Hand to hand";
// item types
$dbitypes = [];
$dbitypes[0] = "1HS";
$dbitypes[1] = "2HS";
$dbitypes[2] = "Piercing";
$dbitypes[3] = "1HB";
$dbitypes[4] = "2HB";
$dbitypes[5] = "Archery";
$dbitypes[6] = "Unknown";
$dbitypes[7] = "Throwing range items";
$dbitypes[8] = "Shield";
$dbitypes[9] = "Unknown";
$dbitypes[10] = "Armor";
$dbitypes[11] = "Gems";
$dbitypes[12] = "Lockpicks";
$dbitypes[13] = "Unknown";
$dbitypes[14] = "Food";
$dbitypes[15] = "Drink";
$dbitypes[16] = "Light";
$dbitypes[17] = "Combinable";
$dbitypes[18] = "Bandages";
$dbitypes[19] = "Throwing";
$dbitypes[20] = "Scroll";
$dbitypes[21] = "Potion";
$dbitypes[22] = "Unknown";
$dbitypes[23] = "Wind Instrument";
$dbitypes[24] = "Stringed Instrument";
$dbitypes[25] = "Brass Instrument";
$dbitypes[26] = "Percussion Instrument";
$dbitypes[27] = "Arrow";
$dbitypes[28] = "Unknown";
$dbitypes[29] = "Jewelry";
$dbitypes[30] = "Skull";
$dbitypes[31] = "Tome";
$dbitypes[32] = "Note";
$dbitypes[33] = "Key";
$dbitypes[34] = "Coin";
$dbitypes[35] = "2H Piercing";
$dbitypes[36] = "Fishing Pole";
$dbitypes[37] = "Fishing Bait";
$dbitypes[38] = "Alcohol";
$dbitypes[39] = "Key (bis)";
$dbitypes[40] = "Compass";
$dbitypes[41] = "Unknown";
$dbitypes[42] = "Poison";
$dbitypes[43] = "Unknown";
$dbitypes[44] = "Unknown";
$dbitypes[45] = "Martial";
$dbitypes[46] = "Unknown";
$dbitypes[47] = "Unknown";
$dbitypes[48] = "Unknown";
$dbitypes[49] = "Unknown";
$dbitypes[50] = "Unknown";
$dbitypes[51] = "Unknown";
$dbitypes[52] = "Charm";
$dbitypes[53] = "Unknown";
$dbitypes[54] = "Augmentation";
$dbiaugrestrict[1] = "Armor Only";
$dbiaugrestrict[2] = "Weapons Only";
$dbiaugrestrict[3] = "1h Weapons Only";
$dbiaugrestrict[4] = "2h Weapons Only";
$dbiaugrestrict[5] = "1h Slash Only";
$dbiaugrestrict[6] = "1h Blunt Only";
$dbiaugrestrict[7] = "Piercing Only";
$dbiaugrestrict[8] = "Hand To Hand Only";
$dbiaugrestrict[9] = "2h Slash Only";
$dbiaugrestrict[10] = "2h Blunt Only";
$dbiaugrestrict[11] = "2h Pierce Only";
$dbiaugrestrict[12] = "Bows Only";
$dbbardskills[23] = "Wind";
$dbbardskills[24] = "Strings";
$dbbardskills[25] = "Brass";
$dbbardskills[26] = "Percussions";
$dbbardskills[51] = "All instruments";
$NPCTypeArray = [
'###' => 'Boss',
'##' => 'Mini-Boss',
'#' => 'Named',
'~' => 'Quest NPC',
'!' => 'Hidden',
'_' => 'Event Spawned',
];
// damage bonuses 2Hands at 65
//http://lucy.allakhazam.com/dmgbonus.html
$dam2h = [
0,
14,
14,
14,
14,
14,
14,
14,
14,
14, // 0->9
14,
14,
14,
14,
14,
14,
14,
14,
14,
14, // 10->19
14,
14,
14,
14,
14,
14,
14,
14,
35,
35, // 20->29
36,
36,
37,
37,
38,
38,
39,
39,
40,
40, // 30->39
42,
42,
42,
45,
45,
47,
48,
49,
49,
51, // 40->49
51,
52,
53,
54,
54,
56,
56,
57,
58,
59, // 50->59
59,
0,
0,
0,
0,
0,
0,
0,
0,
0, // 60->69
68,
0,
0,
0,
0,
0,
0,
0,
0,
0, // 70->79
0,
0,
0,
0,
0,
80,
0,
0,
0,
0, // 80->89
0,
0,
0,
0,
0,
88,
0,
0,
0,
0, // 90->99
0,
0,
0,
0,
0,
0,
0,
0,
0,
0, // 100->109
0,
0,
0,
0,
0,
0,
0,
0,
0,
0, // 110->119
0,
0,
0,
0,
0,
0,
0,
0,
0,
0, // 120->129
0,
0,
0,
0,
0,
0,
0,
0,
0,
0, // 130->139
0,
0,
0,
0,
0,
0,
0,
0,
0,
0, // 140->149
132,
]; // 150

1243
includes/functions.php Normal file

File diff suppressed because it is too large Load Diff

442
includes/spell.inc.php Normal file
View File

@ -0,0 +1,442 @@
<?php
function SpellDescription($spell, $n, $csv = false)
{
global $dbspelleffects, $dbspelltargets, $items_table, $dbiracenames, $spells_table, $server_max_level;
$print_buffer = '<ul>';
if (($spell["effectid$n"] != 254) AND ($spell["effectid$n"] != 10)) {
$maxlvl = $spell["effect_base_value$n"];
$minlvl = $server_max_level;
for ($i = 1; $i <= 16; $i++) {
if ($spell["classes" . $i] < $minlvl) {
$minlvl = $spell["classes" . $i];
}
}
$min = CalcSpellEffectValue(
$spell["formula" . $n],
$spell["effect_base_value$n"],
$spell["max$n"],
$minlvl
);
$max = CalcSpellEffectValue(
$spell["formula" . $n],
$spell["effect_base_value$n"],
$spell["max$n"],
$server_max_level
);
$base_limit = $spell["effect_limit_value$n"];
if (($min < $max) AND ($max < 0)) {
$tn = $min;
$min = $max;
$max = $tn;
}
if ($csv == true) {
$print_buffer .= ",,";
} else {
$print_buffer .= "<b>$n : Effect type : </b>";
}
switch ($spell["effectid$n"]) {
case 3: // Increase Movement (% / 0)
if ($max < 0) { // Decrease
$print_buffer .= "Decrease Movement";
if ($min != $max) {
$print_buffer .= " by " . abs($min) . "% to " . abs($max) . "%";
} else {
$print_buffer .= " by " . abs(100) . "%";
}
} else {
$print_buffer .= "Increase Movement";
if ($min != $max) {
$print_buffer .= " by " . $min . "% to " . ($max) . "%";
} else {
$print_buffer .= " by " . ($max) . "%";
}
}
break;
case 11: // Decrease OR Inscrease AttackSpeed (max/min = percentage of speed / normal speed, IE, 70=>-30% 130=>+30%
if ($max < 100) { // Decrease
$print_buffer .= "Decrease Attack Speed";
if ($min != $max) {
$print_buffer .= " by " . (100 - $min) . "% to " . (100 - $max) . "%";
} else {
$print_buffer .= " by " . (100 - $max) . "%";
}
} else {
$print_buffer .= "Increase Attack Speed";
if ($min != $max) {
$print_buffer .= " by " . ($min - 100) . "% to " . ($max - 100) . "%";
} else {
$print_buffer .= " by " . ($max - 100) . "%";
}
}
break;
case 21: // stun
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
if ($min != $max) {
$print_buffer .= " (" . ($min / 1000) . " sec (L$minlvl) to " . ($max / 1000) . " sec (L$maxlvl))";
} else {
$print_buffer .= " (" . ($max / 1000) . " sec)";
}
break;
case 32: // summonitem
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$name = get_field_result(
"name",
"SELECT name FROM $items_table WHERE id=" . $spell["effect_base_value$n"]
);
if (($name != "") AND ($csv == false)) {
$print_buffer .= " : <a href=?a=item&id=" . $spell["effect_base_value$n"] . ">$name</a>";
} else {
$print_buffer .= " : $name";
}
break;
case 87: // Increase Magnification
case 98: // Increase Haste v2
case 114: // Increase Agro Multiplier
case 119: // Increase Haste v3
case 123: // Increase Spell Damage
case 124: // Increase Spell Damage
case 125: // Increase Spell Healing
case 127: // Increase Spell Haste
case 128: // Increase Spell Duration
case 129: // Increase Spell Range
case 130: // Decrease Spell/Bash Hate
case 131: // Decrease Chance of Using Reagent
case 132: // Decrease Spell Mana Cost
case 158: // Increase Chance to Reflect Spell
case 168: // Increase Melee Mitigation
case 169: // Increase Chance to Critical Hit
case 172: // Increase Chance to Avoid Melee
case 173: // Increase Chance to Riposte
case 174: // Increase Chance to Dodge
case 175: // Increase Chance to Parry
case 176: // Increase Chance to Dual Wield
case 177: // Increase Chance to Double Attack
case 180: // Increase Chance to Resist Spell
case 181: // Increase Chance to Resist Fear Spell
case 183: // Increase All Skills Skill Check
case 184: // Increase Chance to Hit With all Skills
case 185: // Increase All Skills Damage Modifier
case 186: // Increase All Skills Minimum Damage Modifier
case 188: // Increase Chance to Block
case 200: // Increase Proc Modifier
case 201: // Increase Range Proc Modifier
case 216: // Increase Accuracy
case 227: // Reduce Skill Timer
case 266: // Add Attack Chance
case 273: // Increase Critical Dot Chance
case 294: // Increase Critical Spell Chance
$name = $dbspelleffects[$spell["effectid$n"]];
// For several of these cases, we have better information on
// the range of values for the focus effect.
switch ($spell["effectid$n"]) {
case 123: // Increase Spell Damage
case 124: // Increase Spell Damage
case 125: // Increase Spell Healing
case 131: // Decrease Chance of Using Reagent
case 132: // Decrease Spell Mana Cost
$min = $spell["effect_base_value$n"];
$max = $spell["effect_limit_value$n"];
break;
// Reword this effect to seem more natural, matching
// Allakhazam.
case 130: // Decrease Spell/Bash Hate
$min = $spell["effect_base_value$n"];
$max = $spell["effect_limit_value$n"];
$name = str_replace("Decrease", "Increase", $name);
break;
}
$print_buffer .= $name;
if ($min != $max) {
$print_buffer .= " by $min% to $max%";
} else {
$print_buffer .= " by $max%";
}
break;
case 15: // Increase Mana per tick
case 100: // Increase Hitpoints v2 per tick
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
if ($min != $max) {
$print_buffer .= " by " . abs($min) . " to " . abs(
$max
) . " per tick (total " . abs($min * $duration) . " to " . abs(
$max * $duration
) . ")";
} else {
$print_buffer .= " by $max per tick (total " . abs($max * $duration) . ")";
}
break;
case 30: // Frenzy Radius
case 86: // Reaction Radius
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " (" . $spell["effect_base_value$n"] . "/" . $spell["effect_limit_value$n"] . ")";
break;
case 22: // Charm
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " up to level " . $spell["max1"];
break;
case 23: // Fear
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " up to level " . $spell["max1"];
break;
case 31: // Mesmerize
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " up to level " . $spell["max1"];
break;
case 33: // Summon Pet:
case 68: // Summon Skeleton Pet:
case 106: // Summon Warder:
case 108: // Summon Familiar:
case 113: // Summon Horse:
case 152: // Summon Pets:
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
if ($csv == false) {
$print_buffer .= " <a href=?a=pet&name=" . $spell["teleport_zone"] . ">" . $spell["teleport_zone"] . "</a>";
} else {
$print_buffer .= " : " . $spell["teleport_zone"];
}
break;
case 13: // See Invisible
case 18: // Pacify
case 20: // Blindness
case 25: // Bind Affinity
case 26: // Gate
case 28: // Invisibility versus Undead
case 29: // Invisibility versus Animals
case 40: // Invunerability
case 41: // Destroy Target
case 42: // Shadowstep
case 44: // Lycanthropy
case 52: // Sense Undead
case 53: // Sense Summoned
case 54: // Sense Animals
case 56: // True North
case 57: // Levitate
case 61: // Identify
case 64: // SpinStun
case 65: // Infravision
case 66: // UltraVision
case 67: // Eye of Zomm
case 68: // Reclaim Energy
case 73: // Bind Sight
case 74: // Feign Death
case 75: // Voice Graft
case 76: // Sentinel
case 77: // Locate Corpse
case 82: // Summon PC
case 90: // Cloak
case 93: // Stop Rain
case 94: // Make Fragile (Delete if combat)
case 95: // Sacrifice
case 96: // Silence
case 99: // Root
case 101: // Complete Heal (with duration)
case 103: // Call Pet
case 104: // Translocate target to their bind point
case 105: // Anti-Gate
case 115: // Food/Water
case 117: // Make Weapons Magical
case 135: // Limit: Resist(Magic allowed)
case 137: // Limit: Effect(Hitpoints allowed)
case 138: // Limit: Spell Type(Detrimental only)
case 141: // Limit: Instant spells only
case 150: // Death Save - Restore Full Health
case 151: // Suspend Pet - Lose Buffs and Equipment
case 154: // Remove Detrimental
case 156: // Illusion: Target
case 178: // Lifetap from Weapon Damage
case 179: // Instrument Modifier
case 182: // Hundred Hands Effect
case 194: // Fade
case 195: // Stun Resist
case 205: // Rampage
case 206: // Area of Effect Taunt
case 311: // Limit: Combat Skills Not Allowed
case 314: // Fixed Duration Invisbility
case 299: // Wake the Dead
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
break;
case 58: // Illusion:
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= $dbiracenames[$spell["effect_base_value$n"]];
break;
case 63: // Memblur
case 120: // Set Healing Effectiveness
case 330: // Critical Damage Mob
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " ($max%)";
break;
case 81: // Resurrect
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " and restore " . $spell["effect_base_value$n"] . "% experience";
break;
case 83: // Teleport
case 88: // Evacuate
case 145: // Teleport v2
//$print_buffer .= " (Need to add zone to spells table)";
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
if ($csv == false) {
$print_buffer .= " <a href=?a=zone&name=" . $spell["teleport_zone"] . ">" . $spell["teleport_zone"] . "</a>";
} else {
$print_buffer .= " : " . $spell["teleport_zone"];
}
break;
case 85: // Add Proc:
case 289: // Improved Spell Effect:
case 323: // Add Defensive Proc:
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$name = get_field_result(
"name",
"SELECT name FROM $spells_table WHERE id=" . $spell["effect_base_value$n"]
);
if ($csv == false) {
$print_buffer .= "<a href=?a=spell&id=" . $spell["effect_base_value$n"] . ">$name</a>";
} else {
$print_buffer .= " : $name";
}
break;
case 89: // Increase Player Size
$name = $dbspelleffects[$spell["effectid$n"]];
$min -= 100;
$max -= 100;
if ($max < 0) {
$name = str_replace("Increase", "Decrease", $name);
}
$print_buffer .= $name;
if ($min != $max) {
$print_buffer .= " by $min% to $max%";
} else {
$print_buffer .= " by $max%";
}
break;
case 27: // Cancel Magic
case 134: // Limit: Max Level
case 157: // Spell-Damage Shield
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " ($max)";
break;
case 121: // Reverse Damage Shield
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " ($max)";
break;
case 91: // Summon Corpse
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " (max level $max)";
break;
case 136: // Limit: Target
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
if ($max < 0) {
$max = -$max;
$v = " excluded";
} else {
$v = "";
}
$print_buffer .= " (" . $dbspelltargets[$max] . "$v)";
break;
case 139: // Limit: Spell
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$max = $spell["effect_base_value$n"];
if ($max < 0) {
$max = -$max;
$v = " excluded";
}
$name = get_field_result("name", "SELECT name FROM $spells_table WHERE id=$max");
if ($csv == false) {
$print_buffer .= "($name)";
} else {
$print_buffer .= " (<a href=?a=spell&id=" . $spell["effect_base_value$n"] . ">$name</a>$v)";
}
break;
case 140: // Limit: Min Duration
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$min *= 6;
$max *= 6;
if ($min != $max) {
$print_buffer .= " ($min sec (L$minlvl) to $max sec (L$maxlvl))";
} else {
$print_buffer .= " ($max sec)";
}
break;
case 143: // Limit: Min Casting Time
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$min *= 6;
$max *= 6;
if ($min != $max) {
$print_buffer .= " (" . ($min / 6000) . " sec (L$minlvl) to " . ($max / 6000) . " sec (L$maxlvl))";
} else {
$print_buffer .= " (" . ($max / 6000) . " sec)";
}
break;
case 148: // Stacking: Overwrite existing spell
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " if slot " . ($spell["effectid$n"] - 200) . " is effect '" . $dbspelleffects[$spell["effect_base_value$n"]] . "' and <" . $spell["effect_limit_value$n"];
break;
case 149: // Stacking: Overwrite existing spell
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " if slot " . ($spell["effectid$n"] - 200) . " is effect '" . $dbspelleffects[$spell["effect_base_value$n"]] . "' and <" . $spell["effect_limit_value$n"];
break;
case 147: // Increase Hitpoints (%)
$name = $dbspelleffects[$spell["effectid$n"]];
if ($max < 0) {
$name = str_replace("Increase", "Decrease", $name);
}
$print_buffer .= $name . " by " . $spell["effect_limit_value$n"] . " ($max% max)";
break;
case 153: // Balance Party Health
$print_buffer .= $dbspelleffects[$spell["effectid$n"]];
$print_buffer .= " ($max% penalty)";
break;
case 0: // In/Decrease hitpoints
case 1: // Increase AC
case 2: // Increase ATK
case 4: // Increase STR
case 5: // Increase DEX
case 6: // Increase AGI
case 7: // Increase STA
case 8: // Increase INT
case 9: // Increase WIS
case 19: // Increase Faction
case 35: // Increase Disease Counter
case 36: // Increase Poison Counter
case 46: // Increase Magic Fire
case 47: // Increase Magic Cold
case 48: // Increase Magic Poison
case 49: // Increase Magic Disease
case 50: // Increase Magic Resist
case 55: // Increase Absorb Damage
case 59: // Increase Damage Shield
case 69: // Increase Max Hitpoints
case 78: // Increase Absorb Magic Damage
case 79: // Increase HP when cast
case 92: // Increase hate
case 97: // Increase Mana Pool
case 111: // Increase All Resists
case 112: // Increase Effective Casting
case 116: // Decrease Curse Counter
case 118: // Increase Singing Skill
case 159: // Decrease Stats
case 167: // Pet Power Increase
case 192: // Increase hate
default:
$name = $dbspelleffects[$spell["effectid$n"]];
if ($max < 0) {
$name = str_replace("Increase", "Decrease", $name);
}
$print_buffer .= $name;
if ($min != $max) {
$print_buffer .= " by $min to $max";
} else {
if ($max < 0) {
$max = -$max;
}
$print_buffer .= " by $max";
}
break;
}
$print_buffer .= '</ul>';
}
return $print_buffer;
}

115
public/css/application.css Normal file
View File

@ -0,0 +1,115 @@
body {
}
.lootable.list-group img {
width: 22px;
height: 22px;
}
.lootable.list-group h6 {
margin-bottom: 0;
}
.list-group a p {
margin-bottom: 0;
}
/* Apply a tan background to the whole page */
body {
background-color: #888172;
padding: 0px;
}
/* Style the navigation bar to match the screenshot */
main > nav:first-child, nav > .container:first-child, .nav:first-child{
background-color: #DAD1BD;
}
/* Style the nav links */
.nav-link {
color: black;
}
/* Style the nav links */
header a span, header a svg {
color: white;
font-family: 'Times New Roman', Times, serif;
font-size: 2em;
}
/* Change the container background and style */
section.container {
background-color: #D3C6AC;
border: 1px solid #a67b5b;
border-radius: 4px;
padding: 20px;
}
accordion-header {
background-color: #a67b5b
}
section .list-group-item, section .card,
section .accordion-body {
background-color: #f5f5dc;
}
section .list-group-item:hover {
background-color: #EDE3CE;
}
/* Style the headings to match the font and color */
h1, h2, h3, h4, h5, h6 {
color: #a67b5b;
font-family: 'Times New Roman', Times, serif;
font-weight: bold;
}
/* Style the headings to match the font and color */
.card h1, .card h2, .card h3, .card h4, .card h5, .card h6,
.card h1 a, .card h2 a, .card h3 a, .card h4 a, .card h5 a, .card h6 a {
color: black;
font-family: unset !important;
font-weight: normal;
}
.pagination .page-item > .page-link {
color: #8b5a2b;
}
.pagination .page-item > .page-link:hover {
background-color: #EDE3CE;
}
.pagination .page-item.active > .page-link {
background-color: #8b5a2b;
border-color: #8b5a2b;
color: white;
}
/* Style buttons to match the style in the screenshot */
.btn {
background-color: #8b5a2b;
color: white;
border: none;
}
/* Mimic the content box with shadow */
.content-box {
background-color: #fff;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
padding: 0px 20px 0px 20px;
}
/* Overwrite link colors */
a, a:hover {
color: #8b5a2b;
}
/* Style the footer */
.footer {
background-color: #a67b5b;
color: white;
padding: 10px 20px;
}

9785
public/css/item-icons.css Normal file

File diff suppressed because it is too large Load Diff

2913
public/css/objects.css Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3386
public/css/race-models.css Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,252 @@
.spell-0-40 { background: url('./spell-icons-legacy-40.png') -0px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-1-40 { background: url('./spell-icons-legacy-40.png') -40px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-10-40 { background: url('./spell-icons-legacy-40.png') -0px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-100-40 { background: url('./spell-icons-legacy-40.png') -40px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-101-40 { background: url('./spell-icons-legacy-40.png') -80px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-102-40 { background: url('./spell-icons-legacy-40.png') -80px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-103-40 { background: url('./spell-icons-legacy-40.png') -0px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-104-40 { background: url('./spell-icons-legacy-40.png') -40px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-105-40 { background: url('./spell-icons-legacy-40.png') -80px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-106-40 { background: url('./spell-icons-legacy-40.png') -120px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-107-40 { background: url('./spell-icons-legacy-40.png') -120px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-108-40 { background: url('./spell-icons-legacy-40.png') -120px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-109-40 { background: url('./spell-icons-legacy-40.png') -0px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-11-40 { background: url('./spell-icons-legacy-40.png') -40px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-110-40 { background: url('./spell-icons-legacy-40.png') -80px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-111-40 { background: url('./spell-icons-legacy-40.png') -120px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-112-40 { background: url('./spell-icons-legacy-40.png') -160px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-113-40 { background: url('./spell-icons-legacy-40.png') -160px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-114-40 { background: url('./spell-icons-legacy-40.png') -160px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-115-40 { background: url('./spell-icons-legacy-40.png') -160px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-116-40 { background: url('./spell-icons-legacy-40.png') -0px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-117-40 { background: url('./spell-icons-legacy-40.png') -40px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-118-40 { background: url('./spell-icons-legacy-40.png') -80px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-119-40 { background: url('./spell-icons-legacy-40.png') -120px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-12-40 { background: url('./spell-icons-legacy-40.png') -160px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-120-40 { background: url('./spell-icons-legacy-40.png') -200px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-121-40 { background: url('./spell-icons-legacy-40.png') -200px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-122-40 { background: url('./spell-icons-legacy-40.png') -200px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-123-40 { background: url('./spell-icons-legacy-40.png') -200px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-124-40 { background: url('./spell-icons-legacy-40.png') -200px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-125-40 { background: url('./spell-icons-legacy-40.png') -0px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-126-40 { background: url('./spell-icons-legacy-40.png') -40px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-127-40 { background: url('./spell-icons-legacy-40.png') -80px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-128-40 { background: url('./spell-icons-legacy-40.png') -120px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-129-40 { background: url('./spell-icons-legacy-40.png') -160px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-13-40 { background: url('./spell-icons-legacy-40.png') -200px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-130-40 { background: url('./spell-icons-legacy-40.png') -240px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-131-40 { background: url('./spell-icons-legacy-40.png') -240px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-132-40 { background: url('./spell-icons-legacy-40.png') -240px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-133-40 { background: url('./spell-icons-legacy-40.png') -240px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-134-40 { background: url('./spell-icons-legacy-40.png') -240px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-135-40 { background: url('./spell-icons-legacy-40.png') -240px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-136-40 { background: url('./spell-icons-legacy-40.png') -0px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-137-40 { background: url('./spell-icons-legacy-40.png') -40px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-138-40 { background: url('./spell-icons-legacy-40.png') -80px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-139-40 { background: url('./spell-icons-legacy-40.png') -120px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-14-40 { background: url('./spell-icons-legacy-40.png') -160px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-140-40 { background: url('./spell-icons-legacy-40.png') -200px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-141-40 { background: url('./spell-icons-legacy-40.png') -240px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-142-40 { background: url('./spell-icons-legacy-40.png') -280px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-143-40 { background: url('./spell-icons-legacy-40.png') -280px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-144-40 { background: url('./spell-icons-legacy-40.png') -280px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-145-40 { background: url('./spell-icons-legacy-40.png') -280px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-146-40 { background: url('./spell-icons-legacy-40.png') -280px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-147-40 { background: url('./spell-icons-legacy-40.png') -280px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-148-40 { background: url('./spell-icons-legacy-40.png') -280px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-149-40 { background: url('./spell-icons-legacy-40.png') -0px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-15-40 { background: url('./spell-icons-legacy-40.png') -40px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-150-40 { background: url('./spell-icons-legacy-40.png') -80px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-151-40 { background: url('./spell-icons-legacy-40.png') -120px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-152-40 { background: url('./spell-icons-legacy-40.png') -160px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-153-40 { background: url('./spell-icons-legacy-40.png') -200px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-154-40 { background: url('./spell-icons-legacy-40.png') -240px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-155-40 { background: url('./spell-icons-legacy-40.png') -280px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-156-40 { background: url('./spell-icons-legacy-40.png') -320px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-157-40 { background: url('./spell-icons-legacy-40.png') -320px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-158-40 { background: url('./spell-icons-legacy-40.png') -320px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-159-40 { background: url('./spell-icons-legacy-40.png') -320px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-16-40 { background: url('./spell-icons-legacy-40.png') -320px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-160-40 { background: url('./spell-icons-legacy-40.png') -320px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-161-40 { background: url('./spell-icons-legacy-40.png') -320px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-162-40 { background: url('./spell-icons-legacy-40.png') -320px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-163-40 { background: url('./spell-icons-legacy-40.png') -0px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-164-40 { background: url('./spell-icons-legacy-40.png') -40px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-165-40 { background: url('./spell-icons-legacy-40.png') -80px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-166-40 { background: url('./spell-icons-legacy-40.png') -120px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-167-40 { background: url('./spell-icons-legacy-40.png') -160px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-168-40 { background: url('./spell-icons-legacy-40.png') -200px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-169-40 { background: url('./spell-icons-legacy-40.png') -240px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-17-40 { background: url('./spell-icons-legacy-40.png') -280px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-170-40 { background: url('./spell-icons-legacy-40.png') -320px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-171-40 { background: url('./spell-icons-legacy-40.png') -360px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-172-40 { background: url('./spell-icons-legacy-40.png') -360px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-173-40 { background: url('./spell-icons-legacy-40.png') -360px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-174-40 { background: url('./spell-icons-legacy-40.png') -360px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-175-40 { background: url('./spell-icons-legacy-40.png') -360px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-176-40 { background: url('./spell-icons-legacy-40.png') -360px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-177-40 { background: url('./spell-icons-legacy-40.png') -360px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-178-40 { background: url('./spell-icons-legacy-40.png') -360px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-179-40 { background: url('./spell-icons-legacy-40.png') -360px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-18-40 { background: url('./spell-icons-legacy-40.png') -0px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-180-40 { background: url('./spell-icons-legacy-40.png') -40px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-181-40 { background: url('./spell-icons-legacy-40.png') -80px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-182-40 { background: url('./spell-icons-legacy-40.png') -120px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-183-40 { background: url('./spell-icons-legacy-40.png') -160px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-184-40 { background: url('./spell-icons-legacy-40.png') -200px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-185-40 { background: url('./spell-icons-legacy-40.png') -240px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-186-40 { background: url('./spell-icons-legacy-40.png') -280px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-187-40 { background: url('./spell-icons-legacy-40.png') -320px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-188-40 { background: url('./spell-icons-legacy-40.png') -360px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-189-40 { background: url('./spell-icons-legacy-40.png') -400px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-19-40 { background: url('./spell-icons-legacy-40.png') -400px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-190-40 { background: url('./spell-icons-legacy-40.png') -400px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-191-40 { background: url('./spell-icons-legacy-40.png') -400px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-192-40 { background: url('./spell-icons-legacy-40.png') -400px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-193-40 { background: url('./spell-icons-legacy-40.png') -400px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-194-40 { background: url('./spell-icons-legacy-40.png') -400px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-195-40 { background: url('./spell-icons-legacy-40.png') -400px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-196-40 { background: url('./spell-icons-legacy-40.png') -400px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-197-40 { background: url('./spell-icons-legacy-40.png') -400px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-198-40 { background: url('./spell-icons-legacy-40.png') -0px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-199-40 { background: url('./spell-icons-legacy-40.png') -40px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-2-40 { background: url('./spell-icons-legacy-40.png') -80px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-20-40 { background: url('./spell-icons-legacy-40.png') -120px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-200-40 { background: url('./spell-icons-legacy-40.png') -160px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-201-40 { background: url('./spell-icons-legacy-40.png') -200px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-202-40 { background: url('./spell-icons-legacy-40.png') -240px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-203-40 { background: url('./spell-icons-legacy-40.png') -280px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-204-40 { background: url('./spell-icons-legacy-40.png') -320px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-205-40 { background: url('./spell-icons-legacy-40.png') -360px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-206-40 { background: url('./spell-icons-legacy-40.png') -400px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-207-40 { background: url('./spell-icons-legacy-40.png') -440px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-208-40 { background: url('./spell-icons-legacy-40.png') -440px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-209-40 { background: url('./spell-icons-legacy-40.png') -440px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-21-40 { background: url('./spell-icons-legacy-40.png') -440px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-210-40 { background: url('./spell-icons-legacy-40.png') -440px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-211-40 { background: url('./spell-icons-legacy-40.png') -440px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-212-40 { background: url('./spell-icons-legacy-40.png') -440px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-213-40 { background: url('./spell-icons-legacy-40.png') -440px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-214-40 { background: url('./spell-icons-legacy-40.png') -440px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-215-40 { background: url('./spell-icons-legacy-40.png') -440px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-216-40 { background: url('./spell-icons-legacy-40.png') -440px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-217-40 { background: url('./spell-icons-legacy-40.png') -0px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-218-40 { background: url('./spell-icons-legacy-40.png') -40px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-219-40 { background: url('./spell-icons-legacy-40.png') -80px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-22-40 { background: url('./spell-icons-legacy-40.png') -120px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-220-40 { background: url('./spell-icons-legacy-40.png') -160px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-221-40 { background: url('./spell-icons-legacy-40.png') -200px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-222-40 { background: url('./spell-icons-legacy-40.png') -240px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-223-40 { background: url('./spell-icons-legacy-40.png') -280px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-224-40 { background: url('./spell-icons-legacy-40.png') -320px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-225-40 { background: url('./spell-icons-legacy-40.png') -360px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-226-40 { background: url('./spell-icons-legacy-40.png') -400px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-227-40 { background: url('./spell-icons-legacy-40.png') -440px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-228-40 { background: url('./spell-icons-legacy-40.png') -480px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-229-40 { background: url('./spell-icons-legacy-40.png') -480px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-23-40 { background: url('./spell-icons-legacy-40.png') -480px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-230-40 { background: url('./spell-icons-legacy-40.png') -480px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-231-40 { background: url('./spell-icons-legacy-40.png') -480px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-232-40 { background: url('./spell-icons-legacy-40.png') -480px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-233-40 { background: url('./spell-icons-legacy-40.png') -480px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-234-40 { background: url('./spell-icons-legacy-40.png') -480px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-235-40 { background: url('./spell-icons-legacy-40.png') -480px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-236-40 { background: url('./spell-icons-legacy-40.png') -480px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-237-40 { background: url('./spell-icons-legacy-40.png') -480px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-238-40 { background: url('./spell-icons-legacy-40.png') -480px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-239-40 { background: url('./spell-icons-legacy-40.png') -0px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-24-40 { background: url('./spell-icons-legacy-40.png') -40px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-240-40 { background: url('./spell-icons-legacy-40.png') -80px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-241-40 { background: url('./spell-icons-legacy-40.png') -120px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-242-40 { background: url('./spell-icons-legacy-40.png') -160px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-243-40 { background: url('./spell-icons-legacy-40.png') -200px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-244-40 { background: url('./spell-icons-legacy-40.png') -240px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-245-40 { background: url('./spell-icons-legacy-40.png') -280px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-246-40 { background: url('./spell-icons-legacy-40.png') -320px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-247-40 { background: url('./spell-icons-legacy-40.png') -360px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-248-40 { background: url('./spell-icons-legacy-40.png') -400px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-249-40 { background: url('./spell-icons-legacy-40.png') -440px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-25-40 { background: url('./spell-icons-legacy-40.png') -480px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-250-40 { background: url('./spell-icons-legacy-40.png') -520px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-251-40 { background: url('./spell-icons-legacy-40.png') -520px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-26-40 { background: url('./spell-icons-legacy-40.png') -520px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-27-40 { background: url('./spell-icons-legacy-40.png') -520px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-28-40 { background: url('./spell-icons-legacy-40.png') -520px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-29-40 { background: url('./spell-icons-legacy-40.png') -520px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-3-40 { background: url('./spell-icons-legacy-40.png') -520px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-30-40 { background: url('./spell-icons-legacy-40.png') -520px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-31-40 { background: url('./spell-icons-legacy-40.png') -520px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-32-40 { background: url('./spell-icons-legacy-40.png') -520px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-33-40 { background: url('./spell-icons-legacy-40.png') -520px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-34-40 { background: url('./spell-icons-legacy-40.png') -520px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-35-40 { background: url('./spell-icons-legacy-40.png') -520px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-36-40 { background: url('./spell-icons-legacy-40.png') -0px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-37-40 { background: url('./spell-icons-legacy-40.png') -40px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-38-40 { background: url('./spell-icons-legacy-40.png') -80px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-39-40 { background: url('./spell-icons-legacy-40.png') -120px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-4-40 { background: url('./spell-icons-legacy-40.png') -160px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-40-40 { background: url('./spell-icons-legacy-40.png') -200px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-41-40 { background: url('./spell-icons-legacy-40.png') -240px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-42-40 { background: url('./spell-icons-legacy-40.png') -280px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-43-40 { background: url('./spell-icons-legacy-40.png') -320px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-44-40 { background: url('./spell-icons-legacy-40.png') -360px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-45-40 { background: url('./spell-icons-legacy-40.png') -400px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-46-40 { background: url('./spell-icons-legacy-40.png') -440px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-47-40 { background: url('./spell-icons-legacy-40.png') -480px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-48-40 { background: url('./spell-icons-legacy-40.png') -520px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-49-40 { background: url('./spell-icons-legacy-40.png') -560px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-5-40 { background: url('./spell-icons-legacy-40.png') -560px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-50-40 { background: url('./spell-icons-legacy-40.png') -560px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-51-40 { background: url('./spell-icons-legacy-40.png') -560px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-52-40 { background: url('./spell-icons-legacy-40.png') -560px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-53-40 { background: url('./spell-icons-legacy-40.png') -560px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-54-40 { background: url('./spell-icons-legacy-40.png') -560px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-55-40 { background: url('./spell-icons-legacy-40.png') -560px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-56-40 { background: url('./spell-icons-legacy-40.png') -560px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-57-40 { background: url('./spell-icons-legacy-40.png') -560px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-58-40 { background: url('./spell-icons-legacy-40.png') -560px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-59-40 { background: url('./spell-icons-legacy-40.png') -560px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-6-40 { background: url('./spell-icons-legacy-40.png') -560px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-60-40 { background: url('./spell-icons-legacy-40.png') -560px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-61-40 { background: url('./spell-icons-legacy-40.png') -0px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-62-40 { background: url('./spell-icons-legacy-40.png') -40px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-63-40 { background: url('./spell-icons-legacy-40.png') -80px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-64-40 { background: url('./spell-icons-legacy-40.png') -120px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-65-40 { background: url('./spell-icons-legacy-40.png') -160px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-66-40 { background: url('./spell-icons-legacy-40.png') -200px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-67-40 { background: url('./spell-icons-legacy-40.png') -240px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-68-40 { background: url('./spell-icons-legacy-40.png') -280px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-69-40 { background: url('./spell-icons-legacy-40.png') -320px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-7-40 { background: url('./spell-icons-legacy-40.png') -360px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-70-40 { background: url('./spell-icons-legacy-40.png') -400px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-71-40 { background: url('./spell-icons-legacy-40.png') -440px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-72-40 { background: url('./spell-icons-legacy-40.png') -480px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-73-40 { background: url('./spell-icons-legacy-40.png') -520px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-74-40 { background: url('./spell-icons-legacy-40.png') -560px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-75-40 { background: url('./spell-icons-legacy-40.png') -600px -0px; height: 40px; width: 40px; display: inline-block; }
.spell-76-40 { background: url('./spell-icons-legacy-40.png') -600px -40px; height: 40px; width: 40px; display: inline-block; }
.spell-77-40 { background: url('./spell-icons-legacy-40.png') -600px -80px; height: 40px; width: 40px; display: inline-block; }
.spell-78-40 { background: url('./spell-icons-legacy-40.png') -600px -120px; height: 40px; width: 40px; display: inline-block; }
.spell-79-40 { background: url('./spell-icons-legacy-40.png') -600px -160px; height: 40px; width: 40px; display: inline-block; }
.spell-8-40 { background: url('./spell-icons-legacy-40.png') -600px -200px; height: 40px; width: 40px; display: inline-block; }
.spell-80-40 { background: url('./spell-icons-legacy-40.png') -600px -240px; height: 40px; width: 40px; display: inline-block; }
.spell-81-40 { background: url('./spell-icons-legacy-40.png') -600px -280px; height: 40px; width: 40px; display: inline-block; }
.spell-82-40 { background: url('./spell-icons-legacy-40.png') -600px -320px; height: 40px; width: 40px; display: inline-block; }
.spell-83-40 { background: url('./spell-icons-legacy-40.png') -600px -360px; height: 40px; width: 40px; display: inline-block; }
.spell-84-40 { background: url('./spell-icons-legacy-40.png') -600px -400px; height: 40px; width: 40px; display: inline-block; }
.spell-85-40 { background: url('./spell-icons-legacy-40.png') -600px -440px; height: 40px; width: 40px; display: inline-block; }
.spell-86-40 { background: url('./spell-icons-legacy-40.png') -600px -480px; height: 40px; width: 40px; display: inline-block; }
.spell-87-40 { background: url('./spell-icons-legacy-40.png') -600px -520px; height: 40px; width: 40px; display: inline-block; }
.spell-88-40 { background: url('./spell-icons-legacy-40.png') -600px -560px; height: 40px; width: 40px; display: inline-block; }
.spell-89-40 { background: url('./spell-icons-legacy-40.png') -0px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-9-40 { background: url('./spell-icons-legacy-40.png') -40px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-90-40 { background: url('./spell-icons-legacy-40.png') -80px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-91-40 { background: url('./spell-icons-legacy-40.png') -120px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-92-40 { background: url('./spell-icons-legacy-40.png') -160px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-93-40 { background: url('./spell-icons-legacy-40.png') -200px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-94-40 { background: url('./spell-icons-legacy-40.png') -240px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-95-40 { background: url('./spell-icons-legacy-40.png') -280px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-96-40 { background: url('./spell-icons-legacy-40.png') -320px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-97-40 { background: url('./spell-icons-legacy-40.png') -360px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-98-40 { background: url('./spell-icons-legacy-40.png') -400px -600px; height: 40px; width: 40px; display: inline-block; }
.spell-99-40 { background: url('./spell-icons-legacy-40.png') -440px -600px; height: 40px; width: 40px; display: inline-block; }

2268
public/css/spell-icons.css Normal file

File diff suppressed because it is too large Load Diff

9637
public/css/styles.css Normal file

File diff suppressed because it is too large Load Diff

2
public/css/venobox.min.css vendored Normal file

File diff suppressed because one or more lines are too long

BIN
public/images/alla-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
public/images/emu-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
public/images/eq-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
public/images/icons/0.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

BIN
public/images/icons/1.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
public/images/icons/10.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
public/images/icons/100.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/images/icons/101.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
public/images/icons/102.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
public/images/icons/103.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
public/images/icons/104.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Some files were not shown because too many files have changed in this diff Show More