Logged in as admin, loading engine/XML/spells.xml file and updating cache.";
// SPELLS XML TO PHP ARRAY
$spellsXML = simplexml_load_file("engine/XML/spells.xml");
if ($spellsXML !== false) {
$types = array();
$type_attr = array();
$groups = array();
// This empty array will eventually contain all spells grouped by type and indexed by spell name
$spells = array();
// Loop through each XML spell object
foreach ($spellsXML as $type => $spell) {
// Get spell types
if (!in_array($type, $types)) {
$types[] = $type;
$type_attr[$type] = array();
}
// Get spell attributes
$attributes = array();
// Extract attribute values from the XML object and store it in a more manage friendly way $attributes
foreach ($spell->attributes() as $aName => $aValue)
$attributes["$aName"] = "$aValue";
// Remove unececsary attributes
if (isset($attributes['script'])) unset($attributes['script']);
if (isset($attributes['spellid'])) unset($attributes['spellid']);
//if (isset($attributes['id'])) unset($attributes['id']);
//if (isset($attributes['conjureId'])) unset($attributes['conjureId']);
if (isset($attributes['function'])) unset($attributes['function']);
// Populate type attributes
foreach (array_keys($attributes) as $attr) {
if (!in_array($attr, $type_attr[$type]))
$type_attr[$type][] = $attr;
}
// Get spell groups
if (isset($attributes['group'])) {
if (!in_array($attributes['group'], $groups))
$groups[] = $attributes['group'];
}
// Get spell vocations
$vocations = array();
foreach ($spell->vocation as $vocation) {
foreach ($vocation->attributes() as $attributeName => $attributeValue) {
if ("$attributeName" == "name") {
$vocId = vocation_name_to_id("$attributeValue");
$vocations[] = ($vocId !== false) ? $vocId : "$attributeValue";
} elseif ("$attributeName" == "id") {
$vocations[] = (int)"$attributeValue";
}
}
}
// Exclude monster spells (Monster spells looks like this on the ORTS data pack)
$words = (isset($attributes['words'])) ? $attributes['words'] : false;
// Also exclude "house spells" such as aleta sio.
$name = (isset($attributes['name'])) ? $attributes['name'] : false;
if (substr($words, 0, 3) !== '###' && substr($name, 0, 5) !== 'House') {
// Build full spell list where the spell name is the key to the spell array.
$spells[$type][$name] = array('vocations' => $vocations);
// Populate spell array with potential relevant attributes for the spell type
foreach ($type_attr[$type] as $att)
$spells[$type][$name][$att] = (isset($attributes[$att])) ? $attributes[$att] : false;
}
}
// Sort the spell list properly
foreach (array_keys($spells) as $type) {
usort($spells[$type], function ($a, $b) {
if (isset($a['lvl']))
return $a['lvl'] - $b['lvl'];
if (isset($a['maglv']))
return $a['maglv'] - $b['maglv'];
return -1;
});
}
$spellsCache->setContent($spells);
$spellsCache->save();
} else {
echo "Failed to load engine/XML/spells.xml file.
";
}
} else {
$spells = $spellsCache->load();
?>
load();
}
// End loading spell list
if ($spells) {
// Preparing data
$configVoc = $config['vocations'];
$types = array_keys($spells);
$itemServer = 'http://'.$config['shop']['imageServer'].'/';
// Filter spells by vocation
$getVoc = (isset($_GET['vocation'])) ? getValue($_GET['vocation']) : 'all';
if ($getVoc !== 'all') {
$getVoc = (int)$getVoc;
foreach ($types as $type)
foreach ($spells[$type] as $name => $spell)
if (!empty($spell['vocations']))
if (!in_array($getVoc, $spell['vocations']))
unset($spells[$type][$name]);
}
// Render HTML
?>
Spells
Spell types:
Instant Spells
Jump to top
Name |
Words |
Level |
Mana |
Vocations |
|
|
|
|
', $names);
}
?> |
Magical Runes
Jump to top
Name |
Level |
Magic Level |
Image |
Vocations |
|
|
|
 |
', $names);
}
?> |
Conjure Spells
Jump to top
Name |
Words |
Level |
Mana |
Soul |
Charges |
Image |
Vocations |
|
|
|
|
|
|
 |
', $names);
}
?> |
Jump to top
Spells
Spells have currently not been loaded into the website by the server admin.
$spells) {
data_dump($spells, false, "Type: $type");
}
// All spell attributes?
'group', 'words', 'lvl', 'maglv', 'charges', 'allowfaruse', 'blocktype', 'mana', 'soul', 'prem', 'aggressive', 'range', 'selftarget', 'needtarget', 'blockwalls', 'needweapon', 'exhaustion', 'groupcooldown', 'needlearn', 'casterTargetOrDirection', 'direction', 'params', 'playernameparam', 'conjureId', 'reagentId', 'conjureCount', 'vocations'
*/
include 'layout/overall/footer.php'; ?>