summaryrefslogtreecommitdiff
path: root/Dev
diff options
context:
space:
mode:
author(no author) <(no author)@54d463be-8e91-2dee-dedb-b68131a5f0ec>2004-11-04 23:25:09 +0000
committer(no author) <(no author)@54d463be-8e91-2dee-dedb-b68131a5f0ec>2004-11-04 23:25:09 +0000
commit195dffc20af1fb32c7e4119988911b72955aeabc (patch)
treeb60d2a5e72d64dc5fc21eb9ce0962631e774a4c9 /Dev
downloadhercules-195dffc20af1fb32c7e4119988911b72955aeabc.tar.gz
hercules-195dffc20af1fb32c7e4119988911b72955aeabc.tar.bz2
hercules-195dffc20af1fb32c7e4119988911b72955aeabc.tar.xz
hercules-195dffc20af1fb32c7e4119988911b72955aeabc.zip
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@2 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'Dev')
-rw-r--r--Dev/Dev-Folder-Notes.txt3
-rw-r--r--Dev/TODO.txt684
-rw-r--r--Dev/TODO_MOB_AI.txt134
-rw-r--r--Dev/bugs.txt51
-rw-r--r--Dev/forSQLdev.txt146
-rw-r--r--Dev/quotes.txt148
-rw-r--r--Dev/resnametable.TXT64
7 files changed, 1230 insertions, 0 deletions
diff --git a/Dev/Dev-Folder-Notes.txt b/Dev/Dev-Folder-Notes.txt
new file mode 100644
index 000000000..ded4eb5e4
--- /dev/null
+++ b/Dev/Dev-Folder-Notes.txt
@@ -0,0 +1,3 @@
+- This folder and all files inside it must be deleted before any distribution
+- This folder is meant for developers only
+- Use this folder to contain notes, todo, testcases, problems, etc
diff --git a/Dev/TODO.txt b/Dev/TODO.txt
new file mode 100644
index 000000000..c43eddaf8
--- /dev/null
+++ b/Dev/TODO.txt
@@ -0,0 +1,684 @@
+The format of to-do list items is:
+
+Description - A description of the task
+Status - The status of the task. The possible values are Pending and Completed
+Assignee - The nickname of the person whom is assigned the task
+Notes - Miscellaneous notes concerning the task
+
+**********
+
+Only the to-do list for the flat-file module should contain tasks concerning database corrections because databases changes for the SQL module are inherited from the flat-file module.
+
+**********
+1.
+Description: Fix the equip field values in item_db
+
+Status: Pending
+
+Assignee: NONE
+
+Notes: <Valaris> i know the equip values in item_db are ****ed <Valaris> not ****ed <Valaris> but supernovice equip is
+
+
+**********
+2.
+Description: Change monster summoning commands so they summon 1 monster if a quantity isn't specified
+
+Status: 50%
+
+Assignee: NONE
+
+Notes: Will work with just mob_id/name specified (ie @monster poring)
+ need to make it work with mob_id and name (ie @monster poring test) - Valaris
+
+
+**********
+3.
+Description: Fix Ghostring Card
+
+Status: Done
+
+Assignee: MouseJstr
+
+Notes: battle_config flag to disable ghosty armor
+ protecting you from mobs
+
+**********
+4.
+Description: Add nomagic mapflag/@skilloff/@skillon
+
+Status: Done
+
+Assignee: MouseJstr
+
+Notes: NONE
+
+
+**********
+5.
+Description: Checking help.txt (main directory, conf directory, doc directory) with atcommand.c
+
+Status: Pending
+
+Assignee: None
+
+Notes: In doc directory, do a help.txt for explaination of all commands.
+ In conf directory, do a help.txt for displaying the resume of each command in chat windows of the client
+ (chat windows does support more than 200 lines).
+ In main directory, suggestion to delete it.
+
+
+**********
+6.
+Description: Update produce_db
+
+Status: Pending
+
+Assignee: None
+
+Notes: The Alchemist Forging items were recently changed. The DB needs to be edited and if needed, source to be modified
+
+
+**********
+7.
+Description: novice.txt: new_1-4.gat,60,149,4 script Helper 55
+ This NPC gives infinite items and zenys.
+
+Status: Completed
+
+Assignee: Yor
+
+Notes: If you clicks on 'cancel' button or quits the game to come back, you can have infinite zenys and items.
+ So, we must save (in a variable) when the npc gives items/zenys and don't given them again.
+
+
+**********
+8.
+Description: scripts, register variables and job 1
+ When you become job 1, reset all variables of OTHER jobs too to save register memory.
+
+Status: Pending
+
+Assignee: None
+
+Notes: None
+
+
+**********
+9.
+Description: @mapspy <map> <on/off> command
+
+Status: Pending
+
+Assignee: None
+
+Notes: to receive any messages of all characters on a specifical map.
+ don't send duplicate messages if already @guildspy ou @partyspy
+
+
+**********
+10.
+Description: Pet Skills.
+
+Status: 90%
+
+Assignee: Valaris
+
+Notes: Don't touch pet.c, pet.h, or pet dbs.
+
+
+**********
+11.
+Description: Add kRO server side friends list.
+
+Status: 80%
+
+Assignee: davidsiaw
+
+Notes: Got most of the packets. Except the ones that tell the client that a player is online and tell the client to give messages.
+
+
+**********
+12.
+Description: Updating the 'gmcommands.html' with actual commands.
+
+Status: Pending
+
+Assignee: None
+
+Notes: NONE
+
+
+**********
+13.
+Description: On PVP map, don't count a 'GM HIDE' GM (2 normal players + 1 HIDE GM: 2/2, not 3/3).
+
+Status: Pending
+
+Assignee: None
+
+Notes: NONE
+
+
+**********
+14.
+Description: Add encrypted password option in login-server.
+
+Status: Blocked, no solution without limited client version.
+
+Assignee: Yor
+
+Notes: It's impossible to use encrypted password in the account file, if we want to authorise all client version.
+ Some clients use a (random) md5key and send a composed encrypted of the password.
+ So, these clients send a different encrypted password based on plain text password at every connection.
+ If the password is encrypted, we can not more compare with plain text.
+ The other solution can be to not authorise these clients. But, that will probably be the futur of ALL clients.
+ Reduce possibilities of client version isn't a good idea for the futur and for the compatibility (like use only plain text password client version).
+ Save in account the plain text and the encypted version use more memory for nothing, and don't add security.
+ Conclusion:
+ If you want protected your password, you must:
+ - protected you account file
+ - never send a password outside the server
+ - use only encypted client version (that send an encrypted password to server).
+
+
+**********
+15.
+Description: Create all reloaddb command in ladmin.
+
+Status: Affected
+
+Assignee: Yor
+
+Notes: NONE
+
+
+**********
+16.
+Description: Create a shutdown + time command in ladmin.
+
+Status: Affected
+
+Assignee: Yor
+
+Notes: NONE
+
+
+**********
+17.
+Description: Create a kickall command in ladmin.
+
+Status: Affected
+
+Assignee: Yor
+
+Notes: NONE
+
+
+**********
+18.
+Description: Create listban/listok command in ladmin.
+
+Status: Completed
+
+Assignee: Yor
+
+Notes: NONE
+
+
+**********
+19.
+Description: Login-server: create a first anti-hack system versus multiple connections trying.
+
+Status: Affected
+
+Assignee: Yor
+
+Notes: Set on IP.
+ An option to set number of connections before to block (number_of_try_before_block)
+ An option to set number of second where the tries must be done (within_seconds_for tries)
+ An option to set the time of impossible connection after block (blocked_time_in_minutes)
+ About wrong password, add:
+ dynamic_pass_failure_ban_time: 5 (duration of ban, in minutes)
+ dynamic_pass_failure_ban_how_many: 3 (number of tries before to ban)
+ dynamic_pass_failure_ban_how_long: 60 (inside time where the tries must be done before to ban, in sec)
+
+
+**********
+20.
+Description: Create @unban and @unblock GM command.
+
+Status: Completed
+
+Assignee: Yor
+
+Notes: NONE
+
+
+**********
+21.
+Description: Fix @nuke GM command.
+
+Status: Completed
+
+Assignee: Valaris
+
+Notes: If you nuke a mounted Knight/Crusader they lose Peco but see it in the equip.window.
+ And can't get another one.
+
+
+**********
+22.
+Description: Adding GM command @guildmaster <playername>
+
+Status: Pending
+
+Assignee: MC_Cameri
+
+Notes: Guild Master turns another member of his guild into Guild Master.
+ MC Cameri: It will now be called @swapgm, meaning swap of guild master.
+
+
+**********
+23.
+Description: In Guilds folder change all checkcart -> checkcart(0)
+
+Status: Completed?
+
+Assignee: Aria
+
+Notes: All checkcart were in the old/ folder o_O?
+ Because just "checkcart" always returns 0. (All common Kafras&breeder have been already fixed)
+
+
+**********
+24.
+Description: In script.c parser should be fixed to allow argumentless functions return value.
+
+Status: Pending
+
+Assignee: None
+
+Notes: Functions like "checkcart", "checkfalcon", "checkriding" don't return value if used without agruments or without "()".
+ Example: 'checkcart' always return Zero (because the parser doesn't recognize it as a function!)
+ Example: 'checkcart()' map server doesn't load (because argless funcs aren't in use)
+ As a temp fix Lupus added "*" in script.c in "checkcart", "checkfalcon", "checkriding" definitions.
+ To be able running them with any fake arg. i.e. checkcart(0) works fine!
+
+
+**********
+25.
+Description: Create a LAN management, 1 by server
+
+Status: Affected
+
+Assignee: Yor
+
+Notes: 1 computer can be on multiple LAN. So, each server must have 1 LAN definition.
+
+
+**********
+26.
+Description: @ban/@block must be usable when player is offline
+
+Status: Completed
+
+Assignee: Yor
+
+Notes: NONE
+
+
+**********
+27.
+Description: When it's night, inscreasing spawn of undeads
+
+Status: Pending
+
+Assignee: None
+
+Notes: Variable 'night_flag' is 0 if it's day, or 1 if it's night.
+
+
+**********
+28.
+Description: in ladmin, create a method for account with spaces
+
+Status: Completed
+
+Assignee: Yor
+
+Notes: use "<account name>" or '<account name>'.
+
+
+**********
+29.
+Description: @(un)ban/@(un)block: reduction of number of packets
+ improvement of messages
+
+Status: Completed
+
+Assignee: Yor
+
+Notes: None.
+
+
+**********
+30.
+Description: Create (un)ban/(un)block in ladmin to be similar with GM command
+
+Status: Completed
+
+Assignee: Yor
+
+Notes: None.
+
+
+**********
+31.
+Description: Packet 0x3831 need too much size! IMPORTANT to found a solution!
+ It's cause of crashes or freeze of servers (char or map).
+
+Status: Pending
+
+Assignee: None
+
+Notes: When map-server do a connection to char-server, this packet is send (C->M). Example of display (1 connection!):
+ socket #5:
+ wdata (size: 131072 bytes) need to be expanded.
+ wdata is actually used for 111654 bytes (free bytes: 19418).
+ packet 0x3831 need mode space (size of the packet: 12332).
+ wdata expanded to 262144 bytes.
+ socket #5:
+ wdata (size: 262144 bytes) need to be expanded.
+ wdata is actually used for 234974 bytes (free bytes: 27170).
+ packet 0x3831 need mode space (size of the packet: 12332).
+ wdata expanded to 524288 bytes.
+ Additional note: there is only 63 guilds on this server...
+
+
+**********
+32.
+Description: Management of PM ignore for wisps
+
+Status: Completed
+
+Assignee: Yor
+
+Notes: None.
+
+
+**********
+33.
+Description: Add a GM info hacker minimum level parameter
+
+Status: Completed
+
+Assignee: Yor
+
+Notes: first use: spoof namer
+
+
+**********
+34.
+Description: Create @makepet to create directly a pet
+
+Status: Pending
+
+Assignee: None
+
+Notes: NONE
+
+
+**********
+35.
+Description: In dungeon, set night for people. In shop, set day for people.
+
+Status: Assigned
+
+Assignee: Yor
+
+Notes: work like variable 'night_flag' is 0 if it's day, or 1 if it's night.
+
+
+**********
+36
+Description: Create your limited time.... but an option can be good :)...
+
+Status: Completed
+
+Assignee: Yor
+
+Notes: NONE
+
+**********
+37.
+Description: @killer - enables a @gm to hit a player outside of pvp
+
+Status: Done
+
+Assignee: MouseJstr
+
+Notes:
+
+**********
+38.
+Description: atcommand scripts - script @atcommands`
+
+Status: Pending
+
+Assignee: MouseJstr
+
+Notes:
+
+**********
+40.
+Description: @addwarp - create a static warp to a target location
+
+Status: Done
+
+Assignee: MouseJstr
+
+Notes:
+**********
+41.
+Description: @movenpc
+ - manipulate npc's at runtime
+
+Status: Done
+
+Assignee: MouseJstr
+
+Notes: handling npc's with the same name on multiple maps
+ requires thoughts
+**********
+42.
+Description: @uptime - how long as the server been up?
+
+Status: Pending
+
+Assignee: MouseJstr, MC Cameri
+
+Notes:
+ MC Cameri: This is done already in OA, wait for merge.
+ Aria: I said that, but they told me it was BROKED!
+**********
+43.
+Description: map aliases -
+ create virtual copies of maps but don't require
+ changes to the client to support it
+
+Status: 80% done
+
+Assignee: MouseJstr
+
+Notes
+**********
+44.
+Description: Fix GTB card
+
+Status: Done
+
+Assignee: MouseJstr
+
+Notes: battle_config command that controls just how magic resistant
+ you raelly are
+**********
+45.
+Description: gm @follow command
+
+Status: Done
+
+Assignee: MouseJstr
+
+Notes: follows players, including warping to them... lets you do
+ a gm hide and grab a cup of coffee while watching a player
+ do bad things..
+**********
+47.
+Description: different max aspd for players and GM's
+
+Status: Pending
+
+Assignee: MouseJstr
+
+Notes:
+**********
+48.
+Description: Configurable max num castles for a guild
+
+Status: Done
+
+Assignee: MouseJstr
+
+Notes: We limit each guild to 3 castles on my server
+*********
+49
+Description: Add @chareffect - Done [MouseJstr]
+ set a persistant effect on another character
+ Add @chardisguise - done [MouseJstr]
+ set a persistant disguise effect on another character
+ Add @mobid
+ look up a monster by name - needed?
+ Add @petid
+ look up a pet by name
+ Add @chardye
+ Add @charhairstyle
+ Add @charhaircolor
+ Versions of dye hairstyle and haircolor fo other chars
+ Add @followme
+ make a character follow you.. including warps
+ Add @shuffle
+ re-arrange everybody on the map randomly
+ Add @dropall - done [MouseJstr]
+ takes all my possessions and throws them on the ground
+ Add @chardropall - done [MouseJstr]
+ takes all the players possessions and throws them on the ground..
+ Add @storeall - done [MouseJstr]
+ takes all my possessions and puts them in storage, leaving 500 zeny to let you take it all back out again
+ Add @charstoreall - done [MouseJstr]
+ takes all the players possessions and puts them in storage, leaving 500 zeny to let you take it all back out again
+ Add @skillid - lookup a skill by name - done [MouseJstr
+ Add @useskill - use a skill given the number or name - done [MouseJstr]
+*********
+50.
+Description: New Guild Skills
+
+Status: Pending
+
+Assignee: NONE
+
+Notes: use http://forums.emperium.org/viewtopic.php?t=43245 for a list
+********
+51.
+Description: Devilring
+
+Status: Pending
+
+Assignee: NONE
+
+Notes: New mini-boss; find as much about it as possible including stats and drops
+*********
+52.
+Description: LV4 Weapon Quests
+
+Status: Pending
+
+Assignee: NONE
+
+Notes: Info here http://forums.emperium.org/viewtopic.php?t=39934 Use perm variables?
+*********
+53.
+Description: Monster Pictures
+
+Status: Pending
+
+Assignee: NONE
+
+Notes: WTF! http://forums.emperium.org/viewtopic.php?t=32998
+*********
+54.
+Description: Wandering Singer
+
+Status: Pending
+
+Assignee: NONE
+
+Notes: May have to spy on kRO to get more info. http://forums.emperium.org/viewtopic.php?t=32998
+********
+55.
+Description: Arena Points
+
+Status: Pending
+
+Assignee: NONE
+
+Notes: points->item system; http://forums.emperium.org/viewtopic.php?t=32998
+********
+56.
+Description: kRO Account
+
+Status: Pending
+
+Assignee: NONE
+
+Notes: Give us a kRO account, gm or whatever so we can spy =OOOOOOOO
+*********
+57.
+Description: Baby Skills
+
+Stats: Pending
+
+Assignee: NONE
+
+Notes: 1. Skills
+ - Come here, baby.
+ ( Summons the adoptee )
+ - Mom, Dad, I love you.
+ ( For 5 minutes, the parent characters will not have EXP penalty upon death )
+ - Mom, Dad, I want to see you.
+ ( Summons the parents )
+ * For the summon skill, it works like wedding summon skill - it can only be done in areas where warps can be saved at.
+
+ 2. EXP Sharing
+ - Only the parents and the child can EXP share; nobody else can be in the party. If any other person joins, the EXP share resets.
+ - If you move to a different map, the EXP share resets.
+ - The EXP returned is only 1/3rd of normal since both mother and father character has to be in the same party with the child.
+
+ 3. Changes after adoption
+ - For the child character, the character becomes small.
+
+ 4. What happens if parents divorce
+ - The parents can NEVER adopt another child ever again even after divorce + remarry.
+ - The character child continues to be as it is (meaning, even if the child no longer has a parent, he or she will continue to be the 'child'), and only 1 child can be obtained per character.
+ - Even if the child character is deleted, the parents can never get another child.
+ * This means, when you adopt a child character, DO IT CAREFULLY. For the entire history of your character, you can only, and I mean ONLY get one child character.
+
+ - The Child Adoption system now changes as following, so please make note of this:
+ * The adopted child cannot raise any stat to beyond 80.
+ * The adopted child will have 70% of MaxHP and MaxSP of normal characters.
+ * The adopted child cannot marry.
+ * "Mom, Dad, I love you" skill will only last 2 minutes instead of 5.
+ * The parents must be both LV 70 or above in order to adopt.
+ * The parents must be both LV 70 or above in order to share EXP as family.
+ * "Mom, Dad, I love you" skill will now take 10% of MaxSP instead of taking 1 SP.
+ - The wedding skills will now depend on percentage of MaxHP/MaxSP. \ No newline at end of file
diff --git a/Dev/TODO_MOB_AI.txt b/Dev/TODO_MOB_AI.txt
new file mode 100644
index 000000000..3ea2bc0e2
--- /dev/null
+++ b/Dev/TODO_MOB_AI.txt
@@ -0,0 +1,134 @@
+// eAthena TODO for Monster AI
+// -----------------------------------------
+// The idea of this file is to write a system to use for mob AI because
+// to put it bluntly, our mobs are stupid. If we can pull off some sweet
+// AI, we will own the other emulators.
+//
+// What we have here are 2 columns. I describe them below...
+// - 'mode' : Mode is when the monster can attack, like, can it move? can it
+// attack first? can it assist other monsters?
+//
+// - 'AI' : AI is the smart part of the monster. This is how the monster
+// will actully go about attacking something. For example we
+// could make archer skeletons fire an arrow or 2, then flee
+// and fire a few more arrows. Or we could have them avoid other
+// classes with range (archers, mages). We could also have mobs
+// run when being sniped off cliffs by archers/mages (wont they
+// hate that, but in reality, thats what they would do).
+//
+// The mode flags will be given an ID to the power of 2, (binary style, like
+// job id's in the item_db) and added together to make the mode. But before
+// the system can be written we need a nice file to explain it. That would be
+// this file. So add away, when it looks done, begin the implementation.
+//
+// Also, if possible, new config file in /conf/. 'mob_ai_athena.conf'. This is
+// where mob AI is enabled/disable. And options can be set to allow and dis-
+// allow certin modes. Ex: People like the AI, but dont like one options, can
+// simply disable THAT AI feature rather then rewriting mob_db to remove it.
+//
+// I wrote the first modes, C devs, move them around as you see fit for programming.
+//
+// -Ancyker
+//
+// (check bottom for more AI ideas)
+//
+
+
+'mode'
+Immobile - Monster can not move, can not be moved (like by archers knockback skills)
+Agressive - Monster can attack first (doesn't mean it will, decided in 'AI')
+Detect cast - Monster will detect if someone is casting on it, and attack back
+Assist - Monster will help other monsters (what monsters it will assist is decided in 'AI')
+Looter - Monster will loot items (if 'Agressive' flag is set, it will attack before looting)
+No Target Change - Monster will not start attacking another target until the first target is dead or out of range
+Passive - Monster will not attack back (ever, unless 'Agressive' flag is also set?)
+Detects Hidden - Monster can see hidden players
+
+'ai'
+NoAI - Doesn't do anything (plants)
+NoSnipe - Monster will run away if being 'sniped' from a clif by archer, mage, etc.
+AttackFlee - Monster will attack, then flee, attack, then flee, etc (Archer Skels, run away, shoot arrow, etc)
+AttackRange1 - Will only attack if player is in a set range [0-3] (It's like the player is close, its a threat now)
+AttackRange2 - Will only attack if player is in a set range [4-6]
+ClassFlee1 - Will run from any player with range (archers, mages, thiefs with bows)
+NoviceNoFlee - Will not run if a player is a novice
+LevelFlee - Wlll run if player is of a higher level (porings would run from level 99s, AHH DONT KILL ME!)
+AvoidPlayer - Will run if it sees any player (So it cancels 'Agressive' flag)
+AttackMostDamage - Will attack the player doing the overall most damage
+AttackLessDamage - Will attack the player doing the overall least damage
+AttackLowestLevel - Will attack the lowest level first
+AttackHighestLevel - Will attack the highest level first
+WarpLowHP - Will warp if HP is low (how low is low?)
+NeverStop - Monster will always be on the move, never stop walking. (Is over-ridden by 'Immobile' flag)
+
+
+//
+// Again, more stuff...
+//
+// The monster spawns sripts need some more params. some examples...
+//
+// We have: map,x,y,offsetx,offsety, ...
+// What if we added more? To only let the monster move so far off from
+// where it was spawned. It could 'guard' an arena, an exit/enterance
+// an npc, whatever =).
+//
+// .... ID,time,time,blah...,mode,WAP
+// Have monsters walk a certin path. Waypoint files are your friend.
+// If a monster has a WAP (optional) it will walk this path.
+// Guardians on patrol? Could be interesting.
+//
+// Add more if you think of any =)
+//
+// If you don't like an idea, comment why, dont remove it.
+// example: (using this one cuz not sure about it)
+//
+// // NeverStop - Will/Could cause lag, don't think its a good idea -name
+// NeverStop - ...
+//
+
+Lupus: (guys, rearrange my ideas or move them as u want)
+Some memory - speed optimizations:
+
+There'a big "for cycle" when u look up for a place to mob spawn.
+It could be made quite fast:
+On server .GAT loading you should make an array with OFFSETS (not even X,Y) of right
+places for future mob spawns.
+If the waypoints aren't found for the loadied map then you should make at least 1-2 waypoints automatically.
+
+About AI:
+EACH map has defined mobs. Your mob should have a flag "healer", "supporter" etc. "weak", "ranged attacker"
+and each map should contain an attached list of mobs with their types
+when one MVP is hurt it'd look for "helpers", "healers".
+And if a mob is almost 0 HP it should look for helpers or look for other mobs ranged attackers
+defence. Etc.
+
+Mobs AI should be WRITTEN IN SPECIAL SCRIPTS.
+Some default mobs will use the same script.
+And some advanced ones will use their own.
+
+MOB-scripts are quite interesting. (remember Robot-Wars game?)
+
+Gulid Wars:
+I think guardians should be able to warp from room to room using WARPS like common Players.
+
+
+Aria's Ideas: (do whatever u want)
+
+We can make aggressive monsters make ambushes, where one attacks and runs away to a huge group of the same monster
+
+instead of dropping 2 x1 items, just drop 1 x2 item
+
+make AI vary inside of a group of monsters (IE 1/2 porings do 1 thing, and the other half do another)
+
+aggressive monsters sould surround enemies, not just blindly attack them
+
+we should also make monsters look as player-like as possible. There should be groups traveling together, or 2 monsters
+next to eachother, chatting.
+
+we shouldn't let mobs spawn right infront of people, like in anime or manga. they always walk towards you, or you walk
+towards them.
+
+let mob stats vary a little bit - every mob shouldn't be the exact same. if it's stronger it gives more exp, and vice
+versa.
+
+have a monster be able to use its drops, and not drop it. like a poring using an apple. \ No newline at end of file
diff --git a/Dev/bugs.txt b/Dev/bugs.txt
new file mode 100644
index 000000000..d18dce310
--- /dev/null
+++ b/Dev/bugs.txt
@@ -0,0 +1,51 @@
+Problem: Adding the new guild skills causes it to crash?
+Assigned: N/A
+Progess: 0%
+
+Problem: 2-2-1 classes are regarded as Novicies by the game server. NPCs aren't taking them as thier jobs but if you the the NPC to do something for a novice class it works with the 2-2-1 like renters. Also if some one becomes high novice, if they use jobra they can become first jobs like a swordsman.
+Assigned: N/A
+Progess: 0%
+
+Problem: Stats nor skills don't downgrade when your level gets reverted due to exp loss.
+Assigned: N/A
+Progess: 0%
+
+Problem: You can hit yourself with your own spider web.
+Assigned: N/A
+Progess: 0%
+
+Problem: Pre skill requirements for new skills are wrong it makes you use 49 skills points before you can get the newer skills.
+Assigned: N/A
+Progess: 0%
+
+Problem: Monster hp view only shows but does not go down with a hit.
+Assigned: N/A
+Progess: 0%
+
+Problem: Monsters always freeze, when hit they don't move but 2 mins later they move.
+Assigned: N/A
+Progess: 0%
+
+Problem: Mobs don't attack
+Assigned: N/A
+Progess: 0%
+
+Problem: When u spawn ~300 mobs (and more or less) then do @killmonster then some mobs freeze on the screen (have no names, don't move, etc)
+Assigned: N/A
+Progess: 0%
+
+Problem: With 1025 client, some NPC sprites look different (i.e. Black Jack's NPC sprite)
+Assigned: N/A
+Progess: 0%
+
+Problem: On any crash - servers don't free their ports. It doesn't let reload the same servers faster.
+Assigned: N/A
+Progess: 0%
+
+Problem: Thiefs can steal ZENY / items from TREASURE chests!!baaaah!! and Guardians!
+Assigned: N/A
+Progess: 0%
+
+Problem: Joker card 4139 lets anyone to steal money / zeny. Just like he's a thief. It shoul;d be revised - success rates lowered and "steal item" disabled
+Assigned: N/A
+Progess: 0%
diff --git a/Dev/forSQLdev.txt b/Dev/forSQLdev.txt
new file mode 100644
index 000000000..c54c531a6
--- /dev/null
+++ b/Dev/forSQLdev.txt
@@ -0,0 +1,146 @@
+// $Id: forSQLdev.txt,v 1.1 2004/09/19 09:18:32 Akaru Exp $
+
+This file is to informe SQL dev about all modifications on TXT version.
+
+When a modification is done, TXT dev try to add it here with some explanations.
+When a modification is added in SQL version, SQL dev remove it from this file.
+
+
+********* 9th september
+------------------------------------
+changed:
+ sd->newauth (map.h/clif.c) by sd->packet_ver (look all function where was newauth)
+ value become // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 30aug04 (by [Yor])
+ instead of // 0: old 0x72 (19 b), 3: new 0x72 7july04 (22 b), 20: new 0x72 13july04 (39 b), 0: old 0x7E (6 b - not for auth), 27: new 0x7E 26july04 (33 b), 31: new 0x7E 30aug04 (37 b) (by [Yor])
+ note: local variable 'newauth' not changed in clif_parse_WantToConnection
+
+------------------------------------
+Added
+ if (sd->packet_ver == 8) { // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 30aug04 (by [Yor])
+ clif_displaymessage(sd->fd, "This client version (of 26 jul 2004) is not actually supported by this server.");
+ } else if (sd->packet_ver == 9) { // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 30aug04 (by [Yor])
+ clif_displaymessage(sd->fd, "This client version (of 30 august 2004) is not actually supported by this server.");
+ }
+at end of 'pc_authok' function (pc.c)
+
+------------------------------------
+Changed
+ in 'atcommand_effect' function, set the correct message in back of:
+ clif_displaymessage(fd, msg_table[229]); // Your effect has changed.
+
+------------------------------------
+Changed
+ in 'atcommand_servertime' function, replace permanent message by msg_table and put them in msg_athena.conf
+
+------------------------------------
+Changed to reduce (a little) lag
+ in char.c, commented printf about auth:
+ case 0x2afc:
+ if (RFIFOREST(fd) < 22)
+ return 0;
+ //printf("auth_fifo search: account: %d, char: %d, secure: %08x-%08x\n", RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14));
+ for(i = 0; i < AUTH_FIFO_SIZE; i++) {
+ -
+ case 0x2b02:
+ if (RFIFOREST(fd) < 18)
+ return 0;
+ if (auth_fifo_pos >= AUTH_FIFO_SIZE)
+ auth_fifo_pos = 0;
+ //printf("auth_fifo set (auth #%d) - account: %d, secure: %08x-%08x\n", auth_fifo_pos, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10));
+ auth_fifo[auth_fifo_pos].account_id = RFIFOL(fd,2);
+ -
+ case 0x2b05:
+ if (RFIFOREST(fd) < 49)
+ return 0;
+ if (auth_fifo_pos >= AUTH_FIFO_SIZE)
+ auth_fifo_pos = 0;
+ WFIFOW(fd,0) = 0x2b06;
+ memcpy(WFIFOP(fd,2), RFIFOP(fd,2), 42);
+ //printf("auth_fifo set (auth#%d) - account: %d, secure: 0x%08x-0x%08x\n", auth_fifo_pos, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10));
+ auth_fifo[auth_fifo_pos].account_id = RFIFOL(fd,2);
+ -
+ in case 0x66: // ƒLƒƒƒ‰‘I‘ð
+ if (auth_fifo_pos >= AUTH_FIFO_SIZE)
+ auth_fifo_pos = 0;
+ //printf("auth_fifo set #%d - account %d, char: %d, secure: %08x-%08x\n", auth_fifo_pos, sd->account_id, char_dat[sd->found_char[ch]].char_id, sd->login_id1, sd->login_id2);
+ auth_fifo[auth_fifo_pos].account_id = sd->account_id;
+ -
+ commented printf about searching map server (in 'search_mapserver' function)
+
+------------------------------------
+Improved At_command about monsters spawn (atcommand_spawn and atcommand_monster):
+ modified message 39:
+ //39: All monster summoned!
+ Added message 240:
+ //240: %d monster(s) summoned!
+ Added variables (output, j and k):
+ char output[200];
+ int i, j, k;
+ memset(output, '\0', sizeof(output));
+ Changed loop to check at least 8 times (to try to spawn in closed area):
+ count = 0;
+ for (i = 0; i < number; i++) {
+ j = 0;
+ k = 0;
+ while(j++ < 8 && k == 0) { // try 8 times to spawn the monster (needed for close area)
+ if (x <= 0)
+ mx = sd->bl.x + (rand() % 11 - 5);
+ else
+ mx = x;
+ if (y <= 0)
+ my = sd->bl.y + (rand() % 11 - 5);
+ else
+ my = y;
+ k = mob_once_spawn((struct map_session_data*)sd, "this", mx, my, name, mob_id, 1, "");
+ }
+ count += (k != 0) ? 1 : 0;
+ }
+ Changed last message display (to add number != count):
+ if (count != 0)
+ if (number == count)
+ clif_displaymessage(fd, msg_table[39]); // All monster summoned!
+ else {
+ sprintf(output, msg_table[240], count); // %d monster(s) summoned!
+ clif_displaymessage(fd, output);
+ }
+ else {
+
+********* 10th september
+------------------------------------
+Correction of an error in char.c in 'char_config_read' function:
+ replace 'wisp_server_name' by 'w2' in the test of the lenght:
+ } else if (strcmpi(w1, "wisp_server_name") == 0) {
+ if (strlen(w2) >= 4) {
+ memcpy(wisp_server_name, w2, sizeof(wisp_server_name));
+ wisp_server_name[sizeof(wisp_server_name) - 1] = '\0';
+ }
+
+------------------------------------
+Added a better id control of monster id in @spawn/@monster... GM commands:
+ added in mob.h:
+ int mobdb_checkid(const int id);
+ Added in mob.c:
+ /*==========================================
+ * Id Mob is checked.
+ *------------------------------------------
+ */
+ int mobdb_checkid(const int id) {
+ if (id <= 0 || id >= (sizeof(mob_db) / sizeof(mob_db[0])) || mob_db[id].name[0] == '\0')
+ return 0;
+
+ return id;
+ }
+ Changed in at_command.c ('atcommand_monster' and 'atcommand_spawn' functions) (only second line is modified):
+ if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number)
+ mob_id = atoi(monster);
+ by:
+ if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number)
+ mob_id = mobdb_checkid(atoi(monster));
+
+********* 11th september
+------------------------------------
+Changed @effect from level 60 to level 40.
+
+------------------------------------
+Added 3 new commands: @charitemlist, @charstoragelist, @charcarlist
+ modified file: atcommand.c/h, atcommand_athena.conf, all help.txt, and gmcommands.html
diff --git a/Dev/quotes.txt b/Dev/quotes.txt
new file mode 100644
index 000000000..463e7df9c
--- /dev/null
+++ b/Dev/quotes.txt
@@ -0,0 +1,148 @@
+ADD UR QUOTES HERE FOR DEV EDITION NPCS!
+Remember to add map, coords, and sprite number!
+
+NEW 10-21-04!
+Add Biography areas
+-Real name
+-Age
+-Where u live
+-What u do here
+-Why ur here
+-and ur own small self intro.
+
+Completed people: MC Cameri, Aria, david, mouse
+
+
+Also put some coords so that u walk around
+//************************************\\
+
+davidsiaw
+- put me in payon next to kawaii no kafra with npc sprite no. 1002
+- [davidsiaw]
+- Wud are you looking at?
+- baka...
+- next;
+- [davidsiaw]
+- *drops 100 Mjolnirs on the floor
+- There ya go ;)
+
+Aria
+prontera.gat,156,179,4 script Aria 805,{
+151,175-OMGWTFBBQ
+152,182-So its u -> 0
+... That did not look right
+158,177-OMGITSJEEBUS!#!@%!
+164,176-Evera died. I guess.
+147,176-I CLICK THE BUTTON AND THEY DON'T DIE!
+155,172-RO? wtf?
+Oh yeah.
+165,171-omgnoob. DIE!
+157,176-WooT!
+[@Aria] is that why u bought windows
+[@Aria] cuz bill has red hair
+bio
+Okay, I'm Evera's brother, Aria <- small sentence self-intro
+^FF00FFAge^000000: 13 years <-age
+^FF00FFWhat I do^000000: Graphics and NPCs <-wtf u do
+^FF00FFWhy I'm here^000000: Cuz eAthena ROX <-y
+
+Anyway, here. I get to talk about myself now <-ur own bio
+I'm from California, and I wub MMORPGS
+So yeah that's it. GO EA!
+
+Shinigami
+-imma n00b
+-lol
+-:P
+-Shinigami stabs Azndragon
+-there you go bitches
+-watashi wa Shinigami desu
+-huh?, wtf?
+
+Lord
+-Me + ebil = bad me + ebil + power = omg ....
+<@Wishy> me + you = you get owns
+<@Lord> Me + Revenge = You Got owned
+<@Wishy> Me > You
+<@Lord> No i own you in bed :3
+<@Wishy> ...
+
+Codemaster
+"Everything begins with Nu and everything ends with Nu.
+This is the truth! This is my belief... at least for now."
+ - Mysteries of Life Volume 184. Chapter 26.
+
+MouseJstr
+
+"The only difference between a hurricane and skydiving is
+which direction the tree's come at you from.."
+
+"Wanna be a GM? Write me a C routine that reverses a string
+ in place.."
+
+"Wanna be a GM? Write me a C routine that finds me the highest
+ bit set in a network order 32 bit integer..."
+
+"I am the dark angel of eAthena.. withen weeks of my arrival,
+ almost everybody was gone or dead.. fear me..."
+
+Lupus, I demand you rewrite yours..
+
+MC Cameri
+morroc.gat,160,97,4 script MC Cameri 706,{
+-I'm the @command guy from oa...
+-Can't tell you my name.
+-16 years
+-Dominican Republic, in the caribbean.
+-Mostly work on @commands for GMs...
+-Because I like programming...
+-I'm a senior student, programmer, body builder(yes, I lift weights), etc.
+160,95-I owns you all, under my commands. *lol*
+162,95-I forgot what my script, what do I have to say again? *_*U
+164,95-¿Donde estoy? *wonders* (<-- Means, where am I?)
+164,97-Are you guys my friends?
+164,99-My mom told me not to talk to strangers. *stares*
+162,99-How can you be SO ugly!?
+160,99-I need a friend to play with =(. *sobs*
+160,97-I've been kicking this rock for as long as I can remember.
+160,95-My computer just broke, and I don't know how to format. *sobs*
+
+Darkchild
+
+// Place me Next to Valaris (ELSE I DO IT MYSELF :P)
+- I think Aria Has A Lot To Do
+- The Darkness Within
+- Watch Out For Trucks, They Tend To Drive You Down
+- Who Am I? Really? Shure!
+- GAH!
+- Everyone Lubs Me! (I Hope!)
+- I Lub Everyone!
+ As Long As They Are Female
+ Hot....
+ Goodlooking
+ Big Boobs
+ Nice Ass
+ And Workship Me!
+- Wannabe GM? Host Your Own Server
+- kRO is €20 A Month! Sick Bastards!
+
+Biography:
+ mes "Okay, So I'm Darkchild.......";
+ mes "^FF00FFAge^000000: 17 years";
+ mes "^FF00FFWhat I do^000000: Writing Biography";
+ mes "^FF00FFWhy I'm here^000000: I Have NO Idea";
+ next;
+ mes "Ehm Well..... Whats There To Say About Me.......?";
+ mes "I Dunno.... As Long As You Love Me.........";
+ mes "Well Okay, A Lil Bit Then:";
+ mes "I'm From The Netherlands And Doing Some Wacko Collega Atm";
+ mes "More? WTF? YOU WANT MORE? GO BLOW URSELF!";
+ next;
+// let it do an npc event on Valaris
+
+// His Npc Event:
+ npctalk "DARKCHILD, DON'T YOU SHOUT AT POOR LIL N00BIEZ!!!";
+
+// Back 2 Me :P
+ npctalk "Sorry Valaris";
+ npctalk "(He Is Da Man!)";
diff --git a/Dev/resnametable.TXT b/Dev/resnametable.TXT
new file mode 100644
index 000000000..411bf6cd0
--- /dev/null
+++ b/Dev/resnametable.TXT
@@ -0,0 +1,64 @@
+Resnametable reading problem, testcases and description
+by Akaru
+------------------------------------------------------------------
+EDITED Resnametable, add at the end:
+aaa.gnd#valkyrie.gnd#
+aaa.gat#valkyrie.gat#
+aaa.rsw#valkyrie.rsw#
+À¯ÀúÀÎÅÍÆäÀ̽º\map\aaa.bmp#À¯ÀúÀÎÅÍÆäÀ̽º\map\valkyrie.bmp#
+
+At map_athena.conf, add:
+map: aaa.gat
+
+Case 1:
+In data.grf there's the base resnametable without reference of aaa.gat
+In sdata.grf there's no resnametable
+In data folder there's an edited resnametable with aaa.gat reference
+Results: Athena gives aaa.gat not found error
+What this proves: Athena doesn't even use the values in the datafolder resnametable
+
+Case 2:
+In data.grf there's the base resnametable without reference of aaa.gat
+In sdata.grf there's the edited resnametable aaa.gat reference
+In data folder there's an edited resnametable with aaa.gat reference
+Results: Athena loads aaa.gat
+What this proves: Athena only checks for the existance of the datafolder resnametable, but uses value from sdata.grf resnametable
+
+Case 3:
+In data.grf there's the base resnametable without reference of aaa.gat
+In sdata.grf there's the edited resnametable aaa.gat reference
+In data folder there's no resnametable
+BEFORE MY CHANGE: Athena exits, "data/resnametable.txt not found"
+AFTER MY CHANGE: Athena loads aaa.gat
+What this proves: Athena do not need the datafolder resnametable at all and it still runs from the resnametable in the GRFs
+
+Case 4:
+In data.grf there's no resnametable
+In sdata.grf there's no resnametable
+In data folder there's no resnametable
+BEFORE MY CHANGE: Athena exits, "data/resnametable.txt not found"
+AFTER MY CHANGE: Athena exits, "data/resnametable.txt not found"
+
+How it is now:
+- It searches for the datafolder resnametable:
+ - If it exist, it continues but only use the resnametable from the GRF
+ - If it does not exist,
+ - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits
+ - If resnametable is found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits
+
+What is should do:
+- Check if data_folder in grf-files is enabled:
+ - If it is, search for the datafolder resnametable:
+ - If it exist:
+ - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it continues and uses this resnametable
+ - If resnametable is found in data.grf/sdata.grf/adata.grf, it continues and overwrites the GRF resnametable with this one from the datafolder
+ - If it does not exist:
+ - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits
+ - If resnametable is found in data.grf/sdata.grf/adata.grf, it continues and use the GRF resnametable
+ - If it isn't, then:
+ - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits
+ - If resnametable is found in data.grf/sdata.grf/adata.grf, it continues and use the GRF resnametable
+
+------------------------------------------------------------------
+Fixes, comments, discussions, etc goes below here:
+------------------------------------------------------------------ \ No newline at end of file