Source of /kol/skills.php


<?
if ($_SERVER['SCRIPT_FILENAME'] == __FILE__)
    
$allowviewsource=1;
include (
"../common.php");

/*
Liver of Steel
The Smile of Mr. A.
Seal Clubbing Frenzy
Thrust-Smack (P)
Tongue of the Otter (P)
Hide of the Otter
Claws of the Otter
Eye of the Stoat (HP)
Summon Snowcone (HP)
Summon Hilarious Objects (HP)
*/

page_header('KoL Skills Tool');

# from http://kol.coldfront.net/thekolwiki/index.php/Skills_by_number
$classes = array("<error>", "Seal Clubber", "Turtle Tamer", "Pastamancer", "Sauceror", "Disco Bandit", "Accordion Thief", "Gnomish", "Miscellaneous");
$havestr = array("Skills Missing", "Available for this run", "Permanent", "Hardcore Permanent");
$skilllist = array(
       
1 => array('name'=>'Liver of Steel',                           'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>0),
       
2 => array('name'=>'Chronic Indigestion',                      'permable'=>TRUE,  'have'=>0, 'class'=>8, 'level'=>3),
       
3 => array('name'=>'The Smile of Mr. A.',                      'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>4),
       
4 => array('name'=>'Arse Shoot',                               'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>5),
       
5 => array('name'=>'Stomach of Steel',                         'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>1),
       
6 => array('name'=>'Spleen of Steel',                          'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>2),
      
10 => array('name'=>'Powers of Observatiogn',                   'permable'=>TRUE,  'have'=>0, 'class'=>7, 'level'=>0),
      
11 => array('name'=>'Gnefarious Pickpocketing',                 'permable'=>TRUE,  'have'=>0, 'class'=>7, 'level'=>1),
      
12 => array('name'=>'Torso Awaregness',                         'permable'=>TRUE,  'have'=>0, 'class'=>7, 'level'=>2),
      
13 => array('name'=>'Gnomish Hardigness',                       'permable'=>TRUE,  'have'=>0, 'class'=>7, 'level'=>3),
      
14 => array('name'=>'Cosmic Ugnderstanding',                    'permable'=>TRUE,  'have'=>0, 'class'=>7, 'level'=>4),
      
15 => array('name'=>'CLEESH',                                   'permable'=>TRUE,  'have'=>0, 'class'=>8, 'level'=>6),
      
16 => array('name'=>'Summon Snowcone',                          'permable'=>TRUE,  'have'=>0, 'class'=>8, 'level'=>7),
      
17 => array('name'=>'Summon Hilarious Objects',                 'permable'=>TRUE,  'have'=>0, 'class'=>8, 'level'=>8),
    
    
1000 => array('name'=>'Seal Clubbing Frenzy',                     'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>0),
    
1004 => array('name'=>'Lunge-Smack',                              'permable'=>FALSE, 'have'=>0, 'class'=>1, 'level'=>17),
    
1005 => array('name'=>'Lunging Thrust-Smack',                     'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>10),
    
// Thrust-Smack is after Lunging Thrust-Smack in the list
    // so that the substring matcher doesn't see the "Thrust-Smack" at the end of "Lunging Thrust-Smack"
    // and misidentify the skill
    
1003 => array('name'=>'Thrust-Smack',                             'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>4),
    
1006 => array('name'=>'Super-Advanced Meatsmithing',              'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>5),
    
1007 => array('name'=>'Tongue of the Otter',                      'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>3),
    
1008 => array('name'=>'Hide of the Otter',                        'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>1),
    
1009 => array('name'=>'Claws of the Otter',                       'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>2),
    
1010 => array('name'=>'Tongue of the Walrus',                     'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>9),
    
1011 => array('name'=>'Hide of the Walrus',                       'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>7),
    
1012 => array('name'=>'Claws of the Walrus',                      'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>8),
    
1014 => array('name'=>'Eye of the Stoat',                         'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>6),
    
1015 => array('name'=>'Rage of the Reindeer',                     'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>11),
    
1016 => array('name'=>'Pulverize',                                'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>15),
    
1017 => array('name'=>'Double-Fisted Skull Smashing',             'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>12),
    
1018 => array('name'=>'Northern Exposure',                        'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>13),
    
1019 => array('name'=>'Musk of the Moose',                        'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>14),
    
1020 => array('name'=>'Snarl of the Timberwolf',                  'permable'=>TRUE,  'have'=>0, 'class'=>1, 'level'=>16),
    
    
2000 => array('name'=>'Patience of the Tortoise',                 'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>0),
    
2003 => array('name'=>'Headbutt',                                 'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>1),
    
2004 => array('name'=>'Skin of the Leatherback',                  'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>2),
    
2005 => array('name'=>'Shieldbutt',                               'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>10),
    
2006 => array('name'=>'Armorcraftiness',                          'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>5),
    
2007 => array('name'=>'Ghostly Shell',                            'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>4),
    
2008 => array('name'=>'Reptilian Fortitude',                      'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>9),
    
2009 => array('name'=>'Empathy of the Newt',                      'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>8),
    
2010 => array('name'=>'Tenacity of the Snapper',                  'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>6),
    
2011 => array('name'=>'Wisdom of the Elder Tortoises',            'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>11),
    
2012 => array('name'=>'Astral Shell',                             'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>12),
    
2014 => array('name'=>'Amphibian Sympathy',                       'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>3),
    
2015 => array('name'=>'Kneebutt',                                 'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>7),
    
2016 => array('name'=>'Cold-Blooded Fearlessness',                'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>13),
    
2020 => array('name'=>'Hero of the Half-Shell',                   'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>14),
    
2021 => array('name'=>'Tao of the Terrapin',                      'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>15),
    
2022 => array('name'=>'Spectral Snapper',                         'permable'=>TRUE,  'have'=>0, 'class'=>2, 'level'=>16),
    
    
2107 => array('name'=>'Head + Knee + Shield Combo',               'permable'=>FALSE, 'have'=>0, 'class'=>2, 'level'=>20),
    
2103 => array('name'=>'Head + Knee Combo',                        'permable'=>FALSE, 'have'=>0, 'class'=>2, 'level'=>17),
    
2105 => array('name'=>'Head + Shield Combo',                      'permable'=>FALSE, 'have'=>0, 'class'=>2, 'level'=>18),
    
2106 => array('name'=>'Knee + Shield Combo',                      'permable'=>FALSE, 'have'=>0, 'class'=>2, 'level'=>19),
    
    
3000 => array('name'=>'Manicotti Meditation',                     'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>0),
    
3003 => array('name'=>'Minor Ray of Something',                   'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>1),
    
3004 => array('name'=>'Entangling Noodles',                       'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>2),
    
3005 => array('name'=>'eXtreme Ray of Something',                 'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>4),
    
3006 => array('name'=>'Pastamastery',                             'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>5),
    
3007 => array('name'=>'Cone of Whatever',                         'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>8),
    
3008 => array('name'=>'Weapon of the Pastalord',                  'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>10),
    
3009 => array('name'=>'Lasagna Bandages',                         'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>3),
    
3010 => array('name'=>'Leash of Linguini',                        'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>11),
    
3011 => array('name'=>'Spirit of Rigatoni',                       'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>7),
    
3012 => array('name'=>'Cannelloni Cocoon',                        'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>12),
    
3014 => array('name'=>'Spirit of Ravioli',                        'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>9),
    
3015 => array('name'=>'Springy Fusilli',                          'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>6),
    
3016 => array('name'=>'Tolerance of the Kitchen',                 'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>13),
    
3017 => array('name'=>'Flavour of Magic',                         'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>14),
    
3018 => array('name'=>'Transcendental Noodlecraft',               'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>15),
    
3019 => array('name'=>'Fearful Fettucini',                        'permable'=>TRUE,  'have'=>0, 'class'=>3, 'level'=>16),

    
3101 => array('name'=>'Spirit of Cayenne',                        'permable'=>FALSE, 'have'=>0, 'class'=>3, 'level'=>17),
    
3102 => array('name'=>'Spirit of Peppermint',                     'permable'=>FALSE, 'have'=>0, 'class'=>3, 'level'=>18),
    
3103 => array('name'=>'Spirit of Garlic',                         'permable'=>FALSE, 'have'=>0, 'class'=>3, 'level'=>19),
    
3104 => array('name'=>'Spirit of Wormwood',                       'permable'=>FALSE, 'have'=>0, 'class'=>3, 'level'=>20),
    
3105 => array('name'=>'Spirit of Bacon Grease',                   'permable'=>FALSE, 'have'=>0, 'class'=>3, 'level'=>21),
    
    
4000 => array('name'=>'Sauce Contemplation',                      'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>0),
    
4003 => array('name'=>'Stream of Sauce',                          'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>1),
    
4004 => array('name'=>'Expert Panhandling',                       'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>3),
    
4005 => array('name'=>'Saucestorm',                               'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>6),
    
4006 => array('name'=>'Advanced Saucecrafting',                   'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>5),
    
4007 => array('name'=>'Elemental Saucesphere',                    'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>4),
    
4008 => array('name'=>'Jalape&ntilde;o Saucesphere',              'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>7),
    
4009 => array('name'=>'Wave of Sauce',                            'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>8),
    
4010 => array('name'=>'Intrinsic Spiciness',                      'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>9),
    
4011 => array('name'=>'Jaba&ntilde;ero Saucesphere',              'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>10),
    
4012 => array('name'=>'Saucegeyser',                              'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>11),
    
4014 => array('name'=>'Saucy Salve',                              'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>2),
    
4015 => array('name'=>'Impetuous Sauciness',                      'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>12),
    
4016 => array('name'=>'Diminished Gag Reflex',                    'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>13),
    
4017 => array('name'=>'Immaculate Seasoning',                     'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>14),
    
4018 => array('name'=>'The Way of Sauce',                         'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>15),
    
4019 => array('name'=>'Scarysauce',                               'permable'=>TRUE,  'have'=>0, 'class'=>4, 'level'=>16),
    
    
5000 => array('name'=>'Disco Aerobics',                           'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>0),
    
5003 => array('name'=>'Disco Eye-Poke',                           'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>1),
    
5004 => array('name'=>'Nimble Fingers',                           'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>6),
    
5005 => array('name'=>'Disco Dance of Doom',                      'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>4),
    
5006 => array('name'=>'Mad Looting Skillz',                       'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>8),
    
5007 => array('name'=>'Disco Nap',                                'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>3),
    
5008 => array('name'=>'Disco Dance II: Electric Boogaloo',        'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>7),
    
5009 => array('name'=>'Crossbow Fever',                           'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>11),
    
5010 => array('name'=>'Overdeveloped Sense of Self Preservation', 'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>2),
    
5011 => array('name'=>'Disco Power Nap',                          'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>9),
    
5012 => array('name'=>'Disco Face Stab',                          'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>10),
    
5014 => array('name'=>'Advanced Cocktailcrafting',                'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>5),
    
5015 => array('name'=>'Ambidextrous Funkslinging',                'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>12),
    
5016 => array('name'=>'Heart of Polyester',                       'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>13),
    
5017 => array('name'=>'Smooth Movement',                          'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>14),
    
5018 => array('name'=>'Superhuman Cocktailcrafting',              'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>15),
    
5019 => array('name'=>'Tango of Terror',                          'permable'=>TRUE,  'have'=>0, 'class'=>5, 'level'=>16),
    
    
6000 => array('name'=>'Moxie of the Mariachi',                    'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>0),
    
6003 => array('name'=>'Aloysius\' Antiphon of Aptitude',          'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>11),
    
6004 => array('name'=>'The Moxious Madrigal',                     'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>1),
    
6005 => array('name'=>'Cletus\'s Canticle of Celerity',           'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>3),
    
6006 => array('name'=>'The Polka of Plenty',                      'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>5),
    
6007 => array('name'=>'The Magical Mojomuscular Melody',          'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>2),
    
6008 => array('name'=>'The Power Ballad of the Arrowsmith',       'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>4),
    
6009 => array('name'=>'Brawnee\'s Anthem of Absorption',          'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>8),
    
6010 => array('name'=>'Fat Leon\'s Phat Loot Lyric',              'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>7),
    
6011 => array('name'=>'The Psalm of Pointiness',                  'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>9),
    
6012 => array('name'=>'Jackasses\' Symphony of Destruction',      'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>6),
    
6013 => array('name'=>'Stevedave\'s Shanty of Superiority',       'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>10),
    
6014 => array('name'=>'The Ode to Booze',                         'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>12),
    
6015 => array('name'=>'The Sonata of Sneakiness',                 'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>13),
    
6016 => array('name'=>'Carlweather\'s Cantata of Confrontation',  'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>14),
    
6017 => array('name'=>'Ur-Kel\'s Aria of Annoyance',              'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>15),
    
6018 => array('name'=>'Dirge of Dreadfulness',                    'permable'=>TRUE,  'have'=>0, 'class'=>6, 'level'=>16),
    
    
7002 => array('name'=>'Shake Hands',                              'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>9),
    
7003 => array('name'=>'Hot Breath',                               'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>10),
    
7004 => array('name'=>'Cold Breath',                              'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>11),
    
7005 => array('name'=>'Spooky Breath',                            'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>12),
    
7006 => array('name'=>'Stinky Breath',                            'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>13),
    
7007 => array('name'=>'Sleazy Breath',                            'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>14),
    
7008 => array('name'=>'Moxious Maneuver',                         'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>15),
    
7009 => array('name'=>'Magic Missile',                            'permable'=>FALSE, 'have'=>0, 'class'=>8, 'level'=>16),
);

function
comparison($a, $b)
{
    
$i = $a['have'] - $b['have'];
    if (
$i == 0)
    {
        
$i = $a['class'] - $b['class'];
        if (
$i == 0)
        {
            
$i = $a['level'] - $b['level'];
        }
    }
    return
$i;
}

if (isset(
$_REQUEST['skills']))
{
    
$ntilde = array(
        
//"\xD1"=>'&ntilde;',
        
"\xC3\x91"=>'&ntilde;',
        
//"\xF1"=>'&ntilde;',
        
"\xC3\xB1"=>'&ntilde;'
    
);
    
$skills = strtr($_REQUEST['skills'], $ntilde);
    if (
get_magic_quotes_gpc())
        
$skills = stripslashes($skills);
    
$skills = explode("\n", $skills);
    foreach(
$skills as $i)
    {
        foreach(
$skilllist as $k=>$v)
        {
            if (
stripos($i, $v['name']) !== FALSE)
            {
                if (
stripos($i, '(HP)') !== FALSE)
                    
$skilllist[$k]['have'] = 3;
                else if (
stripos($i, '(P)') !== FALSE)
                    
$skilllist[$k]['have'] = 2;
                else
                    
$skilllist[$k]['have'] = 1;
                break;
            }
        }
    }
    
    
usort($skilllist, "comparison");
    
$lastclass = -1;
    
$lasthave = -1;
    foreach (
$skilllist as $i)
    {
        if (
$i['have'] == 0 && !$i['permable'])
            continue;
        if (
$i['have'] != $lasthave)
        {
            if (
$lastclass != -1)
                print
"</ul>";
            
$lastclass = -1;
            print
"<h2>" . $havestr[$i['have']] . "</h2>";
            
$lasthave = $i['have'];
        }
        if (
$i['class'] != $lastclass)
        {
            if (
$lastclass != -1)
                print
"</ul>";
            print
"<h3>" . $classes[$i['class']] . " skills</h3>";
            
$lastclass = $i['class'];
            print
"<ul>";
        }
        print
"<li>$i[name]</li>";
    }
    if (
$lastclass != -1)
        print
"</ul>";
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">
<p>Paste your list of skills from the character sheet here:<br><textarea rows="10" cols="40" name="skills"><?=htmlspecialchars($_REQUEST['skills'],ENT_NOQUOTES);?></textarea></p>
<p><input type="submit" value="What am I missing?"></p>
</form>
<?
}
else
{
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">
<p>Paste your list of skills here:<br><textarea rows="10" cols="40" name="skills"></textarea></p>
<p><input type="submit" value="What am I missing?"></p>
</form>
<?
}

page_footer();
?>


Valid HTML 4.01 StrictValid CSSLevel Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0
Retrieved from http:// www.mrphlip.com/ kol/ skills.php? viewsource=yep.
Copyright © 2006–8 Phillip Bradbury. Some rights reserved.
This page is best viewed in a web browser at a screen resolution. Attempts to do otherwise may fail miserably.
John Gabriel – maths crackpot and Internet crazy person.
No Oz net censorship - nocleenfeed.com
Contact me