<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://oldwiki.devbox.themanaworld.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BrightCiro</id>
	<title>The Mana World - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://oldwiki.devbox.themanaworld.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BrightCiro"/>
	<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/wiki/Special:Contributions/BrightCiro"/>
	<updated>2026-05-06T02:34:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Talk:Monster_Reference&amp;diff=709</id>
		<title>Talk:Monster Reference</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Talk:Monster_Reference&amp;diff=709"/>
		<updated>2005-09-05T20:35:54Z</updated>

		<summary type="html">&lt;p&gt;BrightCiro: /* Strength of Red Scorpion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Strength of Red Scorpion ===&lt;br /&gt;
&lt;br /&gt;
Wasnt the RED scorpion supposed to be a miniboss? that HP seems kinda low for one :o&lt;br /&gt;
-Bear&lt;br /&gt;
&lt;br /&gt;
Cool, I was thinking about bosses too.&lt;br /&gt;
I believe that Red Guy is like a boss. There are too many snakes and spiders, a DRAGON should be a good idea for a boss. But ONLY ONE DRAGON, please.&lt;br /&gt;
-BrightCiro (Ciro Leonardo, the char)&lt;br /&gt;
&lt;br /&gt;
=== Python program dbtowiki ===&lt;br /&gt;
This is a program to autogenerate a monster page in wikicode from eAthena configuration files. &lt;br /&gt;
&lt;br /&gt;
dbtowiki without any arguments will use item_db.txt and mob_db.txt in the current directory to write a monster list in wikicode to stdout. To specify custom files, call: &#039;&#039;dbtowiki &amp;lt;mob_db&amp;gt; &amp;lt;item_db&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#Licensed under GNU General Public License&lt;br /&gt;
import sys, os;&lt;br /&gt;
&lt;br /&gt;
imageurls = {&lt;br /&gt;
&#039;Maggot&#039;: &amp;quot;http://img74.echo.cx/img74/4223/maggot2qf.gif&amp;quot;,&lt;br /&gt;
&#039;Scorpion&#039;: &amp;quot;http://img72.echo.cx/img72/3383/scorpion3wa.gif&amp;quot;,&lt;br /&gt;
&#039;RedScorpion&#039;: &amp;quot;http://img72.echo.cx/img72/8718/redscorpion8yz.gif&amp;quot;,&lt;br /&gt;
&#039;GreenSlime&#039;: &amp;quot;http://img275.echo.cx/img275/4739/greenslime8up.gif&amp;quot;,&lt;br /&gt;
&#039;GiantMaggot&#039;: &amp;quot;http://img264.echo.cx/img264/7048/giantmaggot6bi.gif&amp;quot;,&lt;br /&gt;
&#039;Yellow_slime&#039;: &amp;quot;http://img221.echo.cx/img221/5411/yellowslime6pa.gif&amp;quot;,&lt;br /&gt;
&#039;Red_slime&#039;: &amp;quot;http://img221.echo.cx/img221/8781/redslime1hj.gif&amp;quot;,&lt;br /&gt;
&#039;BlackScorpion&#039;: &amp;quot;http://img275.echo.cx/img275/7117/blackscorpion0lm.gif&amp;quot;,&lt;br /&gt;
&#039;Snake&#039; : &amp;quot;http://img219.echo.cx/img219/4030/monster82xf.gif&amp;quot;,&lt;br /&gt;
&#039;Fire_Goblin&#039;: &amp;quot;http://img221.echo.cx/img221/5295/monster91hy.gif&amp;quot;,&lt;br /&gt;
&#039;Spider&#039;: &amp;quot;http://img305.imageshack.us/img305/8467/spider4xg.gif&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class whatever: pass&lt;br /&gt;
&lt;br /&gt;
log = []&lt;br /&gt;
&lt;br /&gt;
def saveint(string):&lt;br /&gt;
    a = 0&lt;br /&gt;
    try:&lt;br /&gt;
        a = int(string)&lt;br /&gt;
    except:&lt;br /&gt;
        a = 0&lt;br /&gt;
    return a&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
def parsemonsters(file):&lt;br /&gt;
    objects = []&lt;br /&gt;
    for line in file:&lt;br /&gt;
        s = line[0:line.find(&#039;//&#039;)].strip()&lt;br /&gt;
        if s:&lt;br /&gt;
            values = s.split(&#039;,&#039;)&lt;br /&gt;
            if (len(values) != 54):&lt;br /&gt;
                log.append(&amp;quot;mob_db: Warning, monster-line with ID %s has %d values instead of 54&amp;quot; % (values[0], len(values)))&lt;br /&gt;
                while (len(values) &amp;lt; 54):&lt;br /&gt;
                    values.append(&#039;&#039;)&lt;br /&gt;
                while (len(values) &amp;gt; 54):&lt;br /&gt;
                    values.pop()&lt;br /&gt;
            o = whatever()&lt;br /&gt;
            o.id = saveint(values[0])&lt;br /&gt;
            o.name = values[1]&lt;br /&gt;
            o.jname = values[2]&lt;br /&gt;
            o.lvl = saveint(values[3])&lt;br /&gt;
            o.hp = saveint(values[4])&lt;br /&gt;
            o.sp = saveint(values[5])&lt;br /&gt;
            o.exp = saveint(values[6])&lt;br /&gt;
            o.expj = saveint(values[7])&lt;br /&gt;
            o.range1 = saveint(values[8])&lt;br /&gt;
            o.atk1 = saveint(values[9])&lt;br /&gt;
            o.atk2 = saveint(values[10])&lt;br /&gt;
            o.defense = saveint(values[11])&lt;br /&gt;
            o.mdefense = saveint(values[12])&lt;br /&gt;
            o.strength = saveint(values[13])&lt;br /&gt;
            o.agility = saveint(values[14])&lt;br /&gt;
            o.vitality = saveint(values[15])&lt;br /&gt;
            o.intelligence = saveint(values[16])&lt;br /&gt;
            o.dexterity = saveint(values[17])&lt;br /&gt;
            o.luck = saveint(values[18])&lt;br /&gt;
            o.range2 = saveint(values[19])&lt;br /&gt;
            o.range3 = saveint(values[20])&lt;br /&gt;
            o.scale = saveint(values[21])&lt;br /&gt;
            o.race = saveint(values[22])&lt;br /&gt;
            o.element = saveint(values[23])&lt;br /&gt;
            o.mode = saveint(values[24])&lt;br /&gt;
            o.speed = saveint(values[25])&lt;br /&gt;
            o.adelay = saveint(values[26])&lt;br /&gt;
            o.amotion = saveint(values[27])&lt;br /&gt;
            o.dmotion = saveint(values[28])&lt;br /&gt;
            o.drop = []&lt;br /&gt;
            for i in range(8):&lt;br /&gt;
                o.drop.append(whatever())&lt;br /&gt;
            o.drop[0].id = saveint(values[29])&lt;br /&gt;
            o.drop[0].per = saveint(values[30])&lt;br /&gt;
            o.drop[1].id = saveint(values[31])&lt;br /&gt;
            o.drop[1].per = saveint(values[32])&lt;br /&gt;
            o.drop[2].id = saveint(values[33])&lt;br /&gt;
            o.drop[2].per = saveint(values[34])&lt;br /&gt;
            o.drop[3].id = saveint(values[35])&lt;br /&gt;
            o.drop[3].per = saveint(values[36])&lt;br /&gt;
            o.drop[4].id = saveint(values[37])&lt;br /&gt;
            o.drop[4].per = saveint(values[38])&lt;br /&gt;
            o.drop[5].id = saveint(values[39])&lt;br /&gt;
            o.drop[5].per = saveint(values[40])&lt;br /&gt;
            o.drop[6].id = saveint(values[41])&lt;br /&gt;
            o.drop[6].per = saveint(values[42])&lt;br /&gt;
            o.drop[7].id = saveint(values[43])&lt;br /&gt;
            o.drop[7].per = saveint(values[44])&lt;br /&gt;
            o.item1 = saveint(values[45])&lt;br /&gt;
            o.item2 = saveint(values[46])&lt;br /&gt;
            o.mexp = saveint(values[47])&lt;br /&gt;
            o.expper = saveint(values[48])&lt;br /&gt;
            o.mvp = []&lt;br /&gt;
            for i in range(3):&lt;br /&gt;
                o.mvp.append(whatever())&lt;br /&gt;
            o.mvp[0].id = saveint(values[49])&lt;br /&gt;
            o.mvp[0].per = saveint(values[50])&lt;br /&gt;
            o.mvp[1].id = saveint(values[50])&lt;br /&gt;
            o.mvp[1].per = saveint(values[51])&lt;br /&gt;
            o.mvp[2].id = saveint(values[52])&lt;br /&gt;
            o.mvp[2].per = saveint(values[53])&lt;br /&gt;
&lt;br /&gt;
            objects.append(o)&lt;br /&gt;
&lt;br /&gt;
    return objects&lt;br /&gt;
&lt;br /&gt;
def addimageurls(monsters):&lt;br /&gt;
    global imageurls&lt;br /&gt;
    for m in monsters:&lt;br /&gt;
        if imageurls.has_key(m.name):&lt;br /&gt;
            m.imgurl = imageurls[m.name]&lt;br /&gt;
        else:&lt;br /&gt;
            m.imgurl = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
def adddropnames(monsters,dropnames):&lt;br /&gt;
    for m in monsters:&lt;br /&gt;
        for d in m.drop:&lt;br /&gt;
            if dropnames.has_key(d.id):&lt;br /&gt;
                d.name = dropnames[d.id]&lt;br /&gt;
            else:&lt;br /&gt;
                d.name = &#039;&#039;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def parseitemnames(file):&lt;br /&gt;
    global log&lt;br /&gt;
    dic = {}&lt;br /&gt;
    for line in file:&lt;br /&gt;
        s = line[0:line.find(&#039;//&#039;)].strip()&lt;br /&gt;
        if s:&lt;br /&gt;
            values = s.split(&#039;,&#039;)&lt;br /&gt;
            if (len(values) &amp;lt; 3):&lt;br /&gt;
                if len(values) &amp;gt; 0: log.append(&amp;quot;mob_db: Warning, item-line with ID %s doesnt even have 3 values. Skipped.&amp;quot; % (values[0], len(values)))&lt;br /&gt;
            else:&lt;br /&gt;
                id = int(values[0])&lt;br /&gt;
                dic[id] = values[2];&lt;br /&gt;
    return dic&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def printlog():&lt;br /&gt;
    global log&lt;br /&gt;
    if len(log) &amp;gt; 0:&lt;br /&gt;
        sys.stdout.write(&#039;\n---------------------------------------\n&#039;)&lt;br /&gt;
    for line in log:&lt;br /&gt;
        sys.stdout.write(line+&#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
def getdropstring(monster):&lt;br /&gt;
    i = 0&lt;br /&gt;
    output = &amp;quot;&amp;quot;&lt;br /&gt;
    monster.drop.sort(lambda x,y: y.per-x.per)&lt;br /&gt;
    for d in monster.drop:&lt;br /&gt;
        if d.name: &lt;br /&gt;
            if (i != 0):&lt;br /&gt;
                output += &#039;&amp;lt;br&amp;gt;&#039;&lt;br /&gt;
            s = &amp;quot;&amp;quot;&lt;br /&gt;
            if d.per &amp;gt;= 1000:&lt;br /&gt;
                s = &amp;quot;%d&amp;quot; % (d.per/100)&lt;br /&gt;
            elif d.per &amp;gt;= 100:&lt;br /&gt;
                if (d.per % 100) != 0:&lt;br /&gt;
                    s = &amp;quot;%1.1f&amp;quot; % (d.per/100.0)&lt;br /&gt;
                else:&lt;br /&gt;
                    s = &amp;quot;%d&amp;quot; % (d.per/100)&lt;br /&gt;
            else:&lt;br /&gt;
                if (d.per % 1000) != 0:&lt;br /&gt;
                    s = &amp;quot;%.2f&amp;quot; % (d.per/100.0)&lt;br /&gt;
                else:&lt;br /&gt;
                    s = &amp;quot;%.1f&amp;quot; % (d.per/100.0)&lt;br /&gt;
            output += (&amp;quot;%s %s%%&amp;quot; % (d.name.replace(&#039;_&#039;,&#039; &#039;), s))&lt;br /&gt;
            i = i + 1&lt;br /&gt;
    return output&lt;br /&gt;
&lt;br /&gt;
def printmonsters(monsters):&lt;br /&gt;
    sys.stdout.write(&#039;{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; width=&amp;quot;100%&amp;quot; align=&amp;quot;center&amp;quot;\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | Image\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | Name\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | ID\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | HP\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | Attack\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | Exp. Points\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | Dropped Items\n&#039;)&lt;br /&gt;
    for m in monsters:&lt;br /&gt;
        sys.stdout.write(&#039;|-\n&#039;)&lt;br /&gt;
        sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %s\n&#039; % m.imgurl)&lt;br /&gt;
        sys.stdout.write(&#039;| %s\n&#039; % m.jname.replace(&#039;_&#039;,&#039; &#039;) )&lt;br /&gt;
        sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d\n&#039; % m.id)&lt;br /&gt;
        sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d\n&#039; % m.hp)&lt;br /&gt;
        if m.atk1 &amp;lt; m.atk2:&lt;br /&gt;
            sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d-%d\n&#039; % (m.atk1, m.atk2))&lt;br /&gt;
        elif m.atk1 &amp;gt; m.atk2:&lt;br /&gt;
            sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d-%d\n&#039; % (m.atk2, m.atk1))&lt;br /&gt;
        else:&lt;br /&gt;
            sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d\n&#039; % m.atk1)&lt;br /&gt;
            &lt;br /&gt;
        sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d\n&#039; % m.exp)&lt;br /&gt;
        sys.stdout.write(&#039;| %s&#039; % getdropstring(m))&lt;br /&gt;
&lt;br /&gt;
        sys.stdout.write(&#039;\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;|}&#039;)&lt;br /&gt;
            &lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
#MAIN&lt;br /&gt;
try:&lt;br /&gt;
    if (len(sys.argv) == 1):&lt;br /&gt;
        mob_db = &amp;quot;mob_db.txt&amp;quot;&lt;br /&gt;
        item_db = &amp;quot;item_db.txt&amp;quot;&lt;br /&gt;
    elif (len(sys.argv) == 3):&lt;br /&gt;
        mob_db = sys.argv[1]&lt;br /&gt;
        item_db = sys.argv[2]&lt;br /&gt;
    else: &lt;br /&gt;
        mob_db = &#039;&#039;&lt;br /&gt;
        item_db = &#039;&#039;&lt;br /&gt;
        sys.stdout.write(&amp;quot;Wrong number of arguments\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if (mob_db and item_db) :&lt;br /&gt;
        if (not os.path.isfile(mob_db)):&lt;br /&gt;
            sys.stdout.write(&amp;quot;File does not exist: %s\n&amp;quot; % mob_db)&lt;br /&gt;
            mob_db = &#039;&#039;&lt;br /&gt;
        if (not os.path.isfile(item_db)):&lt;br /&gt;
            sys.stdout.write(&amp;quot;File does not exist: %s\n&amp;quot; % item_db)&lt;br /&gt;
            item_db = &#039;&#039;&lt;br /&gt;
    &lt;br /&gt;
    if not (mob_db and item_db):&lt;br /&gt;
        sys.stdout.write(&amp;quot;\nUSAGE:\n&amp;quot;)&lt;br /&gt;
        sys.stdout.write(&amp;quot;dbtowiki without any arguments will use item_db.txt and mob_db.txt in the current directory.\n&amp;quot;)&lt;br /&gt;
        sys.stdout.write(&amp;quot;to specify custom files, call: dbtowiki &amp;lt;mob_db&amp;gt; &amp;lt;item_db&amp;gt;\n&amp;quot;)&lt;br /&gt;
        exit(-1);&lt;br /&gt;
    else:&lt;br /&gt;
        log.append(&amp;quot;Monster-list [mob_db] = %s&amp;quot; % mob_db)&lt;br /&gt;
        log.append(&amp;quot;Item-list [item_db] = %s&amp;quot; % item_db)&lt;br /&gt;
        f = open(mob_db)&lt;br /&gt;
        monsters = parsemonsters(f);&lt;br /&gt;
        f = open(item_db)&lt;br /&gt;
        itemnames = parseitemnames(f);&lt;br /&gt;
&lt;br /&gt;
        addimageurls(monsters)&lt;br /&gt;
        adddropnames(monsters,itemnames)&lt;br /&gt;
        monsters.sort(lambda x, y: x.hp*(x.atk1+x.atk2) - y.hp*(y.atk1+y.atk2) )&lt;br /&gt;
&lt;br /&gt;
        printmonsters(monsters)&lt;br /&gt;
        sys.stdout.write(&amp;quot;\n\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
finally:&lt;br /&gt;
    printlog()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>BrightCiro</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Talk:Monster_Reference&amp;diff=689</id>
		<title>Talk:Monster Reference</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Talk:Monster_Reference&amp;diff=689"/>
		<updated>2005-09-05T20:34:42Z</updated>

		<summary type="html">&lt;p&gt;BrightCiro: /* Strength of Red Scorpion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Strength of Red Scorpion ===&lt;br /&gt;
&lt;br /&gt;
Wasnt the RED scorpion supposed to be a miniboss? that HP seems kinda low for one :o&lt;br /&gt;
-Bear&lt;br /&gt;
&lt;br /&gt;
Cool, I was thinkin about bosses too.&lt;br /&gt;
I believe that Red Guy is like a boss. There are too many snakes and spiders, a DRAGON should be a good idea for a boss. But ONLY ONE DRAGON, please.&lt;br /&gt;
&lt;br /&gt;
=== Python program dbtowiki ===&lt;br /&gt;
This is a program to autogenerate a monster page in wikicode from eAthena configuration files. &lt;br /&gt;
&lt;br /&gt;
dbtowiki without any arguments will use item_db.txt and mob_db.txt in the current directory to write a monster list in wikicode to stdout. To specify custom files, call: &#039;&#039;dbtowiki &amp;lt;mob_db&amp;gt; &amp;lt;item_db&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#Licensed under GNU General Public License&lt;br /&gt;
import sys, os;&lt;br /&gt;
&lt;br /&gt;
imageurls = {&lt;br /&gt;
&#039;Maggot&#039;: &amp;quot;http://img74.echo.cx/img74/4223/maggot2qf.gif&amp;quot;,&lt;br /&gt;
&#039;Scorpion&#039;: &amp;quot;http://img72.echo.cx/img72/3383/scorpion3wa.gif&amp;quot;,&lt;br /&gt;
&#039;RedScorpion&#039;: &amp;quot;http://img72.echo.cx/img72/8718/redscorpion8yz.gif&amp;quot;,&lt;br /&gt;
&#039;GreenSlime&#039;: &amp;quot;http://img275.echo.cx/img275/4739/greenslime8up.gif&amp;quot;,&lt;br /&gt;
&#039;GiantMaggot&#039;: &amp;quot;http://img264.echo.cx/img264/7048/giantmaggot6bi.gif&amp;quot;,&lt;br /&gt;
&#039;Yellow_slime&#039;: &amp;quot;http://img221.echo.cx/img221/5411/yellowslime6pa.gif&amp;quot;,&lt;br /&gt;
&#039;Red_slime&#039;: &amp;quot;http://img221.echo.cx/img221/8781/redslime1hj.gif&amp;quot;,&lt;br /&gt;
&#039;BlackScorpion&#039;: &amp;quot;http://img275.echo.cx/img275/7117/blackscorpion0lm.gif&amp;quot;,&lt;br /&gt;
&#039;Snake&#039; : &amp;quot;http://img219.echo.cx/img219/4030/monster82xf.gif&amp;quot;,&lt;br /&gt;
&#039;Fire_Goblin&#039;: &amp;quot;http://img221.echo.cx/img221/5295/monster91hy.gif&amp;quot;,&lt;br /&gt;
&#039;Spider&#039;: &amp;quot;http://img305.imageshack.us/img305/8467/spider4xg.gif&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class whatever: pass&lt;br /&gt;
&lt;br /&gt;
log = []&lt;br /&gt;
&lt;br /&gt;
def saveint(string):&lt;br /&gt;
    a = 0&lt;br /&gt;
    try:&lt;br /&gt;
        a = int(string)&lt;br /&gt;
    except:&lt;br /&gt;
        a = 0&lt;br /&gt;
    return a&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
def parsemonsters(file):&lt;br /&gt;
    objects = []&lt;br /&gt;
    for line in file:&lt;br /&gt;
        s = line[0:line.find(&#039;//&#039;)].strip()&lt;br /&gt;
        if s:&lt;br /&gt;
            values = s.split(&#039;,&#039;)&lt;br /&gt;
            if (len(values) != 54):&lt;br /&gt;
                log.append(&amp;quot;mob_db: Warning, monster-line with ID %s has %d values instead of 54&amp;quot; % (values[0], len(values)))&lt;br /&gt;
                while (len(values) &amp;lt; 54):&lt;br /&gt;
                    values.append(&#039;&#039;)&lt;br /&gt;
                while (len(values) &amp;gt; 54):&lt;br /&gt;
                    values.pop()&lt;br /&gt;
            o = whatever()&lt;br /&gt;
            o.id = saveint(values[0])&lt;br /&gt;
            o.name = values[1]&lt;br /&gt;
            o.jname = values[2]&lt;br /&gt;
            o.lvl = saveint(values[3])&lt;br /&gt;
            o.hp = saveint(values[4])&lt;br /&gt;
            o.sp = saveint(values[5])&lt;br /&gt;
            o.exp = saveint(values[6])&lt;br /&gt;
            o.expj = saveint(values[7])&lt;br /&gt;
            o.range1 = saveint(values[8])&lt;br /&gt;
            o.atk1 = saveint(values[9])&lt;br /&gt;
            o.atk2 = saveint(values[10])&lt;br /&gt;
            o.defense = saveint(values[11])&lt;br /&gt;
            o.mdefense = saveint(values[12])&lt;br /&gt;
            o.strength = saveint(values[13])&lt;br /&gt;
            o.agility = saveint(values[14])&lt;br /&gt;
            o.vitality = saveint(values[15])&lt;br /&gt;
            o.intelligence = saveint(values[16])&lt;br /&gt;
            o.dexterity = saveint(values[17])&lt;br /&gt;
            o.luck = saveint(values[18])&lt;br /&gt;
            o.range2 = saveint(values[19])&lt;br /&gt;
            o.range3 = saveint(values[20])&lt;br /&gt;
            o.scale = saveint(values[21])&lt;br /&gt;
            o.race = saveint(values[22])&lt;br /&gt;
            o.element = saveint(values[23])&lt;br /&gt;
            o.mode = saveint(values[24])&lt;br /&gt;
            o.speed = saveint(values[25])&lt;br /&gt;
            o.adelay = saveint(values[26])&lt;br /&gt;
            o.amotion = saveint(values[27])&lt;br /&gt;
            o.dmotion = saveint(values[28])&lt;br /&gt;
            o.drop = []&lt;br /&gt;
            for i in range(8):&lt;br /&gt;
                o.drop.append(whatever())&lt;br /&gt;
            o.drop[0].id = saveint(values[29])&lt;br /&gt;
            o.drop[0].per = saveint(values[30])&lt;br /&gt;
            o.drop[1].id = saveint(values[31])&lt;br /&gt;
            o.drop[1].per = saveint(values[32])&lt;br /&gt;
            o.drop[2].id = saveint(values[33])&lt;br /&gt;
            o.drop[2].per = saveint(values[34])&lt;br /&gt;
            o.drop[3].id = saveint(values[35])&lt;br /&gt;
            o.drop[3].per = saveint(values[36])&lt;br /&gt;
            o.drop[4].id = saveint(values[37])&lt;br /&gt;
            o.drop[4].per = saveint(values[38])&lt;br /&gt;
            o.drop[5].id = saveint(values[39])&lt;br /&gt;
            o.drop[5].per = saveint(values[40])&lt;br /&gt;
            o.drop[6].id = saveint(values[41])&lt;br /&gt;
            o.drop[6].per = saveint(values[42])&lt;br /&gt;
            o.drop[7].id = saveint(values[43])&lt;br /&gt;
            o.drop[7].per = saveint(values[44])&lt;br /&gt;
            o.item1 = saveint(values[45])&lt;br /&gt;
            o.item2 = saveint(values[46])&lt;br /&gt;
            o.mexp = saveint(values[47])&lt;br /&gt;
            o.expper = saveint(values[48])&lt;br /&gt;
            o.mvp = []&lt;br /&gt;
            for i in range(3):&lt;br /&gt;
                o.mvp.append(whatever())&lt;br /&gt;
            o.mvp[0].id = saveint(values[49])&lt;br /&gt;
            o.mvp[0].per = saveint(values[50])&lt;br /&gt;
            o.mvp[1].id = saveint(values[50])&lt;br /&gt;
            o.mvp[1].per = saveint(values[51])&lt;br /&gt;
            o.mvp[2].id = saveint(values[52])&lt;br /&gt;
            o.mvp[2].per = saveint(values[53])&lt;br /&gt;
&lt;br /&gt;
            objects.append(o)&lt;br /&gt;
&lt;br /&gt;
    return objects&lt;br /&gt;
&lt;br /&gt;
def addimageurls(monsters):&lt;br /&gt;
    global imageurls&lt;br /&gt;
    for m in monsters:&lt;br /&gt;
        if imageurls.has_key(m.name):&lt;br /&gt;
            m.imgurl = imageurls[m.name]&lt;br /&gt;
        else:&lt;br /&gt;
            m.imgurl = &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
def adddropnames(monsters,dropnames):&lt;br /&gt;
    for m in monsters:&lt;br /&gt;
        for d in m.drop:&lt;br /&gt;
            if dropnames.has_key(d.id):&lt;br /&gt;
                d.name = dropnames[d.id]&lt;br /&gt;
            else:&lt;br /&gt;
                d.name = &#039;&#039;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def parseitemnames(file):&lt;br /&gt;
    global log&lt;br /&gt;
    dic = {}&lt;br /&gt;
    for line in file:&lt;br /&gt;
        s = line[0:line.find(&#039;//&#039;)].strip()&lt;br /&gt;
        if s:&lt;br /&gt;
            values = s.split(&#039;,&#039;)&lt;br /&gt;
            if (len(values) &amp;lt; 3):&lt;br /&gt;
                if len(values) &amp;gt; 0: log.append(&amp;quot;mob_db: Warning, item-line with ID %s doesnt even have 3 values. Skipped.&amp;quot; % (values[0], len(values)))&lt;br /&gt;
            else:&lt;br /&gt;
                id = int(values[0])&lt;br /&gt;
                dic[id] = values[2];&lt;br /&gt;
    return dic&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def printlog():&lt;br /&gt;
    global log&lt;br /&gt;
    if len(log) &amp;gt; 0:&lt;br /&gt;
        sys.stdout.write(&#039;\n---------------------------------------\n&#039;)&lt;br /&gt;
    for line in log:&lt;br /&gt;
        sys.stdout.write(line+&#039;\n&#039;)&lt;br /&gt;
&lt;br /&gt;
def getdropstring(monster):&lt;br /&gt;
    i = 0&lt;br /&gt;
    output = &amp;quot;&amp;quot;&lt;br /&gt;
    monster.drop.sort(lambda x,y: y.per-x.per)&lt;br /&gt;
    for d in monster.drop:&lt;br /&gt;
        if d.name: &lt;br /&gt;
            if (i != 0):&lt;br /&gt;
                output += &#039;&amp;lt;br&amp;gt;&#039;&lt;br /&gt;
            s = &amp;quot;&amp;quot;&lt;br /&gt;
            if d.per &amp;gt;= 1000:&lt;br /&gt;
                s = &amp;quot;%d&amp;quot; % (d.per/100)&lt;br /&gt;
            elif d.per &amp;gt;= 100:&lt;br /&gt;
                if (d.per % 100) != 0:&lt;br /&gt;
                    s = &amp;quot;%1.1f&amp;quot; % (d.per/100.0)&lt;br /&gt;
                else:&lt;br /&gt;
                    s = &amp;quot;%d&amp;quot; % (d.per/100)&lt;br /&gt;
            else:&lt;br /&gt;
                if (d.per % 1000) != 0:&lt;br /&gt;
                    s = &amp;quot;%.2f&amp;quot; % (d.per/100.0)&lt;br /&gt;
                else:&lt;br /&gt;
                    s = &amp;quot;%.1f&amp;quot; % (d.per/100.0)&lt;br /&gt;
            output += (&amp;quot;%s %s%%&amp;quot; % (d.name.replace(&#039;_&#039;,&#039; &#039;), s))&lt;br /&gt;
            i = i + 1&lt;br /&gt;
    return output&lt;br /&gt;
&lt;br /&gt;
def printmonsters(monsters):&lt;br /&gt;
    sys.stdout.write(&#039;{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; width=&amp;quot;100%&amp;quot; align=&amp;quot;center&amp;quot;\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | Image\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | Name\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | ID\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | HP\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | Attack\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | Exp. Points\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;! style=&amp;quot;background:#efdead;&amp;quot; | Dropped Items\n&#039;)&lt;br /&gt;
    for m in monsters:&lt;br /&gt;
        sys.stdout.write(&#039;|-\n&#039;)&lt;br /&gt;
        sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %s\n&#039; % m.imgurl)&lt;br /&gt;
        sys.stdout.write(&#039;| %s\n&#039; % m.jname.replace(&#039;_&#039;,&#039; &#039;) )&lt;br /&gt;
        sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d\n&#039; % m.id)&lt;br /&gt;
        sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d\n&#039; % m.hp)&lt;br /&gt;
        if m.atk1 &amp;lt; m.atk2:&lt;br /&gt;
            sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d-%d\n&#039; % (m.atk1, m.atk2))&lt;br /&gt;
        elif m.atk1 &amp;gt; m.atk2:&lt;br /&gt;
            sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d-%d\n&#039; % (m.atk2, m.atk1))&lt;br /&gt;
        else:&lt;br /&gt;
            sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d\n&#039; % m.atk1)&lt;br /&gt;
            &lt;br /&gt;
        sys.stdout.write(&#039;| align=&amp;quot;center&amp;quot; | %d\n&#039; % m.exp)&lt;br /&gt;
        sys.stdout.write(&#039;| %s&#039; % getdropstring(m))&lt;br /&gt;
&lt;br /&gt;
        sys.stdout.write(&#039;\n&#039;)&lt;br /&gt;
    sys.stdout.write(&#039;|}&#039;)&lt;br /&gt;
            &lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
#MAIN&lt;br /&gt;
try:&lt;br /&gt;
    if (len(sys.argv) == 1):&lt;br /&gt;
        mob_db = &amp;quot;mob_db.txt&amp;quot;&lt;br /&gt;
        item_db = &amp;quot;item_db.txt&amp;quot;&lt;br /&gt;
    elif (len(sys.argv) == 3):&lt;br /&gt;
        mob_db = sys.argv[1]&lt;br /&gt;
        item_db = sys.argv[2]&lt;br /&gt;
    else: &lt;br /&gt;
        mob_db = &#039;&#039;&lt;br /&gt;
        item_db = &#039;&#039;&lt;br /&gt;
        sys.stdout.write(&amp;quot;Wrong number of arguments\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if (mob_db and item_db) :&lt;br /&gt;
        if (not os.path.isfile(mob_db)):&lt;br /&gt;
            sys.stdout.write(&amp;quot;File does not exist: %s\n&amp;quot; % mob_db)&lt;br /&gt;
            mob_db = &#039;&#039;&lt;br /&gt;
        if (not os.path.isfile(item_db)):&lt;br /&gt;
            sys.stdout.write(&amp;quot;File does not exist: %s\n&amp;quot; % item_db)&lt;br /&gt;
            item_db = &#039;&#039;&lt;br /&gt;
    &lt;br /&gt;
    if not (mob_db and item_db):&lt;br /&gt;
        sys.stdout.write(&amp;quot;\nUSAGE:\n&amp;quot;)&lt;br /&gt;
        sys.stdout.write(&amp;quot;dbtowiki without any arguments will use item_db.txt and mob_db.txt in the current directory.\n&amp;quot;)&lt;br /&gt;
        sys.stdout.write(&amp;quot;to specify custom files, call: dbtowiki &amp;lt;mob_db&amp;gt; &amp;lt;item_db&amp;gt;\n&amp;quot;)&lt;br /&gt;
        exit(-1);&lt;br /&gt;
    else:&lt;br /&gt;
        log.append(&amp;quot;Monster-list [mob_db] = %s&amp;quot; % mob_db)&lt;br /&gt;
        log.append(&amp;quot;Item-list [item_db] = %s&amp;quot; % item_db)&lt;br /&gt;
        f = open(mob_db)&lt;br /&gt;
        monsters = parsemonsters(f);&lt;br /&gt;
        f = open(item_db)&lt;br /&gt;
        itemnames = parseitemnames(f);&lt;br /&gt;
&lt;br /&gt;
        addimageurls(monsters)&lt;br /&gt;
        adddropnames(monsters,itemnames)&lt;br /&gt;
        monsters.sort(lambda x, y: x.hp*(x.atk1+x.atk2) - y.hp*(y.atk1+y.atk2) )&lt;br /&gt;
&lt;br /&gt;
        printmonsters(monsters)&lt;br /&gt;
        sys.stdout.write(&amp;quot;\n\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
finally:&lt;br /&gt;
    printlog()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>BrightCiro</name></author>
	</entry>
</feed>