|
|
| Line 1: |
Line 1: |
| ==How to generate the main page== | | ==How to generate the main page== |
| The main article is generated by a python script that creates the monster page in wikicode from the eAthena configuration files. Please use the python script to update the page, as manual changes may be overwritten by someone pasting in the results from the script below. | | The main article is generated by a python script that creates the monster page in wikicode from the eAthena configuration files, the script can be found on the [[Talk:Monster reference/scripts|scripts subpage]]. |
|
| |
|
| The python script will write the ''complete'' Monster reference page to stdout (standard output). Then it is only a matter of copying and pasting in that text. If you want to edit the introductory text or add images, please do so in the script below.
| | ''Please use the python script to update the page, as manual changes may be overwritten by someone pasting in the output given from running the script.'' |
|
| |
|
| The python script takes the following arguments:
| | == Strength of Red Scorpion == |
| | |
| mobdbtowiki <path to item database> <path to monster database>
| |
| | |
| If you run <code>dbtowiki</code> without any arguments, the script will try to find the files <code>item_db.txt</code> and <code>mob_db.txt</code> inside the working directory.
| |
| | |
| === The python script mobdbtowiki ===
| |
| <pre>
| |
| #!/usr/bin/python
| |
| # Licensed under GNU General Public License
| |
| | |
| import sys, os, datetime;
| |
| | |
| | |
| # VARIOUS SETTINGS
| |
| | |
| # If something seems not to work, set this value to 1 to get more information
| |
| debug = 0
| |
| | |
| # Number of rows between table header
| |
| headerafterrow = 10
| |
| | |
| # Formatting of traits
| |
| traitstart = '\'\'<span style="color:#ad1818">'
| |
| traitend = '</span>\'\''
| |
| | |
| | |
| #####################################
| |
| ## ##
| |
| ## ADD WIKILINKS TO IMAGES BELOW ##
| |
| ## ##
| |
| #####################################
| |
| | |
| imageurls = {
| |
| 'AlizarinPlant': "[[Image:Plant-Alizarin.png]]",
| |
| 'MauvePlant': "[[Image:Plant-Mauve.png]]",
| |
| 'Bat': "[[Image:Bat.png]]",
| |
| 'BlackScorpion': "[[Image:BlackScorpion.png]]",
| |
| 'CaveSnake': "[[Image:LampSnake.png]]",
| |
| 'CobaltPlant': "[[Image:Plant-Cobalt.png]]",
| |
| 'EasterFluffy': "[[Image:Fluffy.png]]",
| |
| 'EvilMushroom': "[[Image:Evilmushroom.png]]",
| |
| 'FireGoblin': "[[Image:FireGoblin.png]]",
| |
| 'FireSkull': "[[Image:FireSkull.png]]",
| |
| 'Flower': "[[Image:Sleepflower.png]]",
| |
| 'Fluffy': "[[Image:Fluffy.png]]",
| |
| 'GambogePlant': "[[Image:Plant-Gamboge.png]]",
| |
| 'GiantMaggot': "[[Image:GiantMaggot.png]]",
| |
| 'GrassSnake': "",
| |
| 'GreenSlime': "[[Image:GreenSlime.png]]",
| |
| 'JackO': "[[Image:JackO.png]]",
| |
| 'LogHead': "[[Image:Stumpy.png]]",
| |
| 'Maggot': "[[Image:Maggot.png]]",
| |
| 'Mouboo': "[[Image:Mouboo.png]]",
| |
| 'MountainSnake': "[[Image:MountainSnake.png]]",
| |
| 'Pinkie': "[[Image:Violet.png]]",
| |
| 'PoisonSkull': "[[Image:PoisonSkull.png]]",
| |
| 'RedScorpion': "[[Image:RedScorpion.png]]",
| |
| 'RedSlime': "[[Image:RedSlime.png]]",
| |
| 'RudolphSlime': "[[Image:Rudolphslime.png]]",
| |
| 'SantaSlime': "[[Image:Santaslime.png]]",
| |
| 'Scorpion': "[[Image:Scorpion.png]]",
| |
| 'SeaSlime': "[[Image:Sea-slime.png]]",
| |
| 'Silkworm': "",
| |
| 'Snake' : "[[Image:Snake.png]]",
| |
| 'Spider': "[[Image:Spider.png]]",
| |
| 'SpikyMushroom': "[[Image:Shroom.png]]",
| |
| 'YellowSlime': "[[Image:YellowSlime.png]]"
| |
| # Note that the last line above should not be ended by a comma!
| |
| }
| |
| | |
| | |
| ##########################################
| |
| ## ##
| |
| ## CHANGE THE INTRODUCTORY TEXT BELOW ##
| |
| ## ##
| |
| ##########################################
| |
| | |
| intro = []
| |
| | |
| # Each appended line will automatically end with a line break
| |
| | |
| intro.append("{{Category_playerinfo}}")
| |
| intro.append("{{Status_green}}")
| |
| intro.append("")
| |
| intro.append("'''Page last generated on %s.'''" % datetime.date.today())
| |
| intro.append("")
| |
| intro.append("'''Warning:''' This reference might be out of date. The python script to generate this page can be found on the discussion page. Please be aware that any manual changes made to this page may be lost when the page is generated anew. Also, this reference might not reflect what is currently in the game. [http://themanaworld.svn.sourceforge.net/viewvc/themanaworld/server-data/branches/0.0/db/mob_db.txt?revision=HEAD&view=markup You can view the most up-to-date version here.]")
| |
| intro.append("")
| |
| intro.append("The monsters are sorted roughly by their fighting strength, calculated as: <code>health_points * (attack_min + attack_max)</code>.")
| |
| intro.append("")
| |
| intro.append("'''Key:''' HP is health points, DEF is defense, ATT is attack, EXP is the experience, JEXP is the job experience. The others are self-explanatory. Traits (such as Aggressive) are written in " + traitstart + "italics" + traitend + ".")
| |
| intro.append("")
| |
| | |
| | |
| # Table headers
| |
| | |
| def printtableheader():
| |
| sys.stdout.write('! style="background:#efdead;" | Image\n')
| |
| sys.stdout.write('! style="background:#efdead;" | Name\n')
| |
| sys.stdout.write('! style="background:#efdead;" | ID\n')
| |
| sys.stdout.write('! style="background:#efdead;" | HP\n')
| |
| sys.stdout.write('! style="background:#efdead;" | DEF\n')
| |
| sys.stdout.write('! style="background:#efdead;" | ATT\n')
| |
| sys.stdout.write('! style="background:#efdead;" | EXP\n')
| |
| sys.stdout.write('! style="background:#efdead;" | JEXP\n')
| |
| sys.stdout.write('! style="background:#efdead;" | Drops\n')
| |
| sys.stdout.write('|-\n')
| |
| | |
| | |
| class whatever: pass
| |
| | |
| log = []
| |
| | |
| | |
| def saveint(string):
| |
| a = 0
| |
| try:
| |
| a = int(string)
| |
| except:
| |
| a = 0
| |
| return a
| |
|
| |
| | |
| def parsemonsters(file):
| |
| objects = []
| |
| for line in file:
| |
| s = line[0:line.find('//')].strip().replace('\t','')
| |
| if s:
| |
| values = s.split(',')
| |
| if line[0] == '#':
| |
| if debug:
| |
| log.append("FOUND COMMENT LINE: %s" % str(values))
| |
| continue
| |
| if (len(values) != 55):
| |
| log.append("mob_db: Warning, monster-line with ID %s has %d values instead of 55" % (values[0], len(values)))
| |
| if debug:
| |
| log.append(" line was %s" % str(values))
| |
| while (len(values) < 54):
| |
| values.append('')
| |
| while (len(values) > 54):
| |
| values.pop()
| |
| | |
| o = whatever()
| |
| | |
| o.id = saveint(values[0]) # Monster ID
| |
| o.label = values[1] # The label (name) used in GM commands
| |
| o.name = values[2] # The name known to the server (not to the client)
| |
| o.level = saveint(values[3]) # Level
| |
| o.hp = saveint(values[4]) # Health points
| |
| o.sp = saveint(values[5]) # SP
| |
| o.experience = saveint(values[6]) # Experience points
| |
| o.jobexperience = saveint(values[7]) # Job experience points
| |
| o.range1 = saveint(values[8]) # Range of attack
| |
| o.attackmin = saveint(values[9]) # Minimum attack damage
| |
| o.attackmax = saveint(values[10]) # Maximum attack damage
| |
| o.defense = saveint(values[11]) # Defense (relative in percent)
| |
| o.magicaldefense = saveint(values[12]) # Magical defense (ditto)
| |
| o.strength = saveint(values[13]) # Strength level
| |
| o.agility = saveint(values[14]) # Agility level
| |
| o.vitality = saveint(values[15]) # Vitality level
| |
| o.intelligence = saveint(values[16]) # Intelligence level
| |
| o.dexterity = saveint(values[17]) # Dexterity level
| |
| o.luck = saveint(values[18]) # Luck level
| |
| o.range2 = saveint(values[19]) # Some-other range ???
| |
| o.range3 = saveint(values[20]) # Line-of-sight range ???
| |
| o.scale = saveint(values[21]) # The size type
| |
| o.race = saveint(values[22]) # Race
| |
| o.element = saveint(values[23]) # Element level and type
| |
| o.mode = saveint(values[24]) # Behaviour type (aggressive etc.)
| |
| o.speed = saveint(values[25]) # Walking speed (faster for lower values)
| |
| o.attackdelay = saveint(values[26]) # Attack delay (attack speed is the inverse)
| |
| o.attackmotion = saveint(values[27]) # Speed of attack animation ???
| |
| o.damagemotion = saveint(values[28]) # Speed of damage animation ???
| |
| | |
| o.drop = []
| |
| for i in range(8):
| |
| o.drop.append(whatever())
| |
| | |
| o.drop[0].id = saveint(values[29]) # The following are 8 groups of item IDs and
| |
| o.drop[0].per = saveint(values[30]) # drop rates (100 = 1%) for drops 1 to 8
| |
| o.drop[1].id = saveint(values[31])
| |
| o.drop[1].per = saveint(values[32])
| |
| o.drop[2].id = saveint(values[33])
| |
| o.drop[2].per = saveint(values[34])
| |
| o.drop[3].id = saveint(values[35])
| |
| o.drop[3].per = saveint(values[36])
| |
| o.drop[4].id = saveint(values[37])
| |
| o.drop[4].per = saveint(values[38])
| |
| o.drop[5].id = saveint(values[39])
| |
| o.drop[5].per = saveint(values[40])
| |
| o.drop[6].id = saveint(values[41])
| |
| o.drop[6].per = saveint(values[42])
| |
| o.drop[7].id = saveint(values[43])
| |
| o.drop[7].per = saveint(values[44])
| |
| | |
| o.item1 = saveint(values[45]) # ???
| |
| o.item2 = saveint(values[46]) # ???
| |
| o.mexp = saveint(values[47]) # ???
| |
| o.expper = saveint(values[48]) # ???
| |
| | |
| o.mvp = []
| |
| for i in range(3):
| |
| o.mvp.append(whatever())
| |
| | |
| o.mvp[0].id = saveint(values[49]) # The following are 3 groups of item IDs and
| |
| o.mvp[0].per = saveint(values[50]) # drop rates (100 = 1%) for what drops ???
| |
| o.mvp[1].id = saveint(values[51])
| |
| o.mvp[1].per = saveint(values[52])
| |
| o.mvp[2].id = saveint(values[53])
| |
| o.mvp[2].per = saveint(values[54])
| |
| | |
| objects.append(o)
| |
| | |
| return objects
| |
| | |
| | |
| def addimageurls(monsters):
| |
| global imageurls
| |
| for m in monsters:
| |
| if imageurls.has_key(m.label):
| |
| m.imgurl = imageurls[m.label]
| |
| else:
| |
| m.imgurl = ''
| |
| if debug:
| |
| log.append('Warning: Could not find imageurl for %s' % m.label)
| |
| | |
| | |
| def adddropnames(monsters,dropnames):
| |
| for m in monsters:
| |
| for d in m.drop:
| |
| # Only add a dropname if it isn't "default" (id=0)
| |
| if dropnames.has_key(d.id) and int(d.id):
| |
| d.name = dropnames[d.id]
| |
| else:
| |
| d.name = ''
| |
|
| |
| | |
| def parseitemnames(file):
| |
| global log
| |
| dic = {}
| |
| for line in file:
| |
| if line[0] == '#':
| |
| continue
| |
| s = line[0:line.find('//')].strip()
| |
| if s:
| |
| values = s.split(',')
| |
| if (len(values) < 3):
| |
| if len(values) > 0: log.append("mob_db: Warning, item-line with ID %s doesnt even have 3 values. Skipped." % (values[0], len(values)))
| |
| else:
| |
| id = int(values[0])
| |
| dic[id] = values[2];
| |
| return dic
| |
| | |
| | |
| def printlog():
| |
| global log
| |
| if len(log) > 0:
| |
| sys.stdout.write('\n---------------------------------------\n')
| |
| for line in log:
| |
| sys.stdout.write(line+'\n')
| |
| | |
| | |
| def getdropstring(monster):
| |
| i = 0
| |
| output = ""
| |
| monster.drop.sort(lambda x,y: y.per-x.per)
| |
| for d in monster.drop:
| |
| if d.name:
| |
| if (i != 0):
| |
| output += '<br>'
| |
| s = ""
| |
| if d.per >= 1000:
| |
| s = "%d" % (d.per/100)
| |
| elif d.per >= 100:
| |
| if (d.per % 100) != 0:
| |
| s = "%1.1f" % (d.per/100.0)
| |
| else:
| |
| s = "%d" % (d.per/100)
| |
| else:
| |
| if (d.per % 1000) != 0:
| |
| s = "%.2f" % (d.per/100.0)
| |
| else:
| |
| s = "%.1f" % (d.per/100.0)
| |
| output += ("%s (%s%%)" % (d.name.replace('\t',''), s))
| |
| i = i + 1
| |
| return output
| |
| | |
| | |
| def printmonsters(monsters):
| |
| # Key to monster behaviour/trait modes
| |
| #
| |
| # TRAIT ID FIELD = MODE COMMENT
| |
| # Moving 0 0x0001 1
| |
| # Looter 1 0x0002 2
| |
| # Aggressor 2 0x0004 4
| |
| # Assister 3 0x0008 8
| |
| # ? 4 0x0010 16 Currently not used
| |
| # ? 5 0x0020 32 Used (but what does it do?)
| |
| # ? 6 0x0040 64 Currently not used
| |
| # ? 7 0x0080 128 Currently not used
| |
| # ? 8 0x0100 256 Currently not used
| |
| # ? 9 0x0200 512 Currently not used
| |
| # ? 10 0x0400 1024 Currently not used
| |
| # ? 11 0x0800 2048 Currently not used
| |
| # ? 12 0x1000 4096 Currently not used
| |
| # Attack master 13 0x2000 8192 Used for summoned monsters
| |
| | |
| sys.stdout.write('{| border="1" cellspacing="0" cellpadding="5" width="100%" align="center"\n')
| |
| | |
| i = 0
| |
| for m in monsters:
| |
| if (i == headerafterrow):
| |
| i = 0
| |
| if (i == 0):
| |
| printtableheader()
| |
| | |
| # Image
| |
| sys.stdout.write('| align="center" | %s\n' % m.imgurl)
| |
| | |
| # Name and Stationary/Assists traits
| |
| sys.stdout.write('| %s' % m.name)
| |
| if (m.mode >> 0 & 1 == 0):
| |
| sys.stdout.write('<br />' + traitstart + 'Stationary' + traitend)
| |
| if (m.mode >> 3 & 1 == 1):
| |
| sys.stdout.write('<br />' + traitstart + 'Assists' + traitend)
| |
| sys.stdout.write('\n')
| |
| | |
| # ID, Health and Defense
| |
| sys.stdout.write('| align="center" | %d\n' % m.id)
| |
| sys.stdout.write('| align="center" | %d\n' % m.hp)
| |
| sys.stdout.write('| align="center" | %d%%\n' % m.defense)
| |
| | |
| # Attack and No-attack/Aggressive traits
| |
| if (m.mode >> 7 & 1 == 0):
| |
| sys.stdout.write('| align="center" | ' + traitstart + 'N/A' + traitend)
| |
| else:
| |
| if m.attackmin < m.attackmax:
| |
| sys.stdout.write('| align="center" | %d-%d' % (m.attackmin, m.attackmax))
| |
| else:
| |
| sys.stdout.write('| align="center" | %d' % m.attackmin)
| |
| if (m.mode >> 2 & 1 == 1):
| |
| sys.stdout.write('<br />' + traitstart + 'Aggressive' + traitend)
| |
| sys.stdout.write('\n')
| |
| | |
| # Experience and Job experience
| |
| sys.stdout.write('| align="center" | %d\n' % m.experience)
| |
| sys.stdout.write('| align="center" | %d\n' % m.jobexperience)
| |
| | |
| # Drops and Looter trait
| |
| sys.stdout.write('| %s' % getdropstring(m))
| |
| if (m.mode >> 1 & 1 == 1):
| |
| sys.stdout.write('<br />' + traitstart + 'Picks up loot' + traitend)
| |
| sys.stdout.write('\n')
| |
| | |
| sys.stdout.write('|-\n')
| |
| i = i + 1
| |
| | |
| sys.stdout.write('|}\n')
| |
| | |
| | |
| #MAIN
| |
| try:
| |
| if (len(sys.argv) == 1):
| |
| mob_db = "mob_db.txt"
| |
| item_db = "item_db.txt"
| |
| elif (len(sys.argv) == 3):
| |
| mob_db = sys.argv[1]
| |
| item_db = sys.argv[2]
| |
| else:
| |
| mob_db = ''
| |
| item_db = ''
| |
| sys.stdout.write("Wrong number of arguments\n")
| |
| | |
| if (mob_db and item_db) :
| |
| if (not os.path.isfile(mob_db)):
| |
| sys.stdout.write("File does not exist: %s\n" % mob_db)
| |
| mob_db = ''
| |
| if (not os.path.isfile(item_db)):
| |
| sys.stdout.write("File does not exist: %s\n" % item_db)
| |
| item_db = ''
| |
|
| |
| if not (mob_db and item_db):
| |
| sys.stdout.write("\nUSAGE:\n")
| |
| sys.stdout.write("dbtowiki without any arguments will use item_db.txt and mob_db.txt in the current directory.\n")
| |
| sys.stdout.write("to specify custom files, call: dbtowiki <mob_db> <item_db>\n")
| |
| exit(-1);
| |
| else:
| |
| if debug:
| |
| log.append("Monster-list [mob_db] = %s" % mob_db)
| |
| log.append("Item-list [item_db] = %s" % item_db)
| |
| f = open(mob_db)
| |
| monsters = parsemonsters(f);
| |
| f = open(item_db)
| |
| itemnames = parseitemnames(f);
| |
| | |
| addimageurls(monsters)
| |
| adddropnames(monsters,itemnames)
| |
| monsters.sort(lambda x, y: x.hp*(x.attackmin+x.attackmax) - y.hp*(y.attackmin+y.attackmax))
| |
| | |
| for line in intro:
| |
| sys.stdout.write(line+'\n')
| |
| | |
| printmonsters(monsters)
| |
| | |
| finally:
| |
| printlog()
| |
| </pre>
| |
| | |
| ==Discussion==
| |
| | |
| === Strength of Red Scorpion ===
| |
| Wasnt the RED scorpion supposed to be a miniboss? that HP seems kinda low for one :o | | Wasnt the RED scorpion supposed to be a miniboss? that HP seems kinda low for one :o |
| --[[User:Bear|Bear]] | | --[[User:Bear|Bear]] |
| Line 423: |
Line 12: |
| --[[User:BrightCiro|BrightCiro]] (Ciro Leonardo, the char) | | --[[User:BrightCiro|BrightCiro]] (Ciro Leonardo, the char) |
|
| |
|
| === Agressive/nonagressive monsters? === | | == [FIXED] Agressive/nonagressive monsters? == |
| Is there an easy way to list this attribute? [[User:Hoogli|Hoogli]] 21:02, 18 April 2008 (CEST) | | Is there an easy way to list this attribute? [[User:Hoogli|Hoogli]] 21:02, 18 April 2008 (CEST) |
|
| |
|
| Line 433: |
Line 22: |
| ::: The traits that TMW currently uses are as follows (either on/off): Moveable/Cannot move · Loots/Does not loot · Aggressive/Does not attack on sight · Assists/Does not help its friends · <A trait that may be related to a boss; currently Santa Slimes and Spiders have this, unsure what it really does...> · Has attack/Does not have any attack. Which ones should be shown, and more importantly to me, how? Suggestions welcome. ✎ [[User:Kess|Kess]]<sup>[[User talk:Kess|☽]]</sup> 14:00, 30 October 2008 (CET) | | ::: The traits that TMW currently uses are as follows (either on/off): Moveable/Cannot move · Loots/Does not loot · Aggressive/Does not attack on sight · Assists/Does not help its friends · <A trait that may be related to a boss; currently Santa Slimes and Spiders have this, unsure what it really does...> · Has attack/Does not have any attack. Which ones should be shown, and more importantly to me, how? Suggestions welcome. ✎ [[User:Kess|Kess]]<sup>[[User talk:Kess|☽]]</sup> 14:00, 30 October 2008 (CET) |
|
| |
|
| ====Formatting examples====
| | ===Formatting examples=== |
| '''Version 1'''—‘unusual’ mob traits listed below the name | | '''Version 1'''—‘unusual’ mob traits listed below the name |
| {| border="1" cellspacing="0" cellpadding="5" width="100%" align="center" | | {| border="1" cellspacing="0" cellpadding="5" width="100%" align="center" |
| Line 538: |
Line 127: |
| :: This one is used for now. Script updated and main page regenerated. ✎ [[User:Kess|Kess]]<sup>[[User talk:Kess|☽]]</sup> 16:52, 30 October 2008 (CET) | | :: This one is used for now. Script updated and main page regenerated. ✎ [[User:Kess|Kess]]<sup>[[User talk:Kess|☽]]</sup> 16:52, 30 October 2008 (CET) |
|
| |
|
| === Accuracy/Evade ===
| | == Accuracy/Evade == |
| Wouldn't it effective to put down the accuracy and evade rates of enemies as well? It would help take the guessing game out and prevent further deaths of players via play-testing. (Esp. mountain snakes) | | Wouldn't it effective to put down the accuracy and evade rates of enemies as well? It would help take the guessing game out and prevent further deaths of players via play-testing. (Esp. mountain snakes) |
| Since I am making an evade character, it would be nice to know the % to hit so I can adjust my evade accordingly so I dont go overboard and be weaker than I could be. | | Since I am making an evade character, it would be nice to know the % to hit so I can adjust my evade accordingly so I dont go overboard and be weaker than I could be. |
|
| |
|
| Scan9 | | Scan9 |
| | : I am personally unsure whether I would want to display these secondary stats (secondary as in calculated by some formula from the primary stats). ✎ [[User:Kess|Kess]]<sup>[[User talk:Kess|☽]]</sup> 14:56, 9 November 2008 (CET) |
|
| |
|
| === [SOLVED] Broken Link ===
| | == [FIXED] Broken Link == |
| This link at the top of the monster list ( [http://themanaworld.svn.sourceforge.net/viewcvs.cgi/themanaworld/server-data/trunk/db/mob_db.txt?view=markup]) returns: | | This link at the top of the monster list ( [http://themanaworld.svn.sourceforge.net/viewcvs.cgi/themanaworld/server-data/trunk/db/mob_db.txt?view=markup]) returns: |
|
| |
|
| Line 560: |
Line 150: |
| : Fixed in an earlier revision. ✎ [[User:Kess|Kess]]<sup>[[User talk:Kess|☽]]</sup> 10:32, 28 October 2008 (CET) | | : Fixed in an earlier revision. ✎ [[User:Kess|Kess]]<sup>[[User talk:Kess|☽]]</sup> 10:32, 28 October 2008 (CET) |
|
| |
|
| === [SOLVED] Question ===
| | == [FIXED] Question == |
|
| |
|
| What's MOBP? Mob points? Someone changed '''Job Exp.''' for '''Mobp.''' in the monster table. | | What's MOBP? Mob points? Someone changed '''Job Exp.''' for '''Mobp.''' in the monster table. |
| Line 568: |
Line 158: |
|
| |
|
| ::Yes, I do not know what I was thinking making that change. I probably had a very “bright†moment or some such. The main page will be updated shortly. ✎ [[User:Kess|Kess]]<sup>[[User talk:Kess|☽]]</sup> 23:45, 28 October 2008 (CET) | | ::Yes, I do not know what I was thinking making that change. I probably had a very “bright†moment or some such. The main page will be updated shortly. ✎ [[User:Kess|Kess]]<sup>[[User talk:Kess|☽]]</sup> 23:45, 28 October 2008 (CET) |
| | |
| | == Links to quests == |
| | [[User:Siorinex|Siorinex]] added links to quests from item drops, while a generally speaking great idea, I think such information has a more practical use in the [[item reference]]. For now this information will be lost by me updating the page with the script, but [http://wiki.themanaworld.org/index.php?title=Monster_reference&diff=10632&oldid=10625 here is a link to the changes]. |
| | |
| | Some thoughts on what could be done: |
| | * Have specific wiki page for each item, then the monster drops could be linked to their respective pages. |
| | * Leave the items out of the [[monster reference]], but add a link somewhere to the [[item reference]]. |
| | |
| | For now I will add a link to the item reference. To create individual item pages is something I am not prepared/willing to undertake. In any regard I think such a thing would better wait till the move to tmwserv or at least till after a rebalance of the current game. ✎ [[User:Kess|Kess]]<sup>[[User talk:Kess|☽]]</sup> 14:56, 9 November 2008 (CET) |
How to generate the main page
The main article is generated by a python script that creates the monster page in wikicode from the eAthena configuration files, the script can be found on the scripts subpage.
Please use the python script to update the page, as manual changes may be overwritten by someone pasting in the output given from running the script.
Strength of Red Scorpion
Wasnt the RED scorpion supposed to be a miniboss? that HP seems kinda low for one :o
--Bear
Cool, I was thinking about bosses too.
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.
--BrightCiro (Ciro Leonardo, the char)
[FIXED] Agressive/nonagressive monsters?
Is there an easy way to list this attribute? Hoogli 21:02, 18 April 2008 (CEST)
- Another column for attributes (aggressive, cowardly, etc.) or name highlighting. — Jaxad0127 01:48, 19 April 2008 (CEST)
- I will take a look on this the next time I am working on the script, unless someone else wishes to take a look? (This is the first time I’m working with python.) ✎ Kess☽ 23:45, 28 October 2008 (CET)
- Ok. Last night I added this information to the script (not updated on the wiki yet). But I am not sure how to show it, a few suggestions follows. I did not want to put it in an additional column as the table is quite wide already (it will soon, if not already, get too wide for narrow screens/windows).
- The traits that TMW currently uses are as follows (either on/off): Moveable/Cannot move · Loots/Does not loot · Aggressive/Does not attack on sight · Assists/Does not help its friends · <A trait that may be related to a boss; currently Santa Slimes and Spiders have this, unsure what it really does...> · Has attack/Does not have any attack. Which ones should be shown, and more importantly to me, how? Suggestions welcome. ✎ Kess☽ 14:00, 30 October 2008 (CET)
Formatting examples
Version 1—‘unusual’ mob traits listed below the name
| Image
|
Name
|
ID
|
HP
|
DEF
|
ATT
|
EXP
|
JEXP
|
Drops
|
|
Spider Loots Aggressive Assists
|
1012
|
800
|
4%
|
70-85
|
375
|
280
|
Treasure Key (5%) Apple (1%)
|
- Doesn’t look good, though the formatting could be changed. Not sure about this idea. In my current version of the python script this is how I tested it; the following is displayed: Cannot move, Loots, Is aggressive, Assists, Do not attack. ✎ Kess☽ 14:00, 30 October 2008 (CET)
Version 2—aggressive mobs has their name listed in red
| Image
|
Name
|
ID
|
HP
|
DEF
|
ATT
|
EXP
|
JEXP
|
Drops
|
|
Spider
|
1012
|
800
|
4%
|
70-85
|
375
|
280
|
Treasure Key (5%) Apple (1%)
|
- Well works quite nicely for aggressive. But the other traits? ✎ Kess☽ 14:00, 30 October 2008 (CET)
Version 3—a combination of the two previous alternatives
| Image
|
Name
|
ID
|
HP
|
DEF
|
ATT
|
EXP
|
JEXP
|
Drops
|
|
Alizarin Plant Stationary
|
1032
|
1
|
100%
|
N/A
|
1
|
1
|
Alizarin Herb (30%) Alizarin Herb (30%) Alizarin Herb (30%)
|
|
|
Silkworm
|
1035
|
1
|
2%
|
0
|
1
|
100
|
Silk Cocoon (50%)
|
|
Flower Stationary
|
1014
|
700
|
0%
|
70-75
|
375
|
110
|
Petal (5%) Coin Bag (4%) Apple (1%) Arrow (1%) Empty Bottle (0.10%)
|
|
Spider Assists
|
1012
|
800
|
4%
|
70-85 Aggressive
|
375
|
280
|
Treasure Key (5%) Apple (1%) Picks up loot
|
- I think I like this the most, but I have not yet decided upon where to put the traits or how to format them. ✎ Kess☽ 14:00, 30 October 2008 (CET)
- I support this one. Those locations are fine too. — Jaxad0127 14:12, 30 October 2008 (CET)
- This one is used for now. Script updated and main page regenerated. ✎ Kess☽ 16:52, 30 October 2008 (CET)
Accuracy/Evade
Wouldn't it effective to put down the accuracy and evade rates of enemies as well? It would help take the guessing game out and prevent further deaths of players via play-testing. (Esp. mountain snakes)
Since I am making an evade character, it would be nice to know the % to hit so I can adjust my evade accordingly so I dont go overboard and be weaker than I could be.
Scan9
- I am personally unsure whether I would want to display these secondary stats (secondary as in calculated by some formula from the primary stats). ✎ Kess☽ 14:56, 9 November 2008 (CET)
[FIXED] Broken Link
This link at the top of the monster list ( [1]) returns:
"
An Exception Has Occurred
The root "viewcvs.cgi" is unknown. If you believe the value is correct, then please double-check your configuration.
HTTP Response Status
404 Repository not found
"
This needs to be fixed.
- Fixed in an earlier revision. ✎ Kess☽ 10:32, 28 October 2008 (CET)
[FIXED] Question
What's MOBP? Mob points? Someone changed Job Exp. for Mobp. in the monster table.
I didn't changed it back because i don't know what it is. Gring0 19:36, 28 October 2008 (CET)
- I think Kess meant monster points (for the "quest" in Tulimshar). THose aren't stored in the monster DB yet. I changed teh script back, feel free to regenerate the page. — Jaxad0127 20:26, 28 October 2008 (CET)
- Yes, I do not know what I was thinking making that change. I probably had a very “bright†moment or some such. The main page will be updated shortly. ✎ Kess☽ 23:45, 28 October 2008 (CET)
Links to quests
Siorinex added links to quests from item drops, while a generally speaking great idea, I think such information has a more practical use in the item reference. For now this information will be lost by me updating the page with the script, but here is a link to the changes.
Some thoughts on what could be done:
- Have specific wiki page for each item, then the monster drops could be linked to their respective pages.
- Leave the items out of the monster reference, but add a link somewhere to the item reference.
For now I will add a link to the item reference. To create individual item pages is something I am not prepared/willing to undertake. In any regard I think such a thing would better wait till the move to tmwserv or at least till after a rebalance of the current game. ✎ Kess☽ 14:56, 9 November 2008 (CET)